schematic Free Image Hosting at www.ImageShack.us

QuickPost Quickpost this image to Myspace, Digg, Facebook, and others!

code working:
If you press any button in the matrix keyboard it controller will scan the corresponding ascii code that will send serially to the port pin specified . Corresponding ascii code we can see in LED blinkings.



#include /*
add the headers here
*/

#define COL P2
#define ROW P1
void msdelay(unsigned int value);
void sertx(unsigned char);
unsigned char keyboard[4][4]={ '7','8','9','/',
'4','5','6','*',
'1','2','3','-',
'a','0','=','+' };

void main()
{
unsigned char colloc,rowloc;
TMOD=0x20;
TH1=-24;
SCON=0x50;
TR1=1;
COL=0xff;
while(1)
{
do
{
ROW=0x00;
colloc=COL;
colloc&=0x0f;
} while(colloc!=0x0f);
do
{
do
{
msdelay(20);
colloc=COL;
colloc&=0x0f;
}while(colloc==0x0f);
msdelay(20);
colloc=COL;
colloc&=0x0f;
} while(colloc==0x0f);
while(1)
{
ROW=0xfe;
colloc=COL;
colloc&=0x0f;
if(colloc!=0x0f)
{
rowloc=0;
break;
}
ROW=0xfd;
colloc=COL;
colloc&=0x0f;
if(colloc!=0x0f)
{
rowloc=1;
break;
}
ROW=0xfb;
colloc=COL;
colloc&=0x0f;
if(colloc!=0x0f)
{
rowloc=2;
break;
}
ROW=0xf7;
colloc=COL;
colloc&=0x0f;
rowloc=3;
break;
}
if(colloc==0x0e)
sertx(keyboard[rowloc][0]);
else if(colloc==0x0d)
sertx(keyboard[rowloc][1]);
else if(colloc==0x0b)
sertx(keyboard[rowloc][2]);
else // (colloc==0x07)
sertx(keyboard[rowloc][3]);
}
}
void sertx(unsigned char x)
{
SBUF=x;
while(TI==0);
msdelay(20);
TI=0;
}
void msdelay(unsigned int value)
{
unsigned int i,j;
for(i=0;i<=1275;i++)
for(j=0;j<=value;j++);
}

Comments

Popular posts from this blog

Nokia dot Matrix LCD Interfacing with 89c51( 8051 core)

8051 Development Setup:MIDE-51 Installation