基于单片机的电子闹钟设计(5)

2018-12-17 16:56

西安文理学院课程设计报告

}

CNT++; //记下按键KEY1按下的次数 IF(CNT==4&&CNT1==0) { MIAO4=MIAO; FEN4=FEN; SHI4=SHI; CNT1++; } IF(CNT==8) { CNT=0; IF(CNT1==1) { MIAO=MIAO4; FEN=FEN4; SHI=SHI4; } CNT1=0; } }

IF(KEY2==0) //判断KEY2是否按下 { WHILE(!KEY2) //防止掉显 { IF(CNT==1||CNT==2||CNT==3) { DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8) { DISPLAY(); } } JIA(); }

IF(KEY3==0) //判断KEY3是否按下 { WHILE(!KEY3) //防止掉显 { IF(CNT==1||CNT==2||CNT==3) { DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8) { DISPLAY(); } }

JIAN(); //调用减1子函数 }

IF(KEY4==0) //判断KEY4是否按下 {WHILE(!KEY4) //防止掉 { IF(CNT==1||CNT==2||CNT==3) { ALM1=~ALM1; DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8) {DISPLAY();} } }

IF(KEY5==0) { DELAY(5); IF(!KEY5)

第 21 页

西安文理学院课程设计报告

{ TR1=1;} WHILE(!KEY5)

{ IF(CNT==1||CNT==2||CNT==3) { DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8) { DISPLAY(); } IF(CNT==7) {DISPLAY2();} } }

IF(KEY6==0) { IF(!KEY6) {TR1=0;}

WHILE(!KEY6)

{ IF(CNT==1||CNT==2||CNT==3) { DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8) { DISPLAY(); } IF(CNT==7) {DISPLAY2();} } }

IF(KEY7==0)

{ WHILE(!KEY7)

{IF(CNT==1||CNT==2||CNT==3) { DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8) { DISPLAY(); } IF(CNT==7) {DISPLAY2();} MIAO2=0;FEN2=0;SHI2=0; } } }

//****************************加1子函数*************************** VOID JIA() { IF(CNT==1) //判断KEY1按下的次数是否为1 { MIAO1++; //是,则秒加1

IF(MIAO1>59) //判断秒是否大于60,是,则秒清零 MIAO1=0; }

IF(CNT==2) //以下含意同上 { FEN1++; IF(FEN1>59) FEN1=0; }

IF(CNT==3)

第 22 页

西安文理学院课程设计报告

{ SHI1++; IF(SHI1>23) SHI1=0; }

IF(CNT==4) { MIAO++; IF(MIAO>59) MIAO=0; CNT1++; }

IF(CNT==5) { FEN++; IF(FEN>59) FEN=0; CNT1++; }

IF(CNT==6) { SHI++; IF(SHI>23) SHI=0; CNT1++; } }

//***************************减1子函数**************************// VOID JIAN() { IF(CNT==1) //判断KEY1按下的次数是否为1,是则秒减1 { MIAO1--;

IF(MIAO1==255) //判断秒是否减到255,是,则秒置59 MIAO1=59; }

IF(CNT==2) //以下含意同上 { FEN1--;

IF(FEN1==255) FEN1=59; }

IF(CNT==3) { SHI1--;

IF(SHI1==255) SHI1=23; }

IF(CNT==4) { MIAO--;

IF(MIAO==255) MIAO=59; CNT1++; }

IF(CNT==5) { FEN--;

IF(FEN==255) FEN=59;

第 23 页

西安文理学院课程设计报告

CNT1++; }

IF(CNT==6) { SHI--;

IF(SHI==255) SHI=23; CNT1++; } }

//***************************闹铃子函数***************************// VOID CLOCK()

//判断秒的数值是否相等 { IF(MIAO==MIAO1&&ALM1==0)

//是,在判断分是否相等 IF(FEN==FEN1&&ALM1==0) //是,再判断时是否相等 IF(SHI==SHI1&&ALM1==0)

{ FLAG2=0; //是,则标志位,FLAG2清零 WHILE(!(FLAG2>1200)&&(CNT==0)) //判断FLAG2是否到1200且不 {IF(KEY4==0) //没有,则继续驱动蜂鸣器响 {DELAY(5); FMQ=1; // WHILE(!KEY4) FLAG2=1250;

//调用时间子函数 } // 为调时状态

IF(FLAG1>1) //等时方波驱动蜂鸣器 { FMQ=~FMQ; FLAG1=0; }

SHIJIAN(); //调用时间子函数 DISPLAY(); //调用显示子函数 }

//关闭蜂鸣器 } }

//**************************主函数********************************// VOID MAIN()

{ INIT(); //调用初始化子函数 WHILE(1)

{ CLOCK(); //闹钟子函数 IF(CNT==1||CNT==2||CNT==3) //显示子函数 { DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8)

第 24 页

西安文理学院课程设计报告

{ DISPLAY(); } IF(CNT==7)

{DISPLAY2();} SHIJIAN(); //调用时间子函数 KEY_SCAN(); //调用键盘扫描子函数 IF(HMFLAG>17)

{HMFLAG=0;MIAO2++;}

IF(MIAO2>99) {MIAO2=0;FEN2++;} IF(FEN2>59) {FEN2=0;SHI2++;} IF(SHI2>99) {SHI2=0;} } }

//**************************定时T0中断******************************// VOID TIME0() INTERRUPT 1

{ TH0=0X3C; //初值50MS (65536-50000)/256 TL0=0X0B0; // (65536-50000)%6 FLAG++; //标志位 FLAG1++; FLAG2++; }

//**************************定时T1中断******************************// VOID TIME1() INTERRUPT 3

{ TH1=0XFE; //初值0.5MS (65536-50000)/256 TL1=0X0C; // (65536-50000)%6 HMFLAG++; //标志位 }

第 25 页


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

下一篇:求极限的若干方法

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

马上注册会员

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