Está en la página 1de 12

Sistemas Embebidos

 Manejo de Teclado
 Manejo de LCD

José Oliden Martínez


Teclado

FILAS COLUMNAS
1234 1234

COL4

COL3

COL2

COL1

'1' '2' '3' 'UP'


FILA1 COL4

COL3
'4' '5' '6' 'DOWN'
FILA2 COL2

COL1
'7' '8' '9' '2ND'
FILA3

FILA1
'CLEAR' '0' 'HELP' 'ENTER'
FILA4

FILA2

José Oliden Martínez


Uso con el Decodificador 74922

José Oliden Martínez


Conexión con el uC

José Oliden Martínez


Control del Teclado

El objetivo es capturar el código del teclado (en 4 bits por el puerto A)

Sabremos que se ha pulsado una tecla cuando se reciba un pulso por el pin DA del
74922

Este pulso lo utilizaremos como una interrupción externa por el RB0 de tal manera
que cuando ocurra leemos el puerto A y mediante una tabla codificaremos el valor a
una letra determinada para el LCD.

José Oliden Martínez


Tabla de conversión
LeeTeclado:
ADDWF PCL,F
RETLW '1' ; código
RETLW '2' ; código
RETLW '3' ; código
RETLW 'U' ; código
RETLW '4' ; código
RETLW '5' ; código
RETLW '6' ; código
RETLW 'D' ; código
RETLW '7' ; código
RETLW '8' ; código
RETLW '9' ; código
RETLW 'F' ; código
RETLW 'C' ; código
RETLW '0' ; código
RETLW 'H' ; código
RETLW 'E' ; código

José Oliden Martínez


Prueba del Teclado

Hacer una programa que muestre en pantalla del LCD la tecla pulsada por el
teclado.

Recuerde:
Agregar la rutina de decodificación de teclado en la interrupción del RB0

El archivo se llama TecladoLCD.asm

José Oliden Martínez


Control del LCD

José Oliden Martínez


LCD: Conexionado
LCD: En el módulo
LCD: Con el Microcontrolador

José Oliden Martínez


Rutinas del LCD

Para el manejo del LCD también se cuenta con un archivo que contiene las rutinas de
manejo de este

La rutina de inicialización del LCD :


Lcd_Init(); // inicializa la pantalla LCD

Para enviar caracteres se utiliza la rutina de envío de caracteres al LCD :


Lcd_Chr(char row, char column, char out_char);
Esta rutina separa el carácter entre el nibble (4bits) superior e inferior y los envía a la pantalla LCD,
nibble más alto primero. Ejm: Escribir el caracter "i“ en la fila 2, columna 3: Lcd_Chr(2, 3, 'i');

Para el envío de comando al LCD :


Lcd_Cmd(_LCD_COMANDO); La cual envía un comando a la pantalla LCD. Aquí también se
separa el comando en nibble superior e inferior y los envía a la pantalla.

Para el envío de cadenas:


Lcd_Out(char row, char column, char *text);
Envía el texto *text al LCD. Ejm: Lcd_Out(1, 3, "Hola!");

José Oliden Martínez


POWER ON

ESPERAR MAS DE 15ms

RS R/W E DB7 DB6 DB5 DB4 Configura LCD para interfaces de 4 bits
0 0 0 0 0 1 1

Inicio del LCD E=1


E=0
Conmutar E

ESPERAR MAS DE 4,5ms

RS R/W E DB7 DB6 DB5 DB4 Escojer 2 líneas de caracteres


0 0 0 0 0 1 1

;************************************************************ E=1
Conmutar E
E=0
;* Esta rutina inicializa la pantalla LCD *
;* Afecta: TEMP - retornado con busy/address *
ESPERAR MAS DE 100us
;************************************************************
Inicio_LCD
RS R/W E DB7 DB6 DB5 DB4
Banco0 Parte de la secuencia de encendido
0 0 0 0 0 1 1
bcf CNTRL,E ; aclara lineas de control
bcf CNTRL,RW E=1
Conmutar E
E=0
bcf CNTRL,RS
movlw 0x0F ; aclara lineas de datos
ESPERAR MAS DE 200us
movwf DATOS
;Configurar puertos DATOS[4..7] y CNTRL[1..3] como salidas
RS R/W E DB7 DB6 DB5 DB4 Modo 4 bits
Banco1 0 0 0 0 0 1 0
movlw B'00001111' ;4 bits mas altos de DATOS
movwf TRISD E=1 Conmutar E
E=0
bcf TRISD,E ;bits de control como salidas
bcf TRISD,RW
ENVIAR COMANDOS DE:
bcf TRISD,RS
Banco0 INTERFACE DE 4 BITS, 2 LINEAS = 00101000
DISPLAY ON, CURSOR ON, BLINK = 00001111
ACLARAR DISPLAY = 00000001
MODO INCREMENTAL = 00000110

FIN INICIAR
LCD José Oliden Martínez
Prueba del LCD

Hacer una programa que muestre en pantalla del LCD:


“HOLA”
Recuerde:
Llamar a la subrutina Lcd_init para iniciar el LCD
Para enviar un comando utilizar la rutina Lcd_Cmd(COMANDO)
Para enviar una cadena y luego usar Lcd_Out(1,3,”Hola”);

José Oliden Martínez

También podría gustarte