路灯模拟控制系统毕业论文设计完美版_第1页
路灯模拟控制系统毕业论文设计完美版_第2页
路灯模拟控制系统毕业论文设计完美版_第3页
路灯模拟控制系统毕业论文设计完美版_第4页
路灯模拟控制系统毕业论文设计完美版_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、目录TOCo1-5hz摘要1第一章绪论2第二章方案设计与论证3外部环境明暗的检测单元3路况的检测单元3处理器的选择3第三章硬件设计480C51单片机硬件结构4微处理器4数据存储器4程序存储器4中断系统5定时器/计数器5串行口5特殊功能寄存器5最小应用系统设计5时钟电路6复位电路6通用的晶振电路7显示电路8四LED灯电路构成9第四章软件设计12主程序设计12延时子程序设计14按键扫描子程序设计14中断子程序设计15显示子程序16声光报警子程序19交通情况检测子程序20路灯控制子程序设计21参考文献:24附录:25附1:元器件明细表:25附2:仪器设备清单25附3:电路图图纸26附4:程序清单26

2、摘要STC89C52R单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评本系统以毕业设计的题目要求为目的,采用8051单片机为控制核心,利用光电传感器出检测环境的明暗变化以及路灯的工作状态,利用对射式红外线检测交通的情况,通过在硬件的基础上进行编程,利用软件达到路灯模拟系统的支路控制器有时钟功能,能设定、显示开关灯时间,并控制整条支路按时开灯和关灯;支路控制器能根据环境明暗变化,自动开灯和关灯;支路控制器能根据交通情况自动调节亮灯状态;支路控制器能分别独立控制每只路灯的开灯和关灯时间;当路灯出现故障时(灯不亮),支路控制器发出声光报警信号,并显示有故障路灯的地址编号。整个系统的

3、电路结构简单,可靠性能高实验测试结果满足要求。采用的技术主要有:(1)通过编程来路灯的状态。(2)传感器的有效应用;(3)新型显示芯片的采用。关键词:STC89C52R单片机光电传感器红外传感器AbstractSTC89C52RCmonolithicintegratedcircuitsisoneofeightmonolithicintegratedcircuits,hiseaseandfunctionalbytheusers。thisgraduationdesignsystemtothesubjectoftherequirementsforthepurposeofamonolithicinte

4、gratedcircuitstocontrolthe8051,Photoelectricsensorstothedetectionoftheenvironmentandtheworkofthestatetoshootinthetrafficintheinfrareddetectedbythehardwareonthebasisofprogramming,Usedsoftwaretothesystemofcontrolistheway,cansetin,displayingswitchthelightoftime,andcontrolalloftheroadandturnoffthelighto

5、ftheturnonthelight;theroadtoenvironmentalchange,Awaytocontroltrafficcanautomaticallyadjustthelightofthestate;waytoeachseparateindependentcontrolthelightsandthetimewhenthefaultsoccur;audibleandvisiblewarningsignals,Andthattherewasfailure,theaddressnumbers。theentirecircuitofthesystemsimple,reliableper

6、formanee.thetestresultstomeettherequirements.本文为互联网收集,请勿用作商业用途本文为互联网收集,请勿用作商业用途Keyword:STC89C52RCPhotoelectricsensorsInfraredsensors第一章绪论随着交通行业的迅速发展,与之相关的一系列智能设备的研究也就越来越受人关注。本设计就是以这样的形势为背景提出来的,以此以它作为自己的毕业设计,具有很现实的实用意义。此次的毕业设计结合现在社会的实际需要,从而达到学以致用,服务于人民的效果!根据实际需要,设计的路灯模拟控制系统应该具有支路控制器有时钟功能,能设定、显示开关灯时间,

7、并控制整条支路按时开灯和关灯;支路控制器能根据环境明暗变化,自动开灯和关灯;支路控制器能根据交通情况自动调节亮灯状态;支路控制器能分别独立控制每只路灯的开灯和关灯时间;当路灯出现故障时(灯不亮),支路控制器发出声光报警信号,并显示有故障路灯的地址编号。根据毕业设计的题目要求,现确定如下方案:以单片机最小系统为控制核心;然后加装光电传感器、红外传感、实现对路灯的控制以及交通情况的信息采集,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对路灯的智能控制.这种方案能实现对路灯状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。本设计采用MCS-51系列中的STC

