Está en la página 1de 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

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

8
9
10

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

2
3
4
5
6
7

OSC1/CLKIN
OSC2/CLKOUT

U1
13
14

D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14

RS
RW
E
4
5
6

1
2
3

VSS
VDD
VEE

LM016L

19
20
21
22
27
28
29
30

PIC16F877A

RL1
12V

BAT1
R1

Q1

12V

BD135

1k

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.

También podría gustarte