You are on page 1of 21

DISPLAY LCD

Ilton L. Barbacena Claudio Afonso Fleury

Outubro - 1996

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. Tabela 1 - Mdulos LCD disponveis Nmero de Nmero de Quantidade Colunas Linhas de pinos 8 2 14 12 2 14/15 16 1 14/16 16 2 14/16 16 4 14/16 20 1 14/16 20 2 14/16 20 4 14/16 24 2 14/16 24 4 14/16 40 2 16 40 4 16 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 fazse 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. A Tabela 2 descreve cada pino do mdulo ou do display para conexo deste a outras placas:

Tabela 2 - Pinagem dos Mdulos LCD

Pino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Funo
Alimentao Alimentao V0 RS Seleo: R/W Seleo: E Chip select B0 LSB B1 B2 B3 B4 B5 B6 B7 MSB A (qdo existir) K (qdo existir)

Descrio
Terra ou GND VCC ou +5V Tenso para ajuste de contraste (ver Figura 1) 1 - Dado, 0 - Instruo 1 - Leitura, 0 - Escrita 1 ou (1 0) - Habilita, 0 - Desabilitado

Barramento de Dados

Anodo p/ LED backlight Catodo p/ LED backlight

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.

Figura 1 - Detalhe do controle de contraste do mdulo LCD

02. INTERFACE COM CPU


Os mdulos LCD so projetados para conectar-se com a maioria das CPUs disponveis no mercado, bastando para isso que esta CPU atenda as temporizaes de leitura e escrita de instrues e dados, fornecido pelo fabricante do mdulo. A Figura 2 mostra um exemplo de diagrama de tempos tpico requeridos para operao de escrita no mdulo LCD, estes tempos variam em funo do clock da CPU do usurio.

Figura 2 - (a) Escrita no LCD (b) Ciclo de Escrita da CPU 8051

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. Tabela 3 - Relao clock da CPU x Temporizao do Mdulo LCD Clock da CPU t AS (MHz) PW EH (nS) t H (nS ) 08 MHz 325 650 75 10 MHz 250 500 50 12 MHz 200 400 33,3 16 MHz 138 275 12,5 4

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.

Figura 3 - Sistema baseado na CPU 8051 com mdulo LCD 5

Tabela 4 - Endereamento do mdulo LCD para Figura 3 ENDEREO R/W RS DESCRIO 4000 0 0 Instruo - Escrita no modulo 4001 0 1 Dados - Escrita no modulo 4002 1 0 Instruo - Leitura no modulo 4003 1 1 Dados - 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.

Figura 4 - Modulo LCD comunicando-se com 4 bits

03. PROGRAMAO / INSTRUES


Tabela 5 - Conjunto de instrues do mdulo LCD
INSTRUO Limpa Display Home p/ Cursor Fixa o modo de funcionamento
RS
R/W

B7 0 0

B6 0 0

B5 0 0

B4 0 0

B3 0 0

B2 0 0

B1 0 1

B0 1 *

DESCRIO e tempo de execuo (uS) -Limpa todo o display e retorna o cursor para a primeira posio da primeira linha -Retorna o cursor para a 1. coluna da 1. Linha -Retorna a mensagem previamente deslocada a sua posio original -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, X=1 p/ direita) -Esta instruo tem efeito somente durante a leitura e escrita de dados. -Liga (D=1) ou desliga display (D=0) -Liga(C=1) ou desliga cursor (C=0) -Cursor Piscante(B=1) se C=1 -Desloca o cursor (C=0) ou a mensagem (C=1) para a Direita se (R=1) ou esquerda se (R=0) - Desloca sem alterar o contedo da DDRAM -Comunicao do mdulo com 8 bits(Y=1) ou 4 bits(Y=0) -Nmero de linhas: 1 (N=0) e 2 ou mais (N=1) -Matriz do caracter: 5x7(F=0) ou 5x10(F=1) - Esta instruo deve ser ativada durante a inicializao -Fixa o endero na CGRAM para posteriormente enviar ou ler o dado (byte) -Fixa o endero na DDRAM para posteriormente enviar ou ler o dado (byte) -L o contedo do contador de endereos (AC) e o BF. O BF (bit 7) indica se a ltima operao foi concluda (BF=0 concluda) ou est em execuo (BF=1). - Grava o byte presente nos pinos de dados no local apontado pelo contador de endereos (posio do cursor) - L o byte no local apontado pelo contador de endereos (posio do cursor)

