Home > Code Library > Matrix Keypad 3X4 C Code

Matrix Keypad 3X4 C Code

November 27th, 2009 admin Leave a comment Go to comments

#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’,’

3 X 4 Matrix Keypad  c code

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******************************************//

#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:

  1. RFID BASED SECURITY SYSTEM C CODE
  2. RTC DS1307 INTERFACE WITH 8051 C PROGRAM
  1. No comments yet.
  1. No trackbacks yet.
You must be logged in to post a comment.