MCS51
Módulo 3 Prof. Celso
LCD
O LCD é um display de cristal líquido que possui dentro dele um
microcontrolador. Abaixo é mostrado a pinagem de um LCD:
Pinagem
Pino Descrição
1 Vss Terra (GND)
2 Vdd Vcc
3 V0 Tensão de ajuste de contraste
4 RS 1 – Dado 0 - Instrução
5 R/W 1 - Leitura 0 – Escrita
6 E Chip Select – habilita de 1Æ 0
7 D0 DADOS: LSB
8 D1
9 D2
10 D3
11 D4
12 D5
13 D6
14 D7 MSB - dados
15 A Anodo para LED backlight
16 K Catodo para LEd backlight
Ligação para ajuste do constraste:
44
MCS51
Módulo 3 Prof. Celso
Escrevendo no LCD
LCD
Porta Í Dado ou Instrução
Rotina
Habilitar Dados ou
Instrução
Rotina
Atraso
Dados Î é o que você quer mostrar no display.
Instruções Î não aparecem no display, servem para configurar o LCD.
Inicialização para sistemas com via de dados de 8 bits
- Fixação das condições de utilização: depende do lcd utilizado. Se tivermos um lcd
de 2 linhas 5x7 e 8 bits Î código 38h
- Controle do display: define como o cursor é mostrado. Ex, código 0Eh Î display
aceso com cursor fixo
- Modo de operação: modo como o cursor é deslocado. Ex: código 06h Î escreve
deslocando o cursor à direita.
- limpeza do display: código 01h.
Característica do Módulo Seqüência de Instruções em hexadecimal
1 linha – Matriz 7 x 5 (8 x 5) 30 , Δ , 30 , Δ , 06 , Δ , 0E , Δ , 01
1 linha – Matriz 10 x 5 34 , Δ , 34 , Δ , 06 , Δ , 0E , Δ , 01
2 linhas – Matriz 7 x 5 (8 x 5) 38 , Δ , 38 , Δ , 06 , Δ , 0E , Δ , 01
Δ = atraso de tempo de aproximadamente 15 milisegundos.
45
MCS51
Módulo 3 Prof. Celso
Exemplo de uma subrotina só para configurar o display:
Supondo que a porta P1 contenha os dados (ou instrução) para o LCD
e que a porta P3 tenha o controle dos pinos 4 (RS), 5(R/W) e 6 (E):
Instrução RS=0
Conf_display:
MOV P1,#38H ; display 2 lihas
LCALL habi_Inst ; habilita enviar instrução
MOV P1,#38H
LCALL habi_Inst ; habilita enviar instrução
MOV P1,#0EH ; display acesso com cursor fixo
LCALL habi_Inst ; habilita enviar instrução
MOV P1,#06H ; escreve deslocando à direita
LCALL habi_Inst ; habilita enviar instrução
MOV P1,#01H ; Limpa display
LCALL habi_Inst ; habilita enviar instrução
habi_Inst:
MOV P3,#02h ; criando borda
MOV P3,#00h ; de descida
LCALL ATRASO
RET
ATRASO: MOV R1,#14h
VOLTA: MOV R0,#0FAh
DJNZ RO, $
DJNZ R1, VOLTA
RET
46
MCS51
Módulo 3 Prof. Celso
Tabela de Códigos e Formação dos Caracteres
47
MCS51
Módulo 3 Prof. Celso
Esquema da placa do kit utilizado no laboratório:
48
MCS51
Módulo 3 Prof. Celso
Fixação das condições de utilização Instrução
1 linha 5x7 (8 bits) 30H
2 linha 5x7 (8 bits) 38H
1 linha 5x10 (8 bits) 34H
1 linha 5x7 (4 bits) 20H
2 linha 5x7 (4 bits) 28H
Controle do display Instrução
Display acesso com cursor fixo OEH
Display acesso com cursor intermitente 0FH
Display acesso sem cursor 0CH
Display apagado 08H
Modo de operação Instrução
Escreve deslocando a mensagem para a esquerda (cursor fixo) O7H
Escreve deslocando a mensagem para a direita (cursor fixo) 05H
Escreve deslocando o cursor para a direita 06H
Escreve deslocando o cursor para a esquerda 04H
Comandos úteis Instrução
Limpa display e retorna cursor para o início O1H
Retorna o cursor para o início (sem alterar a DDRAM) 02H
Desloca somente o cursor para a direita 14H
Desloca somente o cursor para a esquerda 10H
Desloca o cursor + a mensagem para a direita 1CH
Desloca o cursor + a mensagem para a esquerda 18H
Desloca o cursor para a posição inicial da segunda linha C0H
Desloca o cursor para a posição inicial da primeira linha 80H
Resumo para utilizar o display: Fixação das condições de utilização (38h)
Fixação das condições de utilização (38h)
Controle do display (0Eh)
Modo de operação (06h)
- Configurar o display: limpeza do display (01h)
colocar a instrução na porta
habilitar dados (RS=0, R/W=0, E = 1Î0) RS – Pino 4
rotina de atraso R/W – Pino 5
E – Pino 6
- Enviar dados:
colocar dados na porta
habilitar dados (RS=1, R/W=0, E = 1Î0)
rotina de atraso
49
MCS51
Módulo 3 Prof. Celso
ROTINA COMENTADA:
Considerando a seguinte ligação, escreva uma mensagem no LCD.
ORG 0h ; posiciona o programa no endereço 0h da Flash
inicio: LCALL config_lcd ; chama rotina para configurar o LCD
LCALL config_lcd ; “ “ “ “ “ “
MOV R7, #0FFh ; inicializa o índice da tabela
MOV DPTR, #mensa ; carrega mensagem a ser escrita
volta: INC R7 ; pega o próximo índice da tabela
MOV A, R7 ; movimenta o índice para o Acc
MOVC A,@A+DPTR ; obtém o caracter referente ao índice carregado
MOV P1, A ; coloca o caracter a ser escrito na porta do LCD
LCALL habi_dado ; escreve no LCD (habilita escrita de dado)
CJNE A,#0FFh, volta ; se não chegou no fim da mensagem, volta
SJMP $ ; se chegou no fim, para o processamento
config_lcd: ; subrotina para configurar o LCD
MOV P1, #38h ; fixa condições iniciais
LCALL habi_inst ; habilita instrução
MOV P1, #38h ; fixa condições iniciais
LCALL habi_inst ; habilita instrução
MOV P1, #06h ; fixa controle do display
LCALL habi_inst ; habilita instrução
MOV P1, #0Fh ; fixa modo de operação
LCALL habi_inst ; habilita instrução
MOV P1, #01h ; limpa display
LCALL habi_inst ; habilita instrução
RET ; retorno da rotina de configuração do LCD
50
MCS51
Módulo 3 Prof. Celso
habi_inst: ; rotina para habilitar instrução
MOV P2, #02h ; coloca RS=0 (instrução) e E=1
MOV P2, #00h ; coloca RS=0 (instrução) e E=0 (borda descida)
LCALL atraso ; chamada da rotina de atraso
RET ; retorno da rotina de habilitar instrução
habi_dado: ; rotina para habilitar envio de dados
MOV P2, #03h ; coloca RS=1 (dado) e E=1
MOV P2, #01h ; coloca RS=1 (dado) e E=0 (borda descida)
LCALL atraso ; chamada da rotina de atraso
RET ; retorno da rotina de habilitar dados
atraso: ; rotina de atraso
MOV R1,#14h ; carrega R1
volta1: MOV R0,#0FAh ; carrega R0
DJNZ RO, $ ; fica decrementando R0 enquanto for ≠ 0
DJNZ R1, volta1 ; se R0=0, decrementa R1 e volta
RET ; retorno da rotina de atraso
mensa: db ‘escreva aqui a sua mensagem’, 0FFh ; mensagem
END ; fim de programa
Exercício 1: Faça um programa que leia um teclado simples da porta P3 que
mostre no LCD as seguintes mensagens:
Se P3 = FFh Î Funcionamento normal
Se P3.0 = 0 Î Pressão baixa de óleo
Se P3.1 = 0 Î Temperatura abaixo do normal
Se P3.2 = 0 Î Estado de emergência
Exercício 2: Utilizando um teclado de 16 teclas (0...9, A,B,C,D,E,F) faça um
programa que escreva no LCD qual foi a tecla pressionada.
51