8、89C52RC单片机。STC89C52R(是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评.它是第三代单片机的代表。第三代单片机包括了Intel公司发展MC51系列的新一代产品,如8xC152、80C51FA/FB、80C51GA/GB8xC451、8xC452,还包括了Philips、Siemens、ADIMFujutsu、OKI、Harria-Metra、ATME等公司以80C51为核心推出的大量各具特色、与80C51兼容的单片机新一代的单片机的最主要的技术特点是向外部接口电路扩展,以实现Microcomputer完善的控制功能为己任,将一些外部接口功能单元如A/D、PWMPC

9、(可编程计数器阵列)、WDT监视定时器)、高速I/O口、计数器的捕获/比较逻辑等。这一代单片机中,在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式.Philips公司还为这一代单片机80C51系列8xC592单片机引入了具有较强功能的设备间网络系统总线-CAN(ControllerAreaNetworkBUS)。本设计就采用了比较先进的80C51为控制核心,80C51采用CHOM工艺,功耗很低.该设计具有实际意义,可以应用于考古、机器人、医疗器械等许多方面。尤其是在足球机器人研究方面具有很好的发展前景;在考古方面也应用到了超声波传感器进行检测.所

10、以本设计与实际相结合,现实意义很强。第二章方案设计与论证根据题目的要求,确定如下方案:利用光电传感器和红外传感器进行外部路灯状态和交通状态的信息收集,然后将收集的数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对路灯的智能控制.这种方案能实现对路灯的工作进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。外部环境明暗的检测单元方案一:采用光敏二极管感受外届光照变化,无光照时,有很小的饱和反向漏电流,二极管截止;光照时反向电流增大,形成光电流.方案二:采用光敏电阻对光源的感应改变自身电阻,由电压比较器提取之间电压,考虑到电阻变化的灵敏度,采用两个光敏电阻串联的方式,通过改

11、变与光敏电阻串联的电位器的值可以调节光敏电阻的感光范围。考虑到现实中声光控制技术的运用已经证明了光敏电阻完全可以达到要求,且价格便宜,电路简单.综合考虑以上方案采用光敏电阻。路况的检测单元方案一、采用摄像头或探测头收集路面上信息.用这种方法,对路面信息处理准确,但是成本过高,数据处理量大,对硬、软件的要求都非常高,短时间内难以实现。方案二:使用反射式红外二极管和接收管组成发射接收器。由于红外光波长比可见光长,因此受可见光的影响比较小,同时,红外对管还具有以下优点:质量轻,灵敏度高,线性好,接口电路比较简单,安装方便,足够满足对本系统中物体检测的要求.基于以上原因,选用了成本较低的方案二。处理器

