数字定时器设计说明.doc

上传人:李司机 文档编号:1087268 上传时间:2022-06-20 格式:DOC 页数:10 大小:305KB
返回 下载 相关 举报
数字定时器设计说明.doc_第1页
第1页 / 共10页
数字定时器设计说明.doc_第2页
第2页 / 共10页
数字定时器设计说明.doc_第3页
第3页 / 共10页
数字定时器设计说明.doc_第4页
第4页 / 共10页
数字定时器设计说明.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《数字定时器设计说明.doc》由会员分享,可在线阅读,更多相关《数字定时器设计说明.doc(10页珍藏版)》请在三一办公上搜索。

1、 . . 设计任务设计一个数字定时器设计要求1,定时1-99分钟,开机上电并且默认10分钟。2,显示时间自选,不一定使用数码管。3,定时时间可调,调试方式为两种,一是步进,二是直接输入。4,有负载,220V/A,要求开机上电的时候,负载关闭。5,有相关的提示信息,一旦时间设定之后,会给出时间设定的提示信息。6,定时时间到,关闭电晕啊,切断负载电源,关闭电源。7,系统工作电源Vin=+12V设计基本理论本设计将采用89C51单片机,89C51单片机是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalshProgrammableandErasableReadOnlyMemory)的低电压

2、,高性能CMOS8位微处理器,俗称单片机。单片机自带5个中断,两个16位定时器32个I/O口,可擦除只读存储器可以反复擦除多次,功能相当强大。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主体模块设计数字定时器系统的基本组成如以下图所示数字定时系统电路的原理框图 根据设计任务与要求,可初步将系统分为五大功能模块:主电路、按键电路、显示电路、继电器电路。进一步细说,主电路选用AT89C5

3、1作为中央处理器,系统采用12MHZ的晶振;按键控制电路由两个个按键(启动键(start)、时间设定键 (set))组成,采用三个独立开关,按键按下产生一个脉冲信号;显示电路由二位8段共阴极数码管和一个9位100欧姆上拉排阻组成,位选,个位和十位由P0输出,段选由P1输出;继电器电路由一个继电器和一个用电器(灯泡)组成,通过电路与P3.0相连。当P3.0输出高电平时,继电器不吸合,灯亮。各部件具体设计1单片机最小系统的设计模块硬件连接说明:本系统以AT89C51单片机为核心。单片机采用部振荡的方式。通过200欧姆电阻与一个6位8段LED数码显示管相连。从P0口输出LED数码管的字形码,从P2口

4、输出LED数码管的位选码,高电平有效。4个功能按键和P1口相连,中间通过10K的电阻与+5V电源相连,按键另一端接地,P1口低电平时表示按键被按下。报警电路则与P3.0口相连,当P3.0口输出高电平时,蜂鸣器响。2晶振电路设计由于单片机部振荡方式电路简单,时钟信号比较稳定,是独立的单片机应用系统的首选,故本设计采用部振荡方式,采用12MHZ的晶振。数字定时系统电路的晶振电路图如以下图所示。3定时中断本设计电路采用定时器T0产生定时中断,由于本设计需要0.1s的基本时间,应选择其工作在定时方式1下。这时定时器T0是一个16位的计时器,由它产生50ms的基本定时中断,两次中断后将得到0.1s的时间

5、。4键盘电路键盘电路有独立式键盘和矩阵式两种。独立式键盘占用I/O口线较多,适用于按键较少的情况。矩阵式键盘占用的I/O口相对较少,适用于按键很多的情况。共设置4个按键,每个按键分别完成复位、开始/暂停、设置、调整的功能。其电路连接图如以下图所示。5报警电路报警电路将采用p3.0口驱动,当数码管显示00.00.0时p3.0口输出高电平,驱动蜂鸣器达到报警的目的,只有当复位键按下后,蜂鸣器才会停止报警。其电路连接图如以下图所示6显示电路对于显示电路,本设计采用6位8段共阴极LED数码管显示。上电显示最大倒计时时间99.00.00-。其中“-”位为系统状态标志位,当显示“-”时,表示系统处于等待状

