单片机课程设计数字电子钟_第1页
单片机课程设计数字电子钟_第2页
单片机课程设计数字电子钟_第3页
单片机课程设计数字电子钟_第4页
单片机课程设计数字电子钟_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 单片机技术课程设计说明书数字电子钟院、部:电气与信息工程学院学生姓名:王文亮指导教师:王韧职称副教授专业:自动化班级:1004完成时间:2012-12-31摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键K1、K2、K3和

2、K4键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点。具有极高的推广应用价值。关键词电子钟;AT89S52;硬件设计;软件设计ABSTRACTClock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a single chip AT89S52 of ATME Ls a

3、s its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube displays hours, minutes and seconds requirements,

4、and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons K1, K2, K3 and K4 key, and make the appropriate action can be achieved when the school, timing, reset. With a time display, alarm clock settings, timer fu

5、nction, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value.Key words Electronic clock;AT89S52;Hardware Design;Software Design目录1设计课题任务、功能要求说明及方案介绍 (11.1设计课题任务 (11.2功能要求说明 (11.3设计总体方案介绍及原理说明 (12设计课题硬件系统的设计 (22.1设计课题硬件系统各模块功能简

6、要介绍 (22.2设计课题电路原理图、PCB图、元器件布局图 (22.3设计课题元器件清单 (33设计课题软件系统的设计 (53.1设计课题使用单片机资源的情况 (53.2设计课题软件系统各模块功能简要介绍 (53.3设计课题软件系统程序流程框图 (53.4设计课题软件系统程序清单 (94设计结论、仿真结果、误差分析、教学建议 (204.1设计课题的设计结论及使用说明 (204.2设计课题的仿真结果 (204.3设计课题的误差分析 (214.4设计体会 (214.5教学建议 (21参考文献 (23致谢 (24附录 (251 设计课题任务、功能要求说明及方案介绍1.1 设计课题任务设计一个具有特

7、定功能的电子钟。具有时间显示、报时等功能。并有时间设定,时间调整功能。1.2 功能要求说明设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。1.3 设计课题总体方案介绍及工作原理说明本电子钟主要由单片机、4*1独立键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1.1所示: 图1.1 总体设计方案图本电子钟的所有的软件、参数均存放在A

8、T89S52的内部ROM和内部RAM中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。键盘采用动态扫描方式。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。2 设计课题硬件系统的设计2.1设计课题硬件系统各模块功能简要介绍本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块。(1单片机最小系统模块:包括低功耗、高性能CMOS8位微控制器AT89S52;复位电路;晶振电路。本模块AT89S52系统控制核心,单片机系统复位

9、由复位电路完成,单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端位位引脚XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容。这样就构成一个稳定的自激振荡器。(2输入模块:本模块共用到了5个按键,1个复位键,单片机接通电源后,利用按键复位完成复位操作。,K1键控制电子钟的启动调整状态,做正常走时状态时K2为电子钟时调整键,K3为电子钟分调整键,K4键为电子钟秒调整键,当作为闹钟调整状态时K4键为闹钟启动/关闭,K2为闹钟时调整键,K3为闹钟分调整键。K1、K2、K3,K4任一键都独自连一个I/O(P1.0、P1.1、P1.2口线,说明它们可以独立实现相应的电

10、子钟功能。(3输出模块:本次设计显示为8位字符,采用两个四位一体数码管(共阳极作为显示窗口,既可以节约成本又能简化电路。数码管用8个PNP三极管驱动。(4电源模块:现在市面上销售的编程器有很多都是由PC机的USB口直接供电为了降低本设计的成本及节省设计时间,没有另外设计编程器,而直接购买了市场上的USB供电及下载器。2.2设计课题电路原理图、PCB图、元器件布局图 图2.1 电路原理图 图2.2 PCB图 图2.3 元器件布局图2.3设计课题元器件清单表2.1 设计所用元器件清单 3 设计课题软件系统的设计3.1 设计课题使用单片机资源的情况设计课题使用单片机资源的情况如下:P0口输出数码管段

11、控信号,P2口输出数码管位控信号;晶振12MHz;时间调整开关键K1:P1.0;通过K1切换电子钟走时/暂停;时调整键K2:P1.1;按一次使电子钟时加1;分调整键K3:P1.2;按一次使电子钟分加1;秒调整键K4:P1.3按一次使电子钟秒加1/闹钟开启或关闭;蜂鸣器接:P3.1;整点和闹钟时间到时蜂鸣器报时;28H-36H;9个寄存器单元作为显示单元;28H 闹铃小时缓冲区;29H闹铃分钟缓冲区;30H 位选通控制位; 31H 显示位数计数器;32H 走时小时缓冲区;33H 走时分钟缓冲区;34H走时秒缓冲区; 35H 定时器中断次数计数器;36H显示缓冲区首地址;3.2设计课题软件系统个模

12、块功能简要介绍本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。主程序:主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。中断服务程序:主要是用于电子钟的准确运行、数据输入过程中的闪烁。键盘输入程序模块:主要是用于确定按键并得到特定的键码值。数码管及其驱动模块:主要是用于驱动数码管及利用数码管显示时间。延时模块:程序中有两种延时子程序,一种是短延时用于判键按下等,一种是长延时。3.3 设计课题软件系统程序流程框图系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程序转变成十六进制程

13、序语言,接着使用Proteous 进行仿真,读出显示数据。 图3.1 主程序流程框图 图3.2 定时器初始化子程序流程框图 图3.3 转换子程序 图3.4动态显示子程序图3.5定时器1中断服务程序 图3.6 按键处理子程序流程框图3.4设计课题软件系统程序清单;= ;课程设计名称:数字电子钟; 要求:.显示系统提示符“P.”; .定义5个功能键:分别是复位键,启动/暂停键,时调整键,分调整键,秒调整键; .在系统提示符状态下,只有按启动键/暂停键才能开启电子钟; .在电子钟运行状态下,只有按启动键/暂停键才能调整电子钟; 附加功能:.能自动正点报时; .能设定闹钟; 作者:自本1004班王文亮

14、; 完成时间:2012年12月24日; 电路描述:P0口为数码管段控口,P2口为数码管位控口,蜂鸣器接P3.1口, LED灯接P3.7口;=;=; 程序定义段;=ALARM BIT 20H.0K1 BIT P1.0K2 BIT P1.1K3 BIT P1.2K4 BIT P1.3HOUR_A EQU 28HMIN_A EQU 29HDISP_DIGIT EQU 30HDISP_SEL EQU 31HHOUR EQU 32HMIN EQU 33HSEC EQU 34HT1_COUNT EQU 35HDISP_BUF EQU 36H;=; 主程序开始;=ORG 0000HLOOP: MOV P0,

15、 #0CHMOV P2, #7FHJB P1.0, LOOPLCALL DELAY_10msJB P1.0, LOOPJNB P1.0, $LJMP MAINORG 000BHLJMP TIME0ORG 001BHLJMP TIME1ORG 0100HMAIN: MOV SP, #70HMOV P0, #0FFH MOV P2, #0FFH CLR ALARMMOV HOUR_A, #12MOV MIN_A, #00 MOV HOUR, #0MOV MIN, #0MOV SEC, #0MOV T1_COUNT, #0MOV DISP_DIGIT,#7FHMOV DISP_SEL, #0MOV

16、DISP_BUF+2,#10MOV DISP_BUF+5,#10ACALL T0T1_INITSTART: ACALL CONVACALL ALA_CHECKJB K1, K1_NEXT ACALL LIGHTACALL KEY_PROCAJMP STARTK1_NEXT: JB K2, K2_NEXTAJMP STARTK2_NEXT: JB K3, K3_NEXTAJMP STARTK3_NEXT: JB K4, K4_NEXTACALL LIGHTACALL ALARM_SETCPL ALARMJNB ALARM, STOP_BEEPACALL LIGHTACALL LIGHTACALL

17、 LIGHTAJMP STARTSTOP_BEEP:ACALL LIGHTK4_NEXT: AJMP START;= ; 定时器T0.T1初始化子程序;= T0T1_INIT:MOV TMOD, #11HMOV TH0, #0F8HMOV TL0, #0CCHMOV TH1, #0DCHMOV TL1, #00HSETB EASETB ET0SETB ET1SETB TR0SETB TR1RET;=; 走时转换子程序;= CONV: MOV A, HOURMOV B, #10DIV ABMOV DISP_BUF, AMOV A, BMOV DISP_BUF+1,AMOV A, MINMOV B

18、, #10DIV ABMOV DISP_BUF+3,AMOV A, BMOV DISP_BUF+4,AMOV A, SECMOV B, #10DIV ABMOV DISP_BUF+6,AMOV A, BMOV DISP_BUF+7,ARET;= ; 定时器T0中断服务程序,用于数码管扫描;= TIME0: PUSH ACCPUSH PSWMOV TH0, #0F8HMOV TL0, #0CCHACALL DISPPOP PSWPOP ACCRETI;= ; 显示子程序;= DISP: MOV P2, #0FFHMOV A, #DISP_BUFADD A, DISP_SELMOV R0, AMO

19、V A, R0MOV DPTR, #TABMOVC A, A+DPTRMOV P0, AMOV P2, DISP_DIGITMOV A, DISP_DIGITRR AMOV DISP_DIGIT,AINC DISP_SELMOV A, DISP_SELCLR CSUBB A, #8JZ RST_0AJMP DISP_RETRST_0: MOV DISP_SEL, #0DISP_RET: RET;= ; 定时器T1中断服务程序,用于电子钟走时;= TIME1: PUSH PSWPUSH ACCMOV TH1, #0DCHMOV TL1, #00HINC T1_COUNTMOV A, T1_COU

20、NTCLR CSUBB A, #100JC END_T1MOV T1_COUNT, #00HINC SECMOV A, SECCJNE A, #60, END_T1INC MINMOV SEC, #0MOV A, MINCJNE A, #60, END_T1INC HOURLCALL BEEPLCALL BEEPLCALL BEEPLCALL BEEPLCALL BEEPMOV MIN, #0MOV A, HOUR CJNE A, #24, END_T1MOV SEC, #0MOV MIN, #0MOV HOUR, #0END_T1: POP ACCPOP PSWRETI;= ; 数码管段控码

21、表;= TAB: DB 0C0H,0F9H,0A4H,0B0H,099HDB 092H,082H,0F8H,080H,090HDB 0BFHDB 0FFH;= ; 按键处理子程序;= KEY_PROC: CLR TR1KEY2: JB K2, KEY3ACALL DELAY_10msJB K2, KEY3JNB K2, $INC HOURMOV A, HOURCJNE A, #24, KEY2_NEXT MOV HOUR, #0KEY2_NEXT:ACALL CONVAJMP KEY2KEY3: JB K3, KEY4ACALL DELAY_10msJB K3, KEY4JNB K3, $IN

22、C MINMOV A, MINCJNE A, #60, KEY3_NEXT MOV MIN, #0KEY3_NEXT:ACALL CONVAJMP KEY2KEY4: JB K4, KEY1ACALL DELAY_10msJB K4, KEY1JNB K4, $INC SECMOV A, SECCJNE A, #60, KEY4_NEXTMOV SEC, #0KEY4_NEXT:ACALL CONVAJMP KEY1KEY1: JB K1, KEY2ACALL DELAY_10msJB K1, KEY2JNB K1, $ACALL LIGHTSETB TR1KEY_RET: RET;=; LE

23、D灯亮子程序;= LIGHT: CLR P3.7ACALL DELAY_100msSETB P3.7ACALL DELAY_100msRET;=; 蜂鸣器响子程序;= BEEP: CLR P3.1ACALL DELAY_100msSETB P3.1ACALL DELAY_100msRET;= ; 闹钟检查及处理子程序;= ALA_CHECK:JNB ALARM, CHECK_RETMOV A, HOURMOV B, HOUR_ACJNE A, B, CHECK_RETMOV A, MINMOV B, MIN_ACJNE A, B, CHECK_RET TIME_OUT:ACALL BEEPAC

24、ALL CONVJB K4, TIME_OUTJNB K4, $CLR ALARMCHECK_RET:RET;= ; 闹钟时间设置子程序;= ALARM_SET:ACALL CONV_AAKEY2: JB K2, AKEY3ACALL DELAY_10msJB K2, AKEY3JNB K2, $INC HOUR_AMOV A, HOUR_ACJNE A, #24, AKEY2_NEXTMOV HOUR_A, #0AKEY2_NEXT:ACALL CONV_AAJMP AKEY2AKEY3: JB K3, AKEY4ACALL DELAY_10msJB K3, AKEY4JNB K3, $IN

25、C MIN_AMOV A, MIN_ACJNE A, #60, AKEY3_NEXTMOV MIN_A, #0AKEY3_NEXT:ACALL CONV_AAJMP AKEY2AKEY4: JB K4, AKEY2JNB K4, $ACALL LIGHTACALL CONVAKEY_RET: RET;= ; 闹钟时间转换子程序;= CONV_A: MOV A, HOUR_AMOV B, #10DIV ABMOV DISP_BUF, AMOV A, BMOV DISP_BUF+1, AMOV A, MIN_AMOV B, #10DIV ABMOV DISP_BUF+3, AMOV A, BMOV

26、 DISP_BUF+4, AMOV DISP_BUF+6, #0MOV DISP_BUF+6, #0RETDELAY_100ms:MOV R7, #13HDL1:MOV R6, #14HDL0:MOV R5, #82HDJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1RETDELAY_10ms:MOV R7, #01HDL3:MOV R6, #26HDL2:MOV R5, #82HDJNZ R5, $DJNZ R6, DL2DJNZ R7, DL3RETEND4 设计结论、仿真结果、误差分析、教学建议4.1 设计课题的设计结论及使用说明本设计为基于单片机的电子钟的设计。刚开始

27、,我们很多地方理不清头绪,无从下手,但通过认真研究设计课题,找书上网查资料买元件,确定基本设计方案,对所用芯片功能进行查找、调试,然后画电路图制PCB板、打孔、溶铜、焊接等,真的经历了许多困难,却积累了很多宝贵的经验,本设计用2个四位一体的共阳数码管做为显示器,它显示时间值;设计中有三个按键,其中S1为启动/选择调整位置,S2为加控制键 S3为减控制键,当整点时间到时,蜂鸣器报警。这样的结果与设计要求完全相符,本设计成功。完成了设计任务。4.2 设计课题的仿真结果在Proteus ISIS的Debug菜单中选择Execute,运行程序,系统仿真结果如图4.1与4.2所示。实现功能:可调整运行的

28、电子钟具有三种工作状态:“P.”状态,运行状态,走时调整状态,闹钟调整状态(1、“P.”状态:依靠上电或按复位键进入,在此状态下,按K2,K3,K4键均无效,按K1键有效,进入运行状态;(2、运行状态:在此状态下,按K2,K3键均无效,只有按K1,K4键有效,按下K1键后,退出运行状态,进入调整状态。(3、调整状态:按K1键进入在此状态下,按K2(时+1键、K3(分+1键,K4(秒+1键键均有效;调整结束后必须按K1键,即可退出调整状态,进入运行状态。(4、闹钟调整状态:闹钟走时状态下按K4键进入,在此状态下,按K2(时+1键、K3(分+1键,键均有效;调整结束后必须按K4键,即可退出闹钟调整

29、状态,进入运行状态。时间显示格式为:时-分-秒; 图4.1 “P.”运行状态仿真 图4.2 时钟运行状态仿真4.3 设计课题的误差分析该电子钟在运行中存在一定的误差,误差产生有三种可能,首先是采用的计时方案是软件计时的,计时优势利用中断来实现。而当电子钟运行时间1秒时,又得去执行中断程序,这个过程是需要时间的,所以就产生了一定的误差,当然这个误差是避免不了的,其次还有硬件系统也有一定的影响。第三,设计用到12MHz的晶振,计算是满20次为一秒钟,但实际会慢很多。4.4 设计体会本次课程设计,让我受益匪浅,认识到了自己的许多缺点和不足,使我深深的感受到了理论联系实际的必要性及其重要性。在我们以往的学习过程中,我们刻意地去加强理论的基础,对于一个程序我们只求它在运行时没有出错,我们便以为我们的计划成功了岂不知它能否在硬件结构中得以实现则是另外一回事,这就要求我们的动手能力,如果无法使软件与硬件实现有机的结合,那么再好的程序也只是一堆废字符。4.5 教学建议经过一个学期王韧老师教导的的单片机学习,我掌握了很多单片机学习的宝贵经验,尤其在编程的思路和PCB实物的制作上面。编程思路是整个程序的灵魂,没有编程思路,程序就不会编出来,就失去了编程的意义。在开始编程之前,想好编程的思路,编程能力才会提高

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论