Tare A

3
Tarea: Uso del Teclado (Keyboard). 4.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 teclas. 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 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. Teclado 3x4 Teclado 4x4

Transcript of Tare A

Page 1: Tare A

Tarea: Uso del Teclado (Keyboard).

4.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 teclas.

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 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.

Teclado 3x4 Teclado 4x4

Page 2: Tare A

4.2 Desarrollo.

a) Realice la siguiente simulación con el código propuesto

#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);

} }

Page 3: Tare A

b) Ckto a simular con el código anterior.

RA0/AN02

RA1/AN13

RA2/AN2/VREF-/CVREF4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RE0/AN5/RD8

RE1/AN6/WR9

RE2/AN7/CS10

OSC1/CLKIN13

OSC2/CLKOUT14

RC1/T1OSI/CCP216

RC2/CCP117

RC3/SCK/SCL18

RD0/PSP019

RD1/PSP120

RB7/PGD40

RB6/PGC39

RB538

RB437

RB3/PGM36

RB235

RB134

RB0/INT33

RD7/PSP730

RD6/PSP629

RD5/PSP528

RD4/PSP427

RD3/PSP322

RD2/PSP221

RC7/RX/DT26

RC6/TX/CK25

RC5/SDO24

RC4/SDI/SDA23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI15

MCLR/Vpp/THV1

U1

PIC16F877A

1 2 3

4 5 6

7 8 9

0 #

1 2 3

A

B

C

D

D7

14

D6

13

D5

12

D4

11

D3

10

D2

9D

18

D0

7

E6

RW

5R

S4

VS

S1

VD

D2

VE

E3

LCD1LM016L

R1

1k

Q1BD135

RL112V

BAT112V

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.

4.3 Enviarme las simulaciones al correo con los correspondientes códigos fuentes bien comentados.