O documento descreve como funciona um display LCD conectado a um controlador HD44780, incluindo suas especificações técnicas, pinagem e como enviar dados e instruções. Explica que o display possui dois modos de operação controlados pelas linhas R/W, RS e E e como escrever e ler dados no display LCD.
1. Display LCD
O texto que se segue diz respeito à ligação de um display LCD que
se baseie em controlador HD44780 [Os displays desta categoria são
baratos, fáceis de usar e permitem utilizar os 8x80 pixels de
display]. Estes displays LCD contem um conjunto de caracteres
ASCII standard e ainda caracteres japoneses, gregos e símbolos
matemáticos.
[Duas linhas com 16 caracteres – colunas – por linha]
Cada um dos 640 pixels do display pode ser acessado
individualmente, esta tarefa é executada por chips de controle
montados em superfície, na parte traseira do display. Isto nos
permite poupar uma enorme quantidade de fios e linhas de controle,
de tal maneira que, através de poucas linhas é possível fazer a
ligação do display com o restante do circuito [exterior]. É possível
comunicar com o exterior através de um bus [barramento ] de 8 bits
[barramento¹]
ou mesmo através de um bus de dados de apenas 4 bits bits.
No caso de escolhermos um bus de dados de 8 bits, o display requer
uma alimentação de +5V mais 11 linhas de entrada e saída. Se
optarmos pelo bus de dados de 4 bits, apenas precisamos de 7
linhas mais a alimentação. Quando o display LCD não está
habilitado, as linhas de dados tristate² assumem o estado de alta
impedância [como se estivessem desligadas do circuito] o que
significa que não interferem com o funcionamento do
microcontrolador.
2. O LCD também requer do microcontrolador mais 3 linhas [vias] de
controle.
controle
A linha de controle Enable [E] permite a ativação do display e a
utilização das linhas R/W e RS. Quando a linha de habilitar
[Enable] está em nível baixo, o LCD fica inibido e ignora os sinais
R/W e RS. Quando [E] está em nível alto, o LCD verifica os estados
das duas linhas de controle e reage de acordo com estes.
A linha Read/Write [R/W] determina o sentido dos dados entre o
[R/W
/W]
microcontrolador e o LCD. Quando está em nível baixo, os dados
estão sendo escritos no LCD. Quando está em nível alto, os dados
estão sendo lidos do LCD.
Com a ajuda da linha de Seleção de registro [RS] o LCD interpreta
[RS],
o tipo de dados presentes nas linhas de dados. Quando está em nível
baixo, está sendo escrita uma instrução no LCD. Quando está em
nível alto é um caractere que está sendo escrito no LCD.
Estado lógico nas linhas de controle:
E 0 Acesso ao LCD inibido
1 Acesso ao LCD habilitado
R/W 0 Escrever dados no LCD
1 Ler dados do LCD
RS 0 Instrução
1 Caractere
A escrita dos dados no LCD é feita em várias etapas:
1. Por o bit R/W em nível baixo
2. Por o bit RS em nível lógico 0 [instrução] ou a nível lógico 1
[caractere]
3. Colocar o dado na linha de dados [se for uma operação de
escrita]
3. 4. Por a linha E em nível alto
5. Por a linha E em nível baixo
6. Ler o dado das linhas de dados [no caso de uma operação de
leitura]
A leitura de dados do LCD é feita da mesma maneira, mas a linha
de controle tem que estar em nível alto. Antes de enviarmos
comandos ou dados para o módulo LCD, este tem que ser iniciado.
Comandos típicos enviados depois de um reset podem ser: ativar um
display, visualizar um cursor e escrever os caracteres da esquerda
para a direita.
Não se preocupe muito com os próximos três parágrafos, pois, é um
conteúdo mais específico e dirigido para uns poucos loucos como eu
que se interessam por maiores detalhes [problema_01: é na busca
por maiores detalhes que muitos de meus projetos se emperram].
Em outras palavras: saber ou não os próximos três parágrafos não
fará muita diferença!
Depois de iniciado o LCD, ele fica pronto para continuar a receber
dados ou comandos. Se receber um caractere, ele o escreve no
display e move o cursor um espaço para a direita. O cursor marca o
local onde o próximo caractere vai ser escrito. Quando queremos
escrever uma sequência de caracteres, primeiro é necessário
estabelecer um endereço de início e depois enviar os caracteres, um
de cada vez. Os caracteres que podem ser mostrados no display
estão guardados na RAM de Display de Dados [DDRAM]. O
tamanho da DDRAM é de 80 bytes.
O display LCD também possui 64 bytes de RAM Geradora de
Caracteres [CGRAM]. Os dados na CGRAM representam caracteres
num mapa de 8 bits.
Cada caractere gasta até 8 bytes de RAM Geradora de Caracteres,
assim, o número total de caracteres que podem ser definidos pelo
utilizador pode ir até oito. De modo a ler o mapa de bits de
caracteres no display LCD, temos primeiro que estabelecer o
endereço de início na CGRAM [0 geralmente] e, a seguir, escrever
4. dados no display. A definição de caractere ‘especial’ mostra-se na
figura abaixo.
Diferentemente dos displays de LEDs, o display LCD não acende
quando excitado, o que existe mesmo são elementos transparentes
que ao serem excitados pelo sinal do circuito, fazem com que o
líquido com que ele está em contato se torne opaco, deixando de
refletir a luz, desta forma o fundo branco do display deixa de ser
visto aparecendo em seu lugar uma região preta.
O display do tipo LCD mais comum e utilizado é o de duas linhas
com dezesseis caracteres cada, conhecido como de 2 x 16 [dois por
dezesseis]. O 2 indica duas linhas e o 16 indica dezesseis caracteres
por linha, assim podemos mostrar em seu visor duas palavras de
até dezesseis letras ou números. É importante saber que na maioria
das vezes não é possível enviar uma mensagem acentuada para o
display como, por exemplo, [é], [não], [país], pois não há espaço para
mostrar os acentos, nesse caso somos obrigados a ignorar os acentos
e as palavras ficam: [e], [não], [pais] e etc.
Como saber se meu display LCD possui controlador HD44780?
Se ele possuir preferencialmente duas linhas com dezesseis
caracteres cada, possuir chips de controle montados em superfície
5. na parte traseira, alimentação +5V e seguir a pinagem abaixo
[preferencialmente possuindo 14 pinos], provavelmente ele possuirá
controlador HD44780 ou similar que funcione igualmente.
O pino 3 [VEE - por vezes nomeado como VO] é onde ligamos um
potenciômetro ou trimpot³ para ajuste de contraste. Veremos como
isto é feito quando formos implementar o display LCD em algum
circuito.
6. Os pinos 7 ao 14 são mostrados na tabela com o seguinte símbolo:
DBX [número em lugar de X]. Mas também encontramos
nomenclaturas para estes símbolos como: DX [número em lugar de
X]. Ambas são aceitas; estão corretas.
Os pinos 15 e 16 são encontrados em displays LCD que possuem
LED interno para visualização da informação exibida mesmo em
ambientes escuros. A foto abaixo demonstra um display LCD deste
tipo em funcionamento [geralmente um simples botão em série com
a alimentação +5V e conectado ao pino 15 – ligado ou não com um
microcontrolador – faz este LED interno acender ou apagar].
Os displays LCD possuem pinos [barras de pinos - barramento] em
sua superfície traseira dispostos das seguintes formas:
ou
7. Há uma numeração impressa na base destes pinos [na superfície da
placa] indicando a pinagem destes [qual é o pino 1 - VSS - e etc -
nem sempre estará impresso todos os números em todos os pinos,
por vezes somente os das extremidades].
Estes pinos podem ser soldados diretamente no circuito, encaixados
em placa de teste ou fazer a comunicação com o circuito principal
via cabo flat 14 vias [onde será conectado no circuito principal por
intermédio de barras de pinos semelhantes as do display LCD].
Cabo Flat 14 Vias [conector Header 14]:
Caso for utilizar cabo flat 14 vias, dê preferência por displays LCD
que possuem barras de pinos conforme indicado na antepenúltima
figura [7 colunas com 2 pinos cada]. Pois, cabos flat com esta
disposição [figura acima] são mais fáceis de serem adquiridos.
Note que o cabo flat possui uma de suas vias de cor diferenciada
das demais [geralmente rosa ou tracejada de rosa]. Se for ligar esta
via de cor diferente do lado do pino 1 [VSS] do display [na barra de
pinos deste], terá de ligar esta mesma via de cor diferente do lado
do pino 1 [VSS] do circuito principal [na barra de pinos do seu
circuito], para evitar inversão - ligação incorreta. Veja detalhe na
figura abaixo:
Dimensões para um display LCD 2 x 16 genérico e foto ilustrativa:
9. O display LCD pode deteriorar-se mais facilmente se exposto
diretamente ao tempo. Não molhe o display LCD. Evite tocar seus
terminais [o display LCD pode apresentar problemas se exposto a
eletricidade estática]. Sempre alimente o display LCD com a tensão
DC correta e fique atento para ligar todos os seus terminais
corretamente [nunca inverta principalmente a alimentação nos
pinos 1 GND e 2 +5V]. O visor do display LCD pode riscar-se
facilmente. Somente remova o filme que protege o visor quando for
utilizar o display LCD; remova o filme vagarosamente para evitar
estática e somente limpe o visor do display LCD com álcool.
Fixação do display LCD:
Para a fixação do display LCD, utilizar parafusos e porcas
compatíveis com os orifícios de fixação do mesmo [para auxiliar na
fixação e proporcionar correto assentamento do display LCD pode-se
10. utilizar fita dupla face entre este e o gabinete/carcaça do
equipamento].
¹Barramento:
Barramento é um conjunto de linhas de comunicação que permitem
a interligação entre circuitos eletrônicos.
Os barramentos são divididos geralmente em três conjuntos:
1. Via de dados: onde trafegam os dados;
2. Via de endereços: onde trafegam os endereços;
3. Via de controle: sinais de controle que sincronizam as duas
anteriores.
O desempenho do barramento é medido pela sua largura de banda
[quantidade de bits que podem ser transmitidos ao mesmo tempo],
geralmente potências de 2: 8 bits, 16 bits, 32 bits, 64 bits, etc.
Também pela velocidade da transmissão medida em bps [bits por
segundo], por exemplo: 10 bps, 160 Kbps, 100 Mbps, 1 Gbps etc.
Um bom exemplo de via de endereço [adress] e via de dados [data]
em nosso estudo é a formação do caractere especial no display LCD
conforme figura abaixo [note que por uma via trafega a informação
de endereço e por outra trafega o dado para este endereço - a via
inclusive pode ser a mesma para ambas as informações, só que hora
a via é de endereço e hora a via é de dados]:
11. As vias de controle para o display LCD já foram citadas
anteriormente neste texto [E, R/W e RS].
Um tipo de barramento muito comum em eletrônica e bastante
citado neste texto possui em sua extremidade [de interligação]
barras de pinos conforme figuras abaixo:
12. ² Tristate
Em eletrônica digital, portas lógicas com saídas tristate ou 3-state
permitem a geração de valores de 0, 1 ou Z. Uma saída Z pode ser
considerada como uma saída desconectada do resto do circuito, pois
se apresenta em um estado de alta impedância. A intenção deste
estado é permitir diversos circuitos a compartilharem da mesma
linha ou barramento de dados, sem afetar umas as outras. Tri-state
é uma marca registrada da National Semiconductors, mas é
freqüentemente usada para descrever dispositivos produzidos por
qualquer fabricante.
Entrada Saída
A B C
0 0 Z
Um buffer tristate pode ser entendido como uma 1 0 Z
chave. Se B está ligado, a chave é fechada. se B está 0 1 0
desligado, a chave é aberta.
1 1 1
Saídas tristate são implementadas em diversas famílias de circuitos
integrados digitais, tais como a série 7400 de portas TTL. Saídas
Tristate podem ser encontradas em portas lógicas individuais, ou
em circuitos integrando múltiplas saídas na forma de um buffer
para barramento.
13. Dispositivos de lógica tristate são geralmente usados para acomodar
múltiplas linhas em barramentos de dados ou endereços. Se
diversas saídas tristate são conectadas eletronicamente, somente a
saída ativa pode apresentar valores 1 ou 0, devendo o restante das
linhas permanecer em estado de alta impedância. Caso duas ou
mais linhas saiam de seu estado tristate simultaneamente, há um
conflito de saídas no barramento, podendo gerar desde um simples
erro no barramento até a danificação de uma das saídas. Para
evitar isto, deve-se aplicar um controle de acesso ao barramento.
Buffers tristate podem ser usados para implementar
multiplexadores eficientes especialmente naqueles com um grande
número de entradas.