资源描述
目 录目 录I摘 要IIAbstractII1 绪 论21.1 课题的提出及意义21.2 国内外的研究概况21.3 驾驶辅助系统的关键支撑技术22 本课题研究方法22.1 检测器材的位置布置22.2 系统主要部件介绍22.3 货车转弯参数的模拟与计算22.4 传感器的选择22.5 本章小结23 硬件实现及单元电路设计23.1 转角模块的实现23.2 超声波模块的实现23.3 蜂鸣器报警模块23.4 显示模块23.5 视频采集模块23.6 视频显示模块23.7 电源模块23.8 主控制模块的实现23.9 总设计图24 系统软件的结构设计24.1 软件设计思路24.2 货车盲区检测和警报电路的算法设计24.3 主程序流程图25 调试25.1 硬件调试25.2 软件调试26 结 论2参考文献2附 录2致 谢2II货车盲区检测及警报的设计摘 要针对大型货车转弯时由于盲区和内轮差带来的交通事故,本文设计一种货车转弯时检测及警报系统。首先,对货车的行驶状况进行判断,利用方向传感器检测货车车头的行驶方向,再由单片机判断货车是否将要进入转弯状态。如果不属于转弯状态,系统不会开启警报干扰司机;如果进入转弯状态,系统超声波传感器检测周围目标,并对进入危险区域的目标发出警报以及提供目标与货车的距离给司机;同时单片机控制摄像头开启,由液晶显示器显示出货车右侧盲区内的图像。在设计过程中,对开启视频和警报的角度,距离,进行研究和模拟,从而对传感器进行选择。关键词:货车盲区;单片机;传感器;警报IVDesign of Blind sport detection and warning for trucksAbstractAiming at the traffic accidents caused by the blind zone and the difference of the internal wheel during the turning of a large-scale freighter, this article designs a detection and alarm system for the turning of freight cars. First of all, to determine the driving conditions of the truck, use the direction sensor to detect the direction of the front of the truck, and then the MCU to determine whether the truck will enter the turning state. If it is not in the turning state, the system will not turn on the alarm to disturb the driver; if it enters the turning state, the system will turn on the ultrasonic sensor to detect the surrounding target and send an alarm to the target that enters the dangerous area and provides the distance between the target and the truck to the driver; meanwhile , the MCU controls the camera to open. The LCD shows the image of the blind area on the right side of the truck. In the design process, the angles and distances to open video and alarms are studied and simulated to select the sensors. Key words: truck blind spot; single chip microcomputer; sensor; alarmIII1 绪 论1.1 课题的提出及意义在我们的日常生活中,交通工具复杂多样,随着人们经济水平的提高,车辆越来越大众化、多样化。除了日常驾驶的汽车外,如果有大型运输,都需要大货车。使用大货车的运输给我们生活带来了很多便利和客观的经济效益。但是,大货车在行驶中由于体型大、惯性大,加上盲区、内轮差也很大等原因经常出现交通事故1。在新闻报道中我们经常可以看到大货车在转弯时,由于内轮差的原因导致发生交通事故,将旁边的小车、行人等卷入车底,货车司机却毫无知觉。这类事故不是人为故意造成,却经常发生在无辜路人的身上,所以应该引起我们的关注,想办法避免此类事故的发生。在车上安装电子装置是有很利于辅助驾驶员驾驶车辆的一种方法,世界上第一个使用在汽车上的电子装置是收音机2,不到几十年时间,在汽车上发展的电子装置就越来越多。如今汽车上的电子装置不仅让驾驶员有舒适的驾驶环境,还在辅助驾驶上起了很大作用,可以预见,电子装置在车辆上的比重将会持续增加,车辆的价格和性能也将以这些电子系统作为参考。车辆的辅助驾驶系统发展到如今技术已经很成熟,很多国家甚至开始研制全智能驾驶系统,想要取代驾驶员操控汽车。尽管在这个过程中还有很多难题需要解决,但相信不久的将来这种系统是可以实现的。从交通安全角度出发,为了减少货车转弯时由于盲区导致的交通事故发生,研究一种检测盲区的系统是具有可行性的。本论文将要讨论的检测及警报系统主要是针对货车转弯时驾驶员从后视镜里看不见的盲区区域,如图1.1所示:图1.1 货车盲区示意图研究表明,若在交通事故发生前,提前1秒钟给驾驶员发出警报,就可避免99%的交通事故发生3。车辆的安全措施可分为被动安全措施和主动安全措施。我们在汽车车体的构造上设计出抗撞击、有弹性的部位,在座位上加安全带,座位前加安全气囊等,这些属于被动安全措施,在事故发生后对人员有一定的保护作用,但其保护作用有一定局限性。因此在车辆的主动安全措施上进行研究是很有必要的,这也引出了本文将要研究的货车转弯时的盲区检测警报系统。该系统是可以在对进入危险区域的车辆或行人发出警报的同时,还可以反馈数据和视频给驾驶员。驾驶员可以看到靠近货车的目标与货车的距离,以及货车右侧盲区的图像,采取应急措施,避免交通事故的发生。1.2 国内外的研究概况最开始关注货车盲区是欧洲一些工业发达国家,他们使用间接目视的技术,监视货车和大客车的盲区,不过当时只是为了避免这些大型车辆倒车发生事故。美国也紧随其后研发自己的盲区监控技术,首先是阿玛特朗公司推出了盲区探测系统,这种系统是把电子传感器固定在货车的后面和右侧,可以用来探测货车、挂车或大客车盲区的物体4。总结来说国外的辅助驾驶系统大致可以分为两类,一类是以德国为首;一类是以美国和日本为首。以德国为首的主要研究辅助驾驶系统。从20世纪80年代开始,德国人开始研究驾驶辅助系统,这种辅助驾驶系统只不过是增加司机驾驶的有效性和可靠性。通过这些辅助驾驶系统,缓解驾驶员的驾驶疲劳,也减少由于驾驶员的粗心导致的交通事故发生。他们主要是运用很多主动和被动的传感器技术,以及后期的信号处理,把这些系统做成了可靠和有效的辅助驾驶工具5。其次是以日本和美国为首的智能驾驶系统。基于市场的需要和技术的远见,日本从1989年就开始研究如何让智能系统代替人为驾驶。因为日本人觉得造成交通事故主要是由于司机的操作、行动受限等问题,并认为只有完全实现智能驾驶才能把这些交通事故根除掉。因为智能驾驶系统只要完善后是不会犯操作失误这种错误的,行动也没有局限性。至今完全实现无人驾驶的猜想已经有很大进度。在丰田、日产、本田联合项目中,开发了许多安全系统(如汽车定位系统、自动刹车系统、车头控制系统、嗜睡警报系统、预警障碍系统等),并且将这些系统做了集成,让所有功能一并实现,总之他们的目的是实现无人驾驶。美国人在交通事故的统计数据中,除了交通拥挤这样不可避免的因素,在其他的交通事故中,由于人为因素造成的交通事故大约占百分之九十。美国政府公开支持智能驾驶的研发,并亲自带头参与。1991年12月,美国政府通过了提高陆路交通效能的法案,表示支持智能驾驶的研发,接着又拨出6.6亿美元来资助全美智能运输系统研究工作。美国当时有5个研究针对着交通安全问题,在其智能运输研究的系统子系统中占的比例最高3。日本和美国的研究想要达到目的,还有很多技术上的难关需要攻破,除了丰田等企业联合项目中的那些必要技术外,还需要加入人工神经网络、模糊控制理论等智能控制的核心技术6。中国由于历史、经济等原因,在这方面的起步是比较晚的。20世纪90年代中期,清华大学自动化系研究过一种自动导航智能车,主要是采用图片识别的技术。1994年,我国第一辆模型车石JUTIV-1由吉林大学智能车辆课题组制造成功,并在不久后制造出JUTIV-2,通过车道线作为导航路径,其时速达到30km/h。近年来,北京理工大学也对智能车辆有所研究,其研究技术主要基于GPS与数字地图导航3。1.3 驾驶辅助系统的关键支撑技术(1)高精度数字地图和GPSGPS可以准确定位车辆的位置,辅以厘米级高精度数字地图后,在无人驾驶领域中起到决定性作用,无论是车辆的定位还是车道的保持,都离不开这两个技术的结合7。(2)激光基于激光的辅助驾驶用在巡航、防撞等需要测距的系统中,主要是利用激光测距的原理(3)红外线因为红外线有热感应效应,所以通常在汽车的辅助驾驶系统中常被用来制作夜视系统8,种系统不仅大大增加了驾驶员在夜间的视觉距离,再辅以其他一些智能技术还能提供给驾驶者捕捉到的目标数量。(4)传感器基于传感器的辅助驾驶系统现在中高级轿车已经有很多,主要应用在辅助倒车,泊车方面,给驾驶员提供全息影像,方便新手司机的倒车、停车。(5)机器视觉机器视觉提供驾驶员直观图像,让驾驶员可以通过视觉监视汽车盲区内的环境,有很好的应用前景。主要是图像输入、图像处理、图像显示三部分组成,其中图像输入部分摄像头有很好的性价比,不过目前需要在低端设备中突破夜视功能难题9。(6)磁性参照物利用磁场的鲁棒性,现在已经产生很多用于商业用途的高速公路车道线标记带,可以全天候提供车道线的指引10。为了提高资源的综合利用率,以上的这些技术通常都不会单独被用来研发某种系统11。车辆和智能交通会议对于这些技术融合的技术大致分为车辆周围障碍物检测系统、车辆偏离预警与保持系统、驾驶员状态监测系统、车辆运动控制与通讯系统等12几类。最近十几年来,盲区检测系统得到长足的发展,但是仍然有很大的发展空间和应用价值。相关学术界也不断研究其发展和应用,有人想利用全景式传感器研发一种监控系统,可以用来监视汽车盲区以及整车周围的实时状况13;为了对车辆整体进行完整监控,有人还提出利用多个传感器组成传感器网络,不过其中复杂的算法需要进一步研究;BLIS信息系统是瑞典VOLVO公司研发,如今普及很多高级汽车14。在现实生活中,由于性能稳定、价格低廉、芯片技术的突破等,使得基于超声波和机器视觉的辅助驾驶系统在市场上抢到主导地位。这些技术由最开始的只适用于高级轿车上,到现在的面向中低级汽车,在汽车行业中有很强的生命力3。352 本课题研究方法2.1 检测器材的位置布置角度传感器布置在车头,及时感应车头转角来判断车行驶轨迹。超声波传感器装在两侧中部和尾部,由数码管显示测距仪的数据。液晶显示器安装在后视镜里面,为了直观得到进如危险区目标到车的距离,把数码管装在方便司机观察的视野位置。各电子器材的分布如图2.1所示:图2.1 检测警报器材放置图本设计对摄像头、视屏采集卡和液晶显示器采用元件连接;超声波测距传感器、角度传感器、蜂鸣器等采用模块连接,连接原理图如图2.1b所示。车辆转弯的同时,4个超波传感器开始工作,其端和端接口分别与中央控制器的p3.2-p3.7、p1.5、p1.6端口连接。单片机使用的是stc89c52单片机。根据超声波传感器探测距离,单片机将探测的距离显示在数码管上、根据危险程度通过p1.0输出端控制蜂鸣器报警声。并通过单片机决定是否启动摄像头进行工作,若判定摄像头工作,则芯片引脚拉低,继电器吸合,摄像头得电开始工作,将视频信号传输给显示。 图2.2 电子元件连接原理图2.2 系统主要部件介绍1)视频显示器系统的视频显示器为液晶显示器,将一块嵌入式液晶显示屏安装在镜面后端,当显示器黑屏时,镜面为普通的反射镜面;当显示器工作时,利用镜面单方向的高透射性,将液晶显示器上的画面透过镜面进行显示。 2)距离显示器系统采用数码管进行距离数值的显示,为了让显示器相比仪表盘更容易被驾驶员观察到,系统将显示器固定在主控平台上方的偏左位置。由超声波传感器探测并且将测得的信息传送至单片机,单片机经过(模数转换)后将结果通过数码管显示出来。3)超声波传感器超声波传感器的探头,分别位于车身的左中、右中、左后以及右后位置系统借助4个具有较大探测范围的超声波传感器探头进行测距,以达到非接触式测距的目的。超声波传感器在某一时刻发出超声波信号,遇到被测物体后反射回来,被超声波发射端接收到,只要计算出超声波信号从发射到接收到回波信号的时间,知道在介质中的传播速度,就可以计算出被测物体距传感器的距离。4)摄像头系统应用了红外夜视摄像头,用以采集监测区域内的影像信息,安装在室外挡风玻璃上。摄像头传输的数据通过图像采集卡处理,传输给液晶显示器。与全时工作摄像头相比,系统的摄像头只有当车身处于货车转弯的最小角度时才会启动。大大延长摄像头的工作寿命。5)连接电缆系统采用屏蔽电缆作为连接线束,并隐蔽布线,有效避信号干扰,其中插接器均采用航空接头,其防护等级高,有较高的防振性能,保障了系统的电路运行15。2.3 货车转弯参数的模拟与计算2.3.1 转弯角度的模拟调制好陀螺仪后,我们需要求出开启系统的最小角度,即货车在最大转弯半径时的角度。假设我们要使用的对象是在十字交叉路口转弯,也就是它最后会转弯90,那它走过的轨迹可以看作四分之一个圆。我们需要的最小角就是货车行驶到这个半圆某点的切线与车辆转弯前行驶方向的夹角。根据国家规定,大货车长度一般在7到7.2米之间,生活中7.2米的居多。我国的城市道路常见的大车道是八车道,八车道中每条车道3.5米,一共28米。八车道的中间是宽5米的绿化带。我们可以以这些参数建立图模型如图2.3所示:图2.3 货车转弯模拟图示当货车整个车身沿着转弯轨迹行走时,我们可以认为它进入转弯状态。通过建立数学模型利用cad模拟,我们得出此时货车车头转角为20。一般货车的车头和车箱是分开由铰链连接的,所以车头转弯在车箱之前,这个角度是可以满足系统开启的实时性要求的。2.3.2 内轮差及盲区面积的计算由于各种车型的参数不同,求出的内轮差(如图2.4)也不相同。这里选择生活中常见的东方天龙DEL4251A型车6轴货车,轴距为3.4+1.35+4.8+1.35+1.36,轮距为2.3,假设货车处于最大转弯,转弯半径为20.7。图2.4 车辆内轮差根据公式可以求出货车的内轮差为3;货车的转弯盲区最大面积为:式中j为货车转弯角度,rad;h为半挂车长度。2.4 传感器的选择2.4.1 超声波HC SR04HC SR04超声波模块的检测范围是2cm400 cm,根据我们模拟的警报范围3.6米,它可以满足测量距离的要求,精度可达3毫米。它的超声波由压电晶片振动产生超声波从trig触发端口发射出去,当超声波发射到目标身上反射回来,同样由trig端接收。如果trig端接收到从目标身上反射回来的超声波,那么就会由I/O口的ECHO输出一段高电平,通过发射和接收的时间间隔可以算出距离。从发射端到目标之间的距离(=高电平持续时间超声波声速(340 m / S)/ 2,测距原理如图2.5所示。HC SR04的接线有四根从引脚引出来的导线,分别是VCC 5 v电源线、接地线、触发控制信号输入线trig和回声信号输出线echo。图2.5 超声波测距原理2.4.2 角度传感器的选择基于本文研究的监控系统是在水平上行驶,选择的传感器只要满足能检测到二维平面上转动的夹角就可以,这类传感器有光栅角度传感器、陀螺仪、GPS等16。下面对比三种能够实现方向定位的技术优缺点如表1所示:表1 常见方向传感器优缺点技术优点缺点光栅角度传感器便于安装,测量精准适用于温度不高,偏向静态的环境,操作不便陀螺仪传感器测量精准,适应复杂环境,性能稳定体积偏大,安装要求高 GPS导航系统性价比高,体积小,重量轻依赖信号支持,反应偏慢,易受磁场干扰由于本论文研究旨在提高货车周围环境的安全,方向传感器应该安装在车头以及时判断,车头的工作环境光栅角度传感器无法适应,GPS性能不稳定,不能担当安全的使命。所以选择陀螺仪是最适合的。出于价格和功能的考虑,这里选择MPU6050陀螺仪传感器。2.5 本章小结本系统有效防范了货车转弯时由于盲区造成的危险,系统能够对汽车盲区进行无死角探测,并根据测角的信号做出是否触发蜂鸣器、视频显示等决策。根据蜂鸣器的蜂鸣方向提醒驾驶员车体的左右是否有存在危险,如果存在危险,由数码管可以看到目标和货车的距离。同时驾驶员通过视频能够及时了解车体周围的情况,做出相对安全的决策。在这一章主要介绍了硬件的布置以及转弯时两个重要参数的模拟和计算,同时根据这些参数选择了相应的传感器。下一章将介绍模块之间的连接实现以及与元件的对接。3 硬件实现及单元电路设计3.1 转角模块的实现角度传感器用来检测车身转弯角度,以确定是否需要开启超声波测距和摄像头工作。MPU6050与单片机之间是I2C通信,故需要接三根线,其中它与单片机的相关引脚连接为相同标号的连接。如图3.1所示:图3.1 角度传感器模块3.2 超声波模块的实现超声波传感器,采用脉冲捕捉原理进行测距,一共四个接口,与单片机有两个引脚相连,Trig触发端与普通i/o口连接,Echo与单片机断口引脚连接,如图3.2所示:图3.2 超声波模块3.3 蜂鸣器报警模块单片机的信号无法驱动蜂鸣器,故需要使用三级管放大电路构成驱动电路,如图3.3所示:图3.3 蜂鸣器模块3.4 显示模块当目标进入危险区且并继续靠近货车,可以看两者的距离。其中每个数码管是由8个发光二极管构成,在这里用来显示目标距离超声波测距仪的距离。如图3.4所示,距离显示模块由数码管构成,其中上端为位选信号,下端为段选信号,由于该系统i/o口资源有限,数码管需要使用动态刷新。图3.4 显示模块3.5 视频采集模块视屏的采集如图3.5,由单片机判断开启时,首先控制继电器打开,给红外线摄像头供电,摄像头开始工作,采集视屏后传输给显示器。 图3.5 视频采集模块3.6 视频显示模块视频显示模块如图3.6,显示屏接口采用RS485通信方式,与视屏采集端之间连接RS485芯片。使用二极管对显示屏采取一定的保护措施,并接上相应的电阻保持长距离的通信稳定。 图3.6 视屏显示模块3.7 电源模块单片机需要电压稳定的环境工作,这里选择线性稳压电源,如图3.7所示。其稳定性好、瞬态响应速度快、可靠性高17。电源模块中使用LM2940三端稳压器,为单片机提供稳定电压5V,最高输入电压26V。图3.7 电源模块的设计3.8 主控制模块的实现最小系统是52单片机,其性能与51单片机完全兼容。在这个最小系统上加上振晶、复位电路,录入程序后可以完成对整个系统的控制。 图3.8 最小系统图3.9 总设计图硬件电路原理总设计见图3.7,电路连接图见附录。本设计的主要决定驱动电路工作的元件是单片机 STC89C52、陀螺仪MPU6050、超声波传感器HC SR04。显示部分有距离显示和视屏显示,距离显示直接由单片机控制,视频显示中采集图像和显示图像都是由单片机控制的继电器控制,可以实现需要时才开启。图3.9 总设计原理图4 系统软件的结构设计对于软件的结构,首先是需要将分成三个大模块。其中视屏模块只需要控制继电器的开关即可;测角模块负责检测角度,即针对角度传感器的模块;另一个模块负责完成测距。除了这三个大模块,还有预设、显示、警报等小模块。这些小模块可以并入到大模块;两个分别独立的大模块中,其中测距模块是和警报在一起的,放在一起编写利于检查和调试,所以小模块并入测距模块是比较利于设计的。测距模块的编程中出现发射超声波和接收超声波,以及计算距离。所以小模块和测距子模块应当分成独立的模块,在一定的时间内,独立模块调用和接收预置程序、子程序。针对测角的模块,也是分为三个子模块,但是可以和测距模块共用一个时钟数据,最后由主程序调用到合并的模块中。4.1 软件设计思路本设计是要在货车转弯的状态下,对进入危险区域的目标发出警告和提供给司机距离数据。所以可以设定两个条件,即角度、距离。这两个条件构成的模块之间关系应该是与门关系,即同时满足这两个模块的条件,那这两个模块共同传输数据,驱动蜂鸣器发出警报。在目标靠近货车时,由超声波测距仪测距,通过A/D转换,由单片机控制显示管的段选、位选信号发送,提供数据给司机。由于本设计的测距最多到4米,是一位数的射程,所以可以每只数码管可以显示一个测距仪的数据。角度的测量需要程序计算,为方便代码检查,可以放在单独的一块,由主函数调用,在外部中断的时候接收返回的转角信号。货车监控系统的电路设计是以陀螺仪接收的中断程序和显示子程序为基础的。C语言程序可以实现许多困难的算法,汇编语言的运行效率比较高,可以较精确地计算时间。陀螺仪测量角度的程序的更加复杂的算法,我们要求汇编语言对计算程序的运行时间比较精确。本设计的控制程序使用C和汇编语言。4.2 货车盲区检测和警报电路的算法设计陀螺仪侧角的基本思路就是记住货车车头转角某一时刻,当车头出现转角,陀螺仪轴在相应的平面上发生位移,然后转换成角速度和加速度信号被接收。所以我们就可以利用积分公式计算出车头调转的角度。当开始在发生转角的时候我们就启动T0定时器芯片,然后我们就用定时器的功能来车头开始转角到转角不再增大的时间。当我们收到转角不再继续增大的信号,接收电路就是产生一个负面的跳,就会产生一个中断信号的请求INT0或INT1终端, 单片机外部中断请求,外部中断服务子程序的实现,根据时间的差异,求出该转角的大小。转角度数求出后由单片机存储再读取,并判断是否开启超声波和警报器。超声波启动,T0定时芯片同时启动,利用ECHO端记录高电平持续时间,求出目标与超声波测距仪的距离,进入测距仪警报范围,启动数码管。4.3 主程序流程图 我们把软件分为两部分,分别是主程序和中断服务程序。如图4.3所示。我们再在完成控制程序初始化的情况下,由传感器得到每个转角起始和终止、发射和接收的序列。图4.1 主程序流程5 调试本设计由陀螺仪测角模块、单片机模块、超声波测距模块、显示和报警四个模块组成的。在电路中模块越多,各芯片的运算越复杂,系统就越难调试。这里假设单片机驱动的电路是可以正常运行的,两个传感器是决定系统是否开启的条件,所以我们只要调试测角和测距功能正常,整个系统就可以正常工作。5.1 硬件调试硬件的调试首先是在不通电的条件下完成,检查连线是否正确,元器件的安装是否合理,元器件是否能通电等,然后再通电检查。检查都能通过了最后焊接电路。首先是减少不必要的连接错误(即连接的一端是正确的,与另一端要减少错误),检查接线图是否可以能够符合原理电路,设计电路布线,可以以组件(如运算放大器、三极管)为中心,这样不仅可以找出故障还会更少用导线,也容易连接其他的线路。为了保证整体的连接正常,在检查连接线的时候,同时也要使用万用表来检查线路中有电阻连接的设备,得到最好的测量,它可以检测一些“隐藏”错误。检查安装的组件:检查的关键组件,集成运算放大器、三极管、二极管、电解电容器等连接是否有错误,或者外引线短接,同时也检查焊接组件是否可靠。有必要指出,在焊接之前,有必要测试组件,可以确保组件能够正常工作,得到调试,以避免不必要的麻烦17。我们也要检查公共的接地端和电源的输入端,电路接通电源之前,还需要万用表检测组件之间是否短路,进行电源输入和检查,如果有任何错误,进一步检查的原因。电池供电的这种方式,当距离很大容易受到地面漫反射干扰的影响,所以获得抵抗不能太小,否则灵敏度会受到影响,如果有必要,可以添加滤波电容。经过几次调试,角度传感器没有误差,超声波把测试精度基本上能控制在1厘米左右。5.2 软件调试5.2.1 汇编作为能够直接和机器对话的语言,汇编语言简单易懂,但同时在编写时又很复杂,所以在程序设计时有明确的分块,因为作为低级语言它编写的代码量很大,如果其中除了任何小差错,很难被找到。那么就需要我们在编程中注释出每个小模块,方便调试不通过时,有明确的查找范围。汇编语言对于计算机有一定的针对性,即只针对一台计算机或者同一系列的计算机。汇编语言在单片机中应用比较广泛,它可以直接控制计算机的硬件设备,而且占的资源少,执行高效。因为这些优点,我们在对硬件编程时会常用到,是很适合硬件编程的程序设计语言。C52系列的单片机STC89C52 走上市场时间不是太久,但因为其优越的性能和很低的功耗被广泛用于智能系统中,比如车载、智能控制、机器人等高级产品中。其微控制芯片是CMOS8位的微控制器,存储器可以存储8K资源,保证单片机的高效运行,同时存储器是使用高密度非易失性存储器技术制造的。当然,为了与市场主流的51单片机接轨,它的引脚与51系列单片的引脚是相互兼容的。 目前很多计算机专业的人员程序设计选用的语言是C语言,作为流行通用的设计语言,它也备受计算机爱好者的喜爱,因为它不仅可以用来编写系统软件,也可以用来开发应用软件 18。C语言的编程有良好的可移植性,其库函数也十分丰富,编译效率高等特点决定了可以用它来编译单片机,对单片机开发及应用是很有前景的。通常软件的生命周期包括了很多活动,而在各个活动中都有可能产生错误,在长期的运行过程中可能会有功能不齐全、代码发生错误等问题19,因此,对软件调试是必要的。在传统意义上,测试被侠义地定义为测试程序代码。这里我们更愿意采用一种更为广义的测试定义:它包含所有生产优质产品的活动。对于一个好的产品,测试与其他阶段恰当的交互是必不可缺的20。 C52单片机的编程可以使用单片机编程软件中的KEILuVISION2,KEILuVISION2可以同时支持汇编和C语言,甚至PLM。基于本设计会用到汇编和C语言,我们将选它作为编译工具和调试。它有很丰富的库函数,不仅支持51系列的单片机,对52单片机也适用,而且它可以编辑、编译,烧录程序给单片机也很方便,还支持程序仿真。5.2.2 调试过程把模块放在电路,连接到电源,检查程序能否达到自己的设计可以实现所需功能。假如结果与当初的设计思路是不一样的,首先检查硬件的问题,以保证测试时硬件整体是没有问题的。如果在检查硬件之后确定硬件和连接都没有问题,那可能是软件有问题。所以需要检查软件的一些部分,首先我们使用一个标准件来实验,看看检测到的数据和显示的数据是否一样,这里检查下来是一样的,说明我们的显示部分软件没有问题,我们检查编写、运行程序方面的软也是好的,最后检查一次代码,查了两遍后发现一些细节上的小代码忘了编写,同时查阅资料得知角度测量的方法还需要优化,否则当测量的角度太小的时候容易出现波动,检测得不够准确。,在修改程序后、我们又用卡曼波优化了陀螺仪的测角。然后就是检查超声波部分了,显示数码管是可以正常运行的,就是检测对象不利于超声波的反射。因为在前面我们已经确定了硬件是没有问题的,由此可以得出,我们再结合硬件的前提下在检查软件设备,这样我们可以很直观的找到那里有错误。调试结果如下:表5-1 第一次测试结果测试序号123456真实角度(度)306090120150180测试角度(度)286192121150180真实距离(m)0.250.551.002.503.504.50测得距离(m)0.320.460.752.502.360表5-2 调整后测试结果测试序号123456真实角度(度)306090120150180测试角度(度)306090120150180真实距离(m)0.250.551.002.503.504.50测得距离(m)0.240.550.992.503.5106 结 论本研究在最后的调试数据中满足了本论文最开始的初衷,整个调试过程是在相对理想的环境中测试的。本设计的主要模块是测角、测距、控制模块,这些模块的难点主要在软件编程部分,单片机采用C52系列的stc89c52单片机后选用12MHz高精度的晶振,较高的时钟振晶频率,我们可以大大降低系统的测量误差。在提供稳定电源时使用了两个保护电容器,和一个稳压电容,确保进入单片机的电压稳定。为了确认电源通路,在电源部分连上一个发光二极管,由于发光二极管的允许通过的电流很小,所以串联了一个电阻。在C52单片机上端口都接上拉电阻,防止遇到很大辐射时产生高电压破环电路,同时也增大了接口线路的电流,保证各电子元件得以正常运行。生产生活中,安全永远处于第一位,电路同样如此,只有安全的设计,才能保证它使用的可靠性和延长它的使用寿命。参考文献1袁建江,柴雷刚,林点点,温自源,杨旭.货车盲区检测系统J.智能计算机与应用,2017,7(06):70-72+75.2王晓光,肖峻.货车驾驶盲区障碍预警装置的研制J.武汉货车工业大学学报,1999(05):13-16.3赵宇峰. 货车后视镜盲区检测及预警关键技术研究D.郑州大学,2008.36 4晓宏.货车盲区探测系统J.货车维修,1998(03):24. 5王春燕,蔡凤田,杨英俊.国内外安全辅助驾驶研究发展动态J.云南交通科技,1999(05):13-14.6徐友春,王荣本,李兵,李斌.世界智能车辆近况综述J.货车工程,2001(05):289-295.9 李华.MCS-51系列单片机实用接口技术M.北京:北京航空航天大学出版社, 1993. 6: 87-9310 陈光东.单片机微型计算机原理与接口技术(第二版)M.武汉:华中理工大学出版社,1999.4:212511邓晓旭,苗瑞.光栅角度传感器干涉计量原理J.森林工程,2000(04):30-31.12陈三清,张靖.基于Android智能手机的方向传感器应用开发J.无线互联科技,2017(18):58-60.13 郝俊.汽车智能辅助驾驶系统的发展与展望J.科技与创新,2015(24):39-40. 14 福特盲点信息系统(BLIS)J.产品可靠性报告,2011(10):126.15 赵燕传感器原理及应用M北京:北京大学出版社2010.2:5916 祁树胜.传感器与检测技术M.北京:北京航空航天大学出版社,2010.8:8617 葛中海.开关电源实例电路测试分析与设计M. 北京:电子工业版社,2015.8:218 张建军,史银龙,刘胜厚.C语言程序设计M.北京:海洋出版社,2010.719 王英龙等.软件测试技术J.北京:清华大学出版社,2009.9:6520 (印)迪西肯(Desikan,S.)等M.软件测试原理与实践;韩柯等译.北京:机械工业出版社,2009.2 附 录代码/数码管段选定义 0 1 2 3 4 5 6 7 8 9uchar code smg_du=0x28,0xee,0x32,0xa2,0xe4,0xa1,0x21,0xea,0x20,0xa0, 0x60,0x25,0x39,0x26,0x31,0x71,0xff; /断码 uchar dis_smg8 =0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8; /数码管位选定义sbit smg_we1 = P34; /数码管位选定义sbit smg_we2 = P35;sbit smg_we3 = P36;sbit smg_we4 = P37; sbit c_send = P32;/超声波发射sbit c_recive = P33;/超声波接收 sbit beep = P23; /蜂鸣器IO口定义uchar smg_i = 3; /显示数码管的个位数bit flag_300ms ; long distance; /距离uint set_d; /距离uchar flag_csb_juli; /超声波超出量程uint flag_time0; /用来保存定时器0的时候的 uchar menu_1; /菜单设计的变量 /*1ms延时函数*/void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j120;j+); /*处理距离函数*/void smg_display()dis_smg0 = smg_dudistance % 10;dis_smg1 = smg_dudistance / 10 % 10;dis_smg2 = smg_dudistance / 100 % 10 & 0xdf; ; /*把数据保存到单片机内部eeprom中*/void write_eeprom()SectorErase(0x2000);byte_write(0x2000, set_d % 256);byte_write(0x2001, set_d / 256);byte_write(0x2058, a_a); /*把数据从单片机内部eeprom中读出来*/void read_eeprom()set_d = byte_read(0x2001);set_d = 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 + ;/加1if(set_d 400)set_d = 400;if(key_can = 3)set_d - ;/减1if(set_d = 1)set_d = 1;dis_smg0 = smg_duset_d % 10; /取小数显示dis_smg1 = smg_duset_d / 10 % 10 ; /取个位显示dis_smg2 = smg_duset_d / 100 % 10 & 0xdf ; /取十位显示dis_smg3 = 0x60; /awrite_eeprom(); /保存数据 /*报警函数*/void clock_h_l()static uchar value;if(distance = set_d)value +; /消除实际距离在设定距离左右变化时的干扰if(value =35)beep = beep; /蜂鸣器报警else value = 0; beep = 1;/取消报警 /*数码位选函数*/void smg_we_switch(uchar i)switch(i)case 0: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break;case 1: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break;case 2: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;case 3: smg_we1 = 1; smg_we2 = 1; smg_we3 = 1; smg_we4 = 0; break; /*数码显示函数*/void display()static uchar i; i+;if(i = smg_i)i = 0;smg_we_switch(i); /位选P1 = dis_smgi; /段选 /*小延时函数*/void delay()_nop_(); /执行一条_nop_()指令就是1us_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /*超声波测距程序*/void send_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个888TR0 = 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 400) /距离 = 速度 * 时间distance = 888; /如果大于4m就超出超声波的量程 /*定时器0、定时器1初始化*/void time_init() EA = 1; /开总中断TMOD = 0X11; /定时器0、定时器1工作方式1ET0 = 0; /关定时器0中断 TR0 = 1; /允许定时器0定时ET1 = 1; /开定时器1中断 TR1 = 1; /允许定时器1定时 /*主函数*/void main()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 = 150)value = 0;flag_300ms = 1;#include cry1602.h#inc
展开阅读全文