引言
随着国民经济的高速发展,我国汽车的拥有量在大幅增加,造成道路拥堵,交通事故频发,给人们的生命和财产安全带来了巨大的损失。安全驾驶成为大家关注的焦点,其中汽车防撞系统(Collision Avoidance System,CAS)的设计和需求显得非常重要和迫切。针对这种情况,设计一种响应快、可靠性高且较为经济的汽车防撞报警系统势在必行。
超声波作为一种频率超过20 kHz的机械波,其指向性强,能量消耗缓慢,在介质中传播距离远,因此超声波测距法是最常见的一种距离测量方法。利用超声波检测距离,设计比较方便,计算处理也较简单,而且精度也较高。本设计采用AT89C52单片机作为主控器,结合超声波测距原理,设计了汽车倒车防撞报警系统。该系统采用软、硬件结合的方法,具有模块化和多用化的特点。
1 超声波的测距原理
本系统选用的是压电式超声波传感器。超声波测距原理有两种方式:共振式和脉冲反射式。因为共振式的应用要求复杂,在此使用脉冲反射式。超声波测距原理如图1所示。
图1中被测距离为H,两探头中心距离的一半用M表示,超声波单程所走过的距离用L表示,由图中关系可得:
式中:v为超声波的传播速度;t为传播时间,即为超声波从发射到接收的时间。
将式(4)代入式(3)可得:
由此可见,要想测得距离H,只要测得超声波的传播时间t即可。[page]
2 系统的实现
根据设计要求并综合各个方面因素,可以采用AT89C52单片机作为主控制器,用动态扫描实现LCD数字显示,超声波驱动信号用单片机的定时器完成,其具体的系统框图如图2所示。
该系统主要由单片机系统及显示电路、超声波发射电路和超声波检测接收电路等部分组成。采用AT89C52来实现对CX20106A红外接收芯片和 TCT40-10系列超声波转换模块的控制。
其中超声波接收电路使用集成电路CX2-0106A,可用来完成信号的放大、限幅、带通滤波、峰值检波和波形整形等功能。显示器件采用的是LCDl2864显示器,并选用D18820温度传感
器进行温度检测,实行温度补偿。主控器AT89C52单片机是一种低功耗、高性能CMOS 8位微控制器,具有8 KB的系统可编程FLASH存储器。与AT80C51引脚和指令完全兼容。拥有1个8
位CPU,1个片内振荡器及时钟电路,3个16位定时/计数器,21 个特殊功能寄存器,4个8位并行I/O口,共32条可编程I/O端线,1个可编程全双工串行口,8个中断源。
本设计的实物如图3所示。
3 系统的软件设计
系统软件部分包括主程序、中断子程序和其他子程序。主程序流程图如图4所示,其中中断子程序的核心代码如下:
4 结语
此倒车防撞报警系统,可以应用于汽车倒车等场合,提醒驾驶员在倒车时能有效地避开可能对倒车造成危害的障碍物和行人。本系统针对普遍存在的抗干扰性问题加强了软硬件处理措施。硬件方面例如把超声波接收电路用金属壳屏蔽起来,提高了系统的抗干扰能力;软件方面系统结合使用 DS18820温度传感器实现温度补偿矫正,使系统可以正常工作在任何温度下,误差都不会超过指定范围。并用带字库功能的LCDl2864液晶实时显示距离,当满足距离条件时,蜂鸣器蜂鸣工作提示驾驶员,具有较强的实用性,且硬件结构简单,体积小,使用方便。但该系统的测量距离有限,只有在10~300 cm距离内有效,需要进一步的改进和提高。
关键字:AT89C52 超声波测距 倒车防撞报警系统
引用地址:
基于AT89C52的超声波测距倒车防撞报警系统设计
推荐阅读最新更新时间:2024-03-16 13:03
AT89C52单片机与ARINC429航空总线接口设计
摘要:DEI1016是一种可支持ARINC429航空总线协议的串行接收、发送器件。文中介绍了DEI1016的主要功能和工作原理,给出了DEI1016的数据收发过程,同时重点介绍了DEI1016与AT89C52单片机接口电路的设计方法。
关键词:DEI1016;接收;发送;接口设计;AT89C52
1 DEI1016的主要功能
DEI1016是Device Engineering Incorporated 生产的一种可支持ARINC429航空总线协议的串行接收、发送器件。该器件的主要功能如下:
●串行数据字长为32或25位;
●串行数据速率为100kbps或12.5kbps;
●具有独立的收、发电路;
●两个独立的接
[应用]
基于51单片机超声波测距带语音播报JQ6500
功能说明: 1.本设计采用STC89C52单片机作为主控制器; 2.LCD1602液晶显示测量的距离和温度; 3.带有温度补偿功能(DS18B20传感器); 4.测量范围0.02m~4m,精度为0.01m; 5.带实时语音播报功能; 6.按键功能:按键2:加报警值按键3:减报警值按键1:设置按键(只有在按下设置的时候才可以加减报警值),在未按下按键1时,按下按键3播报测量距离。 实物制作图: 原理图: uchar ONE2 ={0x7E,0x04,0x03,0x00,0X0C,0xEF};//米 uchar ONE3 ={0x7E,0x04,0x03,0x00,0X0B,0xEF};//点 uchar ONE4 ={0x7E
[单片机]
编的PIC16f1936的超声波测距的程序
一个很久以前编的PIC16f1936的超声波测距的程序。共大家参考: 1、开发环境:mplab X,proteus 8.6仿真。 2、部分程序注释,在实物板子上有效。 3、只有测量距离,LED显示距离,(单位是0.1mm),距离中有被屏蔽部分距离。可供参考。 4、这个网上的便宜的模块,一个很大的短板:测距需要平整的面。对于人脸等,衣服等较差。 制作出来的实物图如下: 仿真原理图如下(proteus仿真工程文件可到本帖附件中下载) 单片机源程序如下: #include xc.h #include system.h #include stdint.h /* For uint8_t definition */ #i
[单片机]
AT89C2051单片机结合温度补偿的超声波测距系统设计
0 引言 超声波是一种在弹性介质中的机械震荡,它是由与介质相接触的震荡源所引起的,其频率在20kHz以上。由于超声波的速度相对于光速要小得多,其传播时间就比较容易检测,并且易于定向发射,方向性好,强度好控制,因而利用超声波测距在很多距离探测应用中有很重要的用途,包括无损检测、过程测量、机器人测量和定位,以及流体液面高度测量等。利用单片机控制超声波检测往往比较迅速、方便、计算简单、易于实现,并且测量精度高。 1 系统设计 超声波测距的最远距离和分辨能力,不仅需要良好的换能器,也需要合理的驱动电路及回波探测电路。对发射而言,为了使电能到机械能的转换效益最大,换能器必须工作在它的共振频率处。对接收电路而言,为了使机械能到电能的转换效率最
[单片机]
51单片机(AT89C52)控制双路继电器
#include reg52.h #define uchar unsigned char #define uint unsigned int #define DELAY 500 sbit relay=P2^0; void delay(uint z) //1ms { uint x,y; for(x=z;x 0;x--) for(y=111;y 0;y--); } void main() { while(1) { relay=1; delay(DELAY); relay=0; delay(DELAY); } }
[单片机]
新型嵌入式超声波测距系统
0 引言 在工业测距场合中,由于工作要求和复杂环境常常采用非接触测距的方法。激光、红外线和超声波是非接触测距中较常采用的测量介质。激光测距虽然测距精度高,操作简单,但是受环境的影响比较大,且系统检测不易维护,价格也比较昂贵。 红外测距易受环境光照度和光线色彩的影响,而且测量精度不高。相比较前两者,超声波是机械波,具有不受光线影响,不受电磁干扰,成本低等特点,能够定点和连续测量物位,在有灰尘、烟雾、有腐蚀等恶劣环境下具有较好的适应能力,广泛应用于物位测量、机械手控制、倒车雷达、机器人避障以及其他一些工业现场等方面。因此,近些年来,人们对超声测距进行了很多的探讨和研究。目前所研究的超声波测距传感器测距范围普遍较小,线性度和重复性较
[测试测量]
基于AT89C52单片机实现并行打印接口数据采集系统的应用方案
在道路、桥梁施工等建筑领域中,有很多从国外引进的原料加工控制设备。这些设备上的操作系统并不是我们常见的WINDOWS操作系统,尽管它可以实现数据打印功能,但这些数据无法用文件存储到WINDOWS操作系统的管理PC机中,因此不便于对这些数据进行统计和分析,严重影响了管理效率。为此,需要对这些设备进行功能扩充,使之能够按要求对所需数据进行存储,并提供相应的数据分析和处理功能,从而方便管理部门工作,提高生产效率和项目的管理质量。 方案分析 在不影响原有设备正常工作的前提下,完成并行打印机的数据采集功能,考虑有以下2种方案: (1)在数据输出到打印纸后,利用扫描仪识别打印纸上的数据,并将识别后的数据输入到管理PC机的数据管理软件中。
[单片机]
超声波模块测距51程序_单片机超声波测距c语言
超声波检测原理 超声波测距的程序流程图 程序如下: //超声波模块程序 //超声波模块程序 //Trig = P2^0 //Echo = P3^2 #include #define uchar unsigned char #define uint unsigned int // void delay(uint z) { uint x,y; for(x=z;x 0;x--) for(y=110;y 0;y--); } // void delay_20us() { uchar a ; for(a=0;a } //**********************************************************
[单片机]