基于单片机的电子时钟设计毕业论文设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1 绪论 (1)
2 整体设计方案 (2)
2.1数字时钟方案 (2)
2.2数码管显示方案 (2)
3 数字钟的硬件设计 (3)
3.1总体设计 (3)
3.1.1系统说明 (3)
3.1.2系统框图 (3)
3.2模块设计 (4)
3.2.1电源部分 (4)
3.2.2复位电路 (4)
3.2.3程序下载接口 (5)
3.2.4位选部分 (5)
3.2.5数码管的连接电路 (6)
3.2.6控制部分 (7)
4 系统仿真 (8)
5 数字钟的软件设计 (9)
5.1程序流程图 (9)
5.2源程序 (12)
6 调试与功能说明 (15)
6.1元件特性 (15)
6.2设计总结 (15)
参考文献 (16)
致谢 (16)
基于单片机的电子时钟设计
摘要:随时代的发展,生活节奏的加快,人们的时间观念愈来愈强;随自动化、智能化技术的发展,机电产品的智能度愈来愈高,用到时间提示、定时控制的地方也会愈来愈多,因此,设计开发数字时钟具有良好的应用前景。
由于单片机价格的低成本、高性能,在自动控制产品中得到了广泛的应用。
本设计利用Atmel 公司的AT89S52单片机对电子时钟进行开发,设计了实现所需功能的硬件电路,应用汇编语言进行软件编程,并用实验板进行演示、验证。
在介绍本单片机的发展情况基础上,说明了本设计实现的功能,以及实验板硬件情况,并对各功能电路进行了分析。
主要工作放在软件编程上,用实验板实现时间、日期、定时及它们的设定功能,详细对软件编程流程以及调试进行了说明,并对计时误差进行了分析及校正,提出了定时音与显示相冲突问题及解决方案。
实验证明效果良好,可以投入使用。
关键词:单片机;AT89S52;电子时钟;汇编语言
1 绪论
时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。
怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。
现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况
下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。
本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89S51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。
2 整体设计方案
2.1数字时钟方案
数字时钟是本设计的最主要的部分。
根据需要,可利用两种方案实现。
方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。
该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。
为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。
当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。
而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:本方案完全用软件实现数字时钟。
原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。
2.2数码管显示方案
方案一:静态显示。
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
该方式每一位都需要一个8 位输出口控制。
静态显示时较小的电流能获得较高的亮度,且字符不闪烁。
但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:动态显示。
所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。
利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。
显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。
调整参数可以实现较高稳定度的显示。
动态显示节省了I/O口,降低了能耗。
从节省I/O口和降低能耗出发,本设计采用方案二。
3 数字钟的硬件设计
3.1总体设计
3.1.1系统说明
利用单片机(AT89S51)制作简易电子时钟,由六个LED数码管分别显示小时十位、小时个位、分钟十位、分钟个位、秒钟十位、秒钟个位。
6个PNP管(9012)分别控制六个数码管的亮灭,一个按键用于时间调整。
3.1.2系统框图
图3-1
3.2模块设计
3.2.1电源部分
图3-2
如图3-2所示,从外部引入4.5V的直流电,为单片机、复位电路提供电源。
3.2.2复位电路
图3-3
如图3-3所示,复位电路主要由型号为1N4148的二极管,型号为10UF/16V的电解电容,型号为104的瓷片电容,10K的电阻以及按键S1构成,S1接芯片的相应引脚RST,当开关按下时引脚RST为高电平1,断开时引脚为低电平0。
3.2.3程序下载接口
图3-4
如图3-4所示,由AT89S ISP构成的两排十针下载口,板图上有一个小方框,为1号引角;下载线的凸口为正方向,凸口的右侧边的第一个插孔为1号引角。
3.2.4位选部分
图3-5
图3-5为位选电路,三极管的集电极接数码管的公共端,当P2口对应的引脚输出高电平时三极管导通,对应的数码管显示数据。
这样,在同一时刻,6位LED中只有选通的那1位显示出字符,而其他5位则是熄灭的。
同样,在下一时刻,只让下一位的位选线处于选通状态,而其他个位的位选线处于关闭状态,在段码线上输出将要显示字符的段码,则同一时刻,只有选通位显示出相应的字符,而其他各位则是熄灭的。
如此循环下去,就可以使各位显示出将要显示的字符。
虽然这些字符是在不同时刻出现的,而在同一时刻,只有一位显示,其他各位熄灭,但由于LED的余辉和人眼的视觉暂留作用,只要每位显示间隔足够短,则可以造成多位同时亮的假象,达到同时显示的效果。
3.2.5数码管的连接电路
图3-6
图3-6为数码管的引脚图,每位的段码线
(a,b,c,d,e,f,g,dp)分别与1个8位的锁存器输出相
连,由AT89S51控制组合0-9十个数据,如令其显示1
则b,c引脚(即2,3引脚)送高电平,此时数码管显
示1。
由于各位的段码线并联,8位I/O口输出段码对
各个显示位来说都是相同的。
3.2.6控制部分
图3-7
AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。
AT89S51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
如图3-7所示,AT89S51有40引脚,双列直插(DIP)封装,所用引脚功能如下:
1.VCC ——运行时加+4.5V
2.GND ——接地
3.XTAL1 ——振荡器反相放大器及内部时钟发生器的输入端
4.XTAL2 ——振荡器反相放大器的输出端
5.RST ——复位输入,高电平有效,在晶振工作时,在RST引脚上作
用2个机器周期以上的高电平,将使单片机复位。
WDT溢出将使该引脚输
出高电平,设置SFT AUXR的DISRTO位(地址8EH)可打开或关闭该功能。
DISRTO位缺省为RESET输出高电平打开状态。
6.EA/VPP ——片外程序存储器访问允许信号。
欲使CPU仅访问外部程序
存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地),如果EA
端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
7.P1口,P2口——P1,P2是一组带内部上拉电阻的8位双向I/O口。
运行
时通过P1口控制驱动电路的工作,将数据送到数码管,显示相应的段码,
为了达到减少功耗或满足端口对最大电流的限制,应加上一限流电阻。
P2.0——P2.5口控制数码管的位选,使六个数码管轮流显示数据,等于1时位选三极管导通,等于0 时位选三极管截止。
8.无自锁开关——(S2-P3.7)开关接相应引脚P3.7,当开关按下时,相
应引脚为低电平0,断开时引脚为高电平1。
4 系统仿真
图4-1
图4-2 5 数字钟的软件设计
5.1程序流程图
5.2源程序
;;;;;;;;;;;;;;;;;;;;;;;;
;; 中断入口程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;
;
ORG 0000H ;程序执行开始地址
LJMP START ;跳到标号START执行
ORG 0003H ;外中断0中断程序入口
RETI ;外中断0中断返回
ORG 000BH ;定时器T0中断程序入口
LJMP INTT0 ;跳至INTTO执行
ORG 0013H ;外中断1中断程序入口
RETI ;外中断1中断返回
ORG 001BH ;定时器T1中断程序入口
LJMP INTT1 ;跳至INTT1执行
ORG 0023H ;串行中断程序入口地址
RETI ;串行中断程序返回
;;;;;;;;;;;;;;;;;;;;;;;;
;; 主程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;
;
START: MOV R0,#70H ;清70H-7AH共11个内存单元 MOV R7,#0BH
;clr P3.7 ;
CLEARDISP: MOV @R0,#00H ;
INC R0 ;
DJNZ R7,CLEARDISP ;
MOV 20H,#00H ;清20H(标志用)
MOV 7AH,#0AH ;放入"熄灭符"数据
MOV TMOD,#11H ;设T0、T1为16位定时器
MOV TL0,#0B0H ;50MS定时初值(T0计时用) MOV TH0,#3CH ;50MS定时初值
MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)
MOV TH1,#3CH ;50MS定时初值
SETB EA ;总中断开放
SETB ET0 ;允许T0中断
SETB TR0 ;开启T0定时器
MOV R4,#14H ;1秒定时用初值(50MS×20) START1: LCALL DISPLAY ;调用显示子程序
JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程
序
SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程序SETMM ;;;;;;;;;;;;;;;;;;;;;;;
;; 闪动调时程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;
;T1中断服务程序,用作时间调整时调整单元闪烁指示
INTT1: PUSH ACC ;中断现场保护
PUSH PSW ;
MOV TL1, #0B0H ;装定时器T1定时初值
MOV TH1, #3CH ;
DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS 中断6次)
MOV R2,#06H ;重装0.3秒定时用初值
CPL 02H ;0.3秒定时到对闪烁标志取反
JB 02H,FLASH1 ;02H位为1时显示单元"熄灭"
MOV 72H,76H ;02H位为0时正常显示
MOV 73H,77H ;
MOV 74H,78H ;
MOV 75H,79H ;
INTT1OUT: POP PSW ;恢复现场
POP ACC ;
RETI ;中断退出
FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制
MOV 72H,7AH ;01H位为0时,"熄灭符"数据放入分
MOV 73H,7AH ;显示单元(72H-73H),将不显示分数据
MOV 74H,78H ;
MOV 75H,79H ;
AJMP INTT1OUT ;转中断退出
FLASH2: MOV 72H,76H ;01H位为1时,"熄灭符"数据放入小时
MOV 73H,77H ;显示单元(74H-75H),小时数据将不显示
MOV 74H,7AH ;
MOV 75H,7AH ;
AJMP INTT1OUT ;转中断退出;;;;;;;;;;;;;;;;;;;;;
;; 显示程序 ;;
;;;;;;;;;;;;;;;;;;;;;
;显示数据在70H-75H单元内,用六位LED共阳数码管显示,P0口输出段码数据,P3口作
; 扫描控制,每个LED数码管亮1MS时间再逐位循环。
DISPLAY: MOV R1,#70H ;指向显示数据首址
MOV R5,#0FEH ;扫描控制字初值
PLAY: MOV A,R5 ;扫描字放入A
MOV P2,A ;从P2口输出
MOV A,@R1 ;取显示数据到A
MOV DPTR,#TAB ;取段码表地址
MOVC A,@A+DPTR ;查显示数据对应段码
MOV P1,A ;段码放入P0口
LCALL DL1MS ;显示1MS
INC R1 ;指向下一地址
MOV A,R5 ;扫描控制字放入A
JNB ACC.5,ENDOUT ;ACC.5=0时一次显示结束 RL A ;A中数据循环左移
MOV R5,A ;放回R5内
AJMP PLAY ;跳回PLAY循环
ENDOUT: SETB P2.5 ;一次显示结束,P2口复位 MOV P1,#0FFH ;P0口复位
RET ;子程序返回
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
;1MS延时程序,LED显示程序用
DL1MS: MOV R6,#14H
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
;20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象
DS20MS: ACALL DISPLAY
ACALL DISPLAY
ACALL DISPLAY
RET
;延时程序,用作按键时间的长短判断
DL1S: LCALL DL05S
LCALL DL05S
RET
DL05S: MOV R3,#20H ;8毫秒*32=0.196秒
DL05S1: LCALL DISPLAY
DJNZ R3,DL05S1
RET
END ;程序结束
6 调试与功能说明
6.1元件特性
表6-1 AT89S51功能特性:
6.2设计总结
本设计能够很准确的走时,并能够通过硬件对时钟进行时间调整。
◆功能介绍:
1.显示XX:XX:XX时间
2.时间可调:调整键(S2)按下时间小于1秒(t<1s),关闭显示(省电)。
调整键(S2)按下(t>0.5s)分钟位闪亮,此时按下S2键(t<0.5s)该
个位数值加1,当加到9时,再按下S2键则该个位显示0,分钟十位加
1。
继续按下调整键(S2)(t>0.5s)时钟位闪亮,此时按下S2键(t<0.5s)该个位数值加1,当加到9时再按下加S2键则该个位显示0,时钟十位
加1。
继续按下调整键(S2)(t>0.5s),返回到正常显示状态。
3.下载线和电源线插接说明:1.下载线插接说明:两排十针下载口,板图
上都有一个小方框,为1号引角;下载线的凸口为正方向,凸口的右侧
边的第一个插孔为1号引角,这一点一定要切记,不然的话程序下载不
进去。
2.电源线插接说明:电池盒的红线为正,黑线为负。
板子所留出
来的电源插口用VCC(表示电源正)和GND(表示电源负)标明。
◆调试要点:首先确保各器件的完好性,其次检测各芯片的电源线和地线是否接触良好,然后焊接器件,接好电源用万用表检测各电源端、地端的状态是否正常。
检查无误后插上AT89S51并烧写一简易的程序,观察电路是否能协同工作。
最后烧写工作程序,根据显示现象调试程序直至成功。
上电运行时,数码管开始显示00:00:00,时钟开始走时。
◆制作心得:在这次课程设计的调试过程中,我遇到很多问题,如:由于跳转指令出错,导致整个程序在运行时进入死循环,修改时没有根据流程盲目查找原因浪费许多时间,又由于考虑不周,时钟显示29:89。
该电路缺少整点报时及
闹钟功能,由于能力和时间问题只能到此为止,很是遗憾,但在查找资料的过程中学到了许多,同时在协作过程中增进同学间的友谊。
参考文献
[1] 于海生.微型计算机控制技术[M] .清华大学出版社.1999-6
[2] 孙涵芳.MCS-51系列单片机原理及应用[M] .北京航空航天大学出版社.1996-4
[3] 黄正谨.综合电子设计与实践[M] .东南大学出版社.2002-3
[4] 杨欣等.电子设计从零开始[M] .清华大学出版社.2005-10
[5] 谢嘉奎.电子线路[M] .高等教育出版社.2003-2
[6] 夏路易,石宗义.电路原理图与电路设计教程Protel 99SE[M] .北京希望电子出版社.2002
[7] 王毓银.数字电路逻辑设计[M] .高等教育出版社.2004-2
[8] 邱关源.电路[M] .高等教育出版社
致谢
历时将近两个月的时间终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。
尤其要强烈感谢我的论文指导老师,她对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。
另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。
在此向帮助和指导过我的各位老师表示最中心的感谢!
感谢这篇论文所涉及到的各位学者。
本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。
感谢我的同学和朋友,在我写论文的过程中给予我了很多素材,还在论文的撰写和排版等过程中提供热情的帮助。
由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正。