12、的选择单片机STC89C52R作为模拟路灯控制系统的核心。STC89C52R(具有许多优点:RAMROM空间大、指令周期短、运算速度快、低功耗、低电压、可编程音频处理,易于编程和调试。本题要求支路控制器有声光报警功能,由此看来单片机STC89C52R更具有优越性。第三章硬件设计一个单片机应用系统的硬件电路设计包含有两部分内容:一是系统扩展,即单片机内部的功能单元,如ROMRAMI/O口、定时/记数器、中断系统等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统配置,既按照系统功能要求配置外围设备,如键盘显示器、打印机、A/D、D/A转换器等,要设计合适的

13、接口电路。80C51单片机硬件结构80C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上2。如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器.它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。微处理器该单片机中有一个8位的微处理器,与通用的微处理器基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可处理数据,还可以进行位变量的处理。数据存储器片内为128个字

14、节,片外最多可外扩至64k字节,用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为数据存储器.程序存储器由于受集成度限制,片内只读存储器一般容量较小,如果片内的只读存储器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至64k字节.中断系统具有5个中断源,2级中断优先权。定时器/计数器片内有2个16位的定时器/计数器,具有四种工作方式.串行口1个全双工的串行口,具有四种工作方式。可用来进行串行通讯,扩展并行I/O口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广。P1口、P2口、P3口、P4口为4个并行8位I/O口.7特殊功能寄存器共

15、有21个,用于对片内的个功能的部件进行管理、控制、监视.实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。由上可见,80C51单片机的硬件结构具有功能部件种类全,功能强等特点。特别值得一提的是该单片机CPU中的位处理器,它实际上是一个完整的1位微计算机,这个一位微计算机有自己的CPU位寄存器、I/O口和指令集.1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。MCS-51单片机中8位机和1位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS51单片机在设计的精美之处。最小应用系统设计80C51是片内有

16、ROM/EPROM单片机,因此,这种芯片构成的最小系统简单、可靠。用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图3.180C51单片机最小系统所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。其应用特点:有可供用尸使用的大量I/O口线.内部存储器容量有限.应用系统开发具有特殊性。图180C51单片机最小系统1时钟电路80C51虽然有内部振荡电路,但要形成时钟,必须外部附加电路.80C51单片机的时钟产生方法有两种。内部时钟方式和外部时钟方式.本设计采用内部时钟方式,禾I用芯片内部的振荡电路,在XTAL1XTAL2引脚上外接定时元件,内部的振荡电

17、路便产生自激振荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。振荡晶体可在1。2MHZ到12MHZ之间选择。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1CX2可在20pF到100pF之间取值,但在60pF到70pF时振荡器有较高的频率稳定性。所以本设计中,振荡晶体选择6MHZ电容选择65pF。在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠地工作。为了提高温度稳定性,应采用NPO电容。2复位电路80C51的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发

18、器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms就可以实现自动上电复位。时钟频率用6MHZ时C取22uF,R取1KQ。除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位lgTslgTs11111MT1ITTOT1TOGNI171:A/V*KIRESETKFiVWTT3-73苍353-43322222-4茁2CIO1L30tjipiiPO1

19、rO2POSro-4FdSpw户匚17P2OP221P22FZ3PMP27AL.E/F-有电平方式和脉冲方式两种其中电平复位是通过RST端经电阻与电源Vcc接通而实现的。按键手动复位电路见图3。2.时钟频率选用6MHZ时,C取22uF,Rs取200Q,FK取1KQ.图280C51复位电路3通用的晶振电路单片机的晶振电路是一种典型电路,分为内部时钟方式和外部时钟方式两种。内部时钟方式的电路如图4所示。01J345&71-414alImpp门IHT5ehtoT1TOETA/VT3XI3S*q21xaIT11P27ipCP11POLFO3旳岭FO7!.tznh/rFrp24T咒口AJLEjCP*J_

20、WF图3单片机的内部晶振电路内部始终的晶振频率一般都选择在4MHz12MH之间,外接两个谐振电容该电容的典型值为30PF,但是在实际应用时,需要根据实际起振情况选择.如果单片机的时钟必须使用某一个外接的时钟信号,就不要外接晶振.由于此时的外接晶振引脚上没有晶振信号输入,内部的时钟电路将停振.这种方式称为外部时钟方式。图5给出了两种外部时钟的电路,可以根据不同的单片机型号选择不同的电路。HMOS型单片机RESETg.JJs,rjxo-THl他期阳珂FWFO7潇55342922%誌3627381011述hfRXDTEDCHMOS型单片机图4单片机的外部晶振电路三显示电路本设计中用两片7位八段数码管

21、gem4561ae乍显示器,并具有双重功能,在一般情况下,七段数码管进行年。月。日,时。分。秒的显示,当路灯出现故障时,显示故障路灯的编号。本设计中采用新型芯片EM78P458乍为显示驱动器,它的管脚如EM78P458管脚介绍所示,用单片机的并行口控制,一个数码显示电路用4个口线,用专用驱动芯片控制可以减少对CPU勺利用时间,单片机将有更多的时间去完成其他功能.该芯片共有20个管脚,管脚LED1、LED2、LED3、LED4分别接10k电阻和图5三极管后与4位八段数码管5461中的a1、a2、a3、a4四个数位选择端相连,这四个数位选择端用来产生LED选通信号。管脚a、b、c、d、e、f、g、

22、dp分别接680欧电阻后与四位八段数码管5461中的a、b、c、d、e、f、g、dp相连,分别控制各段码和小数点.管脚d0、di、d2、d3接单片机并行口,通过对单片机对芯片进行控制。管脚vss串上10k电阻后与vcc管脚相接后再接+5v电源,管脚gnd接地.该芯片所驱动的显示电路如图3。6EM78P458集成显示电路所示显示驱动器支持动态显示,其显示功能如表4.2真值表所示,0000-1001显示从0-9数字,1010是未进位时是小数点清位,1011是进位后加小数点,11001111是八段共阴数码管的位选。表1真值表D3D2D1D0显示0000000011001020011301004010

23、15011060111710008100191010清小数点1011加小数点1100a1选通1101a2选通1110a3选通1111a4选通四LED灯电路构成LED的内在特征决定了它是最理想的光源去代替传统的光源,它有着广泛的用途。体积小,LED基本上是一块很小的晶片被封装在环氧树脂里面,所以它非常的小,非常的轻。耗电量低丄ED耗电非常低,一般来说LED的工作电压是23。6V。工作电流是0。020。03A。这就是说:它消耗的电不超过0.1W.灯体内也没有松动的部分,这些特点使得LED可以说是不易损坏的.LED路灯的电路图如下所示:蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于

24、计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。而我们用的是压电式蜂鸣器,图如上所示,当我们是pnp三极管工作在饱和状态时,三极管输出低电平,反之三级管输出高电平,使得蜂鸣器发出声音。+K7DS22图7六直流稳压电路三端集成稳压电路,这是一种集成电路的稳压电路,其功能是稳定直流输出电压。这种集成电路只有三根引脚,使用很方便,在许多场合都有着广泛应用。稳压电路的作用是使得输出的直流电压在电网电压或负载电流发生变化时保持稳定.它由电源变压器、整流电路、滤波电路、稳压电路等4部分组成的。变压器的作用是将

25、交流市电变换成所需要的交流电压;整流电路的作用是将交流电变换成单向脉动直流电;滤波电路的作用是将脉动电压中的脉动成分去掉,输出比较平滑的直流电压;稳压电路的作用是使得输出的直流电压在电网电压或负载电流发生变化时保持稳定第四章软件设计系统软件设计说明:在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位.对于本系统,软件更为重要。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等.过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以

26、便控制生产。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。模块程序设计法的主要优点是:1、单个模块比起一个完整的程序易编写及调试;2、模块可以共存,一个模块可以被多个任务在不同条件下调用;3、模块程序允许设计者分割任务和利用已有程序,为设计者提供方便.本系统软件采用模块化结构,由主程序、延时子程序、按键扫描子程序、中断子程序显示子程序、显示子程序、外部环境检测子程序,调试子程序子程序构成。一主程序设计路灯模拟系统主程序清单如下:voidmain()init8255

27、();timer0_init();DIR=0;J1=0;J2=0;while(1)lightcon();baojing_1();baojing_2();display();keyscan();keydown_if();environment();road_light_control();一一主程序流程图如下所示:程序初始化执行路灯控制程序模块*V声光报警1程序模块if声光报警2程序模块F系统显示模块按键扫扌描程序模块判断按键是否按下程序模块外部环境检测程序模块路灯及其指示灯选择程序模块延时子程序设计程序清单如下:voiddelay()/以下是一段大约6ms的延时uchari,j,k;for(i

28、=1;i0;i)for(j=2;j0;j-)for(k=200;k0;k-);voiddelay_1()/以下是一段大约防抖的延时uchard,e,f;for(d=10;d0;d-)for(e=10;e0;e-)for(f=200;f0;f-);voiddelay_2()/以下是声光报警部分的延时程序ucharii,jj,kk;for(ii=2;ii0;ii-)for(jj=50;jj0;jj-)for(kk=100;kk0;kk);按键扫描子程序设计程序清单如下:voidkeyscan()con8255=0 x89;/read8255portctemp=c8255;/read8255clow

29、4key_down=temp;temp1=temp0 x0f;/keyascii=tempif(temp1!=0 x0f)(),delay_1();),delay_1();delay_1();delay();if(temp1=0 x07)key=1,delay_1elseif(temp1=0 x0b)key=2,delay_1elseif(temp1=0 x0d)key=3,delay_1(),_temp2=temp&0 xf0;/keyascii=tempif(temp2!=0 xf0),delay_1,delay_1,delay_1key=7,delay_1),delay_1();),de

