毕业设计论文基于单片机的作息控制系统.doc
内部资料注意保存基于单片机的作息控制系统 姓名: 队别: 07402队 专业: 电子工程 指导教员: 职 称: 讲师 解放军理工大学训练部制表二一一 年 六 月目录摘要1关键字:1一、引言:1(一)作息时间控制钟概述1(二)单片机概述21、单片机简介22、MCS-89C51单片机的特点及功能:3二、系统设计4(一)基本设计要求和主要实现功能4(二)设计思路与实现方法61、设计总体框图62、主程序流程图:63、设计子模块7(1)计时中断和时间转换模块7(2)显示模块10(3)键盘模块12(4)打铃模块13三、程序运行截图13四、设计体会14五、参考文献15基于单片机的作息控制系统摘要:本文是基于单片机的作息控制系统进行的实验设计, 作品具有实时显示和闹铃定时的功能,同时也具有时钟校准和打铃时间表转换的附加功能。可以执行不同的时间表(冬季和夏季不同的作息时间)的打铃,可以任意进行实时时间校准。本设计实现的这些功能,可以给学校及其他机关企业的日常作息安排带来方便,整体性好,人性化强、可靠性高,实现了对时间控制的智能化。关键字: 单片机;数字钟;作息;定时;一、引言:(一)作息时间控制钟概述科技的进步需要技术不断的提升。一块大而复杂的模拟电路也许会花费了您巨大的精力,繁多的元器件增加了您的成本。而现在,只需要一块几厘米见方的单片机,写入简单的程序,就可以使您以前的电路简单很多。相信您在使用并掌握了单片机技术后,不管在今后开发或是工作上, 一定会带来意想不到的惊喜。 本文是以MCS-89C51单片机为核心控制器件的作息时间控制钟,由键盘、开关、LED数码管灯模块和数码指示灯模块四部分组成。它利用MCS-89C51单片机的11.0592MHz时基计时,进行时钟计算,并利用实验平台的显示模块进行输出显示。MCS-89C51单片机是整个设计的核心控制器件,根据从键盘接受的数据控制整个系统的工作流程。整体性好,人性化强、可靠性高,实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,是现代学校必不可少的设备。(二)单片机概述1、单片机简介MCS-89C51单片机是一个低电压,高性能CMOS的8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的8051单片机可为您提供许多较复杂系统控制应用场合。MCS-89C51芯片的引脚图:MCS-89C51芯片有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,8051可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。2、MCS-89C51单片机的特点及功能:&、兼容MCS51指令系统&、8k可反复擦写(>1000次)Flash ROM&、32个双向I/O口&、256x8bit内部RAM&、3个16位可编程定时/计数器中断&、时钟频率0-24MHz&、2个串行中断&、可编程UART串行通道&、2个外部中断源&、共6个中断源&、2个读写中断口线&、3级加密位&、低功耗空闲和掉电模式&、软件设置睡眠和唤醒功能二、系统设计(一)基本设计要求和主要实现功能本设计是一个具有报时功能的作息时间控制钟。它利用MCS-89C51单片机的11.0592MHz时基计时,进行时钟计算,并通过LED数码灯模块将它显示出来。在进行时间计算时,秒每加1时,都与规定的作息时间比较,如果相等则进行相应的控制或动作。以我院目前的上下课作息时间为例,如下所示:6:00 起床6:10 早操6:50 早饭8:008:50 第一节课9: 009:50 第二节课10:1011:00 第三节课11:1012:00 第四节课12:40 午休14:40 课前准备15:0015:50 第五节课16:0016:50 第六节课17:0017:50 活动18:0018: 30 晚饭19: 0021: 30 晚自习22:00 熄灯利用单片机实现对学校电铃的自动控制,使周一至周五学校电铃按作息时间发出响声,学校作息变动时,只需调整按键即可。通过按钮调整,使电铃能按照各个时期学校的需要在规定时间响铃。同时本系统应用了MCS-89C51单片机的11.0592MHz时基计时芯片为基础,提供时间。显示在数码管上,6位数码管从左向右分别表示十时、个时、十分、个分、十秒、个秒,有五个时间调整按钮,分别控制设置状态转换、时钟、分钟、秒钟以及返回原计时状态键。设置状态转换键,按一次,系统跳转入设置状态,停止计时。时钟、分钟、秒钟按键,每按下一次,相应的时、分、秒进行加一。状态返回键每按下一次,系统重新跳转入正常计时状态。根据需要设定好时间后,通过数码灯的闪烁提示进行响铃提示。系统中设置了作息季节转换开关,通过转换可以将作息时间在夏季和冬季作息时间表中转换。(二)设计思路与实现方法1、设计总体框图2、主程序流程图3、设计子模块(1)计时中断和时间转换模块本设计中,计时采用定时器T0中断完成,在主程序中通过设置计数器初值为0X06,使P0口输出周期为0.25毫秒的方波,即每0.25毫秒实时时钟产生一次中断,从而使系统转向相应的中断服务程序。定时器TO用于时间计时,计时时溢出中断周期设为0.25ms,由于采用12MHz频率的晶体,计数速率为1MHz,机器周期为1us,通过计算得到T0的计数初值应该置为0X06,当到达计数值后产生下降沿中断,系统转入中断服务程序,在中断服务程序里实现数码管的动态显示和时间的变化以及存储。数码管每20ms显示下一个,循环一次后在重复上述过程,秒每4000个中断周期加1,当加到60时秒置0,分加1,当分加到60是小时加1,分置0,当小时加到24时置0。每次执行该中断服务程序时都对当前时间进行动态存储。设计流程图:(2)显示模块数码管显示模块由8个共阴极的数码管组成时、分、秒钟的显示。设计采用数码管的动态扫描方式来完成。在多位8段数码管显示时,为了简化硬件电路,通常将所有位的段选线相应地并联在一起,由一个单片机的8位I/O口控制,形成段选线的多路复用。而各位数码管的共阳极或共阴极分别由单片机独立的I/O口线控制,顺序循环地点亮每位数码管,这样的数码管驱动方式就称为“动态扫描”。在这种方式中,虽然每一时刻只选通一位数码管,但由于人眼具有一定的“视觉残留”,只要延时时间设置恰当,便会感觉到多位数码管同时被点亮了。显示效果较好。设计原理图:程序流程图:在显示的模块设计中,数码管的循环显示的程序编写遇到了很大的误区,开始编写时没有注意到循环右移的表示方法,但运行时,六位数码管只有最右边的两位是正确显示,其他的左边四位全部显示乱码,出现这样的问题,开始以为是自己在数据转换反面的问题,但经过两天的调试都没有解决问题,最后求助导师,分析结果为在数码管的移位顺序上出错,之后将原来的普通 右移的表示方式改编为循环右移,问题当即解决。排除错误的过程中了解到自己编程时还不够细心,分析错误的实际能力还很欠缺。(3)键盘模块本实验平台利用8155的PA口、PB口和PC口,扩展I/O口。实现按键值的扫描与判定。程序设置有五个时间调整设置按键,分别控制设置状态转换、时钟、分钟、秒钟以及返回原计时状态键。设置状态转换键,按一次,系统跳转入设置状态,停止计时。时钟、分钟、秒钟按键,每按下一次,相应的时、分、秒进行加一。状态返回键每按下一次,系统重新跳转入正常计时状态。程序流程图:在实验中遇到的问题及解决方法:在整个实验过程中,键盘模块的设计与程序的编写自己感觉难度最大,遇到的困难和问题也是最多的。在开放性实验过程中也同样遇到键盘设计问题,当时解决的就不是很好,没有完全搞清楚键盘的原理和实现方法。面对同样的问题,心里有畏难,恐惧的心理。这次是在2*8的键盘上进行扫描,键值的判断。首先 PB口和PC口的功能了解的就不清楚,在给端口赋值是高电位还是地电位搞不清,是该检测PB口还是PC口也搞不清,当向教员请教时,教员并没有直接告诉我解决方法,而是给了几本参考书自己去学,还教会了我在不知程序语句怎么运行时,可以尝试着跟踪运行,观察返回地址与返回值是否与自己预计的相同,不同时问题出在哪里。经过近一周的学习与跟踪调试,最终熟悉了键盘的设计实现方法。解决了键盘设计的重大问题。设计取得突破进展。(4)打铃模块程序将按秒来比较,实现时钟的当前时间与所程序所设置的闹铃时间表进行判断,当两者一样时,则启动打铃设备,实现响铃。实验由于硬件平台未提供蜂鸣设备,所以使用一个发光二极管来代替响铃效果。三、程序运行截图本系统设计采用了NTG-402型单片机应用系统实验开发平台为硬件环境,并应用了“星研”集成环境软件和配套的在线实时仿真器进行仿真。使得作品在研发过程中的难度有所降低,方便调试。如下是仿真软件的下的程序运行情况:四、设计体会通过本次毕业设计的制作,总结如下:毕业设计的过程就是学习的过程,在设计过程中验证理论的正确性,弥补知识的漏洞。正确对待设计过程中遇到的问题与错误,遇到错误与问题要敢于面对并设法找到解决的办法。通过对该程序的设计,我对单片机编程有了更深一步的认识与了解,而且我还通过查阅了不少相关资料,更深刻地认识和巩固了平时所学的知识,使理论与实践有机的结合,提高了我对所学专业的兴趣并积累了一些相关经验。我认为这就是一种很好的提高自身能力的方法。这个设计的大部分内容都是在教员的帮助和自己查阅相关实验书下完成的。自己亲手编写完成,所以对程序的过程和方法有着较深刻的了解。虽然自己尽了很大的努力,但是还有很多不尽人意的地方,我想大概是由于开展独立开发经验不足的缘故吧,作为一个学电子工程的学生,我想我有必要通过这次课设更多的了解自己的不足,从而在以后的学习工作中不断增强自己的动手能力,争取在软件编程方面取得更大的进步。该程序还有很多缺陷。今后我要加强学习,去认识更深层的科学知识,使我设计出来的东西更加完美。要严格要求自己,就像严格要求设计的每一个细节一样。一种端正的态度是一个系统设计成功的保障。在此要衷心感谢谢波教员。谢教员治学严谨、学识渊博。在他的悉心指导之下,我的编程水平、科研能力得到了明显提高。在学习工作中,谢教员勤勉的敬业精神和一丝不苟的态度成为了我学习的榜样,使我受益匪浅。同时也要感谢教研室给我提供了良好的实验环境和必要的帮助。五、参考文献51单片机C语言应用开发技术大全,人民邮电出版社,刘坤,宋戈,赵红波,张宪栋单片机系统设计实验教程,解放军理工大学通信工程学院,潘克修等单片机基础,北京航空航天大学出版社,李广弟、朱月秀51单片机工程应用实例,北京航空航天大学出版社.2009,唐继贤单片机C语言程序设计实例,北京航空航天大学出版社.2010,彭伟8051单片机实践与应用,清华大学出版社.2008,吴金戎14