Sie sind auf Seite 1von 3

Tarea: Uso del Teclado (Keypad). 3.

1 Introduccin Otro de los perifricos especiales que se utilizan en los proyectos con microcontroladores es el teclado matricial. Vienen generalmente en dos presentaciones: 3x4 y 4x4. Donde el primer nmero 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 teclas.

Teclado 3x4

Teclado 4x4

Esta es una conexin tpica entre un teclado y un microcontrolador:

Sin embargo si se activan las resistencias pull-ups del puerto B no se hace necesario la conexin de las resistencias en el circuito anterior. Los microcontroladores PICs han dispuesto de una interrupcin por cambio de nivel en cualquiera de los pines RB4 a RB7, lo cual resulta ideal para conectarse con un teclado matricial, ya que se puede preparar una funcin (subrutina) de interrupcin 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 funcin en el programa. kbd_getc ( ) Devuelve el valor de la tecla pulsada en funcin de la tabla que tiene programada.

3.2 Desarrollo. a) Realice la siguiente simulacin con el cdigo propuesto de una cerradura electrnica. #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 <lcd.c> #include <kbd.c> #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 cdigo anterior.


LCD1
LM016L

VSS VDD VEE

RS RW E 4 5 6

1 2 3

13 14 2 3 4 5 6 7 8 9 10 1

OSC1/CLKIN OSC2/CLKOUT

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 PIC16F877A

RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30

1 4 7

2 5 8 0

3 6 9 #

RL1
12V

BAT1 R1
1k

Q1
BD135

12V

c) Comente el programa anterior para conocer cmo funciona de acuerdo al circuito. d) Cul es la funcin de la circuitera que se encuentra en la parte inferior? e) Modifique el programa anterior para hacer uso de un teclado 4x4 y cambie la contrasea 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 contrasea por defecto, es decir que pueda sobreescribir en la memoria EEPROM del Microcontrolador. b) Modificar el cdigo para poder usar un teclado 4x4 y asi poder usar una contrasea mas compleja. Nota: Para poder hacer esto tienen que modificar la librera kcd.c que se encuentra ubicada en la carpeta donde se encuentra instalado el CCS. Enviar las simulaciones al correo con los correspondientes cdigos fuentes bien comentados.

U1

7 8 9 10 11 12 13 14

D0 D1 D2 D3 D4 D5 D6 D7

Das könnte Ihnen auch gefallen