📄 ʦ
字号:
minute--;
if(minute==255)
minute=59;
display_sfm(8,minute);
write_com(0x80+0x40+8); //指针还原到分的个位
}
if(s1num==3) //时-
{
hour--;
if(hour==255)
hour=23;
display_sfm(5,hour);
write_com(0x80+0x40+5); //指针还原到时的个位
}
if(s1num==4) //日-
{
date--;
if(month!=2)
{
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:if(date==0)
{
date=31;
}
break;
case 4:
case 6:
case 9:
case 11:if(date==0)
{
date=30;
}
break;
}
display_nyr(11,date);
write_com(0x80+11); //指针还原到日的个位
}
else
{
if(year%4==0)
{
if(date==0) //闰年29天
{
date=29;
}
else
{
if(date==0)
{
date=28;
}
}
}
display_nyr(11,date);
write_com(0x80+11); //指针还原到日的个位
}
}
if(s1num==5) //月-
{
month--;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: break;
case 0: month=12; break;
case 4:
case 6:
case 9:
case 11: if(date==31)date=1;break;
case 2: if(year%4==0)
{
if(date>=30)date=1;
}
else
{
if(date>=29)date=1;
}
}
display_nyr(8,month);
write_com(0x80+11); //指针指向日的个位
display_nyr(11,date);
write_com(0x80+8); //指针还原到月的个位
}
if(s1num==6) //年-
{
year--;
if(year==0)
year=99;
display_nyr(5,year);
write_com(0x80+5); //指针还原到年的个位
}
if(s1num==7) //星期-
{
day--;
if(day==0)
day=7;
display_week(13,day);
write_com(0x80+13); //指针还原到年的个位
}
}
}
}
}
void alarm_keyscan()
{
if(moshi2==0)
{
if(s4==0)
{
delay(2);
if(s4==0)
{
moshi1=1;
moshi3=1;
s4num++;
flag=1;
while(!s4);
if(s4num==1)
{
if(flag2==0)
{
a_hour=read_ds(5); //读闹钟 时
a_minute=read_ds(3); //读闹钟 分
a_second=read_ds(1); //读闹钟 秒
display_sfm(5,a_hour);
display_sfm(8,a_minute);
display_sfm(11,a_second);
}
write_com(0x06);
write_com(0x80);
for(num=0;num<16;num++) //第一行显示“SET ALARM”
{
write_date(table2[num]);
delay(1);
}
write_com(0x80+0x40+11); //指针指向 秒的个位
write_com(0x0f); //开显示 开光标 开闪烁
flag2=1;
}
if(s4num==2)
{
write_com(0x80+0x40+8); //指针指向 分的个位
}
if(s4num==3)
{
write_com(0x80+0x40+5); //指针指向 时的个位
}
if(s4num==4)
{
s4num=0;
write_com(0x0c); //开显示 无光标 不闪烁
write_ds(5,a_hour); // 时
write_ds(3,a_minute); // 分
write_ds(1,a_second); // 秒
flag=0;
flag2=0;
moshi1=0;
moshi3=0;
write_com(0x06); //指针加1
write_com(0x80); //让第一行继续显示年月日
for(num=0;num<16;num++)
{
write_date(table[num]);
delay(1);
}
}
}
}
}
if(s4num!=0)
{
if(s2==0)
{
delay(2);
while(!s2);
if(s4num==1)
{
a_second++;
if(a_second>=60) //秒+
a_second=0;
display_sfm(11,a_second);
write_com(0x80+0x40+11); //指针还原到秒的个位
}
if(s4num==2) //分+
{
a_minute++;
if(a_minute>=60)
a_minute=0;
display_sfm(8,a_minute);
write_com(0x80+0x40+8); //指针还原到分的个位
}
if(s4num==3) //时+
{
a_hour++;
if(a_hour>=24)
a_hour=0;
display_sfm(5,a_hour);
write_com(0x80+0x40+5); //指针还原到时的个位
}
}
if(s3==0)
{
delay(2);
while(!s3);
if(s4num==1)
{
a_second--;
if(a_second==255) //秒-
a_second=59;
display_sfm(11,a_second);
write_com(0x80+0x40+11); //指针还原到秒的个位
}
if(s4num==2) //分-
{
a_minute--;
if(a_minute==255)
a_minute=59;
display_sfm(8,a_minute);
write_com(0x80+0x40+8); //指针还原到分的个位
}
if(s4num==3) //时-
{
a_hour--;
if(a_hour==255)
a_hour=23;
display_sfm(5,a_hour);
write_com(0x80+0x40+5); //指针还原到时的个位
}
}
}
}
void miaobiao_keyscan()
{
if(moshi3==0)
{
if(s3==0)
{
delay(2);
if(s3==0)
{
moshi1=1;
moshi2=1;
s3num++;
flag=1;
flag3=0;
flag4=1;
shu=0;
TR0=0;
while(!s3);
write_com(0x06);
write_com(0x80);
for(num=0;num<16;num++) //第一行显示“MIAO BIAO”
{
write_date(table3[num]);
delay(1);
}
write_com(0x06);
write_com(0x80+0x40);
for(num=0;num<16;num++) //第二行显示“00:00:00”
{
write_date(table4[num]);
delay(1);
}
if(s3num==2)
{
TR0=0;
s3num=0;
flag=0;
flag3=1;
flag4=0;
moshi1=0;
moshi2=0;
write_com(0x06); //指针加1
write_com(0x80); //让第一行继续显示年月日
for(num=0;num<16;num++)
{
write_date(table[num]);
delay(1);
}
}
}
}
if(s3num!=0)
{
if(s1==0)
{
delay(2);
if(s1==0)
{
s1num++;
if(s1num==1)
{
TR0=1;
}
if(s1num==2)
{
s1num=0;
TR0=0;
}
}
}
if(s2==0)
{
delay(2);
if(s2==0)
{
shu=0;
TR0=0;
}
}
}
}
}
void BEEP()
{
uchar i;
for(i=0;i<100;i++)
{
beep=0;
delay(1);
beep=1;
delay(1);
}
delay(100);
}
void main()
{
lcd_init();
ds_init();
set_time();
set_alarm();
interrupt_init();
c=read_ds(0x0c); //开闹钟给AIE引脚置高电平
while(1)
{
time_keyscan();
alarm_keyscan();
miaobiao_keyscan();
if(flag1==0)
BEEP();
if(flag==0)
{
year=read_ds(9);
month=read_ds(8);
date=read_ds(7);
day=read_ds(6);
hour=read_ds(4);
minute=read_ds(2);
second=read_ds(0);
display_nyr(5,year);
display_nyr(8,month);
display_nyr(11,date);
display_week(13,day);
display_sfm(5,hour);
display_sfm(8,minute);
display_sfm(11,second);
}
if(flag3==0)
{
display_miaobiao(11);
}
}
}
void exter0() interrupt 0
{
uchar c;
flag1=0;
tt=0;
TR0=1;
flag4=0;
c=read_ds(0x0c);
}
void timer0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
if(flag4==0)
{
tt++;
if(tt==500) //响5秒
{
flag1=1; //不响
}
if(tt==1000) //停5秒
{
flag1=0; //响
tt=0;
}
}
shu++;
if(shu==1000000)
shu=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -