发布时间 : 星期四 文章51单片机+ds1302+DS18b20温度时钟(电路图+C语言程序)更新完毕开始阅读2e52ca3731126edb6f1a105a
case 14://修改闹钟使能状态下按S2 clock_hour=zancun1; clock_minute=zancun2; clock_en=zancun3; flag1=0; break; case 3:
flag1=15;
zancun1=countdown_hour; zancun2=countdown_minute; zancun3=countdown_second; break; case 15: case 16: case 17: case 18: case 19: case 20:
countdown_hour=zancun1; countdown_minute=zancun2; countdown_second=zancun3; flag1=21;
countdown_flag=0; break; case 22:
flag1=21; break; case 21:
flag1=22; break; case 4:
flag1=23;//秒表暂停 msecond_minute=0; msecond_second=0; msecond_msecond=0; break; case 23:
flag1=24; break; case 24:
flag1=23; break; case 5:
flag1=25;//进入计数器模式
zancun1=0; zancun2=0; zancun3=0; break; default: break; }
while(s2_bit==0) {
judge_dis(); }//等待按键释放 } } }
//************************************************** //S3按键处理函数 void judge_s3() {
s3_bit=1;//置IO为1,准备读入收据 if(s3_bit==0)//判断是否有按键按下 {
delay_50us(1);// 延时,去除机械抖动 if(s3_bit==0) {
switch (flag1) {
case 6://修改时间小时的十位数 zancun1+=10;
if(zancun1>=24)zancun1=zancun1; break;
case 7://修改时间小时的个位数
zancun1=zancun1/10*10+(zancun1+1); if(zancun1>=24)zancun1=20; break;
case 8://修改时间分钟的十位数 zancun2+=10;
if(zancun2>=60)zancun2-=60; break;
case 9://修改时间分钟的个位数
zancun2=zancun2/10*10+(zancun2+1); break;
case 10://修改闹钟小时的十位数
zancun1+=10;
if(zancun1>=24)zancun1=zancun1; break;
case 11://修改闹钟小时的个位数
zancun1=zancun1/10*10+(zancun1+1); if(zancun1>=24)zancun1=20; break;
case 12://修改闹钟分钟的十位数 zancun2+=10;
if(zancun2>=60)zancun2-=60; break;
case 13://修改闹钟分钟的个位数
zancun2=zancun2/10*10+(zancun2+1); break; case 14:
zancun3^=1; break;
case 15://修改倒计时小时的十位数 zancun1+=10;
if(zancun1>=100)zancun1-=100; break;
case 16: //修改倒计时小时的个位数
zancun1=zancun1/10*10+(zancun1+1); break;
case 17://修改倒计时分钟的十位数 zancun2+=10;
if(zancun2>=60)zancun2-=60; break;
case 18: //修改倒计时分钟的个位数
zancun2=zancun2/10*10+(zancun2+1); break;
case 19://修改倒计时秒的十位数 zancun3+=10;
if(zancun3>=60)zancun3-=60; break;
case 20: //修改倒计时秒的个位数
zancun3=zancun3/10*10+(zancun3+1); break; case 21: case 22://
countdown_hour=zancun1; countdown_minute=zancun2; countdown_second=zancun3; flag1=21;
break; case 23:
case 24://秒表复位 flag1=24;
msecond_minute=0; msecond_second=0; msecond_msecond=0; break; case 25:
zancun1++;
if(zancun1==100) {
zancun1=0; zancun2++;
if(zancun2==100) {
zancun2=0; zancun3++; } }
break; default: break; }
while(s3_bit==0) {
judge_dis(); }//等待按键释放 } } }
//**************************************** //显示处理函数 void judge_clock() {
zancun4=hour_count&0xf0; zancun4>>=4;
zancun6=hour_count&0x0f; zancun4*=10;
zancun4+=zancun6;
zancun5=minute_count&0xf0; zancun5>>=4;
zancun6=minute_count&0x0f;