t
1.6 mS 1.6 mS

0 0

0 0

40 uS

Controle do Display Desloca cursor ou mensagem

40 uS

40 uS

Fixa o modo de utilizao do mdulo LCD

40 uS

Posiciona no endereo da CGRAM Posiciona no endereo da DDRAM Leitura do Flag Busy Escreve dado na CGRAM / DDRAM L Dado na CGRAM / DDRAM

0 0 0

0 0 1

0 1

1 Endereo da CGRAM Endereo da DDRAM

40 uS 40 uS 0 40 uS 40 uS

B F

AC

0 1

1 Dado a ser gravado no LCD 1 Dado lido do mdulo

A Tabela 5 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 7

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. A Tabela 6 traz um resumo das instrues mais usadas na comunicao com os mdulos LCD. DESCRIO Display Limpa Display com Home cursor Controle do Cursor Tabela 6 - Instrues mais comuns MODO RS Liga (sem cursor) Desliga 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 R/W 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Cdigo (Hexa) 0C 0A / 08 01 0E 0C 10 14 02 0D 0F 04 06 07 05 18 1C 80 C0

Liga Desliga Desloca para Esquerda Desloca para Direita Cursor Home Cursor Piscante Cursor com Alternncia Sentido de deslocamento do Para a esquerda cursor ao entrar com caracter Para a direita Deslocamento da mensagem Para a esquerda ao entrar com caracter Para a direita Deslocamento da mensagem Para a esquerda sem entrada de caracter Para a direita End. da primeira posio primeira linha segunda linha 3.1 - DESCRIO DETALHADA DAS INSTRUES 3.1.1- Limpa Display R S 0 R/W 0

B7 B6 B5 B4 B3 B2 B1 B0 0 0 0 MSB 0 0 0 0 LSB 1

CDIGO

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 8

escrita. O cursor retorna ao endereo zero, ou seja, posio mais a esquerda da primeira linha. 3.1.2 - Cursor Home R S 0 R/W 0 B7 B6 B5 B4 B3 B2 B1 B0 0 0 0 MSB 0 0 0 1 LSB *

CDIGO

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. 3.1.3 - Fixa o modo de operao R S 0 R/W 0 B7 B6 B5 B4 B3 B2 B1 B0 0 0 0 MSB 0 0 1 X LSB S

CDIGO

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 R S 0 R/W 0 B7 B6 B5 B4 B3 B2 B1 B0 0 0 0 MSB 0 0 D C LSB B

CDIGO

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 9

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).

10

3.1.5 - Deslocamento do Cursor ou da Mensagem R S 0 R/W 0 B7 B6 B5 B4 B3 B2 B1 B0 0 0 0 MSB 1 C R * LSB *

CDIGO

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

3.1.6 - Estabelece o modo de utilizao do Mdulo LCD R S 0 R/W 0 B7 B6 B5 B4 B3 B2 B1 B0 0 0 1 MSB Y N F * LSB *

CDIGO

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. R S 0 R/W 0 B7 B6 B5 B4 B3 B2 B1 B0 0 1 A MSB A A A A LSB A

CDIGO

11

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 R S 0 R/W 0 B7 B6 B5 B4 B3 B2 B1 B0 1 A A MSB A A A A LSB A

CDIGO

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) R S 0 R/W 1 B7 B6 B5 B4 B3 B2 B1 B0 BF A A MSB A A A A LSB A

CDIGO

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. 3.1.10 - Escrita de dados na DDRAM ou CGRAM R S 1 R/W 0 B7 B6 B5 B4 B3 B2 B1 B0 A A A MSB A A A A LSB A

CDIGO

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). 12

3.1.11 - Leitura de dados na DDRAM ou CGRAM R S 1 R/W 1 B7 B6 B5 B4 B3 B2 B1 B0 A A A MSB A A A A LSB A

CDIGO

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. 3.2 - TABELAS DE ENDEREOS DOS CARCTERES NA DDRAM A seguir resumiremos os endereos da DDRAM (em hexadecimal) dos caracteres da maioria dos mdulos LCD disponveis no mercado. Mdulo 8x1 1 Endereo(hexa) 80 2 81 3 82 caracter 4 5 6 83 84 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 11 12 13 14 15 16
89 8 A 8B 8C 8 D 8E 8F

LCD 16x1

1
80

2
81

3
82

4
83

5
84

6
85

7
86

8
87

9
C0

10 11 12 13 14 15 16
C1 C2 C3 C4 C5 C6 C7

LCD 16x2
linha 1 linha 2

1
80 C0

2
81 C1

3
82 C2

4
83 C3

5
84 C4

6
85 C5

7
86 C6

8
87 C7

9
88 C8

10 11 12 13 14 15 16
89 C9 8 A
CA

8B
CB

8C
CC

8 D
CD

8E
CE

8F
CF

LCD 20x2

linha 1 linha 2

1 80 C0

2 81 C1

3 82 C2

4 83 C3

5 84 C4

6 85 C5

7 86 C6

8 87 C7

9 88 C8

10 89 C9

11
8A CA

12
8B CB

13
8C CC

14
8D CD

15
8E CE

16
8F CF

17
90 D0

18
91 D1

19
92 D2

20
93 D3

13

LCD 20x4

linha 1 linha 2 linha 3 linha 4

1 80 C0 80 C0

2 81 C1 81 C1

3 82 C2 82 C2

4 83 C3 83 C3

5 84 C4 84 C4

6 85 C5 85 C5

7 86 C6 86 C6

8 87 C7 87 C7

9 88 C8 88 C8

10 89 C9 89 C9

11
8A CA 8A CA

12
8B CB 8B CB

13
8C CC 8C CC

14
8D CD 8D CD

15
8E CE 8E CE

16
8F CF 8F CF

17
90 D0 90 D0

18
91 D1 91 D1

19
92 D2 92 D2

20
93 D3 93 D3

LCD 24x1 LCD 24x2

1 80 C0

2 81 C1

3 82 C2

4 83 C3

5 84 C4

6 85 C5

7 86 C6

8 87 C7

9 88 C8

10 89 C9

11 8A CA

12 8B CB

13 8C CC

14 8D CD

15 8E CE

16 8F CF

17 90 D0

18 91 D1

19 92 D2

20 93 D3

21 94 D4

22 95 D5

23 96 D6

24 97 D7

linha 1 linha 2
LCD 40x1 a LCD 40X4

1 80 C0 80 C0 21 94 D4 94 D4

2 81 C1 81 C1 22 95 D5 95 D5

3 82 C2 82 C2 23 96 D6 96 D6

4 83 C3 83 C3 24 97 D7 97 D7

5 84 C4 84 C4 25 98 D8 98 D8

6 85 C5 85 C5 26 99 D9 99 D9

7 86 C6 86 C6 27 9A DA 9A DA

8 87 C7 87 C7 28 9B DB 9B DB

9 88 C8 88 C8 29 9C DC 9C DC

10 89 C9 89 C9 30 9E DD 9E DD

11 8A CA 8A CA 31 9D DE 9D DE

12
8B CB 8B CB

13
8C CC 8C CC

14
8D CD 8D CD

15
8E CE 8E CE

16
8F CF 8F CF

17
90 D0 90 D0

18
91 D1 91 D1

19
92 D2 92 D2

20
93 D3 93 D3

linha 1 linha 2 linha 3 linha 4


Cont.

32
9F DF 9F DF

33
A0 E0 A0 E0

34
A1 E1 A1 E1

35
A2 E2 A2 E2

36
A3 E3 A3 E3

37
A4 E4 A4 E4

38
A5 E5 A5 E5

39
A6 E6 A6 E6

40
A7 E7 A7 E7

linha 1 linha 2 linha 3 linha 4

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(). 3.3 - TABELAS DE ENDEREOS DOS CARCTERES NA CGRAM Os caracteres especiais previamente programado, durante a inicializao, podem ser utilizados a qualquer tempo como se fossem caracteres normais, lembrando que os endereos bases em hexadecimal para gravao dos caracteres especiais, na maioria dos mdulos LCD, so respectivamente: 40, 48, 50, 58, 60, 68, 70 e 78. Cada caracter especial ocupa 8 (oito) endreos. Tabela 7 - Caracter especial {} na CGRAM RS R/W Dado em Binrio 0 0 0 1 0 1 0 0 0 0 1 1 0 0 14 x x x x x HEXA 50 0E 11

Endereo 50 50 51

52 53 54 55 56 57

1 1 1 1 1 1

0 0 0 0 0 0

x x x x x

x x

x x

