单片机课程设计(论文)电子钟的设计.doc

上传人:仙人指路1688 文档编号:3936663 上传时间:2023-03-28 格式:DOC 页数:19 大小:539.50KB
返回 下载 相关 举报
单片机课程设计(论文)电子钟的设计.doc_第1页
第1页 / 共19页
单片机课程设计(论文)电子钟的设计.doc_第2页
第2页 / 共19页
单片机课程设计(论文)电子钟的设计.doc_第3页
第3页 / 共19页
单片机课程设计(论文)电子钟的设计.doc_第4页
第4页 / 共19页
单片机课程设计(论文)电子钟的设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《单片机课程设计(论文)电子钟的设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计(论文)电子钟的设计.doc(19页珍藏版)》请在三一办公上搜索。

1、衡水职业技术学院机电工程系课程设计报告书课 题 名 称 学 生 姓 名 系、年级专业 指 导 教 师 2011年 6 月 24 日摘 要本电子钟采用STC89C52单片机为核心,使用12MHz 晶振与单片机STC89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键S1、S2、S3和S4键,进行相应的操作就可实现校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、精度、稳定等优点。整个过程就是先设计和焊

2、接好硬件电路,再通过汇编语言编写应用程序来实现我们需要的功能,这期间,进行的软件仿真和调试是本设计的重点和难点。 关键字:电子钟,STC89C52,硬件设计,软件设计一、方案比较1.设计课题任务学生在教师指导下,综合运用所学知识完成基于51单片机的电子钟的设计。要求格式为:XX XX XX,由左向右分别为:时、分、秒。2.功能要求说明学生应通过课程设计巩固和加深扩大所学的理论知识,掌握单片机应用系统的硬件、软件及其接口的设计和调试方法,并根据调试结果,写出设计报告。设计报告应包括任务书、器件选型及设计思路、软硬件设计过程说明、调试结果总结及分析等内容,并附电路原理图及程序清单。3.设计课题总体

3、方案介绍及工作原理说明本电子钟主要由单片机、4*1独立键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1.1所示: 键盘4*1复位电路晶振电路蜂鸣器STC89C52 单片机数码管驱动74LS245数码管470欧限流电阻二位一体LED数码显示图1.1 总体设计方案图本电子钟的所有的软件、参数均存放在STC89C52的Flash ROM和内部RAM中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。由于STC89C52芯片内部Flash ROM有8KB,RAM有256个字节,故软件下载编译时有足够的存储空间。键盘采用动态扫描方式。利用单片机定时器及计数器产生定时效果通过编程形成数

4、字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。 二、硬件设计1.设计课题硬件系统各模块功能简要介绍本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块。(1).单片机最小系统模块:包括低功耗、高性能CMOS8位微控制器STC89C52;复位电路;晶振电路。本本模块STC89C52系统控制核心,单片机系统复位由复位电路完成,单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端位位引脚XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容。这样就构成一

5、个稳定的自激振荡器。 (2).输入模块:本模块共用到了5个按键,1个电源开关,一个复位键,单片机运行期间,利用按键完成复位操作。3个按键独立式键盘,S1键控制电子钟的启动状态,S2键为加1键,S3键为减1键。且S1、S2、S3任一键都独自连一个I/O(P1.0、P1.1、P1.2)口线,说明它们可以独立实现相应的电子钟功能。(3).输出模块:本次设计显示为8位,采用四个二位一体数码管(共阳极)作为显示窗口,既可以节约成本又能简化电路。数码管驱动为74LS245芯片。(4).电源模块:现在市面上销售的编程器有很多都是由PC机的USB口直接供电为了降低本设计的成本及节省设计时间,没有另外设计编程器

6、,而直接购买了市场上的USB供电及下载器。2.设计课题电路原理图、元器件布局图3.设计课题元器件清单设计课题元器件清单如表2.1所示。表2.1 设计所用元器件清单名称数量参数电阻5个1K共阳数码管4个2位一体电阻4个4.7kISP下载口插座1个普通插座1个40PIN电阻8个470电阻5个200按键5个插针1排40PIN锁紧插座1个40PIN驱动一套74ls245USB供电接口及供电线一套晶振及其插座一套12MHz电容2个30pF极性电容1个22F排阻1个10K芯片1块STC89C52发光二极管1个六角开关1个电容 各1个470f、104P铜柱 (带螺母)4个三、软件设计1.设计课题使用单片机资

7、源的情况设计课题使用单片机资源的情况如下:P0口输出数码管段选信号,P3口输出数码管位选信号;晶振11.0592M;调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁;增加键ADD_KEY:P1.1;按一次使选中位加1;减少键DEC_KEY:P1.2;按一次使选中位减1;P2.1为蜂鸣器发声报时;50H-5FH;16个寄存器单元作为显示单元; 50H 用于控制秒基准时钟源的产生;51H 清零秒寄存器;52H 清零分寄存器;53H 清零时寄存器;5FH 用于秒个位;5EH 用于秒十位;5DH 用于分个位;5CH 用于分十位;5BH 用于时个位;5AH 用于时十位;54H 用于控

