单片机课程设计数字电子钟的设计.doc

上传人:仙人指路1688 文档编号:4147512 上传时间:2023-04-07 格式:DOC 页数:27 大小:725KB
返回 下载 相关 举报
单片机课程设计数字电子钟的设计.doc_第1页
第1页 / 共27页
单片机课程设计数字电子钟的设计.doc_第2页
第2页 / 共27页
单片机课程设计数字电子钟的设计.doc_第3页
第3页 / 共27页
单片机课程设计数字电子钟的设计.doc_第4页
第4页 / 共27页
单片机课程设计数字电子钟的设计.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《单片机课程设计数字电子钟的设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计数字电子钟的设计.doc(27页珍藏版)》请在三一办公上搜索。

1、 单片机技术课程设计说明书 题 目数字电子钟的设计系 、 部:电气与信息工程系 学生姓名:许有才 学 号:09401040346 指导教师:吴 乐 专 业:自动化 班 级:自动化(本科)0903班 完成时间:2011年12月 前 言该课程设计为数字电子钟的设计。以AT89S52为核心,配合LED数码管显示器和按键为用户提供长期、连续、可靠、稳定的工作环境。该数字电子钟有时分秒显示和学号显示以及时间调整的功能。系统软件设计包括单片机、计算机两部分的编程。计算机软件编程主要实现参数设置、串行口数据接收、指令发送以及数据的显示和存储。单片机软件编程主要实现键盘、LED显示等各模块的功能,采用汇编语言

2、编程。目 录第一章 设计任务和方案11.1 设计任务11.2 功能要求说明11.3 设计课题总体方案及工作原理说明1第二章 数字电子钟的硬件系统的设计32.1硬件系统各模块功能设计32.2 设计课题电路原理图、PCB图、元器件布局图32.3元器件清单4第三章 数字电子钟的软件系统的设计53.1 使用的单片机资源的情况53.2 各模块功能简要介绍53.3 程序的流程图53.4 程序清单8第四章 系统仿真与分析94.1 设计结论和使用说明94.2 仿真结果94.3 误差分析104.4 设计难点和体会11参考文献13附录A 系统原理图与PCB图14附录B 元器件清单15附录C 程序清单16第一章 设

3、计任务和方案1.1 设计任务(一)设计题目:数字电子钟(二)设计目的与任务:学生通过理论设计和实物制作解决相应的实际问题,巩固和运用在单片机技术中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。1.2 功能要求说明设计一个具有特定功能的电子钟。该电子钟按键复位后能自动显示设计者的学号;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行计时,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,当按下键2,秒钟加一,按下键3分钟加一,按下键四时钟加一,调整

4、结束后可按启动/调整键再次进入时钟运行状态。1.3 设计课题总体方案及工作原理说明设计中采用AT89S52芯片及LED显示器,独立式按键构成一个简单的数字电子钟。设计中是采用单片机的内部定时器进行定时,程序框图如图1-1所示 整个电子钟的工作原理是:在正常的供电状态下,首先利用单片机定时,到了相应的时间由单片机将所需要显示的数据送到LED显示器的输入口,当有键按下时则进入相应的按键显示和调整状态,进行按键调整。 图1-1 总的设计的框图第二章 数字电子钟的硬件系统的设计2.1硬件系统各模块功能设计该数字电子钟以单片机最小系统为核心,其他主要电路有键盘电路、LED数码管显示电路、USB接口电路模

5、块、蜂鸣电路。主要模块的功能:(1)单片机最小系统的组成以及功能介绍由AT89S52单片机、时钟电路和复位电路构成。AT89S52是一种带8K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。时钟电路由一个12MHZ的石英晶体振荡器和两个33pF的的电容组成振荡电路和分频电路,为单片机提供内部时钟。复位电路采用上电复位和按键复位结合的方式对电路进行复位,主要是通过RST引脚送入单片机。(2)键盘模块采用独立式键盘接法,共有八个按键来对电路进行控制。分别接

6、在单片机的P1.0-P1.7口线上。电子钟只使用其中的4个按键,一个控制启动与调整,其余三个分别为调时、调分、调秒。(3)LED显示电路采用2个八位一体的共阳数码管显示器进行显示,由于单片机可以直接驱动数码管,所以不必设置数码管的驱动电路,16个470的电阻起限流的作用。将段控口接在P0口上,位控口接在P2口上,实现对显示的控制(设计为动态显示)。(4)USB接口电路接上一个可以连接电脑的USB电源接口,该电源电压很稳定,为单片机工作供电。2.2 设计课题电路原理图、PCB图、元器件布局图采用Protel软件,Protel99SE是Protel公司近10年来致力于Windows平台开发的最新结

7、晶,能实现从电学概念设计到输出物理生产数据,能够和形象的画出我们所要设计的产品。电路原理图和PCB图及元器件布局见附录A。 2.3元器件清单见附录B。第三章 数字电子钟的软件系统的设计3.1 使用的单片机资源的情况该数字电子钟用到了单片机的定时器的功能,此外用到了单片机的中断功能,在数据的显示时所采用的是直接送段控码和位控码的方法,因此需要将数据存到单片机的程序存储器中去。由于电子钟要求可以进行调节,因此,需要在单片机的P1口上加上按键,本设计采用独立式键盘,直接接在P1口上且按键的结果存贮在单片机的内部数据存储器里面。用到的LED数码管接到了单片机的P0口线上和P2口线上,以实现动态显示。

8、3.2 各模块功能简要介绍该数字电子钟所用的软件模块有定时器模块、按键模块、LED显示模块。(1)定时器模块选择定时器1,设置定时方式为方式1,设置定时时间为50mS。选择定时器0,设置定时方式为方式1,设置定时时间为1mS。(2)按键模块采用独立式键盘,共用四个按键对电路进行控制和操作,分别为K0、K1、K2、K3来控制电子钟的启动和调整。(3)LED显示模块 该电子钟一通电即让它显示 “Z0903-46”,按开启键(K1)即可显示时分秒(0-0-0-)并开始计时,再按开始/暂停键就可以对电子钟进行调整:调时(K4)、调分(K3)、调秒(K2)。3.3 程序的流程图(1)整体设计流程图图3-

9、1 整体功能流程图(2) 延时1毫秒程序设计流程图 图3-2 延时1毫秒程序流程(3) 检查按键程序设计流程图图3-3 调时检查按键程序流程(4) 检查按键程序设计流程图图3-4 调时检查按键程序流程3.4 程序清单见附录C。第四章 系统仿真与分析4.1 设计结论和使用说明(1)设计结论通过对单片机进行外接按键和LED数码管的操作以及加上硬件电路和软件的结合,实现了该数字电钟显示“Z0903-46”以及时、分、秒,同时还可实现对该电子钟进行调整的功能。通过测试、仿真以及修改,该电子钟最终能正常的工作。(2)使用说明该数字电子钟采用两个四位一体数码管能实现时分秒的显示。当电子钟一上电即可显示“Z

10、090346”,设置数字钟的初始时间为00时00分00秒,用四个按键实现电子钟的显示和调整的功能,分别为K0,K1,K2,K3,其中K0键为开启/调整键,开启之后再按K0键可实现暂进入调整状态,进入调整状态后按K1、K2、K3可分别对秒、分、时的调整, 每按一下对应的按键可以对当前显示的位进行调整,其进制都为60进制,即时、分、秒的变化范围是059,每按下一次,相应的时钟位加一,在调整到需要的时刻后,再按一下开始/暂停键即可从该时刻起运行电子钟。在正常运行时,只有暂停/开始键起作用,其他按键不影响电子钟的工作状态。4.2 仿真结果在仿真时用到了两个软件,第一个是Keil,第二个是Protues

11、,本次仿真是将两个软件结合起来进行的。Proteus 软件所提供了30多个元件库,数千种元件。元件涉及到数字和模拟、交流和直流等。在Proteus软件包中,不存在同类仪表使用数量的问题。Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似但功能更多。用Protues软件进行仿真,其仿真的电路图如图4.1所示图4-1 Protues仿真电路图当按下开始/暂停键时,数字电子钟进入工作状态,当按下调整键时,数字电子钟进入调整界面,此时LED数码管显示器的显示如图4-3所示。图4-2 数字电子钟显示时分秒的显示4.3 误差分析本数字电子钟在跟标

12、准的电子钟比较时,时间稍微慢一点,产生此种情况的原因有:其一是在执行程序指令时,由于需要耗费一定的时间,因此会比标准的电子钟要慢一点。其二是晶振不够标准,使得定时器定时时不够精准。4.4 设计难点和体会(1) 设计难点从选题到硬件电路的设计,再到软件电路的设计,整个过程当中我学到了很多的东西,在老师的细心指导,耐心分析下,我把整个思路理清,并开始了设计的规划,在原理图的绘制时我查找了相关软件的使用方法,并悉心向老师和同学请教,学会对PROTEL和PROTEUS的使用。在软件系统的设计当中,我遇到了很多的问题,不能把一些小模块系统的联系起来,但通过不断的学习,最终花了四天的时间把整个程序完整的编

