《基于at89s52和1602电子时钟的设计.docx》由会员分享,可在线阅读,更多相关《基于at89s52和1602电子时钟的设计.docx(34页珍藏版)》请在三一办公上搜索。
1、湖南工学院单片机技术课程设计说明书课题名称:基于单片机的电子钟的设计专业名称: 自动化 学生班级: 自本0403班 学生姓名: 唐 勇 学生学号: 46040304 指导教师: 王 韧 单片机技术课程设计任务书一、设计题目:基于单片机的电子钟的设计、基于单片机的频率计的设计二、适用班级:自本04010403三、指导教师:王韧四、任务与要求:1、本课题任务如下:(1)、基于单片机的电子钟的设计设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“P.”, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,
2、则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。(2)、基于单片机的频率计的设计设计一个能够测量矩形波信号的频率、周期、脉宽、占空比的频率计。该频率计上电或按键复位后能自动显示系统提示符“P.”, 进入测量准备状态。按频率测量键则测量频率;按周期测量键则测量周期;按脉宽测量键则测量脉宽;按占空比测量键则测量占空比。2、本课题可选择设计方案如下:(1)、基于单片机并行口的设计在AT89S52的P0口和P2口上外接LED数码管显示器,P0口作LED数码管显示器的段控口,P2口作LED数码管显示器的位控口,P1口外接四个按键A、B、C、D。(2)
3、、基于单片机串行口的设计将AT89S52的串行口扩展成并行口,外接LED数码管显示器;P1口外接四个按键A、B、C、D。(3)、基于Intel 8279的设计利用Intel 8279芯片为AT89S52扩展并行口,通过Intel 8279外接LED数码管显示器和四个按键A、B、C、D构成的键盘。(4)、基于Intel 8155的设计利用Intel 8155芯片为AT89S52扩展并行口,通过Intel 8155外接LED数码管显示器和四个按键A、B、C、D构成的键盘。(5)、基于Intel 8255的设计利用Intel 8255芯片为AT89S52扩展并行口,通过Intel 8255外接LED
4、数码管显示器和四个按键A、B、C、D构成的键盘。3、本课题基本要求如下:(1)、基于单片机的电子钟的设计LED数码管显示器显示当前时间;四个按键的功能:A键用于电子钟启动/调整;B键用于调时,范围0-23,0为24点,每按一次时加1;C键用于调分,范围0-59,0 为60分,每按一次分加1;D键用于调秒, 范围0-59,0为60秒,每按一次秒加1;(2)、基于单片机的频率计的设计LED数码管显示器显示被测信号的频率、周期、脉宽、占空比;四个按键的功能:A键用于测量频率;B键用于测量周期;C键用于测量脉宽;D键用于测量占空比;(3)、以上两个课题可以任选其一或全选,学生也可以自定课题;(4)、编
5、程语言:汇编或C51;(5)、计算机打印单片机技术课程设计说明书一份;(6)、设计时间:二周;(7)、实物制作或Proteus仿真;(8)、人员分组:一人一组或多人一组(不超4人)。五、单片机技术课程设计说明书正文主要内容参照“单片机技术课程设计说明书正文主要内容”文件。六、单片机技术课程设计说明书书写格式 参照“单片机技术课程设计说明书书写格式”文件。七、参考资料1、曹巧媛,单片机原理及应用M,北京:电子工业出版社,1997.7;2、赵秀珍,单永磊,单片微型计算机原理及其应用M,北京:中国水利水电出版社,2001.8;3、张毅刚,修林成,胡振江,MCS-51单片机应用设计M,哈尔滨:哈尔滨工
6、业大学出版社,1990.8;4、张洪润,兰清华,单片机应用技术教程M,北京:清华大学出版社,1997.11;。5、李华,MCS-51系列单片机实用接口技术M,北京:北京航空航天大学出版社,1993.8;6、陈景初,单片机应用系统设计与实践M,北京:北京航空航天大学出版社;7、马忠梅,单片机的C语言Windows环境编程宝典M, 北京:北京航空航天大学出版社,2003.6; 8、李光飞,单片机C程序设计指导M,北京:北京航空航天大学出版社,2003.01 ;9、李光飞,单片机课程设计实例指导M,北京:北京航空航天大学出版社,2004.9。 电气自动化教研室 2007年9月10日摘 要时钟,自从它
7、发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。 数字电子钟的设计方法有多种,其中,利用单片机实现的电子钟具有编程灵活,便于电子钟功能的扩充,即可用该电子钟发出各种控制信号,精确度高等特点,同时可以用该电子钟发出各种控制信号。本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89S52芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时
8、周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能等特点。该电子钟可以做到的功能:上电或按键复位后能自动显示系统提示符“P.”进入时钟准备状态2.第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态。再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。通过设置的A、B、C、D四个键来调整运行,并且利用了8位LED显示时分秒。此电子钟严格按照要求设计,最终达到预期的效果,能够正确显示“P”点以及时分秒的计时,算是一次比较成功的设计了。关键词:电子钟,单片机,汇编目 录第1章 电子钟功
9、能及总体方案的介绍11.1电子钟功能介绍11.1.1基本功能要求11.1.2扩展功能要求11.2总体方案介绍21.2.1计时方案21.2.2键盘/显示方案2第2章 电子钟的工作原理32.1实现时钟计时的基本方法32.2电子钟的时间显示32.3电子钟的启、停及时间调整3第3章 电子钟原理图及元件清单43.1电子钟电路原理图43.2元件清单4第4章 软件系统设计54.1电子钟程序流程框图54.1.1主程序流程框图54.1.2键扫子程序流程框图64.1.3中断服务程序流程框图74.1.5显示子程序流程框图94.1.6加一子程序流程框图104.2电子钟总体程序清单11第5章 电子钟的使用说明及调试运行
10、195.1使用说明书195.1.1操作说明195.2电子钟运行结果195.2.1待机195.2.2启动195.2.3运行20第6章 误差分析21第7章 设计体会22教学建议23参考资料24附 录25致 谢2625第1章电子钟功能及总体方案的介绍1.1电子钟功能介绍1.1.1基本功能要求 可调整运行的电子钟具有三种工作状态:“P.”状态、运行状态、调整状态。 (1)、“P.”状态,依靠上电或按复位键进入,在此状态下,按B、C、D键均无效,按A键有效,进入运行状态; (2)、运行状态,按奇数次A键进入,在此状态下,按B、C、D键均无效,只有按A键有效,按下A键后,退出运行状态,进入调整状态; (3
11、)、调整状态,按偶数次A键进入,在此状态下,按A、B、C、D键均有效。如按下A键,则退出调整状态,进入运行状态;按下B、C、D键,则分别对时、分、秒加1,调整结束后必须按A键,即可退出调整状态,进入运行状态。基本功能要求: “P.”稳定地显示在LED显示器的最左端数码管(LED5)上,无A键按下(在“P.”状态下,按下B、C、D键无效),则不进入电子钟的运行状态,继续显示“P.”。 按下A 键后,电子钟以起始时间:00时00分00秒开始运行。 再次按下A 键后,电子钟退出运行状态,进入调整状态,利用B、C、D键把电子钟的显示时间修改为当前实时时间,时间修改正确后可再次按下A键,电子钟则退出调整
12、状态,进入运行状态。 注意:每次按下B、C、D键,只允许加一,不允许连加。1.1.2扩展功能要求 (1)、在调整状态下,按下B、C、D键,允许连加,而A键无论在何种状态下,均不允许连击; (2)、时、分、秒的间隔符“。”以一定频率闪烁; (3)、时间显示以“灭零”方式进行; (4)、可调整运行的电子钟用两个按键(例如:A键、B键)来控制。1.2总体方案介绍1.2.1计时方案利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单
13、片机技术这门课程起到一定的作用。1.2.2键盘/显示方案AT89S52的P0口和P2口外接由六个LED数码管(LED5LED0)构成的显示器,用P0口作LED的段码输出口,P2口作六个LED数码管的位控输出线,P1口外接四个按键A、B、C、D构成键盘电路。AT89S52 是一种低功耗,高性能的CMOS 8位微型计算机。它带有8K Flash 可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。简易电子钟的功能不复杂,采用其现有的I
14、/O便可完成,所以本书中采用此的设计方案,结构如图1-1如示。11 AT89S52电路显示方框图第2章电子钟的工作原理2.1实现时钟计时的基本方法利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计数。(1) 计数初值计算:把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。假设使用T/C0,方式1,50ms定时,fosc=12MHz。则初值X满足(216-X)1/12MHz12s =50000sX=1553600111100101100003CB0H(2) 采用中断方式进行溢出次数累计,计满20次为秒计时(1秒)
15、;(3) 从秒到分和从分到时的计时是通过累加和数值比较实现。2.2电子钟的时间显示电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元。 LED8LED7LED6LED5LED4LED3LED2LED137H36H35H34H33H32H31H30H时十位时个位分隔分十位分个位分隔秒十位秒个位2.3电子钟的启、停及时间调整电子钟设置4个按键通过程序控制来完成电子钟的启、停及时间调整。A键控制电子钟的启、停;B键调整时;C键调整分;D键调整秒。第3章 电子钟原理图及元件清单3.1电子钟电路原理图电子钟原理图 (见附录1)3.2元件清单电子钟元件清单如表1所示:表1
16、电子钟元器件清单元件名称规格型号数量(个)单片机AT89S521显示驱动芯片74LS24528位一体的共阳LED显示器7SEG-MPX8-CA-BLUE1晶振12MHz1电容33pF2电容22F1按键BUTTON5电阻0.2K1电阻1K1上拉电阻10K4限流电阻0.1K8排阻RESPACK-8/10K1第4章软件系统设计4.1电子钟程序流程框图4.1.1主程序流程框图图4-1主程序流程框图 见图4-1所示 4.1.2键扫子程序流程框图 见图4-2所示 图 4-2 键扫子程序流程框图程框图4.1.3中断服务程序流程框图 见图4-3所示 4-3中断服务程序流程框图4.1.4“P.”点显示子程序流程
17、框图见图4-4所示图4-4 “P.”点显示子程序流程框图4.1.5显示子程序流程框图 见图4-5所示4.1.6加一子程序流程框图 见图4-6所示图 4-6 加一子程序4.2电子钟总体程序清单ORG 0000HAJMP MAINORG 000BHLJMP INTT0ORG 0030HMAIN: MOV SP, #60H;确立堆栈区 MOV PSW, #00H ; MOV R0, #20H ;RAM区首地址 MOV R7, #5FH ;RAM区单元个数QL: MOV R0, #00H ;RAM清零 INC R0 DJNZ R7, QL MOV IP, #02H ;IP初始化,优先定时器0 MOV
18、IE, #82H ;IE初始化, MOV TMOD, #01H ;定时器0方式1工作LCALL PP;调P.子程序NEXT: LCALL KEY ;按键检测子程序 JBACC.0, RUNF ;A键按下运行 LCALL DISP ;调用显示子程序 SJMP NEXTRUNF: LCALL OUTT;调传送子程序 LCALL TIME;开电子钟JK: LCALL DISP;调用显示子程序 LCALL KEY ;按键检测子程序 JZ JK LCALL ANKEY LCALL DISP ;调用显示子程序 SJMP JK; P点显示 ;PP: MOV 37H, #12;P点编码送寄存器 MOV R0,
19、 #30H;P点编码送寄存器 MOV R7, #07HPPP: MOV R0, #10 INC R0 DJNZ R7, PPP RET; 键扫子程序 ;KEY: LCALL KEYS ;调键值处理子程序JZ EXIT ;没有键按下转到返回 LCALL DISP LCALL DISP ;调显示去抖动LCALL KEYS JZ EXITMOV B, 20H ;保存键值KEYSF: LCALL KEYS ;调键值处理子程序JZ KEYY ;键释放,转到恢复键值LCALL DISP ;调显示子程序延时AJMP KEYSF ;等到键释放KEYY: MOV A, B ;键值送20H单元保存EXIT: RE
20、T ;返回KEYS:MOV P1, #0FFH ;先向P1口写1MOV A, P1 ;P1口值送累加器ACPL A ;A值取反ANL A, #0FH ;保存P1口的低4位MOV 20H, A ;A值送20H保存RET; 键功能子程序 ;ANKEY: CLR EA;关中断CHECK: JB TR0, YXZ;判断是否运行K0: CJNE A, #01H, K1 AJMP RUN ;转运行K1: CJNE A, #02H, K2 AJMP KEY1 ;转时调整K2: CJNE A, #04H, K3 AJMP KEY2 ;转分调整K3: CJNE A, #08H, OUT AJMP KEY3 ;转
21、秒调整YXZ: JB ACC.0, STOP AJMP OUTKEY1: MOV R0, #45H;时调整 LCALL ADD1 CLR C CJNE A, #24H, OUTT ACALL CLR0 AJMP OUTTKEY2: MOV R0, #43H;分调整 LCALL ADD1 CLR C CJNE A, #60H, OUTT ACALL CLR0 AJMP OUTTKEY3: MOV R0,#41H ;秒调整 ACALL ADD1 CLR C CJNE A,#60H,OUTT ACALL CLR0; 传送显示数据 ;OUTT: MOV 30H,40H;秒显示单元41H-42H MOV
22、 31H,41H MOV 32H,#11 ; - MOV 33H,42H ;分显示单元43H-44H MOV 34H,43H MOV 35H,#11 ; - MOV 36H, 44H ;时显示单元44-45H MOV 37H, 45H RETSTOP: CLRTR0 ;关电子钟并跳出 RETRUN: LCALL TIME;运行电子钟OUT: SETB EA ;无键按下或完成功能跳出 RET; 运行电子钟 ;TIME: SETB EA MOV TL0, #0B0H MOV TH0, #3CH ;3CB0H MOV R4, #20 ;50ms,20次循环 SETB TR0 ;启动定时器0 RET;
23、 定时中断 ;INTT0: PUSH ACCPUSH PSWCLRET0CLR TR0 MOV TL0, #0B0H ;重新设定定时初值 MOV TH0, #3CHSETB TR0 ;启动定时器0DJNZ R4, OUTT0 ;1秒到ADDSS:MOV R4,#14H ;20次计数 MOV R0,#41H;秒十位 ACALL ADD1 ;加1程序 CLR C CJNE A,#60H,ADDMM ;1分到ADDMM: JC OUTT0 ACALL CLR0 MOV R0,#43H ACALL ADD1 ;加1程序 CLR C CJNE A,#60H,ADDHH ;1小时到ADDHH: JC OU
24、TT0 ACALL CLR0 MOV R0,#45H ACALL ADD1 ;加1程序 CLR C CJNE A,#24H,HOUR ;1天到HOUR: JCOUTT0 ACALL CLR0OUTT0:MOV 30H,40H;秒显示单元41H-42H MOV 31H,41H MOV 32H,#11 ; - MOV 33H,42H ;分显示单元43H-44H MOV 34H,43H MOV 35H,#11 ; - MOV 36H, 44H ;时显示单元44-45H MOV 37H, 45H POP PSW POP ACC SETB ET0 RETI; 时间清零子程序 ;CLR0: CLR A M
25、OV R0,A DEC R0 MOV R0,A RET; 加一子程序 ;ADD1: MOV A,R0 ;取十位 DEC R0 SWAP A ORL A,R0 ;组合十位与个位 ADD A,#01H ;加1 DAA ;十进制调整 MOV R3,A ;暂存 ANL A,#0FH ;屏蔽十位 MOV R0,A ;放入个位单元 MOV A,R3 ;取值 INC R0 SWAP A ANL A,#0FH ;屏蔽个位 MOV R0,A ;放入十位单元MOV A, R3;数值放入A中等待判断 RET;显示子程序 30H ;DISP:MOV R1, #30H ;显示缓冲存储单元首地址 MOV R2, #80H
26、 ;从右至左显示DISP1:MOVP2, R2 ;送位控 MOVA, R1 MOVDPTR, #TAB MOVCA, A+DPTR MOVP0, A;送段控 ACALLDL ;延时 MOVA, R2 JBACC.0, DISP2 RRA INCR1 MOVR2, A AJMPDISP1DISP2: RETTAB: DB 0C0H, 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0CH DL:MOV R6,#14H;显示延时子程序DL1: MOV R7,#19H ;DL2: DJNZ R7,DL2 DJNZ R6,DL1 RETEND第5章
27、电子钟的使用说明及调试运行5.1使用说明书5.1.1操作说明(1) 时间显示:电子钟上电后,8个数码管显示初始状态即最左边的一个数码管显示P.。如果未显示P.,只需按一下复位键即可使其显示出P.。按下A键后电子钟进入自动计时状态,电子钟显示00时00分00秒并开始运行。(2) 时间调整:若要进行时间调整,则需再次按下A键,进入时间调整状态,然后分别按下B键调时,按下C键调分,按下D键调秒,按下B、C、D键并松开可使电子钟的时,分,秒分别加一。调整好时间后,按下A键就可以回到调整好的时间为基础的自动计时状态。无论是在自动计时,还是在调整校正时,都可按下复位键使系统回到显示P.的初始状态。其中B键
28、显示范围为0-23,0为24点;C,D键显示范围为0-59,0 为60分。5.2电子钟运行结果5.2.1待机(如图5-1所示)图5-1 P.显示5.2.2启动(如图5-2所示) 图5-2 启动5.2.3运行(如图5-3所示)图5-3 运行第6章 误差分析在调试运行过程中,在所有参数正确的情况下,我的结果仍出现运行缓慢情况。产生误差的主要原因是我们用软件计时,计时1秒是采用定时器的中断服务程序。当电子钟运行1秒,执行中断程序需要一定时间,这个时间就是所产生的误差,这个误差是不可避免的。同时,单片机工作也会受到环境的影响,比如温度、湿度,以及其它电子设备的干扰。因此,应该让电子钟工作在适度温度、干
29、燥和电子干扰较少的环境下,还有一种方法就是采用实时时钟芯片,这样可以使误差降低到最少。第7章 设计体会这次课程设计持续了几周时间,开始一直就想着等别人做出来再去请教别人,没想到,自己做出来的人并不多,也没有谁能够帮我的,于是就和吴娟去图书馆借书自己琢磨。借了胡辉主编的单片机应用系统设计与训练,细细阅读了里面关于电子钟设计的介绍,学到了蛮多知识的。后来在二班汪宇那里又弄来了王老师关于电子钟设计的的课件包,借鉴了相当一部分内容,不管怎么样我也终于是自己搞定了。但是自己还是去认真再次学习了汇编语言的,还有熟练了PROTEUS和KEIL软件的运用,还用了蛮久没用的PROTEL99 SE画了电路原理图,
30、还更好的锻炼了用VISIO画流程图。虽然大部分都是借鉴的,只是照着描描但自己还是用心去弄懂了。有时间还是会更多锻炼的。感觉这些软件都越来越顺手了。挺开心。发现自己真是不逼就不学的人啦。教学建议所谓的教学建议是第一次写,也不知道应该写些什么。只知道自己没学好,也似乎不爱学这方面的东西。王老师您是个好老师,虽然我感觉您上学期的教学比这学期的吸引人,当然这其中的大部分的原因也都是因为这学期时间太松,加上我们这些大四学生太放任自流了的原因吧。如果要我提出建议,我想,以下这些不成熟也没条理性可言的语句就算是我的所谓“建议”吧。教学,教与学,本来就时老师与学生的互动。老师教得再好,学生没去认真有什么用处?
31、所以我觉得一个好老师可能应该更多的去带动学生去学,勾起学生学习的兴趣。虽然王老师您在这方面已经下了很多功夫,但似乎成效并不大,适得其反,一部分根本不想学的人反而还觉得您逼迫得太紧了,对您意见颇多。形成了这样的局面,我想也不时您所希望见到的,所以为什么您要对每个人都做一样的要求呢?教学,并不是抓学生抓得紧他们就一定学得好的。不是说,上有政策,下有对策吗?您不管怎么样严格要求,可最后,真正不想学的仍旧老油条一根。您的脑细胞却在以极大的速度消亡。您现在已经不时青春年华了,为了您自己的身体着想,请适当的对学生施压,对某些对这方面感兴趣的同学严格要求些。以后又并不是每个学过单片机这一科的人都会走上单片机
32、这条路,为什么不让那些对单片机没兴趣的人有多些时间做别的事情?我知道自己提的意见很不讨您欢心,但是,上学期我就觉得每个人都在您的严格要求下捣鼓单片机。可最终的成效呢?这学期所表现处理的“成效”好像也并不如您意吧?请恕我愚昧!参考资料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。附 录