Buenas tardes compañeros del foro.
Estoy haciendo un juego y la parte primordial es la interfase LDC y teclado... con el usiario.
El problema que tengo es que al oprimir una tecla del teclado matricial 3x4, en la LCD me aparece como si hubiera oprimido la misma tecla muchas veces, o aparecen espacios en la LCD.
Estoy utilizando un PIC16F628A.
Este es mi código:
La LCD están al mismo puerto B que el teclado.
El teclado que estoy usando lo hice yo con push-buttons nuevos.
No sé si la solución sea agregar capacitores en paralelo con cada interruptor
Sin más de momento espero me puedan echar una mano.
GRACIAS
Estoy haciendo un juego y la parte primordial es la interfase LDC y teclado... con el usiario.
El problema que tengo es que al oprimir una tecla del teclado matricial 3x4, en la LCD me aparece como si hubiera oprimido la misma tecla muchas veces, o aparecen espacios en la LCD.
Estoy utilizando un PIC16F628A.
Este es mi código:
Código:
lcd_init(); // Se inicializa la pantalla
kbd_init();
while(1){
k=0; // Contador de teclas oprimidas
claveOK=0; // Se limpia la bandera de clave correcta
do{ // Ciclo infinito
tecla=kbd_getc();
if(tecla >= '0' && tecla <= '9'){ // Si se oprime una tecla numérica
printf(lcd_putc,"%c",tecla);
clave[k]=tecla; // Se guarda el valor de la tecla oprimida
k=k+1; // Se incrementa el contador de teclas
if(k == d){ // Si ya se oprimieron 4 teclas,
for(k=0;k<=d-1;k++){ // Ciclo for de lectura de la EEPROM
pass[k]=read_eeprom(k)+48; // Se lee el password de la EEPROM
// cada valor se convierte a ASSCII
}
if(clave[0]== pass[0] && // Si la clave es correcta,
clave[1]== pass[1] &&
clave[2]== pass[2] &&
clave[3]== pass[3] &&
clave[4]== pass[4] &&
clave[5]== pass[5] &&
clave[6]== pass[6] &&
clave[7]== pass[7] &&
clave[8]== pass[8] &&
clave[9]== pass[9] &&
clave[10]== pass[10] &&
clave[11]== pass[11] &&
clave[12]== pass[12] &&
clave[13]== pass[13] &&
clave[14]== pass[14] &&
clave[15]== pass[15])
{
claveOK=1; // Se activa la bandera claveOK para salir del
// ciclo do-while
delay_ms(1000); // Espera un segundo segundo
lcd_putc('\f'); // Se borra la Pantalla
lcd_putc("BOMB DROPPED ;)");
}
else{ // Si la clave no es correcta,
delay_ms(1000); // Espera un segundo segundo
lcd_putc('\f'); // Se borra la Pantalla
lcd_putc("INCORRECT");
Lcd_gotoxy(1,2); // Se ubica el cursor al principio de la línea 2
lcd_putc("PASSWORD!"); // Se borra la línea
delay_ms(1000); // Espera 1 segundo
k=0; // Se limpia el contador de números introducidos
lcd_putc('\f'); // Se borra la Pantalla
lcd_putc("DROP THE BOMB:"); // Se imprime mensaje de para la activación
lcd_gotoxy(1,2); // Se ubica el cursor en la posición 9 de la línea 2
}
}
}
}while(claveOK == 0);
}
La LCD están al mismo puerto B que el teclado.
El teclado que estoy usando lo hice yo con push-buttons nuevos.
No sé si la solución sea agregar capacitores en paralelo con cada interruptor
Sin más de momento espero me puedan echar una mano.
GRACIAS
Última edición: