Buscar

Continue navegando


Prévia do material em texto

Prof. Celso 
 
 44
 MCS51 
Módulo 3 
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 
8 D1 
9 D2 
10 D3 
11 D4 
12 D5 
13 D6 
14 D7 
DADOS: LSB 
 
 
 
 
 
 
 MSB - dados 
15 A Anodo para LED backlight 
16 K Catodo para LEd backlight 
 
Ligação para ajuste do constraste: 
 
 Prof. Celso 
 
 45
 MCS51 
Módulo 3 
Escrevendo no LCD 
 
LCD 
 
 
Rotina 
Atraso 
Rotina 
Habilitar Dados ou 
Instrução 
Porta Dado ou Instrução 
 
 
 
 
 
 
 
 
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. 
 
 
 Prof. Celso 
 
 46
 MCS51 
Módulo 3 
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 
 
 
 
 
 Prof. Celso 
 
 47
 MCS51 
Módulo 3 
Tabela de Códigos e Formação dos Caracteres 
 
 
 
 
 
 
 
 
 
 
 
 Prof. Celso 
 
 48
 MCS51 
Módulo 3 
 
 Esquema da placa do kit utilizado no laboratório: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Prof. Celso 
 
 49
 MCS51 
Módulo 3 
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: 
 
 
 
- Configurar o display: 
colocar a instrução na porta 
 habilitar dados (RS=0, R/W=0, E = 1 0) 
 rotina de atraso 
 
- Enviar dados: 
 colocar dados na porta 
 habilitar dados (RS=1, R/W=0, E = 1 0) 
 rotina de atraso 
RS – Pino 4 
R/W – Pino 5 
E – Pino 6 
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) 
limpeza do display (01h) 
 Prof. Celso 
 
 50
 MCS51 
Módulo 3 
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 
 
 Prof. Celso 
 
 51
 MCS51 
Módulo 3 
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. 
	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 detempo de aproximadamente 15 milisegundos. 
	Tabela de Códigos e Formação dos Caracteres