Thursday, 5 March 2015

Matrix keyboard using LCD AT89C52

#include<reg52.h>
sfr row=0x80;
sfr col=0x90;
sfr ldata=0xA0;
sbit rs=P3^0;
sbit en=P3^1;
sbit rw=P3^2;
void lcdcmd(unsigned char);
void lcddata(unsigned char);
void msdelay(unsigned int);
void main()
{
unsigned int temp=0;
lcdcmd(0x38);
msdelay(50);
lcdcmd(0x0E);
msdelay(50);
lcdcmd(0x01);
msdelay(50);
lcdcmd(0x06);
msdelay(50);
lcdcmd(0x80);
msdelay(50);
while(1)
{
row=0x0E;
temp=col&0x0F;
msdelay(50);
if(temp==0x07)
{
lcddata('A');
msdelay(50);
}  
else if(temp==0x0B)
{
lcddata('B');
msdelay(50);
}
else if(temp==0x0D)
{
lcddata('C');
msdelay(50);
}
else if(temp==0x0E)
{
lcddata('D');
msdelay(50);
}



row=0x0D;
temp=col&0x0F;
msdelay(50);
if(temp==0x07)
{
lcddata('E');
msdelay(50);
}  
else if(temp==0x0B)
{
lcddata('F');
msdelay(50);
}
else if(temp==0x0D)
{
lcddata('G');
msdelay(50);
}
else if(temp==0x0E)
{
lcddata('H');
msdelay(50);
}




row=0x0B;
temp=col&0x0F;
msdelay(50);
if(temp==0x07)
{
lcddata('I');
msdelay(50);
}  
else if(temp==0x0B)
{
lcddata('J');
msdelay(50);
}
else if(temp==0x0D)
{
lcddata('K');
msdelay(50);
}
else if(temp==0x0E)
{
lcddata('L');
msdelay(50);
}



row=0x07;
temp=col&0x0F;
msdelay(50);
if(temp==0x07)
{
lcddata('M');
msdelay(50);
}  
else if(temp==0x0B)
{
lcddata('N');
msdelay(50);
}
else if(temp==0x0D)
{
lcddata('O');
msdelay(50);
}
else if(temp==0x0E)
{
lcddata('P');
msdelay(50);
}
}
}

void lcdcmd(unsigned char value)
{
ldata=value;
en=1;
rs=0;
rw=0;
msdelay(5);
en=0;
}
void lcddata(unsigned char value)
{
ldata=value;
en=1;
rs=1;
rw=0;
msdelay(5);
en=0;
}
void msdelay(unsigned int item)
{
unsigned int i,j;
for(i=0;i<item;i++)
for(j=0;j<1275;j++);
}

No comments:

Post a Comment