10 10 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. 3.4 - INICIALIZAO DOS MDULOS LCD Toda vez que alimentamos o mdulo LCD deve ser executado o procedimento de inicializao, que consiste no envio de uma seqncia de instrues para configurar o modo de operao para execuo de um dado programa de interfaceamento. Em muitos display este procedimento ocorre automaticamente, dentro de condies especficas que envolve temporizaes mnimas referente a transio do nvel lgico 0 para 1, ao ligarmos a fonte. Em caso de dvidas, recomendamos o envio destas instrues aps o reset do sistema. 3.4.1 - Inicializao para sistemas 8 bits de dados (5 instrues) Entre as duas primeiras instrues recomendamos um delay de 15 mS. As demais instrues podem ser escritas aps checar o Busy Flag. Instrues em Hexadecimal (8 bits) 2 3 4 15mS 15mS BF 30 06 0E BF 15mS BF 34 15mS 06 0E BF 15mS BF 38 15mS 06 0E BF

MDULO LCD 1 linha - Matriz 7x5 e 8x5 1 linha - Matriz 10x5 2 linha - Matriz 7x5 e 8x5

1 30 34 38

5 01 01 01

3.4.2 - Inicializao para sistemas 4 bits de dados (5 instrues) Entre as quatro primeiras instrues recomendamos um delay de 15 mS. As demais instrues podem ser escritas aps checar o Busy Flag. Estes bits (nible) devem estar conectados aos pinos 11, 12.13 e 14. 15

MDULO LCD 1 linha - Matriz 7x5 e 8x5 1 linha - Matriz 10x5 2 linha - Matriz 7x5 e 8x5

1 3 3 3

Instrues em Hexadecimal (4 bits) 2 3 4 5 6 7 8 9 10 11 12 3 3 2 2 0 0 8 0 1 0 1 3 3 2 2 4 0 8 0 1 0 1 3 3 2 2 8 0 8 0 1 0 1

16

04. ROTEIRO PARA PROGRAMAO


A seguir passaremos a descrever um resumo dos procedimentos para utilizao de um mdulo ou display LCD: 1. Ao energizar o mdulo ajuste o potencimetro de controle do brilho ou contraste at obter a visualizao da matriciao na primeira linha para mdulo de duas linhas ou at a matriciao de meia linha para mdulos de uma linha. 2. Alguns mdulos de uma linha s funcionam com a instruo 38 ao invs de 30, conforme instrues de inicializao. 3. O sinal de Enable (pino 6) dever ser gerado conforme a temporizao mostrada na Figura 2. Os cdigos de dados ou de instrues s sero processados pelo processador do mdulo aps a descida do sinal do Enable. 4. Para ajustar a velocidade de comunicao entre a CPU do usurio e o mdulo LCD existem duas possibilidades: Intercalar uma rotina de atraso de aproximadamente 15 mS entre as instrues. Fazer a leitura do Busy Flag antes do envio de cada instruo e s enviar quando o mesmo for 0. Neste caso, a nica exceo ser durante a inicializao. 5. Durante a inicializao enviar a seqncia correta das instrues de inicializao conforme item 3.4 6. Para programar caracteres na CGRAM, faa inicialmente o endereamento da mesma. 7. Aps a escrita de dados na CGRAM envie a instruo 01, para posicionar o cursor. 8. Para escrever os caracteres especiais previamente gravados na CGRAM, utilize os cdigos de 00 at 07 correspondente aos endereos bases de 40, 48 at 78 em hexa. 9. Comandos teis: FIXAO DAS CONDIES DE UTILIZAO 1 linha 5x7 (8 bits) 2 linha 5x7 (8 bits) 1 linha 5x10 (8 bits) 1 linha 5x7 (4 bits) 2 linha 5x7 (4 bits) 1 linha 5x10 (4 bits) 17 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 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 OUTROS COMANDOS TEIS Limpa display e retorna o cursor para o inicio Retorna o cursor para o inicio (sem alterar a DDRAM) Desloca somente o cursor para a direita Desloca somente o cursor para a esquerda Desloca o cursor + mensagem para a direita Desloca o cursor + mensagem para a esquerda Desloca o cursor para posio inicial da segunda linha Desloca o cursor para posio inicial da primeira linha CGRAM (caracteres especiais) Endereo inicial para construir caracteres especiais Para escrever o primeiro caracter (previamente construdos) Para escrever o ltimo caracter (previamente construdos) Obs:

Instruo 0EH 0FH 0CH 08H Instruo 07H 05H 06H 04H Instruo 01H 02H 14H 10H 1CH 18H C0H 80H Instruo 40H 00H 07H

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.

18