30、lay_1();),delay_1();(),delay_1();delay();if(temp2=0 xe0)key=4elseif(temp2=0 xd0)key=5elseif(temp2=0 xb0)key=6elseif(temp2=0 x70)中断子程序设计程序清单如下:voidtimer0_init()TMOD=0X01;TH0=(6553650000)/256;TL0=(6553650000)%256;EA=1;TR0=1;ET0=1;voidclose_timer()EA=0;ET0=0;TR0=0;voidtimer0(void)interrupt1using1TH0=(6

31、5536-50000)/256;TL0=(65536-50000)256;scount+;if(scount=20)scount=0;second+;if(second=60)second=0;minute+;if(minute=60)minute=0;hour+;if(hour=24)hour=0;显示子程序程序清单如下:voiddisplay()b8255=0 x40;a8255=tablesecond/10;delay();b8255=0 x80;a8255=tablesecond10;delay();b8255=0 x10;a8255=tableminute/10;delay();b8

32、255=0 x20;a8255=tableminute10;delay();b8255=0 x04;a8255=tablehour/10;delay();b8255=0 x08;a8255=tablehour%10;delay();voiddisplay_zong()b8255=0 x40;a8255=table0;delay();b8255=0 x80;a8255=table0;delay();b8255=0 x10;a8255=tableminute_zong/10;delay();b8255=0 x20;a8255=tableminute_zong10delay();b8255=0 x0