8、制调时闪烁;堆栈栈底:70H。2.设计课题软件系统个模块功能简要介绍 本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。主程序:主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。中断服务程序:主要是用于电子钟的准确运行、数据输入过程中的闪烁。键盘输入程序模块:主要是用于确定按键并得到特定的键码值。数码管及其驱动模块:主要是用于驱动数码管及利用数码管显示时间。延时模块:程序中有两种延时子程序,一种是短延时用于判键按下等,一种是长延时。3.设计课题软件系统程序流程框图系统软件采用汇编语言按模块化方式进行设计

9、,然后通过Keil软件开发平台将程序转变成十六进制程序语言,接着使用Proteous 进行仿真,读出显示数据。主程序流程框图如3.1所示;加1子程序如3.2所示;中断服务程序程序如3.3所示;键盘扫描子程序框图如3.4所示;显示子程序框图如3.5所示; 图3.1 主程序流程框图图3.2 加1子程序流程框图图3.3 中断子程序图3.4 键盘扫描子程序 图3.5 显示子程序4.设计课题软件系统程序清单程序入口;- ORG 0000H ;程序入口地址 LJMP START ORG 000BH ;定时器0中断入口地址 LJMP TIMET0ORG 1000H;-;显P.程序;功能:可以在8个数码闪烁移

10、位进行屏保;-START: MOV R6, #2 ;闪烁次数MOV A, #01H ;位选TT:MOV P3, AMOV P0, #0CH ;段码P.LCALL DELAYMOV P3, #00HDJNZ R6, TTLCALL DELAYLCALL DELAY1RR AJB P1.0, TT ;键是否按下,没按下则转移LCALL DELAY ;延时去抖JNB P1.0, KAI ;再次判断键是否按下KAI:SETB P1.0CLR A ;状态恢复MOV P0, #0FFHLCALL DELAY1SETB 48H ;用于调时闪烁标志SETB 47H ;用于产生脉冲用于调时快进的脉冲MOV R1

11、, #0 ;键功能标志:0计时、1调时、2调分、3调秒;-;清16位寄存器及初始化;50H 用于控制秒基准时钟源的产生;51H 清零秒寄存器;52H 清零分寄存器;53H 清零时寄存器;5FH 用于秒个位;5EH 用于秒十位;5DH 用于分个位;5CH 用于分十位;5BH 用于时个位;5AH 用于时十位;54H 用于控制调时闪烁;-MOV R0, #50H ;初始化MOV R6, #10HCLEARJCQ:MOV R0, #00H ;清寄存器INC R0DJNZ R6, CLEARJCQMOV IP, #02HSETB EASETB ET0MOV TMOD, #01H ;设定定时器0工作方式1

12、MOV TH0, #3CHMOV TL0, #0B0H ;赋定时初值,定时50msSETB TR0 ;启动定时器0MOV SP, #70H ;堆栈;-;主程序 ;- MAIN:LCALL DISPLAYLCALL KEY_SCANJZ MAINLCALL SET_KEYJB 46H, MAIN ;如果已进行调时快进,则不再执行下面的调整LCALL ADD_KEY ;调用增加键处理子程序,加一LCALL DEC_KEY ;调用减少键处理子程序,减一LJMP MAIN ;重新循环;-; 显示处理程序;-DISPLAY:MOV A, 51HANL A, #0FHMOV 5FH, A ;转换出秒个位,

13、存入5FHMOV A, 51HANL A, #0F0HSWAP AMOV 5EH, A ;转换出秒十位,存入5EHJB 46H, MIN ;如果调时快进,则跳过闪烁处理程序CJNE R1, #3,MIN ;如果R1为3,闪烁秒位待调整JB 48H, MINMOV 5FH, #0AH ;使该位为10,查表得到使该位不显示MOV 5EH, #0AHMIN:MOV A, 52HANL A, #0FHMOV 5DH, A ;转换出分个位,存入5DHMOV A, 52HANL A, #0F0HSWAP AMOV 5CH, A ;转换出分十位,存入5CHJB 46H, HOURCJNE R1, #2,HO

14、UR ;如果R1为2,闪烁分位待调整JB 48H, HOURMOV 5DH, #0AHMOV 5CH, #0AHHOUR: MOV A, 53HANL A, #0FHMOV 5BH, A ;转换出时个位,存入5BHMOV A, 53HANL A, #0F0HSWAP AMOV 5AH, A ;转换出时十位,存入5AHJB 46H, DISPCJNE R1, #1,DISP ;如果R1为1,闪烁时位待调整JB 48H, DISPMOV 5BH, #0AH ;使该位为10,查表得到使该位不显示MOV 5AH, #0AH;-;数码管动态扫描显示;-DISP:MOV DPTR, #TABLEMOV A

15、, 5FHMOVC A, A+DPTRMOV P0, ASETB P3.7LCALL DELAYCLR P3.7 ;显示秒个位MOV A, 5EHMOVC A, A+DPTRMOV P0, ASETB P3.6LCALL DELAYCLR P3.6 ;显示秒十位MOV A, #0BFHMOV P0, ASETB P3.5LCALL DELAYCLR P3.5 ;显示“-”MOV A, 5DHMOVC A, A+DPTRMOV P0, ASETB P3.4LCALL DELAYCLR P3.4 ;显示分个位MOV A, 5CHMOVC A, A+DPTRMOV P0, ASETB P3.3LCA

16、LL DELAYCLR P3.3 ;显示分十位MOV A, #0BFHMOV P0, ASETB P3.2LCALL DELAYCLR P3.2 ;显示“-”MOV A, 5BHMOVC A, A+DPTRMOV P0, ASETB P3.1LCALL DELAYCLR P3.1 ;显示时个位MOV DPTR, #TABLE1 ;该位使用TABLE1以消除时的十位置0MOV A, 5AHMOVC A, A+DPTRMOV P0, ASETB P3.0LCALL DELAYCLR P3.0 ;显示时十位RET;-;定时器中断1s程序;-TIMET0:PUSH ACC ;保护现场PUSH PSWM

17、OV TH0, #3CHMOV TL0, #0B0HCPL 47H ;产生脉冲用于调时快进INC 54HMOV A, 54HCJNE A, #10,ADD_TIME;产生0.5秒,用于调时闪烁CPL 48H ;取反调时闪烁标志位MOV 54H, #00HADD_TIME:INC 50HMOV A, 50HCJNE A, #10,ZDBACD;整点报时时蜂鸣器响延迟时间SETB P2.1 ;关蜂鸣器ZDBACD:CJNE A, #20,RETI1 ;产生1秒时钟MOV 50H, #00H ;一秒钟时间到,清零50HMOV A, 51HADD A, #01HDA A ;十进制调整MOV 51H,A

18、CJNE A,#60H,RETI1MOV 51H,#00H ;一分钟到MOV A,52HADD A,#01HDA AMOV 52H,ACJNE A,#60H,RETI1CLR P2.1MOV 52H,#00H ;一小时到,开蜂鸣器,清分显示MOV A,53HADD A,#01HDA AMOV 53H,ACJNE A,#24H,RETI1MOV 53H,#00H ;到24点,清零小时RETI1:POP PSWPOP ACC ;恢复现场RETI ;中断返回;-;键盘扫描程序;R4设置为00H是为了在进入长按处理前加长延时,以区分长按与短按键;-KEY_SCAN:CLR 46H ;关闭调时快进标志M

19、OV P1,#0FFH ;将P1口设置成输入状态MOV A,P1CPL AANL A, #07H ;1口低3位连接3个按键,只判断该3位JZ EXIT_KEYLCALL DELAY ;延时去抖动MOV A, P1 ;重新判断CPL AANL A, #07HJZ EXIT_KEYMOV R5, AMOV R4, #00H ;用于控制调时快进速度LOOP: LCALL DISPLAY ;进入长按处理MOV A, P1CPL AANL A, #07HJB 47H, LOOP1INC R4 ;调时快进间隔时间基准加1LOOP1: CJNE R1, #03H,LOOP2 ;如果调秒时长按,则不处理LJM

20、P LOOP3LOOP2: CJNE R4, #99H,LOOP3MOV R4, #70H ;确认长按后,加快调时快进速度SETB 46HLCALL ADD_KEYLCALL DEC_KEYLOOP3: JNZ LOOP ;等待键释放MOV A, R5 ;输出键值RETEXIT_KEY:RET;-;延时子程序;- DELAY:MOV R7,#200 DJNZ R7,$ RETDELAY1:MOV R3,#50 MOV TMOD,#00H MOV TH1,#63H MOV TL1,#18H SETB TR1 LP1:JBC TF1,LP2 SJMP LP1 LP2:MOV TH1,#63H MO

21、V TL1,#18H DJNZ R3,LP1 RET ;-;选择键处理子程序;-SET_KEY:CJNE R5,#01H,EXIT ;选择键键值INC R1 ;调整选择功能标志加一CJNE R1,#4,EXITMOV R1,#0 MOV 54H,#00H ;调时闪烁清零 RET;-;加1子程序;-ADD_KEY:CJNE R5,#02H,EXIT ;加1键值CJNE R1,#01H,NEXT1 ;选择键功能标志为1调时,否则跳出MOV A,53HADD A,#01H DA AMOV 53H,ACJNE A,#24H,EXITMOV 53H,#00H NEXT1:CJNE R1,#02H,NEX

