




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE0基于51单片机的模拟路灯控制系统设计基于51单片机的模拟路灯控制系统设计电子信息工程技术信息工程系
本人郑重声明:所呈交的毕业设计文本和成果,是本人在指导老师的指导下,独立进行研究所取得的成果。成果不存在知识产权争议,本毕业设计不含任何其他个人或集体已经发表过的作品和成果。本人完全意识到本声明的法律结果由本人承担。毕业设计者签名:
目录TOC\o"1-3"\h\u目录 4摘要 5引言 5第一章绪论 6第二章方案设计与论证 72.1外部环境明暗的检测单元 72.2路况的检测单元 72.3处理器的选择 7第三章硬件设计 83.180C51单片机硬件结构 83.2最小应用系统设计 93.2.1时钟电路 93.2.2复位电路 103.2.3通用的晶振电路 113.3显示电路 123.4LED灯电路构成 133.5蜂鸣器发生及LED指示灯电路 133.6直流稳压电路 14第四章软件设计 154.1主程序设计 154.2延时子程序设计 174.3按键扫描子程序设计 184.4中断子程序设计 194.5显示子程序 204.6声光报警子程序 264.7交通情况检测子程序 274.8路灯控制子程序设计 284.9“看门狗”技术 29总结 30致谢 31参考文献 31附录 32附1:元器件明细表: 32附2:仪器设备清单 32附4:程序清单 33PAGE56摘要STC89C52RC单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。本系统以毕业设计的题目要求为目的,采用8051单片机为控制核心,利用光电传感器出检测环境的明暗变化以及路灯的工作状态,利用对射式红外线检测交通的情况,通过在硬件的基础上进行编程,利用软件达到路灯模拟系统的支路控制器有时钟功能,能设定、显示开关灯时间,并控制整条支路按时开灯和关灯;支路控制器能根据环境明暗变化,自动开灯和关灯;支路控制器能根据交通情况自动调节亮灯状态;支路控制器能分别独立控制每只路灯的开灯和关灯时间;当路灯出现故障时(灯不亮),支路控制器发出声光报警信号,并显示有故障路灯的地址编号。整个系统的电路结构简单,可靠性能高。实验测试结果满足要求。采用的技术主要有:通过编程来路灯的状态。传感器的有效应用;新型显示芯片的采用.关键词:单片机,时钟电路,路引言随着全球经济的高速发展,在高速发展的背后却是不可再生能源消耗的加剧。面对着能源危机,节能减排、低碳生活成了人们的主流。电力资源日益紧张,这是的设计出一款智能控制软件显得尤为重要。随着经济的发展,国力的提高,城市的形象越来越重要,因此,路灯照明系统发展迅速。每当夜晚的降临,华灯初上,忙碌了一天的人们漫步于城市的街道,欣赏这城市的夜景,消除一天的疲劳。路灯成了城市照明系统中不可或缺的一部分。现今,单片机的应用也进入到了环保节能领域中,使其应用发展更上一层楼。其中最为显著的就是装扮美丽城市夜景的路灯照明工程。我们都知道,路灯的用电是一个城市公共用电的突出问题,尤其是在深夜期间,车少人少的情况下,如何降低路灯用电,减少能耗,提高用电效率。智能路灯监控系统以单片机为核心,主要由现场系统、通讯系统、监护中心3部分组成。在引进此系统后,城市的公共用电得到的明显的改善第一章绪论随着交通行业的迅速发展,与之相关的一系列智能设备的研究也就越来越受人关注。本设计就是以这样的形势为背景提出来的,以此以它作为自己的毕业设计,具有很现实的实用意义。此次的毕业设计结合现在社会的实际需要,从而达到学以致用,服务于人民的效果!根据实际需要,设计的路灯模拟控制系统应该具有支路控制器有时钟功能,能设定、显示开关灯时间,并控制整条支路按时开灯和关灯;支路控制器能根据环境明暗变化,自动开灯和关灯;支路控制器能根据交通情况自动调节亮灯状态;支路控制器能分别独立控制每只路灯的开灯和关灯时间;当路灯出现故障时(灯不亮),支路控制器发出声光报警信号,并显示有故障路灯的地址编号。根据毕业设计的题目要求,现确定如下方案:以单片机最小系统为控制核心;然后加装光电传感器、红外传感、实现对路灯的控制以及交通情况的信息采集,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对路灯的智能控制。这种方案能实现对路灯状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。本设计采用MCS-51系列中的STC89C52RC单片机。STC89C52RC是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评。它是第三代单片机的代表。第三代单片机包括了Intel公司发展MCS-51系列的新一代产品,如8xC152﹑80C51FA/FB﹑80C51GA/GB﹑8xC451﹑8xC452,还包括了Philips﹑Siemens﹑ADM﹑Fujutsu﹑OKI﹑Harria-Metra﹑ATMEL等公司以80C51为核心推出的大量各具特色﹑与80C51兼容的单片机。新一代的单片机的最主要的技术特点是向外部接口电路扩展,以实现Microcomputer完善的控制功能为己任,将一些外部接口功能单元如A/D﹑PWM﹑PCA(可编程计数器阵列)﹑WDT(监视定时器)﹑高速I/O口﹑计数器的捕获/比较逻辑等。这一代单片机中,在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式。Philips公司还为这一代单片机80C51系列8xC592单片机引入了具有较强功能的设备间网络系统总线CAN(ControllerAreaNetworkBUS).本设计就采用了比较先进的80C51为控制核心,80C51采用CHOMS工艺,功耗很低。该设计具有实际意义,可以应用于考古、机器人、医疗器械等许多方面。尤其是在足球机器人研究方面具有很好的发展前景;在考古方面也应用到了超声波传感器进行检测。所以本设计与实际相结合,现实意义很强。第二章方案设计与论证根据题目的要求,确定如下方案:利用光电传感器和红外传感器进行外部路灯状态和交通状态的信息收集,然后将收集的数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对路灯的智能控制。这种方案能实现对路灯的工作进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。2.1外部环境明暗的检测单元方案一:采用光敏二极管感受外届光照变化,无光照时,有很小的饱和反向漏电流,二极管截止;光照时反向电流增大,形成光电流。方案二:采用光敏电阻对光源的感应改变自身电阻,由电压比较器提取之间电压,考虑到电阻变化的灵敏度,采用两个光敏电阻串联的方式,通过改变与光敏电阻串联的电位器的值可以调节光敏电阻的感光范围。考虑到现实中声光控制技术的运用已经证明了光敏电阻完全可以达到要求,且价格便宜,电路简单。综合考虑以上方案采用光敏电阻。2.2路况的检测单元方案一、采用摄像头或探测头收集路面上信息。用这种方法,对路面信息处理准确,但是成本过高,数据处理量大,对硬、软件的要求都非常高,短时间内难以实现。方案二:使用反射式红外二极管和接收管组成发射-接收器。由于红外光波长比可见光长,因此受可见光的影响比较小,同时,红外对管还具有以下优点:质量轻,灵敏度高,线性好,接口电路比较简单,安装方便,足够满足对本系统中物体检测的要求。基于以上原因,选用了成本较低的方案二。2.3处理器的选择单片机STC89C52RC作为模拟路灯控制系统的核心。STC89C52RC具有许多优点:RAM,ROM空间大、指令周期短、运算速度快、低功耗、低电压、可编程音频处理,易于编程和调试。本题要求支路控制器有声光报警功能,由此看来单片机STC89C52RC更具有优越性。第三章硬件设计一个单片机应用系统的硬件电路设计包含有两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM﹑RAM﹑I/O口﹑定时/记数器﹑中断系统等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统配置,既按照系统功能要求配置外围设备,如键盘显示器﹑打印机﹑A/D﹑D/A转换器等,要设计合适的接口电路。3.180C51单片机硬件结构80C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上[2]。如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。1微处理器该单片机中有一个8位的微处理器,与通用的微处理器基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可处理数据,还可以进行位变量的处理。2数据存储器片内为128个字节,片外最多可外扩至64k字节,用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为数据存储器。3程序存储器由于受集成度限制,片内只读存储器一般容量较小,如果片内的只读存储器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至64k字节。4中断系统具有5个中断源,2级中断优先权。5定时器/计数器片内有2个16位的定时器/计数器,具有四种工作方式。6串行口1个全双工的串行口,具有四种工作方式。可用来进行串行通讯,扩展并行I/O口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广。7特殊功能寄存器共有21个,用于对片内的个功能的部件进行管理、控制、监视。实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。由上可见,80C51单片机的硬件结构具有功能部件种类全,功能强等特点。特别值得一提的是该单片机CPU中的位处理器,它实际上是一个完整的1位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集。1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。MCS-51单片机中8位机和1位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS-51单片机在设计的精美之处。3.2最小应用系统设计80C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图3.180C51单片机最小系统所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。其应用特点:有可供用户使用的大量I/O口线。内部存储器容量有限。应用系统开发具有特殊性。图180C51单片机最小系统3.2.1时钟电路80C51虽然有内部振荡电路,但要形成时钟,必须外部附加电路。80C51单片机的时钟产生方法有两种。内部时钟方式和外部时钟方式。本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHZ到12MHZ之间选择。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1、CX2可在20pF到100pF之间取值,但在60pF到70pF时振荡器有较高的频率稳定性。所以本设计中,振荡晶体选择6MHZ,电容选择65pF。在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠地工作。为了提高温度稳定性,应采用NPO电容。3.2.2复位电路80C51的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。时钟频率用6MHZ时C取22uF,R取1KΩ。除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位图280C51复位电路有电平方式和脉冲方式两种。其中电平复位是通过RST端经电阻与电源Vcc接通而实现的。按键手动复位电路见图3.2。时钟频率选用6MHZ时,C取22uF,Rs取200Ω,RK取1KΩ。3.2.3通用的晶振电路单片机的晶振电路是一种典型电路,分为内部时钟方式和外部时钟方式两种。内部时钟方式的电路如图4所示。图3单片机的内部晶振电路内部始终的晶振频率一般都选择在4MHz~12MHz之间,外接两个谐振电容。该电容的典型值为30PF,但是在实际应用时,需要根据实际起振情况选择。如果单片机的时钟必须使用某一个外接的时钟信号,就不要外接晶振。由于此时的外接晶振引脚上没有晶振信号输入,内部的时钟电路将停振。这种方式称为外部时钟方式。图5给出了两种外部时钟的电路,可以根据不同的单片机型号选择不同的电路。HMOS型单片机CHMOS型单片机图4单片机的外部晶振电路3.3显示电路本设计中用两片7位八段数码管gem4561ae作显示器,并具有双重功能,在一般情况下,七段数码管进行年.月.日,时.分.秒的显示,当路灯出现故障时,显示故障路灯的编号。本设计中采用新型芯片EM78P458作为显示驱动器,它的管脚如EM78P458管脚介绍所示,用单片机的并行口控制,一个数码显示电路用4个口线,用专用驱动芯片控制可以减少对CPU的利用时间,单片机将有更多的时间去完成其他功能.图5EM78P458显示驱动器芯片该芯片共有20个管脚,管脚LED1﹑LED2﹑LED3﹑LED4分别接10k电阻和三极管后与4位八段数码管5461中的a1﹑a2﹑a3﹑a4四个数位选择端相连,这四个数位选择端用来产生LED选通信号。管脚a﹑b﹑c﹑d﹑e﹑f﹑g﹑dp分别接680欧电阻后与四位八段数码管5461中的a﹑b﹑c﹑d﹑e﹑f﹑g﹑dp相连,分别控制各段码和小数点。管脚d0﹑d1﹑d2﹑d3接单片机并行口,通过对单片机对芯片进行控制。管脚vss串上10k电阻后与vcc管脚相接后再接+5v电源,管脚gnd接地。该芯片所驱动的显示电路如图3.6EM78P458集成显示电路所示显示驱动器支持动态显示,其显示功能如表4.2真值表所示,0000-1001显示从0-9数字,1010是未进位时是小数点清位,1011是进位后加小数点,1100-1111是八段共阴数码管的位选。表1真值表D3D2D1D0显示000000001100102001130100401015011060111710008100191010清小数点1011加小数点1100a1选通1101a2选通1110a3选通1111a4选通3.4LED灯电路构成LED的内在特征决定了它是最理想的光源去代替传统的光源,它有着广泛的用途。体积小,LED基本上是一块很小的晶片被封装在环氧树脂里面,所以它非常的小,非常的轻。耗电量低,LED耗电非常低,一般来说LED的工作电压是2-3.6V。工作电流是0.02-0.03A。这就是说:它消耗的电不超过0.1W。灯体内也没有松动的部分,这些特点使得LED可以说是不易损坏的。LED路灯的电路图如下所示:图6LED路灯的电路图3.5蜂鸣器发生及LED指示灯电路蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。而我们用的是压电式蜂鸣器,图如上所示,当我们是pnp三极管工作在饱和状态时,三极管输出低电平,反之三级管输出高电平,使得蜂鸣器发出声音。图7蜂鸣器发生及LED指示灯电路3.6直流稳压电路三端集成稳压电路,这是一种集成电路的稳压电路,其功能是稳定直流输出电压。这种集成电路只有三根引脚,使用很方便,在许多场合都有着广泛应用。稳压电路的作用是使得输出的直流电压在电网电压或负载电流发生变化时保持稳定。它由电源变压器、整流电路、滤波电路、稳压电路等4部分组成的。变压器的作用是将交流市电变换成所需要的交流电压;整流电路的作用是将交流电变换成单向脉动直流电;滤波电路的作用是将脉动电压中的脉动成分去掉,输出比较平滑的直流电压;稳压电路的作用是使得输出的直流电压在电网电压或负载电流发生变化时保持稳定图8稳压电路第四章软件设计系统软件设计说明:在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。模块程序设计法的主要优点是:单个模块比起一个完整的程序易编写及调试;模块可以共存,一个模块可以被多个任务在不同条件下调用;模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。本系统软件采用模块化结构,由主程序﹑延时子程序、按键扫描子程序﹑中断子程序显示子程序﹑显示子程序﹑外部环境检测子程序,调试子程序子程序构成。4.1主程序设计路灯模拟系统主程序清单如下:voidmain(){init8255();timer0_init(); DIR=0; J1=0;J2=0;while(1){ lightcon();baojing_1(); baojing_2();display(); keyscan(); keydown_if(); environment(); road_light_control();}主程序流程图如下所示:开始开始程序初始化程序初始化执行路灯控制程序模块执行路灯控制程序模块声光报警1程序模块声光报警1程序模块声光报警2程序模块声光报警2程序模块系统显示模块系统显示模块按键扫描程序模块按键扫描程序模块判断按键是否按下程序模块判断按键是否按下程序模块外部环境检测程序模块外部环境检测程序模块路灯及其指示灯选择程序模块路灯及其指示灯选择程序模块结束结束图9流程图4.2延时子程序设计程序清单如下:voiddelay()//以下是一段大约6ms的延时{uchari,j,k;for(i=1;i>0;i--)for(j=2;j>0;j--)for(k=200;k>0;k--);}voiddelay_1()//以下是一段大约防抖的延时{uchard,e,f;for(d=10;d>0;d--)for(e=10;e>0;e--)for(f=200;f>0;f--);}voiddelay_2()//以下是声光报警部分的延时程序{ucharii,jj,kk;for(ii=2;ii>0;ii--)for(jj=50;jj>0;jj--)for(kk=100;kk>0;kk--);}4.3按键扫描子程序设计程序清单如下:voidkeyscan(){con8255=0x89;//read8255portctemp=c8255;//read8255clow4 key_down=~temp; temp1=temp&0x0f;//keyascii=temp if(temp1!=0x0f){ delay();if(temp1==0x07){key=1,delay_1(),delay_1();} elseif(temp1==0x0b){key=2,delay_1(),delay_1();} elseif(temp1==0x0d){key=3,delay_1(),delay_1();} } temp2=temp&0xf0;//keyascii=temp if(temp2!=0xf0){ delay();if(temp2==0xe0){key=4,delay_1(),delay_1();}elseif(temp2==0xd0){key=5,delay_1(),delay_1();} elseif(temp2==0xb0){key=6,delay_1(),delay_1();} elseif(temp2==0x70){key=7,delay_1(),delay_1();} } }4.4中断子程序设计程序清单如下:voidtimer0_init(){TMOD=0X01; TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;TR0=1; ET0=1; }voidclose_timer(){EA=0;ET0=0;TR0=0;}voidtimer0(void)interrupt1using1{TH0=(65536-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; }}4.5显示子程序程序清单如下:voiddisplay(){b8255=0x40;a8255=table[second/10];delay();b8255=0x80;a8255=table[second%10];delay();b8255=0x10;a8255=table[minute/10];delay();b8255=0x20;a8255=table[minute%10];delay();b8255=0x04;a8255=table[hour/10];delay();b8255=0x08;a8255=table[hour%10];delay();}voiddisplay_zong(){b8255=0x40;a8255=table[0];delay();b8255=0x80;a8255=table[0];delay();b8255=0x10;a8255=table[minute_zong/10];delay();b8255=0x20;a8255=table[minute_zong%10];delay();b8255=0x04;a8255=table[hour_zong/10];delay();b8255=0x08;a8255=table[hour_zong%10];delay();}voiddisplay_zong_c(){b8255=0x40;a8255=table[0];delay();b8255=0x80;a8255=table[0];delay();b8255=0x10;a8255=table[minute_zong_c/10];delay();b8255=0x20;a8255=table[minute_zong_c%10];delay();b8255=0x04;a8255=table[hour_zong_c/10];delay();b8255=0x08;a8255=table[hour_zong_c%10];delay();}voiddisplay_zhi_1(){b8255=0x40;a8255=table[0];delay();b8255=0x80;a8255=table[0];delay();b8255=0x10;a8255=table[minute_zhi_1/10];delay();b8255=0x20;a8255=table[minute_zhi_1%10];delay();b8255=0x04;a8255=table[hour_zhi_1/10];delay();b8255=0x08;a8255=table[hour_zhi_1%10];delay();}voiddisplay_zhi_1_c(){b8255=0x40;a8255=table[0];delay();b8255=0x80;a8255=table[0];delay();b8255=0x10;a8255=table[minute_zhi_1_c/10];delay();b8255=0x20;a8255=table[minute_zhi_1_c%10];delay();b8255=0x04;a8255=table[hour_zhi_1_c/10];delay();b8255=0x08;a8255=table[hour_zhi_1_c%10];delay();}voiddisplay_zhi_2(){b8255=0x40;a8255=table[0];delay();b8255=0x80;a8255=table[0];delay();b8255=0x10;a8255=table[minute_zhi_2/10];delay();b8255=0x20;a8255=table[minute_zhi_2%10];delay();b8255=0x04;a8255=table[hour_zhi_2/10];delay();b8255=0x08;a8255=table[hour_zhi_2%10];delay();}voiddisplay_zhi_2_c(){b8255=0x40;a8255=table[0];delay();b8255=0x80;a8255=table[0];delay();b8255=0x10;a8255=table[minute_zhi_2_c/10];delay();b8255=0x20;a8255=table[minute_zhi_2_c%10];delay();b8255=0x04;a8255=table[hour_zhi_2_c/10];delay();b8255=0x08;a8255=table[hour_zhi_2_c%10];delay();}voiddisplay_1(){b8255=0x01;a8255=table[1];delay();}voiddisplay_2(){b8255=0x02;a8255=table[2];delay();}4.6声光报警子程序程序清单如下: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;//声音报警指令 }elseif(RXD==0) { display(); keyscan(); keydown_if(); J8=0; J3=0; } }4.7交通情况检测子程序程序清单如下:voidenvironment(){if(TXD==1) { J1=1;J2=1; display(); keyscan(); keydown_if(); } else { J1=0; J2=0; display(); keyscan(); keydown_if(); }4.8路灯控制子程序设计程序清单如下:voidroad_light_control(){if(hour*100+minute<=hour_zhi_1*100+minute_zhi_1&&hour*100+minute>=hour_zhi_1_c*100+minute_zhi_1_c){display(); keyscan(); 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*100+minute_zong&&hour*100+minute>=hour_zong_c*100+minute_zong_c) {display(); keyscan(); keydown_if(); }}4.9“看门狗”技术PC受到干扰而失控,引起程序乱飞,也可能使程序陷入“死循环”[6]。指令技术、软件陷阱技术不能使失控的程序摆脱“死循环”的困境,这时系统完全瘫痪。如果操作者在场,就可以按下人工复位安钮,强制系统复位。但操作者不能一直监视着系统,也往往是在引起不良后果之后才进行人工复位。为使程序脱离“死循环”,通常采用“看门狗技术”。“看门狗”技术就是不断监视程序循环运行时间,若发现时间超过已知的循环设定时间,则认为系统陷入了“死循环”,然后强迫程序返回到0000H入口,在0000H处安排一段出错处理程序,使系统运行纳入正规。“看门狗”技术可由硬件实现,可由软件实现,也可由两者结合实现。本系统采用硬件“看门狗”电路。实现硬件“看门狗”电路方案较多,目前采用较多的方案有以下几种:采用微处理器监控器;采用单稳态电路来实现“看门狗”,单稳定电路可采用74LS123;采用内带震荡器的记数芯片。本设计采用第三种方案实现“看门狗”电路,下面就对该方案作以介绍。(1)基本原理CD4060是带震荡器的14位计数器,由该芯片构成的看门狗电路如图4.2看门狗电路图所示。4060记数频率由RT和CT决定。设实际的程序所需工作周期为T,分频器记满时间为T’,当T’>T且系统正常工作时,程序每隔T对4060进行扫描一次,分频且永无记满输出信号。如系统工作不正常(如程序跑飞、死循环等),程序对4060发不出扫描信号,分频器记满输出一脉冲号使CPU复位。(2)参数选择4060的振荡频率f由RT、CT决定。Rs用于改善振荡器的稳定性,Rs要大于RT。一般取Rs=10RT,且RT>1kΩ,CT≥100pF。如果Rs=450Ω,RT=45Ω,CT=1uF,则f=10HZ。4060的振荡频率和Qi(i=6,7,8,9,10,12,13,14)的选择要根据情况确定。(3)几个原则看门狗电路必须由硬件逻辑组成,不宜由可编程计数器充当,因为CPU失控后,可能会修改可编程器件参数,使看门狗失效。4060的RST线上阻容组成的微分电路很重要,因为扫描输入信号是CPU产生的正脉冲,若此信号变“1”后,由于干扰,程序乱飞,微分电路只能让上跳沿通过,不会封死4060,看门狗仍能计数起作用。若没有微分电路,扫描输入信号上的“1”状态封死4060,使之不能记数,看门狗不起作用图10看门狗电路图CPU必须在正确完成所有工作后才能发扫描输入信号,且程序中发扫描信号的地方不能太多。否则,正好在哪里有死循环,看门狗就不产生记满输出信号,不能重新启动CPU。4060的记满输出信号不但要接到MCS-51的RST脚,而且还应接到其它芯片的RST脚,因为程序乱飞后,其它具有RST脚的芯片也混乱了,必须全部复位。总结单片机由于集成度高,处理能力强、可靠性高,系统结构简单,价格低廉的优点,而在路灯照明工程中广泛应用。单片机在路灯照明上应用改变了我国大部分监控系统以台变为单位进行远程监控和管理,并根据不同区域的不同功能需求,在每天不同时段,不同自然光照或者不同交通流量情况下,按照特点的设置实现路灯的定时自动开关,亮度的定时自动调整和根据自然光的亮度的自动开灯。未来的路灯照明控制系统是利用计算机技术,网络通信技术,自动控制技术,微电子技术。实现可根据环境变化,客观要求,用户要求等条件而自动采集系统中的各种信息,并对采集来的信息进行相应的逻辑分析、推理、判断,并对结果按特点的形式进行存储、显示、传输以及反馈控制等处理以达到最佳的控制效果。致谢历时将近两个月的时间终于将这篇论文写完,在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。尤其要强烈感谢我的论文指导老师,她对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此向帮助和指导过我的各位老师表示最中心的感谢!感谢这篇论文所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。感谢我的同学和朋友,在我写论文的过程中给予我了很多你问素材,还在论文的撰写和排版灯过程中提供热情的帮助。由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正!参考文献[1]《信号与系统》,ALANV.OPPENHEIM著,西安:西安交通大学出版社,1997年;[2]《数字图像处理学》,元秋奇著,北京:电子工业出版社,2000年;[3]《模拟电子线路基础》,吴运昌著,广州:华南理工大学出版社,2004年;[4]《数字电子技术基础》,阎石著,北京:高等教育出版社,1997年;[5]《数据结构与算法》,张晓丽等著,北京:机械工业出版社,2002年;[6]《ARM&Linux嵌入式系统教程》,马忠梅等著,北京:北京航空航天大学出版社,2004年;[7]《单片机原理及应用》,李建忠著,西安:西安电子科技大学,2002年;附录附1:元器件明细表:D8255ACSTC89C52DAC0832ADC080974LS245附2:仪器设备清单数字示波器数字万用表信号发生器稳压电源附3:电路图图纸附4:程序清单/*******************************************************************************此程序是路灯模拟系统******************************************************************************/#include<reg52.h>#include<absacc.h>//STC应包含的头文件#include<math.h>/******************************************以下是对p1口的位寻址定义*******************************************/sbitDIR=P2^0;sbitJ1=P1^0;sbitJ2=P1^1;sbitJ3=P1^2;sbitJ4=P1^3;sbitJ5=P1^4;sbitJ6=P1^5;sbitJ7=P1^6;sbitJ8=P1^7;/********************************以下是对8255的端口地址的宏定义*********************************/#definea8255XBYTE[0X0FF7C]#defineb8255XBYTE[0X0FF7D]#definec8255XBYTE[0X0FF7E]#definecon8255XBYTE[0X0FF7F]#defineucharunsignedcharUnsignedcharcodetable[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e};//此为自己做的板子上的数码管显示编码/*********************************以下是对时分秒变量的声明***********************************/intscount=0;//这是中断次数的计数寄存器unsignedintsecond=0;unsignedintminute=0;unsignedinthour=0;unsignedinthour_zong=7;unsignedinthour_zong_c=10;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;unsignedintzong_c;unsignedintzhi_2;unsignedintzhi_2_k;unsignedcharzhi_2_c;unsignedintzhi_1;unsignedintzhi_1_k;unsignedintzhi_1_c;/***********************************以下是按键复用的变量的声明*************************************/unsignedcharx=0;unsignedchary=0;unsignedcharz=0;/*******************************************按键扫描部分--判断哪一个按键被按下*********************************************/unsignedchartemp,temp1,temp2;unsignedcharkey=0;unsignedcharkey_down=0;unsignedcharkey2=0;unsignedchara,b,k;/*********************************以下是一段大约6ms的延时***********************************/voiddelay(){uchari,j,k;for(i=1;i>0;i--)for(j=2;j>0;j--)for(k=200;k>0;k--);}/*********************************以下是一段大约防抖的延时***********************************/voiddelay_1(){uchard,e,f;for(d=10;d>0;d--)for(e=10;e>0;e--)for(f=200;f>0;f--);}/*********************************以下是声光报警部分的延时程序*******************************/voiddelay_2(){ucharii,jj,kk;for(ii=2;ii>0;ii--)for(jj=50;jj>0;jj--)for(kk=100;kk>0;kk--);}/************************************以下是8255的初始化*************************************/voidinit8255(){con8255=0x80;c8255=0xff;//colselight}/************************************以下是定时器0的初始化**********************************/voidtimer0_init(){TMOD=0X01; TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;TR0=1; ET0=1; }/*******************************************关闭定时器0****************************************/voidclose_timer(){EA=0;ET0=0;TR0=0;}/*******************************************************以下是定时器0的定时部分也是中断服务子程序*******************************************************/voidtimer0(void)interrupt1using1{TH0=(65536-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; }}}*****以下是定时器0的数码管显示部分,人机对话窗口****voiddisplay(){b8255=0x40;a8255=table[second/10];delay();b8255=0x80;a8255=table[second%10];delay();b8255=0x10;a8255=table[minute/10];delay();b8255=0x20;a8255=table[minute%10];delay();b8255=0x04;a8255=table[hour/10];delay();b8255=0x08;a8255=table[hour%10];delay();}voiddisplay_zong(){b8255=0x40;a8255=table[0];delay();b8255=0x80;a8255=table[0];delay();b8255=0x10;a8255=table[minute_zong/10];delay();b8255=0x20;a8255=table[minute_zong%10];delay();b8255=0x04;a8255=table[hour_zong/10];delay();b8255=0x08;a8255=table[hour_zong%10];delay();}voiddisplay_zong_c(){b8255=0x40;a8255=table[0];delay();b8255=0x80;a8255=table[0];delay();b8255=0x10;a8255=table[minute_zong_c/10];delay();b8255=0x20;a8255=table[minute_zong_c%10];delay();b8255=0x04;a8255=table[hour_zong_c/10];delay();b8255=0x08;a8255=table[hour_zong_c%10];delay();}voiddisplay_zhi_1(){b8255=0x40;a8255=table[0];delay();b8255=0x80;a8255=table[0];delay();b8255=0x10;a8255=table[minute_zhi_1/10];delay();b8255=0x20;a8255=table[minute_zhi_1%10];delay();b8255=0x04;a8255=table[hour_zhi_1/10];delay();b8255=0x08;a8255=table[hour_zhi_1%10];delay();}voiddisplay_zhi_1_c(){b8255=0x40;a8255=table[0];delay();b8255=0x80;a8255=table[0];delay();b8255=0x10;a8255=table[minute_zhi_1_c/10];delay();b8255=0x20;a8255=table[minute_zhi_1_c%10];delay();b8255=0x04;a8255=table[hour_zhi_1_c/10];delay();b8255=0x08;a8255=table[hour_zhi_1_c%10];delay();}voiddisplay_zhi_2(){b8255=0x40;a8255=table[0];delay();b8255=0x80;a8255=table[0];delay();b8255=0x10;a8255=table[minute_zhi_2/10];delay();b8255=0x20;a8255=table[minute_zhi_2%10];delay();b8255=0x04;a8255=table[hour_zhi_2/10];delay();b8255=0x08;a8255=table[hour_zhi_2%10];delay();}voiddisplay_zhi_2_c(){b8255=0x40;a8255=table[0];delay();b8255=0x80;a8255=table[0];delay();b8255=0x10;a8255=table[minute_zhi_2_c/10];delay();b8255=0x20;a8255=table[minute_zhi_2_c%10];delay();b8255=0x04;a8255=table[hour_zhi_2_c/10];delay();b8255=0x08;a8255=table[hour_zhi_2_c%10];delay();}voiddisplay_1(){b8255=0x01;a8255=table[1];delay();}voiddisplay_2(){b8255=0x02;a8255=table[2];delay();}****************按键扫描控制部分********************voidkeyscan(){con8255=0x89;//read8255portctemp=c8255;//read8255clow4 key_down=~temp; temp1=temp&0x0f;//keyascii=temp if(temp1!=0x0f){ delay();if(temp1==0x07){key=1,delay_1(),delay_1();} elseif(temp1==0x0b){key=2,delay_1(),delay_1();} elseif(temp1==0x0d){key=3,delay_1(),delay_1();} } temp2=temp&0xf0;//keyascii=temp if(temp2!=0xf0){ delay();if(temp2==0xe0){key=4,delay_1(),delay_1();}elseif(temp2==0xd0){key=5,delay_1(),delay_1();} elseif(temp2==0xb0){key=6,delay_1(),delay_1();} elseif(temp2==0x70){key=7,delay_1(),delay_1();} } }******************修改按键的键值*********************voidmodify_keyvalue(uchari){if(x==0){if(i==1)//修改秒的值{ i=0;close_timer(); second++; if(second==60)second=0; }elseif(i==2)//修改分的值{i=0;close_timer();minute++;if(minute==60)minute=0;}elseif(i==3)//修改小时的值{i=0;close_timer();hour++;if(hour==24)hour=0;}elseif(i==4)//开始启动定时器{i=0;timer0_init();} elseif(i==5)//记5号键的值,让五号按键的值加一{ i=0;close_timer(); x++; } elseif(i==6)//启动定时器,并且给五号键清0{ i=0; x=0;timer0_init(); } }if(x==1){ unsignedcharaa=200; for(aa=200;aa>0;aa--) { display_zong(); } if(i==2)//修改总路开灯时间的分值{ i=0;close_timer();minute_zong++;if(minute_zong==60)minute_zong=0; display_zong(); }elseif(i==3)//修改总路开灯时间的小时值{i=0;close_timer();hour_zong++;if(hour_zong==24)hour_zong=0; display_zong();}elseif(i==4)//开始启动定时器{ i=0;timer0_init();}elseif(i==5)//记5号键的值,让五号按键的值加一{i=0;close_timer();x++;} elseif(i==6)//启动定时器,并且给五号键清0 { i=0; x=0;timer0_init(); }}if(x==2){ unsignedcharbb=200; for(bb=200;bb>0;bb--) { display_zong_c(); } if(i==2)//修改总路的关灯的时间的分值{ i=0;close_timer();minute_zong_c++;if(minute_zong_c==60)minute_zong_c=0; display_zong_c(); }elseif(i==3)//修改总路的关灯的时间的小时值{i=0;close_timer();hour_zong_c++;if(hour_zong_c==24)hour_zong_c=0; display_zong_c();}elseif(i==4)//开始启动定时器{ i=0;timer0_init();}elseif(i==5)//记5号键的值,让五号按键的值加一{i=0;close_timer();x++;} elseif(i==6)//启动定时器,并且给五号键清0 { i=0; x=0;timer0_init(); }} if(x==3){ unsignedcharcc=200; for(cc=200;cc>0;cc--) { display_zhi_1(); } if(i==2)//修改支路一开灯的时间分值{ i=0;close_timer();minute_zhi_1++;if(minute_zhi_1==60)minute_zhi_1=0; display_zhi_1(); }elseif(i==3)//修改支路一开灯的时间小时值{i=0;close_timer();hour_zhi_1++;if(hour_zhi_1==24)hour_zhi_1=0; display_zhi_1();}elseif(i==4)//开始启动定时器{ i=0;timer0_init();}elseif(i==5)//记5号键的值,让五号按键的值加一{i=0;close_timer();x++;} elseif(i==6)//启动定时器,并且给五号键清0 { i=0; x=0;timer0_init(); }} if(x==4){ unsignedchardd=200; for(dd=200;dd>0;dd--) { display_zhi_1_c(); } if(i==2)//修改支路一关灯的时间分值{ i=0;close_timer();minute_zhi_1_c++;if(minute_zhi_1_c==60)minute_zhi_1_c=0; display_zhi_1_c(); }elseif(i==3)//修改支路一关灯的时间分值{i=0;close_timer();hour_zhi_1_c++;if(hour_zhi_1_c==24)hour_zhi_1_c=0; display_zhi_1_c();}elseif(i==4)//开始启动定时器{ i=0;timer0_init();}elseif(i==5)//记5号键的值,让五号按键的值加一{i=0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消失的西夏王朝:《西夏书事》如何成为民族史研究的重要文献
- 2025企业签订办公场地租赁合同范本
- 2025餐饮服务合同模板样式
- 2025仓库租赁合同书简易范本
- 2025年合法的试用期劳动合同范本
- 第03讲 平方差与完全平方公式(解析版)
- 酸奶项目投资计划书
- 重庆商品房预售买卖合同书二零二五年
- 租房子合同书
- 二零二五绿化托管服务合同
- 2025年北京市通州区九年级初三一模道德与法治试卷(含答案)
- 所得税会计试题及答案
- 2025年保安员职业技能考试笔试试题(700题)附答案
- 《知不足而后进 望山远而力行》期中家长会课件
- 专题09 乡村和城镇-五年(2019-2023)高考地理真题分项汇编(解析版)
- 2025年第三届天扬杯建筑业财税知识竞赛题库附答案(201-300题)
- T-NKFA 015-2024 中小学午休课桌椅
- 课题开题报告:推进家校社协同育人研究
- 拒绝校园霸凌守护美好校园
- 2025春新七年级道德与法治下册全册知识点
- Unit 9 Active learning 教学设计-2023-2024学年高中英语北师大版(2019)必修第三册
评论
0/150
提交评论