5.2 超声波发射接收子程序
系统软件设计时,利用定时器T0定时60ms,当定时器T0发生中断时,通过P1.0口发射40KHz的超声波,为了避免直达信号的干扰,需要在超声波发送后延时一段时间再开启定时器T1开始计时,当超声波接收换能器接收到回波以后,立即停止计时。接收到的回波经过CX20106检波放大变换后送到单片机的P3.3端口,通过指令while(CSBIN==0)来判断是否接收到回波。需要注意的是当距离过远的时候,当定时器T1的溢出还没有收到回波信号时也必须对T1中断进行处理,此时,可以关闭外中断1,并将测距成功标志位置零,准备开始重新测量。
5.3 温度测量子程序
DS18B20是在一根I/O进行数据的读写工作的,因此,对数据的读写有着严格的时序要求。其工作时序包括:初始化时序、写时序和读时序。测温子程序的具体工作流程是:初始化 跳过ROM操作指令 初始化 跳过ROM操作命令 读取温度寄存器。初始化的实质就是将DS18B20进行复位。由于本系统只需要一个温度传感器,因此不需要进行ROM匹配,只需跳过ROM操作命令即可,最后通过单片机对温度寄存器内的数据进行处理就可得到实际温度。但必须注意当温度为负时,需要对数据取补码。
5.4 距离计算子程序
当温度和超声波往返时间均测量出来后,就可利用C语言编程来实现距离计算。为了使测量更加精确,须采取温度补偿在软件中加以校正。当温度大于零时,C=331.4+0.61×temp×0.0625,当温度小于零时,C=331.4-0.61×temp×0.0625,然后根据距离计算公式: 即可计算出车辆间的相对位移[11]。
5.5 显示报警子程序
当系统测出汽车与被测物之间的距离时,系统要根据不同的距离值做出不同的响应[12]。当距离小于1m时为危险距离,红灯亮的同时扬声器发出报警声音;当距离大于1m小于5m时表示相对安全距离,此时黄色灯亮;当距离大于5m时为安全距离,此时绿色灯亮。最后,将测得的距离和温度送至LCD显示。
6. 系统仿真与调试
本系统的仿真借助于一款目前较好的单片机系统仿真软件Proteus,它的功能非常强大,使用起来也十分方便。通过仿真验证设计的正确性并做出分析。仿真时。首先需要在软件中找到设计所需的元件,然后连接好原理图,设置好各个元件的参数值,再导入HEX文件以后就可以进行仿真了。
首先检测P1.0端口是否有发射信号的产生。仿真时P1.0一直显示的是低电平状态,这时必须用示波器来查看,其波形图如图12所示。
图12 发射信号波形图
从上图看出,P1.0口每隔60ms发送一次40kHz的超声波信号,与系统软件程序设计一致。
LCD显示模块仿真结果如图13所示。
图13 系统LCD显示模块仿真
仿真时,如果P3.3检测到低电平即认为接收到超声波反射信号,但在proteus仿真元件库里面并没有CX20106A模块,因而,可在程序设计时在超声波发射一段时间以后将P3.3置于低电平使T1停止计时,模拟该端口获得了返回信号时的状况,这时显示的测量值为0.113m,而温度为27.0°C,通过调节DS18B20的温度大小可以测试显示温度正确与否,查看距离是否有变化。从图中可以看出显示的温度就是DS18B20的测定温度值。软件仿真的结果说明软件设计非常成功。
7. 结束语
本文首先介绍了公路汽车防撞系统的发展状况,然后利用AT89C51单片机研究并开发了一套汽车追尾防追尾报警系统。本系统工作稳定、操作简单、数据显示直观,是一种主动安全系统,能够实时测量和显示车辆间的相对距离,并根据危险程度发出不同的信号供驾驶员参考。而且价格低廉、具有有良好的性价比,在一定程度上能够有效地减少汽车尾追现象的发生,对提高交通安全具有重要意义,具有一定的研究意义和应用价值。 51单片机的汽车防追尾报警系统设计+源码+仿真电路图(8):http://www.youerw.com/zidonghua/lunwen_503.html