#include<reg52.h>
#define uchar unsigned char
uchar key,key1;
sbit CLK=P2^1;
sbit IO=P2^0;
sbit RST=P2^4;
sbit lcdrs=P1^0;
sbit lcdwr=P1^1;
sbit lcden=P2^5;
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
void delay(uchar i)
{
uchar x,n;
for(x=i;x>0;x--)
for(n=1250;n>0;n--);
}
void write_byte(uchar dat)
{ uchar a ;
ACC=dat;
RST=1;
for(a=8;a>0;a--)
{
IO=ACC0;
CLK=0;
CLK=1;
ACC=ACC>>1;
}
}
uchar read_byte()
{ uchar a;
RST=1;
for(a=8;a>0;a--)
{
ACC7=IO;
CLK=1;
CLK=0;
ACC=ACC>>1;
}
return (ACC);
}
void write_1302(uchar add,uchar dat)
{
RST=0;
CLK=0;
RST=1;
write_byte(add);
write_byte(dat);
CLK=1;
RST=0;
}
uchar read_1302(uchar add)
{
uchar temp;
RST=0;
CLK=0;
RST=1;
write_byte(add);
temp=read_byte();
CLK=1;
RST=0;
return(temp);
}
uchar BCD(uchar bcd)
{
uchar Decimal;
Decimal=bcd>>4;
return(Decimal=Decimal*10+(bcd&=0x0F));
}
void write_con(uchar con)
{
lcdrs=0;
lcdwr=0;
P0=con;
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar dat)
{
lcdrs=1;
lcdwr=0;
P0=dat;
lcden=1;
delay(5);
lcden=0;
}
void init()
{
RST=0;
CLK=0;
lcden=0;
write_con(0x38);
write_con(0x0c);
write_con(0x06); //光標自動向右 字符不移動
write_con(0x01); //清屏
write_con(0x80+0x05);
}
void main()
{
init();
RST=0;
CLK=0;
write_1302(0x8e,0x00);
write_1302(0x80,0x85);
read_1302(0x81);
key1=BCD(key);
write_data(key1);
}
|