1、广西理工职业技术学院毕业设计(论文)说明书题 目: 简易电子时钟设计 系 别: 电气工程系 专业班级: 11机电2 姓 名: 黄武锦 学 号: 20112323 指导教师: 黎有好 二一三年七月二十四日目录1.概论12.整体设计思路22.1硬件各部分所能完成的功能32.2系统工作原理42.3时钟各功能分析及图解42.4.1电路各功能图解分析42.4.2电路功能使用说明73. 软件设计思路83.1 主程序模块83.2 数码管动态扫描模块93.3 当前时间计时模块93.4 闹钟输入输出模块103.5 当前时间调整模块123.6复位模块134.系统的调试和性能分析144.1系统的调试方法144.1.
2、1输入按键的调试144.1.2复位电路的调试144.1.3显示电路的调试144.1.4整个系统的联调144.2心得体会15参考文献15附录16附录A 系统原理图16附录B 程序源代码17电气信息学院课程设计评分表281.概论单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和软件编程设计两个方面, 其调试过程一般分为软件调试、硬件测试、系统调试3个过程。如果采用单片机系统的虚拟仿真软件Proteus,则不用制作具体的电路板也能够完成以上工作。数字钟是采用数字电路实现对时,分,秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表
3、,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便4。不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。而且是控制的核心部分。因此,研究数字钟及扩大其应用,有着非常现实的意义。电子钟在工业控制和日常生活中是很重要的,它不仅可以用于计时、提醒又可
4、用于对机器的控制,在自动化的过程中必然有电子钟的参与,因此电子钟的应用会越来越广泛。而且向着精确、低功耗、多功能发展。基于单片机设计的数字钟精确度较高, 因为在程序的执行过程中, 任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。从而,使数字钟的精度仅仅取决于单片机的产生机器周期电路和定时器硬件电路的精确度。另外,程序较为简洁,具有可靠性和较好的可读性。如果我们想将它应用于实时控制之中,只要对上述程序和硬件电路稍加修改,便可以得到实时控制的实用系统,从而应用到实际工作与生产中去。数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟, 也可以利用专用的电子钟芯片配以
5、显示电路及其所需要的外围电路组成电子钟还可以利用单片机来实现电子钟等等。这些方法都各有特点, 其中,利用单片机实现的电子钟具有编程灵活, 便于功能扩充, 精确度高等特点。2.整体设计思路这部分主要介绍工作安排和整体设计的思想。工作过程规划如下:熟悉硬件了解各引脚功能 分块设计各部分电路 完成整体电路图将分块的电路组合认真学习单片机C语言确定编程结构和思路综合各程序完成整体程序编辑各个程序模块用Proteus画出电路图调试程序,进行修改 对仿真中出现的问题 进行改正画出仿真图进行仿真准备器件、搭接电路仿真成功软硬件结合,完成任务书要求验证硬件电路成功对设计进行总结和分析 图2.1 整体设计思路
6、针对要实现的功能,拟采用AT89C51单片机进行设计,AT89C51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构7。这样,既能做到经济合理又能实现预期的功能。在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为显示程序、调时显示运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。本电子钟设计主要是依照图2.1中的流程做出来的,时间分配比较均匀。首先
7、,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和液晶电路等。第三部分是软件部分:先学习理解C语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的
8、完全一样一般能实现想要的功能。2.1硬件各部分所能完成的功能(1)单片机发送的信号通过程序控制最终在数码管上显示出来。(2)单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。(3)为使时钟走时与标准时间一致,校时电路是必不可少的,键盘用来校正数码管上显示的时间。(4)单片机通过控制闹铃电路来完成定时闹钟的功能。(5)单片机通过程序对闹铃信号灯进行控制,可方便我们对闹铃的开关以及是否在闹铃进行观察。(6)由于要设置定时功能,所以配置了对闹钟设置的键盘。2.2系统工作原理设计的电路主要由四模块构成:时间显示电路、信号显示电路、键盘控制电路、外设闹铃电路以及核心控制电路详细电路功能图如图2-2:
9、图2-2 详细电路功能图本设计采用汇编语言程序设计,使单片机控制数码管显示时、分、秒,当秒计数计满60时就向分进位,分计数器计满60后向时计数器进位,小时计数器按“23翻0”规律计数。时、分、秒的计数结果经过数据处理可直接送显示器显示。设计采用的是时、分、秒显示,单片机对数据进行处理同时在数码管上显示。2.3时钟各功能分析及图解2.4.1电路各功能图解分析(1) 时钟运行图仿真开始运行时,或按下K7键时,时钟从00:00:00开始运行,其中按下K1键可进入当前时间调节,K2和K3分别负责加一和减一,K5键为确认键。时钟运行图如图 2-3 所示:图2-3 时钟运行图(2) 闹钟开关指示图当按下K
10、4键后,可进入闹钟设时控制,设置完后按确认,按下K6,即开闹钟,信号显示区得开/关闹钟信号灯点亮,表示当时间到达闹钟的时间时,闹铃响;再次按下闹铃,为关闹铃,此时的信号显示区得开/关闹钟信号灯熄灭。如下图2-4:图2-4闹钟开关指示图(3)闹铃运行图当时间到达闹钟设置的时间时,蜂鸣器会按每秒两次的频率响,闹钟指示灯也会闪烁。如下图2-5:图2-5闹铃运行图该数字钟是用一片AT89C51单片机通过编程去驱动8个数码管实现的。通过7个开关控制,从上到下7个开关K1-K7的功能分别为: K1:设置当前时间时/分/秒 K2:加一按键 K3:减一按键 K4:设置闹钟时间时/分/秒 K5: 确认/关闭闹铃
11、 K6:开/关闹钟 K7: 复位控制键分别与P1.0P1.6口连接,通过P2口和P3口去控制数码管的显示如图所示P2口接数码管的ag端,是控制输出编码,P3口接数码管的18端,是控制动态扫描输出从P3.6输出一个信号使二极管发光,二极管在设置的闹钟时间到了时候发光,P3.7接一个蜂鸣器,若有乐曲可以去驱动扬声器实现。2.4.2电路功能使用说明 (1) 各个控制键的功能:可对时间进行校准调节(只能加);按下设置键数字时钟进入闹钟设置状态,设置闹钟的时间;时加、分加键是在校准时间时或设 置闹钟时间对小时数或分钟数调节而设置的;按下秒切换键就可以进入秒表模式,同时秒表也开始计时,按下秒表暂停、复位键
12、就暂停、归零,如果要重新对秒计时则可以按秒表开始、复位;清零键可以对闹钟清零。 (2)AT89C51单片机,通过编写程序对数码显示进行控制。 (3) 八个7段数码管显示时钟信号。3. 软件设计思路 根据设计的要求与内容,我们将该软件设计成七个模块,他们包括:主程序、数码管动态扫描模块、当前时间计时模块、闹钟输入输出模块、当前时间调整模块、数制转换模块以及复位模块。3.1 主程序模块主程序模块是单片机最先编译运行的模块,所以在这个模块里,我们要设置主程序和各个中断服务程序的入口地址、各种初始化以及开关扫描等。MCS-51系列单片机复位后,(PC)=0000H,而0003H002BH分别为各中断的
13、入口地址。所以,编程时应在0000H处写一条跳转指令。当CPU接受到中断请求信号并予以相应后,CPU把当前的PC内容压入栈中进行保护,然后转入相应的只能中断服务程序入口处执行。一般应在相应的中断服务程序入口处写一条跳转指令,并以跳转指令的目标地址作为中断服务程序的起始地址进行编程。初始化,是对将要用到的MCS-51系列单片机内部部件或扩展芯片进行初始工作状态设定。下图3-1是我们设计该主程序模块的程序框图。图3-1主程序设计框图3.2 数码管动态扫描模块在数码管动态扫描模块里,包含了两个子程序,一个是显示子程序,另一个是显示延时1MS子程序。其中显示延时1MS子程序是用软件延时的方法进行的,过
14、程较简单,这里就不画出它的程序框图,下图3-2为显示子程序的程序框图。图3-2显示子程序3.3 当前时间计时模块本软件中的当前时间计时模块实际上是T0定时器的中断服务程序,我们将T0定时器工作在方式一中,并让它每50MS产生一次中断。每产生一次中断,进入中断服务程序后,T0定时器重新转载初始值。MS50(它是对50MS中断次数统计的存储单元地址标号)就会自加一,接着对MS50进行判断,如果MS50没有到达20次(即一秒的时间),就返回到主程序。如果到达20次,MS50将清零,并将MIAO(MIAO是对秒进行计数的存储单元地址标号)将自加一。接着判断MIAO是否到达60次,没到就返回,到了60秒
15、,MIAO将被清零,FEN(FEN是对分进行计数的存储单元地址标号)自加一。再判断FEN,过程与判断MIAO相识,也是到达60分就进1时并对分清零,时的寄存器地址标号是SHI,因为一天只有24小时,所以,如果SHI计数到了24时,它将对SHI、FEN、MIAO同时清零。下图3-3为该中断服务的程序框图图3-3T0中断服务程序3.4 闹钟输入输出模块由于闹钟输入输出模块要实现的功能较多,所以它是我们该软件中设计耗时最长的一个模块,也是最复杂的一个模块。而我们对其采取再分子模块策略,我们对该模块划分了6个子模块:设置闹钟时间子模块、闹钟开关子模块、检查闹钟子模块、闹钟指示灯亮子模块、闹钟转换子模块
16、、蜂鸣器子模块。下面将逐个说明各个子模块的功能。设置闹钟时间子模块:该模块实现的功能是,当设置闹钟时间的键盘被按下时,则进入该子模块,通过对各个指定按键的操作来实现闹钟时间的设置。闹钟开关子模块:该模块实现的功能是,对闹钟的工作状态进行开关,当为开时,闹钟时间到后,闹钟指示灯会亮以及蜂鸣器会响;当为关时,即便闹钟时间到了,闹钟指示灯不会亮以及蜂鸣器不会响。检查闹钟子模块:该模块实现的功能是,它是在主程序中被循环调用的,每调用一次,它会把当前时间与闹钟时间进行比较,如果当前时间与闹钟时间相同且闹钟开关为开,则调用闹钟指示灯亮子模块和蜂鸣器子模块;否则继续运行主程序。闹钟指示灯亮子模块:该模块的功
17、能是,当时间到时,它将使闹钟指示灯以每秒两次的频率闪烁,闪烁三十秒后熄灭。蜂鸣器子模块:该模块的功能是,当时间到时,它将使闹钟指示灯以每秒两次的频率响,响三十秒后停止响声。闹钟转换子模块:由于在寄存器中存储的是十六进制的数,不能存储十进制的数,且我们用的LED灯是共阳极的,所以在要输出显示闹钟的时间前,要进行闹钟数制转换。故该模块的功能是实现对闹钟时间寄存器中的内容进行数制转换。对闹钟设计成六个子模块,使我们更容易得设计出闹钟所要实现的功能,这也就是模块化的好处,将一个大型的问题划分为若干个小问题,对这若干小问题进行设计,最好通过参数把这些小模块连成一个大的模块,从而解决问题。下图3-4是对这
18、六个模块之间的联系的描述。图3-4 闹钟输入输出模块3.5 当前时间调整模块当前时间调整模块是用来按用户的需要对当前所显示的时间进行设置,本软件的设计思路是通过对相关的时间设置按键的扫描进行时间设置。具体思路如下图3-5:图3-5 时间调整模块3.6复位模块复位模块是对当前时间和闹钟时间进行复位,复位后的结果是当前时间变为00-00-00,闹钟时间变为00-00-00。由于该模块较为简单,就不展示其设计思路了。就将其结果仿真图展示如下图3-6。图3-6复位结果图4.系统的调试和性能分析4.1系统的调试方法整个系统调试的主要思想是:先每个模块进行调试,然后整个系统一起调试。先软硬件分开调试,然后
19、一起调试。遵循先部分后整体的原则。系统的在调试过程中要注意以下几点:(1)硬件电路焊完之后,在上电之前一定要先用万用表检测电源和地之间是否短路。(2)上电之后要用示波器观察信号的在电路中变化的情况,与设计当初的情况相比较,找出差别,并进行分析。(3)软件调试过程中可以使用断点、单步执行等常用的方法。(4)软硬件联调时,要注意软件部分要一个功能一个功能的调试。4.1.1输入按键的调试输入按键的调试,只要按键按下去时,按键有相应的反应就行,通过程序来判断,单片机I/O是否能够识别出。4.1.2复位电路的调试当电源刚接通时,接通电源就完成了系统的初始化。4.1.3显示电路的调试在本设计中,显示电路只
20、需完成,当输入数字时能正确显示数字。4.1.4整个系统的联调在系统各个部分都调试完毕之后,即可以进行整个系统的调试。由于前面各个部分的调试做的都比较充分,所以在实际调试过程中,能够较顺利的实现整个系统预期的功能。4.2心得体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,
21、在这两个星期的日子里,可以说得是苦多于甜,但是可以学到很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好通过这次课程设计之
22、后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师那里我学得到很多实用的知识,在次我表示感谢!参考文献1、单片机原理及应用李建忠 编 西安电子科技大学出版社2、单片微型计算机原理与接口技术 高峰 编 电子工业出版社3、单片机应用新技术教程邹逢兴 编 高等教育出版社4、16位微型计算机原理接口及其应用 朱宇光 编 电子工业出版社5、微型计算机原理与接口技术 吴秀清 编 中国科学技术出版社6、微型计算机接口技术 邓亚平 编 清华大学出版社 7、单片机原理及及应用 王迎旭 编 机械工业出版社附录附录A 系统原
23、理图附录B 程序源代码MS50 EQU 30H SHI EQU 31H FEN EQU 32H MIAO EQU 33H BUF EQU 34H HH EQU 40H FF EQU 41H MM EQU 42HDENG BIT P3.5 BIAOZ BIT P3.6 SPK BIT P3.7ALB EQU 20H.0K1 BIT P1.0K2 BIT P1.1K3 BIT P1.2K4 BIT P1.3K5 BIT P1.4K6 BIT P1.5K7 BIT P1.6MOV SP,#60H;- ORG 00HAJMP MAIN ORG 0BH AJMP TIME0 MAIN: SETB DEN
24、G CLR ALB ACALL CHUSHI ACALL INTOLOOP: ACALL NAOPRO ACALL CONV ACALL DISPLAY JB K6,LOOP1 ACALL BIAO SJMP LOOPLOOP1: JB K1,LOOP2 ACALL SETTIME SJMP LOOPLOOP2: JB K4,LOOP3 ACALL SETNAO SJMP LOOPLOOP3: JB K7,LOOP ACALL RST SJMP LOOP;-CONV: ;转换子程序 MOV A,SHI ;转换小时 存到34 35H MOV B,#10 DIV AB MOV DPTR,#TAB
25、MOVC A,A+DPTR MOV BUF,A MOV A,B MOVC A,A+DPTR MOV BUF+1,A MOV A,FEN ;转换分 存到37 38H MOV B,#10 DIV AB MOV DPTR,#TAB MOVC A,A+DPTR MOV BUF+3,A MOV A,B MOVC A,A+DPTR MOV BUF+4,A MOV A,MIAO ;转换秒 存到40 41H MOV B,#10 DIV AB MOV DPTR,#TAB MOVC A,A+DPTR MOV BUF+6,A MOV A,B MOVC A,A+DPTR MOV BUF+7,A MOV BUF+2,#
26、0BFH ;第三个位置显示一杠 MOV BUF+5,#0BFH ;第五个位置显示一杠 RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;阳码表;-DISPLAY: ;显示子程序 MOV R1,#BUF MOV A,#01H MOV R2,#8 Dp1:MOV P2,A PUSH ACC MOV A,R1 MOV P0,A ACALL DELAY POP ACC RL A INC R1 CJNE R1,#BUF+8,DY MOV R1,#BUFDY: DJNZ R2,Dp1 RET;-BIAO: CPL ALB ;闹钟开关 CPL
27、BIAOZBIAO1: ACALL CONV ACALL DISPLAY JNB K6,BIAO1 RET;-SETTIME: ;设置时间 CLR TR0TT: ACALL DISPLAY ;设置小时TS: JNB K1,TTTSS: ACALL DISPLAYS JNB K1,TF JNB K2,JIAS JNB K3,JIANS JNB K5,QUE SJMP TSSJIAS: INC SHI ;加时子程序 MOV A,SHI CJNE A,#24,K2S MOV SHI,#0K2S: ACALL CONV ACALL DISPLAY JNB K2,K2S SJMP TSSJIANS: D
28、EC SHI ;减时子程序 MOV A,SHI CJNE A,#255,K3S MOV SHI,#23K3S: ACALL CONV ACALL DISPLAY JNB K3,K3S SJMP TSSQUE: ACALL BZ SETB TR0QQ: ACALL CONV ACALL DISPLAY JNB K5,QQ LJMP LOOP;-TM: ACALL DISPLAY ;设置秒 JNB K1,TMTMM: ACALL DISPLAYM JNB K1,TS JNB K2,JIAM JNB K3,JIANM JNB K5,QUE JMP TMMJIAM: INC MIAO ;加秒 MOV
29、A,MIAO CJNE A,#60,K2M MOV MIAO,#0K2M: ACALL CONV ACALL DISPLAY JNB K2,K2M JMP TMMJIANM: DEC MIAO ;减秒 MOV A,MIAO CJNE A,#255,K3M MOV MIAO,#59K3M: ACALL CONV ACALL DISPLAY JNB K3,K3M JMP TMM;-TF: ACALL DISPLAY ;设置分钟 JNB K1,TFTFF: ACALL DISPLAYF JNB K1,TM JNB K2,JIAF JNB K3,JIANF JNB K5,QUE JMP TFFJIAF
30、: INC FEN ;加分钟 MOV A,FEN CJNE A,#60,K2F MOV FEN,#0K2F: ACALL CONV ACALL DISPLAY JNB K2,K2F JMP TFFJIANF: DEC FEN ;减分钟 MOV A,FEN CJNE A,#255,K3F MOV FEN,#59K3F: ACALL CONV ACALL DISPLAY JNB K3,K3F JMP TFF;-DISPLAYS: ;时闪子程序 MOV R3,#20DISS: MOV R1,#BUF+2 MOV A,#04H MOV R2,#6 ACALL DP1 DJNZ R3,DISS MOV
31、R3,#20DIS2: MOV R1,#BUF MOV A,#01H MOV R2,#8 ACALL DP1 DJNZ R3,DIS2 RETDISPLAYF: ;分闪子程序 MOV R3,#20DISF: MOV R1,#BUF+5 MOV A,#20H MOV R2,#6 ACALL DP1 DJNZ R3,DISF MOV R3,#20 ACALL DIS2 RET DISPLAYM: ;秒闪子程序 MOV R3,#20DISM: MOV R1,#BUF MOV A,#01H MOV R2,#6 ACALL DP1 DJNZ R3,DISM MOV R3,#20 ACALL DIS2 R
32、ET;-SETNAO:;设置闹钟时间TTN: ACALL CONVNAO ACALL DISPLAY ;闹设置小时TSN: JNB K4,TTNTSSN: ACALL DISPLAYS JNB K4,TFN JNB K2,JIASN JNB K3,JIANSN JNB K5,QUEN SJMP TSSNJIASN: INC HH ;闹加时子程序 MOV A,HH CJNE A,#24,K2SN MOV HH,#0K2SN: ACALL CONVNAO ACALL DISPLAY JNB K2,K2SN SJMP TSSNJIANSN: DEC HH ;闹减时子程序 MOV A,HH CJNE
33、A,#255,K3SN MOV HH,#23K3SN: ACALL CONVNAO ACALL DISPLAY JNB K3,K3SN SJMP TSSNQUEN: ACALL BZ SETB TR0 LJMP LOOP;-TMN: ACALL CONVNAO ACALL DISPLAY ;闹设置秒 JNB K4,TMNTMMN: ACALL DISPLAYM JNB K4,TSN JNB K2,JIAMN JNB K3,JIANMN JNB K5,QUEN JMP TMMNJIAMN: INC MM ;闹加秒 MOV A,MM CJNE A,#60,K2MN MOV MM,#0K2MN: A
34、CALL CONVNAO ACALL DISPLAY JNB K2,K2MN JMP TMMNJIANMN: DEC MM ;闹减秒 MOV A,MM CJNE A,#255,K3MN MOV MM,#59K3MN: ACALL CONVNAO ACALL DISPLAY JNB K3,K3MN JMP TMMN;-TFN: ACALL CONVNAO ACALL DISPLAY ;闹设置分钟 JNB K4,TFNTFFN: ACALL DISPLAYF JNB K4,TMN JNB K2,JIAFN JNB K3,JIANFN JNB K5,QUEN JMP TFFNJIAFN: INC F
35、F ;闹加分钟 MOV A,FF CJNE A,#60,K2FN MOV FF,#0K2FN: ACALL CONVNAO ACALL DISPLAY JNB K2,K2FN JMP TFFNJIANFN: DEC FF ;减分钟 MOV A,FF CJNE A,#255,K3FN MOV FF,#59K3FN: ACALL CONVNAO ACALL DISPLAY JNB K3,K3FN JMP TFFN;-RST: ;复位 MOV SHI,#0 MOV FEN,#0 MOV MIAO,#0 MOV MS50,#0 RET;-NAOPRO: ;检查闹钟 JB ALB,TI3 RETTI3: MOV A