Preview only show first 10 pages with watermark. For full document please download

88428003-lab-3-keypad

   EMBED


Share

Transcript

Tarea: Uso del Teclado (Keypad). 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); } if ((data[0]==clave[0])&&(data[1]==clave[1])&&(data[2]==clave[2])) { printf(lcd_putc,"\fPuerta Abierta"); output_high(PIN_A0); delay_ms(500); output_low(PIN_A0);} else printf(lcd_putc,"\fPuerta Cerrada"); delay_ms(1000); } }  b) Ckto a simular con el código anterior. LCD1 LM016L     S    D    E     S    D    E     V    V    V     1    2    3 U1 13 14 2 3 4 5 6 7 8 9 10 1 OSC1/CLKIN OSC2/CLKOUT RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT RC0/T1OSO/T1CKI RE0/AN5/RD RC1/T1OSI/CCP2 RE1/AN6/WR RC2/CCP1 RE2/AN7/CS RC3/SCK/SCL RC4/SDI/SDA MCLR/Vpp/THV RC5/SDO RC6/TX/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26     1 2 3  A 1 2 3 B 4 5 6 C 7 8 9 0 # D     S    W     0    1    2    3    4    5    6    7     R    R    E     D    D    D    D    D    D    D    D     4    5    6     7    8    9    0    1    2    3    4     1    1    1    1    1 19 20 21 22 27 28 29 30 PIC16F877A RL1 12V BAT1 R1 Q1 12V BD135 1k 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.