Tarea 9999999
Tarea 9999999
Tarea 9999999
PRODUCTOS
INFORMACIÓN
NUEVOS PRODUCTOS
1. Inicio
2. Blog
3. Programacion de microcontroladores
4. Teclado matricial 4x4 con 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 intención de reducir el número de pines necesarios
para su conexión. Las 16 teclas necesitan sólo 8 pines del microcontrolador, en lugar de los
16 pines que se requerirían para la conexión de 16 teclas independientes.
Para poder utilizar estas funciones se tiene que declarar previamente una variable que
especifica el puerto que se empleará para la conexión del teclado matricial 4x4, como se
observa en los ejemplos de programación. La conexión al PIC16F88 se muestra a
continuación 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.
//Teclado_1.c
// Variable necesaria para la conexión del teclado.
char keypadPort at PORTB;
//Declaración de las 12 variables necesarias para la conexión
//del módulo 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;
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 //Espera por una tecla.
kp=Keypad_Key_Click(); //Lee el número de la tecla y lo guarda en kp.
while (!kp);
switch (kp){
case 1: kp = 49; break; //49 es el código ASCII del número 1.
case 2: kp = 50; break; //50 es el código ASCII del número 2.
case 3: kp = 51; break; //51 es el código ASCII del número 3.
case 4: kp = 65; break; // A
case 5: kp = 52; break; // 4
case 6: kp = 53; break; // 5
case 7: kp = 54; break; // 6
case 8: kp = 66; break; // B
case 9: kp = 55; break; // 7
case 10: kp = 56; break; // 8
case 11: kp = 57; break; // 9
case 12: kp = 67; break; // C
case 13: kp = 42; break; // *
case 14: kp = 48; break; // 0
case 15: kp = 35; break; // #
case 16: kp = 68; break; // D
}
Lcd_Chr_CP(kp); //Presenta el carácter en el LCD.
contador++; //Cuenta el número de pulsaciones.
if (contador==16){ //Si se han efectuado 16 pulsaciones.
contador=0;
Delay_1sec(); //Espera 1 s.
Lcd_Cmd(_LCD_CLEAR); //Borra la pantalla y retorna el cursor al
} //origen.
}
}
INFORMACIÓN DE LA TIENDA
PRODUCTOS
INFORMACIÓN
NUEVOS PRODUCTOS
1. Inicio
2. Blog
3. Programacion de microcontroladores
4. Teclado matricial 4x4 con PIC
Teclado matricial 4x4 con PIC
El teclado matricial (teclado 4x4) es muy empleado en el desarrollo de proyectos con
microcontroladores PIC y encuentra aplicación en el ingreso de datos alfanuméricos de
manera manual, en aquellos casos en que el uso de pulsadores simples (botones) no es lo
más apropiado, ya sea por la presentación final del producto o por la restricción del número
de líneas de entrada del microcontrolador. Recibe el nombre debido a que tiene 16 teclas
formando una matriz que normalmente representan las cifras del sistema de numeración
hexadecimal.
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 intención de reducir el número de pines necesarios
para su conexión. Las 16 teclas necesitan sólo 8 pines del microcontrolador, en lugar de los
16 pines que se requerirían para la conexión de 16 teclas independientes.
Para poder utilizar estas funciones se tiene que declarar previamente una variable que
especifica el puerto que se empleará para la conexión del teclado matricial 4x4, como se
observa en los ejemplos de programación. La conexión al PIC16F88 se muestra a
continuación 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.
//Teclado_1.c
// Variable necesaria para la conexión del teclado.
char keypadPort at PORTB;
//Declaración de las 12 variables necesarias para la conexión
//del módulo 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;
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 //Espera por una tecla.
kp=Keypad_Key_Click(); //Lee el número de la tecla y lo guarda en kp.
while (!kp);
switch (kp){
case 1: kp = 49; break; //49 es el código ASCII del número 1.
case 2: kp = 50; break; //50 es el código ASCII del número 2.
case 3: kp = 51; break; //51 es el código ASCII del número 3.
case 4: kp = 65; break; // A
case 5: kp = 52; break; // 4
case 6: kp = 53; break; // 5
case 7: kp = 54; break; // 6
case 8: kp = 66; break; // B
case 9: kp = 55; break; // 7
case 10: kp = 56; break; // 8
case 11: kp = 57; break; // 9
case 12: kp = 67; break; // C
case 13: kp = 42; break; // *
case 14: kp = 48; break; // 0
case 15: kp = 35; break; // #
case 16: kp = 68; break; // D
}
Lcd_Chr_CP(kp); //Presenta el carácter en el LCD.
contador++; //Cuenta el número de pulsaciones.
if (contador==16){ //Si se han efectuado 16 pulsaciones.
contador=0;
Delay_1sec(); //Espera 1 s.
Lcd_Cmd(_LCD_CLEAR); //Borra la pantalla y retorna el cursor al
} //origen.
}
}
INFORMACIÓN DE LA TIENDA
Av. 10 de Agosto N34-130 y Atahualpa
Quito Pichincha (Quito)
Ecuador
Llámenos: 243-0352 Escríbanos: tecmikro@gmail.com
NUESTRA EMPRESA
Información
Productos
Nuevos productos
Mapa del sitio
Blog