《单片机定时器设计-毕业论文.doc》由会员分享,可在线阅读,更多相关《单片机定时器设计-毕业论文.doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、毕业设计(论文)任务书 1.毕业设计(论文)题目:单片机定时器设计2.毕业设计(论文)使用的原始资料数据及设计技术要求:l 定时时间1。1s99s,可调。l 定时时间2。1s99s,可调。l 定时时间3。1min99min,可调。l 所有时间数字均可调。用LED数码管显示剩余时间。3.毕业设计(论文)工作内容及完成时间:定时器可以实现三个时间的显示, 将程序写入51单片机中,通过调节按键控制时间并在LED上显示出来。 日期:自2011年1月12日至2011年2月24日指导老师评语:_ 目录1设计任务42设计意义43整体方案设计43.1方案设计53.2方案选择64硬件电路的设计74.1STC单片
2、机的最小系统84.2LED显示与单片机接口94.3发光二极管、按键、继电器与单片机的接线125软件设计145.1程序中硬件功能介绍145.2发光二极管指示程序165.3键扫描程序175.4数码管显示程序206设计附录236.1源程序236.2电路原理图326.3元件清单337设计总结338参考文献34单片机定时器设计1 设计任务设计一个基于单片机控制的专用定时器。要求定时器可以实现三个时间的显示,而且每个时间的初值都可以改变,独立完成系统的分析、设计和程序的编写,记录开发过程中的问题及解决方法,要有设计过程和原理图,并且自行设计满足本设计任务的稳压电源。设计的主要参数:(1) 定时时间1。1s
3、99s,可调。(2) 定时时间2。1s99s,可调。(3) 定时时间3。1min99min,可调。(4) 所有时间数字均可调。(5) 用LED数码管显示剩余时间。2 设计意义近年来随着科技的飞速发展,单片机的应用正在不断走向深入,同时带动传统控制检测日新月异地更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,根据具体硬件结构以及具体应用对象的特点,与软件相结合,加以完善。单片机之所以在工业控制中有大量的应用,就在于它有独特的定时、计数功能。在工业检测、控制中,许多场合都要用到计数或定时功能。例如对外部脉冲进行计数、产生精确的定时时间等。人类最早使用的定时工具是沙漏
4、或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计数工具来改进定时器,达到准确控制时间的目的。“定时器”总的来说有两种类型。一种是基于模拟技术的传统产品,这种定时器功能简单,尽管曾被广泛应用过,但已进入淘汰之列。另一种是基于数字技术的新一代产品,这种产品功能强,是前者的换代之物。本设计开发了一种基于单片机的多用途定时器,它造价低,功能全,整体功能价格比较高,配以小键盘和LED显示器,可行适应各种场合的定时预警之用。3 整体方案设计基于单片机系统的定时器电路包含了如下的功能模块:l 基本的单片机系统l 单片机的定时中断l 单片机的外围电路l 外部按键的输入装置l 数码管LED的显示装
5、置图 1 定时器时间输出Y1、Y2、Y3设计要求输出见图 1所示的时间定时输出,并显示每个时间的剩余时间。其中三个时间有各自的调节范围T1,1s99s;T2,1s99s;T3,1min99min。3.1 方案设计方案一:利用单片机的定时器完成定时要求。利用单片机定时输出Y1、Y2、Y3,定时时间分别为T1、T2、T3,并用发光二极管表示其时间长短,用LED显示定时的剩余时间。时间长短通过按键调节。继电器是定时后的具体应用器件。串口用来对单片机在线编程。方案一的原理框图见图2。图2 方案一的原理框图 方案二:高频脉冲信号作为定时器的时间基准,计数器实现定时。该系统的工作原理是:振荡器产生的稳定的
6、高频脉冲信号,作为定时器的时间基准,经分频器输出标准脉冲。T1减计数器计时时通过T1预置数显示器显示T1的剩余时间,同时使T1的时间输出器和指示灯工作,当T1计数满之后T2减计数器开始工作,并对T2预置数。T2减计数器工作方式同T1。当T2计数满之后T3减计数器开始工作。工作方式同T1、T2,如此循环,便能实现该设计的功能。原理框图见图 2方案二原理框图。图 2方案二原理框图 3.2 方案选择对以上两个方案进行论证,并加以选择,确定该设计的总体方案框图以便进一步设计。方案一:优点是利用单片机的定时器定时,时间精确、稳定、可靠,并可以利用单片机的功能很好地进行时间的显示、指示,输出。原理简单,使
7、用的元器件少,相对来说在实物调试时出现的问题就少。该方案还有一个好处是成本低。此外,经过无数人的证明,用单片机完全可以实现定时功能,失败的风险小。缺点是使用单片机要求写程序,对于不熟悉软件的人来说要单独完成该设计有一定的难度。方案二:优点是该方案应用稳定的高频脉冲信号作为定时器的时间基准,可以说也有同单片机一样的精确、稳定、可靠的输出时间,且对软件编写要求的不高,能很好的实现设计要求的功能。缺点是该方案复杂,一般不容易弄明白它的道理,而且它应用的元器件较多,在实物调试时出现的问题可能比较多。由于元器件比较多,所以相对来说实物的成本也比较高,而且在PCB布线时更加麻烦。由于原理复杂,所以成功完成
8、该设计的概率较低。通过对以上方案比较,该设计选用方案一进行设计。4 硬件电路的设计该设计选用STC单片机,STC单片机内部框图见图 3 STC单片机内部框图所示。图 3 STC单片机内部框图STC89S52系统单片机是兼容8051内核的单片机,是高速、低功耗的新一代8051单片机,12时钟/机器周期和6时钟/机器周期可反复设置,最新的D版本内部集成MAX810专用复位电路。用STC提供的STC-ISP.exe工具将你原有的代码下载进STC相关单片机即可,或用通用编程器编程。RC/RD+系列为真正的看门狗,默认为关闭(冷启动),启动后无法关闭,可放心省去外部看门狗。内部的FLASH擦写次数为10
9、0000次以上,STC89S52RC/RD+系列单片机出厂时就已完全加密,无法解密。用户程序是用ISP/IAp机制写入,一边校验一边写,无读出命令。选用STC89S52单片机的理由:加密性强,无法解密;超强抗干扰,轻松过4KV快速脉冲干扰(EFT);高抗静电(ESD),6KV静电可直接承受在芯片管脚上;超低功耗,Power Downtime1+time2+time3*60)return;else if(T(time1+time2)if(sec05=2)L1=OFF;L2=ON;L4=ON;L3=OFF;J=0x04;else if(Ttime1)if(sec05=1)L0=0FF;L1=ON;
10、J=0x02;L3=ON;elseif(sec05=0)L0=ON;J=0x01;L3=ON;5.3 键扫描程序键扫描程序流程图如图14所示。图14 按键子程序流程图通过三个键KEY_ST、KEY_UP、KEY_DW及按键S3、S2、S1,来实现三个定时时间即time1、time2、time3的自增和自减及复位功能。在该程序的设计中要注意按键的去抖动程序。按键本身就是机械开关,由于机械触点的弹性以及电压突跳等原因,在触点闭合或者是断开的瞬间会出现电压抖动的情况。在发生抖动时单片机很难判别此时的按键是否被按下,为此,就需要进行对按键的去抖动处理。去抖动的办法一般有两种:一种是采用硬件电路,另一种
11、是采用软件的时间延时程序以躲过抖动时间,待信号稳定后再进行按键扫描。在这里采用软件方法去抖动。程序代码如下:Void Onsetting(void)Delay(4);while(!KEY_ST);flag_run=0;while(1)if(KEY_UP)Delay(4);While(!KEY_UP);time1+;time2+;time3+;if(time199) time1=1;if(time299) time2=1;if(time399) time3=1;Reload();SetLED();if(KEY_DW)Delay(4);While(!KEY_DW);time1-;time2-;ti
12、me3-;if(time10) time1=99;if(time20) time2=99;if(time30) time3=99;Reload();SetLED();if(!KEY_ST)Delay(4);while(!KEY_ST);flag_run=1;return;5.4 数码管显示程序LED显示器有静态显示和动态扫描显示两种工作方式。静态显示。显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不在控制LED,直到下一次显示时再传送一次新的显示数据。静态显示的数据稳定,占用CPU时间少。静态显示中,每一个显示器都要占用单独的具有锁存功能的I/O接口,该接口用于笔划段字形代码。这
13、样单片机只要把显示的字形代码发送到接口电路,该字段就可以显示发送的字形。要显示新的数据时,单片机再次发送新的字形码。动态扫描显示:动态扫描方法是用其接口电路把所有显示器的8个笔划段ah同名端连在一起,而每个显示器的公共极COM各自独立受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟哪一个显示器亮,就取决于COM端,而这一端是由I/O口控制的,由单片机决定何时显示哪一位。动态扫描用分时的方法轮流控制各个显示器的COM端,使各个显示器轮流点亮。在轮流点亮扫描过程中,每位显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的余辉效应,给人的印象就是一组稳定
14、的显示数据。这两种显示方式各有利弊:静态显示虽然数据显示稳定,占用CPU的时间少,但是每个显示单元都需要单独的显示驱动电路,使用的电路硬件较多;动态扫描显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多,但是使用的硬件少,能节省线路板空间。在一般较为简单的系统中,为了降低成本,动态方案具备一定的实用性,也是目前单片机数码管显示中较为常用的显示方法。该设计使用动态扫描显示方式2个LED的段选端与锁存器的数据输出端相连,位选端分别连接单片机的P2.6、P2.7口,由STC89S52控制相应的LED点亮。采用扫描显示方式,即在某一时刻,只让某一位的位选线处于选通状态,而其
15、他各位的位选线处于关闭状态,同时,段选线上输出相应位的显示字符的段码。这样同一时刻,4位LED中只有选通的那一位字符,而其它三位则是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,在段选线上输出相应位将要显示字符的段码,则同一时刻,只有选通位显示出相应的字符,而其他各位则是熄灭的。如此循环下去,就可以使各位显示出将要显示的字符,虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其他各位熄灭,但由于LED显示器的余辉和人眼视觉暂留作用,只要每位显示间隔足够短,可以造成多位同时亮的假象,达到同时显示的目的。如何确定LED不同位显示的时间间隔
16、,例如对8位LED显示器,假若显示一位保持1ms时间,则是显示完所有8位之后,只需要8ms。上述保持1ms的时间应根据实际情况而定。不能太短,因为发光二极管从导通到发光有一定的延时,导通时间太短,发光太弱人眼无法看清;也不能太长,因为毕竟要受限于临界闪烁频率,而且此时间越长,占用CPU时间也越多。另外显示位增多,也将占用大量的CPU时间,因此动态显示实质是以牺牲CPU的时间来换取元件的减少。定时器0中断服务程序,用于数码管的动态扫描,在动态LED显示程序中,需要不停的扫描字位口,从而实现不同字位的数据的动态显示效果。中断流程图如图15所示。图15 中断流程图程序代码如下:Void timer0
17、_Interruput(void) interrupt 1TR0=0;TH0=TIMER0H;TL0=TIMER0L;TR0=1;time+;if(time=100)T=T+1;/*到达1秒后T加1Index+;/*显示索引,用于标识当前显示的数码管和缓冲区的偏移量Index &=0x01;P0=TableLEDbuffIndex;Switch(Index)Case 0:P2=0x80|J;break;Case 1:P2=0x40|J;break;pps+;if(!flag_run) return;if(pps=50)pps=0;sec05+;flag=1;if(sec05=3)sec05=0
18、;sec-;if(sec=0)Reload();s=-s;6 设计附录6.1 源程序#include#define TIMER0H 0xD8#define TIMER0L 0xF0#define uchar unsigned char#define ON 0#define OFF 1TableLED=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;sbit L0=P10;sbit L1=P11sbit L2=P12;sbit L3=P13;sbit L4=P14;sbit KEY_UP=P15;sbit KEY_DW=P16;sbit KEY
19、_ST=P17;sbit KEY_T2=P32;sbit KEY_T3=P33;uchar codeuchar preSet;uchar Index;uchar buff2;uchar flag;uchar time,T,J;uchar pps;uchar sec;uchar sec05;uchar s;uchar flag_run;uchar time1,time2,time3;void InitDevice(void);void SetLED(void);void Reload(void);void Onrunning(void);void delay(void);void Onsetti
20、ng(void);main()InitDevice();time1=10;time2=20;time3=6;time=0;T=0;flag=0x00;sec=0;s=0;sec05=0;Reload();L0=ON;L1=OFF;L2=OFF;L3=ON;L4=OFF;flag_run=1;while(1)if(KEY_ST=1)OnRunning();elseOnsetting();Void Onsetting(void)Delay(4);while(!KEY_ST);flag_run=0;while(1)if(KEY_UP)Delay(4);While(!KEY_UP);time1+;ti
21、me2+;time3+;if(time199) time1=1;if(time299) time2=1;if(time399) time3=1;Reload();SetLED();if(KEY_DW)Delay(4);While(!KEY_DW);time1-;time2-;time3-;if(time10) time1=99;if(time20) time2=99;if(time3time1+time2+time3*60)return;else if(T(time1+time2)if(sec05=2)L1=OFF;L2=ON;L4=ON;L3=OFF;J=0x04;else if(Ttime
22、1)if(sec05=1)L0=0FF;L1=ON;J=0x02;L3=ON;elseif(sec05=0)L0=ON;J=0x01;L3=ON;void SetLED(void)if(sec100)buff0=sec/600;buff1=sec/60-buff0*10;elsebuff0=sec/10;buff1=sec-buff0*10;void Reload(void)if(Ttime1+time2+time3*60)return;else if(T(time1+time2)sec=time3*60;return;else if(T=time1)sec=time2;return;else
23、sec=time1;return;void timer0_Interruput(void) interrupt 1TR0=0;TH0=TIMER0H;TL0=TIMER0L;TR0=1;time+;if(time=100)T=T+1; Index+;Index &=0x01;P0=TableLEDbuffIndex;Switch(Index)Case 0:P2=0x80|J;break;Case 1:P2=0x40|J;break;pps+;if(!flag_run) return;if(pps=50)pps=0;sec05+;flag=1;if(sec05=3)sec05=0;sec-;if
24、(sec=0)Reload();s=-s;void initDevice(void)Index=0;pps=0;TH0=TIMER0H;TL0=TIMER0L;TMOD=0x01;TR0=1;ET0=1;EA=1;6.2 电路原理图图16 电路原理图图16 电路原理图本设计电路原理图如图16所示。6.3 元件清单元器件清单表5如下所示。表5 元件清单7 设计总结实践是检验真理的唯一标准,当然也是检验学习成果的标准。在经过一段时间的学习之后,我们需要了解自己的所学应该如何应用在实践中,因为任何知识都源于实践,归于实践,所以要将所学的知识在实践中来检验。做毕业设计期间,在周延老师的指导下,通过自身
25、的不断努力,无论是思想上,学习上还是工作上,都取得了长足的发展和巨大的收获,现将工作总结如下:思想上,学会了用科学的精神去解决问题。很多事情看起来是很简单的问题,但实际做起来去会发现有许多奥妙!这是因为其中蕴含着许多科学的问题。运用科学的方法去解决问题,这是我通过这次毕业设计给我带来的思想上的改变。学习上。自从参加工作以来,我从没有放弃学习理论知识。工作上。我工作中取得的一点成绩,这与单位领导和同事们的帮助是分不开的。实习之前觉得这三个月太短,也学不到什么实质性的东西。但当我真正着手处理时,就不能有丝毫小瞧的意思了。一切的一切都需要我们用心去领悟并结合所学知识去操作。前面我们看到的是机械制造行
26、业其自身的发展。然而,作为社会发展的一个部分,它将和其它的行业有更广泛的结合。21世纪电子制造业的重要性表现在它的全球化,网络化,虚拟化,智能化以及环保协调的绿色制造等。它将使人类不仅要摆脱繁重的体力劳动,而且要从繁琐的计算,分析等脑力劳动中解放出来,以便有更多的精力从事高层次的创造性劳动,它使生产系统具有更完善的判断力与适应能力。当然这一切还需要我们大家进一步的努力。实践,是一面很亮的镜子,能够通过它看出我们自身的缺点,能够通过它查找出自身缺乏的知识。通过这次设计,我明显感觉到“书到用时方恨少”。在以后的生活中我会不断地学习充实自己。8 参考文献余孟尝. 数字电子技术基础(第三版). 北京: 清华大学电子学教研组,2006陈大钦. 模拟技术基础. 武汉: 华中科技大学出版社,2000张毅刚,新编MCS-51单片机应用设计. 哈尔滨:哈尔滨工业大学出版社,2003谭家玉,单片机原理及接口技术. 哈尔滨:哈尔滨工业大学出版社,2004谢自美,电子线路设计.实验.测试. 武昌:华中科技大学出版社,2002杨光友 朱宏辉. 单片微型计算机原理及接口技术. 中国水利水电出版社 200032