13、出来了,并能进行仿真使用。到最后做板子的时候,因为是第一次做板子,很多细节的地方都没注意,比如封装元器件时,要看清楚所买元器件的引脚、尺寸和功能以及质量,我做的第一块板子不怎么的好,结果在用熨斗熨的时候出现暴起的现象,只能再重新做一块,而且买的数码管跟实际所画的PCB板尺寸大小不一样,而且引脚搞错了,只能另想办法,很影响实验进度,所以在封装元器件时一定要做好充分的准备。在做板子的时候因为熨的时候没把握好,结果出现了很多的断点,只能一个一个查,一个一个补,麻烦很大,工作量也很大,而且很容易疏忽,所以将图纸熨到板子上时一定要熨的均匀,把握好时间和力度。打孔时一定要对准,不要太急,慢慢来。插元器件的

14、时候一定要把每个元器件的引脚搞清楚,插之前要用万用表测好每个引脚是该接地还是该接电源,千万不能插反了。焊接的时候要标准不能产生虚焊,也不要遗漏,要均匀,焊锡不能太多也不能太少。到最后就是检查电路的连接了,搞清楚整个电路的连接是怎么样的,当显示器不亮的时候可以采用软件检查法或者硬件检查对板子进行测试,这个过程中一定要细心且要有耐心,不要灰心,相信自己一定能找出原因,只要自己持之以恒肯定能把错误找出来并纠正。在对板子进行测试的时候出现了很多的错误,花了好几个晚上的时间来查找电路的错误,首先是电源指示灯不亮,灯座接反了,然后是显示器不亮,最后通过用万用表对电路进行测试,最终让电子钟正常的工作了,导另

15、外是熨的时候出现了太多的断点没补好,以及在焊接的时候出现了很多的虚焊,导致某些段控口和位控口的不可用,因为是第一次做板子,所以之前很多该注意的地方都没有注意,最后留下一大堆的问题,使得整个制版的过程耗费很多的精力和时间。从中我学会了很多,包括原理图的绘制,程序的设计,PCB的绘制,还有板子的制作,更重要的是我懂得了,要做好一个东西,准备工作必不可少,这样才能减少后面的不必要的麻烦,而且遇到困难和麻烦一定要有耐心和信心去把它攻破。(2) 设计体会吴老师的教学方式我挺赞同,你能够让我们把实际和理论结合起来,我觉得这很好,而且对现在的我们来说很重要,大学三年来,学的东西可以说很多,但是我们一直都不知

16、道,手中的这些知识到底有什么作用,而且很多的老师都只顾着讲自己的课程,就像是完成一项别人交给他的任务一样,从不关心学生学的到底是怎么样,所以我觉得适当的给学生一些将理论联系实际的作业和任务,能够让我们更明白和理解自己学的东西,也让我们学的不再那么迷茫和渺茫了。其次老师和同学的关系我觉得对同学能否学习好这门课程很重要,课堂上老师应该要严肃认真,下课后老师可以多和同学们接触和聊天,培养和同学们的关系,和同学们做朋友,对同学们提出的问题要认真对待。还有就是,老师的责任不仅仅是传授知识,更重要的是给我们传授学习经验和方法,培养学生的发散思考方式,以及多传授点社会经验和教训,教我们不要走不必要的弯路以及

17、在社会上你所必备的生存工具。参考文献1 李朝青. 单片机原理及接口技术M.北京:北京航空航天大学出版社,1998.2 王幸之等.单片机应用系统抗干扰技术M.北京:北京航空航天大学出版社, 1999. 3 何为民.低功耗单片微机系统设计M.北京:北京航空航天大学出版社,1994.4 李华.MCS-51系列单片机实用接口技术M.北京:北京航空航天大学出版社, 1996.5 何立民.单片机高级教程M.北京:北京航空航天大学出版社,2000.6 马忠梅.单片机应用程序设计(第四版)M.北京:北京航空航天大学出版社,2006.附录A 系统原理图与PCB图(原理图)(PCB图)附录B 元器件清单附录C 程

18、序清单 ORG 0000HMOV 70H,#0C0H ;70H到7AH存放的是0到9、一的段控码MOV R2,#70H ;R2和R3控制秒钟的段控码MOV R3,#70HMOV R4,#70H ;R4和R5控制分钟的段控码MOV R5,#70HMOV R6,#70H ;R6和R7控制时钟的段控码MOV R7,#70HMOV 71H,#0F9HMOV 72H,#0A4HMOV 73H,#0B0HMOV 74H,#99HMOV 75H,#92HMOV 76H,#82HMOV 77H,#0F8HMOV 78H,#80HMOV 79H,#90HMOV 7AH,#0BFH MOV 6FH,#00H;6F

19、H存放1秒钟由50ms循环20次的次数MOV 6EH,#00H;6EH存放控制定时器循环的次数MOV SP,#30H;以上程序为:1、将段控码存放到70H到7AH中。2、开辟堆栈 ;以下程序为显示显示和判断开始计时键是否按下JC0:LCALL XSXH;调两次用显示学号的子程序 LCALL XSXHLCALL JCAJ;检查开启案件有没有按下,如果按下,则在A中的相应为会置一 JB ACC.0,JC0;对A中的ACC.0进行判断,如果为为高电平,则没有按下LCALL XSXHLCALL XSXHZL1:LCALL JCAJ ;判断按键是否松开JB ACC.0,JSKS ;如果松开则跳转到JSK

20、S的程序中,LCALL XSXH ;如果没有松开则2次显示学号(同时也起延时6秒的作用)LCALL XSXH SJMP ZL1 JSKS:MOV IE,#00H ;时钟开始运行,让定时计数器1,以工作方式1工作,并置初值 MOV TMOD,#11H;定时计数器1以工作方式1计时50ms,循环20次MOV TH1,#3CH;定时时间是50MSMOV TL1,#0B0HSETB TR1;以查询方式判断计时是否已到,如果没有到则进行跳转到LOOP5 KS:JBC TF1,LOOPS SJMP LOOP5;如果到达则进行电子时钟的进位操作;此段程序为电子时钟的各个数码管的段控码的进位判断 LOOPS:

21、MOV TH1,#3CH MOV TL1,#0B0HMOV R0,#6FH;6F控制循环20次,当达到一秒钟,控制各个数码管的段控码的改变INC R0CJNE R0,#14H,LOOP5 ;达到一秒钟则执行下面的程序MOV R0,#00HINC R2CJNE R2,#7AH,LOOPMOV R2,#70HINC R3LOOP:CJNE R3,#76H,LOOP1MOV R3,#70HINC R4LOOP1:CJNE R4,#7AH,LOOP2MOV R4,#70HINC R5LOOP2:CJNE R5,#76H,LOOP3MOV R5,#70HINC R6LOOP3:CJNE R6,#7AH,

22、LOOP4MOV R6,#70HINC R7LOOP4:CJNE R7,#72H,LOOP5CJNE R6,#74H,LOOP5MOV R6,#70HMOV R7,#70H;此段程序为显示数码管的值,并判断调整开关是否按下 LOOP5: LCALL XSSMGLCALL XSSMGLCALL JCAJ ;检查开启按键有没有按下 JB ACC.0,KS;没有按下就继续计时,按下就跳转到调时状态LCALL XSSMG;次语句既可以显示数码管,又可以达到延时的效果LCALL XSSMGZCJC:LCALL JCAJ;检查开关有没有松开,如果松开就跳转到调时程序JB ACC.0,TIAOSHILCAL

23、L XSSMGLCALL XSSMGSJMPZCJC;如果没有松开就继续,就继续显示数码管并检查 ;此段程序是将调整按键的变化的值放到数码管显示,并判断调时结束按键是否按下TIAOSHI:LCALL XSSMG LCALL TSJCAJ;判断调时的哪个键按下,并就其控制的值加一LCALL XSSMG LCALL JCAJ;检查结束调整按键有没有按下JB ACC.0,TIAOSHI;没有按下就继续调时,LCALL XSSMGLCALL XSSMGJXJC2:LCALL JCAJJB ACC.0,KS;判断调时键是否松开松开,则跳转到计时状态 LCALL XSSMGLCALL XSSMGLJMP

24、JXJC2;此段程序为定时器0,工作方式1,定时1msDELAY1MS:MOV TH0,#0FCH ;延时1MS的程序MOV TL0,#18HSETB TR0LOOOP:JBC TF0,TCDS1MSSJMP LOOOPTCDS1MS:RET ;此段程序为判断有没有按键按下,按下就置一,并将其值放在A中JCAJ:MOV A,P1;检查开启案件有没有按下JB ACC.0,JCAJJS;ACC.0=1,没有键按下LCALL XSSMGMOV A,P1;如果有键按下,则ACC.0为0 JCAJJS:RET;此段程序是判断调时按键是否按下,按下就使相应的段控码加一 TSJCAJ:MOV A,P1;调时

