《数字时钟源程序段》由会员分享,可在线阅读,更多相关《数字时钟源程序段(5页珍藏版)》请在金锄头文库上搜索。
1、二、源程序的编写 1.显示部分 在本次设计的显示部分我们采用中断来控制时分秒的显示。具体步骤如下: (1)定义溢出次数为 50 次。因而 50*20ms=1s。 (2)秒自加一,判断秒是否等于 60,如果等于 60,令秒重新为 0 再自加,同时向分进一。(3)判断分是否等于 60,如果等于 60,则令分重新为 0,同时向小时进一。 (4)判断小时是否等于 24,如果等于 24,则令小时重新为 0。 显示部分的程序如下所示: uchar shi=00,fen=00,miao=00,yichu=0; void time0() interrupt 1 TH0=(65536-20000)/256; T
2、L0=(65536-20000)%256; yichu+; if(yichu=50) count=0; miao+; if(miao=60) miao=0; fen+; if(fen=60) fen=0; shi+; if(shi=24) shi=0; 2.校时部分 在校时部分,我们采用三个独立式按键,分别定义选择键为 xuanzekey,加一键为 jiakey, 减一键为 jiankey,首先用选择键来选择对时分秒中的哪个进行校时,未按选择键时即 xuan=0 则选定秒,利用加一键或减一键对其进行校时;第一次按下选择键即 xuan=1 时选 定分,同样可以利用加一键或减一键对其校时;第二次按
3、下选择键,即 xuan=2 时表示选定 小时,再利用加一键和减一键对其校时。在校时过程中,在使用加键调整时,判断秒和分 若等于 60 均令其等于 0,判断小时若等于 24 则令其等于 0;在使用减键调整时先判断其是 否小于 0,如果分和秒小于 0,则令其为 59,若小时小于 0,则令其为 23。 校时部分程序如下所示:uchar xuan; sbit xuanzekey=P3.2; sbit jiakey=P3.3; sbit jiankey=P3.4; void xuanze() if(xuanzekey=0)for(j=0;j3)xuan=0;while(!xuanzekey);for(j
4、=0;j23)shi=0;break; case 1:fen+;if(fen59)fen=0;break; case 2:miao+;if(miao59)miao=0;break;while(1); while(!jiakey); for(j=0;j #define uchar unsigned char #define uint unsigned intuchar code duan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00; uchar code wei=0,1,2,3,4,5,6,7;void main() c
5、sh 1602(); csh T0(); xuanze(); jia(); jian(); while(1) write _com(0x80+0x04);write_dat(shi/10+48);write _com(0x80+0x05);write_dat(shi%10+48);write _com(0x80+0x06);write_dat(_); write _com(0x80+0x07);write_dat(fen/10+48); write _com(0x80+0x08);write_dat(fen%10+48); write _com(0x80+0x09);write_dat(_); write _com(0x80+0x10);write_dat(miao/10+48); write _com(0x80+0x11);write_dat(miao%10+48);