3.1 Introducción Otro de los periféricos especiales que se utilizan en los proyectos con microcontroladores es el teclado matricial. Vienen generalmente en dos presentaciones: 3x4 y 4x4. Donde el primer número indica las cantidades de columnas y el segundo las cantidades de filas. Por ejemplo 3x4 significa 3 columnas por 4 filas, para un total de 12 12 teclas.
Teclado 3x4
Teclado 4x4
Esta es una conexión típica entre un teclado y un microcontrolador:
Sin embargo si se activan las resistencias pull-ups del puerto B no se hace necesario la conexión de las resistencias en el circuito anterior. Los microcontroladores PICs han dispuesto de una interrupción por cambio de nivel en cualquiera cualquiera de los pines RB4 a RB7, lo cual resulta ideal para conectarse con un teclado matricial, ya que se puede preparar una función (subrutina) de interrupción por esta causa. El compilador de C posee el driver KBD.c para manejar un teclado 3x4. Las funciones que incorporan son las siguientes: kbd_init ( ) Inicializa el sistema para manejo del teclado. Debe ser la primera función en el programa. kbd_getc ( ) Devuelve el valor de la tecla pulsada en función de la tabla que tiene programada.
3.2 Desarrollo. a) Realice la siguiente simulación con el código propuesto de una cerradura electrónica. #include <16F877A.h> #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock= 4000000) #define LCD_ENABLE_PIN PIN_B0 #define LCD_RS_PIN PIN_B1 #define LCD_RW_PIN PIN_B2 #define LCD_DATA4 PIN_B4 #define LCD_DATA5 PIN_B5 #define LCD_DATA6 PIN_B6 #define LCD_DATA7 PIN_B7 #include #include #rom 0x2100={'7','2','3'} void main() { char k; int i; char data[3], clave[3]; lcd_init(); kbd_init(); port_b_pullups(TRUE); while (TRUE) { i=0; printf(lcd_putc,"\fpulsar tecla 1\n"); while(i<=2){ k=kbd_getc(); if (k!=0) {data[i]=k; i++; printf(lcd_putc,"\fpulsar tecla %u\n",i+1); } } for (i=0;i<=2;i++) { clave[i]=read_eeprom(i); }
c) Comente el programa anterior para conocer cómo funciona de acuerdo al circuito. d) ¿Cuál es la función de la circuitería que se encuentra en la parte inferior? e) Modifique el programa anterior para hacer uso de un teclado 4x4 y cambie la contraseña de acceso. f) Investigue como modificar el teclado 4x4 que viene por defecto en el Proteus para que se parezca a un teclado hexadecimal como se muestra en la figura superior. 3.3 Trabajo a Entregar a) Modificar el ejercicio anterior de la cerradura para que el usuario pueda modificar la contraseña por defecto, es decir que pueda sobreescribir en la memoria EEPROM del Microcontrolador. b) Modificar el código para poder usar un teclado 4x4 y asi poder usar una contraseña mas compleja. Nota: Para poder hacer esto tienen que modificar la librería kcd.c que se encuentra ubicada en la carpeta donde se encuentra instalado el CCS. Enviar las simulaciones al correo con los correspondientes códigos fuentes bien comentados.