6、态,按下开始键后将开始计数,开始计数后此数码管将关闭显示,以达到省电的目的,当显示“E”时,表示系统正处于调时状态,此时只用两个调时键有用,按下开始键或复位键将没有用。其显示电路图如以下图所示。系统的调试与结果测试电后LED数码管显示最大倒计时值99.00.0-,程序处于等待状态此时,主程序不断调用显示子程序以与扫描键盘按键情况,当检测到有键按下后,转到相应的程序执行。1.开始/暂停键按下后程序开始减1计数直到0,同时状态显示管熄灭,计数值到0后报警器响。若中途遇到开始/暂停键按下则,暂停倒计时。2.若中途遇到复位键按下则将倒计时器的倒计时值设置为最大值,并处于等待状态。3.复位键按下后,程序

7、复位,系统处于等待状态,状态显示管显示“-”。4.当设置键被按下后,程序进入调时设置状态,同时状态显示管显示“E”。设置状态的初始值位00.00.0E,按下+1调整键,可以将当前的计数单位值加1,再次按下设置键后,即进入了下个计数单位的调时状态,当按下5次设置键后将退出调时状态,若分钟十位被设置为6并再次按下设置键后程序直接退出调时状态。设置状态时开始/暂停键和复位键无效,等退出调时状态后,设置状态时开始/暂停键和复位键恢复功能结果分析本设计是一个采用了由部振荡的时钟方式、程控扫描方式的独立式键盘、动态显示LED数码管和蜂鸣器式报警器组成的系统。因此该系统使用的电子器件少、外围电路简单,定时精

8、准,使用的I/O少,系统消耗的功耗小,剩余的I/O口多便于扩展其他功能。但是另一方面,本系统由于使用了程控式的键盘和动态显示的LED数码管,所以对CPU的使用率相对较高。开始在主程序的循环中没有添加调用显示子程序的语句,导致在没有按键按下的情况下LED数码管没有显示。当在主程序循环检测按键的过程中添加了调用显示子程序的语句后就解决了这一问题。由于键盘需要消抖延时和等待按键释放,所以相似的情况又出现了按下按键后有一段时间LED数码管断续显示或者按下按键后不释放按键时LED数码管没有显示。仔细分析后发现,问题出现的原因还是一样的,由于本设计的LED数码管采用了动态显示,故需要不断调用显示子程序,否

9、则会导致LED数码管没有显示。所以最终做了以下改进:1.按键的消抖延时选择调用两次显示子程序(每次显示子程序大约用时5ms,两次即为10ms左右)来取代原来的10ms软件延时。2.在等待按键释放时,使用循环调用显示子程序来替代原来的循环等待。经过上述两点的改进后,LED数码管无显示或者断续显示的问题就得到了彻底的解决。心得体会初次看到本次的课程设计的题目时,感觉设计的难度不大,但是由于是第一次运用单片机设计,在设计过程中又遇到了种种困难,又感觉到要完成此次设计还需要花费很大的时间和精力。但是经过不断的努力,运用科学的分析方法,最终完成了本次计算机课程设计。经过三个星期的课设,过程曲折可谓一语难

10、尽。在此期间我也失落过,也曾一度热情高涨。从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。生活也是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过这次课设,我才真正领略到“艰苦奋斗”这一词的真正含义,只有亲自动手才能体会其中的涵。我想说,设计确实有些辛苦,但苦中也有乐。每当遇到困难的时候,老师和同学给了我很大的帮助,让我学到了很多东西。在此,我对帮助过我的同学与老师深表感。我感觉通过课设我和同学们之间的距离更加近了;我想说,设计确实很累,但当我们的设计出现成果时,心中也不免产生喜悦,正所谓“三百六十行,行行出状元”我认为无论干什么,只要人生活的有意

11、义就可以。另外,课堂上也有部分知识不太清楚,于是我又不得不边学边用,时刻巩固所学知识,通过课设把以前不了解的东西能够学习一下,更深的体会其中的含义,使我收获颇多。整个设计我基本上还满意,由于水平有限,难免会有错误,所以还请老师批评指正。10 / 10附录:所使用的VB程序ORG0000HAJMPMAINORG000BH;T0中断程序入口地址AJMPT0ZDORG00100HMAIN:CLRTR0;主程序开始CLRP3.0;关闭蜂鸣器SETB20H.1;使显示管状态标志位有效CLR20H.0;开始/暂停标志位,使程序处于等待开始MOV40H,#00H;0.1S位查表码MOV41H,#00H;秒钟

