terça-feira, 16 de abril de 2024

Acionando Um Display LCD 16 x 2 Com Um 4017 ( e sem microcontroladores !!!)

  O próximo circuito entra na categoria de curiosidade e  também de aprendizado, pois ninguém em sã consciência dispensará microcontroladores para esta função. Mas observe que a  lógica é a mesma, apenas em velocidade milhões de vezes menor.

  O função principal  de um display 16×2 é exibir caracteres, letras e números de maneira nítida e clara, fornecendo informações importantes para o programador.  É utilizado quando o  usuário precisa de uma resposta visual, que possa indicar o funcionamento da configuração realizada. 

 É um componente acionado , via de regra,  por microcontroladores . Mas aqui vamos pensar fora da caixa e dispensar programação.

  Para exemplo e maior simplicidade, escreveremos somente a palavra " OLA!!!" 

  Pode ser ampliado para mais palavras e mais linhas, mas aí certamente tornaria inviável em relação aos circuitos convencionais ( com microcontrolador). 

  Primeiro vamos dar uma olhada em um display lcd 16 x 2 comum (16 colunas por 2 linhas) e ver mais de perto suas conexões:


      Veja a numeração, começando pelo pino 1 (primeiro à esquerda ) e finalizando no 16 (K do led ). 



Pino 1 - VSS ( Gnd ): Conexão de terra (negativo).
Pino 2 - VDD ( Vcc ): Alimentação positiva (5V).
Pino 3 - Vee 0u VO (Contraste): Controle de contraste do display. Geralmente é usado um trimpot ,mas vamos usar um resistor de 3K3 que vai servir .
Pino 4 - RS (Register Select): Seleção de registro; controla se os dados enviados serão interpretados como instruções (como posicionamento do cursor) ou como dados a serem exibidos. Se estiver em nível 0 serão executadas as instruções . Se estiver em nível 1, serão exibidos os dados.
Pino 5 - RW (Read/Write): Leitura/Escrita; determina a direção da transferência de dados (leitura ou escrita). Vamos deixar conectado ao Gnd pois vamos só escrever.
Pino 6 - EN (Enable): Sinal de habilitação; usado para latching dos dados enviados.
Pinos 7 até 14.  D0-D7 (Data Pins): Linhas de dados bidirecionais, usadas para enviar comandos e dados ao display.
Os dois últimos pinos são para a iluminação de fundo (backlight):
Pino 15 -A (Anode): Anodo do led de backlight ( positivo ).
Pino 16 -K (Cathode): Cátodo do led do backlight (negativo).


Dito isso, passemos ao circuito  ( Clique em cima para ampliar):





 Para saber como os caracteres são mostrados precisamos conhecer a tabela ASCII.  A tabela ASCII (American Standard Code for Information Interchange) é um conjunto de códigos que representa caracteres alfanuméricos, sinais de pontuação, símbolos especiais e caracteres de controle. Cada caractere na tabela ASCII é atribuído a um número inteiro entre 0 e 127 (ou 0x00 a 0x7F em notação hexadecimal). 
  
  Como exemplo, veja abaixo a tabela ASCII para as letras do alfabeto maiúsculo:




  Ou seja, para escrever a letra L no display, precisamos inserir a seguinte numeração binária  nos Data Pins:

D0 = 0
D1 = 0
D2 = 1
D3 = 1
D4 = 0
D5 = 0
D6 = 1
D7 = 0

 E também que o pino RS esteja em 1.

    Agora podemos comentar o circuito. 
   Uma das 6 portas do cd40106 envia pulsos de clock ao pino 14 do cd4017. Este por sua vez vai  positivando as suas saídas  na seguinte ordem : pino 3 , pino 2, pino 4, pino7 e pino 10 . Quando o pino 10 vai ao nível 1 ele positiva o pino 13 congelando a contagem . 
    Veja que a contagem incrementa a cada subida do sinal de clock. Quando ocorre a descida do sinal de clock ela é usada para gerar o sinal de comando para o "Enable" do display, que desta forma libera os dados para serem apresentados no display.
   Assim que o circuito é alimentado, o pino 15 do 4017 é resetado( via rede RC) e o pino 3 vai a nível alto. Neste momento o transistor aciona e envia  5 V, via diodos, aos pinos D0 a D3. Como neste momento o pino RS está em zero ´, o comando é interpretado como uma  instrução. Neste caso a instrução é para que o cursor comece a piscar na primeira posição do display.  Ficaria assim:

D0 = 1
D1 = 1
D2 = 1
D3 = 1
D4 = 0
D5 = 0
D6 = 0
D7 = 0

RS = 0 (instrução de inicialização para o display)
 
Quando ocorrer a descida do sinal de clock  o " Enable" habilita o comando e o cursor começa a piscar.
No próximo sinal de clock, o 4017 incrementa uma posição e o pino 2 é que vai ao nível alto.
Neste ponto D0 a D3 continua em nível alto ( via diodo ligado ao pino 2 ) , mas  o nível alto do pino 2 aciona  um flip flop formado por duas portas do 40106 . Desta forma a saída do flip flop vai a nível alto, fazendo com que o pino RS também fique em nível alto. Agora temos a seguinte situação:

D0 = 1
D1 = 1
D2 = 1
D3 = 1
D4 = 0
D5 = 0
D6 = 1
D7 = 0

RS = 1 ( comando para exibição no display)

    Verifique na tabela que esta sequencia ( de D0 a D7 ) corresponde ao " O " . Na próxima descida do sinal de clock, o pino Enable habilita os dados, que neste caso é um comando porque  RS está em 1. 
    Neste momento aparece a Letra "O" no display.
   Tudo ocorre igual nas próximas sequencias, só vão mudando quais os dados que são habilitados e consequentemente as letras mostradas. Assim o pino 7 alto , injeta 1 em D0 indicando a letra  "L" .
    Quando a saída chega ao pino 10, as dados são congelados ( via pino 13) na posição binária de " ! " , assim a cada descida do clock , o ponto de exclamação vai sendo exibido até a última posição do display, já que não muda mais a combinação.

   Sei que as explicações foram rasas. Se não entendeu, procure fontes mais confiáveis que eu, estude bastante e verá  que parece complexo , mas não é . 

  Veja o vídeo funcionando:










Nenhum comentário:

Postar um comentário