1、单片机技术课程设计说明书 数字式秒表 学 院: 电气与信息工程学院 学生姓名: 指导教师: 职称/学位 讲师/硕士 专 业: 自动化 班 级: 学 号: 完成时间: 2016年6月 湖南工学院单片机技术课程设计课题任务书学院:电气与信息工程学院 专业:自动化指导教师学生姓名课题名称数字式秒表内内容及任务一、设计任务设计一个具有特定功能的数字式秒表。二、设计内容1、秒表的硬件系统(1)、单片机最小系统模块(2)、供电模块(3)、显示模块(4)、键盘模块2、秒表的软件系统(1)、系统监控程序模块(2)、显示程序模块(3)、键盘程序模块三、设计要求该数字式秒表上电或按键复位后能自动显示系统提示符“P
2、.”,进入准备工作状态。该数字式秒表应具有开始、暂停、连续、清零和停止功能。主主要参考资料1李广弟.单片机基础M.第3版.北京:北京航空航天大学出版社,2003.6.2李全利.单片机原理及应用(C51编程)M.北京:高等教育出版社,2012.12.3马忠梅.单片机的C语言应用程序设计M.第4版.北京:北京航空航天大学出版社,2003.6. 4李光飞.单片机C程序设计指导M.北京:北京航空航天大学出版社,2003.01.5李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社,2004.9.教教研室意见 教研室主任:(签字)年 月 日摘 要电子技术的飞速发展,使电子产品渗透进了社会的各个
3、方面。数字式秒表的设计使人们对于时间有了更直观,更精确的认识。相比于传统秒表,数字电子钟的设计具有走时准确,显示直观,稳定的优点。数字式秒表的设计方案:采用以AT89S52单片机为核心,加上按键模块和数码管显示模块等来实现硬件电路的设计;软件设计则通过汇编语言来实现,有监控程序、显示程序、键盘程序、中断程序、进位程序和延时程序等组成。数字式秒表设计中共有6个按键,1个电源按键,1个复位按键,4个独立按键:S1、S2、S3和S4。按下S1,秒表开始计时;按下S2,暂停;按下S3,继续计时;按下S4,秒表停止计时。关键词:数字式秒表;单片机;数码管显示II目 录 1 设计课题任务、功能、性能要求说
4、明及总体方案介绍11.1 设计课题任务11.2 功能、性能要求说明11.3 设计课题总体方案介绍及工作原理说明12 设计课题硬件系统的设计22.1 设计课题硬件系统各模块功能介绍22.2 设计课题电路原理图、实物图52.3 设计课题元器件清单53 设计课题软件系统的设计63.1 设计课题使用单片机资源的情况63.2 设计课题软件系统各模块功能介绍63.3 设计课题软件系统程序流程框图73.4 设计课题软件系统程序清单94 设计课题操作使用说明、测试过程、误差分析、设计结论、设计体会104.1 设计课题的操作使用说明104.2 设计课题的测试过程104.3 设计课题的误差分析114.4 设计课题
5、的设计结论、设计体会11结束语13参考文献14致 谢15附 录16附录A 原理图16附录B 实物图18附录C 元器件清单19附录D 程序清单20IV1 设计课题任务、功能、性能要求说明及总体方案介绍1.1 设计课题任务设计一个具有特定功能的数字式秒表。1.2 功能、性能要求说明数字式秒表上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。该数字式秒表应具有开始、暂停、连续、清零和停止功能。1.3 设计课题总体方案介绍及工作原理说明数字式秒表主要由单片机AT89S52、电源电路、振荡电路、复位电路、下载电路、键盘和数码管显示模块组成。设计的系统框图如图1所示。图1 课题的系统框图数字
6、式秒表的所有的软件、参数均存放在AT89S52芯片中。键盘采用动态扫描方式。利用单片机定时器/计数器产生定时效果通过编程形成秒表效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。通过对定时/计数器0设定一个62.5ms的初值,当溢出满16次时计为1s,实线秒表1s的计时。2 设计课题硬件系统的设计2.1 设计课题硬件系统各模块功能介绍设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,按键模块、显示模块。(1) 单片机最小系统模块:包括单片机AT89S52、复位电路、晶振电路、电源电路、下载电路。AT89S52单片
7、机系统复位由复位电路接RST引脚完成,单片机内部有一个高增益、反相放大器,输入端为引脚XTAL1,输出端为引脚XTAL2。通过两个引脚在芯片外并接石英晶体振荡器和两只电容,构成一个稳定的自激振荡器。AT89S52引脚图如图2所示。图2 AT89S52引脚图 (2)按键模块:主要为秒表提供输入信号。当按键没有按下时两个触点断开,单片机I/O口输入高电平;当按键闭合时,I/O口输入低电平。模块中一共用到6个按键,1个电源按键,1个复位按键,4个独立按键。在独立按键中,S1键控制秒表的开始,S2键为秒表的暂停,S3为秒表的继续,S4键为秒表的停止。S1、S2、S3、S4任一键都独自连一个I/O(P1
8、.0、P1.1、P1.2、P1.3)口线,说明它们可以独立实现相应的电子钟功能。按键模块如图3所示。图3 按键模块电路图 (3)显示模块:采用两个四位一体的数码管(共阳极)作为显示器,分别显示时、分、秒。数码管驱动芯片为74HC573。秒表设计中采用共阳极接法,其中所有阳极连接起来形成公共端,阴极相互独立。采用动态显示方式。电路中的470起限流作用,防止数码管损坏。显示模块如图4所示。图4 显示模块电路图(4)下载电路:如图5所示,电路中1脚接P1.5;2脚悬空;3脚接RET;4脚接P1.7;5脚接P1.6;6脚接VCC;7、8、9、10脚接GND用下载线将单片机与电脑相连,实现程序的下载和擦
9、除,在这里还要充当电源来使用。图5 下载模块电路图2.2 设计课题电路原理图、实物图设计课程原理图见附录A。 设计课程实物图见附录B。2.3 设计课题元器件清单 设计课题元器件清单见附录C。3 设计课题软件系统的设计3.1 设计课题使用单片机资源的情况设计课题使用单片机资源的情况如下:P0口,P2口:数码管。P1口:按键。定时器0、通用寄存器R0R7。专用寄存器A、SP、DPTR等。3.2 设计课题软件系统各模块功能介绍本设计的软件系统主要采用以下基本模块来实现,监控程序、中断服务程序、键盘扫描程序、进位程序、数码管显示程序和延时模块。监控程序:主要是用于对输入信号的处理、输出信号的控制和对各
10、个功能程序模块的运用及其控制。键盘扫描程序:主要是用于确定按键并得到特定的键码值。数码管显示程序:主要是用于驱动数码管及利用数码管显示时间。进位程序:主要用于个位向十位进位,秒向分、分向小时进位。延时程序:主要用于动态显示的延时。中断服务程序:主要用于1S定时的产生。3.3 设计课题软件系统程序流程框图监控程序流程图如图6所示。.图6 监控程序流程图键盘扫描程序流程图见图7(a)。数码管显示程序流程图如图7(b)。 (a)键盘扫描程序流程图 (b)显示程序流程图图7 键盘和显示程序流程图进位程序流程图如图8(a)。中断服务程序流程图如图8(b)。 (a)进位程序流程图 (b)中断服务程序流程图
11、 图8 进位和中断程序流程图3.4 设计课题软件系统程序清单设计课题软件系统程序清单,详见附录D。4 设计课题操作使用说明、测试过程、误差分析、设计结论、设计体会4.1 设计课题的操作使用说明课程设计中使用2个四位一体的共阳数码管做为显示器,用来显示时间值。时间显示格式为:小时分秒。设计中有4个独立按键按键:按键S1:按下后开始计时;按键S2:按下后计时暂停;按键S3:按下后计时继续;按键S4:按下后计时停止。4.2 设计课题的测试过程用PROGISP将程序写入芯片,接通电源开始测试。(1)“P.”状态的测试:依靠上电或按复位键进入,在“P.”状态下,按S2、S3、S4键均无效,按S1键有效。
12、测试结果如图9所示。图9 “P.”状态测试图(2)“计时状态”的测试:按S1,进入“计时状态”,在“计时状态”下,按S1、S3键无效,按S2,S4有效。测试结果如图10所示。图10 “计时状态”的测试(2) “暂停状态”的测试:按S2,进入“暂停状态”,在“暂停状态”下,按S1,重新开始“计时状态”;按S3,继续“计时状态”;按S4,进入“停止状态”。(3) “停止状态”的测试按下S4,进入“停止状态”,在“停止状态”下,按S2、S3无效;按S1,进入“计时状态”。测试结果如图11所示。图11 “停止状态”测试图4.3 设计课题的误差分析产生误差的原因有两方面,一方面是软件方面,另一方面是硬件
13、方面。(1) 软件方面:计时是利用定时器中断来实现的,每运行62.5ms时,单片机就要去执行中断程序,这个过程是需要时间的,并且每1S要执行16次中断程序,所以就产生了一定的误差。(2) 硬件方面:单片机的振荡电路产生的误差,以及单片机自身的误差,这使得机器周期有误差,而计时的最小时间是以机器周期为标准的。所以就会产生误差。4.4 设计课题的设计结论、设计体会(1)设计结论课程设计的结果为“P.”状态下,按S2、S3、S4键均无效,按S1键有效,进入“计时状态”。在“计时状态”下,按S1、S3键均无效,按S2、S4键有效,按下S2键后,进入“暂停状态”。在“暂停状态”下,按S1,重新开始“计时
14、状态”;按S3,继续“计时状态”;按S4,进入“停止状态”。课题设计的结果与设计要求一致,所以完成了设计任务。(2)设计体会通过课程设计,进一步的巩固了在课堂上所学的知识,还起到了查缺补漏的作用。找到了许多缺点和不足,深深的感受到了理论联系实际的必要性及其重要性。在以往的学习过程中,刻意地去加强理论的基础,对于一个程序只求它在运行时没有出错,便以为计划成功了,却不知晓它能否在硬件结构中得以实现。所以就要求动手能力强,如果无法使软件与硬件实现有机的结合,那么所做的工作就是徒劳的。在设计过程当中遇到了很多问题,更有一些细节的小问题,稍有不注意就不会发现,还好有老师和同学的帮助,课程设计才得以顺利完
15、成。课程设计虽然完成了,但在课程设计中学习到的知识,提高的能力,却是最宝贵的财富。结束语通过课程设计,对单片机技术有了进一步的认识,更为重要的是掌握了很多软硬件的基本操作,使知识与技能都得到了进一步的提高。数字式秒表的设计采用AT89S52单片机为核心,辅以按键模块和数码管显示模块等来实现硬件电路的设计,软件设计则通过汇编编程来实现,有监控程序、显示程序、键盘程序、中断程序、进位程序和延时程序等组成。数字式秒表的设计具有计时准确,显示直观,稳定的优点,满足人们对计时的各种要求。数字式秒表最大的优点就是显示直观,系统稳定。在日常生活中应用极为广泛,而且操作方法方便简单。当然设计中肯定会存在一定的
16、误差,时间不是非常精确。但是从整体上看满足了设计要求,由于学识和设计时间有限,课程设计当中还有一定的缺陷,因此请各位专家、老师批评指正。随着电子技术飞速的发展,数字式秒表的功能会日益的完善,具有一定的发展前景。参考文献1李广弟.单片机基础M.第3版.北京:北京航空航天大学出版社,2007.6.2李全利.单片机原理及应用(C51编程)M.北京:高等教育出版社,2012.12.3魏鸿磊.单片机原理及应用(C51编程)M.上海:同济大学出版社,2015.6.4武爱平.C语言程序设计M.长春:吉林大学出版社,2010.1.5李全利.单片机原理及应用(C51编程)M.北京:高等教育出版社,2012.12
17、.6屈杨. 数字秒表的设计J. 科技信息,2013,02.7姜瑜,杨静,朱健. 数字式电秒表测量误差的检定J. 中国计量,2015,07.致 谢首先,我要感谢我的父母,没有他们就没有我的今天。其次,我要感谢给过我帮助的老师和同学,若是没有他们我的课程设计不会这么顺利的完成,老师给了我设计的思路和方向,没有老师的指导,我的思路不会这么的清晰有条理,感谢王老师对我的帮助。同时,我要感谢帮助我检查文档的老师,正是老师的认真细心,并且不厌其烦的为我查找错误,我的文档才得以顺利完成,由衷的感谢老师。我相信这次文档的编写,为我今后的毕业设计及工作都奠定了良好的基础。我还要谢谢我亲爱的同学们,在设计当中,他
18、们指出了一些我忽略的细节问题,谢谢大家!通过这次的课程设计让我学习到了很多知识,懂得了很多道理。从最初焊接实物,检测实物,再到编写程序,遇到了许多问题。其实这些问题大多数老师都在课堂上提及过,只是我没有记住,还有一部分问题,是需要通过实践才能得出来的。通过这些问题让我明白了,学习要严谨,要温故而知新,戒骄戒躁。同时,还要增强自己的动手能力。做事情要有始有终,不要中途放弃。最后,恭祝老师和同学们身体健康,前程似锦!附 录附录A 原理图附录B 实物图附录C 元器件清单表1 元器件清单名称数量参数电阻2个1K共阳数码管2个4位一体ISP下载口插座1个电阻8个470电阻1个200按键5个驱动芯片1块7
19、4HC573晶振及其插座一套12MHz电容2个33pF极性电容1个22F排阻2个10K芯片1块AT89S52发光二极管1个开关1个铜柱 (带螺母)4个附录D 程序清单;-;课 题 名:数字式秒表;编 写 者:;指导老师:;时 间:2016年6月;班 级:;功 能:秒表计时;使用说明:按键接P1口;数码管显示接P0口;型 号:AT89S52 使用晶振为12MHz;-ORG0000HLJMPMAINORG000BHLJMPVT0ORG0100H;-;监控程序MAIN:程序初始化和对各个功能程序模块的运用及其控制;调用子程序:显示程序SMG,键盘扫描程序JS;通用寄存器:R5,R6,R0;-MAIN
20、:MOVSP,#3FH;堆栈初始化MOVIE,#82H;中断初始化MOVTMOD,#01H;定时器0,方式1MOVTL0,#0DCH;定时62.5mSMOVTH0,#0BHMOVR5,#16;计数溢出16次为1SMOVR6,#7MOVR0,#80HMAIN1:MOVR0,#12;显示灭INCR0DJNZR6,MAIN1MOVR0,#10;显示P.MAIN2:ACALLSMGACALLJSJIAN:MOVA,20HJZMAIN2CJNEA,#01H,J1LJMPJIAN1J1:CJNEA,#02H,J2LJMPJIAN2J2:CJNEA,#04H,J3LJMPJIAN3J3:CJNEA,#08H
21、,MAIN2LJMPJIAN4JIAN1:SETB20H ;按键S1(开始)ACALLCLR0SETBTR0V1:ACALLSMGACALLJSMOVA,20HJZV1CJNEA,#01H,JIANLJMPV1JIAN2:JNB20H,MAIN2 ;按键S2(暂停)CLRTR0V2:ACALLSMGACALLJSMOVA,20HJZV2CJNEA,#02H,JIANLJMPV2JIAN3:JNB20H,MAIN2 ;按键S3(继续)SETBTR0V3:ACALLSMGACALLJSMOVA,20HJZV3CJNEA,#04H,JIAN LJMPV3JIAN4:JNB20H,MAIN2;按键S4
22、(停止)CLR20HCLRTR0ACALLCLR0V4:ACALLSMGACALLJSMOVA,20HJZV4CJNEA,#08H,JIANLJMPV4;-;中断服务程序VT0:定时时间的产生,到达1S后进位;调用子程序:进位程序JW;通用寄存器:R5;-VT0:MOVTL0,#0DCHMOVTH0,#0BHDJNZR5,VTRET;是否达到1S,是,进位MOVR5,#16ACALLJWVTRET:RETI;-;进位程序JW:个位到十位,秒到分,分到小时的进位;调用子程序:全部清0子程序CLR0;通用寄存器:R1;-JW:MOVR1,#80HMOVA,R1;取值INCA;加1CJNEA,#0A
23、H,JW1;是否进位,否,到JW1CLRA;有进位,个位清0MOVR1,A;送值INCR1;下一位MOVA,R1INCACJNEA,#06H,JW1CLRAMOVR1,AINCR1INCR1MOVA,R1INCACJNEA,#0AH,JW1CLRAMOVR1,AINCR1MOVA,R1INCACJNEA,#06H,JW1CLRAMOVR1,AINCR1INCR1MOVA,R1INCACJNEA,#0AH,JW1CLRAMOVR1,AINCR1MOVA,R1INCACJNEA,#0AH,JW1ACALLCLR0LJMPJWRETJW1: MOVR1,AJWRET:RET;-;全部清0程序CLR0
24、:重置显示缓冲区,使数码管显示00-00-00;调用子程序:无;通用寄存器:R1;-CLR0:MOVR1,#80HMOVR1,#00H;显示0INCR1MOVR1,#00HINCR1MOVR1,#11;显示INCR1MOVR1,#00HINCR1MOVR1,#00HINCR1MOVR1,#11INCR1MOVR1,#00HINCR1MOVR1,#00HRET;-;显示程序SMG:动态显示8位数码管;调用子程序:延时子程序YS2MS;通用寄存器:R7,R0;-SMG:MOVR7,#01HMOVR0,#80HMOVDPTR,#0300HSMG1:MOVA,R7 ;位控MOVP2,ARLAMOVR7
25、,AMOVA,R0;段控MOVCA,A+DPTRMOVP0,AINCR0ACALLYS2MSCJNER7,#01H,SMG1;现在最高位?否,显示下一位RET;-;延时程序YS2MS:延时2mS;调用子程序:无;通用寄存器:R3,R4;-YS2MS:MOV R3,#04HDL0:MOV R4,#0F8H DJNZ R4,$ DJNZ R3,DL0 NOPRET;-;键盘扫描程序JS:取键值;调用子程序:显示程序SMG;通用寄存器:无;-JS:MOVA,P1CPLAMOV20H,AJZJSRETLCALLSMG;调显示程序延时LCALLSMGMOVA,P1CPLAJZJSRETMOV20H,AJSRET:RET;-;数码管段码;-ORG0300HDB0C0H,0F9H,0A4H,0B0H;09DB099H,092H,082H,0F8HDB080H,090HDB0CH,0BFH,0FFH;P.,-,灭END35