33、4;a8255=tablehour_zong/10;delay();b8255=0 x08;a8255=tablehour_zong%10;delay();voiddisplay_zong_c()-b8255=0 x40;a8255=table0;delay();b8255=0 x80;a8255=table0;delay();b8255=0 x10;a8255=tableminute_zong_c/10delay();b8255=0 x20;a8255=tableminute_zong_c%10delay();b8255=0 x04;a8255=tablehour_zong_c/10;del

34、ay();b8255=0 x08;a8255=tablehour_zong_c10;delay();voiddisplay_zhi_1()b8255=0 x40;a8255=table0;delay();b8255=0 x80;a8255=table0;delay();b8255=0 x10;a8255=tableminute_zhi_1/10;delay();b8255=0 x20;a8255=tableminute_zhi_1%10;delay();b8255=0 x04;a8255=tablehour_zhi_1/10;delay();b8255=0 x08;a8255=tablehou

35、r_zhi_1%10;delay();voiddisplay_zhi_1_c()b8255=0 x40;a8255=table0;delay();b8255=0 x80;a8255=table0;delay();b8255=0 x10;a8255=tableminute_zhi_1_c/10;delay();b8255=0 x20;a8255=tableminute_zhi_1_c%10;delay();b8255=0 x04;a8255=tablehour_zhi_1_c/10;delay();b8255=0 x08;a8255=tablehour_zhi_1_c10;delay();voi

36、ddisplay_zhi_2()b8255=0 x40;a8255=table0;delay();b8255=0 x80;a8255=table0;delay();b8255=0 x10;a8255=tableminute_zhi_2/10;delay();b8255=0 x20;a8255=tableminute_zhi_210;delay();b8255=0 x04;a8255=tablehour_zhi_2/10;delay();b8255=0 x08;a8255=tablehour_zhi_2%10;delay();voiddisplay_zhi_2_c()b8255=0 x40;a8

37、255=table0;delay();b8255=0 x80;a8255=table0;delay();b8255=0 x10;a8255=tableminute_zhi_2_c/10;delay();b8255=0 x20;a8255=tableminute_zhi_2_c10delay();b8255=0 x04;a8255=tablehour_zhi_2_c/10;delay();b8255=0 x08;a8255=tablehour_zhi_2_c%10;delay();voiddisplay_1()-b8255=0 x01;a8255=table1;delay();voiddispl

38、ay_2()b8255=0 x02;a8255=table2;delay();声光报警子程序程序清单如下:voidbaojing_1()if(INT1=1)display_1();J8=0;/光报警程序开始位置delay_2();J8=1;delay_2();/光报警程序结束位置J3=1;/声音报警指令elseif(INT1=0)display();keyscan();keydown_if();J8=0;J3=0;voidbaojing_2()-if(RXD=1)display_2();J8=0;/光报警程序开始位置delay_2();J8=1;delay_2();/光报警程序结束位置J3=1

