Вы находитесь на странице: 1из 12

ESCUELA SUPERIOR POLITCNICA DEL LITORAL

Prctica # 9 Tema: Gestin del teclado matricial 4 x 4 Paralelo: 6 Grupo #: 3 Nombres: Annabel Macas Wilson Pereira Fecha de ejecucin de la prctica: 02 de agosto de 2013

2013- I trmino

Objetivos
Aprender el manejo del teclado 4x4. Estudiar las subrutinas de gestin de un teclado matricial 4x4. Estas subrutinas detectan la tecla pulsada, y le asigna un cdigo hexadecimal. El cdigo HEX de la tecla pulsada se visualiza en un display de 7 segmentos por un lapso de 255 milisegundos. Utilizar rutinas para la eliminacin de rebotes mecnicos en el teclado. Entender el uso de la directiva INCLUDE. Esta prctica consta de dos partes: PARTE A y PARTE B.

Contenido
Introduccin Diagrama de flujo del teclado Especificaciones Programa principal Archivos include Simulacin en proteus

Diagrama de flujo Para eliminar los rebotes es necesario introducir un retardo por software de aproximadamente 20 milisegundos cuando se pulsa una tecla de la siguiente manera:
SIN ANTIREBOTE CON ANTIREBOTE

TECLA

TECLA

APRETADA SI

NO

APRETADA NO SI

SOLTADA

NO

RETARDO 20 MILISEGUNDOS

SI

SOLTADA CONTINUA PROCESO SI NO

CONTINUA PROCESO

2.

Diagrama de flujo de exploracin de teclado

De igual manera cuando se utiliza un teclado para evitar molestias se emplea un antirebote por software para cada tecla. Observe el uso de un retardo DELAY20MS de 20 milisegundos en las subrutinas EXPTECLADO y DEJEPULSAR. Observe que si el usuario no apreta ninguna tecla la exploracin continua indefinidamente.
EXPLORAR TECLADO

HABILITAR FILA 0

LEER COLUMNAS

TECLA APRETADA EN ESTA FILA?

no si HABILITAR FILA 1

LEER COLUMNAS

TECLA APRETADA EN ESTA FILA?

si

no

no

HABILITAR FILA 2 ELIMINAR REBOTES

LEER COLUMNAS IDENTIFICA FILA Y COLUMNA DE TECLA APRETADA

si TECLA APRETADA EN ESTA FILA?

SALIR no

HABILITAR FILA 3

LEER COLUMNAS si

TECLA APRETADA EN ESTA FILA?

Descripcin de los programas


Ejercicio 1 1) Inicio del programa. 2) Inicializamos la variable CX = 10 3) Entra a LZO para comenzar a imprimir en primer lugar la carita negra y a continuacin el trbol hasta que CX == 0 4) Finaliza el programa. Ejercicio 2 1) 2) 3) 4) Inicio del programa. Se inicializan las variables suma, promedio, divisor y finalmente residuo Cargamos contador con 6 Entra a BUCLE y decrementamos BX hasta que CX sea igual a cero para posteriormente cargar suma con AX y divide AX. 5) Asignamos AX en Promedio y DX en Residuo. Ejercicio 3 1) 2) 3) 4) 6) 5) Iniciamos del programa. Inicializamos las variables NUMBIN y MSJE con un numero binario Mostramos el mensaje. Se carga el contador CX con 8 y BL se lo carga con el valor inicial de NUMBIN Entramos a LAZO1 para posteriormente cargar suma con AX y divide AX. Finalizamos el programa.

Ejercicio 4 1) 2) 3) 4) 5) Inicio del programa. Declaramos las variables a utilizar y copiamos a Mensa1 y Mensa2 Direccionamos el segmento DS de nuestro programa Se llama a las subrutinas CURSOR y PCURSOR Mostramos en pantalla Mensa3 para finalmente finalizar el programa

Ejercicio 5 1) 2) 3) 4) Inicio del programa. Inicializamos Tabla1 y Tabla2 en nuestro programa Llamamos a las subrutinas CLR, PCURSOR y DISPLAY Llamamos a la subrutina SALIR y finalizamos el programa.

