DS12CR887实时时钟完整程序.docx
《DS12CR887实时时钟完整程序.docx》由会员分享,可在线阅读,更多相关《DS12CR887实时时钟完整程序.docx(15页珍藏版)》请在冰豆网上搜索。
![DS12CR887实时时钟完整程序.docx](https://file1.bdocx.com/fileroot1/2023-7/10/ee7fd0c2-c6f5-4436-be6e-bdecd41ea35c/ee7fd0c2-c6f5-4436-be6e-bdecd41ea35c1.gif)
DS12CR887实时时钟完整程序
DS12CR887实时时钟完整程序附图片(液晶显示)
#include
#include
voiddelay(uchark)
{
uchari,j;
for(i=0;i for(j=0;j<110;j++);
}
voiddidi()
{
beep=0;
delay(200);
beep=1;
delay(200);
}
voidds_write(ucharadd,uchardate)
{
dscs=0;
dsds=1;
dswr=1;
dsas=1;
P0=add;
dsas=0;
P0=date;
dswr=0;
dswr=1;
dsas=1;
}
uchards_read(ucharadd)
{
ucharz;
dscs=0;
dswr=1;
dsds=1;
dsas=1;
P0=add;
dsas=0;
dsds=0;
P0=0xff;
z=P0;
dsds=1;
dsas=1;
returnz;
}
voidwrite_com(ucharcom)
{
rs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_date(uchardate)
{
rs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/*voidset_time()
{
ds_write(9,0x08);
ds_write(8,6);
ds_write(7,3);
ds_write(6,2);
ds_write(4,14);
ds_write(2,42);
ds_write(0,00);
ds_write(5,14);
ds_write(3,42);
ds_write(1,10);
}*/
voidinit()
{
dsas=0;
dsds=0;
dswr=0;
wr=0;
lcden=0;
//set_time();
ds_write(0x0a,0x20);
ds_write(0x0b,0x26);
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
year=ds_read(9);
write_sfm1(2,year);
write_date('-');
month=ds_read(8);
write_sfm1(5,month);
write_date('-');
date=ds_read(7);
write_sfm1(8,date);
day=ds_read(6);
write_com(0x80+0x0c);
write_date(table[day]);
write_date(table1[day]);
write_date(table2[day]);
EA=1;
EX0=1;
IT0=1;
}
voidwrite_sfm(ucharadd,uchardate)
{
ucharshi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+0x40+add);
write_date(0x30+shi);
write_date(0x30+ge);
}
voidwrite_sfm1(ucharadd,uchardate)
{
ucharshi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+add);
write_date(0x30+shi);
write_date(0x30+ge);
}
main()
{
init();
while
(1)
{
keyscan();
if(alarm==0)
{
if(flag1==1)
didi();
if(flag==0)
{
sec=ds_read(0);
min=ds_read
(2);
hour=ds_read(4);
write_sfm(4,hour);
write_date(':
');
write_sfm(7,min);
write_date(':
');
write_sfm(10,sec);
if(hour==0&&min==0)
{
if(sec==0)
{
day=ds_read(6);
write_com(0x80+0x0c);
write_date(table[day]);
write_date(table1[day]);
write_date(table2[day]);
date=ds_read(7);
write_sfm1(8,date);
if(date==1)
{
month=ds_read(8);
write_sfm1(5,month);
write_date('-');
if(month==1)
{
year=ds_read(9);
write_sfm1(2,year);
write_date('-');
}
}
}
}
}
}
}
}
voidkeyscan()
{
if(key4==0&&flag1==0)
{
delay(5);
if(key4==0)
{
while(!
key4);
alarm=1;
flag=1;
asec=ds_read
(1);
amin=ds_read(3);
ahour=ds_read(5);
write_com(0x0c);
write_sfm(4,ahour);
write_date(':
');
write_sfm(7,amin);
write_date(':
');
write_sfm(10,asec);
}
}
if(flag1==1&&alarm==0)
{
if(key1==0)
{
delay(5);
if(key1==0)
{
flag1=0;
while(!
key1);
}
}
if(key2==0)
{
delay(5);
if(key2==0)
{
flag1=0;
while(!
key2);
}
}
if(key3==0)
{
delay(5);
if(key3==0)
{
flag1=0;
while(!
key3);
}
}
if(key4==0)
{
delay(5);
if(key4==0)
{
flag1=0;
while(!
key4);
}
}
}
if(flag1==0)
{
if(key1==0)
{
delay(5);
if(key1==0)
{
s1num++;
flag=1;
write_com(0x0d);
while(!
key1);
}
if(s1num==1)
{
write_com(0x80+0x4a);
}
if(s1num==2)
{