(Colaboración de Rojas Lara)
Este programa presenta cómo utilizar un teclado matricial de 4×4 y un LCD para que se comporten como el teclado alfanumérico de un celular.Obviamente, es perfectible.
#include <avr/io.h>
#include “lcd.c”
#include “teclado.h”
#include <util/delay.h>
int main (void){
char casilla=0;
long x;
long numero;
char Y=0;
char simbolo1=’.';
char simbolo2=’,';
char simbolo3=’!';
char simbolo4=’?';
char simbolo5=’ ‘;
char NUMERO1=’1′;//
char letra1=’A';
char letra2=’B';
char letra3=’C';
char NUMERO2=’2′;//
char letra4=’D';
char letra5=’E';
char letra6=’F';
char NUMERO3=’3′;//
char letra7=’G';
char letra8=’H';
char letra9=’I';
char NUMERO4=’4′;//
char letra10=’J';
char letra11=’K';
char letra12=’L';
char NUMERO5=’5′;//
char letra13=’M';
char letra14=’N';
char letra15=’O';
char NUMERO6=’6′;//
char letra16=’P';
char letra17=’Q';
char letra18=’R';
char letra19=’S';
char NUMERO7=’7′;//
char letra20=’T';
char letra21=’U';
char letra22=’V';
char NUMERO8=’8′;//
char letra23=’W';
char letra24=’X';
char letra25=’Y';
char letra26=’Z';
char NUMERO9=’9′;//
char Z=simbolo5;
char palabra[16]={Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z};
lcd_init();
enter_confi();
while(1){
do{
x=teclado_4x4();
if (x==14){if(casilla>0){{casilla=casilla-1;palabra[casilla]=simbolo5;casilla=casilla-1;}}
lcd_cls();
lcd_goto(LINE2);
lcd_putch(palabra[0]);
lcd_putch(palabra[1]);
lcd_putch(palabra[2]);
lcd_putch(palabra[3]);
lcd_putch(palabra[4]);
lcd_putch(palabra[5]);
lcd_putch(palabra[6]);
lcd_putch(palabra[7]);
lcd_putch(palabra[8]);
lcd_putch(palabra[9]);
lcd_putch(palabra[10]);
lcd_putch(palabra[11]);
lcd_putch(palabra[12]);
lcd_putch(palabra[13]);
lcd_putch(palabra[14]);
lcd_putch(palabra[15]);
casilla=casilla+1;x=0;
lcd_goto(LINE1);}
if (x!=15 &&x!=10 &&x!=11 &&x!=12 &&x!=13){
numero=numero*10;
numero=numero+x;
if (numero==1){
lcd_goto(LINE1);
lcd_putch(simbolo1);
Y=simbolo1;}
if (numero==11){
lcd_goto(LINE1);
lcd_putch(simbolo2);
Y=simbolo2;}
if (numero==111){
lcd_goto(LINE1);
lcd_putch(simbolo3);
Y=simbolo3;}
if (numero==1111){
lcd_goto(LINE1);
lcd_putch(simbolo4);
Y=simbolo4;}
if (numero==11111){
lcd_goto(LINE1);
lcd_putch(NUMERO1);
Y=NUMERO1;}
if (numero==111111){
numero=0;}
//::::::::::::::::::::::::::::::::::::
if (numero==2){
lcd_goto(LINE1);
lcd_putch(letra1);
Y=letra1;}
if (numero==22){
lcd_goto(LINE1);
lcd_putch(letra2);
Y=letra2;}
if (numero==222){
lcd_goto(LINE1);
lcd_putch(letra3);
Y=letra3;}
if (numero==2222){
lcd_goto(LINE1);
lcd_putch(NUMERO2);
Y=NUMERO2;}
if (numero==22222){
numero=0;}
//:::::::::::::::::::::::::::::::::::
if (numero==3){
lcd_goto(LINE1);
lcd_putch(letra4);
Y=letra4;}
if (numero==33){
lcd_goto(LINE1);
lcd_putch(letra5);
Y=letra5;}
if (numero==333){
lcd_goto(LINE1);
lcd_putch(letra6);
Y=letra6;}
if (numero==3333){
lcd_goto(LINE1);
lcd_putch(NUMERO3);
Y=NUMERO3;}
if (numero==33333){
numero=0;}
//::::::::::::::::::::::::::::::::::::::::
if (numero==4){
lcd_goto(LINE1);
lcd_putch(letra7);
Y=letra7;}
if (numero==44){
lcd_goto(LINE1);
lcd_putch(letra8);
Y=letra8;}
if (numero==444){
lcd_goto(LINE1);
lcd_putch(letra9);
Y=letra9;}
if (numero==4444){
lcd_goto(LINE1);
lcd_putch(NUMERO4);
Y=NUMERO4;}
if (numero==44444){
numero=0;}
//:::::::::::::::::::::::::::::::::::::::
if (numero==5){
lcd_goto(LINE1);
lcd_putch(letra10);
Y=letra10;}
if (numero==55){
lcd_goto(LINE1);
lcd_putch(letra11);
Y=letra11;}
if (numero==555){
lcd_goto(LINE1);
lcd_putch(letra12);
Y=letra12;}
if (numero==5555){
lcd_goto(LINE1);
lcd_putch(NUMERO5);
Y=NUMERO5;}
if (numero==55555){
numero=0;}
//::::::::::::::::::::::::::::::::::::::::
if (numero==6){
lcd_goto(LINE1);
lcd_putch(letra13);
Y=letra13;}
if (numero==66){
lcd_goto(LINE1);
lcd_putch(letra14);
Y=letra14;}
if (numero==666){
lcd_goto(LINE1);
lcd_putch(letra15);
Y=letra15;}
if (numero==6666){
lcd_goto(LINE1);
lcd_putch(NUMERO6);
Y=NUMERO6;}
if (numero==66666){
numero=0;}
//:::::::::::::::::::::::::::::::::::::::::
if (numero==7){
lcd_goto(LINE1);
lcd_putch(letra16);
Y=letra16;}
if (numero==77){
lcd_goto(LINE1);
lcd_putch(letra17);
Y=letra17;}
if (numero==777){
lcd_goto(LINE1);
lcd_putch(letra18);
Y=letra18;}
if (numero==7777){
lcd_goto(LINE1);
lcd_putch(letra19);
Y=letra19;}
if (numero==77777){
lcd_goto(LINE1);
lcd_putch(NUMERO7);
Y=NUMERO7;}
if (numero==777777){
numero=0;}
//::::::::::::::::::::::::::::::::::::::::::::::
if (numero==8){
lcd_goto(LINE1);
lcd_putch(letra20);
Y=letra20;}
if (numero==88){
lcd_goto(LINE1);
lcd_putch(letra21);
Y=letra21;}
if (numero==888){
lcd_goto(LINE1);
lcd_putch(letra22);
Y=letra22;}
if (numero==8888){
lcd_goto(LINE1);
lcd_putch(NUMERO8);
Y=NUMERO8;}
if (numero==88888){
numero=0;}
//:::::::::::::::::::::::::::::::::::::::::::::::::
if (numero==9){
lcd_goto(LINE1);
lcd_putch(letra23);
Y=letra23;}
if (numero==99){
lcd_goto(LINE1);
lcd_putch(letra24);
Y=letra24;}
if (numero==999){
lcd_goto(LINE1);
lcd_putch(letra25);
Y=letra25;}
if (numero==9999){
lcd_goto(LINE1);
lcd_putch(letra26);
Y=letra26;}
if (numero==99999){
lcd_goto(LINE1);
lcd_putch(NUMERO9);
Y=NUMERO9;}
if (numero==999999){
numero=0;}
//:::::::::::::::::::::::::::::::::::::::::::::::::
if (numero==0){
lcd_goto(LINE1);
lcd_putstr(“_”);
Y=simbolo5;}
//:::::::::::::::::::::::::::::::::::::::::::::::::::
if (numero!=1 &&numero!=11 &&numero!=111 &&numero!=1111 &&numero!=11111 &&
numero!=2 &&numero!=22 &&numero!=222 &&numero!=2222 &&numero!=22222 &&
numero!=3 &&numero!=33 &&numero!=333 &&numero!=3333 &&numero!=33333 &&
numero!=4 &&numero!=44 &&numero!=444 &&numero!=4444 &&numero!=44444 &&
numero!=5 &&numero!=55 &&numero!=555 &&numero!=5555 &&numero!=55555 &&
numero!=6 &&numero!=66 &&numero!=666 &&numero!=6666 &&numero!=66666 &&
numero!=7 &&numero!=77 &&numero!=777 &&numero!=7777 &&numero!=77777 &&numero!=777777 &&
numero!=8 &&numero!=88 &&numero!=888 &&numero!=8888 &&numero!=88888 &&
numero!=9 &&numero!=99 &&numero!=999 &&numero!=9999 &&numero!=99999 &&numero!=999999 &&
numero!=14 &&numero!=0){
x=15;}
}
}while(x!=15 &&x!=10 &&x!=11 &&x!=12 &&x!=13);
numero=0;
lcd_cls();
lcd_goto(LINE2);
palabra[casilla]=Y;
lcd_putch(palabra[0]);
lcd_putch(palabra[1]);
lcd_putch(palabra[2]);
lcd_putch(palabra[3]);
lcd_putch(palabra[4]);
lcd_putch(palabra[5]);
lcd_putch(palabra[6]);
lcd_putch(palabra[7]);
lcd_putch(palabra[8]);
lcd_putch(palabra[9]);
lcd_putch(palabra[10]);
lcd_putch(palabra[11]);
lcd_putch(palabra[12]);
lcd_putch(palabra[13]);
lcd_putch(palabra[14]);
lcd_putch(palabra[15]);
casilla=casilla+1;x=0;
lcd_goto(LINE1);
}
return 0;
}