基于lpc922单片机的电子钟温度计设计(6)

2020-02-21 13:37

{

Dsecond=X_Dswitch(second);//十六进制直接作为十进制(eg:0x16变为16) Dminute=X_Dswitch(minute); Dhour=X_Dswitch(hour); Dweek=X_Dswitch(week); Dday=X_Dswitch(day);

Dmonth=X_Dswitch(month); Dyear=X_Dswitch(year); if(first_sure) { Dyear--;judgeupdate=1; if(Dyear==65535) Dyear=99; } if(second_sure) { Dmonth--;judgeupdate=1; if(Dmonth==0) Dmonth=12; }

if(third_sure) { lastday=months(Dmonth,Dyear); Dday--;judgeupdate=1; if(Dday==0) Dday=lastday; } if(fourth_sure) { Dweek--;judgeupdate=1; if(Dweek==0) Dweek=7; }

if(fifth_sure) { Dhour--;judgeupdate=1; if(Dhour==65535) Dhour=23; }

if(sixth_sure) { Dminute--;judgeupdate=1; if(Dminute==65535) Dminute=59;

26

}

if(seventh_sure) { Dsecond--;judgeupdate=1; if(Dsecond==65535) Dsecond=59; }

second=D_Xswitch(Dsecond);//十进制直接作为十六进制(eg:16变为0x16) minute=D_Xswitch(Dminute); hour=D_Xswitch(Dhour); week=D_Xswitch(Dweek); day=D_Xswitch(Dday);

month=D_Xswitch(Dmonth); year=D_Xswitch(Dyear); if(alarmclock==0 && update==0)

{savesecond=second;saveminute=minute;savehour=hour;judgealarm=1;} }

/********************************** 按键扫描子程序

***********************************/ void keyboardscanf()

{ if(key_sure==0 || update==0) // 在key_sure键没按过前key_inc==0 || key_dec==0时无效

{ if(key_sure==0 || key_inc==0 || key_dec==0) {

if(cort>=1 && cort<=3) { for(i=0;i<=16;i++) displayymd(swap); } else { for(i=0;i<=16;i++) displaytime(swap); }

if(key_sure==0 || key_inc==0 || key_dec==0) {

if(key_sure==0) {update=0;anjian_num();} if(key_inc==0) inc_key(); if(key_dec==0) dec_key(); } } } }

/****************************** 时间调整位闪烁子程序

27

*******************************/ void time_flash() {

if(update==0)

{if(first_sure)//年位闪烁 {

for(i=0;i<=6;i++) {swap[4]=0;

displayymd(swap);} for(i=0;i<=6;i++) {swap[4]=1;

displayymd(swap);} }

if(second_sure)//月位闪烁 {

for(i=0;i<=6;i++) {swap[5]=0;

displayymd(swap);} for(i=0;i<=6;i++) {swap[5]=1;

displayymd(swap);} }

if(third_sure)//日位闪烁 {

for(i=0;i<=6;i++) {swap[6]=0;

displayymd(swap);} for(i=0;i<=6;i++) {swap[6]=1;

displayymd(swap);} }

if(fourth_sure)//星期位闪烁 {

for(i=0;i<=6;i++) {swap[3]=0;

displaytime(swap);} for(i=0;i<=6;i++) {swap[3]=1;

displaytime(swap);} }

if(fifth_sure)//时钟位闪烁 {

for(i=0;i<=6;i++) {swap[2]=0;

28

displaytime(swap);} for(i=0;i<=6;i++) {swap[2]=1;

displaytime(swap);} }

if(sixth_sure)//分钟位闪烁 {

for(i=0;i<=6;i++) {swap[1]=0;

displaytime(swap);} for(i=0;i<=6;i++) {swap[1]=1;

displaytime(swap);} }

if(seventh_sure)//秒钟位闪烁 {

for(i=0;i<=6;i++) {swap[0]=0;

displaytime(swap);} for(i=0;i<=6;i++) {swap[0]=1;

displaytime(swap);} }}

for(i=0;i<=6;i++) swap[i]=1; }

///////////////////////////////////////////////////////////////////////主函数 void main()

{ uint count=0,s=0; update=1; alarmcount=0; judgealarm=0; judgeupdate=0; clock=1; key_sure=1; key_dec=1; key_inc=1; P2=0xff; D4=1; D5=1;

TimeWorkStart(); // DS1302Inital(); while(1) {

29

if(update==1) {

//得到时、分、秒、星期 second=TimeByteRead(0x81); minute=TimeByteRead(0x83); hour=TimeByteRead(0x85); week=TimeByteRead(0x8b); //得到年、月、日

day=TimeByteRead(0x87); month=TimeByteRead(0x89); year=TimeByteRead(0x8d);

if(savesecond==second && saveminute==minute && savehour==hour) { clock=0; alarmcount=8200;} //闹铃约2分钟 else clock=1;

if(alarmcount!=0) { clock=0; alarmcount--;} else { clock=1;

judgealarm=0;}

if((minute==0x30 || minute==0x00) && second==0x00) //半点闹铃 D5=0; else D5=1;

if(showtemp==0) //显示切换 displaytemp(); else if(showymd==0) displayymd(swap); else

displaytime(swap);

if(count==0 && s!=second) //秒点闪烁 { s=second; D4=0; count=36; }

if(count!=0) { count--; D4=0;} else

D4=1; }

30

//闹铃

else { //得到时、分、秒、星期 second=second; minute=minute; hour=hour; week=week;

//得到年、月、日 day=day; month=month; year=year; D4=1;

if(cort>=1 && cort<=3) displayymd(swap); else displaytime(swap); }

keyboardscanf(); time_flash(); } }

31


基于lpc922单片机的电子钟温度计设计(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:迷人的阅读读书笔记

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: