Ecriture avec clavier alphanumerique en c

marmouraa Messages postés 1 Date d'inscription lundi 5 avril 2010 Statut Membre Dernière intervention 8 avril 2010 - 8 avril 2010 à 13:49
ihsenksouri Messages postés 6 Date d'inscription dimanche 24 janvier 2010 Statut Membre Dernière intervention 16 juillet 2011 - 15 déc. 2010 à 17:44
Slt tout le monde,
je veux écrire un programme ne c qui tape des lettres avec un clavier matriciel 12 touches
j'ai une méthode qui est la suivante:
si je presse la touche '2' une fois j'écrit 'a' sur un afficheur lcd
si je presse la touche '2' deux fois j'écrit 'b' sur un afficheur lcd
et aisi de suite
svp quelqu'un aide moi par des liens dans lequel je peux trouver des informations utiles.
merci d'avance.

1 réponse

ihsenksouri Messages postés 6 Date d'inscription dimanche 24 janvier 2010 Statut Membre Dernière intervention 16 juillet 2011
15 déc. 2010 à 17:44
j'ai une methode d'utilise le clavier 12 touche en mode alphanumerique en picc
en utilisant un timer
si se dernier rester a plus que le temps désirer elle va ecrir le numero suivant
exemple:
si je presse la touche '2' une fois s'écrit 'a' sur un afficheur lcd
si je presse la touche '2' deux fois s'écrit 'b' sur un afficheur lcd
et ansi de suite
#include "16F876.h"
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay (clock=10000000)
#USE RS232(BAUD=57600, XMIT=PIN_C6, RCV=PIN_C7,bits = 8, parity = n)
#include <LCDmod.c>
#include <KBDmod.c>
char const touche[10][3]=
{{'X', 'Y', 'Z'},
{'.', '/', ','},
{'A', 'B', 'C'},
{'D', 'E', 'F'},
{'G', 'H', 'I'},
{'J', 'K', 'L'},
{'M', 'N', 'O'},
{'P', 'Q', 'R'},
{'S', 'T', 'U'},
{'V', 'W', ' '}};
char textlu[20];
Void lireclavier_date()
{
int i,long_max;
char k;
int val,jj;
long_max=6;
for(i=0;i<long_max;i++)
{
textlu[i]=0;
}
i=0;
lcd_gotoxy(1,2);

do
{
k=kbd_getc();
if(k!=0)
{
if(k=='#')
{
return;
}
else if (k=='*')
{
if(i>0)
{
i--;
lcd_gotoxy(i+1,2);
textlu[i]=0;
lcd_putc(textlu[i]);
lcd_gotoxy(i+1,2);
}
}
else if(i<long_max)
{
jj = (val*10) + k-48;
if((i==1 && (jj<=0 || jj>31))||(i==3 && (jj<=0 || jj>12))||(i==5 && jj<=0))
{
textlu[i]=0;
i--;
textlu[i]=0;val=0;
lcd_gotoxy(i+1,2);
lcd_putc(textlu[i]);
lcd_gotoxy(i+2,2);
lcd_putc(textlu[i+1]);
lcd_gotoxy(i+1,2);
}
else
{
lcd_gotoxy(i+1,2);
textlu[i]=k;
lcd_putc(textlu[i]);
i++;
val = k-48;
}
}
}
}
while(true);
}
Void lireclavier(int long_max )
{ int i;
char k;
for(i=0;i<long_max;i++)
{
textlu[i]=0;
}
i=0;
lcd_gotoxy(1,2);
do{
k=kbd_getc();
if(k!=0)
{
if(k=='#')
{
return;
}
else if(k=='*')
{
if(i>0)
{
i--;
lcd_gotoxy(i+1,2);
textlu[i]=0;
lcd_putc(textlu[i]);
lcd_gotoxy(i+1,2);
}
}
else if(i!=long_max)
{
lcd_gotoxy(i+1,2);
textlu[i]=k;
lcd_putc(textlu[i]);
i++;
}
}
}while(true);
}
Void lireclavier_alpha(int long_max )
{
long temps;
int i;
char k;
char k_prec;
char N;
for (i = 0;i< long_max;i++)
{
textlu[i] = 0;
}
setup_timer_1 (T1_INTERNAL|T1_DIV_BY_8);
set_timer1 (0);
k_prec = 0;
N = 0;
temps = 0;
i = 0;
lcd_gotoxy (1, 2) ;
do
{
k = kbd_getc ();

if (k != 0)
{
if (k == '#')
{
return;
}

else if (k == '*')
{
if (i > 0)
{
i--;
lcd_gotoxy (i + 1, 2) ;
textlu[i] = 0;
lcd_putc (textlu[i]);
lcd_gotoxy (i + 1, 2) ;
}
}

else if (i != long_max)
{
if (k == k_prec)
{
if (temps < 5)
{
if (N == 4)
{
N = 1;
}

else
{
N++;
}
}

else
{
k_prec = k ;
N = 1;
i++;
}
}

else
{
k_prec = k ;
N = 1;
i++;
}

temps = 0 ;

if (N == 1)
{
textlu[i-1]=k;

}

else
{
textlu[i-1]=touche[k - 48][N - 2];

}

lcd_gotoxy (i,2) ;
lcd_putc(textlu[i-1]) ;
}
}

if (get_timer1 () > 65000)
{
temps++;
set_timer1 (0);
}
}while (true);
}

Void main()
{
lcd_init();
kbd_init();

lcd_send_byte(0,0x0F);
lcd_putc("\f Ksouri ihsen ");
lcd_putc("\n ing info & elect ");
delay_ms(1500);
while(true)
{
lcd_putc("\f matricule: ");
lireclavier(10);
}
}
0
Rejoignez-nous