#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="2013-03-26 Mon";
uchar code table1[]=" 00:00:00";
//uchar code table2[][7]={"Mon","Tue","Wes","Thi","Fri","Sat","Sun"};
sbit key1=P3^7;
sbit key2=P3^6;
sbit key3=P3^5;
sbit key4=P3^4;
sbit key5=P3^3;
sbit key6=P3^2;
sbit e=P1^2;
sbit rw=P1^1;
sbit rs=P1^0;
uchar i,sec=0,min=0,hour=0,t=0;
uint year=2013,month=3,day=26;
uchar a=0,m=0;
void writecom(uchar x);
void writedata(uchar date);
void init();
void delay(uchar z);
void write1(uchar dizhi,uint shuju);
void writeyear(uchar dizhi,uint shuju);
void write(uchar dizhi,uchar shuju);
void keyscan();
void xingqi(uchar k);
void main()
{
init();
for(i=0;i<15;i++)
{ writedata(table[i]);
delay(5);
}
writecom(0x80+0x40);
for(i=0;i<11;i++)
{
writedata(table1[i]);
delay(5);
}
while(1)
{
keyscan();
if(key6==0)
{
TR0=1;
writecom(0x0c);
}
}
}
void init()
{
rw=0;
e=0;
writecom(0x38);
writecom(0x0c);
writecom(0x06);
writecom(0x01);
writecom(0x80);
TMOD=0x01;
TCON=0x12;
EX1=1;
EA=1;
ET0=1;
TR0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void writecom(uchar x)
{
rw=0;
rs=0;
P0=x;
delay(5);
e=1;
delay(5);
e=0;
}
void writedata(uchar date)
{
rs=1;
rw=0;
P0=date;
delay(5);
e=1;
delay(5);
e=0;
}
void write(uchar dizhi,uchar shuju)
{
uchar ge,shi;
ge=shuju%10;
shi=shuju/10;
writecom(0x80+0x40+dizhi);
writedata(0x30+shi);
writedata(0x30+ge);
}
void write1(uchar dizhi,uint shuju)
{
uchar ge1,shi1;
ge1=shuju%10;
shi1=shuju/10;
writecom(0x80+dizhi);
writedata(0x30+shi1);
writedata(0x30+ge1);
}
void writeyear(uchar dizhi,uint shuju)
{
uchar ge,shi,bai,qian;
ge=shuju%10;
shi=shuju%100/10;
bai=shuju%1000/100;
qian=shuju/1000;
writecom(0x80+dizhi);
writedata(0x30+qian);
writedata(0x30+bai);
writedata(0x30+shi);
writedata(0x30+ge);
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==7)
{
t=0;
sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
{
hour=0;
day++;
if(day==30)
{
day=1;
month++;
if(month==12)
{
month=1;
year++;
if(year==9999)
{
year=0;
}
writeyear(0,year);
writecom(0x80+0);
}
write1(5,month);
writecom(0x80+6);
}
write1(8,day);
writecom(0x80+9);
writecom(0x80+12);
m++;
if(m==7)
m=0;
xingqi(m);
}
write(3,hour);
writecom(0x80+0x40+4);
}
write(6,min);
writecom(0x80+0x40+7);
}
write(9,sec);
writecom(0x80+0x40+10);
}
if(key6==0)
{
EA=1;
ET0=1;
TR0=1;
EX1=1;
}
}
void keyscan()
{
if(key1==0)
{
delay(10);
writecom(0x0f);
if(key1==0)
TR0=0;
a++;
while(!key1);
}
if(a==1)
{
writecom(0x80+0x40+10);
if(key2==0)
{
sec++;
if(sec==60)
sec=0;
write(9,sec);
writecom(0x80+0x40+10);
while(!key2);
}
}
if(a==2)
{
writecom(0x80+0x40+7);
if(key2==0)
{
min++;
if(min==60)
min=0;
write(6,min);
writecom(0x80+0x40+7);
while(!key2);
}
if(key3==0)
{
min--;
if(min==-1)
min=59;
write(6,min);
writecom(0x80+0x40+7);
while(!key3);
}
}
if(a==3)
{
writecom(0x80+0x40+4);
if(key2==0)
{
hour++;
if(hour==24)
hour=0;
write(3,hour);
writecom(0x80+0x40+4);
while(!key2);
}
if(key3==0)
{
hour--;
if(hour==-1)
hour=23;
write(3,hour);
writecom(0x80+0x40+4);
while(!key3);
}
}
if(a==4)
{
writecom(0x80+9);
if(key2==0)
{
day++;
if(day==31)
day=1;
write1(8,day);
writecom(0x80+9);
while(!key2);
}
}
if(a==5)
{
writecom(0x80+6);
if(key2==0)
{
month++;
if(month==13)
month=1;
write1(5,month);
writecom(0x80+6);
while(!key2);
}
}
if(a==6)
{
writecom(0x80+3);
if(key2==0)
{
year++;
if(year==9999)
year=1;
writeyear(0,year);
writecom(0x80+0);
while(!key2);
}
if(key3==0)
{
year--;
if(year==0)
year=9999;
writeyear(0,year);
writecom(0x80+0);
while(!key3);
}
}
if(a==7)
{
writecom(0x80+12);
if(key2==0)
{ m++;
if(m==7)
m=0;
xingqi(m);
while(!key2);
}
}
if(a==8)
a=0;
}
void xingqi(uchar k)
{
if(k==0)
{
writedata('M');
writedata('o');
writedata('n');
}
if(k==1)
{
writedata('T');
writedata('u');
writedata('e');
}
if(k==2)
{ writedata('W');
writedata('e');
writedata('s');
}
if(k==3)
{
writedata('T');
writedata('h');
writedata('i');
}
if(k==4)
{
writedata('F');
writedata('r');
writedata('i');
}
if(k==5)
{
writedata('S');
writedata('a');
writedata('t');
}
if(k==6)
{
writedata('S');
writedata('u');
writedata('n');
}
}
void delay(uchar z)
{
uchar i;
while(z--)
for(i=110;i>0;i--);
}
|