39、;/声音报警指令elseif(RXD=0)display();keyscan();keydown_if();J8=0;J3=0;交通情况检测子程序程序清单如下:voidenvironment()if(TXD=1)J1=1;J2=1;display();keyscan();keydown_if();elseJ1=0;J2=0;display();keyscan();keydown_if();路灯控制子程序设计程序清单如下:voidroad_light_control()if(hour100+minute=hour_zhi_1_c*100+minute_zhi_1_c)display();keys

40、can();keydown_if();if(hour*100+minute=hour_zhi_2*100+minute_zhi_2&hour*100+minute=hour_zhi_2_c*100+minute_zhi_2_c)display();keyscan();keydown_if();elseif(hour*100+minute=hour_zong_c100+minute_zong_c)display();keyscan();keydown_if();_“看门狗”技术PC受到干扰而失控,引起程序乱飞,也可能使程序陷入“死循环”6.指令技术、软件陷阱技术不能使失控的程序摆脱“死循环”的困

41、境,这时系统完全瘫痪.如果操作者在场,就可以按下人工复位安钮,强制系统复位.但操作者不能一直监视着系统,也往往是在引起不良后果之后才进行人工复位。为使程序脱离“死循环”,通常采用“看门狗技术”.“看门狗”技术就是不断监视程序循环运行时间,若发现时间超过已知的循环设定时间,则认为系统陷入了“死循环”,然后强迫程序返回到0000H入口,在0000H处安排一段出错处理程序,使系统运行纳入正规。“看门狗”技术可由硬件实现,可由软件实现,也可由两者结合实现.本系统采用硬件“看门狗”电路.实现硬件“看门狗”电路方案较多,目前采用较多的方案有以下几种:1、采用微处理器监控器;2、采用单稳态电路来实现“看门狗

42、”,单稳定电路可采用74LS123;3、采用内带震荡器的记数芯片。本设计采用第三种方案实现“看门狗”电路,下面就对该方案作以介绍.(1)基本原理CD4060是带震荡器的14位计数器,由该芯片构成的看门狗电路如图4。2看门狗电路图所示.4060记数频率由RT和G决定。设实际的程序所需工作周期为T,分频器记满时间为T,当TT且系统正常工作时,程序每隔T对4060进行扫描一次,分频且永无记满输出信号.如系统工作不正常(如程序跑飞、死循环等),程序对4060发不出扫描信号,分频器记满输出一脉冲号使CPL复位。(2)参数选择4060的振荡频率f由Rt、Ct决定。R用于改善振荡器的稳定性,R要大于Rr。一

43、般取R=10R,且RT1kQ,Ct100pF.如果R=450Q,Rr=45Q,G=1uF,则f=10HZ。4060的振荡频率和Qi(i=6,7,8,9,10,12,13,14)的选择要根据情况确定。(3)几个原则看门狗电路必须由硬件逻辑组成,不宜由可编程计数器充当,因为CPU失控后,可能会修改可编程器件参数,使看门狗失效。4060的RST线上阻容组成的微分电路很重要,因为扫描输入信号是CPL产生的正脉冲,若此信号变“1”后,由于干扰,程序乱飞,微分电路只能让上跳沿通过,不会封死4060,看门狗仍能计数起作用.若没有微分电路,扫描输入信号上的“1状态封死4060,使之不能记数,看门狗不起作用图4

44、。2看门狗电路图CPI必须在正确完成所有工作后才能发扫描输入信号,且程序中发扫描信号的地方不能太多。否则,正好在哪里有死循环,看门狗就不产生记满输出信号,不能重新启动CPU4060的记满输出信号不但要接到4060的记满输出信号不但要接到MC51的RST脚,而且还应接到其它芯片的RST脚,因为程序乱飞后,其它具有的RST脚,因为程序乱飞后,其它具有RST脚的芯片也混乱了,必须全部复位图10参考文献:信号与系统,ALANVOPPENHEI著,西安:西安交通大学出版社,1997年;数字图像处理学,元秋奇著,北京:电子工业出版社,2000年;模拟电子线路基础,吴运昌著,广州:华南理工大学出版社,200