Ejercicios
Programa Numero 1 ;============================================================== ; PRACTICA # 09 ;============================================================== ; ; PROPOSITO: ; Estudiar las subrutinas de gestin de un teclado matricial 4x4. ; Estas subrutinas detectan la tecla pulsada, la identifica y ; le asigna un cdigo Hexadecimal. ; Usar la directiva INCLUDE para incorporar al programa fuente el archivo ; GTECLADO.ASM que contiene las subrutinas de gestin del teclado, ; tambin las subrutinas DELAY20MS y DELAY255MS para la eliminacin de ; rebotes y pausa del display respectivamente. ; Observe la posicin en este programa fuente de la directiva INCLUDE. ; Procesador: AT89C52 de Intel ; ; Crystal: 12 MHz ; ;============================================================== ; PROGRAMA PRINCIPAL ; Este programa permite visualizar caracteres hexadecimales en el display de 7 ; segmentos que parpadea un nmero de veces dependiendo del valor de la tecla ; pulsada. El programa espera hasta que el usuario aprete una tecla. ;============================================================== ORG 000H LJMP INICIO $INCLUDE(GTECLADO.ASM); INICIO: NOP MOV A,#0 MOV P2,A ;PUERTO P2 SALIDA SETB P2.7 MOV A,#0F0H MOV P1,A ;P1.0, P1.1, P1.2 y P1.3 salida - filas NOP ;P1.4, P1.5, P1.5 y P1.7 entradas -colum NOP LAZO: LCALL EXPTECLADO ; explora teclado LCALL BUSCAHEX ; busca codigo hex asociado MOV R4,A ; PARPADEA R4 VECES MOV DPTR,#HEXA7SEG ; direccin tabla 7seg MOVC A,@A+DPTR ; lee codigo de 7 segmentos MOV P2,A ; codigo 7 seg a display LZ1: CLR P2.7 ; habilita display CALL DELAY255MS ; ejecuta pausa SETB P2.7 ; deshabilita display CALL DELAY255MS ; pausa DJNZ R4,LZ1 SETB P2.7 ; deshabilita display CALL DEJEPULSAR ; dejar de pulsar tecla

SJMP

LAZO

; repite proceso

;$INCLUDE (GTECLADO.ASM) END ; FIN ;==============================================================;============ ================================================== 4) EL ARCHIVO INCLUDE ES EL SIGUIENTE ; GTECLADO.ASM ; ; SUBRUTINAS PARA GESTION DE UN TECLADO MATRICIAL 4X4 ; ; SUBRUTINA DEJEDEPUSAR. ; SUBRUTINA EXPTECLADO ; SUBRUTINA BUSCAHEX ; SUBRUTINA DELAY20MS para eliminar rebotes en teclado ; SUBRUTINA DELAY255MS para una pausa en display de 7 segmentos ;============================================================== ; TABLA DE CODIGO HEX PARA CADA FILA DEL TECLADO MATRICIAL 4X4 ; ; CODIGO_F0: DB 7H, 8H, 9H, 0FH ; CODIGO_F1: DB 4H, 5H, 6H, 0EH ; CODIGO_F2: DB 1H, 2H, 3H, 0DH ; CODIGO_F3: DB 0H ,0AH,0BH,0CH DEJEPULSAR: ; PERMANECE EN ESTA SUBRUTINA HASTA QUE EL USUARIO LEBERE LA ; TECLA APRETADA Y VUELVA A APRETAR UNA SEGUNDA TECLA, CON ; ESTA ULTIMA ACCION SE SALE DE LA SUBRUTINA. ; ESTO CON LA FINALIDAD DE NO REPETIR LA MISMA TECLA SI FUERA EL ; CASO. ; K1: NOP MOV P1,#0F0H MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,K1 K2: ACALL DELAY20MS MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,OVER SJMP K2 OVER: ACALL DELAY20MS MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,OVER1 SJMP K2 OVER1: RET; ;============================================================== EXPTECLADO:

