片机电子时钟课程设计.doc_第1页
片机电子时钟课程设计.doc_第2页
片机电子时钟课程设计.doc_第3页
片机电子时钟课程设计.doc_第4页
片机电子时钟课程设计.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1电子钟功能及总体方案的介绍1.1 电子钟功能介绍1.1.1 基本功能要求 可调整运行的电子钟具有三种工作状态:“P.”状态、运行状态、调时状态。 (1)、“P.”状态,依靠上电或按复位键进入,在此状态下,按S3、S4、S5键均无效,按S2键有效,进入运行状态; (2)、运行状态,按S2键进入,在此状态下,按S3、S4、S5键均无效,只有按S2键有效,按下S2键后,退出运行状态,进入暂停状态; (3)、调时状态,在暂停此状态下,按S2、S3、S4、S5键均有效。如按下S2键,则退出调整状态,进入运行状态;按下S3键,则对时进行加一,按下S4、S5键对分、秒加一,调时结束后必须按A键,即可退出调时状态,进入运行状态。基本功能要求: “P.”稳定地显示在LED显示器的最左端数码管上,无S2键按下(在“P.”状态下,按下S3、S4、S5键无效),则不进入电子钟的运行状态,继续显示“P.”。按下S2键后,电子钟以起始时间:00时00分00秒开始运行。 再次按下S2 键后,电子钟退出运行状态,进入暂停状态,利用S3、S4、S5键把电子钟的显示时间修改为当前实时时间,时间修改正确后可再次按下S2键,电子钟则退出调时状态,进入运行状态。1.2 总体方案介绍1.2.1 计时方案 利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。1.2.2 键盘/显示方案 AT89S52的P0口和P2口外接由八个LED数码管(LED7LED0)构成的显示器, 四个按键S2、S3、S4、S5构成键盘电路。AT89S52 是一种低功耗,高性能的CMOS 8位微型计算机。它带有8K Flash 可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。简易电子钟的功能不复杂,采用其现有的I/O便可完成,所以本书中采用此的设计方案,结构如图1如示 2 硬件系统设计2.1 硬件系统各模块功能介绍2.1.1 单片机最小系统 单片机最小系统包括电源电路、时钟电路、复位电路。只有当单片机有了这些电路才会工作。电源电路给单片机供电,时钟电路给单片机提供计数时间,复位电路可以实现单片机的复位。2.1.2 按键电路 按键电路的设计就是在一段公共接地,另一端通过上拉电阻接到P1口,当有按键按下,相应的口就会变成低电平,产生一个下降沿。2.1.3 流水灯电路 流水灯电路直接挂接在单片机的P3口上,采用共阳接法。而蜂鸣器就接在P3.1口上。2.1.4 数码管电路 数码管的段控口接在单片机的P0上,而位控口通过三极管接在单片机的P2口上。2.1.5 下载口电路 下载口的1脚接P1.5口,2脚悬空,3脚接单片机的复位口,4脚接P1.6口,5脚接P1.7口,6脚接地,7、8、8、10脚接地。2.1.6 电子钟的启、停及时间调整 电子钟设置4个按键通过程序控制来完成电子钟的启、停及时间调整。 S2键控制电子钟的启、停; S3键时加一; S4键分加一; S5键秒加一。2.2 系统电路图 原理图见附录。2.3 元器件清单表1器件型号数量器件型号数量单片机AT89S521个按键普通4个晶振12MHZ1个开关6脚开关1个电容22uf,33pf若干数码管HSN5642S2个电阻普通若干下载接口10针接口1个单排针10针接口1个蜂鸣器脉冲式1个3 软件系统设计3.1 数字电子钟软件系统主要模块功能简要介绍 (1) 主程序:主程序的主要功能是进行定时器/计数器,显示缓冲区的初始化,显示,以及判断是否有功能键按下,判断按下的键并调相应的键功能程序。 (2) 键功能程序:键功能程序的主要功能是执行对应的功能,S0键为启动/暂停键,第一次按下则由待机状态进入运行状态启动时钟,从00-00-00开始显示,然后按下则暂停,按下S0进入调时状态,分别按下按下S1、S2、S3键进行加1调时,再按S0则进入时钟运行状态。 (3) 中断服务程序:中断服务程序的主要功能是进行计时操作,程序开始先判断计数溢出是否满了20次,若不满20次则表明没有达到最小计时单位秒,则中断返回;若满20次表明已达到最小计时单位秒,则程序断续向下执行,进行分和时的计时。 (4) 显示子程序:显示程序的主要功能是将显示缓冲区的段控码正确的显示在数码管上,采用动态显示,从右向左循环点亮每一位数码管。 (5) 键扫子程序:键扫子程序的主要功能是判断是否有键按下,是哪个键按下。3.2 电子钟程序流程框图(1) 主程序流程框图如图2 图3 主程序流程框图(2) 中断服务程序流程框图如图3(3) 键扫子程序流程框图如图4(4) 显示子程序流程框图如图53.3 数字电子钟程序清单 程序清单见附录 图2 主程序流程框图 图3 中断服务程序流程框图如图4 键扫子程序流程框图 如图5 显示子程序流程框图4 电子钟设计结论4.1 使用说明书4.1.1 操作说明 (1)时间显示:电子钟上电后,8个数码管显示初始状态即最左边的一个数码管显示P.。如果未显示P.,只需按一下复位键即可使其显示出P.。按下S2键后电子钟进入自动计时状态,电子钟显示00时00分00秒并开始运行。 (2)时间调整:若要进行时间调整,则需再次按下S2键,进入时间暂停调整状态,然后按下S3键进行时钟的加一,按下S4键进行分钟的加一,按下S5键进行秒钟的加一,调整好时间后,按下S2键就可以回到调整好的时间为基础的自动计时状态。无论是在自动计时,还是在调整校正时,都可按下复位键使系统回到显示P.的初始状态。4.2 电子钟运行结果4.2.1 待机 上电复位或者按键复位后“P.”的显示(如图6所示)图6 P.显示4.2.2 启动 按下S2键后“00-00-00”的显示(如图7所示) 图7 启动4.2.3 运行按下S3、S4、S5可分别进行调时、调分、调秒,运行时的显示(如图8所示)图8 运行 4.3 误差分析在调试运行过程中,在所有参数正确的情况下,我的结果仍出现运行缓慢情况。产生误差的主要原因是我们用软件计时,计时1秒是采用定时器的中断服务程序。当电子钟运行1秒,执行中断程序需要一定时间,这个时间就是所产生的误差,这个误差是不可避免的。同时,单片机工作也会受到环境的影响,比如温度、湿度,以及其它电子设备的干扰。因此,应该让电子钟工作在适度温度、干燥和电子干扰较少的环境下,还有一种方法就是采用实时时钟芯片,这样可以使误差降低到最少。4.4 设计体会这次课程设计持续了几周时间,开始一直就想着等别人做出来再去请教别人,没想到,自己做出来的人并不多,也没有谁能够帮我的,于是就和吴娟去图书馆借书自己琢磨。借了胡辉主编的单片机应用系统设计与训练,细细阅读了里面关于电子钟设计的介绍,学到了蛮多知识的。后来在二班汪宇那里又弄来了王老师关于电子钟设计的的课件包,借鉴了相当一部分内容,不管怎么样我也终于是自己搞定了。但是自己还是去认真再次学习了汇编语言的,还有熟练了PROTEUS和KEIL软件的运用,还用了蛮久没用的PROTEL99 SE画了电路原理图,还更好的锻炼了用VISIO画流程图。虽然大部分都是借鉴的,只是照着描描但自己还是用心去弄懂了。有时间还是会更多锻炼的。感觉这些软件都越来越顺手了。挺开心。发现自己真是不逼就不学的人啦。结束语 我觉得作为一名自动化的学生,单片机的课程设计是很有意义的。更重要的是如何把自己平时所学的东西应用到实际中。虽然自己对于这门功课并不是很熟练,很多基础的东西都还没有很好地掌握,觉得有困难,也没有很有效地通过自身去理解,但是在同学的帮助和辅助以及老师的鼓励和支持下,渐渐的开始了解好,主动学习并从基础慢慢弄懂。到最后完成了课程设计,我认为这个收获相当的大。致 谢 这次的课程设计,所谓是一波三折啊。但终于还是完成了!这个历史性时刻的来临,要感谢的人太多太多! 首先,感谢我们尊敬的王老师,有了他的谆谆教诲,处处提点,我才得以成功的完成。是他在课堂上将电子钟的原理及设计思路详细讲解给我们听,也是王老师一次次给我们指出原理图的错误,让我们修改再重新绘制。老师在课堂上严格要求我们,这是对我们的负责,毕竟严师出高徒。而我自由散漫的性格弱点也说明了我需要这样的老师来对我进行督促和鞭策,我学到的不仅仅只有书本上的知识,还有做人的道理。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。在此谨向王老师致以诚挚的谢意和崇高的敬意。 其次,是我亲爱的同学们,如果没有他们的对我的帮助和关照还有鞭策,我想,我对Keil和Proteus这些软件根本就不会这么熟练起来的。 谢谢你们!参考文献1李广弟,单片机基础M,北京航空航天大学出版社,2007.6。 2马忠梅,单片机的C语言应用程序设计M,北京航空航天大学出版社,2007.1。附 录附录1 电路原理图:附录2 PCB顶层附录3 PCB底层图: 附录4 PCB元器件布局图: 附录5 数字电子钟程序清单:*:;项目名称:数字电子钟的设计;设计者:肖妙兰;设计日期:2011年12月18日;*;堆栈栈底7FH;*;LED数码管显示器设定;P0.7-P0.0段控线,接LED的显示段dp,g,f,e,d,c,b,a;P2.7-P2.0位控线,从左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0);显示缓冲区设定从左至右依次为7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7时十,LED6时个,LED5分隔符,LED4分十,LED3分个,LED2分隔符,LED1秒十,LED0秒个);*;独立式键盘设定;8个按键S2至S9分别依次接在P1.0至P1.7口线; ;*;子程序;DISP(数码管显示子程序);DL(1毫秒延时子程序,晶振频率12MHz);*;常数表格;TAB(共阳数码管字型代码表);DISBH(系统提示符P.字型代码序号表);*;中断服务程序INTR;*;键功能程序;*;数据存储器变量及常量单元定义;*;伪指令定义区 ;时间值缓冲区 SONEEQU30H;秒个位STENEQU31H;秒十位MONEEQU32H;分个位MTENEQU33H;分十位HONEEQU34H;时个位HTENEQU35H;时十位SECEQU36H;秒(压缩BCD码)MINEQU37H;分(压缩BCD码)HOUREQU38H;时(压缩BCD码)LIMEQU39H;时间显示值上限“中转站”HIGEQU3AH;时间值高位“中转站”;*;系统起始程序区 ORG 0000H START: LJMP MAINORG 000BHLJMP INTR;*;系统监控程序区 ORG 0030H MAIN: MOV SP, #7FH ;确立堆栈区 MOV PSW, #00H ;初始化PSW,通用寄存器组0 MOV R0, #20H ;RAM区首地址 MOV R7, #96 ;RAM区单元个数 ML: MOV R0, #00H INC R0 DJNZ R7, ML TSF: MOV DPTR, #DISBH ;“P.”字符代码表首地址 MOV R5, #08H MOV R0, #78H DISPTSF:CLR A MOVC A, A+DPTR MOV R0, A ;字符序号送显缓 INC R0 INC DPTR DJNZ R5, DISPTSFMOV TMOD,#01H;定时器0以方式1工作CLREA;关总中断CLRET0;关定时器0中断CLR21H.0PUSH PSWCLR RS1 ;改变当前寄存器组为组1 SETB RS0MOVR3,#1EH ;“二十分频器”赋初值20POPPSW ;恢复当前寄存器组的组号 DD:LCALL DISP LCALL KEYJB 20H.0, BG ;为1转移LJMP DD;*;键功能程序区;8个按键S2至S9分别依次接在P1.0至P1.7口线;开始键(S2键)功能程序 BG: MOVHTEN,#00HMOVHONE,#00HMOV7AH,#012HMOVMTEN,#00HMOVMONE,#00HMOV7DH,#012H;显缓、时间值缓冲区、各“中转站”MOVSTEN,#00HMOVSONE,#00HMOVHOUR,#00HMOVMIN,#00HMOVSEC,#00HMOVHIG,#00HLCALLTTX;调时间值送显缓子程序SETBEA;开总中断SETBET0;开定时器0中断SETBPT0 ;定时器0优先级最高,其余为低优先级 SO:MOVTH0,#6FH;赋定时器初值 MOVTL0,#0FFHSETBTR0;开定时器 LOOP:LCALLDISP;调显示子程序 LCALLKEY;调键扫子程序JB20H.0,STOP;判断S3键(停止键)是否按下 LJMPLOOP;停止键(S2键)功能程序 STOP:CLRTR0 LCALLDISP;调显示子程序 LCALLKEY;调键扫子程序JB20H.0,SO;S2键按下,跳至赋SO继续计时JB20H.1,AH;S3键按下,跳至(S3键)功能程序JB20H.2,AM;S4键按下,跳至(S4键)功能程序JB20H.3,AS;S5键按下,跳至(S5键)功能程序LJMPSTOP;调时键(S3键)功能程序 AH:PUSHPSW CLR RS0 ;改变当前寄存器组为组2 SETB RS1MOVR0,#HTEN ;将加一子程序AD入口参数定为“时”MOVA,HOURCJNEA, #23H,H ;为23则跳至重赋时间值程序LJMP RSETH H:LCALLAD;不为23,调加一子程序ADMOVHOUR,R2;更新时(压缩BCD码)LCALLTTX;调时间值送显缓子程序TTXPOPPSW ;恢复当前寄存器组的组号LJMPSTOP;调分键(S4键)功能程序 AM:PUSHPSW CLR RS0 ;改变当前寄存器组为组2 SETB RS1MOVR0,#MTEN ;将加一子程序入口参数定为“分”MOVA,MINCJNEA, #59H,M;为59则跳至重赋时间值程序LJMPRSETM M:LCALLAD ;不为59,调加一子程序ADMOVMIN, R2 ;更新分(压缩BCD码)LCALLTTX;调时间值送显缓子程序TTX POPPSW ;恢复当前寄存器组的组号LJMPSTOP;调秒键(S5键)功能程序 AS:PUSHPSW CLR RS0 ;改变当前寄存器组为组2 SETB RS1MOV R0, #STEN;将加一子程序入口参数定为“秒”MOV A, SECCJNE A, #59H,S;为59则跳至重赋时间值程序LJMPRSETS S:LCALLAD ;不为59,调加一子程序ADMOVSEC, R2;更新秒(压缩BCD码)LCALLTTX;调时间值送显缓子程序TTX POPPSW ;恢复当前寄存器组的组号LJMPSTOP RSETH: MOVR0,#00H DECR0 MOVR0,#00HMOVHOUR,#00HPOPPSWLCALLTTX LJMPSTOPRSETM:MOVR0,#00H DECR0 MOVR0,#00HMOVMIN,#00HPOPPSWLCALL TTX LJMP STOP RSETS:MOV R0,#00H DEC R0 MOVR0,#00HMOVSEC,#00HPOPPSWLCALL TTX LJMP STOP;键扫子程序KEY;出口:B,20HKEY: LCALL KEYCHULI ;调键处理子程序 JZ EXIT ;A为0转移 LCALL DISP ;去抖动 LCALL DISP LCALL KEYCHULI ;调键处理子程序 JZ EXIT MOV B, 20H ;保存键值 KEYSF: LCALL KEYCHULI ;调键处理子程序 JZ KEY1 ;按键释放,准备退出KEY子程序 LCALL DISP LJMP KEYSF ;等待键释放KEY1: MOV 20H, B ;恢复键值EXIT: RET键处理子程序KEYCHULI;出口:A,20HKEYCHULI: MOV P1, #0FFH ;先向P1口写1 MOV A, P1 CPL A MOV 20H, A ;保存取反后的键值 RET;*;常数表格区;系统初始化后提示符“P.”字符代码表 DISBH:DB 10H,10H,10H,10H,10H,10H,10H,11H ;提示符“P.”字符序号;显示字符段选码表(共阳极代码)TAB: DB 0C0H, 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H ;0-8 DB 90H, 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH ;9,A,B,C,D,E,F,灭,p.;*;中断服务程序INTR; INTR: PUSHDPH PUSHDPL PUSHACC PUSHPSW CLRTR0 CLR RS0 ;改变当前寄存器组为组2 SETB RS1MOVTH0,#6FH ;重赋定时器初值 MOVTL0,#0FFHDJNZR3,INTREXIT ;未减至零,转至INTREXITMOVR3,#1EH ;减至零重赋“二十分频器”初值 JS:CLR21H.0 MOVHIG,#STEN MOVLIM,#59H MOVR1,#SEC LCALLSYNJB21H.0,JMLJMPINTREXIT JM: CLR21H.0 MOVHIG,#MTEN MOVLIM,#59H MOVR1,#MIN LCALLSYNJB 21H.0,JHLJMP INTREXIT JH: CLR21H.0 MOVHIG,#HTEN MOVLIM,#23H MOVR1,#HOUR LCALLSYN LJMPINTREXIT SYN: MOVR0,HIG ;将加一程序入口参数定为十位MOVA,R1;获取时间值CJNE A, LIM,L;时间值未达到则准备加一LJMP RSET ;达到则跳至RSETL:LCALL AD ;调加一子程序ADMOVA,R2 ;更新时间值MOVR1,ARET;重赋时间值程序RSET RSET: MOV R0,#00H ;当前级非压缩式高位 DECR0 MOVR0,#00H ;当前级非压缩式低位清零MOVR1,#00H ;当前级压缩式时间值清零SETB 21H.0RET;中断出口结合点INTREXIT INTREXIT:LCALLTTX;调时间值送显缓子程序TTX POPPSW ;恢复当前寄存器组的组号POPACCPOPDPLPOPDPHSETBTR0RETI;*;子程序区;加一子程序AD(先加十位,后加个位,且十位为高地址单元,个位次之);入口:R0,出口:R0,R2(压缩式加一结果) AD:PUSHDPH PUSHDPL PUSHACC PUSHPSW SETB RS1 ;改变当前寄存器组

温馨提示

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

评论

0/150

提交评论