以作息时间控制为主的多功能任务设计.docx

上传人:小飞机 文档编号:3260356 上传时间:2023-03-12 格式:DOCX 页数:9 大小:39.09KB
返回 下载 相关 举报
以作息时间控制为主的多功能任务设计.docx_第1页
第1页 / 共9页
以作息时间控制为主的多功能任务设计.docx_第2页
第2页 / 共9页
以作息时间控制为主的多功能任务设计.docx_第3页
第3页 / 共9页
以作息时间控制为主的多功能任务设计.docx_第4页
第4页 / 共9页
以作息时间控制为主的多功能任务设计.docx_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《以作息时间控制为主的多功能任务设计.docx》由会员分享,可在线阅读,更多相关《以作息时间控制为主的多功能任务设计.docx(9页珍藏版)》请在三一办公上搜索。

1、以作息时间控制为主的多功能任务设计#include /52单片机头文件,声明各寄存器等 #include #define uint unsigned int /宏定义符号,类似于替换 #define uchar unsigned char sbit key1=P34; /宏定义位,也即IO口定义 sbit key2=P35; sbit key3=P36; sbit key4=P37; sbit fm=P23; sbit dula=P26; sbit wela=P27; sbit bear=P23; uint i; /定义各符号 uchar aa,bb,numdu,numwe; uchar se

2、c1,min1,hour1,year1,mon1,day1,temp1,temp2,sec2,min2,hour2; /主功能符号定义 uchar code tablew=0x71,0x6d,0x5b,0x3f, 0x6d,0x5b,0x06, ; uchar code tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; uchar code table=0x3f,0x06,0x5b,0x4f, /主功能数组定义 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e, 0x79,0x71; void w1; /子函数声明

3、void w2; void w3; void w4; void delayms(uint xms); void timer0; void delay(uint z); /主功能子函数声明 void init; void display(uchar hour,uchar min,uchar sec); void keyscan; void alarm; void time1; /*- 主函数 -*/ void main key1=1; key2=1; key3=1; key4=1; while(1) while(!key1)w1; while(!key2)w2; while(!key3)w3;

4、while(!key4)w4; /*- 按键控制蜂鸣器过程 -*/ void w1 if(!key1) delayms(300); if(key1) fm=!fm; /*- 按键控制流水灯过程 -*/ void w2 loop1:P1=0xff; if(!key2) delayms(300); if(key2) /延时防抖,松手检测 aa=0xfe; while(1) P1=aa; /赋初值11111110 /大循环 delayms(100); /延时500毫秒 aa=_crol_(aa,1); /将aa循环左移1位后再赋给aa /相应的cror是循环右移一位 if(!key2) delaym

5、s(300); if(key2) goto loop1; /*- 按键控制数码管过程 -*/ void w3 loop2:wela=1; P0=0xff; if(!key3) delayms(300); if(key3) numdu=0; numwe=0; while(1) numdu+; if(numdu=7) numdu=1; dula=1; P0=tablewnumdu; dula=0; wela=1; P0=tablewenumwe; /开段锁存器 /送段码 /锁存段码 /开位锁存器 /送位码 wela=0; /锁存位码 numwe+; if(numwe=6) numwe=0; del

6、ayms(5); if(!key3) delayms(300); if(key3) goto loop2; /*- 按键控制作息时间过程 -*/ void w4 if(!key4) delayms(300); if(key4) init; /主功能主程序 while(1) keyscan; alarm; /*- 延时函数 -*/ void delayms(uint xms) uint i,j; for(i=xms;i0;i-) /i=xms即延时约xms毫秒 for(j=110;j0;j-); /*- 主功能相关所有子程序 -*/ void delay(uint z) /延时程序/ uint

7、x,y; for(x=0;xz;x+) for(y=0;y=sec2&sec1sec2+30)|(min1=0&sec120) /闹钟响30秒,正点报时20秒功能 for(i=0;i20;i+) bear=bear; P1=P1; switch(temp2) case 0:display(hour1,min1,sec1);break; case 1:display(year1,mon1,day1);break; case 2:display(hour2,min2,sec2);break; delay(30); bear=1; P1=0xff; /*void mainw /主功能主程序/ init; while(1) keyscan; alarm; */ void time1interrupt 1 /定时器程序/ uint m; m+; if(m=3686) /250与后面的3886相乘约为100000us=1s,控制1秒程序 m=0; sec1+; if(sec1=60) sec1=0; min1+; if(min1=60) min1=0; hour1+; if(hour1=24) hour1=0; day1+; if(day1=31) day1=1; mon1+; if(mon1=13) mon1=1; year1+; if(year1=100) year1=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号