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