数字时钟课程设计.docx
《数字时钟课程设计.docx》由会员分享,可在线阅读,更多相关《数字时钟课程设计.docx(21页珍藏版)》请在冰豆网上搜索。
数字时钟课程设计
摘要
单片机广泛应用于实时控制、智能仪器、仪表通信和家用电器等各个领域,所涉及的内容非常广泛,是计算机科学、电子学、自动控制等基础知识的综合应用。
单片机的应用系统有硬件和软件所组成。
本设计基于单片机技术原理,单片机内部的定时/计数器来实现数字时钟的方法,本设计由单片机AT89S52芯片和七段数码管显示为核心,通过硬件电路的制作以及软件程序的编制,制作一个多功能的数字时钟系统。
该时钟系统主要由时钟模块、七段数码管显示模块、以及按键控制模块等组成。
能够准确的显示时间(显示格式为时时,分分,秒秒,12小时或24小时制),可随时进行时间调整。
设计一硬件软件化为指导思想,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。
由于系统所用元器件比较少,单片机被所占用的I/O不多,因此系统具有一定的可扩展性。
本次设计立足现实,以方便实用为目标,结合大学学习的知识结构,确定了基于单片机控制的电子闹钟,作为本论文的设计目标。
本课题设计的电子闹钟是以单片机(AT89S52)为系统核心,通过相应的软件开发,软硬件相结合,实现数字闹钟功能。
其硬件部分难点在于元器件的选择、布局及安装焊接。
软件部分的难点在于软件的选择和程序的编写调试。
目录
摘要1
1概述3
1.1课程设计的要求4
1.1.1设计指标4
1.1.2设计要求4
1.1.3制作要求4
1.1.4编写设计报告4
1.2课程设计的目的意义4
2系统总体方案及硬件设计5
2.1系统方案的确定5
2.1.1按键5
2.1.2显示器6
2.1.3计时部分6
2.1.4发音部分6
2.1.5显示器驱动电路6
2.1.6电源6
2.2系统功能及使用方法6
2.3硬件设计7
2.3.1电子钟的硬件电路7
2.3.2键盘及读数原理8
3软件设计9
3.1电子钟程序流程框图9
3.2键扫子程序流程框图9
3.3显示子程序10
4实验设计仿真12
4.1仿真图12
4.2软件部分烧写调试12
5课程设计体会13
附录15
附录1:
设计原理图15
附录2:
设计程序16
1概述
20世界末,电子技术得了飞速的发展,在其推动下,现代电子产品几乎在社会各个领域都有所表现,有力的推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
目前,单片机正朝着高性能和多种产品方形发展的趋势将进一步向低功耗。
小体积、大容量、高性能、低价格和外围电路内装化等几个方面发张
数字时钟是采用数字电路实现对时分,秒,数字显示的计时装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,是的数字时钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、甚至各种定时电气的自动启用等,所有的这些都是以钟表数字化为基础的。
因此,研究数字时钟扩大其应用,有着非常现实的意义
1.1课程设计的要求
1.1.1设计指标
1时间以12小时为一个周期;
2显示时、分、秒;
3具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;
4计时过程具有报时功能,当时间到达整点前10秒进行蜂鸣报时;
5为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。
1.1.2设计要求
1画出电路原理图(或仿真电路图);
2元器件及参数选择;
3电路仿真与调试;
4PCB文件生成与打印输出。
1.1.3制作要求自行装配和调试,并能发现问题和解决问题。
1.1.4编写设计报告写出设计与制作的全过程,附上有关资料和图纸,有心得体会。
1.2课程设计的目的意义
巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学的知识解决工业控制能力。
培养针对课题需要,选择和查阅有关手册。
图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力。
通过对课程设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。
2系统总体方案及硬件设计
2.1系统方案的确定
根据题目的要求,本系统除了核心器件单片机外主要还包括了以下几个部分:
2.1.1按键
按键最少化。
如果设置过多按键,将会占用较多I/O口,而且会给布线带来不便,因此,此方案适用于按键较少的情况。
如果选择此方案,由于按键较少,在修改时间或设置闹铃时间时就不能直接输入,只能通过加或减完成,稍为麻烦一些,但其程序简单。
2.1.2显示器
用数码管作为显示器。
数码管的驱动电路简单,使用方便,如果选择了此方案,那么在夜间看时间的时候就不需要有光源,非常方便。
其缺点是功耗较大。
2.1.3计时部分
如果使用时钟芯片,系统就不怕掉电且时间精确。
但这种芯片比较贵,况且,设计本系统主要是为了学习单片机程序的编写和调试以及设计硬件电路的一些方法,因此采用软件的方法来计时而没有采用价格较高的时钟芯片。
2.1.4发音部分
用软件方法产生方波输出,通过三极管放大后驱动蜂鸣器发音,这样就可以省去硬件振荡电路,降低成本。
2.1.5显示器驱动电路
由于通过数码管公共及的电流较大,因此用三极管来驱动位码。
为了避免过多地使用分立元件,采用了一片74LS573来驱动段码。
2.1.6电源
如果是用电池供电,就比较方便携带,但是本系统,采用了数码管作为显示器,功耗较大,需要经常更换电池。
况且,本系统的体积较大,即使使用电池供电也不能随身携带,因此,用电池供电不大合适,所以用外部稳压电源来供电。
2.2系统功能及使用方法
系统上电后,自动进入时钟状态。
若在此时按下“设定”键,显示器上将出现闪亮位,再按“+”或“-”则可以加或减闪亮位内容,修改完一位后再按“设定”可改变闪亮位位置继续修改下一位。
修改完成后按“确定”键即可退出设定状态进入正常显示时钟状态。
在正常显示时钟状态时按下“闹钟”键可进入闹钟状态,此时按“+”或“-”可上下翻动闹钟表;按“设定”键可修改当前显示的闹钟时间,修改方法与修改时钟相同。
在查看闹钟表状态下按“闹钟”键可以开/关当前显示的闹钟时间,当显示器第5位显示“-”时表示闹铃已开。
按“时钟”键返回正常显示时钟状态。
2.3硬件设计
2.3.1电子钟的硬件电路
单片机一上电时是00:
00。
2.3.2键盘及读数原理
键盘是人与微机打交道的主要设备,按键的读取容易引起误动作。
可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动,延时时间20ms。
时分显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。
3软件设计
3.1电子钟程序流程框图
3.2键扫子程序流程框图
3.3显示子程序
这次设计共用了4个数码管,时、分各占两位,显示子程序首先对时、分进行分离,然后在对时、分进行位选和段选的分时传送让数码管进行动态扫描显示。
4实验设计仿真
4.1仿真图
4.2软件部分烧写调试
通过下载线将程序下载至电路板内,即对电路板提供电源,打开软件,设置之后进行调试,可以在电路板上进行模拟,观察实验结果。
5课程设计体会
这次课程设计持续了一周时间,开始一直就想着等别人做出来再去请教别人,没想到,自己做出来的人并不多,也没有谁能够帮我的,于是就和杨广旭去图书馆借书自己琢磨。
借了胡辉主编的《单片机应用系统设计与训练》,细细阅读了里面关于电子钟设计的介绍,学到了蛮多知识的。
自己还是去认真再次学习了汇编语言的。
虽然大部分都是借鉴的,只是照着描描但自己还是用心去弄懂了。
有时间还是会更多锻炼的。
感觉这些软件都越来越顺手了。
参考文献
[1]李广弟等.单片机基础[M].北京航空航天出版社,2001.
[2]王东峰等.单片机C语言应用100例[M].电子工业出版社,2009.
[3]陈海宴.51单片机原理及应用[M].北京航空航天大学出版社,2010.
[4]刘守义等.单片机技术基础[M].西安电子科技大学出版社,2007.
[5]钟富昭等.8051单片机典型模块设计与应用[M].人民邮电出版社,2007.
[6]李平等.单片机入门与开发[M].机械工业出版社,2008.
附录
附录1:
设计原理图
附录2:
设计程序
;;;12M
T_MinuteEQU25H;定义定时分单元
T_HourEQU26H;定义定时时单元
ORG0000H
LJMPMAIN
ORG0003H
LJMPSECTION
ORG000BH
;************MAINPROGRAM***************
ORG0100H
MAIN:
MOVSP,#50H
MOVTCON,#01H;定义中断方式
MOV20H,#00H;BINSECOND
MOV21H,#00H;BINMINUTE
MOV22H,#00H;BINHOUR
MOV23H,#00H
MOV30H,#00H;BCDSECOND
MOV31H,#00H;
MOV32H,#00H;BCDMINUTE
MOV33H,#00H;
MOV34H,#00H;BCDHOUR
MOV35H,#00H
MOV25H,#00
MOV26H,#00
MOVTMOD,#01H;16位计数器
MOVTH0,#03CH
MOVTL0,#0B0H
MOVIE,#10001111B
SETBTR0;T0启动计数
MOVR2,#10
MOVP2,#0FFH
ML1:
LCALLDISP
JNBP1.1,ML1_MINU;时间设置,分钟
JNBP1.2,ML1_HOUR;;时间设置,小时
LJMPML1
ML1_MINU:
LCALLDELAY
MOVC,P1.1
JCML1
STOP1:
MOVC,P1.1
LCALLDISP
JNCSTOP1
LCALLDELAY
MOVC,P1.1
JNCSTOP1
MIN:
INC21H
MOVA,21H
CJNEA,#3CH,GO11
MOV21H,#0
MOV32H,#0
MOV33H,#0
LJMPML1
GO11:
MOVB,#0AH
DIVAB
MOV32H,B
MOV33H,A
AJMPML1
ML1_HOUR:
LCALLDELAY
MOVC,P1.2
JCML1
STOP12:
MOVC,P1.2
LCALLDISP
JNCSTOP12
LCALLDELAY
MOVC,P1.2
JNCSTOP12
INC22H
MOVA,22H
CJNEA,#18H,GO12
MOV22H,#0
MOV34H,#0
MOV35H,#0
LJMPML1
GO12:
MOVB,#0AH
DIVAB
MOV34H,B
MOV35H,A
LJMPML1
DELAY:
MOVR4,#14H
DL00:
MOVR5,#0FFH
DL11:
DJNZR5,DL11
DJNZR4,DL00
RET
;**********TIMEPROCESS**************
TIME:
PUSHACC
PUSHPSW
MOVTMOD,#01H
MOVTH0,#03CH
MOVTL0,#0B0H
DJNZR2,RET0
MOVR2,#10
CPLP1.6
MOVA,20H
CLRC
INCA
CJNEA,#120,GO1
MOV20H,#0
MOV30H,#0
MOV31H,#0
MOVA,21H
INCA
CJNEA,#3CH,GO2
MOV21H,#0H
MOV32H,#0
MOV33H,#0
MOVA,22H
INCA
CJNEA,#18H,GO3
MOV22H,#00H
MOV34H,#0
MOV35H,#0
AJMPRET0
GO1:
MOV20H,A
MOVB,#0AH
DIVAB
MOV31H,A
MOV30H,B
AJMPRET0
GO2:
MOV21H,A
MOVB,#0AH
DIVAB
MOV33H,A
MOV32H,B
AJMPRET0
GO3:
MOV22H,A
MOVB,#0AH
DIVAB
MOV35H,A
MOV34H,B
AJMPRET0
RET0:
MOVA,T_HOUR
CJNEA,22H,RET1
MOVA,T_MINUTE
CJNEA,21H,RET1
W2:
MOVR1,#99
W3:
MOVR3,#56
DJNZR3,$
CPLP1.7
DJNZR1,W3
LJMPRET12
DELAY11:
MOVR7,#22
DE1:
DJNZR7,DE1
RET
RET1:
SETBP1.7
MOVTH0,#03CH
MOVTL0,#0B0H
RET12:
POPPSW
POPACC
RETI
;;;////*******--DISPLAYPART---+++++
DISP:
MOVR0,#32H
MOVR3,#0FEH
MOVA,R3
PLAY:
MOVP2,A
MOVA,@R0
MOVDPTR,#DSEG1
MOVCA,@A+DPTR
MOVP0,A
LCALLDL1
MOVP2,#0FFH
MOVA,R3
RLA
JNBACC.4,LD1
INCR0
MOVR3,A
LJMPPLAY
LD1:
RET
;;;;;;;;;;;;;;;DELAY
DL1:
MOVR7,#05H
DL:
MOVR6,#0FFH
DL6:
DJNZR6,$
DJNZR7,DL
RET
DSEG1:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
;///////***//////*******/////////////
SECTION:
PUSHACC
PUSHPSW
ML2:
MOV30H,#0
MOV31H,#0
MOVA,25H
MOVB,#0AH
DIVAB
MOV32H,B
MOV33H,A
MOVA,26H
MOVB,#0AH
DIVAB
MOV34H,B
MOV35H,A
ML22:
LCALLDISP
JNBP1.1,ML2_MINU;时间设置,分钟
JNBP1.2,ML2_HOUR;;时间设置,小时
JNBP1.3,PPP
LJMPML2
ML2_MINU:
LCALLDELAY
MOVC,P1.1
JCML2
STOP2:
MOVC,P1.1
LCALLDISP
JNCSTOP2
LCALLDELAY
MOVC,P1.1
JNCSTOP2
MIN2:
INC25H
MOVA,25H
CJNEA,#3CH,GO21
MOV25H,#0
MOV32H,#0
MOV33H,#0
LJMPML2
GO21:
MOVB,#0AH
DIVAB
MOV32H,B
MOV33H,A
AJMPML2
ML2_HOUR:
LCALLDELAY
MOVC,P1.2
JCML2
STOP22:
MOVC,P1.2
LCALLDISP
JNCSTOP22
LCALLDELAY
MOVC,P1.2
JNCSTOP22
INC26H
MOVA,26H
CJNEA,#18H,GO22
MOV26H,#0
MOV34H,#0
MOV35H,#0
LJMPML2
GO22:
MOVB,#0AH
DIVAB
MOV34H,B
MOV35H,A
LJMPML2
PPP:
MOVA,21H
MOVB,#0AH
DIVAB
MOV32H,B
MOV33H,A
MOVA,22H
MOVB,#0AH
DIVAB
MOV34H,B
MOV35H,A
POPPSW
POPACC
RETI
END