05. CUIDADOS ESPECIAIS COM MDULOS 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 Nunca desmonte o mdulo Use uma estao de solda aterrada para soldagem de conectores ou terminais. montador dever tambm ser convenientemente aterrado. Sempre que o projeto o permita, instale o mdulo atrs de uma janela protetora de plstico ou vidro. Somente retire a fita adesiva que protege a lmina plstica frontal imediatamente antes de seu uso. 5.3 - OPERAO Nunca instale ou desconecte o mdulo com sua alimentao ligada. Sempre opere os mdulos respeitando sua gama de temperatura de operao. Observe cuidadosamente os valores das tenses de alimentao e os nveis dos sinais de controle. Ajuste a tenso no pino 3 (V0) para obter o contraste mais conveniente para uma dada aplicao.

19

06. EXEMPLO DE PROGRAMAO


Baseado no hardware da Figura 3, eaborar um programa em assembler para o 8031 que escreva no mdulo LCD a seguinte mensagem: Vila Nova.
;======================================================================= ; Programa: Exemplo para manuseio de display ou modulo LCD = ; Autor: Ilton L. Barbacena = ; Data: Out/96 = ; Compilador: ASM51.EXE / versao shareware para 8051 / $mod51 = ; versao: 1.0 = ; Descricao: = ; Este programa grava a mensagem "Vila Nova" = ; no display LCD 2x20 (duas linha de 20 caracteres). = ; Os pinos de dados do mudulo LCD estao conectados = ; diretamente no barramento de dados da CPU, conforme = ; Figura 3 da apostila sobre LCD. = ;======================================================================= $mod51 lcd_wr_inst equ 4000H lcd_wr_dado equ 4001H lcd_rd_inst equ 4002H lcd_rd_dado equ 4003H ;======================================================================== ; Programa principal ;======================================================================== ORG 0H MOV SP,#50H MOV TMOD,#11H ; TIMER1 / TIMER0 no modo 1 CLR EA ; desabilita todas as interrupcoes CALL inicia_lcd MOV R7,#0FFH loop: INC R7 MOV A,R7 MOV DPTR,#mensagem MOVC A,@A+DPTR ; le caracter da mensagem CJNE A,#0FFH,cont ; testa se fim da mensagem JMP fim cont: CALL wr_dado ; escreve o conteudo de acumulador no LCD CALL espera ; aguarda busy flag JMP loop fim: JMP fim ; fim do programa ;======================================================================= ; Rotinas chamadas pelo Programa Principal ;======================================================================= ORG 100H inicia_lcd: ; rotina de inicializacao MOV A,#38H ; 2 linhas / matriz 7x5 CALL wr_inst CALL tempo ; delay de 15mS MOV A,#38H ; 2 linhas / matriz 7x5 CALL wr_inst CALL tempo ; delay de 15mS MOV A,#06H ; cursor com autoincremento para direita CALL wr_inst CALL espera ; busy flag

20

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: MOV DPTR,#lcd_wr_inst MOVX @DPTR,A RET wr_dado: MOV DPTR,#lcd_wr_dado MOVX @DPTR,A RET rd_inst: MOV DPTR,#lcd_rd_inst MOVX A,@DPTR RET rd_dado: MOV DPTR,#lcd_rd_dado MOVX A,@DPTR RET

; liga display / cursor ; busy flag ; limpa display / cursor home ; busy flag ; ; ; ; rotina para aguardar busy flag ler busy flag e retorna em A bit7=BF vai para o carry se BF=1 => verifica novamente

; escreve a instrucao em A no LCD

; escreve o dado em A no LCD

; le o Busy Flag e o contador de endereco ; retorna em A ; le dado / de qual endereco? ; depende da ultima operacao no LCD ; retorna em A

;========================================================= ; Rotina de tempo: 15 mS / clock 12 MHz => 50.000 ciclos ;========================================================= tempo: MOV DPTR,#15536 ; (65536-50000) MOV TH1,DPH MOV TL1,DPL SETB TR1 ; dispara timer1 JNB TF1,$ ; aguarda estouro => 50.0000 CLR TR1 CLR TF1 ; prepara para proxima chamada RET mensagem: ; mensagem a ser escrita no LCD DB 'Vila Nova', 0FFH END ; obrigatorio

Exerccio para praticar:


Repetir o exerccio anterior, porm com a mensagem Escola Tcnica. Construir o {} na CGRAM. Lembre-se que apenas os cdigos ascii so caracteres vlidos para o LCD (verificar a tabela no manual do fabricante).

21