#include <reg51.h>
#define COL P2
#define ROW P0
#define LCD P3
sbit rs = P1^5;
sbit rw = P1^6;
sbit en = P1^7;
sbit refresh = P1^4;
void MSDelay(unsigned int vaulue);
void lcdcmd(unsigned char value);
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()
{
//refresh=1;
unsigned char colloc, rowloc;
restart:
lcdcmd(0x38);
MSDelay(250);
lcdcmd(0x0E);
MSDelay(250);
lcdcmd(0x01);
MSDelay(250);
lcdcmd(0x06);
MSDelay(250);
lcdcmd(0x80);
COL=0xFF;
while(1)
{
if(refresh==0)
{
goto restart;
}
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)
{ lcddata(keypad[rowloc][0]);
MSDelay(250); }
else if(colloc==0x0D)
{ lcddata(keypad[rowloc][1]);
MSDelay(250); }
else if(colloc==0x0B)
{ lcddata(keypad[rowloc][2]);
MSDelay(250); }
else
{ lcddata(keypad[rowloc][3]);
MSDelay(250); }
}
}
void lcdcmd(unsigned char value)
{
LCD = value;
rs=0;
rw=0;
en=1;
MSDelay(1);
en=0;
return;
}
void lcddata(unsigned char value)
{
LCD = value;
rs=1;
rw=0;
en=1;
MSDelay(1);
en=0;
return;
}
void MSDelay(unsigned int value)
{
unsigned int x, y;
for(x=0;x<1275;x++)
for(y=0;y<value;y++);
}
#define COL P2
#define ROW P0
#define LCD P3
sbit rs = P1^5;
sbit rw = P1^6;
sbit en = P1^7;
sbit refresh = P1^4;
void MSDelay(unsigned int vaulue);
void lcdcmd(unsigned char value);
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()
{
//refresh=1;
unsigned char colloc, rowloc;
restart:
lcdcmd(0x38);
MSDelay(250);
lcdcmd(0x0E);
MSDelay(250);
lcdcmd(0x01);
MSDelay(250);
lcdcmd(0x06);
MSDelay(250);
lcdcmd(0x80);
COL=0xFF;
while(1)
{
if(refresh==0)
{
goto restart;
}
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)
{ lcddata(keypad[rowloc][0]);
MSDelay(250); }
else if(colloc==0x0D)
{ lcddata(keypad[rowloc][1]);
MSDelay(250); }
else if(colloc==0x0B)
{ lcddata(keypad[rowloc][2]);
MSDelay(250); }
else
{ lcddata(keypad[rowloc][3]);
MSDelay(250); }
}
}
void lcdcmd(unsigned char value)
{
LCD = value;
rs=0;
rw=0;
en=1;
MSDelay(1);
en=0;
return;
}
void lcddata(unsigned char value)
{
LCD = value;
rs=1;
rw=0;
en=1;
MSDelay(1);
en=0;
return;
}
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