微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机学习——用ds1302制作一个精密电子钟,按键调节

单片机学习——用ds1302制作一个精密电子钟,按键调节

时间:11-23 来源:互联网 点击:

}
}
void keyscan() //按键扫描子函数
{
if(sf==0)//功能键
{
delay(2);
if(sf==0)
{
while(!sf);

sfcount++;
if(sfcount==1) //秒针闪烁
{
flag=1;
s_write(0x80,0x80);//使时钟暂停
write_com(0x80+0x40+9);
write_com(0x0f);
}
if(sfcount==2) //分针闪烁
{
write_com(0x80+0x40+6);
}
if(sfcount==3) //时针闪烁
{
write_com(0x80+0x40+3);
}
if(sfcount==4) //星期闪烁
{
write_com(0x80+0x0d);
}
if(sfcount==5)//天闪烁
{
write_com(0x80+9);
}
if(sfcount==6)//月闪烁
{
write_com(0x80+6);
}
if(sfcount==7)//年闪烁
{
write_com(0x80+3);
}
if(sfcount==8)//取消闪烁
{
sfcount=0;
flag=0;
set_ds1302(time1);
delay(5);
write_com(0x0c);
s_write(0x80,0x00);//使时钟启动
}
}
}
if(sup==0) //调节时间(上升键)
{
delay(5);
if(sup==0)
{
while(!sup);
if(sfcount==1)//调节秒
{
sec++;
if(sec==60)
sec=0;
time1[0]=DEC2BCD(sec);
write_time(8,sec);
write_com(0x80+0x40+9);
}
if(sfcount==2) //调节分钟
{
min++;
if(min==60)
min=0;
time1[1]=DEC2BCD(min);
write_time(5,min);
write_com(0x80+0x40+6);
}
if(sfcount==3) //调节小时
{
hour++;
if(hour==24)
hour=0;
time1[2]=DEC2BCD(hour);
write_time(2,hour);
write_com(0x80+0x40+3);
}
if(sfcount==4) //调节星期
{
week++;
if(week==8)
week=1;
time1[5]=week;
write_xingqi(week);
write_com(0x80+0x0d);
}
if(sfcount==5) //调节日
{
day++;
if(day==32)
day=1;
time1[3]=DEC2BCD(day);
write_riqi(8,day);
write_com(0x80+9);
}
if(sfcount==6) //调节月
{
month++;
if(month==13)
month=1;
time1[4]=DEC2BCD(month);
write_riqi(5,month);
write_com(0x80+6);
}
if(sfcount==7) //调节年
{
year++;
if(year==100)
year=9;
time1[6]=DEC2BCD(year);
write_riqi(2,year);
write_com(0x80+3);
}
}
}
}
void delay(uint a) { //1ms延时子函数
uint i,j;
for(j=a;j>0;j--)
for(i=250;i>0;i--) ;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top