1、 毕业(论文)设计基于单片机的数字钟院 系: 机电系 专 业: 电子信息工程技术 指导老师: 郭江涛 姓 名: 张莉 班 级: 08电信二 学 号: 0804110243 撰写日期: 2011年4月18日 商丘职业技术学院毕业(论文)设计任务书题目:基于单片机的数字时钟姓 名张莉学 号0804110243班 级08电信二班(论文)设计选题的来源、目的与意义:将所学内容与实际问题相结合,实现动手能力,巩固所学知识点(论文)设计的主要内容:本设计主要是利用AT89C51单片机设计24小时制数字钟,数字钟同时带有时间调整、闹铃、整点报时等功能。进度计划(进度时间、主要工作内容):三月初开始论文的准备
2、,打算于4月末完成主要参考文献:1王沫楠.2007.单片机原理及应用.北京:中国计量出版社2于珍珠,赵娜,赵刚等.2007.基于51单片机的温度测量系统.单片机开发与应用.23(1-2):146-1483王沫楠.2007.单片机原理及应用.北京:中国计量出版社4李朝青.2008.单片机原理及接口技术(第3版).北京:北京航空航天大学出版社(论文)设计工作起讫日期: 2011 年 3 月 15日至 2011年 4月 28日指导教师(签名)专业教研主任(签名)摘 要 本设计主要是利用AT89C51单片机设计24小时制数字钟,数字钟同时带有时间调整、闹铃、整点报时等功能。利用汇编语言编写程序,通过p
3、roteus软件进行仿真验证设计。设计中还用到了外部晶振、四位、两位LED数码管作为时钟数字显示,外接两个按键作为调整。按下B2进入相应功能的调整,按下第一次为调整时钟的时,按下第二次为调整时钟的分,按下第三次为调整时钟的秒,按下第四次为设定闹钟的时,按下第五次为设定闹钟的分,这时会停止计时,显示屏只会显示相应调整的项,其它项熄灭,调整完后再按B2跳回正常计时。经过一系列的测试验证,设计能满足各项要求,经过长时间的运行测试程序都能正常地运行,没出现错误。可应在实际中应用,能满足日常时间显示的需要。关键字:24小时,数字钟,单片机,设计 ABSTRACT This design mainly u
4、sing AT89C51 microcontroller design 24-hour digital clock, digital clock with time to adjust at the same time, alarm, hourly chime functions. Use of assembly language programming, by proteus simulation software design. Design also uses an external crystal, four, two LED digital tube, as the clock fi
5、gures, the two keys as the external adjustment. Press the corresponding function into the adjustment B2 press for the first time to adjust the clock, press to adjust the clock for the second time points, press the third time for the adjustment of the clocks seconds, press the fourth time to set the
6、alarm clock , press the fifth time to set the alarm points, then would stop the timer, adjust the display will show the items, other items off, jump back to the normal adjustment time after then B2. After a series of testing and certification, designed to meet the requirements, after a long run test
7、 program can run normally, no errors. Can be applied in practice, to meet the daily needs of the time display.Keyword 24 hours,A digital clock, SCM,Design.KEYWORDS:24 hours, a digital clock, microcontroller, design目 录 1、设计目的12、设计功能、要求13、硬件设计13.1、原理图设计13.2、器件清单23.3、各元器件作用说明23.4、工作过程说明24、软件设计24.1、设计思路
8、24.2、工作原理图34.3、流程图34.4、程序清单55、仿真结果95.1、仿真环境说明95.2、程序编译结果95.3、软件仿真结果96、设计总结127、参考文献128、附件:电路图131、设计目的利用单片机设计一个数字时钟,加深对单片机的熟悉程度,把学习到的理论知识应用到实际中,把单片机的知识系统地联系起来,增强动手能力,为以后的设计、工作做准备。也是对这学期单片机的学习的一次检验。2、设计功能、要求数字钟要求能24小时制时间显示,可随时进行时间校对调整,整点报时以及闹钟功能。原理图设计要求符合项目的工作原理,接线要正确.图中所使用的元器件要合理选择,电阻,电容等器件要求标出相关参数,并通
9、过绘图软件打印出原理图。原理图设计中简要说明设计目的,原理图中所使用的元器件功能在图中的作用,各器件的工作过程及顺序。程序设计中对程序总体功能及结构进行说明,对各子模块的功能以及各子模块之间的关系作较详细的说明画出工作原理图,流程图并给出程序清单。3、 硬件设计3.1、原理图设计原理图的设计比较简单,只需要有一个接好晶振的AT89C51单片机、LED显示屏、按键、蜂鸣器以及一些电阻就可以了。用P1口作为显示数字输出,P2.0P2.7口作为动态显示片选信号,P0.0作为声音信号输出,P3.2、P3.3接外中断信号,用于调整。蜂鸣器需要用三极管放大,接一5V电源发声。图1.电路原理图3.2、器件清
10、单器件名称数值、型号数量原理图中标号电阻10k3R2-R4电容10uF1C1电容30pF2C2, C3单片机AT89C511U1三极管BSX201Q1蜂鸣器1LS18路电阻3001RN1晶振1CRYSTAL按键2B1,B2LED显示屏4位1D1LED显示屏2位1D23.3、各元器件作用说明电容C2, C3以及晶振CRYSTAL用来为单片机提供外部晶振。电阻R3、R4以及三极管Q1用于放大P0口的输出,提供给蜂鸣器足够大的信号电流。蜂鸣器用于整点报时、闹钟的声音信号输出。显示屏D1用于显示时和分;D2用于显示秒。按键B2用来设定调整功能,按下第一次为调整时钟的时,按下第二次为调整时钟的分,按下第
11、三次为调整时钟的秒,按下第四次为设定闹钟的时,按下第五次为设定闹钟的分。按键B1用来调整,每按下一次为加一操作。3.4、工作过程说明正常显示:单片机中装入程序后,接通电源即显示屏显示0000 00,开始计时,D2显示屏每1秒加1,加到60分加1,D2显示回零,继续从0开始计时,分加到60时加1,时加到24回零,继续按规则计时。整点报时响铃一次,闹钟响铃两次。调整:按下B2进入相应功能的调整,按下第一次为调整时钟的时,按下第二次为调整时钟的分,按下第三次为调整时钟的秒,按下第四次为设定闹钟的时,按下第五次为设定闹钟的分,这时会停止计时,显示屏只会显示相应调整的项,其它项熄灭,调整完后再按B2跳回
12、正常计时。4、 软件设计4.1、设计思路 主程序执行时钟的显示,利用动态显示,先显示时,然后分、秒,每一位中间隔着相应的延时,时分秒的数值分别用三个寄存器存储,主程序只需直接显示寄存器里内容即可。计时子程序由内部定时器中断程序完成,定时器定时50ms,每50ms中断一次,中断20次后即够一秒,存储秒的寄存器加1,加够60秒分加1,分加够60时加1,一直计算下去,实现24小时的计时。调整程序由两个外中断子程序配合完成,外中断1子程序用于设定调整的内容,以区分调整时钟的时、分、秒,以及设定闹钟的时、分。外中断0子程序用于对相应的调整项进行加1操作。整点报时功能只要在每次时钟的时加1的时候输出一声铃
13、声就可以了,闹钟功能即要在每次计时的时候判断时钟的时、分时候与闹钟设定的时、分相同,若相同即响铃两声,不同即继续执行。程序的各部分以及一些功能在程序清单上也有标注。4.2、工作原理图定时器中断计时外中断程序调整主程序显示时钟 图2.工作原理图4.3、流程图开始 是 R4=4? 否 显示闹钟时 显示时钟时 显示闹钟分 显示时钟分 显示闹钟时显示时钟秒 显示时钟时图3.主程序流程图 中断响应 中断响应 否 否 是 R4=0? R4=6? R4加1 R4回0 否 是 是 R3减到0? 是 中断返回 秒加1 否 是 秒加到60? 图4.外中断1子程序流程图中断响应 是 分加1 否 秒回0 R4=1?
14、否 是 R0(时)加1 分加到60? 否 是 时加1 R4=2? 是 R1(分)加1 分回0 否 否 否 时加到24? R4=3? 是 是 R2(秒)加1 时回0 否 中断返回 R4=4? 是 R5(闹钟时)加1 图3.定时器中断0子程序流程图 否 R4=4? 是 R6(闹钟分)加1 中断返回 图4.外中断0子程序流程图4.4、程序清单 ORG 0000H AJMP MAIN ORG 0003H AJMP S0 ORG 000BH AJMP TIMER ORG 0013H AJMP S1 ORG 0030HMAIN: MOV R0,#00 ;存储时 MOV R1,#00 ;存储分 MOV R2
15、,#00 ;存储秒 MOV R3,#20 ;中断定时50MS,2050定时一秒 MOV R4,#00 ;用于存储外中断1控制信号 MOV R5,#00 ;存储闹钟时 MOV R6,#00 ;存储闹钟分 MOV R7,#00 MOV DPTR,#TAB SETB IT1 ;设定外中断为边沿中断 SETB IT0 MOV IP,#05H ;外中断0、1优先级高,定时器低 MOV IE,#87H MOV TMOD,#01H ;模式1 MOV TH0,#3CH ;15536 50MS MOV TL0,#0B0H SETB TR0;= 主程序=DIS: CJNE R4,#04,NEXT ;大于等于4即转
16、去显示闹钟调节NEXT: JNC DIS3 MOV A,R4 ;用于调闹钟时单独显示时 JZ D1 CJNE R4,#01,DIS1D1: MOV A,R0 ;显示时 MOV B,#10 DIV AB MOVC A,A+DPTR MOV P2,#80H MOV P1,A ACALL DELAY MOV A,B MOVC A,A+DPTR MOV P2,#40H MOV P1,A ACALL DELAYDIS1: MOV A,R4 ;用于调闹钟时单独显示分 JZ D2 CJNE R4,#02,DIS2D2: MOV A,R1 ;显示分 MOV B,#10 DIV AB MOVC A,A+DPTR
17、 MOV P2,#20H MOV P1,A ACALL DELAY MOV A,B MOVC A,A+DPTR MOV P2,#10H MOV P1,A ACALL DELAY DIS2: MOV A,R4 ;用于调闹钟时单独显示秒 JZ D3 CJNE R4,#03,DISD3: MOV A,R2 ;显示秒 MOV B,#10 DIV AB MOVC A,A+DPTR MOV P2,#08H MOV P1,A ACALL DELAY MOV A,B MOVC A,A+DPTR MOV P2,#04H MOV P1,A ACALL DELAY CJNE R7,#00,A1 ;判断闹钟信号是否满
18、足 AJMP DIS3A1: MOV A,#0FFH ;闹钟响两声 MOV 60H,#02A2: MOV 61H,#50HA3: CPL A MOV P0,A ACALL DELAY DJNZ 61H,A3 DJNZ 60H,A2 DEC R7 ;闹钟响两次 AJMP DISDIS3: CJNE R4,#04,DIS4 MOV A,R5 ;显示闹钟时 MOV B,#10 DIV AB MOVC A,A+DPTR MOV P2,#80H MOV P1,A ACALL DELAY MOV A,B MOVC A,A+DPTR MOV P2,#40H MOV P1,A ACALL DELAY AJMP
19、 DISDIS4: CJNE R4,#05,DIS5 ;如果用DIS编译时出现out of range错误,转到DIS5跳转 MOV A,R6 ;显示闹钟分 MOV B,#10 DIV AB MOVC A,A+DPTR MOV P2,#20H MOV P1,A ACALL DELAY MOV A,B MOVC A,A+DPTR MOV P2,#10H MOV P1,A ACALL DELAYDIS5: AJMP DIS;=定时器0中断服务程序,时间计数,24小时=TIMER: PUSH ACC CJNE R4,#04,N1 ;调整时钟停止计时(R4=1、2、3时不计)N1: JNC N2 CJ
20、NE R4,#00,REN2: DJNZ R3,RE ;20次定时计完即一秒,重新赋值 MOV R3,#20 INC R2 ;秒加一 CJNE R2,#60,RE ;判断秒到60否 MOV R2,#00 INC R1 ;分加一 MOV A,R5 ;闹钟定时判断,响应 ADD A,R6 JZ NEXT1 ;为0时忽略(即无设定) MOV 16H,R5 ;判断时 MOV A,R0 CJNE A,16H,NEXT1 MOV 15H,R6 ;判断分 MOV A,R1 CJNE A,15H,NEXT1 MOV R7,#02 ;用R7控制主程序闹钟响应NEXT1: CJNE R1,#60,RE ;判断分到
21、60否 INC R0 ;时加一 MOV R1,#00 MOV A,#0FFH ;整点报时,响一声 MOV R7,#50HA4: CPL A MOV P0,A ACALL DELAY DJNZ R7,A4 CJNE R0,#24,RE ;判断时到24否 MOV R0,#00 AJMP RE;=中断1处理,识别调整时间时、分、秒以及闹钟时、分=S1: INC R4 CJNE R4,#06,RE1 MOV R4,#00 AJMP RE1S0: CJNE R4,#01,F1 ;调整时 INC R0 CJNE R0,#24,RE1 MOV R0,#00 AJMP RE1F1: CJNE R4,#02,F
22、2 ;调整分 INC R1 CJNE R1,#60,RE1 MOV R1,#00 AJMP RE1F2: CJNE R4,#03,F3 ;调整秒 INC R2 CJNE R2,#60,RE1 MOV R2,#00 AJMP RE1F3: CJNE R4,#04,F4 ;调整闹钟时 INC R5 CJNE R5,#24,RE1 MOV R5,#00 AJMP RE1F4: CJNE R4,#05,RE1 ;调整闹钟分 INC R6 CJNE R6,#60,RE1 MOV R6,#00 AJMP RE1RE: MOV TH0,#3CH ;15536 50MS MOV TL0,#0B0H POP A
23、CCRE1: RETI DELAY: MOV 21H,#5 ;延时DL1: MOV 20H,#123DL2: DJNZ 20H,DL2 DJNZ 21H,DL1 RETTAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H ;共阳显示器 DB 082H,0F8H,080H,090H,088H,083H DB 0C6H,0A1H,086H,08EH,0BFH,0FFH END6、 设计总结 本设计是一项比较大的“工程”,之前都没有做过这么复杂的设计,可能是对单片机的兴趣比较大,做起来只是感觉繁琐,难度就感觉不是很大。本设计是完全由本人完成,每一条连线、每一条程序、每一个字、每
24、一张图都是本人独立完成,也投入了比较多的时间,但感觉很值得。从这次设计中也学到了很多东西,对单片机的了解更深入了,对proteu软件的使用也更熟练了。本来想用C语言编写程序的,但由于之前一直都是用汇编,而且对两种语言的互换还不是很熟练,所以还是用了汇编,虽然繁杂一点,但感觉还不是很“笨拙”。本次设计是对这一学期来单片机的学习的一次总体应用,可以体现出对单片机的掌握程度,尤其是编程方面。本次设计的实用性很强,设计成果只需稍作完善就可以在生活实际中应用,当然社会上这方面的技术已经很成熟,对数字钟方面技术的提高并没太大价值。总之,本设计使我获益良多,对以后把单片机在实际中的应用提供了很好的实践经验。
25、7、 参考文献1周美娟、肖来胜.单片机技术及系统设计 M.清华大学出版社.2007.2张瑛.单片机实验指导书 EB.2010.致谢语 本论文的工作是在我的指导老师郭江涛老师的悉心指导下完成的,老师创新的学习思想和积极奋斗的人生理念给了我很大的影响,同时对我的工作和人生规划都有很大帮助。在此衷心的感谢老师。在大学的学习过程中,我学到了很多做人与做事的学问,度过了一个充实而快乐的大学时光。非常感谢各位亲爱的老师对我的教诲和指导,无论是知识的学习,还是职业规划和人生理想,你们都给了我很多意见和指导。我也很荣幸我能和各位同学、朋友们一起走过大学四年,我们共同经历了人生中最美好的时光。感谢你们的帮助和鼓励,希望走出校门后的我们仍然是一辈子的好朋友。最后,我要感谢我的父母和亲人。是你们的辛勤工作为我创造了良好的学习条件,是你们的信任、鼓励和理解,我才会取得今天的成就。我会用我的努力工作来回报你们的养育之恩,希望你们永远身体健康,快乐长寿。8、附件:电路图16