O circuito integrado HT1632 da Holtek (www.holtek.com) consiste num driver para display de LEDs com uma ampla gama de aplicações, tais como, relógios, termômetros, medidores de umidade (higrômetros), etc, assim como em instrumentos industriais. Este componente pode fornecer 32 bits de saída com 8 linhas comuns ou ainda 24 bits com 16 linhas comuns, o que leva a uma possibilidade de geração de imagens muito grande. Neste artigo mostramos como utilizar este componente num display de matriz de pontos de LEDs. O artigo foi desenvolvido com base em documentação da própria Holtek.(2008)
No exemplo de aplicação do HT1632 também foi empregado um microcontrolador HT48F50E, mas também pode ser empregado o HT48F70E. Este dispositivo possui memória EEPROM de dados de 24 bits. As principais características do HT1632 são:
* Faixa de tensões de operação do HT1632: 2 V a 5,5 V
* Display multi-tipo 32 x 8 ou 24 x 16
* RAM interna de display. Para 32 bits de saída e 8 comuns a RAM será de 64 bits e se forem usados 24 bits de saída com 16 linhas comuns a RAM será de 96 bits.
* Controle com 16 níveis de intensidade
* Oscilador RC interno de 256 kHz
* Interface serial para comunicação com o MCU
* As linhas comuns podem ser selecionada entre transistores com dreno aberto NMOS e PMOS
Na figura 1 temos a estrutura da Matriz de LEDs utilizada, correspondendo ao menor painel possível.
![Figura 1 - Legenda: Menor painel de LEDs
Figura 1 - Legenda: Menor painel de LEDs](/images/stories/componentes/com0267a_01.gif)
O HT1632 é utilizado para excitar um display de LEDs de 18 seções deste tipo formando assim uma matriz de pontos de 144 x 8, com um efeito conforme mostrado na figura 2.
![Figura 2 -: Matrizes pequenas são ligadas de modo a formar uma grande matriz de 144 x 8, conforme mostrado na figura.
Figura 2 -: Matrizes pequenas são ligadas de modo a formar uma grande matriz de 144 x 8, conforme mostrado na figura.](/images/stories/componentes/com0267a_02.gif)
O circuito, entretanto, também pode ser utilizado para excitar os LEDs em outras organizações como 32 x 8 ou 24 x 16. Também existe a possibilidade de diversos HT1632 serem associados para excitar conjuntos maiores de LEDs. Deve-se considerar na sua utilização o consumo do circuito que dependerá do brilho e da quantidade de LEDs que serão excitados. A escolha da MCU utilizada depende dos dados gráficos apresentados e da quantidade de mudanças que vão ocorrer. Maior número de displays vai exigir maior capacidade de memória enquanto que maior número de mudanças vai exigir maior quantidade de memória de dados.
Método de Excitação do HT1632
No conceito de display gráfico, o HT1632 opera como um driver de LEDs com memória mapeada, o que permite que a programação do que vai ser apresentado seja muito mais simples. Na prática, usando o driver de LEDs de memória mapeada para mostrar uma imagem possibilita um melhor aproveitamento lógico da memória RAM. No display de LED chamaremos o objeto que vai ser mostrado de "gráfico". Por exemplo, o caractere simples "S" será visto como um objeto gráfico. Por exemplo, "NEWTON" também será vista como uma operação gráfica. Cada gráfico na memória da MCU vai ser formado por dados e um endereço correspondente. A finalidade do HT1632 é mostrar os dados na memória RAM do driver de LEDs.
Existe uma relação entre a Matriz de Pontos de LEDs e a RAM de LEDs. Na figura 3 mostramos como o HT1632 excita 6 displays de LEDs.
![Figura 3 - Matriz formada por 6 conjuntos de LEDs excitados por um HT1632.
Figura 3 - Matriz formada por 6 conjuntos de LEDs excitados por um HT1632.](/images/stories/componentes/com0267a_03.gif)
A relação entre os pixéis de LEDs e a RAM de LED nas condições normais de funcionamento é criar uma tabela na RAM de LEDs. Assim, de acordo com a posição do ponteiro, extrair da tabela de dados e colocá-los na RAM de LEDs de modo a permitir que a imagem seja apresentada. Um exemplo de código é dado a seguir, para a figura 3:
Se as linhas OUT e COM de uma determinada área dos LEDs passarem por uma mudança, como no diagrama da figura 4, é necessário apenas mudar a tabela de LED e a ordem da RAM de LED, não sendo necessário mudar o programa. Este modo de atualização da tabela é mais conveniente.
![Figura 4 -Legenda: Modo de atualização da tabela.
Figura 4 -Legenda: Modo de atualização da tabela.](/images/stories/componentes/com0267a_05.gif)
A tabela fica como se segue:
Cada imagem é armazenada na memória da MCU. Para estabelecer os dados desta imagem, normalmente a RAM de LEDs e os pixéis de LED são os mesmos. Por exemplo o cruzamento de COM7 com OUT0 corresponde ao endereço 01H bit 3; o ponto de cruzamento COM4, OUT0 corresponde a um endereço 01H bit0. O ponto de cruzamento COM0, OUT0 corresponde ao endereço 00H bit0. 01H e 00H são ambos endereços de 8 bits e o bit mais alta bit7, deve corresponder a 01H bit3. O dado mais baixo bit0, deve corresponder a 00H bit0. Desta forma, estabelecer os dados de imagem escrevendo dados a RAM de LEDs é conveniente.
Para gravar is dados para o HT1632 o procedimento é o seguinte. Os dados da imagem são armazenados na memória da MCU no formato de 8 bits. No entanto os endereços da RAM de LEDs são de 4 bits. Para colocar dados de 8 bits em duas RAM de 4 bits precisamos utilizar um método de gravação de bits de endereçamento contínuo. Assim, basta gravar dois endereços sucessivos de 4 bits para colocar dados de 8 bits na memória. A figura 5 mostra como isso pode ser feito. Note que ao gravar os bits de endereço, em primeiro lugar deve ser enviado o nibble mais alto e depois o mais baixo
![Figura 5 - Gravando dados de 8 bits na memória de 4 bits.
Figura 5 - Gravando dados de 8 bits na memória de 4 bits.](/images/stories/componentes/com0267a_07.gif)
Outra possibilidade consiste em se excitar um display de 144 x 8, conforme mostra a figura 6.
![Figura 6 : Excitando um display de 144 x 8.
Figura 6 : Excitando um display de 144 x 8.](/images/stories/componentes/com0267a_08.gif)
Para apresentar ma palavra inteira, "NEWTON", por exemplo, em primeiro lugar deve-se determinar a posição da figura. Para o caso, as coordenadas da figura serão numeradas de 0 a 143, com um total de 144 colunas. Fixamos a posição do ponteiro da memória nestas posições e em seguida o ponteiro de dados deve ser ajustado. De acordo com a posição do ponteiro pedimos o endereço correspondente da RAM de LEDs. Para mostrar a próxima linha, os ponteiros de dadas devem ser incrementados de uma unidade. Isso é repetido até que a figura seja apresentada. Desta forma, o display pode mostrar uma imagem em qualquer posição.
Circuito Prático
Para demonstrar toda esta funcionalidade do HT1632 a Holtek tem um circuito demo que é mostrado na figura 7.
![Figura 7 - Circuito completo de demonstração do HT1632 excitando Displays de LEDs.
Figura 7 - Circuito completo de demonstração do HT1632 excitando Displays de LEDs.](/images/stories/componentes/com0267a_09.gif)
Mais informações sobre esta aplicação podem ser obtidas no próprio datasheet do componente e do microcontrolador utilizado no site da Holtek.
??