Академический Документы
Профессиональный Документы
Культура Документы
/* *****************************************************************************
** Nombre : teclado4x4.C
** Target : PIC18F4620
** Compilador : Microchip C18
** IDE : Microchip MPLAB
** XTAL : 20MHZ
** Autor :
**
** ****************************************************************************/
#include <p18f4620.h>
#pragma config OSC=HS,PWRT=ON,MCLRE=OFF,LVP=OFF,WDT=OFF
#include <delays.h>
#include <stdio.h>
Función que lee el teclado.
unsigned char KeyScan(){
unsigned char k,j,dt=0;
k=0b11101111;
for(j=0;j<4;j++){
PORTB=k;
Delay10KTCYx(2);
switch (PORTB){
case 0x77: dt='D'; break;
case 0xB7: dt='C'; break;
case 0xD7: dt='B'; break;
case 0xE7: dt='A'; break;
case 0x7B: dt='E'; break;
case 0xBB: dt='3'; break;
case 0xDB: dt='6'; break;
case 0xEB: dt='9'; break;
case 0x7D: dt='F'; break;
case 0xBD: dt='2'; break;
case 0xDD: dt='5'; break;
case 0xED: dt='8'; break;
case 0x7E: dt='0'; break;
case 0xBE: dt='1'; break;
case 0xDE: dt='4'; break; (Este teclado no corresponde a los
case 0xEE: dt='7'; break; valores mostrados en el switch)
}
if(dt!=0){break;}
k<<=1;
}
return dt;
}
FUNCION PRNCIPAL
void main(void){
TRISB=0x0f; // Configura el sentido de transferencia del puerto.
PORTB=0x0f; // Define un valor en el puerto.
ADCON1 = 0X0F; // Desactiva los canales analógicos
INTCON2bits.RBPU = 0; // Conecta las resistencias Pull-Up del puerto B.
lcd_init(); // Configura el LCD
lcd_gotoxy(1,1);
lcd_putrs("Teclado 4x4\n"); // Cartel inicial
lcd_putrs("Tecla:?");
while(1){
if(KeyScan()!=0){ // Pregunta si hay alguna tecla.
lcd_gotoxy(7,2);
stdout =_H_USER;
1
printf("%c ",KeyScan()); // Imprime la tecla apretada.
while(KeyScan()!=0){ // Espera que suelte la tecla.
Delay10KTCYx(5);
}
}
}
}
• 1 Microcontrolador PIC18F4620.
• 1 Teclado Matricial 4x4
• 1 Cristal de 20Mhz.
• 2 Condensadores de 18pF o 20pF.
• 1 Pantalla LCD 16x2 Hitachi 44780 o compatible
• 1 Resistencia de 1K.
• 1 Condensador de ,01uF y 10uF
• 1 Protoboard.
• Cables de conexión.
• Placa programadora de PIC´s.
• Fuente de alimentación de 5 voltios.
2
Este trabajo muestra una forma sencilla de manejar un teclado con
matriz 4x4 pero fácilmente adaptable a cualquier matriz.
El corazón del programa es la función KeyScan.