45、4年;数字电子技术基础,阎石著,北京:高等教育出版社,1997年;数据结构与算法,张晓丽等著,北京:机械工业出版社,2002年;2004年;2004年;ARM&Linux嵌入式系统教程,马忠梅等著,北京:北京航空航天大学出版社,单片机原理及应用,李建忠著,西安:西安电子科技大学,2002年;附录:附1:元器件明细表:1、D8255AC2、STC89C523、DAC08324、ADC08095、74LS245附2:仪器设备清单1、数字示波器2、数字万用表3、信号发生器4、稳压电源附3:电路图图纸I:I-空土鬻钊昱ul一g謬定a丄waeTrarTI-I亍=:密亠丁申11|心0EWi亠-jtnLi亍

46、EritIX-C3la;la7附4:程序清单*H*衣*此程序是路灯模拟系统*includeSTC应包含的头文件includevmath。h*sbitDIR=P2A0;sbitJ仁P1A0;sbitJ2=P1A1;sbitJ3=P1A2;sbitJ4=P1A3;sbitJ5=PM4;sbitJ6=P1A5;sbitJ7=P1A6;sbitJ8=P1A7;以下是对8255的端口地址的宏定义*-k*definea8255XBYTE0X0FF7Cdefineb8255XBYTE0X0FF7Ddefinec8255XBYTE0X0FF7Edefinecon8255XBYTE0X0FF7Fdefineuc

47、harunsignedcharUnsignedcharcodetable=0 xfc,0 x60,0 xda,0 xf2,0 x66,0 xb6,0 xbe,0 xe0,0 xfe,0 xf6,0 xee,0 x3e,0 x9c,0 x7a,0 x9e,0 x8e;/此为自己做的板子上的数码管显示编码/*/*以下是对时分秒变量的声明*/*intscount=0;/这是中断次数的计数寄存器unsignedintsecond=0;unsignedintminute=0;unsignedinthour=0;unsignedinthour_zong=7;unsignedinthour_zong_c=1

48、0;unsignedintminute_zong=0;unsignedintminute_zong_c=0;unsignedinthour_zhi_1=13;unsignedinthour_zhi_1_c=16;unsignedintminute_zhi_1=0;unsignedintminute_zhi_1_c=0;unsignedinthour_zhi_2=20;unsignedinthour_zhi_2_c=22;unsignedintminute_zhi_2=0;unsignedcharminute_zhi_2_c=0;unsignedintzong;unsignedintzong_k

49、;unsignedintzong_c;unsignedintzhi_2;unsignedintzhi_2_k;unsignedcharzhi_2_c;unsignedintzhi_1;unsignedintzhi_1_k;unsignedintzhi_1_c;以下是按键复用的变量的声明*以下是一段大约防抖的延时*unsignedcharx=0;unsignedchary=0;unsignedcharz=0;*按键扫描部分判断哪一个按键被按下*k-k-k*/unsignedchartemp,temp1,temp2;unsignedcharkey=0;unsignedcharkey_down=0;

50、unsignedcharkey2=0;unsignedchara,b,k;/*以下是一段大约6ms的延时*/voiddelay()uchari,j,k;for(i=1;i0;i-)for(j=2;j0;j-)for(k=200;k0;k-);/*/voiddelay_1()uchard,e,f;for(d=10;d0;d-)for(e=10;e0;e)for(f=200;f0;f-);/*以下是声光报警部分的延时程序*voiddelay_2()ucharii,jj,kk;for(ii=2;ii0;ii-)for(jj=50;jj0;jj-)for(kk=100;kk0;kk-);*以下是825

51、5的初始化*/*voidinit8255()con8255=0 x80;c8255=0 xff;/colselight/*以下是定时器0的初始化*/*voidtimer0_init()TMOD=0X01;TH0=(6553650000)/256;TL0=(65536-50000)%256;EA=1;TR0=1ET0=1;/*/*关闭定时器0*/voidclose_timer()-EA=0;ET0=0;TR0=0;*/*以下是定时器0的定时部分也是中断服务子程序*/voidtimer0(void)interrupt1using1TH0=(6553650000)/256;TL0=(65536-50

52、000)256;scount+;if(scount=20)scount=0;second+;if(second=60)second=0;minute+;if(minute=60)minute=0;hour+;if(hour=24)hour=0;*以下是定时器0的数码管显示部分,人机对话窗口*voiddisplay()b8255=0 x40;a8255=tablesecond/10;delay();b8255=0 x80;a8255=tablesecond%10;delay();b8255=0 x10;a8255=tableminute/10;delay();b8255=0 x20;a8255=

