




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字时钟完整程序(8位数码管显示) Protues仿真电路可从本页附件下载! /*基于单片机内部定时计数器的数字钟设计1、用单片机内部定时计数器T0进行计时;2、用8位数码管显示日期、时间;3、用INT0所接按键进行日期/时间显示切换。 */#include#define uchar unsigned char /宏定义#define uint unsigned int /宏定义uchar temp=0;/定义定时器溢出计数变量,每隔50ms产生1次溢出,temp加1bit flag=0;/定义时间/日期显示切换标志位,flag=0显示时间,flag=1显示日期uchar year=11;/定义年变量并赋初值11年uchar month=05,day=23;/定义月、日变量,并赋初值5月23日uchar hour=12,minute=00,second=00;/定义时、分、秒变量,并赋初值12时00分00秒uchar data month_day12=31,0,31,30,31,30,31,31,30,31,30,31;/定义每月天数表uchar code duan=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e;/共阳七段码表uchar code wei=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;/共阳位码表 /*-定时计数器T0及中断初始化函数-*/void init_t0(void) TMOD=0x01;/设置定时器T0为工作方式1 TH0=(65536-50000)/256;/赋T0高8位初值,定时50ms TL0=(65536-50000)%256;/赋T0低8位初值 EA=1;/开总中断 ET0=1;/开启定时器T0中断 TR0=1;/启动定时器T0 /*-外部中断INT0初始化函数-*/void init_int0(void) EX0=1;/开启INT0中断 /*-1ms延时函数-*/void delay(uint n) uint i,j; for(i=n;i0;i-) for(j=114;j0;j-); /*时分秒、年月日计数程序采用定时计数器T0计数实现中断程序,每当定时计数器溢出时触发中断,执行该程序实现计时*/void time0() interrupt 1 TH0=(65536-50000)/256;/重装初值TL0=(65536-50000)%256; if(temp=20) temp=0; if(second=59) second=0; if(minute=59) minute=0; if(hour=23) hour=0; if(day=month_daymonth-1)/判断日期是否到了每月最后一天 day=1; if(month=12) month=1; year+; else month+; else day+; else hour+; else minute+; else second+; else temp+; /*INT0中断程序,每当按下INT0所接按键一次时触发中断,执行该程序实现时间/日期显示切换*/void into() interrupt 0 flag=!flag; /*-主函数-*/void main() uchar i; init_t0();/定时计数器T0及中断初始化 init_int0();/外部中断INT0初始化 while(1) if(flag=0)/若flag0,则显示“时-分-秒“ for(i=0;i=7;i+) P2=weii;/输出位码 if(i=0) P0=duansecond%10; /输出秒个位段码 else if(i=1) P0=duansecond/10; /输出秒十位段码 else if(i=2) P0=0xbf;/显示- else if(i=3) P0=duanminute%10; /输出分个位段码 else if(i=4) P0=duanminute/10; /输出分十位段码 else if(i=5) P0=0xbf;/显示- else if(i=6) P0=duanhour%10; /输出时个位段码 else P0=duanhour/10; /输出时十位段码 delay(5); /延时5ms else/若flag1,则显示“年-月-日” for(i=0;i=7;i+) P2=weii;/输出位码 if(i=0) P0=duanday%10; /输出日个位段码 else if(i=1) P0=duanday/10; /输出日十位段码 else if(i=2) P0=0xbf;/显示- else if(i=3) P0=duanmonth%10; /输出月个位段码 else if(i=4) P0=duanmonth/10; /输出月十位段码 el
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业废水处理与排放标准解读
- 工业废水处理技术与设备选择
- 工业污染治理与环保法规的协同作用
- 工业废水处理及回收利用技术
- 工业机器人技术及其产业前景
- 工业物联网技术发展趋势及挑战
- 工业自动化中的智能巡检技术应用研究
- 工业机械的自动化带式输送机的技术解析
- 工业节能减排技术推广与应用
- 工业遗址改造为生态公园的实践案例
- 等高线地形图试题附答案解析
- 《空腔脏器穿孔》课件
- 风湿免疫疾病的中医药治疗与辅助疗法
- 乒乓球培训协议书
- 无创呼吸机使用培训
- 园林植物病理学实习
- Animate动画设计实例教程高职全套教学课件
- DB22-T+3541-2023日间手术中心护理质量安全管理规范
- 小学六年级毕业动员会 课件( 26张ppt)
- 流体力学-大连理工大学中国大学mooc课后章节答案期末考试题库2023年
- 2023年度湖南省自然科学奖项目公示材料
评论
0/150
提交评论