基于单片机89C51的数码管显示时钟设计



《基于单片机89C51的数码管显示时钟设计》由会员分享,可在线阅读,更多相关《基于单片机89C51的数码管显示时钟设计(15页珍藏版)》请在装配图网上搜索。
1、 基于单片机的数字时钟 摘 要 单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉。但是却很少知道它的内部结构以及工作原理。由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行校时、定时等功能。输出设备显示器可以用液晶显示技术和数码管来显示技术。 本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机AT89C51为核心元件同时采用LED数码管显示器动态显示“时”,“分”,“秒”的现代计时装置。与传统机械表相比,它具有走时精确,显示直观等特点。另外具有校时
2、功能,秒表功能,和定时器功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。 关键词:数字钟系统; 单片机;数码管显示 Digital clock system Abstract SCM in multi-function digital clock in the application is already very common, people on the digital clock function and are very familiar with the work order
3、. But very few know that its internal structure and working principles. SCM as a digital clock from the core controller, it can achieve the clock signal timing, its time data by the MCU output, use of monitors displayed. Keyboard can be carried out at the school, timing, and other functions. Output
4、devices can be used liquid crystal display monitors and digital technology to display the technology. The system uses MCU with time, the school features such as the digital clock, SCM AT89C51 is also used as the core components of the LED digital display dynamic display "when" and "points" an
5、d "seconds" of the modern time device . Compared with the traditional mechanical watches, it has a precise path that intuitive, and other characteristics. In addition a school function, stopwatch function, and the timer function to achieve MCU use of the digital clock with programming flexibility to
6、 facilitate the expansion of functional advantages. Key words: digital clock system; SCM; LED Monitor 目录 设计任务书………………………………………………………………………….………I 摘要…………………………………………………………………………………….……III ABSTRACT…………………………………………………………………………….……IV 1. 系统方案…………………………………………………………………………….…..I 系统概述设计任务书………………
7、……………………………………….……………I 摘要……………………………………………………………………………….…….……III ABSTRACT…………………………………………………………………………………..IV 1. 系统方案………………………………………………………………………….………1 1.1 系统概述………………………………………………………………….…………1 1.2 方案论证…………………………………………………………………………….1 1.3 扩展功能…………………………………………………………………………….2 2. 设计过程……………………………………
8、…………………………………………….2 2.1 设计原理………………………………………………………………………… …2 2.2 所需元器件……………………………………………………………………….…2 3. 电路与程序………………………………………………………………………….…….2 3.1 电路设计……………………………………………………………………………2 3.2 程序设计……………………………………………………………………………3 3.2.1 程序流程图………………………………………………………………….3 3.2.2 主要程序分析……………………………………………………
9、………….7 参考文献……………………………………………………………………………6 4. 总结体会…………………………………………………………………………………..16 1、系统方案 1.1 系统概述 本系统可模拟电子时钟,实现时钟,秒表,倒计时定时器功能,主从CPU数据处理、键盘控制与数据显示。主控系统能响应按键,并对其进行相应的处理,再把其对应的结果数据在数码管LED上显示。 具体设计基本任务是: 1.用LED数码管显示时间,且能显示时、分、秒的24小时制的数字钟。 2.具有校时功能,具
10、体方法:设置三个按钮,其中两个按钮分别对“时”、“分”进行校时,另一个按钮则实现对“秒”位清零 系统结构框图如图1.1所示: CPU主机 键盘控制数码管显示 数码管显示 开关控制数码管显示形式 图1.1数字钟系统结构框图 1.2 方案论证 方案一 1.计数部分采用异步2-5-10进制计数器7490,显示部分参考实验七。 1.计时用的“秒”脉冲信号可用实验板中提供的800Hz分频产生。800Hz信号同时作为动态扫描显示电路的时钟信号。 2.时、分校时控制,当校时按钮按下时,可对时、分计数器CP端输入秒脉冲
11、来加速计数速度来达到校时目的。 方案二 1.用单片机定时器中断原理实现数码管动态10ms循环扫描,同时完成计数功能,并经过多次中断产生“秒”信号。 2.可控制按键实现时,分,秒加一,减一功能。 考虑到设计硬件简单原则,利用单片机实现的数字时钟具有编程灵活,便于功能的 扩充等优点,故本设计采用方案二。 1.3扩展功能 1.实现秒表功能。 2.可以用于倒计时定时。 3.可以时分秒清零。 2.设计过程 1.原理 本设计主要应用了单片机原理,利用单片机的I/O口,由键盘控制I/O口,进行单片机相应的程序处理,再用I/O口控制
12、数码管的显示。利用开关来控制开启,暂停计时,并切换时钟,秒表,倒计时定时器功能。 2.所需元器件 六位一体数码管,89C51单片机,7407芯片,12M晶振,按键若干,开关若干,电阻若干,电容若干,导线 3.电路与程序设计 3.1 电路设计: 图3.1总体电路图 本系统的设计电路如图3.1所示,左边按键控制时分秒加一减一操作,右边开关切换数码管显示时钟,秒表,倒计时定时器等功能。单片机下方按键有复位功能:当在时钟方式时,此按键有清零作用;当在倒计时定时器方式时,此按键按下,时分秒均付为最大值。右上角是六位一体的数码管LED,用于显示。数码管左边的上拉电阻具有自动拉高
13、P0I/O口的功能。数码管下方的7407芯片有限流作用,用于防止数码管电流过大而烧毁。 3.2 程序设计 3.2.1 程序流程图 图3-2-1为主程序流程图,图3-2-2为定时器0程序流程图,图3-2-3为定时器1程序流程图。 是否有按键 拆分,即吧两位数放到数码管上 跳到按键子程序 While 死循环 初始化程序 图3-2-1主程序流程图 此为主程序流程图,初始化后,就一直在while里循环,并把秒,分,时分别拆成各位和十位两个数,放到相应的数码管上显示,并检测是否有按
14、键按下,和定时器T0,T1溢出,来执行相应的键盘子程序和定时器0,1的中断程序。 重新初始化T0 t++,t0++ 秒分时计算,ss=60,则ss=0,mm++。分,时同理计算 t0是否为2 t0=0 数码管循环显示一位 显示相应数码管的数值 第三个开关是否按下 j=10 j=610 t是否为j t=0 开关2是否按下 秒加一 开关一是否按下 开定时器1,关定时器0 开定时器0,关定时器1 进入主程序 图3-2-2定时器0程序流程图 此为定时器0流程图,在主程序检测到T0溢出时执行该子程序,该中断主要
15、执行数码管循环显示数字,并检测到一秒后秒加一的功能。 重新初始化T1 t++,t0++ 秒分时计算,ss= -1,则ss=59,mm减一。分,时同理计算 t0是否为2 t0=0 数码管循环显示一位 显示相应数码管的数值 t是否为j t=0 开关2是否按下 秒减一 开关一是否按下 开定时器1,关定时器0 开定时器0,关定时器1 进入主程序 j=610, 图3-2-3定时器1程序流程图 此为定时器1流程图,在主程序检测到T1溢出时执行该子程序,该中断程序主要执行数码管循环显示数字,并检测到一秒后秒减一的功能。 参考文
16、献
[1] 康华光,邹寿彬,秦臻. 电子技术基础——数字部分. 北京——高等教育出版社,2006. 1
[2] 张毅刚,彭喜元,董继成. 单片机原理及应用. 高等教育出版社,2003.12
[3] 刘鲲,刘春亮,黄焱. 单片机C语言入门. 人民邮电出版社,2008年4月第1版.
3.2.2源程序
1. 开始函数的定义:
#include
17、#include
18、的意思 sbit p32=P3^2; sbit p31=P3^1; sbit p30=P3^0; sbit p37=P3^7; 2.主程序: void main() { ds=1; //定时器初始化 P2=0xfe; //数码管位初始化 P0=0x3f; //如果时时钟,断码初始置0 P1=0xff; //键盘初始 t=0;
19、 //1S时,t=700 t0=0; //数码管动态显示一次,t0=2,10ms左右 TH0=(65536-10001)/256; TL0=(65536-10001)%256; TH1=(65536-10001)/256; TL1=(65536-10001)%256; EA=1; ET1=0; //开定时器0 TR1=0;
20、 //定时器开始工作 ET0=1; TR0=1; while(1) { if (P1!=0xff) //判断是否有键,有键就执行jian_pan子程序 jian_pan(); s_shi=ss/10; //拆分 s_ge=ss%10; m_shi=mm/10; m_ge=mm%10; h_
21、shi=hh/10; h_ge=hh%10; } } 3.定时器0中断程序: void timer0() interrupt 1 { if(p32==1) j=610; else j=10; TH0=(65536-10001)/256; //重新初始化T0 TL0=(65536-10001)%256; t++; t0++; if(P2==0xdf)
22、 //如果数码管显示到第6个下一个显示第1个数码管 1101 1111 -> 0111 1111 -> 1111 1110 P2=0x7f; //秒分时计算 if(ss==60) //若ss为60,ss=0,同时mm+1 { ss=00; mm++; } if(mm==60) //若mm为60,mm=0,同时h
23、h+1 { mm=00; hh++; } if(hh==24) //若hh为24,hh=0 hh=00; //数码管动态显示,t=0~2时左移一位,并显示那一位相应的值 if(t0==2) { t0=0; //P2循环左移一位
24、 zy=P2; zy=_crol_(zy,1); P2=zy; //相应数码管显示相应的数值 if(P2==0xfe) P0=duan_ma[s_ge]; if(P2==0xfd) P0=duan_ma[s_shi]; if(P2==0xfb)
25、 P0=duan_ma[m_ge+10]; if(P2==0xf7) P0=duan_ma[m_shi]; if(P2==0xef) P0=duan_ma[h_ge+10]; if(P2==0xdf) P0=duan_ma[h_shi]; }
26、 if (t==j) { t=0; if (p31==1) ss++; } if(t>611) t=0; if(p30==0) //转到timer1上去 {
27、 ET0=0; TR0=0; ET1=1; TR1=1; t=0; } } 4.定时器1中断程序: void timer1() interrupt 3 { j=610; if(ds==1) mm=59; if(ds==0) ds=
28、0; else ds--; TH1=(65536-10001)/256; //重新初始化T1 TL1=(65536-10001)%256; t++; t0++; if(P2==0xdf) //如果数码管显示到第6个下一个显示第1个数码管 1101 1111 -> 0111 1111 -> 1111 1110 P2=0x7f; //秒分时计算
29、 if(ss==-1) //若ss为60,ss=0,同时mm+1 { ss=59; mm--; } if(mm==-1) //若mm为60,mm=0,同时hh+1 { mm=59; hh--; } //数码管动态显示,t=0~2时左移一位,并显示那一位相应的值
30、 if(t0==2) { t0=0; //P2循环左移一位 zy=P2; zy=_crol_(zy,1); P2=zy; //相应数码管显示相应的数值 if(P2==0xfe) P0=duan_ma[s_ge];
31、 if(P2==0xfd) P0=duan_ma[s_shi]; if(P2==0xfb) P0=duan_ma[m_ge+10]; if(P2==0xf7) P0=duan_ma[m_shi]; if(P2==0xef) P0=duan_ma[h_ge+10];
32、 if(P2==0xdf) P0=duan_ma[h_shi]; } if (t==j) { t=0; if (p31==1) { if((ss||hh||mm)!=0)
33、 ss--; } } if(t>611) t=0; if(p30==1) //转到timer1上去 { ET1=0; TR1=0; ET0=1;
34、 TR0=1; t=0; } } 5.键盘子程序: void jian_pan() { uint temp; temp=P1; switch(temp) { case 0xfe: //秒个位加1 { while(P1!=0xff) {
35、 } if(ss==59) ss=00; else ss++; } break; case 0xfd: //秒个位减1 {
36、while(P1!=0xff) { } if(ss==00) ss=59; else ss--; } break; case 0xfb: //分个位
37、加1 { while(P1!=0xff) { } if(mm==59) mm=00; else mm++; } break;
38、 case 0xf7: //分个位减1 { while(P1!=0xff) { } if(mm==00) mm=59; else mm--;
39、 } break; case 0xef: //时个位加1 { while(P1!=0xff) { } if(hh==23) hh=00; e
40、lse hh++; } break; case 0xdf: //时个位减1 { while(P1!=0xff) { } if(hh==00)
41、 hh=23; else hh--; } break; case 0xbf: { ss=0; } break; case 0x7f:
42、 { while(P1!=0xff) { } if(p30==1) {hh=0;mm=0;ss=0;} else {hh=23;mm=59;ss=59;} } break; }
43、 } 4.总结体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。 本系统是以单片机AT89C52芯片为核心部件,实现了时钟、倒计时、秒表的功能。此次在软件上是花费时间最多的,我们上网找资料,上图书馆,尽可能的了解有关于单片机这方面的知识。通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我初步了解了单片机的原理,学会了使用仿真软件进行仿真,以及在常用编程设计思路技巧(特别是C语言)的掌握方面都能向前迈了一大步。 通过本次电子技术课程设计,我们充分认识到了课程设计的理要性和必要性,本次设计使们对已学过的基础知识有了更深入的理解。
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 踏春寻趣 乐享时光——春季旅游踏春出游活动
- 清明假期至安全不缺席风起正清明安全需守护
- 全国党员教育培训工作规划
- XX中小学公共卫生培训树立文明卫生意识养成良好卫生习惯
- 小学生常见传染病预防知识培训传染病的预防措施
- 3月18日全国爱肝日中西医结合逆转肝硬化
- 肝病健康宣教守护您的肝脏健康如何预防肝炎
- 垃圾分类小课堂教育绿色小卫士分类大行动
- 中小学班主任经验交流从胜任到优秀身为世范为人师表 立责于心履责于行
- 教师数字化转型理解与感悟教师数字化转型的策略与建议
- 团建小游戏团建破冰小游戏团队协作破冰游戏多人互动
- 教师使用deepseek使用攻略让备课效能提升
- 办公室会议纪要培训会议内容会议整理公文攥写
- 党员要注重培塑忠诚奋斗奉献的人格力量
- 橙色卡通风儿童春季趣味运动会