12、个位位查表码MOV42H,#00H;秒钟十位位查表码MOV43H,#00H;分钟个位位查表码MOV44H,#06H;分钟十位位查表码MOV45H,#00H;状态显示管查表码MOV46H,#02H;定时器定时次数SETBEA;开总中断SETBET0;开定时器T0中断MOVTMOD,#01H;定时器工作方式0MOVTL0,#0B0H;定时初值,采用50MS时MOVTH0,#3CHJPJC:LCALLXSCX;显示倒计时初值60.00.0(XSCX),进入键盘检测程MOVP1,#0FFH;判断复位键是否按下P1.0,JC12LCALLXDYS;调用消抖延时程序(XDYS)P1.0,JC12PP10:

13、JNBP1.0,DP10;等待按键按下AJMPMAIN;复位键按下后转到主程序(MAIN)重新开始JC12:MOVP1,#0FFH;判断设置键是否按下P1.2,JC11LCALLXDYSP1.2,JC11PP12:JNBP1.2,DP12;调整设置键按下后转到调时子程(TSCX)ACALLTSCXJC11:MOVP1,#0FFH;判断开始/暂停键是否按下P1.1,JPJCLCALLXDYSP1.1,JPJCPP11:JNBP1.1,DP11CPL20H.0;将标志位取反20H.0,KSJS;开始/暂停标志为1则开始计(KSJS)CLRTR0SETB 20H.1 AJMP JPJC ;继续检测键

14、盘按键情况(JPJC) DP10:LCALL XSCX ;等待按键按下时,调用显示程序,防止显示管没显示 AJMP PP10 DP11:LCALL XSCX AJMP PP11 DP12:LCALL XSCX AJMP PP12 KSJS:CLR 20H.1 ;清除状态显示管 SETB P2.5 P3.0,JPJC ;若蜂鸣器响,则不启动计时器 SETB TR0 ;启动计时器TO (KSJS) AJMP JPJC ; 显示子程序 XSCX:MOV DPTR,#TAB ;显示子程序(XSCX) MOV A,40H MOVC A,A+DPTR MOV P2, #0FFH ;关闭显示. MOV P0

15、, A ;输出0.1S位的显示段码. CLR P2.0 ;P2.0=0 ACALL XSYS MOV DPTR,#TAB1 ; MOV A,41H MOVC A,A+DPTR MOV P2, #0FFH ;关闭显示. MOV P0, A ;输出秒钟个位的显示码.CLR P2.1 ;P2.1=0 ACALL XSYS MOV DPTR,#TAB MOV A,42H MOVC A,A+DPTR MOV P2, #0FFH ;关闭显示. MOV P0, A ;输出秒钟十位位的显示段码. CLR P2.2 ;P2.2=0 ACALL XSYS MOV DPTR,#TAB1 MOV A,43H MOVC

16、 A,A+DPTR MOV P2, #0FFH ;关闭显示. MOV P0, A ;输出分钟个位的显示段码. CLR P2.3 ;P2.3=0 ACALL XSYS MOV DPTR,#TAB MOV A,44H MOVC A,A+DPTR MOV P2, #0FFH ;关闭显示. MOV P0, A ;输出分钟十位的显示段码. CLR P2.4 ;P2.4=0 ACALL XSYS JNB 20H.1,ZBTC ;20H.1为1则显示计时器状态 MOV DPTR,#TAB2 MOV A,45H MOVC A,A+DPTR MOV P2, #0FFH ;关闭显示. MOV P0, A ;输出段

