51单片机+ds1302+DS18b20温度时钟(电路图+C语言程序)

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;

联系客服:779662525#qq.com(#替换为@)