1、 2012届毕业设计(论文) 毕业设计报告(论文)题 目: 汽车倒车系统的设计 所 属 系: 自动化技术系 班 级: 电子0921班 摘 要 设计了一款基于单片机的汽车倒车系统。主要阐述了超声波测距的工作原理、测量和控制方法、理论计算,分析了影响精度的因素,设计了单片机最小系统电路,超声波接收以及超声波发射电路、显示电路、报警电路、温度补偿电路等。倒车系统主要由超声波发射模块、超声波接收模块、单片机模块、显示模块、报警模块、温度补偿模块组成。超声波接收模块和超声波发射模块主要是实现计算车距的目的,单片机实现处理信号的功能,温度补偿模块是利用温度与声速之间的关系,来消除温度对声速的影响。报警模块
2、用于实现倒车过程的报警提醒。关键词 汽车倒车 超声波测距 单片机 温度补偿II目 录1 前言12 汽车倒车的工作原理12.1 超声波测距工作原理12.1.1 测量与控制方法22.1.2 理论计算22.1.3 影响精度的因素分析32.2 系统工作原理43 单元电路设计43.1 单片机控制电路设计43.1.1 单片机的选择43.1.2 单片机最小系统的设计53.2 超声波接收和发射电路设计63.2.1 超声波接收电路设计63.2.2 超声波发射电路的设计93.3 显示电路的设计103.4 报警电路的设计113.5 温度补偿电路的设计113.6 辅助电源电路的设计124 软件设计134.1 流程图设
3、计134.2 程序清单145 结论24参考文献24致谢25 2012届毕业设计(论文)1 前言据美国的最新统计表明,因各种原因造成的车辆倒车事故占公路交通事故总量的90%左右。因此,要降低公路交通事故,必须大力降低车辆倒车事故,而汽车倒车技术的发展及应用有助于减少汽车倒车事故的发生。因此,国内外都在研究如何利用先进的技术,即汽车倒车技术,辅助汽车驾驶者对影响公路交通安全的人、车、路环境进行实时监控,在危急情况下由系统主动干涉驾驶操纵、辅助驾驶者进行应急处理、防止汽车倒车事故的发生。随着我国经济的飞速发展,交通运输车辆的不断增多,由此产生的交通问题越来越成为人们关注的问题。其中倒车事故由于发生的
4、频率极高,已引起了社会和交通部门的高度重视。倒车事故发生的原因是多方面的,倒车镜有死角,驾车者目测距离有误差,视线模糊等原因造成倒车时的事故率远大于汽车前进时的事故率,尤其是非职业驾驶员以及女性更为突出。而倒车事故给车主带来许多麻烦,例如撞上别人的车、消防水笼头,如果伤及儿童更是不堪设想,有鉴于此,汽车高科技产品家族中,专为汽车倒车泊位设置的“倒车雷达”应运而生,倒车雷达的加装可以解决驾驶人员的后顾之忧,大大降低倒车事故的发生。倒车雷达又称泊车辅助系统,是汽车泊车安全辅助装置,能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员泊车和起动车辆时前后左右探视所引起的困扰,并帮助驾驶
5、员扫除了视野死角和视线模糊的缺陷,提高了安全性。目前测定汽车之间的安全距离一般有三种:超声波测距、微波雷达测距、激光测距。本文着重研究超声波测距。超声波测距由于其能够进行非接触测量和相对较高的测量精度,越来越被人们所重视。就目前形势来看,汽车市场的快速发展将带动倒车雷达市场的繁荣。国内倒车雷达主流市场已经开始有进口高档汽车向中低档汽车发展。技术上向着单芯片功能成灵敏度更高、可视化发展,设备趋于小型化、人性化、智能化等方向发展。由此可见,超声波汽车倒车雷达系统将会在人类今后的生活中扮演越来越重的角色,为人类的发展作出重要贡献。超声波倒车雷达系统一般由超声波传感器(俗称探头)、控制器和显示器等部分
6、组成,现在市场上的倒车雷达大多采用超声波测距原理,驾驶者在倒车时,启动倒车雷达,在控制器的控制下,由装置于车尾保险杠上的探头发送超声波,遇到障碍物,产生回波信号,传感器接收到回波信号后经控制器进行数据处理,判断出障碍物的位置,由显示器显示距离并发出警示信号,得到及时警示,从而使驾驶者倒车时做到心中有数,使倒车变得更轻松。2 汽车倒车的工作原理2.1 超声波测距工作原理超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差t,然后求出距离S=Ct/2,式中的C为超声波波速。由于超声波也是一种声波,其声速C与温度有关,列出了几种不同温度下的声速。在使用时,如果温
7、度变化不大,则可认为声速是基本不变的。如果测距精度要求很高,则应通过温度补偿的方法加以校正。声速确定后,只要测得超声波往返的时间,即可求得距离。这就是超声波测距仪的原理。定时器显示器振荡器调制器接收检测器电声换能器计时器控制电声换能器图1 系统总体设计流程图2.1.1 测量与控制方法声波在其传播介质中被定义为纵波。当声波受到尺寸大于其波长的目标物体阻挡时就会发生反射,反射波称为回声。假如声波在介质中传播的速度是已知的,而且声波从声源到达目标然后返回声源的时间可以测量得到,从声波到目标的距离就可以精确地计算出来。这就是本系统的测量原理。由于此超声波测距仪可以实现双向测距,所以需进行测距选择,而这
8、个测距选择就以自动选择功能来实现。2.1.2 理论计算T 2T 1图2 测距的原理如图2所示为反射时间,是利用检测声波发出到接收到被测物反射回波的时间来测量距离其原理如图所示,对于距离较短和要求不高的场合我们可认为空气中的声速为常数,我们通过测量回波时间T利用公式:其中,S为被测距离、V为空气中声速、T为回波时间,可以计算出路程,这种 方法不受声波强度的影响,直接耦合信号的影响也可以通过设置“时间门”来加以克服。这样可以求出距离:2.1.3 影响精度的因素分析1)发射接收时间对测量精度的影响分析 采用TR40压电超声波传感器,脉冲发射由单片机控制,发射频率40KHz ,忽略脉冲电路硬件产生的延
9、时,可知由软件生成的起始时间对于一般要求的精度是可靠的。对于接收到的回波,超声波在空气介质的传播过程中会有很大的衰减,其衰减遵循指数规律。设测量设备基准面距被测物距离为h,则空气中传播的超声波波动方程为:由以上公式可知,超声波在传播过程中存在衰减,且超声波频率越高,衰减越快,但频率的增高有利于提高超声波的指向性。经以上分析,超声波回波的幅值在传播过程中衰减很大,收到的回波信号可能十分微弱,要想判断捕获到的第一个回波确定准确的接受时间,必须对收到的信号进行足够的放大,否则不正确的判断回波时间,会对超声波测量精度产生影响。2)当地声速对测量精度的影响分析 当地声速对超声波测距测量精度的影响远远要比
10、收发时间的影响严重。超声波在大气中传播的速度受介质气体的温度、密度及气体分子成分的影响,即:由上式知,在空气中,当地声速只决定于气体的温度,因此获得准确的当地气温可以有效的提高超声波测距时的测量精度。工程上常用的由气温估算当地声速的公式如下:式中C0=331.4m/s 。T为绝对温度,单位K。 此公式一般能为声速的换算提供较为准确的结果。实际情况下,温度每上升或者下降 1, 声速将增加或者减少 0.607m /s ,这个影响对于较高精度的测量是相当严重的。因此提高超声波测量精度的重中之重就是获得准确的当地声速。 对于时间误差主要由发送计时点和接收计时点准确性确定,为了能够提高计时点选择的准确性
11、,本文提出了对发射信号和接收信号通过校正的方式来实现准确计时。此外,当要求测距误差小于1mm时,假定超声波速度C=344m/s(20室温),忽略声速的传播误差。则测距误差st0.000 002 907s,即2.907ms。根据以上过计算可知,在超声波的传播速度是准确的前提下,测量距离的传播时间差值精度只要在达到微秒级,就能保证测距误差小于1mm的误差。使用的12 MHz晶体作时钟基准的AT89C51单片机定时器能方便的计数到1s的精度,因此系统采用AT89C51的定一时器能保证时间误差在1mm的测量范围内。 超声波的传播速度主要受空气密度的影响,空气的密度越高则超声波的传播速度就越快,而空气的
12、密度又与温度有着密切的关系。由此可见,测量精度与温度有着直接的关系,本文采用DS18B20温度传感器,对外界温度进行测量,并在软件中实现温度补偿。2.2 系统工作原理此次设计所采用的汽车倒车系统的电路模块图如图3所示。从图中可看出,该电路主由接收电路、单片机系统、发射电路、显示电路、报警电路、温度补偿电路以及辅助电源等。单片机在超声波信号发射的同时开始计时,超声波信号在空气中传播遇到障碍物后发生反射,反射的回波信号经过处理后输入到单片机产生中断,计数器停止计数。通过计数器测得的脉冲数可得到超声波信号往返所需要的时间,从而达到测距的目的。温度补偿电路利用声速和温度之间的关系对声速进行校正,从而消
13、除温度对声速的影响,报警电路可实现汽车倒车过程中的声光报警。辅助电源为系统元器件提供电源,单片机主要是接收信号、处理信号和输出信号。电路的组成要考虑简单实用,元器件选择要考虑功耗问题,如单片机就需选择低功耗的。障碍物超声波接收电路超声波发射电路单片机显示电路声光报警电路温度补偿电路系统辅助电源图3 汽车倒车系统的工作原理图3 单元电路设计3.1 单片机控制电路设计3.1.1 单片机的选择现在应用最广泛的八位单片机是Intel的51系列,由于产品硬件结构合理,指令系统规范,加之生产历史“悠久”,具有很多优点。51系列优点之一是它从内部的硬件到软件有一套完整的按位操作系统。它的处理对象不是字或字节
14、而是位。它不光能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。虽然其他种类的单片机也具有位处理功能,但能进行位逻辑运算的实属少见。51系列在片内RAM区间还特别开辟了一个双重功能的地址区间,十六个字节,单元地址20H2FH,它既可作字节处理,也可作位处理(作位处理时,合128个位,相应位地址为00H7FH),使用极为灵活。这一功能无疑给使用者提供了极大的方便,因为一个较复杂的程序在运行过程中会遇到很多分支,因而需建立很多标志位,在运行过程中,需要对有关的标志位进行置位、清零或检测,以确定程序的运行方向。而实施这一处理
15、(包括前面所有的位功能),只需用一条位操作指令即可。51系列的另一个优点是乘法和除法指令,这给编程也带来了便利。八位除以八位的除法指令,商为八位,精度不够,用得不多。而八位乘八位的乘法指令,其积为十六位,精度还是能满足要求的,用的较多。作乘法时,只需一条指令就行了,即 MULAB(两个乘数分别在累加器A和寄存器B中。积的低位字节在累加器A中,高位字节在寄存器B中)。很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。 在51系列中,还有一条二进制-十进制调整指令 DA,能将二进制变为BCD码,这对于十进制的计量十分方便。而在其他的单片机中,则也需调用专用的子程序才行。
16、Intel公司51系列的典型产品是8051,片内有4K字节的一次性程序存储器(OTP)。Atmel公司就将其改为电可改写的闪速存储器(Flash),容许改写1000次以上,这给编程和调试带来极大的便利,其产品AT89C51、AT89C52 等成为了当今最流行的八位单片机。 51系列的I/O脚的设置和使用非常简单,当该脚作输入脚使用时,只须将该脚设置为高电平(复位时,各I/O口均置高电平)。当该脚作输出脚使用时,则为高电平或低电平均可。低电平时,吸入电流可达20mA,具有一定的驱动能力;而为高电平时,输出电流仅数十微安甚至更小(电流实际上是由脚的上拉电流形成的),基本上没有驱动能力。其原因是高电
17、平时该脚也同时作输入脚使用,而输入脚必须具有高的输入阻抗,因而上拉的电流必须很小才行。作输出脚使用,欲进行高电平驱动时,得利用外电路来实现(见附图),I/O脚不通,电流经R驱动LED发光;低电平时,I/O脚导通,电流由该脚入地,LED灭(I/O脚导通时对地的电压降小于1V,LED的域值1.51.8V)。 基于以上51系列单片机的优点,我选择51单片机作为本课题的控制处理器。3.1.2 单片机最小系统的设计51系列单片机种类很多,此次我选用AT89C51单片机。AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。单片机最小系统基本电路由电源、复位及晶
18、振电路组成。此系统采用单片机AT89C51作为控制器,兼容RS232标准的芯片MAX232单电源电平转换芯片、D9插口实现串行输入;复位电路采用手动复位方式,简单方便;振荡电路采用单片机引脚XTAL1、XTAL2跨接石英晶体振荡器和30pf的微调电容,12MH晶振构成一个稳定的自激振荡器,使得单片机能够以此作为时钟控制信号。1)电源模块的设计AT89C51实验开发板提供了一个9伏400毫安的外接交流电源,它能空载输出12伏的直流电压,稳压电源输出的直流电压通过专门的电源插座把直流电压引入实验开发板,左边两个是12伏的电源滤波电容,一般大电容旁边并联一个小电容的目的是降低高频内阻,因为大的电解电
19、容一般采用卷绕工艺制造,所以等效电感较大,小电容可以提供一个小内阻的高频通道,降低电源全频带内阻。(如图4所示)图4 电源模块的设计一路直接提供12伏的直流电源,主要是提供给继电器使用的,另一路通过三端稳压芯片7805稳压成5伏直流电源提供给单片机系统使用,右边两个电容是5伏电源的滤波电容,电阻和绿色的LED组成5伏电源的工作指示电路,只要电源部分正常,绿色的LED就会点亮。2)复位电路的设计由电容串联电阻构成,由图并结合电容电压不能突变的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上
20、就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C 取10u,R取8.2K,当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。3)晶振电路的设计AT89C51单片机内部有一个用于构成振荡器的高增益反向放大器,它的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器,如电路原理图所示在引脚XTAL1和XTAL2跨接晶振Y1和微调电容C1和C6。电容一般选择30pf,电容的大小会影响振荡器频率的高低,稳定性和速度。晶振的频率选择12MHz。单片机最小系统如图所示。图5 单片机最
21、小系统3.2 超声波接收和发射电路设计3.2.1 超声波接收电路设计超声波接收电路包括超声波接收探头、信号放大电路及波形变换电路三部分。超声波探头必须采用与发射探头对应的型号,关键是频率要一致,本设计采用与发射端同型号的压电式超声波传感器,否则将因无法产生共振而影响接收效果,甚至无法接收。由于经探头变换后的正弦波电信号非常弱,因此必须经放大电路进行放大。超声波接收部分采用集成芯片CX20106A,这是一款红外线检波接收的专用芯片。内部电路由前置放大器、自动偏置电平控制电路、限幅放大器、带通滤波器、峰值检波器和整形输出电路组成。可以利用它作为超声波检测电路。1) 前置放大器:它是高增益的放大器,
22、由于超声波在空气中直线传输时,传输距离越大,能量的衰减越厉害,故反射回来的超声波信号的幅值会有很大的变化。为了不使放大器的输出信号过强而产生失真,集成块内部有自动电平限制电路,对前置放大器的增益进行自动限制。通过反馈将放大器设定于适当的状态,再由限制电平电路进行自动控制。2) 限度放大器:当信号太强时为了防止放大器过载,限制高电平振幅,同时也可消除寄生调幅干扰。3) 宽频带滤波器:其频率范围为30Hz60Hz,其中心频率可调。4) 检测器:将返回的超声波的包络解调回来。5) 积分滤波器与整形电路:检测器输出的信号经积分滤波器送到整形电路,输出较好的矩形波。接收的回波信号先经过前置放大器和限幅放
23、大器,将信号调整到合适的幅值;再经过带通滤波器滤波得到有用信号,滤除干扰信号;最后由峰值检波器和整形电路输出到锁相环路,实现准确的计时。CX20106A的外部接线图如图6所示。图6 超声波接收电路超声波接收电路所采用的集成芯片CX20106A是一款红外接收的专用芯片,常用于电视红外遥控器。常用的载波频率38khz与测距的40khz较为相近,可以利用它来做接收电路。适当的改变C3的大小,可以改变接受电路的灵敏度和抗干扰能力。CX20106A(国内同类产品型号为D20106A)是日本索尼公司生产的在红外遥控系统中作接收预放用的双极型集成电路。它还可广泛用于视频系统、家用电器遥控电路以及通信系统等。
24、这种IC性能优越,封装形式及体积与许多遥控信号接收器IC相同或相似,故可用来代换多种型号的遥控信号接收集成电路。CX20106A可用来完成遥控信号,CX20106A是日本索尼公司生产的红外解调集成电路,采用8脚单列直插式塑料超小型封装,+5v供电,内部含可前置放大、自动偏置、限幅放大、通带摅波、峰值检波、积分比较及施密特整形输出等电路。其主要功能是从38KHz红外载波信号中,将编码信号解调出来,并加以放大和整形,然后再送到微处理器(CPU)进行处理,以实现遥控操作功能。CX20106A的引脚注释及引脚图(如图7所示)。1) l 脚:超声波信号输入端,该脚的输入阻抗约为40k。2) 2脚:该脚与
25、GND之间连接RC串联网络,它们是负反馈串联网络的一个组成部分,改变它们的数值能改变前置放大器的增益和频率特性。增大电阻R或减小C,将使负反馈量增大,放大倍数下降,反之则放大倍数增大。但C的改变会影响到频率特性,一般在实际使用中不必改动,推荐选用参数为R=4.7,C=3.3F。3) 3脚:该脚与GND之间连接检波电容,电容量大为平均值检波,瞬间相应灵敏度低;若容量小,则为峰值检波,瞬间相应灵敏度高,但检波输出的脉冲宽度变动大,易造成误动作,推荐参数为3.3F。4) 4脚:接地端。5) 5脚:该脚与电源端VCC接入一个电阻,用以设置带通滤波器的中心频率f0,阻值越大,中心频率越低。例如,取R=2
26、00k时,fn42kHz,若取R=220k,则中心频率f038KHz。6) 6脚: 该脚与GND之间接入一个积分电容,标准值为330pF,如果该电容取得太大,会使探测距离变短。7) 7脚:遥控命令输出端,它是集电极开路的输出方式,因此该引脚必须接上一个上拉电阻到电源端,该电阻推荐阻值为22k,没有接收信号时该端输出为高电平,有信号时则会下降。8) 8脚: 电源正极,4.5V5V。图7 CX20106A的引脚图3.2.2 超声波发射电路的设计超声波发射电路包括超声波产生电路和超声波发射电路两个部分,可采用软件发生法和硬件发生法产生超声波。前者利用软件产生40KHz的超声波信号,通过输出引脚输入至
27、驱动器,经驱动器驱动后推动探头产生超声波。这种方法的特点是充分利用软件,灵活性好,但需要设计一个驱动电流100mA以上的驱动电路。第二种方法是利用超声波专业发生电路或通用发生电路产生超声波信号,并直接驱动换能器产生超声波。这种方法的优点是无需驱动电路,但缺点是灵活性低。本设计采用第二种方法产生超声波发射信号。40KHz的超声波是利用LC震荡电路振荡产生的,其振荡频率计算公式如下:脉冲发射采用软件方式,利用AT89S51的P1.0口发射40 kHz的方波信号,经过74HC04放大后输出到超声波换能器,产生超声波。74HC04是一个高速CMOS六反相器,具有放大作用,具有对称的传输延迟和转换时间,
28、而相对于LSTTL逻辑IC,它的功耗减少很多。对于HC类型,其工作电压为26 V,它具有高抗扰度,可以兼容直接输入LSTTL逻辑信号和CMOS逻辑输入等特点。本系统将40 KHz方波信号分成两路,分别由74HC04经两次和一次反向放大,从而构成推拉式反向放大(电路图如图8所示)。发射电路主要由反向器74HC04和超声波换能器构成,单片机P1.0端口输出40KHz方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极。用这种推挽形式将方波信号加到超声波换能器两端,可以提高超声波的发射强度。输出端采用两个反向器并联,用以提高驱动能力,上拉电阻R8、R
29、9一方面可以提高反向器74HC04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡的时间。压电式超声波换能器是利用压电晶体的谐振来工作的。超声波换能器内部有两个压电晶片和一个换能板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极问未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器。超声波发射换能器与接收换能器在结构上稍有不同,使用时应分清器件上的标志。图8 超声波发射电路3.3 显示电路的设计液晶显示模块
30、已作为很多电子产品的通用器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要数字是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出显示方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单。在单片机系统中应用液晶显示器作为输出器件有以下几个优点:显示质量高:液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新亮点。因此,液晶显示器画质高且不会闪烁。数字式接口:液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方面。体积小、质量轻:液晶显示器通过显
31、示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器轻得多。功耗低:相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其他显示器少的多。LCD液晶显示电路采用LCD1602液晶显示模块,它可以显示2行*16个字符,完全可以满足我们的设计要求。它独有的蓝色背光电路可以在环境光线较弱的条件下应用,显示清晰,颜色靓丽,价格便宜的特点,是很好的显示设备。同时,还能够根据情况来调节显示的亮度。由于本系统可以不用显示汉字,介于设计成本上的需要,我们采用了这个显示方案。图9 液晶显示电路3.4 报警电路的设计蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生
32、磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它。而且蜂鸣器的工作电流一般比较大,单片机I/O引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要利用一个电流放大电路来驱动,一般使用三极管来放大电流就可以了。如图10所示,蜂鸣器的工作原理,当电流、电压、温度高于设置的上限或是低于设置的下限时,单片机控制器的P4.1口的就输出高低电平的信号而使三极管集电极和基极导通从而让蜂鸣器发出报警的声音。而当电流、电压被控制在一个范围内时,单片机的P口就发停止发出信号,而使蜂鸣器停止报警。发光二极管的工作原理,当电流、电压、温度高于设置的上限或是低于设置的下限时,单片机控制器的P4.
33、1口的就输出信号,使发光二极管发光。图10 声光报警电路3.5 温度补偿电路的设计由于超声波的传播速度V受到空气中的温度、湿度、压强等因素的影响,其中温度的影响最为突出,温度每升高1,速度增加约0.6m/s。因此在测量精度要求很高的场合,应通过温度补偿对超声波的传播速度进行校正,以提高测量精度,减小误差。温度测控系统在检测温度时可利用一线性数字温度计即集成温度传感器DS18B20和单片机,构成一个高精度的数字温度检测系统。DS18B20数字式温度传感器与传统的热敏电阻温度传感器不同,能够直接读出被测温度值,并且可根据实际要求,通过简单的编程,实现912位的A/D转换。因而,使用DS18B20可
34、使系统结构更简单,同时可靠性更高。温度测量范围从-55+125,在-10+85检测误差不超过0.5,而在整个温度测量范围内具有2的测量精度。本设计温度测量选用DALLAS公司的DS18B20数字式温度传感器,独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用,无需外部元件,可用数据总线供电电源范围为3.0V至5.5V无需备用电源。它通过输出9位(二进制)数字来直接表示所测量的温度值,温度值是通过DS18B20的数据总线直接输入CPU,无需A/D转换,而且读写指令,温度转换指令都是通过数据总线传入DS18B20。DS18B20数字温度传感器除了具有相当的测量范围和精度外,还具有
35、温度测量精度和不受外界干扰等的优点。本系统采用外部电源供电方式,即:DS18B20的1脚和3脚分别接地和VCC电源。2脚接一个5K的上拉电阻到VCC.这样接法的好处是传感器的检测范围更大。温度补偿电路如图所示。图11基于DS18B20的温度检测电路3.6 辅助电源电路的设计在各种电子设备中,直流稳压电源是必不可少的组成部分,它是电子设备唯一的能量来源,稳压电源的主要任务是将50Hz 的电网电压转换成稳定的直流电压和电流,从而满足负载的需要,直流稳压电源一般由整流、滤波、稳压等环节组成。其电路图如图12所示。其中,变压器将交流电源(220V/50Hz)变换位符 合整流电路所需要的交流电压;整流电
36、路是具有但方向导电性能的整流器件,将交流电压整流成单方向脉动的直流电压;滤波电路滤去单向脉动直流电压中的交流部分,保留直流成分,尽可能供给负载平滑的直流电压;稳压电路是一种自动调节电路,在交流电源电压波动或负载变化时,通过此电路使直流输出电压稳定。图12 辅助电源电路4 软件设计4.1 流程图设计主程序是单片机程序的主体,整个单片机端系统软件的功能的实现都是在其中完成的,在此过程中主程序调用了子程序及中断服务程序。程序首先完成初始化过程,然后是一个重复的控制发射信号的过程,即调用发射子程序几遍,而且每次发射周期结束都很判断在发射信号后延时等待的过程中是否发生了中断,即是否有回波产生来判断程序的
37、流程。主流程图如图13所示:开始结束系统初始化发射方波脉冲计时数据处理中断报警执行报警液晶显示返回NYYN图13 主程序流程图设计4.2 程序清单#include#define uchar unsigned char#define uint unsigned intsbit d8=P27;sbit d1=P20;sbit d2=P22;sbit d3=P24;sbit fang=P31;sbit ds=P14; /define ds18b20sbit lcden=P10;sbit lcdrs=P12;uchar table=TMP:;uchar table1=distance:;uchar t
38、able2=0123456789.CM;double TT;float S6;uint temp,temp1,time,V,S;uint S53,temp23;uchar A1,A2,A3,S1,S2,S3,S4,timeh,timel,flag;/*延时*/void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); /*初始化DS18B20*/void dsreset()uint i;ds=0;i=103;while(i0) i-;ds=1;i=4;while(i0) i-;/*read a bit*/bit tmpreadbi
39、t()uint i;bit dat;ds=0;i+;ds=1;i+;i+;dat=ds;i=8;while(i0) i-;return(dat);/*read a byte*/uchar tmpread()uchar i,j,dat;dat=0;for(i=1;i=8;i+)j=tmpreadbit();dat=(j1);return(dat);/* write a byte */void tmpwritebyte(uchar dat)uint i;uchar j;bit testb;for(j=1;j1;if(testb)ds=0;i+;i+;ds=1;i=8;while(i0) i-; e
40、lseds=0;i=8;while(i0) i-;ds=1;i+; i+;/*temchange 温度转换命令*/void tmpchange()dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0x44);/*get tmp*/uint gettmp()float tt;uchar a,b;dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread();b=tmpread();temp=b;temp=8;temp=temp|a;tt=temp*0.0625;temp=
41、tt*10+0.5;return temp;/* fen li*/void display1(uint temp)A1=temp/100;A2=(temp%100)/10;A3=temp%10;void display2(uint S)S1=S/1000;S2=S%1000/100;S3=S%100/10; S4=S%10;/*write a data*/void write_data(uchar date)lcdrs=1; /rs =1P0=date;delay(5); lcden=1; delay(5);lcden=0;/*write a command*/void write_com(u
42、char com) lcdrs=0; P0=com; delay(5); lcden=1; delay(5);lcden=0; /*init lcd*/void init() uchar i;lcden=0;i+;i+;write_com(0x38); i+; i-;write_com(0x0e); i+;i-;write_com(0x06); i+;i-;write_com(0x01); i+;i-;void xianshi()uchar a;init();write_com(0x80+3);delay(5);for(a=0;a4;a+)write_data(tablea);delay(5)
43、;write_com(0x80+11);delay(5);for(a=11;a13;a+)write_data(table2a);delay(5);write_com(0x80+9);delay(5);write_data(table210);delay(5);write_com(0xc0);delay(5);for(a=0;a9;a+)write_data(table1a);delay(5);write_com(0xc0+11);delay(5);write_data(table210);delay(5);write_com(0xc0+14);delay(5);write_data(M);delay(5);void xianshi1()write_com(0x80+7);delay(5);write_data(table2A1);delay(5);write_data(table2A2);delay(5);write_