Módulo de Display LCD

Módulo de Display LCD

Introdução

 

Módulos de display LCD de caracteres alfanuméricos são interfaces de comunicação visual muito úteis e atraentes. Eles se encontram em quase todos os aparelhos domésticos, eletroeletrônicos, automóveis, instrumentos de medição etc. São dispositivos que possuem interfaces elétricas padronizadas e recursos internos gráficos e de software que permitem facilmente a permuta por outros de outros fabricantes, sem que seja necessário alterar o programa de aplicação. Por ser altamente padronizado seu custo é baixo. É um recurso antigo, deve ter uns vinte anos de idade ou mais, mas continua atual, com suas inúmeras formas, cores, tamanhos e preços. A tecnologia predominante continua sendo o LCD (Liquid Crystal Display), porém já se pode encontrar alguns baseados em LEDs orgânicos (OLED).

 

O módulo de display LCD representa um avanço tecnológico enorme se comparado com os primeiros displays a LED de 7, 14 ou 16 segmentos. Leia mais sobre os displays a LED no artigo técnico Displays de LED de 7 segmentos [1].

 

 

Especificações

 

Os módulos LCD são especificados principalmente por sua capacidade gráfica de comunicação, ou seja, o número de caracteres por linha e o número de linhas. Alguns valores típicos para essas especificações são:

 

Número de caracteres: 8, 12, 16, 20, 24 e 40

Número de linhas: 1, 2 e 4

 

 

Algumas configurações típicas de um módulo de display LCD

Módulo LCD 20 x 1
Figura 1: Módulo LCD 20 x 1

 

 

Módulo LCD 40 x 4
Figura 2: Módulo LCD 40 x 4

 

 

Outras especificações importantes que devemos considerar são as dimensões físicas do módulo, a tensão de alimentação, a disposição física dos pontos de conexão externa, a posição desses pontos de conexão com relação ao display, dos lados esquerdo ou direito, em cima ou embaixo, o tipo de interface eletrônica, paralela (predominante) ou serial, backlight (luz de fundo)  e finalmente o controlador do display.

 

Quando se consulta o manual de um módulo de display LCD, em geral se obtém apenas uma página contendo as dimensões e especificações elétricas. Isso pode parecer pouco mas é mais do que o suficiente. Observe na Figura 3 as especificações  do módulo retratado na Figura 1.

 

Especificações do módulo Winstar modelo WH2001B [6]
Figura 3: Especificações do módulo Winstar modelo WH2001B [6]

 

 

Interface de conexão externa

 

A interface de conexão com um microcontrolador também é padronizada. Ela tem de 14 a 16 pinos, dependendo se o módulo tem ou não backlight para permitir a leitura do display em ambientes escuros. Na Tabela 1 se pode observar a descrição dos pinos.

 

Tabela 1: Descrição dos pinos da interface de conexão

Pinos_b

 

Repare que o pino 3 foi reservado para ajustar o contraste do display. Isso permite que você ajuste esse contraste para a melhor visibilidade do texto. Na Figura 4 se pode observar um circuito simples para essa função.

  

Circuito simples para o ajuste de contraste
Figura 4: Circuito simples para o ajuste de contraste

 

 

O contraste muitas vezes varia em função da temperatura ambiente. Para isso pode-se utilizar o circuito ilustrado na Figura 5, por exemplo, que compensa essa variação.

 

Ajuste de contraste com compensação de temperatura
Figura 5: Ajuste de contraste com compensação de temperatura

 

 

Se for utilizado o backlight é necessário providenciar as conexões e dimensionar corretamente o resistor para limitar a corrente nos LEDs. Nas especificações do módulo WH2001B (Figura 6), se pode observar que a corrente típica dos LEDs de backlight (IF) é de 60 mA e a máxima de 75 mA com tensões diretas (VF) correspondentes respectivamente a 3,5 e 3,6V.

 

ATENÇÃO: Nunca ligue a fonte de alimentação diretamente nos terminais de backlight. Isto provocará o aquecimento excessivo do display e a queima prematura do módulo.

Características elétricas do módulo WH2001B
Figura 6: Características elétricas do módulo WH2001B

  

A Figura 7 ilustra um circuito típico para ativar o backlight. Utilizando os dados da Figura 6, podemos calcular o resistor de limitação de corrente.

Conexões típicas do backlight
Figura 7: Conexões típicas do backlight

 

Rlimit = (5 - 3,5)V / 60mA = 25 Ohms      (Pode-se utilizar os valores comerciais de 22 ou 27 Ohms 5%)

 

Quando for projetada a conexão do módulo com um microprocessador, é sempre bom lembrar que o operação do módulo LCD é relativamente lenta, se comparada com a de um microcontrolador. Na Figura 8 se pode observar os diagramas de tempos de leitura e escrita da interface com o microcontrolador. É muito importante que se estude esses diagramas e que sejam respeitados os tempos especificados nesses diagramas.

 

LCD_Write

 

LCD_ReadFigura 8: Diagramas de tempo típicos para a leitura e a escrita dos módulos LCD

 

Uma boa maneira de se verificar se o módulo está pronto para um novo acesso é testar o busy-flag (bit de sinalização de ocupado). Para acessar esse flag, deve-se acionar os bits de controle RS = 0 e R/W = 1 (Read) e o flag poderá ser lido em DB7. Deve-se esperar o término das operações internas enquanto DB7 estiver em 1. Os detalhes você pode ler no manual do controlador.

 

 

Controladores de display  LCD

 