25、检查按键(首写字母:TSXSAJ)JB ACC.1,JC2 ;ACC.1控制秒钟的调时,ACC.1为低电平表示按下LCALL XSSMGLCALL XSSMGTSJC1: MOV A,P1JB ACC.1,ZX1 ;ACC.1的键是否松开LCALL XSSMGLCALL XSSMGSJMP TSJC1ZX1:INC R2 ;松开则加一CJNE R2,#7AH,JC2 ;判断有没有进位MOV R2,#70HINC R3CJNE R3,#76H,JC2MOV R3,#70HLJMP JC2JC2:MOV A,P1;判断分钟的调整按键有没有按下JB ACC.2,JC3 ;ACC.2控制分钟的调时,A

26、CC.2为低电平表示按下LCALL XSSMGLCALL XSSMGTSJC2:MOV A,P1 ;判断分钟调整键有没有松开JB ACC.2,ZX2LCALL XSSMGLCALL XSSMGSJMP TSJC2ZX2:INC R4;松开则加一CJNE R4,#7AH,JC3 ;判断有没有进位MOV R4,#70HINC R5CJNE R5,#76H,JC3MOV R5,#70HLJMP JC3JC3:MOV A,P1 ;判断时钟的调整按键有没有按下JB ACC.3,JSTS ;ACC.3控制分钟的调时,ACC.3为低电平表示按下LCALL XSSMGLCALL XSSMGTSJC3:MOV

27、A,P1 ;判断时钟的调整按键有没有松开JB ACC.3,ZX3LCALL XSSMGLCALL XSSMGSJMP TSJC3ZX3:INC R6;松开则加一CJNE R7,#72H,JXZX;判断有没有进位CJNE R6,#74H,JXZXMOV R6,#70HMOV R7,#70HSJMP JSTSJXZX:CJNE R6,#7AH,JSTSMOV R6,#70HINC R7 JSTS:RET;显示各个数码管中的值,每显示一个延时1秒XSSMG:MOV A,#0FEH;显示数码管各个的值,每显示显示一个数码管延时1秒,然后控制为左移 MOV 7DH,R2;7DH是为将R2的地址放到R0中

28、MOV R0,7DHMOV P0,R0;将R2的段控码送到P0口MOV P2,ALCALL DELAY1MSMOV 7DH,R3 ;MOV R0,7DHRL AMOV P0,R0MOV P2,ALCALL DELAY1MS RL AMOV P0,#0BFH ;0BFH为一的共阳段控码MOV P2,ALCALL DELAY1MS RL AMOV 7DH,R4MOV R0,7DHMOV P0,R0MOV P2,ALCALL DELAY1MSRL AMOV 7DH,R5MOV R0,7DHMOV P0,R0MOV P2,ALCALL DELAY1MSRL AMOV P0,#0BFH ;0BFH为一的

29、共阳段控码MOV P2,ALCALL DELAY1MSRL AMOV 7DH,R6MOV R0,7DHMOV P0,R0MOV P2,ALCALL DELAY1MSRL AMOV 7DH,R7MOV R0,7DHMOV P0,R0MOV P2,ALCALL DELAY1MSRET;以上这段程序是将R2到R7中控制的段控码分别送到秒、分、时的数码管中显示并延时每个数码管显示后延时1秒XSXH:MOV A,#0FEH ;显示学号(首写字母)的的子程序MOV P2,AMOV P0,#82HLCALL DELAY1MS ;显示6并延时1msRL AMOV P2,AMOV P0,#99HLCALL DE

30、LAY1MS ;显示4并延时1msRL AMOV P2,AMOV P0,#0BFHLCALL DELAY1MS ;显示一并延时1msRL AMOV P2,AMOV P0,#0B0HLCALL DELAY1MS ;显示3并延时1msRL AMOV P2,AMOV P0,#0C0HLCALL DELAY1MS ;显示0并延时1msRL AMOV P2,AMOV P0,#90HLCALL DELAY1MS ;显示9并延时1msRL AMOV P2,AMOV P0,#0C0HLCALL DELAY1MS ;显示0并延时1msRL AMOV P2,AMOV P0,#0A4HLCALL DELAY1MS ;显示Z并延时1msRETEND

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号