; Esta subrutina explora contnuamente el teclado matricial 4x4. Si encuentra ; una tecla apretada sale de la subrutina con la direccin en DPTR de la ; Fila de Tabla de cdigo HEX, y adems en el nibble alto del registro A se tiene la ; informacin (un cero) de la columna en la que se encuentra la tecla apretada. ; MOV P1,#0FEH;habilita fila 0. MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,FILA0 ;----------------------------------------------------------------MOV P1,#0FDH;habilita fila 1. MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,FILA1 ;----------------------------------------------------------------MOV P1,#0FBH;habilita fila 2. MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,FILA2 ;----------------------------------------------------------------MOV P1,#0F7H;habilita fila 3. MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,FILA3 LJMP EXPTECLADO ;----------------------------------------------------------------FILA0: ACALL DELAY20MS ; ELIMINA REBOTES MOV DPTR,#CODIGO_F0 ;apunta a fila 0 RET FILA1: ACALL DELAY20MS MOV DPTR,#CODIGO_F1 ; apunta a fila 1 RET FILA2: ACALL DELAY20MS MOV DPTR,#CODIGO_F2 ; apunta a fila 2 RET FILA3: MOV DPTR,#CODIGO_F3 ; apunta a fila 3 RET ;============================================================== BUSCAHEX: ; BUSCA EL CODIGO HEX DE TECLA PULSADA EN LA TABLA. ; DPTR APUNTA A LA FILA DE LA TECLA APRETADA. ; EL NIBBLE ALTO DE REGISTRO A REGISTRA LA COLUMNA (UN 0) DE FILA ; QUE IDENTIFICA A LA COLUMNA DE LA TECLA PULSADA. ; ; SALIDA: SALE CON CODIGO HEX DE TECLA PULSADA EN REGISTRO A RLC A JNC HEX INC DPTR SJMP BUSCAHEX HEX: CLR A MOVC A,@A+DPTR

RET ;============================================================== ; TABLA DE CODIGO HEX PARA CADA FILA DEL TECLADO MATRICIAL 4X4 ORG 90H CODIGO_F0: DB 7H, 8H, 9H, 0FH CODIGO_F1: DB 4H, 5H, 6H, 0EH CODIGO_F2: DB 1H, 2H, 3H, 0DH CODIGO_F3: DB 0H ,0AH,0BH,0CH ;============================================================== ; SUBRUTINA RETARDO DE 20 MILISEGUNDOS usada para eliminar rebotes DELAY20MS: MOV R2,#20 LAZO2: MOV R3,#250 LAZO1: NOP NOP DJNZ R3,LAZO1 DJNZ R2,LAZO2 RET ;============================================================== ; SUBRUTINA RETARDO DE 255 MILISEGUNDOS PARA PAUSA EN DISPLAY DELAY255MS: MOV R2,#255 LAZO4: MOV R3,#250 LAZO3: NOP NOP DJNZ R3, LAZO3 DJNZ R2, LAZO4 RET ;============================================================== ; TABLA CON CODIGO DE 7 SEGMENTOS PARA DISPLAY CATODO COMUN. ORG 0C8H HEXA7SEG: DB 3FH ; 0 DB 06H ; 1 DB 5BH ; 2 DB 4FH ; 3 DB 66H ; 4 DB 6DH ; 5 DB 7CH ; 6 DB 07H ; 7 DB 7FH ; 8 DB 6FH ; 9 DB 77H ; A DB 7CH ; B DB 39H ; C DB 5EH ; D DB 79H ; E DB 71H ; F ;==============================================================