No intuito de manter a padronização e compatibilidade entre os módulos de display de diversos fabricantes, adotou-se no início que o componente da Samsung -  KS0066 [2] seria o padrão para esse tipo de módulo. É muito comum encontrarmos especificações de controladores como compatíveis com o KS0066. Outros controladores compatíveis: Samsung S6A0069 [3], Sitronix - ST 7066 [4] e Hitachi - HD44780 [5].  O HD44780 atualmente é o mais utilizado.

 

Quando se compra um módulo de display LCD é interessante se saber qual é o controlador que é utilizado nesse módulo. Os recursos oferecidos pelos controladores variam um pouco além dos recursos básicos comuns para todos. Alguns recursos comuns são a interface com um microcontrolador configurável para 4 ou 8 bits, memória ROM interna com os gráficos correspondentes a cada caractere disponível, opções de Fonts para os caracteres, entre outros. Na Figura 9 se pode observar como é formado graficamente o caractere "A", numa matriz de pontos (pixels), onde os 1s indicam pixels acesos e os 0s, os pixels apagados.

 

Caractere "A" numa matriz de pixels (8 x 5)
Figura 9: Caractere "A" numa matriz de pixels (8 x 5)

 

 

A seguir serão mostrados os comandos ou instruções que podem ser utilizados nos módulos. O código dessas instruções também é padronizado. Serve para a maioria dos módulos. Veja a Tabela 2.

 

 Tabela 2: Instruções de um módulo LCDTabela 2

 

Um outro aspecto importante na utilização do módulo é respeitar a sequência de inicialização, após a energização do módulo. As especificações do controlador fixam o seguinte fluxo (Figura 10).

 

Sequencia LigamentoFigura 10: Sequência de inicialização para operação em 8 bits

 

Observe que na inicialização existem situações em que não é possível testar o busy-flag, porém é necessário esperar no mínimo o tempo especificado para que o controlador esteja pronto para receber mais um comando.

 

Depois e inicializado, o módulo pode receber caracteres para serem apresentados no display. Para isso, basta transferi-los de forma adequada para o endereço interno ao controlador correspondente ao da DDRAM (Display Data RAM). O endereço inicial da primeira linha é 0x00, o da segunda é 0x40 etc. Os caracteres deverão estar codificados em ASCII. Simples, não?

 

 

Exemplo

 

A seguir serão apresentados alguns trechos de código desenvolvidos no MPLAB e o compilador C30 da Microchip, para um dsPIC32. Os dados de 8 bits para o display LCD foram conectados ao Port D e os demais sinais em outro Port. O módulo do display utilizado é um módulo no padrão 16 x 2. A seguir se pode observar a definição de diversas constantes e parâmetros para o módulo LCD.

 

Observação: Como o código está escrito em linguagem C, é muito fácil adaptá-lo para qualquer outro microcontrolador. 

 

 

A seguir, se pode observar as rotinas que acessam o módulo propriamente dito. Uma rotina que escreve um caractere e outra que escreve uma frase. Observe que na rotina que escreve um caractere é utilizado um temporizador (T4) para realizar as temporizações necessárias.

 

Rotina Escreve no Display LCD

 

 

Rotina Escreve uma frase

 

 

 O próximo trecho é inserido no programa principal na parte de inicializações.

 

 

Se você quiser se aprofundar um pouco mais nesse assunto, sugiro que você leia o artigo técnico Display LCD [7] de Ilton L. Barbacena e Claudio Afonso Fleury.

 

 

Referências

 

[1] https://www.embarcados.com.br/displays_led_7_segmentos/

[2] http://www.datasheetarchive.com/dlmain/Datasheets-29/DSA-570765.pdf

[3] http://pdf1.alldatasheet.com/datasheet-pdf/view/37838/SAMSUNG/S6A0069.html

[4] http://pdf1.alldatasheet.com/datasheet-pdf/view/325981/SITRONIX/ST7066U.html

[5] http://pdf1.alldatasheet.com/datasheet-pdf/view/63673/HITACHI/HD44780.html

[6] http://www.winstar.com.tw/download.php?ProID=134

[7] ftp://ftp.dca.fee.unicamp.br/pub/docs/ea079/complementos/Lcd.pdf

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

6
Deixe um comentário

avatar
 
3 Comment threads
3 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
5 Comment authors
RafaelMarcelo MorenoHenrique Frank Werner PuhlmannDiego SueiroBernardo Afonseca Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Rafael
Visitante
Rafael

Muito bom! Obrigado pela aula.

Marcelo Moreno
Visitante
Marcelo Moreno

Parabéns! Pela Materia o Sr poderia fazer uma matéria de tipos de comunicação para si temas embarcados.

Bernardo Afonseca
Visitante
Bernardo

Caro Henrique, boa noite ! Gostei muito do seu tutorial. Me remeteu aos tempos em que tínhamos que programar "na unha" a operação desses displays.
Uma dúvida: Qual editor de códigos é utilizado para colocar esses códigos na página do blog, de tal forma que fiquem com as linhas com contrastes diferentes e numeradas ?
Um abraço !

Diego Sueiro
Visitante
Diego Sueiro

Olá Bernardo,

Para postar código-fonte utilizamos esse plugin:
https://wordpress.org/plugins/crayon-syntax-highlighter/

Bernardo Afonseca
Visitante
Bernardo

Obrigado Diego !!!

Henrique Frank Werner Puhlmann
Visitante

Bons tempos, Bernardo.
Abraço