📄 时钟.c
字号:
#include<reg51.h>
#include<define.h>
#include<shezhishijian.h>
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com) //LCD写命令
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date) //LCD写数据
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void inis() //初始化程序
{
lcden=0;
set_time();
write_ds(0x0B,0x26);
time_alarm(15,3,0);
write_com(0x01);
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x80);
for(i=0;i<=15;i++)
{
write_data(table[i]);
delay(5);
}
write_com(0xd0);
for(i=0;i<=11;i++)
{
write_data(table1[i]);
delay(5);
}
EA=1;
EX0=1;
IT0=1;
}
void write_sfm(uchar address,uchar date) //显示LCD的时分秒
{
write_com(0x80+0x40+address);
si=date/10;
ge=date%10;
si=0x30+si;
ge=0x30+ge;
write_date(si);
delay(5);
write_date(ge);
}
void write_ds(uchar add,uchar date) //写时钟芯片 DS12CR887-DS12R887_
{
dscs=0;
dsds=1;
dsrw=1;
dsas=1;
P0=add;
dsas=0;
dsrw=0;
P0=date;
dsrw=1;
dsas=1;
dscs=1;
}
uchar read_ds(uchar add) // 读时钟芯片DS12CR887-DS12R887_
{
uchar ds_date;
dscs=0;
dsas=1;
dsds=1;
dsrw=1;
P0=add;
dsas=0;
dsds=0;
ds_date=P0;
dsds=1;
dsas=1;
dscs=1;
return ds_date;
}
void set_time() //设置时间
{
write_ds(4,14);
write_ds(2,47);
write_ds(0,0);
}
void time_alarm(ashi,afen,amiao) //设置闹钟时间
{
write_ds(1,amiao);
write_ds(3,afen);
write_ds(5,ashi);
}
void didi() //闹钟响声
{
beep=0;
delay(50);
beep=1;
delay(100);
beep=0;
delay(50);
beep=1;
delay(100);
}
void main()
{
inis(); //初始化LCD
while(1)
{
keyscan()//时间的设定
if(flag==1)
{
didi();
}
else if(flag==0)
{
miao=read_ds(0);
fen=read_ds(2);
shi=read_ds(4);
write_sfm(10,miao);
write_sfm(7,fen);
write_sfm(4,shi);
}
}
}
void exter() interrupt 0 // 闹钟中断
{
uchar c;
flag1=1;
c=read_ds(0x0c);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -