Sie sind auf Seite 1von 5

Teclado matricial 4x4 con los microcontroladores

PIC
Extracto
del
Captulo
VIII
del
libro
Cmo programar en lenguaje C los microcontroladores PIC16F88, 16F628A y
16F877A. 2da edicin.
En este captulo se har el estudio del teclado matricial 4x4 (figura 8.1), que son
los ms utilizados en el desarrollo de proyectos con microcontroladores PIC y que
tienen su aplicacin en el ingreso de datos de manera manual por parte del
usuario, en aquellos casos en que el empleo de pulsadores simples no es lo ms
apropiado, ya sea por la presentacin final del producto o por la restriccin del
nmero de lneas de entrada de los microcontroladores PIC.
El teclado matricial 4x4 est constituido por una matriz de pulsadores dispuestos
en filas (A,B,C,D) y columnas (1,2,3,4), con la intencin de reducir el nmero de
pines necesarios para su conexin. Las 16 teclas necesitan slo 8 pines del
microcontrolador, en lugar de los 16 pines que se requeriran para la conexin de
16 teclas independientes.

Figura 8.1 Teclado matricial 4x4


Su funcionamiento es muy sencillo, cuando se presiona una tecla, se conectan
internamente la fila y columna correspondientes; por ejemplo, al presionar la tecla
7 se conectan la fila C y la columna 1. Si no hay ninguna tecla presionada, las
filas estn desconectadas de las columnas.

Librera Keypad4x4 de mikroC PRO para teclado matricial 4x4

En la tabla 8.1 se describen las funciones que se incluyen en la librera Keypad4x4


de mikroC PRO para el manejo del teclado matricial 4x4.

Para poder utilizar estas funciones se tiene que declarar previamente una variable
que especifica el puerto que se emplear para la conexin del teclado matricial
4x4, como se observa en los ejemplos de programacin. La conexin a los
microcontroladores PIC16F88, 16F628A y 16F877A se muestra en las figuras
8.2.1, 8.2.2 y 8.2.3 donde se ha empleado el puerto B: las columnas se conectan
al nibble bajo, mientras que las filas se conectan al nibble alto del mismo puerto.

Figura 8.2.1 Conexin de un teclado matricial 4x4 a los microcontroladores


PIC16F88 y 16F628A

PIC16F88 en C (mikroC PRO) - Ejemplo


Estos ejemplos se pueden probar en el circuito de la figura 8.2.1 y corresponden al
microcontrolador PIC16F88. El cdigo fuente para los microcontroladores
PIC16F628A y 16F877A se encuentra en las carpetas correspondientes que
acompaan a este libro. Debe notarse que el cdigo que se obtiene al presionar
una tecla es un nmero entero entre 1 y 16, de izquierda a derecha y de arriba
abajo, comenzando por la fila A. Este nmero se emplea para asociarle el smbolo
respectivo impreso en el teclado matricial 4x4 (por medio de los cdigos ASCII),
para su uso posterior en el programa. Esto se detalla en el siguiente ejemplo.
Ejemplo-Teclado_1.c: Lo que se va escribiendo por el teclado es visualizado en la
primera lnea del LCD. Cuando llega al final se borra todo y comienza de nuevo.
//Teclado_1.c
// Variable necesaria para la conexin del teclado.
char keypadPort at PORTB;
//Declaracin de las 12 variables necesarias para la conexin
//del mdulo LCD.
sbit LCD_RS at RA4_bit;
sbit LCD_EN at RA6_bit;
sbit LCD_D4 at RA0_bit;
sbit LCD_D5 at RA1_bit;
sbit LCD_D6 at RA2_bit;
sbit LCD_D7 at RA3_bit;
sbit LCD_RS_Direction
sbit LCD_EN_Direction
sbit LCD_D4_Direction
sbit LCD_D5_Direction
sbit LCD_D6_Direction
sbit LCD_D7_Direction
// Fin de declaracin
char kp, contador=0;

at
at
at
at
at
at
de

TRISA4_bit;
TRISA6_bit;
TRISA0_bit;
TRISA1_bit;
TRISA2_bit;
TRISA3_bit;
variables de conexin.

void main(){
OSCCON=0x40;
//Oscilador interno a 1MHz (TCI=4 us).
while (OSCCON.IOFS==0); //Esperar mientras el oscilador est inestable.
ANSEL=0x00;
//Bits AN6:AN0 como E/S digital.
Keypad_Init();
//Inicializa el teclado.
Lcd_Init();
//Inicializa el LCD.
Lcd_Cmd(_LCD_CLEAR);
//Borra el display.
Lcd_Cmd(_LCD_CURSOR_OFF);
//Apaga el cursor.
while (1){
kp=0;
do
kp=Keypad_Key_Click();
while (!kp);
switch (kp){

//Espera por una tecla.


//Lee el nmero de la tecla y lo guarda en kp.

case
case
case
case
case
case
case
case
case
case
case
case
case
case
case
case

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:

kp
kp
kp
kp
kp
kp
kp
kp
kp
kp
kp
kp
kp
kp
kp
kp

=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

49;
50;
51;
65;
52;
53;
54;
66;
55;
56;
57;
67;
42;
48;
35;
68;

break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;

}
Lcd_Chr_CP(kp);
contador++;
if (contador==16){
contador=0;
Delay_1sec();
Lcd_Cmd(_LCD_CLEAR);
}

}
}

//49 es el cdigo ASCII del nmero 1.


//50 es el cdigo ASCII del nmero 2.
//51 es el cdigo ASCII del nmero 3.
// A
// 4
// 5
// 6
// B
// 7
// 8
// 9
// C
// *
// 0
// #
// D
//Presenta el carcter en el LCD.
//Cuenta el nmero de pulsaciones.
//Si se han efectuado 16 pulsaciones.
//Espera 1 s.
//Borra la pantalla y retorna el cursor al
//origen.

Temas relacionados que tambin encontrars en este libro:

Otros ejemplos de programacin del teclado matricial 4x4

Das könnte Ihnen auch gefallen