1、XX学院课程设计论文论文题目: 数字电子钟的设计 姓 名: 所在院系: 电信学院 班 级: 学 号: 指导教师: XX学院二一三年一月六日摘 要单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲,一块芯片就成了一台计算机。单片机具有体积小、功能强、应用面广等优点,为学习、应用和开发提供了便利条件。现在,这种单片机的使用领域已十分广泛。彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深地融入我们每个人的生活之中。单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方
2、便的同时,在工农业生产上也极大地提高了生产效率和产品质量。 此外,单片机在工商、金融、科研、教育、国防航空等领域都有着十分广泛的用途。数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。该课程设计为数字电子钟的设计。以AT89C51为核心,配合LED数码管显示器和按键为用户提供长期、连续、可靠、稳定的工作环境。该数字电子钟有时分秒显示和日期显示以及时间和日期调整的功能。系统软件设计包括单片机计算机两部分的编程。计算机软件编程主要实现参数设置、串行口数据接收、指令发送以及数据的显示和存储。单片机软件编程主要实现键盘、LED显示等各模块的功能,采用汇编语言编程。数字钟是其小巧,价格
3、低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。关键词 数字电子钟;单片机;LED显示第一章 设计目的和方案41.1设计任务41.1.1 设计题目:数字电子钟41.1.2 设计目的与任务41.2功能要求说明41.3设计总体方案及工作原理4第二章 数字电子钟的硬件系统的设计52.1 硬件系统各模块功能设计52.1.1 单片机最小系统62.1.2 键盘模块62.1.3 LED显示电路62.1.4 接口电路62.2 电路原理图、PCB图和元器件布局62.3 元器件清单7第三章 数字电子钟的软件系统的设计73.1 使用的单片机资源的情况73.2 各模块功能简要介
4、绍83.3 程序的流程图83.4 程序清单12第四章 设计仿真和结果分析134.1 设计结论和功能使用说明134.1.1 设计结论134.1.2 功能及使用说明134.2 仿真结果144.3 设计系统误差分析15第五章 设计小结16致 谢16参考文献17附 录19第一章 设计目的和方案1.1设计任务1.1.1 设计题目:数字电子钟1.1.2 设计目的与任务 通过理论设计和实物制作解决相应的实际问题,巩固和运用在单片机原理及接口技术中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。1.2功能要求说明 1、
5、显示准确的北京时间(时、分、秒),可用24小时制式; 2、随时可以调校时间。 3、增加公历日期显示功能(年、月、日),年号只显示最后两位; 4、随时可以调校年、月、日; 5、允许通过转换功能键转换显示时间或日期。 硬件方案: 显示器采用6位LED数码管(共阳),可分别显示时间或日期;(通过KB 键可切换) 显示器的驱动采用动态扫描电路形式,以达到简化电路的目的。但要注意所需的驱动电流比静态驱动时要大,因此要增加驱动电路。可采用74LS244或者晶体管;其中74ls244是用来驱动段选码,晶体管是驱动位选码1.3设计总体方案及工作原理 设计中采用AT89C51芯片及LED显示器,一些独立式按键构
6、成一个简单的数字电子钟。设计中是采用单片机的内部定时器进行定时,程序框图如图所示。 整个电子钟的工作原理是:在正常的供电状态下,首先利用单片机定时,到了相应的时间由单片机将所需要显示的数据送到LED显示器的输入口,当有键按下时则进入相应的按键显示和调整状态,进行按键调整。总体硬件原理图如图所示第二章 数字电子钟的硬件系统的设计2.1 硬件系统各模块功能设计 该数字电子钟由单片机最小系统、键盘模块、LED显示电路模块、接口电路模块组成。各模块的功能如下:2.1.1 单片机最小系统由AT89C51单片机、时钟电路和复位电路构成。AT89C51是一种带8K字节闪烁可编程可擦除只读存储器(FPEROM
7、Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。时钟电路由一个12MHZ的石英晶体振荡器和两个22pF的的电容组成振荡电路和分频电路,为单片机提供内部时钟。复位电路采用上电复位和按键复位结合的方式对电路进行复位,主要是通过RST引脚送入单片机。2.1.2 键盘模块采用独立式键盘接法,共有四个按键来对电路进行控制。分别接在单片机的P1口线上。一个键控制开和关,一个键负责调整,另外两个键辅助调整。2.1.3 LED显示电路采用六个共阳的数码管显示器进行显示,加上一个74LS244作为驱动和8个220
8、的电阻起限流的作用。将段控口接在P0口上,位控口接在P3口上,实现对显示的控制。2.1.4 接口电路接上一个电容组成的滤波电路和电源显示灯组成一个电源接口,为单片机工作供电。2.2 电路原理图、PCB图和元器件布局采用Protel软件,Protel99SE是Protel公司近10年来致力于Windows平台开发的最新结晶,能实现从电学概念设计到输出物理生产数据,能够和形象的画出我们所要设计的产品。电路原理图和PCB图及元器件布局见附录。各模块拼接图 2.3 元器件清单见附录。第三章 数字电子钟的软件系统的设计3.1 使用的单片机资源的情况该数字电子钟用到了单片机的定时器的功能,此外用到了单片机
9、的中断功能,在数据的显示时所采用的是查表的方法,因此需要将表格、数据存到单片机的程序存储器中去。由于电子钟需要可以进行调节,因此,需要在单片机的P口上加上按键,本设计采用独立式键盘,直接接在P1口上且按键的结果存贮在单片机的内部数据存储器里面。用到的LED显示器接到了单片机的P0口线上和P3口线上。 3.2 各模块功能简要介绍 该数字电子钟所用的软件模块有定时器模块、按键模块、LED显示模块。(1)定时器模块选择定时器0,设置定时方式为方式1,设置定时时间为50mS。(2)按键模块采用独立式键盘,共用四个按键对电路进行控制和操作,分别为K0、K1、K2、K3来控制电子钟的开/关和调整。(3)L
10、ED显示模块 该电子钟一通电即让它显示P.,按开启键即可显示时分秒,再按切换键即可显示年月日,然后结合键盘操作还可以对时间进行调整。3.3 程序的流程图(1)整体设计流程图(2)键盘设计流程图图3.2 键盘设计流程图(3)显示设计流程图图3.3 显示时分秒设计流程图图3.4 显示年月日设计流程图3.4 程序清单见附录。 第四章 设计仿真和结果分析4.1 设计结论和功能使用说明4.1.1 设计结论 通过对单片机进行外接键盘和LED数码管的操作以及加上硬件电路和软件的结合,实现了该数字电钟显示P.以及时分秒和年月日的显示,同时还可实现对该电子钟进行调整的功能。通过测试和仿真以及修改,该电子钟最终能
11、正常的工作。4.1.2 功能及使用说明该数字电子钟采用八位数码管能实现年月日和时分秒的显示。当电子钟一上电即可显示P.,设置数字钟的初始日期和时间为12年02月23日00时00分00秒.用四个按键实现电子钟的显示和调整的功能,分别为K0,K1,K2,K3,其中K0键为开启键,且显示的是时分秒,开启之后K2键可实现切换的功能,即可实现年月日和时分秒的切换显示;按K3键可实现年月日和时分秒的调整,按一下可以对当前显示的进行调整,再按一下即可切换到一个界面进行调整,调整的时候数字钟停止计时,当进行时分秒的调整时, K0键可实现对秒进行增大的调整,每按一下秒的值就加一,当秒增加到59时就重新从0开始继
12、续增大, K1键可实现对分进行增大的调整,每按一下分的值就加一,当分增加到59的时候就重新从0开始继续增大,K2键可实现对时进行增大的调整,每按一下时的值就加一,当时的值增大到23的时候就重新从0开始继续增大.当进行年月日的调整时, K0键可实现对日进行增大的调整,每按一下秒的值就加一,当日增加到28或者30或者31(看不同的年份和月份)时就重新从0开始继续增大, K1键可实现对月进行增大的调整,每按一下月的值就加一,当月增加到12的时候就重新从0开始继续增大,K2键可实现对年进行增大的调整,每按一下时的值就加一,当时的值增大到99的时候就重新从0开始继续增大.当对年月日和时分秒都调整完之后,
13、再按一下K3键即可跳出调整的状态,数字钟继续开始计时工作,在电子钟正常计时的时候再按K0键即可对电子钟进行关闭.4.2 仿真结果在仿真时用到了两个软件,第一个是Keil,第二个是Protues,本次仿真是将两个软件结合起来进行的。用Protues软件进行仿真,其仿真的电路图如图4.1所示图4.1 Protues仿真电路图数字电子钟正常工作时,仿真的LED显示器显示如图4.2所示,当按下切换键时,数字电子钟进入日期显示界面,此时LED数码管显示器的显示如图4.3和4.4所示,当按下调整键时,数字电子钟进入调整界面,此时LED数码管显示器的显示如图4.5和4.5所示。图4.2 数字电子钟正常工作时
14、的显示图P.图4.3 数字电子钟显示时分秒的显示图000000.图4.4 数字电子钟显示日期的显示图120223.4.3 设计系统误差分析本数字电子钟在跟标准的电子钟比较时,时间稍微慢一点,产生此种情况的原因有:其一是在执行程序指令时,由于需要耗费一定的时间,因此会比标准的电子钟要慢一点。其二是晶振不够标准,使得定时器定时时不够精准。第五章 设计小结从硬件电路的设计到软件电路的设计,整个过程当中我学到了很多的东西,在绘制原理图时我查找了相关软件的使用方法,并悉心向老师和同学请教,学会对PROTEL和PROTEUS的使用;在软件系统的设计中,我遇到了很多的问题,不能把一些小模块系统联系起来,但通
15、过不断的探索,最终把整个程序完整的编出来了,并能进行仿真使用;本次的设计使我学到如何从理论转化为实践,怎样将我所学到的知识运用到我以后的工作中。通过单片机硬件电路的调试,实现了预先设定的功能,设计主要用到的元件不多,最主要的是程序也比较长比较麻烦,同时也遇到了不少困难,尤其是关于校时模块的设计实现。虽然过程中遇到了一些困难,但是在解决这些问题的过程无疑也是对自己自身专业素质的一种提高。此次的电子时钟设计给我奠定了一个实践基础,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的认识和理解。致 谢首先衷心感谢在此次课程设计
16、中给予我帮助的老师及同学们,帮助我分析和解决问题。在开始设计的时候,经过老师悉心的指导和讲解,让我渐渐有自己的方案和选择方向,在每一步的进展当中,我都碰到了很多的问题,画原理图的时候和分析电子钟工作的原理以及怎么确定和修改,都是经过一步步修改而成的。设计软件的时候,因为是设计一个系统的程序,所以开始还没形成系统的思维,但在老师的讲解和同学的教导下,渐渐的将一个个子程序联系起来调试运行。在此,谨向给予我帮助的老师和同学深表言谢。参考文献1彭勇,叶晓勇,王万刚 单片机技术 北京 电子工业出版社 20092李广弟,朱月秀,冷祖祁 单片机基础.北京:北京航空航天大学出版社,20073刘湘涛江世明单片机
17、原理与应用M. 北京:电子工业出版社,2006.4李光飞.单片机课程设计实例指导.北京:北京航空航天大学出版社,2004.95朱定华单片机原理及接口技术实验M北京:北方交通大学出版社2002.116张洪润,兰清华.单片机应用技术教程.北京:清华大学出版社,1997.11附 录*;按键接P1.0P1.3分别为K0、K1、K2、K3;*;数码管显示器段控口接单片机的P0口,位控口接单片机的P3口;*;存储单元定义;* YEAR EQU 40HMONTHEQU 41H DAY EQU 42HHOUR EQU 43H MINUTE EQU 44H SECONDEQU 45H TIME EQU 46H
18、ORG 0000H AJMP START ORG 000BH AJMP ET_0 START:LCALL LINGMOV TIME, #00HMOV TMOD, #01H ;设置定时器的工作方式为方式一MOV TH0, #(65536-50000)/256 ;定时50毫秒MOV TL0, #(65536-50000)MOD 256MOV IE, #82HLOOP: LCALL DISPLAY0 ;显示P. JNB P1.0, MAIN1 JMP LOOPMAIN1: LCALL DISPLAY0 JNB P1.0, MAIN1 SETB TR0 ;开启定时器*;主函数;* MAIN: LCAL
19、L KEY JB 20H.3, SET1 JB 20H.0, GUAN JB 20H.2, RIQI LCALL DISPLAY2 ;显示时分秒 AJMP MAIN *;显示日期;*RIQI:LCALL DISPLAY1 LCALL KEY JB 20H.2, MAIN JMP RIQIGUAN: MOV P2, #0FFH ;关显示 LCALL KEY JB 20H.0, MAIN JMP GUAN *;进入时分秒的调整界面;* SET1: CLR TR0 ;时分秒的调整 LCALL DISPLAY2 LCALL KEY JB 20H.3, SET2 JB 20H.2, TS JB 20H.
20、1, TF JB 20H.0, TM JMP SET1TS: INC HOUR ;时的调整 MOV A, HOUR ;是否达到了24小时到了就清零 CJNE A,#24, SET1 AJMP LL1LL1: MOV HOUR, #0 JMP SET1TF: INC MINUTE ;分的调整 MOV A, MINUTE ;是否达到了60分到了就清零 CJNE A, #60, SET1 AJMP LL2LL2: MOV MINUTE, #0 JMP SET1TM: INC SECOND ;秒的调整 MOV A, SECOND ;是否达到了60秒到了就清零 CJNE A,#60, SET1 AJMP
21、 LL3LL3: MOV SECOND, #0 JMP SET1 SET2: LCALL KEY ;进入年月日的调整界面 LCALL DISPLAY1 ;显示年月日 JB 20H.3, EXIT JB 20H.2, TN JB 20H.1, TY JB 20H.0, TR JMP SET2EXIT: SETB TR0 ;关定时器 JMP MAIN TN: INC YEAR ;年的调整 MOV A, YEAR ;是否达到了99年到了就清零 CJNE A,#99, SET2 AJMP LL4LL4: MOV YEAR, #0 JMP SET2TY: INC MONTH ;月的调整 MOV A, M
22、ONTH ;是否达到了12月到了就清零 CJNE A,#13, SET2 AJMP LL5LL5: MOV MONTH, #0 JMP SET2TR: INC DAY ;日的调整 MOV A, YEAR ;看是闰年还是非闰年 MOV B, #4 DIV AB MOV A, B JZ WW1 ;闰年则转WW1 JMP WW2 ;非闰年则转WW2WW1: MOV A, MONTH ;看是闰年的哪一月份 CJNE A,#2, LL6 ;是闰年中的2月则为29天 MOV A, DAY 到29就清零 CJNE A,#29, SET2 MOV DAY, #0 AJMP SET2LL6: CJNE A,#4
23、, LL7 ;闰年中的4、6、9、11为30天 MOV A, DAY 到30就清零 CJNE A,#30, SET2 MOV DAY, #0 AJMP SET2LL7: MOV A, MONTH CJNE A,#6, LL8 MOV A, DAY CJNE A,#30, SET2 MOV DAY, #0 AJMP SET2LL8: MOV A, MONTH CJNE A,#9, LL9 MOV A, DAY CJNE A,#30, SET2 MOV DAY, #0 AJMP SET2LL9: MOV A, MONTH CJNE A,#11, LLA MOV A, DAY CJNE A,#30,
24、 ZHUAN MOV DAY, #0 AJMP SET2LLA: AJMP WW6 WW6: MOV A, DAY ;闰年中的1、3、5、7、8、10、12月 CJNE A,#31, ZHUAN MOV DAY, #0ZHUAN:AJMP SET2WW2: MOV A, MONTH ;看是闰年中的哪一月 CJNE A,#2, LL6 ;非闰年中的2月为28天,到28则清零 MOV A, DAY ;非润年中的4、6、9、11月为30天其他 CJNE A,#28,ZHUAN 31天 MOV DAY, #0 AJMP SET2*;中断子程序和时间的增一;*ET_0: MOV TH0,#(65536-
25、50000)/256 MOV TL0,#(65536-50000)MOD 256 INC TIME MOV A, TIME CJNE A,#20, DIAN AJMP ZMZM: INC SECOND MOV TIME, #0 ;TIME为20时SECOND加一同时对TIME MOV A, SECOND 清零 CJNE A,#60, DIANZF : INC MINUTE MOV SECOND,#0 ;SECOND为60时MINUTE加一同时SECOND MOV A, MINUTE 清零 CJNE A,#60, DIANZS: INC HOUR ;MINUTE为60时HOUR加一同时MINUT
26、E MOV MINUTE,#0 清零 MOV A, HOUR CJNE A,#24, DIAN AJMP ZR ;HOUR为23时DAY加一同时HOUR清零ZR: INC DAY MOV HOUR, #0 MOV A, YEAR MOV B, #4 DIV AB JZ RUN ;闰年则转RUN AJMP NRUN ;非闰年则转NRUNDIAN: RETI ;是否为闰年中的2月,是则到了29就RUN: MOV A, MONTH MONTH加一同时DAY清零 CJNE A,#3 ,NEXT1 ;是否为闰年中的4、6、9、11月,是则到 了 30MONTH就加一同时DAY清零 AJMP BB1 ;闰
27、年中的1、3、5、7、8、10、12月为31 天到了31则MONTH加一DAY清零NEXT1:MOV A, MONTH CJNE A,#5, NEXT2 AJMP BB2NEXT2:MOV A, MONTH CJNE A,#7, NEXT3 AJMP BB2NEXT3:MOV A, MONTH CJNE A,#10, NEXT4 AJMP BB2NEXT4:MOV A, MONTH CJNE A,#12, NEXT5 AJMP BB2NEXT5:AJMP BB3BB1: MOV A, DAY CJNE A,#30, DIAN AJMP ZYBB2: MOV A, DAY CJNE A,#31,
28、 DIAN AJMP ZYBB3: MOV A, DAY CJNE A,#32, DIAN AJMP ZYBB4: MOV A, DAY CJNE A,#29, DIAN AJMP ZYNRUN: MOV A, MONTH CJNE A,#3, NEXT6 ;非闰年中的2月到了28就MONTH 加一同时DAY清零 AJMP BB4 ;非闰年中的4、6、9、11月到了30天 NEXT6:MOV A, MONTH 则MONTH加一同时DAY清零 CJNE A,#5, NEXT7 ;非闰年中的1、3、5、7、8、10、12 AJMP BB2 月为31天到了则MONTH加一同时DAY清零NEXT7:M
29、OV A, MONTH CJNE A,#7, NEXT8 AJMP BB2NEXT8:MOV A, MONTH CJNE A,#10, NEXT9 AJMP BB2NEXT9:MOV A, MONTH CJNE A,#12, NEXT5 AJMP BB2ZY: INC MONTH MOV DAY, #0 MOV A, MONTH CJNE A,#14, DIAN AJMP ZNZN: INC YEAR MOV MONTH, #0 MOV A, YEAR CJNE A,#100, DIAN AJMP LING*;初始显示值;*LING: MOV YEAR, #12 ;显示器显示的初始值为日期12
30、-02-23, MOV MONTH, #02 时间 00-00-00 MOV DAY, #23 MOV HOUR, #00 MOV MINUTE, #00 MOV SECOND, #00 RET*;键扫子程序;*KEY: LCALL KEYCH ; 键扫程序,按键结果存入20H单元 JZ EXIT1 LCALL DELAY1 LCALL KEYCH JZ EXIT1 KEYSF: MOV B, #20H LCALL KEYCH JZ KEY1 LCALL DELAY1 LJMP KEYSFKEY1: MOV 20H, BEXIT1: RETKEYCH: PUSH PSW CLR RS1 SET
31、B RS0 MOV P1, #0FFH MOV A, P1 CPL A; ANL A, #0FH MOV 20H, A CLR RS1 CLR RS0 POP PSW RET*;进入显示P界面;*DISPLAY0:CLR P3.7 ;显示P. MOV P0, #0F3H LCALL DELAY1 SETB P3.7 RET*;年月日显示界面;*DISPLAY1:MOV DPTR, #TAB1 ;显示日期 MOV A, DAY MOV B,#10 DIV AB CLR P3.6 MOVCA,A+DPTR MOV P0,A LCALLDELAY1 SETB P3.6 MOV A,B CLR P3.7 MOVCA,A+DPTR MOV P0,A LCALL DELAY1 SETB P3.7 CLR P3.5 LCALL DELAY1 SETB P3.5 MOV A,MONTH MOV B,#10 DIV AB CLR P3.3 MOVC A,A+DPTR MOV P0,A LCALL DELAY1 SETB P3.3 MOV A,B CLR P3.4 MOVC A,A+DPTR MOV P0,A LCALL DELAY1 SETB P3.4 CLR P3.2 LCALL DELAY1 SETB P3.2 MOV A,YEAR
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100