Electronica, Microcontroladores y Psicología
  Teclado Matricial 4x4
 

Los teclados matriciales son quizás los dispositivos más utilizados a la hora de crear interfaces que permitan al usuario enviar datos o parámetros al uControlador. Su presentación varia dependiendo de su finalidad y del fabricante, generalmente los más utilizados en proyectos son los 4X3 y 4X4.

 

Básicamente los teclados matriciales son un conjunto de pulsadores interconectados de forma matricial, permitiendo así que se puedan conectar utilizando el mínimo de pines requeridos. Para leer estos dispositivos se realiza un barrido fila por fila y columna por columna identificando de ésta forma qué pulsador se ha activado.

 

La forma de conectarlo al PIC será la siguiente:

 

 

 

Nota: Tengan en cuenta que en el puerto donde se conecte el teclado se deben configurar adecuadamente los pines de entrada y salida correspondientes.

 

El barrido se hace de la siguiente manera, se pone un 1 en la Fila 1 y se pregunta por el valor de cada una de las columnas, cada vez que se haga esto se irá incrementando un contador, si ninguna de las columnas fue activada se proseguirá con la siguiente  Fila y así sucesivamente hasta completar la matriz, si al completarla no se ha presionado ningún pulsador entonces se coloca el contador a cero y se repite el procedimiento.

 

 

A continuación coloco la subrutina o función para leer un teclado matricial:

 

 

 

int const KEYS[16] = {1,2,3,0x0A,4,5,6,0x0B,7,8,9,0x0C,0x0E,0,0x0F,0x0D};

int TECLA=0;

int control=0b00010000;

int F=0;

#byte portb=0x06

#bit RB0=6.0

#bit RB1=6.1

#bit RB2=6.2

#bit RB3=6.3

 

lee_tec()                                                                    

{

TECLA=0X10;

while (TECLA==0x10)

{

set_tris_b(0b00001111);

portb=(control);

 

if(RB0==1)

{while(RB0==1){}

TECLA=KEYS[F];

portb=(0x00);}

F++;

 

if(RB1==1)

{while(RB1==1){}

TECLA=KEYS[F];

portb=(0x00);}

F++;

 

if(RB2==1)

{while(RB2==1){}

TECLA=KEYS[F];

portb=(0x00);}

F++;

 

if(RB3==1)

{while(RB3==1){}

TECLA=KEYS[F];

portb=(0x00);}

F++;

 

control=control*2;

delay_us(500);

if(control==0)

{control=0b00010000;

F=0;}

}

}

 

 

Copien el código tal como aparece y péguenlo en un archivo aparte a modo de librería, para que lo puedan usar en sus programas. Ahora les muestro un ejemplo de cómo utilizar esta librería. En el ejemplo a continuación leeremos el teclado y mostraremos a través de un display 7 segmentos conectado a PORTA el resultado.

 

 

#include <16f84a.h>

#use delay(clock=4000000,restart_wdt)

#include <tec_2.c>

#byte porta=0x05

 

main()

{set_tris_a(0x00);

set_tris_b(0x00);

output_a(0x00);

output_b(0x00);

 

while(1)

{

porta=lee_tec();           //Mostramos en PORTA el

                                   //resultado de la funcion                      

}

}

 

 

 

El esquema del circuito es el siguiente:

 

 

Nota: Para la simulación utilicé un display que convierte BCD a 7 Segmentos, en caso de hacer el montaje en vivo no olviden colocar el convertidor BCD - 7 Segmentos, al igual que las resistencias.

 

Como ven es realmente sencillo utilizar el teclado y es de una gran utilidad a la hora de realizar interfaces y proyectos de altas prestaciones.

Contenido de la nueva página
 
   
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis