




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上市公司内部员工车位租赁合同范本(含服务细则)
- 2025年跨境天然气进口与国内铁路运输协同服务合同
- 2025年汽车金融科技赋能车贷担保合作协议
- 2025年城市公园文化遗产保护与修复工程合同
- 2025年度装配式钢结构住宅抗震性能优化设计与施工合同
- 海事防溺水安全知识培训课件
- 海事行业基础知识培训班课件
- 2025年度绿色制造企业生产经理职位劳动合同范本
- 2025年度农村危房改造翻新装修服务合同模板
- 2025年度人工智能金融产品定制开发及咨询服务合同
- (新版)广电全媒体运营师资格认证考试复习题库(含答案)
- 保安员资格考试复习题库及答案(800题)
- 乡村公路沥青铺设施工方案
- 2024年中考物理压轴题专项训练:电磁继电器核心综合练(原卷版)
- 矿山事故应急报告制度
- 2024-2025学年山东省淄博市桓台县四年级上学期数学期中考试试题
- DB1402T36-2024农村居家养老服务规范
- 中国发电企业碳中和数字转型白皮书-埃森哲
- ISO27001信息安全管理体系培训资料
- 《绝对值》教学课件
- Unit 6 Work quietly!(教学设计)2023-2024学年人教PEP版英语五年级下册
评论
0/150
提交评论