53、tableminute10;delay();b8255=0 x04;a8255=tablehour/10;delay();b8255=0 x08;a8255=tablehour%10;delay();voiddisplay_zong()b8255=0 x40;a8255=table0;delay();b8255=0 x80;a8255=table0;delay();b8255=0 x10;a8255=tableminute_zong/10;delay();b8255=0 x20;a8255=tableminute_zong%10;delay();b8255=0 x04;a8255=tableh

54、our_zong/10;delay();b8255=0 x08;a8255=tablehour_zong10;delay();voiddisplay_zong_c()-b8255=0 x40;a8255=table0;delay();b8255=0 x80;a8255=table0;delay();b8255=0 x10;a8255=tableminute_zong_c/10;delay();b8255=0 x20;a8255=tableminute_zong_c10;delay();b8255=0 x04;a8255=tablehour_zong_c/10;delay();b8255=0 x

55、08;a8255=tablehour_zong_c10;delay();voiddisplay_zhi_1()b8255=0 x40;a8255=table0;delay();b8255=0 x80;a8255=table0;delay();b8255=0 x10;a8255=tableminute_zhi_1/10;delay();b8255=0 x20;a8255=tableminute_zhi_110;delay();b8255=0 x04;a8255=tablehour_zhi_1/10;delay();b8255=0 x08;a8255=tablehour_zhi_110;delay

56、();voiddisplay_zhi_1_c()b8255=0 x40;a8255=table0;delay();b8255=0 x80;a8255=table0;delay();b8255=0 x10;a8255=tableminute_zhi_1_c/10;delay();b8255=0 x20;a8255=tableminute_zhi_1_c10;delay();b8255=0 x04;a8255=tablehour_zhi_1_c/10;delay();b8255=0 x08;a8255=tablehour_zhi_1_c%10;delay();voiddisplay_zhi_2()

57、b8255=0 x40;a8255=table0;delay();b8255=0 x80;a8255=table0;delay();b8255=0 x10;a8255=tableminute_zhi_2/10;delay();b8255=0 x20;a8255=tableminute_zhi_2%10;delay();b8255=0 x04;a8255=tablehour_zhi_2/10;delay();b8255=0 x08;a8255=tablehour_zhi_210;delay();voiddisplay_zhi_2_c()b8255=0 x40;a8255=table0;delay

58、();b8255=0 x80;a8255=table0;delay();b8255=0 x10;a8255=tableminute_zhi_2_c/10;delay();b8255=0 x20;a8255=tableminute_zhi_2_c10;delay();b8255=0 x04;a8255=tablehour_zhi_2_c/10;delay();b8255=0 x08;a8255=tablehour_zhi_2_c%10;delay();voiddisplay_1()b8255=0 x01;a8255=table1;delay();voiddisplay_2()b8255=0 x0

59、2;a8255=table2;delay();*按键扫描控制部分voidkeyscan()con8255=0 x89;/read8255portctemp=c8255;/read8255clow4key_down=temp;temp1=temp0 x0f;/keyascii=tempif(temp1!=0 x0f)delay();if(temp1=0 x07)key=1,delay_1(),delay_1();elseif(temp1=0 x0b)key=2,delay_1(),delay_1();elseif(temp1=0 x0c)key=3,delay_1(),delay_1();tem

60、p2=temp&0 xf0;/keyascii=tempif(temp2!=0 xf0)delay();if(temp2=0 xe0)key=4,delay_1(),delay_1();elseif(temp2=0 xd0)key=5,delay_1(),delay_1();elseif(temp2=0 xb0)key=6,delay_1(),delay_1();elseif(temp2=0 x70)key=7,delay_1(),delay_1();*修改按键的键值*voidmodify_keyvalue(uchari)if(x=0)if(i=1)/修改秒的值i=0;close_timer(

温馨提示

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

评论

0/150

提交评论