




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#define uint unsigned int#define uchar unsigned charuchar code table= 0x3f,/*0*/0x06,/*1*/0x5b,/*2*/0x4f,/*3*/0x66,/*4*/0x6d,/*5*/0x7d,/*6*/0x07,/*7*/0x7f,/*8*/0x6f,/*9*/0x00,/*灭*10*/0xf3,/*P.*11*/0x40,/*-*12*/0xB7,/*n.*13*/0xF6/*H.*14*/;/-/-定义变量-/-uchar miao,fen,shi,miaonao,fennao,shinao,nao,gn,gnnz;uchar flag,aa,bb,cc,dd,ck,a0,a1,a2,a3,a4,a5,a6,a7;uint t0,t1;bit ss;sbit beep=P15;/-/-初始化-/-void init() shinao=8;/初始定义闹钟时间为8点整 gn=1; gnnz=1;ss=0; aa=0;/ dd=0; bb=1;/进入调闹钟日常时间循环 cc=1;/进入调闹钟日常时间循环/ ck=1; nao=0; TH0=0x3c; TL0=0xb0; TH1=0x3c; TL1=0xb0;/ 定时50ms中断一次EA=1;/开总中断 ET0=1;/开定时器0中断 TR0=0; ET1=1;/开定时器1中断 TR1=0;/-/-延时函数-/-void delay(uint i) uchar y; for(i;i0;i-) for(y=110;y0;y-);/-/-定时器0,1-/-void timer0() interrupt 1 TMOD=0x01;TH0=0x3c; TL0=0xb0;t0+; if(nao=0)/日常时间读秒处理 if(t0=20) t0=0; miao+; if(miao=60) miao=0; fen+; if(fen=60) fen=0; shi+; if(shi=24) shi=0; if(nao=1)/闹钟时间读秒处理 if(t0=20) t0=0; miaonao+; if(miaonao=60) miaonao=0; fennao+; if(fennao=60) fennao=0; shinao+; if(shinao=24) shinao=0; void timer1() interrupt 3 if(dd=1)/串口调时间闹钟闪烁处理 RI=0; flag=1; delay(4); ss=ss; if(dd=0)/按键调时间闹钟闪烁处理 TMOD=0x01; TH0=0x3c; TL0=0xb0; t1+; if(t1=40) t1=0; ss=ss; /-/-数码管显示处理程序-/-void display(uchar a7,uchar a6,uchar a5,uchar a4,uchar a3,uchar a2,uchar a1,uchar a0)P0=tablea7;P2=0xfe;delay(1);P0=tablea6;P2=0xfd;delay(1); P0=tablea5;P2=0xfb;delay(1);P0=tablea4;P2=0xf7;delay(1);P0=tablea3;P2=0xef;delay(1);P0=tablea2;P2=0xdf;delay(1);P0=tablea1;P2=0xbf;delay(1);P0=tablea0;P2=0x7f;delay(1);/-/-数码管送数及闪烁-/-void send() if(nao=0)/日常时间送数 a0=miao%10; a1=miao/10; a2=12; a3=fen%10; a4=fen/10; a5=12; a6=shi%10; a7=shi/10; if(nao=1)/闹钟时间送数 a0=miaonao%10; a1=miaonao/10; a2=12; a3=fennao%10; a4=fennao/10; a5=12; a6=shinao%10; a7=shinao/10; if(ss=1)switch(gn)/调时间闪烁case 2:a0=10,a1=10;break;case 3:a3=10,a4=10;break;case 4:a6=10,a7=10;break; switch(gnnz)/调闹钟闪烁case 2:a0=10,a1=10;break;case 3:a3=10,a4=10;break;case 4:a6=10,a7=10;break;/-/-闹钟-/-void smq()if(shi=shinao)if(fen=fennao) if(miao=miaonao) beep=0; delay(100); beep=1; beep=0; delay(100); beep=1; beep=0; delay(100); beep=1; /-/-按键处理程序-/-uchar keychuli() uchar k; k=P1; /P1口内容送Kk=k; /取反k=(k&0xff); /屏蔽高4位,如果扫描8键,屏蔽该句。return(k); /返回键值uchar key() uchar key1,key2; /电子钟键盘按键键值临时存放 key1=keychuli(); /调P1口处理函数 if(key1!=0) /有键动作延时去抖动,否则函数返回send();display(a0, a1, a2, a3, a4, a5, a6, a7);display(a0, a1, a2, a3, a4, a5, a6, a7);key1=keychuli(); /再次调P1口处理函数if(key1!=0) /真正有键按下,取键值并暂存key2=key1; while(key1!=0) /判按键是否释放,没有释放延时去抖动等待释放 send(); display(a0, a1, a2, a3, a4, a5, a6, a7); display(a0, a1, a2, a3, a4, a5, a6, a7); key1=keychuli(); key1=key2; /按键释放后恢复按键键值 return(key1); /返回按键键值/-/-串口初始化-/-/*void ck_init()/串口初始化TMOD=0x20; /定时器工作方式2 TH1=0xfd; /253 TL1=0xfd; TR1=1; /启动定时器1 REN=1; /允许串行口接收数据 SM0=0; /串口工作方式1 SM1=1; EA=1; /开总中断 ES=1; /开串口中断*/-/-串口调时间-/-/*void ck_gn() dd=1; ss=1; ck_init(); while(ck) if(key()=2)/ 按键k2功能键 gn+;/ 判断按下的次数switch(gn) /case 1: TR0=1;TR1=0;ss=0;break; case 2: /一次条秒同时闪烁case 3:/两次调分同时闪烁case 4:TR0=0;TR1=1;ss=1;break;/三次调分同时闪烁case 5:gn=1;TR0=1;TR1=0;ss=0;bb=0;cc=0;dd=0;ck=0;break;/四次跳出调整状态时钟继续走,gn=1循环使用 if(flag=1)/接收串口发来的数据 调闹钟调时 switch(gn) case 2: miao=SBUF; flag=0; if(miao=60) miao=0; break; case 3: fen=SBUF; flag=0; if(fen=60) fen=0; break; case 4: shi=SBUF; flag=0; if(shi=24) shi=0; break; send(); / 送数 display(a0, a1, a2, a3, a4, a5, a6, a7); / 显示时间 */-/-串口调闹钟-/-/*void ck_gnnz() dd=1; ss=1; ck_init(); while(ck) if(key()=2)/ 按键k2功能键 gnnz+;/ 判断按下的次数switch(gnnz) /case 1: TR0=1;TR1=0;ss=0;break; case 2: /一次条秒同时闪烁case 3:/两次调分同时闪烁case 4:TR0=0;TR1=1;ss=1;break;/三次调分同时闪烁case 5:gn=1;TR0=1;TR1=0;ss=0;bb=0;cc=0;dd=0;ck=0;break;/四次跳出调整状态时钟继续走,gn=1循环使用 if(flag=1)/接收串口发来的数据 调闹钟调时 switch(gnnz) case 2: miaonao=SBUF; flag=0; if(miaonao=60) miaonao=0; break; case 3: fennao=SBUF; flag=0; if(fennao=60) fennao=0; break; case 4: shinao=SBUF; flag=0; if(shinao=24) shinao=0; break; send(); / 送数 display(a0, a1, a2, a3, a4, a5, a6, a7); / 显示时间 */-/-按键调时间-/-void ajgn()while(cc) display(10,10,10,10,10,10,10,14); if(key()=1) while(bb) if(key()=16) TR0=1;TR1=0;ss=0;bb=0;cc=0; switch(key() case 2:/ 按键k2功能键 gn+;/ 判断按下的次数 switch(gn) /case 1: TR0=1;TR1=0;ss=0;break; case 2: /一次条秒同时闪烁 case 3:/两次调分同时闪烁 case 4:TR0=0;TR1=1;ss=1;break;/三次调分同时闪烁 case 5:gn=1;TR0=1;TR1=0;ss=0;bb=0;cc=0;break;/四次跳出调整状态时钟继续走,gn=1循环使用 break; case 4:/k3键上调 switch(gn) case 1: break; case 2:miao+;if(miao=60) miao=0; break; case 3:fen+;if(fen=60) fen=0; break; case 4:shi+;if(shi=24) shi=0; break; break; case 8:/k4键下调 switch(gn) case 1:break; case 2:miao-;if(miao=255) miao=59; break; case 3:fen-;if(fen=255) fen=59; break; case 4:shi-;if(shi=255) shi=23; break; break; send(); / 送数 display(a0, a1, a2, a3, a4, a5, a6, a7); / 显示时间 /-/-按键调闹钟-/-void ajgnnz()while(cc) display(10,10,10,10,10,10,10,13); if(key()=1) while(bb) if(key()=16) TR0=1;TR1=0;ss=0;nao=0;bb=0;cc=0; switch(key() case 2:/ 按键k2闹钟功能键 / miaonao+;if(miaonao=60) miaonao=0; gnnz+;/ 判断按下的次数 switch(gnnz) /case 1: TR0=1;TR1=0;ss=0;break; case 2: /一次条秒同时闪烁 case 3:/两次调分同时闪烁 case 4:TR0=0;TR1=1;ss=1;break;/三次调分同时闪烁 case 5:gnnz=1;TR0=1;TR1=0;ss=0;nao=0;bb=0;cc=0;break;/四次跳出调整状态时钟继续走,gnn1=1循环使用 break; case 4:/k3键闹钟上调 /fennao+;if(fennao=60) fennao=0; switch(gnnz) case 1: break; case 2:miaonao+;if(miaonao=60) miaonao=0; break; case 3:fennao+;if(fennao=60) fennao=0; break; case 4:shinao+;if(shinao=24) shinao=0; break; break; case 8:/k4键闹钟下调 /shinao+;if(shinao=24) shinao=0; switch(gnnz) case 1:break; case 2:miaonao-;if(miaonao=255) miaonao=59; break; case 3:fennao-;if(fennao=255) fennao=59; break; case 4:shinao-;if(shinao=255) shinao=23; break; break; send(); / 送数 display(a0, a1, a2, a3, a4, a5, a6, a7); / 显示闹钟时间 /-/-主函数-/-void main()init();while(1) display(10, 10, 10, 10, 10, 10, 10, 11); /没有键按下是显示P.if(key()=1) /当k1按下后则
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-湖南-湖南广播电视天线工四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北计量检定工一级(高级技师)历年参考题库含答案解析
- 康复医疗器械市场深度洞察:2025年需求爆发创新产品引领变革报告
- 2025年事业单位工勤技能-海南-海南家禽饲养员二级(技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-河南-河南林木种苗工二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-河北-河北食品检验工一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-江西-江西理疗技术员三级(高级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江西-江西城管监察员一级(高级技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江苏-江苏垃圾清扫与处理工一级(高级技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-广西-广西工程测量工五级(初级工)历年参考题库典型考点含答案解析
- 2025年秋招:新媒体运营笔试题目及答案
- 工作总结及工作思路(输电运维班)
- 感染性休克的护理诊断与措施
- Unit 14 I remember meeting all of you in Grade 7(大单元教材分析)教学课件 人教新目标九年级英语全册
- 肺炎护理试题填空及答案
- 食材配送 售后服务方案
- 心电监护操作常见并发症预防及处理
- 安全操作规程修订要求
- 2025年四川绵阳燃气集团有限公司招聘考试笔试试题(含答案)
- 2025至2030盾构机行业市场深度研究与战略咨询分析报告
- 【公开课】物质的转化课件2025-2026学年高一上学期化学人教版(2019)必修第一册+
评论
0/150
提交评论