display lcd
TRANSCRIPT
![Page 1: Display LCD](https://reader036.vdocuments.com.br/reader036/viewer/2022082323/5571f96949795991698f83a1/html5/thumbnails/1.jpg)
O display de LCD é largamente utilizado em diversos aparelhos eletro-eletrônico com a finalidade de mostrar resultados preliminares ou informações que auxiliem no manejo do aparelho.
Para colocá-lo em funcionamento, primeiro precisamos configurá-lo, ou seja, precisamos dizer ao display como vamos transferir os dados para ele (8 ou 4 bits), quantas linhas vamos utilizar, se a mensagem deve ficar fixa ou rolar, se a escrita será da esquerda para direita ou da direita para esquerda, ou seja, todas essas configurações são necessárias antes de escrever qualquer mensagem. O datasheet do display traz essas informações, a seguir serão apresentadas algumas delas e como podemos fazer.
Outro detalhe importante quando se trabalha com este tipo de display, é a temporização. Devemos ter um cuidado especial com este ponto, pois uma temporização equivocada inviabilizará o funcionamento do mesmo (não danificará, mas também não funcionará).
Está disponível um javascript que simula um display de LCD. Abra o arquivo LCD_APLICATIVO.htm.
Em primeiro lugar, vamos conhecer a pinagem do display LCD 16x2.
Pinos de dados: D7 - D6 - ...- D1 - D0 (8bits)- os pinos de dados são usados para enviar as palavras de configurações e os dados (caracteres).
Pinos de controle: EN (6), RS (4), R/W (5) - o pino EN informa ao display de LCD quando o dado está pronto para ser lido. O pino RS é usado para diferenciar se a palavra que foi enviada ao LCD é de configuração ou caractere.
Pinos de alimentação: Vcc (2) e GND (1). Pino de controle de contraste: VO (3) - este pino permite alterar o contraste do display.
Pinos de iluminação do fundo - backlight: A (16), K (15) - nem todos os displays possuem iluminação de fundo.
Circuito eletrônico do LCD
Configuração do display de LCD
![Page 2: Display LCD](https://reader036.vdocuments.com.br/reader036/viewer/2022082323/5571f96949795991698f83a1/html5/thumbnails/2.jpg)
Instrução RS R/W D7 D6 D5 D4 D3 D2 D1 D0 Descrição
Conf. Função 0 0 0 0 1 DL N F 0 0
Esta instrução é a mais importante, pois configura o display com relação ao número de bits, número de linhas e tamanho do caractere.
DL: 0 => 4 bits ou DL: 1 => 8 bits.
N: 0 => 1 linha ou N: 1 => 2 linhas, para display de 4 linhas, o N: 1.
F: 0 => 5x7 dots ou F: 1 => 5x10 dots.
Normalmente se usa: DL= 1, N=1 e F=0, ou seja, (00111000)b => 38h.
OBS.: em alguns displays é necessário enviar essa informação três vezes para o display.
Ctrl do display 0 0 0 0 0 0 1 D C B
controle do display - D: 0 => off ou D: 1 => on;
controle do cursor - C: 0 => cursor desligado ou C: 1 => cursor ligado;
cursor piscante, mesmo que o cursor esteja desligado, toda a matriz ficará piscando - B: 0 => não piscante ou B: 1 => piscante.
Normalmente se usa: D= 1, C=1 e B=0, ou seja, (00001110)b => 0Eh.
Deslocamento
cursor
0 0 0 0 0 0 0 1 I/D S este comando controla o deslocamento do cursor no display de LCD. O cursor pode deslocar da esquerda para direita - incremento(I/D:1) ou da direita para esquerda - decremento (I/D:0). Além disso, podemos configurar o display a função scroll, ou seja, a medida que se escreve a mensagem vai se deslocando, na realidade o cursor fica sempre parado, para isso, S:0 scroll desligado e S:1 scroll ligado.
![Page 3: Display LCD](https://reader036.vdocuments.com.br/reader036/viewer/2022082323/5571f96949795991698f83a1/html5/thumbnails/3.jpg)
Normalmente se usa: I/D= 1 e S=0 , ou seja, (00000110)b => 06h.
Retorno do cursor 0 0 0 0 0 0 0 0 1 0
este comando faz o cursor retornar para a primeira posição do display de LCD.
Limpar o display 0 0 0 0 0 0 0 0 0 1
este comando limpa tudo que foi escrito no display de LCD.
Código de configuração = 01h
Posição de escrita de um
caractere0 0 1 X X X X X X X
O display de LCD é uma memória SRAM, portanto antes de enviar um caractere devemos escolher a posição em queremos escrever, no display de LCD funciona da mesma forma. Além disso, quando chega no final do display, é necessário a troca de linha, isto também precisa ser feito. A figura a seguir mostra os valores dos XX..X’s para cada posição do display, lembre-se que o bit mais significativo (D7) sempre é igual a 1 (um). A seguir é mostrado um esxemplo.
escrita de um caractere no
LCD1 0 X X X X X X X X
Note que na configuração o pino RS ficava em nível lógico “0”, mas durante a escrita de um caractere o pino RS ficará em nível lógico “1”. Os X’s correspondem ao código ASCII do caractere - por exemplo, o número “0” é 30h, o caractere “A”é 41h, e assim por diante. Recomendo que olhe nos datasheets de displays que trazem a lista completa de caracteres válidos e o seu respectivo código ASC.
Esta figura mostra o endereço base de cada posição de um displays 16x2 ou 16x4. O endereço final é formado pelo bit mais significativo igual a “1”, seguido do endereço base.
![Page 4: Display LCD](https://reader036.vdocuments.com.br/reader036/viewer/2022082323/5571f96949795991698f83a1/html5/thumbnails/4.jpg)
Vamos supor que o display usado é o 16x2 e queremos escrever na quinta posição da esquerda para a direita da primeira linha, portanto o valor dessa posição é 04H, porém não é o endereço final, pois o bit mais significativo deve ser “1”, então vamos ver o que acontece:
D7 D6 D5 D4 D3 D2 D1 D0 endereço em hexa
1 0 0 0 0 1 0 0 84h
04h Endereço final
Por exemplo, se queremos trocar o display para a segunda linha, primeira posição, então a composição do endereço se dará com o valor 40h. O endereço que deve ser enviado para o display é o seguinte:
D7 D6 D5 D4 D3 D2 D1 D0 endereço em hexa
1 1 0 0 0 0 0 0 C0h
40h Endereço final
O diagrama de tempo para escrita de um comando deve seguir o esquema abaixo, note que os tempos indicados são os mínimos. A maioria dos comandos leva 40us para ser executado, mas por exemplo, limpar o display, leva em torno de 1,6ms. Portanto é aconselhado adotar um tempo maior entre o envio de instruções. Geralmente eu adoto nos meus projetos um intervalo de 5us para o pulso EN (diagrama está indicado 450ns) e de 5ms entre uma borda de subida do EN e a próxima borda de subida (no diagrama está indicado 1us - isto porque o comando limpa display leva 1,6ms)
Note que a inicialização consiste em enviar para o display os código já
![Page 5: Display LCD](https://reader036.vdocuments.com.br/reader036/viewer/2022082323/5571f96949795991698f83a1/html5/thumbnails/5.jpg)
mencionados anteriormente, como 38h, 06h, 0Eh e 01h. Cada pulso de EN deve ser da ordem de 5us e entre um comando e outro, um delay de 5ms.
O ciclo de escrita de um caractere é muito semelhante ao da escrita de um comando, com excessão do sinal RS que deverá ficar em nível lógico “1”, indicando que é a escrita de um caractere.
No código acima, será escrito o caractere A e depois o B. Existem outras formas de escrever uma mensagem, por exemplo, usando o DPTR.
Você poderá testar todas essas funções usando um aplicativo java que simula o funcionamento de um display de LCD 16x2, recomendo que baixe e execute o arquivo lcd_aplicativo.html.