汽车防撞报警系统(毕业设计)_第1页
汽车防撞报警系统(毕业设计)_第2页
汽车防撞报警系统(毕业设计)_第3页
汽车防撞报警系统(毕业设计)_第4页
汽车防撞报警系统(毕业设计)_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

教学单位教学单位学生学号编号本科毕业设计题目汽车防撞警报系统的设计学生姓名专业名称通信工程指导教师2015年5月8日汽车防撞警报系统的设计摘要:汽车工业和电子工业并称为两大巨头的工业部门,与汽车和电子产业的开展和进步,现代汽车,越来越多的多用途电子技术,越来越多的汽车电子。运输业现在向高密度的方向的开展,电子控制技术进一步在交通平安和车辆导航应用。本设计是基于单片机的汽车碰撞预警系统的设计核心,结合我国公路情况,司机的现有习惯和传感器技术,设计了汽车防撞预警系统,符合中国国情,其目的是:在紧急情况下,提醒驾驶员,使驾驶员有一定的预处理时间,从而防止因为驾驶员疏忽、误判断、疲劳等原因所造成的交通事故,以确保驾驶员的平安。它的工作根本思路是:运用超声波准确的测量出与前方障碍物的距离,赶紧回到车上的微处理系统,通过微处理系统的操作,比拟,然后作出判断,如果到达危险距离,激活的报警。该系统的研究过程中,根据不同的交通状况,从报警距离报警深入研究模拟;然后,依据所要求的功能,设计了系统的方案,并在此根底上,选择应用电路电源设计信息的收集,和其他报警信号输出设备;与MCS-51汇编语言开发了一个控制系统程序;最后,为了确保传感器的可靠性和稳定性,使用对应的干扰措施。障碍实现距离测试,显示和报警,超声波测距范围3厘米-400厘米,精度在3毫米左右。关键词:汽车防撞;超声波;传感器;MCS-51DesignofvehiclecollisionwarningsystemABSTRACT:Automobileindustryandelectronicindustryandreferredtoastheindustrialsector,thegiantsinthecarandthedevelopmentandprogressoftheelectronicsindustry,moderncars,moreandmoremulti-purposeelectronictechnology,moreandmoreautomotiveelectronics.Nowtowardsthedirectionofthehighdensityoftransportationdevelopment,electroniccontroltechnologyfurtherapplicationintrafficsafetyandvehiclenavigation.ThisdesignisthedesignofthevehiclecollisionwarningsystembasedonMCUcore,combiningwiththesituationofhighwayinChina,thedriveroftheexistinghabitsandsensortechnology,designstheautomobileanti-collisionwarningsystem,conformstoChina'snationalconditions,theaimisto:incaseofanemergency,toremindthedriver,thedriverhascertainpretreatmenttime,thusavoidingfordrivernegligence,faultjudgment,fatigueandotherreasonscausedbythetrafficaccident,toensurethesafetyofthedriver.Itsbasicideais:useofultrasonicaccuratelymeasurethedistancewiththeobstaclesahead,quicklybacktothebusmicroprocessorsystem,throughtheoperationofthemicroprocessorsystem,comparison,andthenmakeajudgment,ifdangerousdistance,activatethealarm.Intheprocessoftheresearchofthesystem,accordingtothedifferenttrafficconditions,fromanalogalarmdistancealarmin-depthresearch;Then,onthebasisoftherequiredfunctions,thedesignschemeofthesystem,andonthisbasis,theapplicationcircuitofpowersupplydesigninformationcollection,andotheralarmsignaloutputdevice;WithMCS-51assemblylanguageprogramtodevelopacontrolsystem;Finally,inordertoensurethereliabilityandstabilityofthesensor,usingthecorrespondingmeasures.Obstaclestoimplementdistancetest,displayandalarm,ultrasonicrangingfrom3cmto400cm,accuracyatabout3mm.Keywords:automobile;anti-collision;ultrasonicsensor;MCS-51目录21497一设计正文YNNNYNNNYY显示效劳子程序读取距离小于1米?1<X<2大于2米?显示危险距离,并用红色LED灯指示蜂鸣器报警保持距离,黄色LED灯指示返回返回播放距离并显示显示平安距离并用绿色LED灯指示返回返回图18显示报警子程序流程图外中断效劳子程序外中断效劳子程序关中断,停止发射读T0值计算距离重装T0返回图19中断效劳子程序流程图超声波测距有七个工作步骤,具不步骤如下:〔1〕在单片机控制NE555的根底上来产生40千赫兹脉冲信号;〔2〕超声波发射换能器在脉冲信号通过的前提下发出超声波;〔3〕计时是在单片机发送脉冲时刻开始的;〔4〕超声波换能器接收到超声波遇到障碍物被反射回来的波;〔5〕在T0口的根底上开始读取数值;〔6〕开始计算数据;〔7〕最后报警显示。由于我们使用的晶体振荡器是12MHZ,所以其中一个计数器的号码是1,当主程序检测到汽车接收到被障碍物反射回来的波的时候[16],计数器T0数量(即超声波的时候来回)由式(2)可以计算出测量对象和测量仪器的距离之间的距离,音速设计需要在20C为344米/秒:D=(c*t)/2=172t0/10000cm其中,T0的计算计数器T0的价值。距离测量结果将在十进制BCD码方法液晶约0.5秒,然后我们就重复测量超声波脉冲的过程。我们为了方便程序结构简单、容易计算距离,我们用语言来写。超声波发生子例程的影响通过脉冲信号传输控制芯片555超声波发射器P1.0口(约40khz的频率方波)不一定是责任比例是50%,脉冲宽度是12,时间计数器T0开放。因为超声波的子程序比拟简单,但是我们对它的运行精度要求交比拟高所以我们用汇编语言来编程。(1)在系统外部中断的时候用INT0检测照应,致使它的工作在下降到沿触发模式(IT0=1)。当汽车检测到超声波反射回来的波的信号,由此系统开始触发并进入中断,此时我们应该停止发射超声波,停止计时器T0,读T1中断效劳程序价值,计算出测量结果。(2)使用T0定时器,同时定时器T1超声波发射。假设我们在一段时间内还是没有收到被障碍物发射回来的波的信号,然后我们就输入T1致使程序中断效劳,我们开始进行新一轮的测试了。与T0,最长时间是65ms,0.065*324/2=10.5米的最大距离可以在理想的情况下。实际情况不需要测量距离或系统很难检测到目前为止被认为是迄今为止。但为了方便计算,初始值为0。5调试本设计到四个的模块,本设计就是由超声波测距模块、单片机模块、显示和报警四个模块组成的,所以会很难调试的,设计更多的不确定因素,所以当调试模块用调试方法,就差不多消除了模块的干扰了。5.1硬件调试在我们安装电路后,我们首先不应该急于功率测试,但是我们必须要做好下面检查的之前的调试工作。检查连接:总是连接错误(即连接的一端是正确的,另一端是与减少错误),(称为行气动安装),然后(在电路是完全不必要的,比方连接错误连接)。检查接线图可以直接控制电路原理,但如果电路布线,可以组件(如运算放大器、三极管)为中心,为了检查检察官对行针,这样不仅可以找出故障或更少的一条线,但也容易找到其他的线路。我们为了保证它的连接,所以在检查线的时候,也要用万用表来检查线路电阻连接设备的配置文件,和最好的测量,它可以检测一些“隐藏”。检查安装的组件:检查检查的关键组件,集成运算放大器、一个三极管,二极管,电解电容器如铅和极性或错误,和外引线短,但也检查是否可靠焊接组件。应该指出,在焊接之前,有必要测试组件,确保组件可以正常工作,调试,以防止不必要的麻烦[17]。我们也要检查公共的接地端和电源的输入端,电路接通电源之前,还需要万用表之间是否短路电源输入和检查,如果有任何进一步检查的原因。上面的检查和确认,完成后在调试之前,但这应注意积极的力量,消极无法逆转。调好的超声波发射电路,芯片使没有控制,电力系统工作,观察NE555芯片使用示波器3英尺。如果输出波形不满足要求,按规定R9机型和R10调节输出波形,我们需求周期的方是波40千赫兹我们要保证调整好发射电路和接收电路。在超声波接收探头没有收到信号,观察两个销示波器,40khz的最大干扰电压波形测量正弦波,20mv的振幅。在超声波接收探头信号,首先测量信号放大器电路放大器输出5v正弦波振幅,但两级输出无论接收探头接收到信号,持续高水平的11v的输出。检查NE555放大的电路参数太大,自激振荡的形成,所以原始的放大100*100-100*10[18]。因为超声波有些局部是比拟复杂的,尤其是相关传感器,被天气和温度相对较大,内部控制电路干扰是困难的,所以我选择了另一块扩展板的这局部电路,和电感隔离每个局部的干扰。我考虑到这个设计只是一个学习的过程,所以我们没必要要求性能那么高,因此,电池供电的这种方式,当距离很容易受到地面漫反射干扰的影响,所以获得抵抗得不到太小,所以灵敏度会受到影响,但是经过几次调试,我们把测试精度根本上能控制在1厘米左右的范围。5.2软件调试5.2.1汇编汇编语言就是一种在机器指令的根底上的文本代表记忆的符号语言,就是一种很接近机器代码的语言。的主要优势资源少,程序和效率高。但不同的CPU,汇编语言可能不同,所以它不容易移植[19]。当前广泛使用的RISC体系结构的8位单片机,ROM、RAM、堆栈的内部资源是有限的,如果使用C语言,C语言编译器,将成为很多机器代码,非常容易出空间不够信号溢出等一些问题。但是很难保证一些制造商给我们提供单片机的编译器。汇编语言本质就是每一条指令对应一个相应机器码,每一步的实施的行为是非常明确的。因为我们用很少的资源用于单片机的开发,所以我们建议要使用汇编语言。C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制。C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改良和扩充,从而研制出规模更大、性能更完备的系统,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。KEILuVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因此本系统采用KEILuVISION2进行软件的编写和调试。5.2.2调试过程把芯片放在电路,连接到电源,检查程序自己的设计可以实现所需功能。假设结果与当初的想法是不一样的,所以先检查硬件的问题以保证测试时硬件局部是没有问题的。在硬件之后确定硬件没有问题那就说明应该是软件哪有问题了。所以需要检查软件的一些局部,第一步要检查接收检查示波器红外管的输出端口与INT0端口波形是正确的。在检查红外接收局部之后在确保红外接收局部没啥问题之后[20],用来确定电机的调试局部,以确保电机能否根据远程控制来到达旋转的目的。然后就是检查超声波局部了,主要就是检查显示数码管是可以正常运行的,所以必须要有一个控制按钮。因为在前面我们已经确定了硬件是没有问题的,由此可以得出,我们再结合硬件的前提下在检查软件设备,因为我们可以很直观的找到那里有错误。表5-1测试结果真实距离〔m〕0.200.501.002.003.004.50测得距离(m)0.210.520.982.032.894.68图20超声波测距时序图6结论超声波测距的根本思路是使用超声波发射波与超声波接收波,根据超声波发射端到接收端的时间来计算汽车到障碍物的距离。有两种方法可以在超声波的根底上测量汽车到障碍物的距离,发射端测量距离的两端,另一端,收到直接波,适用于高计;传输波所反映的对象在收到反射波,适合测距仪。本设计使用了反射波法。超声波测距仪硬件电路的设计主要包括单片机系统及显示报警电路、超声波发射电路和超声波检测接收电路三局部。单片机采用STC89C52或其兼容系列。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P1.0端口输出超声波换能器所需的40kHz的方波的控制信号,并通过NE555芯片产生。利用外中断0口监测超声波接收电路输出的返回信号。超声波发射电路主要由反相器74LS04和超声波发射换能器T构成,单片机P1.0端口输出的40kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推换形式将方波信号加到超声波换能器的两端,可以提高超声波的发射强度。输出端采两个反向器并联,用以提高驱动能力。上位电阻R1O、R11一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡时间。压电式超声波换能器是利用压电晶体的谐振来工作的。超声波换能器内部有两个压电晶片和一个换能板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器。超声波发射换能器与接收换能器在结构上稍有不同,使用时应分清器件上的标志。超声波接收电路由CX20106A集成电路芯片,这是一个红外探测器接收电视,常用的红外遥控接收器。考虑频率的载波频率的超声红外遥控38kHz和40kHz接近的距离,我们可以用红外遥控接收起来做超声波的接收电路。根据实验结果说明,CX20106A接收超声波,具有很强的抗干扰能力与非常良好的灵敏度。在比拟适宜的情况下,可以适当的改变一下电容器C4的大小。当障碍物反射过来的超声波,超声波接收器接收到又障碍物反射回来的超声波.只要计算从接收端接收的超声波的反射信号,就可以计算出障碍物的距离与反射的超声波发生器。一开始时使用发射电路和启动T0定时器的芯片,在定时器的计数功能根底上记下超声波反射回来的波的时间。当接收端接收到超声波反射回来的波,会产生一个中断请求信号INT0或INT1终端,单片机外部中断请求,外部中断效劳子程序的实现,根据时间的差异,去计算汽车到障碍物的距离。超声波测距仪的软件设计主要由主程序、超声波发生子程序、超声波接收中断程序及显示子程序组成。我们知道C语言程序有利于实现较复杂的算法,汇编语言程序那么具有较高的效率且容易精细计算程序运行的时间,而超声波测距仪的程序既有较复杂的计算〔计算距离时〕,又要求精细计算程序运行时间〔超声波测距时〕,所以控制程序可采用C语言和汇编语言混合编程。主超声波测距仪主程序利用外中断0检测返回超声波信号,一旦接收到返回超声波信号〔即INT0引脚出现低电平〕,立即进入中断程序。进入中断后就立即关闭计时器T0停止计时,并将测距成功标志字赋值1。如果当计时器溢出时还未检测到超声波返回信号,那么定时器T0溢出中断将外中断0关闭,并将测距成功标志字赋值2以表示此次测距不成功。前方测距电路的输出端接单片机INT0端口,中断优先级最高,左、右测距电路的输出通过与门IC3A的输出接单片机INT1端口,同时单片机P1.3和P1.4接到IC3A的输入端,中断源的识别由程序查询来处理,中断优先级为先右后左。在元件及调制方面,由于采用的电路使用了很多集成电路。外围元件不是很多,所以调试应该不会太难。一般只要电路焊接无误,稍加调试应该会正常工作。电路中除集成电路外,对各电子元件也无特别要求。根据测量范围要求不同,可适当调整与接收换能器并接的滤波电容C0的大小,以获得适宜的接收灵敏度和抗干扰能力。假设能将超声波接收电路用金属壳屏蔽起来,那么可提高抗干扰能力。组件和调制,因为集成电路被电路大量的使用着,它的外部组件其实并不多,所以一般应不会很难调试。只要焊接的电路是正确的,一些调是应该可以正常工作。参考文献[1]吴政江.单片机控制红外线防盗报警器[J].锦州师范学院学报,2001.[2]宋文绪.传感器与检测技术[M].北京:高等教育出版社,2004.[3]余锡存.单片机原理及接口技术[M].西安:西安电子科技大学出版社,2000.[4]唐桃波,陈玉林.基于AT89C51的智能无线安防报警器[J].电子设计应用,2003.[5]李全利.单片机原理及接口技术[M].北京:北京航空航天大学出版社,2004.[6]薛均义,张彦斌.MCS-51系列单片微型计算机及其应用[M].西安:西安交通大学出版社,2005.[7]徐爱钧,彭秀华.单片机高级语言C51应用程序设计[M].北京:北京航空航天大学出版社,2006.[8]康华光.电子技术根底〔模拟局部〕[M].北京:高等教育出版社,2004.[9]李华.MCS-51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993.6:87--93[10]陈光东.单片机微型计算机原理与接口技术(第二版)[M].武汉:华中理工大学出版社,1999.4:21--25[11]徐淑华,程退安,姚万生.单片机微型机原理及应用[M].哈尔滨:哈尔滨工业大学出版社,1999.6:128--134[12]苏长赞.红外线与超声波遥控[M].北京:人民邮电出版社,1993.7:26--35[13]张谦琳.超声波检测原理和方法[M].北京:中国科技大学出版社,1993.10:11--16[14]九州.放大电路实用设计手册[M].沈阳:辽宁科学技术出版社,2002.5:134—146[15]胜全.D18B20数字温度计在微机温度采集系统中的序编制[M].南京:南京大学出版社1998.3:43--51[16]恒清,张靖.加强单片机系统抗干扰能力的方法[J].通化师范学院学报,2004.10:2[17]华兵.MCS-51单片机原理应用[M].武汉:武汉华中科技大学出版社,2002.5:47--61[18]李华强.高速公路追尾防撞报警系统目标探测技术及其电源开发研究[D].西安:长安大学.2003.[19]缪晓中.电子CAD—Protel99SE[M].北京:化学工业出版社,2009.1[20]胡汉辉,张宇驰等.传感器技术及应用[J].北京.科学出版社,2009.8谢辞本文是肖宁博肖老师的关心和细致的指导下完成。从课题的选择到本论文的完成,肖老师总是给了我细心的指导和不懈的支持。在他的身上,我感受到了作为一个学者的严谨和务实的精神,这些都是让我受益,将受益于无限。因此,我想借此时机表达我们的最高敬意和衷心的感谢肖老师在我论文写作中帮助我。与此同时,在写论文的过程中,其他的老师给了我很多帮助,提供各种各样的信息,也在这里对他们表示深切谢意。最后我要感谢我的父母,我将努力工作,不辜负我父母的期望!这一个月里得到了肖宁博老师的悉心指导,每次论文出现问题都是他给我指出问题,使我能够对论文当中出现的错误进行及时改正,有时候论文格式结构方面的小问题他也会耐心告诉我,提醒我尽快改正,这些小细节的提醒促使我顺利完成论文。在此期间我也得到同班同学的协助,有很多知识方面的缺乏,致使自己在论文的编写方面受到很多阻力,多亏同学的细心讲解,让我及时解除疑惑。同时因为自己工作的原因,一边忙工作的事情一方面又要忙论文的事情,基于这些就需要我经常熬夜搜资料,准备论文的前期工作,所以深深地觉得,努力与规划时间对于已经上班的我非常重要。如何按照规定时间及时完成论文,是一个摆在我面前需要认真思考的问题。所以老师与同学的帮助就显得非常重要了。通过这次毕业设计我综合利用学到的知识,发现、提出、解决实际问题的能力,训练和检验流程以及我的工作能力。这次毕业设计让我的专业有了更深层次的了解,发现很多自己的缺点,学习和工作在未来,我想改善这些缺点,让我的知识水平争取进一步改善在此,我非常诚挚的感谢我亲爱的老师和同学对我的帮助,我会记住你们的,也感谢宝鸡文理学院——我的母校对我四年的栽培,正是因为这四年的大学生活让我不仅在知识层面有所提高,而且学到了书本上学不到的生活经验,提高了自己处理问题的能力,让我不断成长。也正是因为你们才让我懂得了珍惜,懂得处理问题的不是蛮干,而是应该保持智慧的心态,不能完全按照自己的意愿做事,要懂得尊重大家的想法。在以后的学习和生活中,我会带着大家给予我的成长,努力完善自己,不辜负母校对我的期望。谢谢大家!二附录1设计图2实物图3程序代码#include<reg52.h> //调用单片机头文件#defineucharunsignedchar//无符号字符型宏定义 变量范围0~255#defineuintunsignedint //无符号整型宏定义 变量范围0~65535#include<intrins.h>#include"eeprom52.h"//数码管段选定义012345 6 7 8 9 ucharcodesmg_du[]={0x28,0xee,0x32,0xa2,0xe4,0xa1,0x21,0xea,0x20,0xa0, 0x60,0x25,0x39,0x26,0x31,0x71,0xff}; //断码uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};//数码管位选定义sbitsmg_we1=P3^4; //数码管位选定义sbitsmg_we2=P3^5;sbitsmg_we3=P3^6;sbitsmg_we4=P3^7;sbitc_send=P3^2; //超声波发射sbitc_recive=P3^3; //超声波接收sbitbeep=P2^3;//蜂鸣器IO口定义ucharsmg_i=3;//显示数码管的个位数bitflag_300ms;longdistance; //距离uintset_d; //距离ucharflag_csb_juli;//超声波超出量程uintflag_time0;//用来保存定时器0的时候的ucharmenu_1;//菜单设计的变量/***********************1ms延时函数*****************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<120;j++);}/***********************处理距离函数****************************/voidsmg_display(){ dis_smg[0]=smg_du[distance%10]; dis_smg[1]=smg_du[distance/10%10]; dis_smg[2]=smg_du[distance/100%10]&0xdf;; }/******************把数据保存到单片机内部eeprom中******************/voidwrite_eeprom(){ SectorErase(0x2000); byte_write(0x2000,set_d%256); byte_write(0x2001,set_d/256); byte_write(0x2058,a_a); }/******************把数据从单片机内部eeprom中读出来*****************/voidread_eeprom(){ set_d=byte_read(0x2001); set_d<<=8; set_d|=byte_read(0x2000); a_a=byte_read(0x2058);}/**************开机自检eeprom初始化*****************/voidinit_eeprom(){ read_eeprom(); //先读 if(a_a!=1) //新的单片机初始单片机内问eeprom { set_d=50; a_a=1; write_eeprom(); //保存数据 } }/********************独立按键程序*****************/ucharkey_can; //按键值voidkey() //独立按键程序{ staticucharkey_new; key_can=20;//按键值复原 P2|=0x07; if((P2&0x07)!=0x07) //按键按下 { delay_1ms(1); //按键消抖动 if(((P2&0x07)!=0x07)&&(key_new==1)) { //确认是按键按下 key_new=0; switch(P2&0x07) { case0x06:key_can=3;break; //得到k2键值 case0x05:key_can=2;break; //得到k3键值 case0x03:key_can=1;break; //得到k4键值 } } } else key_new=1; }/****************按键处理显示函数***************/voidkey_with(){ if(key_can==1) //设置键 { menu_1++; if(menu_1>=2) { menu_1=0; smg_i=3; //只显示3位数码管 } if(menu_1==1) { smg_i=4; //只显示4位数码管 } } if(menu_1==1) //设置报警 { if(key_can==2) { set_d++; //加1 if(set_d>400) set_d=400; } if(key_can==3) { set_d--; //减1 if(set_d<=1) set_d=1; } dis_smg[0]=smg_du[set_d%10]; //取小数显示 dis_smg[1]=smg_du[set_d/10%10];//取个位显示 dis_smg[2]=smg_du[set_d/100%10]&0xdf;//取十位显示 dis_smg[3]=0x60; //a write_eeprom(); //保存数据 } }/****************报警函数***************/voidclock_h_l(){ staticucharvalue; if(distance<=set_d) { value++;//消除实际距离在设定距离左右变化时的干扰 if(value>=2) { beep=~beep; //蜂鸣器报警 } } else { value=0; beep=1; //取消报警 } }/***********************数码位选函数*****************************/voidsmg_we_switch(uchari){ switch(i) { case0:smg_we1=0;smg_we2=1;smg_we3=1;smg_we4=1;break; case1:smg_we1=1;smg_we2=0;smg_we3=1;smg_we4=1;break; case2:smg_we1=1;smg_we2=1;smg_we3=0;smg_we4=1;break; case3:smg_we1=1;smg_we2=1;smg_we3=1;smg_we4=0;break; } }/***********************数码显示函数*****************************/voiddisplay(){ staticuchari; i++; if(i>=smg_i) i=0; smg_we_switch(i); //位选 P1=dis_smg[i]; //段选 }/******************小延时函数*****************/voiddelay(){ _nop_(); //执行一条_nop_()指令就是1us _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();}/*********************超声波测距程序*****************************/voidsend_wave(){ c_send=1; //10us的高电平触发 delay(); c_send=0; TH0=0; //给定时器0清零 TL0=0; TR0=0; //关定时器0定时 while(!c_recive); //当c_recive为零时等待 TR0=1; while(c_recive) //当c_recive为1计数并等待 { flag_time0=TH0*256+TL0; if((flag_time0>40000))//当超声波超过测量范围时,显示3个888 { TR0=0; flag_csb_juli=2; distance=888; break; } else { flag_csb_juli=1; } } if(flag_csb_juli==1) { TR0=0; //关定时器0定时 distance=flag_time0; //读出定时器0的时间 distance*=0.017;//0.017=340M/2=170M=0.017M算出来是米 if((distance>500)) //距离=速度*时间 { distance=888; //如果大于3.8m就超出超声波的量程 } }}/*********************定时器0、定时器1初始化******************/voidtime_init() { EA=1; //开总中断 TMOD=0X11; //定时器0、定时器1工作方式1 ET0=0; //关定时器0中断 TR0=1; //允许定时器0定时 ET1=1; //开定时器1中断 TR1=1; //允许定时器1定时 }/***************主函数*****************/voidmain(){ beep=0; //开机叫一声 delay_1ms(150); P0=P1=P2=P3=0xff; //初始化单片机IO口为高电平 send_wave(); //测距离函数 smg_display(); //处理距离显示函数 time_init(); //定时器初始化程序 init_eeprom();//开始初始化保存的数据 send_wave(); //测距离函数 send_wave(); //测距离函数 while(1) { if(flag_300ms==1) { flag_300ms=0; clock_h_l();//报警函数 if(beep==1) send_wave(); //测距离函数 if(menu_1==0) smg_display(); //处理距离显示函数 } key(); //按键函数 if(key_can<10) {

温馨提示

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

评论

0/150

提交评论