17、码. CLR P2.5 ;P2.5=0 ACALL XSYS ZBTC:RETTSCX:CLRTR0;调时子程序(TSCX)CLR20H.0;使时间调整时处于暂停状态MOV40H,#00HMOV41H,#00HMOV42H,#00HMOV43H,#00HMOV44H,#00HSETB20H.1;使状态显示管的位选码有效MOV45H,#01H;将状态显示码更改为E(调时状态)MOVR0,#44HJCTZ:ACALLXSCX;先调用显示程序,扫描时间调整键MOVP1,#0FFHP1.3,NEXT;+1键盘没有按下ACALLXDYS;键盘按下,消抖延时P1.3,NEXTDEN0:JNBP1.3,DE

18、N1;等待按键释放AJMPJYCX;+1键按下后,跳转到+1程序NEXT:MOVP1,#0FFHP1.2,JCTZACALLXDYS;键盘按下,消抖延时P1.2,JCTZDEN2:JNBP1.2,DEN3;等待按键释放MOVA,44HCJNEA,#06H,DEC4;设置键再次按下,将调整指针指向下一位AJMPTCTSDEC4:DECR0CJNER0,#3FH,JCTZ;若R0为3FH则退出调时程序AJMPTCTS;若R0不为#06H,但R0为#3FH,则跳出调时程序JYCX:CJNER0,#44H,XIA1;加1调时部分CJNER0,#06H,INCR;调整分钟十位AJMPSET0XIA1:C

19、JNER0,#43H,XIA2AJMPTZ09;调整分钟个位XIA2:CJNER0,#42H,XIA3CJNER0,#05H,INCR;调整秒钟十位AJMPSET0XIA3:CJNER0,#41H,XIA4AJMPTZ09;调整秒钟个位XIA4:CJNER0,#40H,TCTSTZ09:CJNER0,#09H,INCR;调整0.1秒位SET0:MOVR0,#00HAJMPJCTZINCR:INCR0AJMPJCTZDEN1:ACALLXSCXAJMPDEN0DEN3:ACALLXSCXAJMPDEN2TCTS:MOVTH0,#3CH;退出调时程序MOVTL0,#0B0HMOV45H,#00H;

20、将状态显示码更改为D(等待状态)RET;T0中断子程序T0ZD:CLREA;T0中断子程序,关中断(T0ZD)CLRET0CLRTR0DJNZ46H,TCZDMOV46H,#02H;当定时两次后重新给计时次数赋值为2MOV R0,#40H ;减1计数,R0为40H CJNE R0,#01H,R040 INC R0 ;R0为41H CJNE R0,#00H,DEC1 INC R0 ;R0为42H CJNE R0,#00H,DEC1 INC R0 ;R0为43H CJNE R0,#00H,DEC1 INC R0 ;R0为44H CJNE R0,#00H,DEC1 AJMP JYFH R040:CJ

21、NE R0,#00H,DEC1 ;R0为40H INC R0 ;R0为41H CJNE R0,#00H,R041 INC R0 ;R0为42H CJNE R0,#00H,R042 INC R0 ;R0为43H CJNE R0,#00H,R043 INC R0 ;R0为44H CJNE R0,#00H,R044 AJMP ZJFH R041:MOV 40H,#09H DEC 41H AJMP TCZD R042:MOV 40H,#09H MOV 41H,#09H DEC 42H AJMP TCZD R043:MOV 40H,#09H MOV 41H,#09H MOV 42H,#05H DEC 4

22、3H AJMP TCZDR044:MOV 40H,#09H MOV 41H,#09H MOV 42H,#05H MOV 43H,#09H DEC 44H AJMP TCZD DEC1:DEC 40H TCZD:MOV TH0,#3CH ;退出中断子程序 MOV TL0,#0B0H SETB EA SETB ET0 SETB TR0 AJMP ZZFH JYFH:DEC 40H ZJFH:SETB P3.0 ;启动蜂鸣器 ZZFH:RETI XDYS:ACALL XSCX ;消抖延时程序,延时10ms(2*5ms) ACALL XSCX ;采用调用显示子程序延时以改善LED显示效果 RET XSYS:MOV 55H,#20 ;显示延时程序,延时1msDEL2:MOV 56H,#25 DEL1:DJNZ 56H,DEL1 DJNZ 55H,DEL2 RET TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH TAB1:DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFHTAB2:DB 040H,79H ;D等待状态,E调时状态 END

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号