Matrix Keypad 3X4 C Code

#include<reg51.h>
#include<string.h>
sbit rs = P2^5;
sbit en = P2^6;
unsigned char val[] = {’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’#',’0′,’*',
‘a’,'d’,'g’,'j’,'m’,'p’,’s’,'v’,'y’,'%’,'{’,’[',
'b','e','h','k','n','q','t','w','z','!','}',']‘,
‘c’,'f’,'i’,'l’,'o’,'r’,'u’,'x’,'$’,'_’,'+’,'/’};
void delay()
{
unsigned char i;
for(i = 0;i < 150;i++)
{}
}
void lcd_comm()
{
rs = 0;
}
void lcd_en ()
{
en = 1;
en = 0;
}
void delay_lcd ()
{
int i = 00,j;
for(i = 0;i < 175;i++)
for(j=0;j<498;j++);
}
void timer_delay(int z)
{
int i;
for(i=0;i<z;i++)
{
TMOD=0×10;//1 sec delay
TH1=0×01;
TL1=0×08;
TR1=0;
while(TF1==0);
TF1=0;
TR1=0;
}
}
void init_lcd()
{
lcd_comm();
P0 = 0×38;
lcd_en ();
delay_lcd ();
lcd_comm();
P0 = 0×0c;
lcd_en ();
delay_lcd ();
lcd_comm();
P0 = 0×01;
lcd_en ();
delay_lcd ();
lcd_comm();
P0 = 0×06;
lcd_en ();
delay_lcd ();
lcd_comm();
P0 = 0×81;
lcd_en ();
delay_lcd ();
}
void disp(unsigned char n)
{
rs=1;
P0=val[n];
lcd_en();
// delay_lcd ();
}
void display(char *name)
{
int l,i;
l=strlen(name);
for(i=0;i<l;i++)
{
rs=1;
// delay_lcd ();
P0=name[i];
lcd_en();
// delay_lcd ();
}
}
/******************************************************************************************
// Keyboard Routine
******************************************************************************************/
unsigned char kb()
{
unsigned char i=0,j=0xee,k,r=45;
for(i=0;i<4;i++)
{
P1=j;
// delay();
k=P3;
k &= 0×38;
if(k!=0×38)
{
if(k==0×30)
r=0+(i*3);
if(k==0×28)
r=1+(i*3);
if(k==0×18)
r=2+(i*3);
}
j = (j<<1)+1;
}
return(r);
}
//******************************************************************************************//
/*Main Function Routine*/
//******************************************************************************************//
void main()
{
unsigned char result,i=0,kk,j=255;
while(1)
{
init_lcd();
result = kb();
if(result!=45)
{
if(result == kk)
{
kk = result;
result=result+(i*12);
i++;
}
else
{
j=255;
i=0;
kk = result;
}
disp(result);
}
j–;
if(j==0 && i>3)
{
j=255;
i=0;
kk = 89;
}
}
}
//*******************************************End of Main Program******************************************//
Related posts: