电 子 钟 的 设 计.docx
- 文档编号:24781283
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:24
- 大小:241.20KB
电 子 钟 的 设 计.docx
《电 子 钟 的 设 计.docx》由会员分享,可在线阅读,更多相关《电 子 钟 的 设 计.docx(24页珍藏版)》请在冰豆网上搜索。
电子钟的设计
摘要
时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。
怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?
这就要求人们不断设计出新型时钟。
本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89S52芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。
与传统机械表相比,它具有走时精确,显示直观等特点。
它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能等特点。
关键词:
电子钟,单片机,汇编
目录
第1章电子钟功能及总体方案的介绍1
1.1电子钟功能介绍1
1.2总体方案介绍1
第2章电子钟的工作原理2
2.1实现时钟计时的基本方法2
2.2电子钟的时间显示2
2.3电子钟的启、停及时间调整2
第3章电子钟原理图及元件清单3
3.1电子钟电路原理图3
3.2元件清单3
第4章软件系统设计4
4.1电子钟程序流程框图4
4.1.1主程序流程框图4
4.1.2键扫子程序流程框图5
4.1.3中断服务程序流程框图6
4.1.4显示子程序流程框图8
4.1.5加一子程序流程框图9
4.2电子钟总体程序清单10
第5章电子钟的使用说明及调试运行18
5.1使用说明书18
5.1.1操作说明18
5.2电子钟运行结果18
5.2.1待机18
5.2.2启动18
5.2.3运行18
第6章误差分析19
第7章设计体会20
参考资料21
附录22
第1章电子钟功能及总体方案的介绍
1.1电子钟功能介绍
可调整运行的电子钟具有三种工作状态:
“P.”状态、运行状态、调整状态。
(1)、“P.”状态,依靠上电或按复位键进入,在此状态下,按B、C、D键均无效,按A键有效,进入运行状态;
(2)、运行状态,按奇数次A键进入,在此状态下,按B、C、D键均无效,只有按A键有效,按下A键后,退出运行状态,进入调整状态;
(3)、调整状态,按偶数次A键进入,在此状态下,按A、B、C、D键均有效。
如按下A键,则退出调整状态,进入运行状态;按下B、C、D键,则分别对时、分、秒加1,调整结束后必须按A键,即可退出调整状态,进入运行状态。
1.2总体方案介绍
利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。
该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。
AT89S52的P0口和P2口外接由六个LED数码管(LED5~LED0)构成的显示器,用P0口作LED的段码输出口,P2口作六个LED数码管的位控输出线,P1口外接四个按键A、B、C、D构成键盘电路。
AT89S52是一种低功耗,高性能的CMOS8位微型计算机。
它带有8KFlash可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash集成在一个芯片上,可用与解决复杂的问题,且成本较低。
第2章电子钟的工作原理
2.1实现时钟计时的基本方法
利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计数。
(1)计数初值计算:
把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。
假设使用T/C0,方式1,50ms定时,fosc=12MHz。
则初值X满足(216-X)×1/12MHz×12μs=50000μs
X=15536→0011110010110000→3CB0H
(2)采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);
(3)从秒到分和从分到时的计时是通过累加和数值比较实现。
2.2电子钟的时间显示
电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元。
LED8LED7LED6LED5LED4LED3LED2LED1
37H36H35H34H33H32H31H30H
时十位时个位分隔分十位分个位分隔秒十位秒个位
2.3电子钟的启、停及时间调整
电子钟设置4个按键通过程序控制来完成电子钟的启、停及时间调整。
A键控制电子钟的启、停;
B键调整时;
C键调整分;
D键调整秒。
第3章电子钟原理图及元件清单
3.1电子钟电路原理图
电子钟原理图(见附录1)
3.2元件清单
电子钟元件清单如表1所示:
表1 电子钟元器件清单
元件名称
规格型号
数量(个)
单片机
AT89S52
1
显示驱动芯片
74LS245
2
8位一体的共阳LED显示器
7SEG-MPX8-CA-BLUE
1
晶振
12MHz
1
电容
33pF
2
电容
22μF
1
按键
BUTTON
5
电阻
0.2K
1
电阻
1K
1
上拉电阻
10K
4
限流电阻
0.1K
8
排阻
RESPACK-8/10K
1
第4章软件系统设计
4.1电子钟程序流程框图
4.1.1主程序流程框图
图4-1主程序流程框图
见图4-1所示
4.1.2键扫子程序流程框图
见图4-2所示
4.1.3中断服务程序流程框图
见图4-3所示
4.1.4“P.”点显示子程序流程框图
见图4-4所示
4.1.5显示子程序流程框图
见图4-5所示
4.1.6加一子程序流程框图
见图4-6所示
4.2电子钟总体程序清单
ORG0000H
AJMPMAIN
ORG000BH
LJMPINTT0
ORG0030H
MAIN:
MOVSP,#60H;确立堆栈区
MOVPSW,#00H;
MOVR0,#20H;RAM区首地址
MOVR7,#5FH;RAM区单元个数
QL:
MOV@R0,#00H;RAM清零
INCR0
DJNZR7,QL
MOVIP,#02H;IP初始化,优先定时器0
MOVIE,#82H;IE初始化,
MOVTMOD,#01H;定时器0方式1工作
LCALLPP;调P.子程序
NEXT:
LCALLKEY;按键检测子程序
JBACC.0,RUNF;A键按下运行
LCALLDISP;调用显示子程序
SJMPNEXT
RUNF:
LCALLOUTT;调传送子程序
LCALLTIME;开电子钟
JK:
LCALLDISP;调用显示子程序
LCALLKEY;按键检测子程序
JZJK
LCALLANKEY
LCALLDISP;调用显示子程序
SJMPJK
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;P点显示;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PP:
MOV37H,#12;P点编码送寄存器
MOVR0,#30H;P点编码送寄存器
MOVR7,#07H
PPP:
MOV@R0,#10
INCR0
DJNZR7,PPP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;键扫子程序;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEY:
LCALLKEYS;调键值处理子程序
JZEXIT;没有键按下转到返回
LCALLDISP
LCALLDISP;调显示去抖动
LCALLKEYS
JZEXIT
MOVB,20H;保存键值
KEYSF:
LCALLKEYS;调键值处理子程序
JZKEYY;键释放,转到恢复键值
LCALLDISP;调显示子程序延时
AJMPKEYSF;等到键释放
KEYY:
MOVA,B;键值送20H单元保存
EXIT:
RET;返回
KEYS:
MOVP1,#0FFH;先向P1口写1
MOVA,P1;P1口值送累加器A
CPLA;A值取反
ANLA,#0FH;保存P1口的低4位
MOV20H,A;A值送20H保存
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;键功能子程序;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ANKEY:
CLREA;关中断
CHECK:
JBTR0,YXZ;判断是否运行
K0:
CJNEA,#01H,K1
AJMPRUN;转运行
K1:
CJNEA,#02H,K2
AJMPKEY1;转时调整
K2:
CJNEA,#04H,K3
AJMPKEY2;转分调整
K3:
CJNEA,#08H,OUT
AJMPKEY3;转秒调整
YXZ:
JBACC.0,STOP
AJMPOUT
KEY1:
MOVR0,#45H;时调整
LCALLADD1
CLRC
CJNEA,#24H,OUTT
ACALLCLR0
AJMPOUTT
KEY2:
MOVR0,#43H;分调整
LCALLADD1
CLRC2009-12-4
CJNEA,#60H,OUTT
ACALLCLR0
AJMPOUTT
KEY3:
MOVR0,#41H;秒调整
ACALLADD1
CLRC
CJNEA,#60H,OUTT
ACALLCLR0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;传送显示数据;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
OUTT:
MOV30H,40H;秒显示单元41H-42H
MOV31H,41H
MOV32H,#11;"-"
MOV33H,42H;分显示单元43H-44H
MOV34H,43H
MOV35H,#11;"-"
MOV36H,44H;时显示单元44-45H
MOV37H,45H
RET
STOP:
CLRTR0;关电子钟并跳出
RET
RUN:
LCALLTIME;运行电子钟
OUT:
SETBEA;无键按下或完成功能跳出
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;运行电子钟;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TIME:
SETBEA
MOVTL0,#0B0H
MOVTH0,#3CH;3CB0H
MOVR4,#20;50ms,20次循环
SETBTR0;启动定时器0
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;定时中断;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTT0:
PUSHACC
PUSHPSW
CLRET0
CLRTR0
MOVTL0,#0B0H;重新设定定时初值
MOVTH0,#3CH
SETBTR0;启动定时器0
DJNZR4,OUTT0;1秒到
ADDSS:
MOVR4,#14H;20次计数
MOVR0,#41H;秒十位
ACALLADD1;加1程序
CLRC
CJNEA,#60H,ADDMM;1分到
ADDMM:
JCOUTT0
ACALLCLR0
MOVR0,#43H
ACALLADD1;加1程序
CLRC
CJNEA,#60H,ADDHH;1小时到
ADDHH:
JCOUTT0
ACALLCLR0
MOVR0,#45H
ACALLADD1;加1程序
CLRC
CJNEA,#24H,HOUR;1天到
HOUR:
JCOUTT0
ACALLCLR0
OUTT0:
MOV30H,40H;秒显示单元41H-42H
MOV31H,41H
MOV32H,#11;"-"
MOV33H,42H;分显示单元43H-44H
MOV34H,43H
MOV35H,#11;"-"
MOV36H,44H;时显示单元44-45H
MOV37H,45H
POPPSW
POPACC
SETBET0
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;时间清零子程序;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLR0:
CLRA
MOV@R0,A
DECR0
MOV@R0,A
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;加一子程序;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ADD1:
MOVA,@R0;取十位
DECR0
SWAPA
ORLA,@R0;组合十位与个位
ADDA,#01H;加1
DAA;十进制调整
MOVR3,A;暂存
ANLA,#0FH;屏蔽十位
MOV@R0,A;放入个位单元
MOVA,R3;取值
INCR0
SWAPA
ANLA,#0FH;屏蔽个位
MOV@R0,A;放入十位单元
MOVA,R3;数值放入A中等待判断
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;显示子程序30H;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISP:
MOVR1,#30H;显示缓冲存储单元首地址
MOVR2,#80H;从右至左显示
DISP1:
MOVP2,R2;送位控
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A;送段控
ACALLDL;延时
MOVA,R2
JBACC.0,DISP2
RRA
INCR1
MOVR2,A
AJMPDISP1
DISP2:
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0CH
DL:
MOVR6,#14H;显示延时子程序
DL1:
MOVR7,#19H;
DL2:
DJNZR7,DL2
DJNZR6,DL1
RET
END
第5章电子钟的使用说明及调试运行
5.1使用说明书
(1)时间显示:
电子钟上电后,8个数码管显示初始状态即最左边的一个数码管显示P.。
如果未显示P.,只需按一下复位键即可使其显示出P.。
按下A键后电子钟进入自动计时状态,电子钟显示00时00分00秒并开始运行。
(2)时间调整:
若要进行时间调整,则需再次按下A键,进入时间调整状态,然后分别按下B键调时,按下C键调分,按下D键调秒,按下B、C、D键并松开可使电子钟的时,分,秒分别加一。
调整好时间后,按下A键就可以回到调整好的时间为基础的自动计时状态。
无论是在自动计时,还是在调整校正时,都可按下复位键使系统回到显示P.的初始状态。
其中B键显示范围为0-23,0为24点;C,D键显示范围为0-59,0为60分。
5.2电子钟运行结果
5.2.1待机
(如图5-1所示)
5.2.2启动
(如图5-2所示)
图5-2启动
5.2.3运行
(如图5-3所示)
第6章误差分析
在调试运行过程中,在所有参数正确的情况下,我的结果仍出现运行缓慢情况。
产生误差的主要原因是我们用软件计时,计时1秒是采用定时器的中断服务程序。
当电子钟运行1秒,执行中断程序需要一定时间,这个时间就是所产生的误差,这个误差是不可避免的。
同时,单片机工作也会受到环境的影响,比如温度、湿度,以及其它电子设备的干扰。
因此,应该让电子钟工作在适度温度、干燥和电子干扰较少的环境下,还有一种方法就是采用实时时钟芯片,这样可以使误差降低到最少。
第7章设计体会
这次课程设计持续了几周时间,开始一直就想着等别人做出来再去请教别人,没想到,自己做出来的人并不多,也没有谁能够帮我的,于是就去图书馆借书自己琢磨。
借了胡辉主编的《单片机应用系统设计与训练》,细细阅读了里面关于电子钟设计的介绍,学到了蛮多知识的。
后来又弄来了杨老师关于电子钟设计的的课件包,借鉴了相当一部分内容,不管怎么样我也终于是自己搞定了。
但是自己还是去认真再次学习了汇编语言的,还有熟练了PROTEUS和KEIL软件的运用,还用了蛮久没用的PROTEL99SE画了电路原理图,还更好的锻炼了用VISIO画流程图。
虽然大部分都是借鉴的,只是照着描描但自己还是用心去弄懂了。
参考资料
[1]胡辉,单片机应用系统设计与训练[M],中国水利水电出版社,2004.9。
[2]曹巧媛,单片机原理及应用[M],北京:
电子工业出版社,1997.7。
[3]赵秀珍,单永磊,单片微型计算机原理及其应用[M],北京:
中国水利水电出版社,2001.8。
[4]张毅刚,修林成,胡振江,MCS-51单片机应用设计[M],哈尔滨:
哈尔滨工业大学出版社,1990.8。
[5]张洪润,兰清华,单片机应用技术教程[M],北京:
清华大学出版社,1997.11。
[6]李华,MCS-51系列单片机实用接口技术[M],北京:
北京航空航天大学出版社,1993.8。
附录
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电 子 钟 的 设 计.docx
![提示](https://static.bdocx.com/images/bang_tan.gif)