Programa N 2 ;============================================================== ; PRACTICA # 09 ;============================================================== ; ; PROPOSITO: ; Estudiar las subrutinas de gestin de un teclado matricial 4x4. ; Estas subrutinas detectan la tecla pulsada, la identifica y ; le asigna un cdigo Hexadecimal. ; Usar la directiva INCLUDE para incorporar al programa fuente el archivo ; GTECLADO.ASM que contiene las subrutinas de gestin del teclado, ; tambin las subrutinas DELAY20MS y DELAY255MS para la eliminacin de ; rebotes y pausa del display respectivamente. ; Observe la posicin en este programa fuente de la directiva INCLUDE. ; Procesador: AT89C52 de Intel ; ; Crystal: 12 MHz ; ;============================================================== ; PROGRAMA PRINCIPAL ; Este programa permite visualizar caracteres hexadecimales en el display de 7 ; segmentos que parpadea un nmero de veces dependiendo del valor de la tecla ; pulsada. El programa espera hasta que el usuario aprete una tecla. ;============================================================== ORG 000H LJMP INICIO $INCLUDE(GTECLADO.ASM); INICIO: NOP MOV A,#0 MOV P2,A ;PUERTO P2 SALIDA SETB P2.7 MOV A,#0F0H MOV P1,A ;P1.0, P1.1, P1.2 y P1.3 salida - filas NOP ;P1.4, P1.5, P1.5 y P1.7 entradas -colum NOP LAZO: LCALL EXPTECLADO ; explora teclado LCALL BUSCAHEX ; busca codigo hex asociado MOV R4,A ; PARPADEA R4 VECES MOV R5,A MOV DPTR,#HEXA7SEG ; direccin tabla 7seg MOVC A,@A+DPTR ; lee codigo de 7 segmentos MOV P2,A ; codigo 7 seg a display LZ1: CLR P2.7 ; habilita display CALL DELAY255MS ; ejecuta pausa SETB P2.7 ; deshabilita display CALL DELAY255MS ; pausa DJNZ R4,LZ1 SETB P2.7 ; deshabilita display CALL ROTA CALL DEJEPULSAR ; dejar de pulsar tecla

SJMP ROTA: MOV

LAZO

; repite proceso

REPITE:

A,#01H MOV R6,#6 CLR P2.7 ; habilita display MOV P2,A CALL DELAY255MS RL A DJNZ R6,REPITE DJNZ R5,ROTA SETB P2.7 ; deshabilita display RET

;$INCLUDE (GTECLADO.ASM) END ; FIN ;============================================================== ============================================================== FIN DE PRACTICA 09. ==============================================================

Simulaciones Programa Numero 1

Programa Numero 2

Conclusiones
Se implement una rutina extra que rota cada uno de los displays en sentido anti horario el nmero de veces que indica la tecla numrica presionada. Esta subrutina se hizo a base de un incremento en el acumulador A y usando comparadores para verificar si el nmero de vueltas se ha cumplido, utilizamos la directiva INCLUDE para modular el programa principal y poder incluirle cdigo, funciones y macros para ser llamados y usarlos desde el programa principal. Para controlar el teclado, los puertos del C conectados a las filas se programan como salidas y los conectados a las columnas del teclado se programan como entradas, tambin se activan las resistencias de polarizacin internas en los puertos de salida .Esto se hace mediante la llamada a la etiqueta "KB_Port" (Configura los puertos B del PIC para ser usados con el teclado) que inicializa los puertos para ser usados con el teclado matricial. Un teclado matricial es un simple arreglo de botones conectados en filas y columnas, de modo que se pueden leer varios botones con el mnimo nmero de pines requeridos. Un teclado matricial 4x4 solamente ocupa 4 lneas de un puerto para las filas y otras 4 lneas para las columnas, de este modo se pueden leer 16 teclas utilizando solamente 8 lneas de un microcontrolador.

Recomendaciones
Para la utilizacin del teclado se utiliz la ayuda de las tablas y listas que hacen posible el ordenamiento de los cdigos a leer dentro del programa o funcin determinada. Adems, no olvidar que se debe hacer la correcta utilizacin de la directiva INCLUDE para anexar los archivos de cdigo a utilizar y as evitar cometer errores lgicos al compilar el programa lo cual nos demorara en la realizacin de la practica Cuando se arme el circuito en PROTEUS y se utilicen buses de datos para la conexin de las salidas del microcontrolador AT89C52 con el display de 7 segmentos tener mucho cuidado al asignar nombres a cada cable porque si no el circuito de seguro no funcionar y se podra sospechar de algn error en el programa ejecutable cuando no sera as

Вам также может понравиться