22、T2 ;选择键功能标志为2调分,否则跳出MOV A,52HADD A,#01HDA AMOV 52H,ACJNE A,#60H,EXITMOV 52H,#00HNEXT2:CJNE R1,#03H,EXIT ;选择键功能标志为3调秒,否则跳出MOV A,51HADD A,#01HDAAMOV 51H,ACJNE A,#60H,EXITMOV 51H,#00H ;如加1键按下直接清零秒RET;-;减1子程序;- DEC_KEY:CJNE R5,#04H,EXIT ;减1键键值 CJNE R1,#01H,NEXT3 ;选择键功能标志为1调时,否则跳出 MOV A,53H ADD A,#99H DA

23、 A MOV 53H,A CJNEA,#99H,EXIT MOV 53H,#23H NEXT3:CJNE R1,#02H,NEXT4 ;选择键功能标志为2调分,否则跳出MOV A,52HADD A,#99HDA AMOV 52H,ACJNE A,#99H,EXITMOV 52H,#59H NEXT4:CJNE R1,#03H,EXIT ;选择键功能标志为3调秒,否则跳出 MOV A,51HADD A,#99HDA AMOV 51H,ACJNE A,#99H,EXITMOV 51H,#59H RET;-;返回子程序;- EXIT:RET;-;数码管字形编码表;- TABLE:DB 0C0H,0F

24、9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;0,1,2,3,4,5,6,7,8,9,不显示 TABLE1:DB 0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;小时编码;不显示,1,2,3,4,5,6,7,8,9,不显示END四、系统调试及结论1.设计课题的设计结论及使用说明本设计为基于单片机的电子钟的设计。刚开始,我们很多地方理不清头绪,无从下手,但通过认真研究设计课题,找书上网查资料买元件,确定基本设计方案,对所用芯片功能进行查找、调试,然后画电路图制PCB板、打孔、溶铜、焊接等,真的经历了许

25、多困难,却积累了很多宝贵的经验,本设计用2个四位一体的共阳数码管做为显示器,它显示时间值;设计中有三个按键,其中S1为启动/选择调整位置,S2为加控制键 S3为减控制键,当整点时间到时,蜂鸣器报警。这样的结果与设计要求完全相符,本设计成功。完成了设计任务。2.设计课题的仿真结果在Proteus ISIS的Debug菜单中选择Execute,运行程序,系统仿真结果如图4.1与4.2所示。实现功能:可调整运行的电子钟具有三种工作状态:“P.”状态、运行状态、调整状态。 (1).“P.”状态,依靠上电或按复位键进入,在此状态下,按S2、S3键均无效,按S1键有效,进入运行状态; (2).运行状态,在

26、此状态下,按S2、S3键均无效,只有按S1键有效,按下S1键后,退出运行状态,进入调整状态; (3).调整状态,按S1键进入时、分、秒的闪烁,在此状态下,按S2(+1键)、S3(-1键)键均有效;调整结束后必须按S1键,即可退出调整状态,进入运行状态。在调整状态时长按S2、S3时可以连加及连减。时间显示格式为:时-分-秒; 图4.1 “P.”运行状态仿真图4.2 时钟运行状态仿真3.设计课题的误差分析该电子钟在运行中存在一定的误差,误差产生有三种可能,首先是采用的计时方案是软件计时的,计时优势利用中断来实现。而当电子钟运行时间1秒时,又得去执行中断程序,这个过程是需要时间的,所以就产生了一定的

27、误差,当然这个误差是避免不了的,其次还有硬件系统也有一定的影响。第三,设计用到11.0592MHz的晶振,计算是满20次为一秒钟,但实际会慢很多。五、收获体会本组设计成员有:于滨,李大鹏,王建根;其中:于滨主要负责软件设计和论文编写,李大鹏,王建根主要负责硬件设计。本次设计的成功完成靠的是所有成员的团结合作,共同努力。本次课程设计,让我受益匪浅,认识到了自己的许多缺点和不足,使我深深的感受到了理论联系实际的必要性及其重要性。在我们以往的学习过程中,我们刻意地去加强理论的基础,对于一个程序我们只求它在运行时没有出错,我们便以为我们的计划成功了岂不知它能否在硬件结构中得以实现则是另外一回事,这就要求我们的动手能力,如果无法使软件与硬件实现有机的结合,那么再好的程序也只是一堆废字符。参考文献资料1李全利,单片机原理及应用技术。2 3

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号