{
uchar shi,ge; shi=dte/10; ge=dte;
write_com(0x80+13);
write_date(0x30+ge); }
void write_clock(uchar add,uchar dat) {
uchar first,second; second=dat/10; first=dat;
write_com(0x80+0x40+add); write_date(0x30+second); write_com(0x80+0x40+add+1); write_date(0x30+first); }
void write_nyr(uchar add,uchar dte) {
uchar shi,ge; shi=dte/10; ge=dte; write_com(0x80+add);
delay(5);
write_date(0x30+shi);
write_com(0x80+add+1); delay(5); write_date(0x30+ge); }
/************************************** **函数名称:init **函数功能:初始化函数 **入口参数:无 **出口参数:无
***************************************/ void init() {
uchar hour=3,min=3,year=11,month=5,day=7,week=6; uchar num;
e=0; write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口 write_com(0x0c);//开显示,不显示光标
write_com(0x06);//当读或写一个字符后地址指针加1,且光标加1 write_com(0x01);//显示清屏:数据指针、所有显示清0 write_com(0x80);//设置数据地址指针 for(num=0;num<15;num++)
{ }
write_date(table1[num]);//LCD显示\初始设置时间\delay(5);
write_com(0x80+0x40); for(num=0;num<14;num++)
/*定时器初始化*/ { }
write_date(table2[num]);//LCD显示\初始设置时间\delay(5);
TMOD=0x01;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1; ET0=1; TR0=1;
while(1)
{ if(key1==0) //时钟设置//key1按下 {
delay(5);
if(key1==0) //key1真的按下了 {
keynum++;
while(!key1) //去键抖
TR0=0; //时钟暂停
if(keynum==1) //key1按下第一次 {
write_com(0x80+0x40+13); write_com(0x0f);
}
if(keynum==2) //key1按下第二次 {
write_com(0x80+0x40+10); }
if(keynum==3) //key1按下第三次 {
write_com(0x80+0x40+7); } if(keynum==4) //key1按下第三次 {
write_com(0x80+13);
} if(keynum==5) //key1按下第三次 {
write_com(0x80+9);
} if(keynum==6) //key1按下第三次 {
write_com(0x80+6);
} if(keynum==7) //key1按下第三次 {
write_com(0x80+3); }
if(keynum==8) //key1按下第四次 {
keynum=0; //按键次数清零
write_com(0x0c);
TR0=1; //继续运行时钟 } } }
/*按键加*/ if(keynum!=0) {
if(key2==0) {
delay(80); if(key2==0) {
while(!key2); if(keynum==1)
{
sec++;
if(sec==60) sec=0;
write_clock(12,sec); write_com(0x80+0x40+13);
}
if(keynum==2) {
min++;
if(min==60) min=0;
write_clock(9,min); write_com(0x80+0x40+10);
}
if(keynum==3) { hour++; if(hour==24)
hour=0;
write_clock(6,hour);
write_com(0x80+0x40+7);
}
if(keynum==4) {
week++; if(week==8) week=1;
write_week(week); write_com(0x80+13);
}
if(keynum==5) {
day++;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) {
if(day==32)
day=1; }
else if(month==2) //注意这里没有考虑闰年
{
if(day==29) day=1; } else {
if(day==31) day=1; }
write_nyr(8,day); write_com(0x80+9);
}
if(keynum==6) {
month++;
if(month==13) month=1;
write_nyr(5,month); write_com(0x80+6);
}
if(keynum==7) {
year++; if(year==99) year=0;
write_nyr(2,year); write_com(0x80+3); } }
}
/*按键减*/ if(key3==0) {
delay(80); if(key3==0) {
while(!key3); if(keynum==1) {
sec--;