Teclado matricial

Solo disponible en BuenasTareas
  • Páginas : 5 (1077 palabras )
  • Descarga(s) : 0
  • Publicado : 14 de octubre de 2010
Leer documento completo
Vista previa del texto
Instituto Politécnico Nacional
Escuela Superior de Ingenierías Mecánicas y Eléctricas
“Culhuacan”

Teclado matricial

Arquitectura de computadoras

Teclado matricial

Objetivo: aprender a configurar un teclado matricial de 4x4 y tenga comunicación con la atmel y muestre los datos en el LCD

Introducción

Teclado Matricial 4×4
Un teclado matricial es un simple arreglo de botonesconectados en filas y columnas, de modo que se pueden leer varios botones con el mínimo número de pines requeridos. Un teclado matricial 4×4 solamente ocupa 4 líneas de un puerto para las filas y otras 4 líneas para las columnas, de este modo se pueden leer 16 teclas utilizando solamente 8 líneas de un microcontrolador. Si asumimos que todas las columnas y filas inicialmente están en alto (1 lógico),la pulsación de un botón se puede detectar al poner cada fila a en bajo (0 lógico) y checar cada columna en busca de un cero, si ninguna columna está en bajo entonces el 0 de las filas se recorre hacia la siguiente y así secuencialmente.
Un modo simple de detectar la tecla presionada es incrementar una variable con la cuenta de las teclas revisadas, de este modo al detectar una pulsación elvalor de la cuenta será el valor de la tecla presionada. Si al final no se presionó ninguna tecla la variable se pone a cero y la cuenta vuelve a comenzar. El puerto B del microcontrolador 16f628 (así como en el 16f877) viene preparado especialmente para el control de un teclado matricial 4×4. Para tener siempre un valor de 1 lógico en las columnas del teclado (parte alta del puerto B del pic) esnecesario conectar resistencias de pull-up, sin embargo el puerto B cuenta con resistencias de pull-up integradas, de ese modo es posible trabajar con un teclado matricial sin necesidad de ningún componente externo.
Las resistencias de pull-up del puerto B se habilitan poniendo en 0 el bit NOT_RBPU del registro OPTION_REG.Al método aquí expuesto para detectar la pulsación de una tecla en un tecladomatricial se le conoce como muestreo secuencial. Existen otros, sin embargo esté es tal vez el más sencillo. En el siguiente ejemplo cada tecla del teclado matricial tiene un valor de 0 a F, valor que se despliega en un display de 7 segmentos.

Diagrama teclado matricial (Se muestra también en qué orden deben de ir columnas y filas en el puerto)

Teclado Matricial como se puede encontrar entiendas de electrónica

Material

* 1 Protoboard
* 1 AT89C51
* 1 display LCD alfanumérico sin back light
* 1 cristal de cuarzo de 20 MHz
* 1 push button
* Teclado matricial 4x4 flexible

Desarrollo

1.- Se realiza el código en lenguaje c, en este se utilizan dos códigos.

Código 1:

#include <AT89X51.H>
#include "lcd.h"

#define lcd_reg P1 //P1 es elregistro donde se ponen los valores del LCD
sbit E=P3^7; //sbit define un bit y el operador "^" define un pin, si se usa la libreria
sbit RS=P3^6; //AT89X51 la declaración queda como P3_7
sbit RW=P3^5;

void lcd_cmd (unsigned char value){
RS=0;
RW=0;
E=0;
E=1;
lcd_reg = value ;
delay_ms(1) ;
E=0;
}

void lcd_dat (unsigned char value){
RS=1;
RW=0;
E=0;
E=1;lcd_reg = value ;
delay_ms(1) ;
E=0;
}

void lcd_dat_1 (unsigned char value){
RS=1;
RW=0;
E=0;
E=1;
lcd_reg = value ;
delay_ms(1) ;
E=0;
}

void init_lcd (){
lcd_cmd(0x38); //Inicial el LCD en modo de 8 bits y caracteres 5x7 dos líneas
lcd_cmd(0x0E); //Activa el cursor
lcd_cmd(6); //Activa el modo de movimiento de cursos de izquierda a derecha
}

void disp_lcd(char str[]){
unsigned char j ;

lcd_cmd(0x80) ; // pone el cursor en la línea de arriba
for(j = 0 ; j < 16 ; j ++){ // escribe en la primera línea
lcd_dat(str[j]) ; // escribe carácter por carácter
}
lcd_cmd(0xc0) ; // pone el cursor en la línea de abajo
for(j = 16 ; j < 32 ; j ++){ // escribe en la segunda línea
lcd_dat(str[j]) ; // escribe carácter por...
tracking img