《数字钟课程设计武汉理工基础强化(11页).doc》由会员分享,可在线阅读,更多相关《数字钟课程设计武汉理工基础强化(11页).doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-数字钟课程设计 武汉理工基础强化-第 9 页摘 要基于89C51单片机设计数字钟,它是一种应用数字电路的方式实现时、分、秒计时的装置。以89C51单片机作为核心控制器,通过硬件的连接完成一个数字钟系统,再根据系统编制相应的软件让整个系统工作。本系统的计算部分全部在单片机里通过程序来完成。显示部分通过数码管采用动态的方式把计算出的时、分、秒显示出来。控制信号的读入采用查询的方式,因为程序的编写比较容易。控制信号的输入和结果显示以及核心运算部分构成了整个系统,最后在PROTUES里画图并且仿真。关键词:单片机,数字钟,PROTUES,数码管Abstract Basing 89C51 microc
2、ontroller design digital clock, it is a timing device to achieve the application of digital circuits, the minute and second. The 89C51 microcontroller as the core controller, the hardware connection complete a digital clock system, according to the preparation of the corresponding software system fo
3、r the whole system work. All parts of this system are calculated by the microcontroller in the process to complete. The digital display displayed the calculated the hours, minutes, seconds in a dynamic way.Control signal read using the query, because the writing process easier.Control signal input a
4、nd results of operations and the core parts of the whole system, where the final drawing and simulation in PROTUES.Key words: Microcontroller, digital clock, PROTUES, digital目录数字钟设计 1设计任务及分析1.1 设计要求 设计七段码显示方式的数字钟。该钟具有时、分、秒显示,时钟有十二进制与二十四进制两种选择。设计有时、分、秒的校正功能。 1.2 设计分析 根据要求设计数字钟,具有时、分、秒显示和调节功能。主控制器采用89
5、C51单片机,基于单片机的硬件电路连接比较容易,而且编程比较方便和简单。对于整个系统的实现比较容易。对于时、分、秒的调节由外电路来控制,通过对控制信号的查询读取送入单片机,在单片机内计算后通过数码管显示。对于时间的处理是:秒的变化是通过内部中断的方式,给单片机内部定时器设置1秒的计时时间,每当发生溢出中断就响应给秒数组值加1并显示;当秒值到达60时就把分数组值加1,同时让秒数组清零;时的操作依此类推。 2 方案比较及选择 2.1 LED显示方案的选择 方案1:把所要显示的数据通过专用的七段显示芯片的转换输出给LED显示屏。其优点是输出简单,可以简化程序,但增加了芯片的费用。 方案2:通过软件把
6、所要的数据转化为七段显示的数据,直接通过单片机接 口来显示,其优点是简化了电路,但增加了软件编写的负担。通过对方案的比较,选择通过软件编写来输出显示信号,比较简单经济。2.2按键状态读取方案的选择 方案1:把按键接到单片机的中断口,若有按键按下,单片机接收到中断信号,再通过软件编写的中断服务程序来执行中断,优点是接线简单,简化了电路,但软件编写较为复杂,不易掌握。 方案2:不使用中断,直接把开关分别接在单片机的接口上,通过查询端口信号来动作。其优点是程序得到简化,可读性加强。通过对方案的比较,选择方案2通过查询方式来读取端口信号,相对来说编程和硬件电路都比较简单。3. 系统实现的原理 设计方案
7、的总体结构图如图3-1所示:数码管显示时间开关控制单元模块89c51单片机整体控制图 3-1 设计方案结构图 原理阐述:由图3-1所示,通过开关控制单元的输入设定时间,在单片机内处理后通过数码管显示,开关控制单元主要有时、分、秒时间设置的选择档,分别接P1.0和P1.1口。还有一个时钟十二制和二十四制的选择档,接P1.2口。P1.3口作为时间的加减设置。数码管的显示码输入接P0口,位选接P2口。秒的值每经过一秒钟自加1,时间间隔由内部时间计时器发生溢出中断调用中断服务子程序完成。4. 系统硬件设计4.1总体电路设计 根据系统的要求,设计出的数字钟应该有控制端和显示端,这两部分的连接是通过89C
8、51单片机来完成的,控制端主要由四个按键组成,它们都接单片机的P1口,数码管采用6位7段数码管,它的位选端是通过P2口控制的,显示码是由P0口输入的。 根据设计要求用PROTEUS画出的硬件连线图如下图4-1所示:图4-1 系统总体硬件电路图4.2模块电路设计4.2.1时间校正部分电路设计 时间设置部分电路图如下图4-2所示图4-2 时间校正部分电路图 如图4-2所示,P1.0口接时调节选通开关,P1.1口接分调节选通开关,P1.2口接十二进制和二十四进制选择开关,兼有秒调节选通功能,当P1.2口输入低电平时为十二进制方式,P1.3口为时间加减控制输入口,每按下一次可对时分秒分别进行加减操作。
9、具体的实现由内部的程序计算完成。 4.2.2显示模块电路设计 系统的显示部分电路接线图如图4-3所示:图4-3 系统的显示部分电路图 如图4-3所示,显示器采用的是6位7段数码管,数码管的显示码的输入端经上拉电阻接P0口,位选端是经收发器74LS245接到P2口。数码管的显示编码已经编好放在计算机的内存中,时间的显示通过软件的计算把显示码调出显示。5. 系统软件设计5.1系统总体流程图软件设计思想:内部设定时器,当达到1秒时发生中断给秒计数加1,当达到60时给秒计数清零并给分计数加1。当分计数达到60时清零并给时计数加1,时计数分为十二进制和二十四进制,当在相应的进制下达到相应终值时清零。系统
10、总体流程图如图5-1所示:开始给单片机复位开定时中断秒计时并显示控制信号?YNNNN秒调节?分调节?时调节?YYN加减信号?Y时或分或秒加减1数码管显示图5-1 系统软件总体流程图5.2 系统显示模块程序设计设计说明:显示模块是用6位7段数码管来显示时间。先将显示码存入数组中,指向最左边一位,然后取出要显示的数据,指向换码表首地址,取出显示码,从P0口输出显示码,P2口输入位选码,显示时、分、秒,最后修改数组地址,求下一位位选码继续显示。显示程序流程图如图5-2所示: 显示数据的显示码求下一位选码送位段码到P0口输出 显示数据的显示码动态显示子程序取出要显示的时间据送位显码到P2输出延时图5-
11、2 显示模块的程序流程图5.3 键盘扫描模块程序设计设计说明:控制信号由查询方式扫描键盘得到。即P1.0置低时进入时调节模式,此时在按下第四个键即P1.3由高变低时,时就自加1;分校正类似,由P1.1来控制选择模式。时钟的的十二进制和二十四进制由P1.2控制,低电平为十二进制高电平为二十四进制。键盘扫描模块程序流程图如图5-3所示:开始秒键按下?Y秒加1NNN分键按下?YY分加1时键按下?时加1显示时间结束图 5-3 键盘扫描模块流程图6系统仿真结果61系统仿真结果截图 开关按钮打到十二进制选择状态即P1.2置低电平。此时的时间是09:00: 39仿真截图如图6-1所示:图6-1 十二进制仿真
12、结果截图 开关按钮打到二十四进制选择状态即P1.2置高电平。此时的时间是21:00:39仿真截图如图6-2所示:图6-2 二十四进制仿真结果截图 62系统仿真结果分析 数字钟系统上电复位后,初始值设定为12:00:00,对当前时间进行校准,当在二十四进制下进行校准后,得到当前时间为21:00:39如图6-2所示时,立刻将其转换为十二进制模式下,即给P1.2口置低电平,此时就会显示09:00:39如图6-1所示。可见在保证时间正确的情况下,可以将二十四进制的时间直接转换到十二进制下,这里主要是通过软件来完成的,当系统检测到进制的转换信号后,就会把二十四进制的时间通过把时当前值减去12得到。对于0
13、点的转换是通过赋值的方式直接变为十二进制下的12点。当需要把十二进制转换为二十四进制时,也可以通过软件的方式直接转换不改变时间的正确性且需要对时间进行重新校准。其转换的原理相同。 心得体会真的很辛苦,不过终于我的设计完成了。这一刻不仅是高兴,更多的是激动。此刻我也真正的学到了很多东西。已经不知道去过图书馆多少次查阅资料,一次一次的仿真实验,一次一次的方案设计,一次一次的编制程序。在经历过无数次的失败,我终于成功了。得到了理想的仿真结果。看着自己的课程设计,真的无比的高兴,心中充满成就感。 通过本次课程设计,我得到了以往不曾有过的体会与经验。将自己学到的理论知识通过本次课程设计应用到了实际应用当
14、中,提高了自己各方面的能力。同时也加深了自己对于相关课程基础理论知识的理解和掌握,学会了综合运用所学知识。学会了应用所学的知识在实际硬件电路上编程完成所需功能。对单片机的应用有了进一步的掌握。懂得了如何去发现问题,思考问题,解决问题。通过这次基础强化的课程设计,我学会了灵活的运用单片机,更学会了如何灵活的使用单片机的中断功能,使对于计时的应用更为精确。最后,我最大的收获就是: 失败是成功之母,只要努力就会有收获。参考文献:1 张义和、王敏男等编著.例说51单片机.北京:人民邮电出版社.20082 陈涛编著.单片机应用及C51程序设计.北京:机械工业出版社,20103 齐向东、刘立群编著.单片机
15、控制技术实践.北京:中国电力出版社,20094 孙晓明EDA实验指导书武汉:武汉理工大学教材中心,20075 张靖武,周灵彬编著.单片机系统的PROTEUS设计与仿真. 北京:电子 工业出版社,2007.附录 本设计所用的C程序清单#include#include#include#define unchar unsigned charsbit KH=P10;sbit KM=P11;sbit KT=P12;sbit KB=P13;unchar hour,minite,second,second20;unchar display_buff6;unchar display_code10=0x3F,0
16、X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F; /数码管显示码void delay(unchar t) /延时子程序 unchar i,j; for(i=0;i=t;i+) for(j=0;j=140;j+) _nop_();void display(void) /显示子程序 unchar i; P2=0xfe; P0=0; for(i=0;i12) hour=hour-12; if(KT=0&(hour=24|hour=0) /十二进制和二十四进制转换 hour=12; if(KH=0) if(KB=0) while(KB=0); hour+;if(
17、KT=1&hour=24) /十二进制和二十四进制转换 hour=0; KB=1;if(KT=0&hour12) /十二进制和二十四进制转换 hour=hour-12; KB=1; if(KM=0)/键盘控制信号处理 if(KB=0) while(KB=0); minite+;if(minite=60) minite=0; KB=1; if(KM=1&KH=1) if(KB=0) while(KB=0); second+;if(second=60) second=0; KB=1;void init(void) /程序的初始化(内部计数器的初始化) TMOD=0X11; TH1=0X3C; TL
18、1=0X0B0; TF1=0; TR1=1; TH0=0x3c; TL0=0x0b; TF0=0; TR0=1; hour=0; minite=0; second=0; ET1=1; ET0=1; EA=1;void main(void) /主程序开始 init(); while(1) display_buff5=display_codehour/10; display_buff4=display_codehour%10|0x80; display_buff3=display_codeminite/10; display_buff2=display_codeminite%10|0x80; display_buff1=display_codesecond/10; display_buff0=display_codesecond%10; display();