#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit CS=P3^5;
sbit SID=P3^6;
sbit SCLK=P3^4;
sbit LCD_PSB=P3^7;
sbit wela=P2^6;
sbit dula=P2^7;
uchar code dis2[]={"PLEASE INPUT:"};
uchar code table[]={0,1,2,3,4,5,6,7,8,9};
uchar i;
void delay(uint x)
{
uint i,j;
for(j=0;j<x;j++)
for(i=0;i<110;i++);
}
void sendbyte(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
SCLK=0;
byte=byte<<1;
SID=CY;
SCLK=1;
SCLK=0;
}
}
void write_cmd(uchar cmd)
{
CS=1;
sendbyte(0xf8);
sendbyte(0xf0&cmd);
sendbyte(cmd<<4&0xf0);
CS=0;
}
void write_dat(uchar dat)
{
CS=1;
sendbyte(0xfa);
sendbyte(0xf0&dat);
sendbyte(dat<<4&0xf0);
CS=0;
}
void init()
{
LCD_PSB=0;
write_cmd(0x30);
delay(10);
write_cmd(0x0e);
delay(10);
write_cmd(0x01);
delay(10);
}
void keyscan()
{
uchar tempt,key,num;
P3=0xfd;
tempt=P3;
tempt=tempt&0xf0;
if(tempt!=0xf0)
{
delay(10);
tempt=P3;
tempt=tempt&0xf0;
if(tempt!=0xf0)
{
tempt=P3;
switch(tempt)
{
case 0xed:
key=0;
num=0;
break;
case 0xdd:
key=1;
num=1;
break;
case 0xbd:
key=2;
num=2;
break;
case 0x7d:
key=3;
num=3;
break;
}
while(tempt!=0xf0)
{
tempt=P3;
tempt=tempt&0xf0;
}
if(key==0||key==1||key==2||key==3)
{
write_dat(table[key]+0x30);
delay(5);
}
}
}
P3=0xfb;
tempt=P3;
tempt=tempt&0xf0;
if(tempt!=0xf0)
{
delay(10);
tempt=P3;
tempt=tempt&0xf0;
if(tempt!=0xf0)
{
tempt=P3;
switch(tempt)
{
case 0xeb:
key=4;
num=4;
break;
case 0xdb:
key=5;
num=5;
break;
case 0xbb:
key=6;
num=6;
break;
case 0x7b:
key=7;
num=7;
break;
}
while(tempt!=0xf0)
{
tempt=P3;
tempt=tempt&0xf0;
}
if(key==4||key==5||key==6||key==7)
{
write_dat(table[key]+0x30);
delay(5);
}
}
}
P3=0xf7;
tempt=P3;
tempt=tempt&0xf0;
if(tempt!=0xf0)
{
delay(10);
tempt=P3;
tempt=tempt&0xf0;
if(tempt!=0xf0)
{
tempt=P3;
switch(tempt)
{
case 0xe7:
key=8;
num=8;
break;
case 0xd7:
key=9;
num=9;
break;
case 0xb7:
key=10;
break;
case 0x77:
key=11;
break;
}
while(tempt!=0xf0)
{
tempt=P3;
tempt=tempt&0xf0;
}
if(key==8)
{
write_dat(table[key]+0x30);
delay(5);
}
if(key==9)
{
write_dat(table[0]+0x30);
delay(5);
write_dat(table[9]+0x30);
delay(5);
}
if(key==11)
{
init();
write_cmd(0x80);
i=0;
while(dis2[i]!='\0')
{
write_dat(dis2[i]);
i++;
}
write_cmd(0x90);
}
}
}
}
void main()
{
wela=0;
dula=0;
delay(10);
init();
write_cmd(0x80);
i=0;
while(dis2[i]!='\0')
{
write_dat(dis2[i]);
i++;
}
delay(10);
write_cmd(0x90);
while(1)
{
keyscan();
}
}
|