Sunday, 4 August 2013

Keypad and Serial Communication with PC using 8051

#include <reg51.h>

#define COL P2
#define ROW P0



 void MSDelay(unsigned int vaulue);
 void SerTx(unsigned char);
// void lcddata(unsigned char value);

 unsigned char keypad[4][4]= {'0','1','2','3',
                               '4','5','6','7',
      '8','9','A','B',
'C','D','E','F'};
 void main()
 {
 unsigned char colloc, rowloc;
 TMOD=0X20;
TH1=-3;
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(keypad[rowloc][0]);
  else if(colloc==0x0D)
 SerTx(keypad[rowloc][1]);
else if(colloc==0x0B)
 SerTx(keypad[rowloc][2]);
else
SerTx(keypad[rowloc][3]);
}
}
 
 void SerTx(unsigned char x)
 {
 SBUF=x;
while(TI==0);
TI=0;
 }

 void MSDelay(unsigned int value)
{
 unsigned int x, y;
 for(x=0;x<1275;x++)
 for(y=0;y<value;y++);
 }

No comments:

Post a Comment