Escolar Documentos
Profissional Documentos
Cultura Documentos
Display LCD PDF
Display LCD PDF
Ilton L. Barbacena
Claudio Afonso Fleury
Outubro - 1996
Display LCD
01. INTRODUO
Os mdulos LCD so interfaces de sada muito til em sistemas microprocessados. Estes mdulos podem ser grficos e a caracter.
Os mdulos LCD grficos so encontrados com resulues de 122x32, 128x64, 240x64 e 240x128 dots pixel, e geralmente esto
disponveis com 20 pinos para conexo. Os LCD comuns (tipo caracter) so especificados em nmero de linhas por colunas e so
encontrados nas configuraes previstas na Tabela 1.
Nmero de
Colunas
Nmero de
Linhas
Quantidade de
pinos
14
12
14/15
16
14/16
16
14/16
16
14/16
20
14/16
20
14/16
20
14/16
24
14/16
24
14/16
40
16
16
40
Os mdulos podem ser encontrados com LED backlight (com uma iluminao de fundo) para facilitar as leituras durante a noite.
Neste caso, a alimentao deste led faz-se normalmente pelos pinos 15 e 16 para os mdulos comuns e 19 e 20 para os mdulos
grficos, sendo os pinos 15 e 19 para ligao ao anodo e os pinos 16 e 20 para o catodo. A corrente de alimentao deste led varia
de 100 a 200mA, dependendo do modelo.
Estes mdulos utilizam um controlador prprio, permitindo sua interligao com com outras placas atravs de seus pinos, onde
deve ser alimentado o mdulo e interligado o barramento de dados e controle do mdulo com a placa do usurio. Naturalmente
que alm de alimentar e conectar os pinos do mdulo com a placa do usurio dever haver um protocolo de comunicao entre as
partes, que envolve o envio de bytes de instrues e bytes de dados pelo sistema do usurio.
Assim como em um rdio relgio todo mdulo LCD permite um ajuste na intensidade da luz emitida ou ajuste
de contraste, isto possvel variando-se a tenso no pino 3. A Figura 1 mostra um circuito tpico e
recomendado pela maioria dos fabricantes para efetuar este ajuste. Alguns fabricantes recomenda o uso de um
resistor de 4K7 em srie com o potencimetro de 10K.
A Tabela 2 descreve cada pino do mdulo ou do display para conexo deste a outras placas:
Display LCD
Pino
Funo
Descrio
Alimentao
Terra ou GND
Alimentao
VCC ou +5V
V0
RS
Seleo:
1 - Dado, 0 - Instruo
R/W
Seleo:
1 - Leitura, 0 - Escrita
Chip select
1 ou (1 0) - Habilita, 0 - Desabilitado
B0
LSB
B1
B2
Barramento
10
B3
de
11
B4
Dados
12
B5
13
B6
14
B7
15
A (qdo existir)
16
K (qdo existir)
MSB
Anodo p/ LED backlight
Catodo p/ LED backlight
Tabela 2 - Pinagem dos Mdulos LCD
Display LCD
A Tabela 3 a seguir mostra a relao entre a freqncia da CPU e a temporizao de leitura/escrita da maioria dos mdulos LCD.
Em geral, podemos conectar o barramento de dados da CPU ao barramento do mdulo, mapeando-o convenientemente na placa
de usurio, e efetuarmos uma operao normal de leitura/escrita sem mais problemas.
Clock da CPU
AS
(MHz)
PW
EH
(nS)
(nS )
08 MHz
325
650
75
10 MHz
250
500
50
12 MHz
200
400
33,3
16 MHz
138
275
12,5
A Figura 3 mostra um exemplo de conexo de uma placa baseada nos microcontroladores da linha Intel de 8 bits (8051), ao
mdulo LCD. Neste caso como os sinais A0 e A1 esto conectados aos pinos 4 e 5, teremos ento 04 (quatro) endereos distintos
para comunicao entre a CPU e o mdulo LCD. A Tabela 4 mostra estes endereos.
Display LCD
Display LCD
ENDEREO
R/W
RS
4000
4001
Dados
4002
Dados
4003
DESCRIO
- Escrita no modulo
- Leitura no modulo
O exemplo apresentado na Figura 3 refere-se a conexo do mdulo LCD com comunicao/transmisso de 8 bits, mas podemos
conectar o mdulo com transmisso a cada 4 bits, conforme mostrado na Figura 4. Neste caso no utilizamos os pinos 7, 8, 9 e
10. Isto muito til quando a CPU do usurio possui poucos pinos de I/O, caso tpico da linha de microprocessadores PIC, como
por exemplo o Basic Stamp. Agora surge a dvida, um mesmo mdulo pode conectar-se com 8 ou 4 bits? como isto possvel?
Ocorre que o mdulo LCD quando alimentado necessita de algumas instrues de inicializao que identificar qual a forma de
transmisso de dados que ser estabelecida entre a CPU e o mdulo.
Display LCD
DESCRIO
RS
R/W
Cdigo h
0C
Desliga
0A / 08
01
Liga
0E
Desliga
0C
10
14
Cursor Home
02
Cursor Piscante
0D
0F
Sentido de deslocamento do
Para a esquerda
04
Para a direita
06
Deslocamento da mensagem
Para a esquerda
07
Para a direita
05
Deslocamento da mensagem
Para a esquerda
18
Para a direita
1C
primeira linha
80
segunda linha
C0
Display
MODO
A Tabela 6 apresenta o conjunto de instrues, levando-se em considerao que a comunicao com o mdulo seja com
barramento de 8 bits (fixado durante a inicializao). Para o caso desta comunicao ocorrer com apenas 4 bits (nible), os dados
ou instrues sero enviados por nible. sendo enviado o nible mais significativo primeiro. Por exemplo para limpar o display,
escreve-se o nible 0000 e depois 0001.
Display LCD
INSTRUO
R
S
0
R/
W
0
B7
B6
B5
B4
B3
B2
B1
B0
1.6 mS
Home p/
Cursor
Fixa o modo de
funcionamento
Limpa Display
Controle do
Display
Desloca cursor
ou mensagem
Fixa o modo de
utilizao do
mdulo LCD
Posiciona no
endereo da
CGRAM
Posiciona no
endereo da
DDRAM
Leitura do
Flag Busy
Escreve dado
na CGRAM /
DDRAM
L Dado na
CGRAM /
DDRAM
1
Endereo da CGRAM
1
Endereo da DDRAM
B
F
AC
1
Dado a ser gravado no LCD
1
Dado lido do mdulo
1.6 mS
40 uS
40 uS
40 uS
40 uS
40 uS
40 uS
40 uS
40 uS
Display LCD
RS
0
R/W
0
B7
0
B6
0
B5
0
MSB
B4
0
B3
0
B2
0
B1
0
LSB
B0
1
Esta instruo escreve o caracter ASCII 32 que corresponde ao branco ou barra de espao em todos os endereos da DDRAM
apagando a mensagem que estiver escrita. O cursor retorna ao endereo zero, ou seja, posio mais a esquerda da primeira
linha.
3.1.2 - Cursor Home
CDIGO
RS
0
R/W
0
B7
0
B6
0
B5
0
MSB
B4
0
B3
0
B2
0
B1
1
LSB
B0
*
Faz retornar o cursor para a posio mais a esquerda da primeira linha e faz voltar posio original mensagens previamente
deslocadas. O contedo da DDRAM permanece inalterado.
CDIGO
RS
0
R/W
0
B7
0
B6
0
B5
0
MSB
B4
0
B3
0
B2
1
B1
X
LSB
B0
S
Esta instruo tem efeito somente durante a leitura ou escrita de dados, portanto, deve ser ativada na inicializao.
Estabelece o sentido de deslocamento do cursor (X=0 p/ esquerda, X=1 p/ direita)
Estabelece se a mensagem deve ou no ser deslocada com a entrada de um novo caracter
S=1 SIM, S=0 NO. Exemplo: X=1 e S=1 => mensagem desloca p/ direita.
3.1.4 - Controle do Display
CDIGO
RS
0
R/W
0
B7
0
B6
0
B5
0
MSB
B4
0
B3
0
B2
D
B1
C
LSB
B0
B
A mensagem fica aparente quando D=1 e desaparece quando D=0, porm o contedo da DDRAM fica inalterado. O cursor fica
aparente quando C=1 e desaparece quando C=0, porm as propriedades de escritas vigentes permanecem inalteradas. O
cursor quando aparente liga a ltima linha que compem o caracter, exceto quando B=1, que apresenta em alternncia com uma
matriz com todos os pontos negros em intervalos de 0,4 segundos. Quando B=1 e C=0, obteremos a ativao intermitente de uma
matriz completa (todos os pontos da matriz).
3.1.5 - Deslocamento do Cursor ou da Mensagem
CDIGO
RS
0
R/W
0
B7
0
B6
0
B5
0
MSB
B4
1
B3
C
B2
R
B1
*
LSB
B0
*
Display LCD
Desloca o cursor ou a mensagem sem que para isso tenha que escrever ou ler dados do display. Utilizado para posicionamento dos
dados no display.
C
0
0
1
1
R
0
1
0
1
FUNO
Desloca o cursor para a esquerda e decrementa o contador de endereo.
Desloca o cursor para a direita e incrementa o contador de endereo.
Desloca a mensagem e o cursor para a esquerda.
Desloca a mensagem e o cursor para a direita
CDIGO
RS
0
R/W
0
B7
0
B6
0
B5
1
MSB
B4
Y
B3
N
B2
F
B1
*
LSB
B0
*
Y estabelece o modo de comunicao. Se Y=1 estabelece 8 bits e quando Y=0 ser 4 bits, enviados em duas operaes, com os 4
bits (Nible) mais significativos sendo enviados primeiro. N fixa o nmero de linhas: N=0 para uma linha e N=1 para duas ou
mais linhas. F fixa o tipo da matriz: F=0 para matriz 7x5 ou 8x5 e F=1 para matriz 10x5 (somente possvel quando apresentando
em uma linha).
3.1.7 - Endereamento da CGRAM
CGRAM uma regio da memria RAM destinada para criao de caracteres especiais, como por exemplo: , , , etc.
CDIGO
RS
0
R/W
0
B7
0
B6
1
B5
A
MSB
B4
A
B3
A
B2
A
B1
A
LSB
B0
A
Estabelece o endereo da CGRAM no contador de endereos (AC) como um nmero binrio AAAAAA e aps isto os dados sero
escritos ou lidos pela CPU neste endereo. Cada caracter especial ocupa 8 endereos na CGRAM.
3.1.8 - Endereamento da DDRAM
CDIGO
RS
0
R/W
0
B7
1
B6
B5
A
A
MSB
B4
A
B3
A
B2
A
B1
A
LSB
B0
A
Estabelece o endereo da DDRAM no contador de endereos (AC) como um nmero binrio AAAAAAA e aps isto os dados
sero escritos ou lidos pela CPU neste endereo. Para os display de uma linha AAAAAAA varia de 80H a CFH. J para todos os
display de duas linhas varia de 80H a A7H para a primeira linha e de C0H a E7H para a segunda linha.
3.1.9 - Busy Flag (BF)
CDIGO
RS
0
R/W
1
B7
BF
B6
B5
A
A
MSB
B4
A
B3
A
B2
A
B1
A
LSB
B0
A
Busy Flag ou o bit 7 indica ao sistema onde est conectado o mdulo LCD, se o controlador do mdulo est ocupado com alguma
operao interna (BF=1), e neste caso, no aceita nenhuma instruo at que BF volte para 0.
Alm disso, permite a leitura do contedo do contador de endereos (AC) expressa por AAAAAAA. O contador de endereos
pode conter tanto endereo da CGRAM como da DDRAM, depende neste caso, da instruo anterior.
Display LCD
CDIGO
RS
1
R/W
0
B7
A
B6
B5
A
A
MSB
B4
A
B3
A
B2
A
B1
A
LSB
B0
A
Escreve o byte AAAAAAAA tanto na CGRAM como na DDRAM, dependendo da instruo anterior (que define o endereo).
Aps a escrita, o endereo automaticamente incrementado ou decrementado de uma unidade dependendo do modo escolhido
(ver item 3.1.3).
3.1.11 - Leitura de dados na DDRAM ou CGRAM
CDIGO
RS
1
R/W
1
B7
A
B6
B5
A
A
MSB
B4
A
B3
A
B2
A
B1
A
LSB
B0
A
Faz uma leitura na CGRAM ou na DDRAM, dependendo da instruo anterior (que define o endereo). importante que
precedendo a esta leitura seja executado a instruo de estabelecimento do endereo da CGRAM ou DDRAM, pois caso contrrio
o dado lido invlido.
Mdulo 8x1
Endereo(hexa)
10
1
80
2
81
Caracter
4
5
83
84
3
82
6
85
7
86
8
87
LCD 16x1
1
80
2
81
3
82
4
83
5
84
6
85
7
86
8
87
9
88
10
89
11
8
A
12
8B
13
8C
14
8
D
15
8E
16
8F
LCD 16x1
1
80
2
81
3
82
4
83
5
84
6
85
7
86
8
87
9
C0
10
C1
11
C2
12
C3
13
C4
14
C5
15
C6
16
C7
LCD 16x2
linha 1
1
80
2
81
3
82
4
83
5
84
6
85
7
86
8
87
9
88
10
89
12
8B
13
8C
16
8F
C0
C1
C2
C3
C4
C5
C6
C7
C8
C9
C
B
C
C
14
8
D
C
D
15
8E
linha 2
11
8
A
C
A
C
E
C
F
Display LCD
LCD
20x2
linha 1
linha 2
LCD
20x4
linha 1
linha 2
linha 3
linha 4
10 11 12 13 14 15 16 17 18 19 20
80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3
80
C0
80
C0
81
C1
81
C1
82
C2
82
C2
83
C3
83
C3
84
C4
84
C4
85
C5
85
C5
86
C6
86
C6
87
C7
87
C7
88
C8
88
C8
10 11 12 13 14 15 16 17 18 19 20
89
C9
89
C9
8A
CA
8A
CA
8B
CB
8B
CB
8C
CC
8C
CC
8D
CD
8D
CD
8E
CE
8E
CE
8F
CF
8F
CF
90
D0
90
D0
91
D1
91
D1
92
D2
92
D2
93
D3
93
D3
LCD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
24x1
LCD
24x2
linha 1 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97
linha 2 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7
LCD
40x1
a LCD
40X4
linha 1
linha 2
linha 3
linha 4
Cont.
10 11 12 13 14 15 16 17 18 19 20
80
C0
80
C0
21
81
C1
81
C1
22
82
C2
82
C2
23
83
C3
83
C3
24
84
C4
84
C4
25
85
C5
85
C5
26
86
C6
86
C6
27
87
C7
87
C7
28
88
C8
88
C8
29
89
C9
89
C9
30
8A
CA
8A
CA
31
8B
CB
8B
CB
32
8C
CC
8C
CC
33
8D
CD
8D
CD
34
8E
CE
8E
CE
35
8F
CF
8F
CF
36
90
D0
90
D0
37
91
D1
91
D1
38
92
D2
92
D2
39
93
D3
93
D3
40
linha 1
linha 2
linha 3
linha 4
94
D4
94
D4
95
D5
95
D5
96
D6
96
D6
97
D7
97
D7
98
D8
98
D8
99
D9
99
D9
9A
DA
9A
DA
9B
DB
9B
DB
9C
DC
9C
DC
9E
DD
9E
DD
9D
DE
9D
DE
9F
DF
9F
DF
A0
E0
A0
E0
A1
E1
A1
E1
A2
E2
A2
E2
A3
E3
A3
E3
A4
E4
A4
E4
A5
E5
A5
E5
A6
E6
A6
E6
A7
E7
A7
E7
OBS:
Para os mdulos de 04 linhas estamos considerando que existe um outro pino de habilitao (como o pino 6) para as duas
ltimas linhas, portando outros endereos de hardware.
Antes de enviar uma instruo para escrita de dados no display, enviar antes uma de endereamento na DDRAM, com o
endereo onde deve ser escrito o caracter, tipo um gotoxy().
11
Display LCD
RS
R/W
Endereo 50
Dado em Binrio
50
51
52
10
53
10
54
55
56
57
HEXA
0E
x
x
x
50
x
x
11
15
0E
10
00*
Isto significa que para utilizarmos o caracter gravado no endereo base 50, durante a inicializao ou reset do sistema, teremos
que escrevermos 8 bytes entre os endereos 50 e 57, para construirmos o caracter. Para ilustrar este procedimento, supor que
queiramos construir o caracter {} no endereo base 50. Neste caso, devemos construir o mapa deste caracter especial como
mostrado na Tabela 7 (supondo estar trabalhando com matriz 7x5 e com auto incremento de endereo a cada escrita). Observe
que o ltimo endereo sempre ser 00, pois esta posio sempre ocupada pelo cursor.
12
MDULO LCD
1 linha - Matriz 7x5 e 8x5
1
30
34
38
15m
S
15m
S
15m
S
BF
5
01
BF
01
BF
01
Display LCD
MDULO LCD
1 linha - Matriz 7x5 e 8x5
1 linha - Matriz 10x5
2 linha - Matriz 7x5 e 8x5
1
3
3
3
2
3
3
3
3
3
3
3
11
0
0
0
12
1
1
1
13
Display LCD
14
Instruo
30H
38H
34H
20H
28H
24H
CONTROLE DISPLAY
Display aceso c/ cursor fixo
Display aceso c/ cursor intermitente
Display aceso sem cursor
Display apagado
Instruo
0EH
0FH
0CH
08H
MODO DE OPERAO
Escreve deslocando a mensagem para esquerda (cursor fixo)
Escreve deslocando a mensagem para a direita (cursor fixo)
Escreve deslocando o cursor para a direita
Escreve deslocando o cursor para a esquerda
Instruo
07H
05H
06H
04H
Display LCD
Instruo
01H
02H
14H
10H
1CH
18H
C0H
80H
Instruo
40H
00H
07H
Obs: Aps o endereamento da CGRAM, o cursor se desloca para a primeira posio da segunda linha (ou metade), portanto
recomendado enviar a instruo 01 ou limpa display e cursor home.
15
Display LCD
5.1 - MANUSEIO
Somente retire o mdulo de sua embalagem protetora imediatamente antes de sua instalao
No guarde os mdulos em recintos de alta temperatura e alta umidade. A temperatura de armazenamento dever estar
compreendida entre 5 e 30 oC.
O LCD coberto por uma lmina plstica polarizada a qual no pode ser riscada. Cuidado em seu manuseio. Para a limpeza
da lmina utilize cotonetes embebido em benzina. No utilize outros tipos de solventes.
Observe cuidadosamente os procedimentos de controle anti-esttico quando manusear os mdulos. Eles incorporam circuitos
integrados CMOS LSI os quais so sensveis descarga eletrosttica. No toque nos terminais do conector, trilhas do circuito
impresso e/ou terminais do CI.
5.2 - INSTALAO
5.3 - OPERAO
16
Display LCD
INC R7
MOV A,R7
MOV DPTR,#mensagem
MOVC A,@A+DPTR
CJNE A,#0FFH,cont
JMP fim
; le caracter da mensagem
; testa se fim da mensagem
cont:
CALL wr_dado
CALL espera
JMP loop
fim:
JMP fim
; fim do programa
17
Display LCD
;=======================================================================
; Rotinas chamadas pelo Programa Principal
;=======================================================================
ORG 100H
inicia_lcd:
MOV A,#38H
CALL wr_inst
CALL tempo
MOV A,#38H
CALL wr_inst
CALL tempo
MOV A,#06H
CALL wr_inst
CALL espera
MOV A,#0EH
CALL wr_inst
CALL espera
MOV A,#01H
CALL wr_inst
CALL espera
RET
espera:
CALL rd_inst
RLC A
JC espera
RET
wr_inst:
; rotina de inicializacao
; 2 linhas / matriz 7x5
; delay de 15mS
; 2 linhas / matriz 7x5
; delay de 15mS
; cursor com autoincremento para direita
; busy flag
; liga display / cursor
; busy flag
; limpa display / cursor home
; busy flag
wr_dado:
rd_inst:
rd_dado:
MOV DPTR,#lcd_rd_dado
MOVX A,@DPTR
RET
18
; retorna em A
Display LCD
;=========================================================
; Rotina de tempo: 15 mS / clock 12 MHz => 50.000 ciclos
;=========================================================
tempo:
MOV DPTR,#15536
MOV TH1,DPH
MOV TL1,DPL
SETB TR1
JNB TF1,$
CLR TR1
CLR TF1
RET
mensagem:
; (65536-50000)
; dispara timer1
; aguarda estouro => 50.0000
; prepara para proxima chamada
; obrigatorio
19