Ecriture avec clavier alphanumerique en c

Signaler
Messages postés
1
Date d'inscription
lundi 5 avril 2010
Statut
Membre
Dernière intervention
8 avril 2010
-
Messages postés
6
Date d'inscription
dimanche 24 janvier 2010
Statut
Membre
Dernière intervention
16 juillet 2011
-
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

Messages postés
6
Date d'inscription
dimanche 24 janvier 2010
Statut
Membre
Dernière intervention
16 juillet 2011

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);
}
}