基于HC-SR04超声波模块实现“倒车雷达”防撞系统

发布时间:2023-01-31  

具体功能实现

将遮挡物放置HC-SR04前,可以将超声波模块和遮挡物之间的距离展示在4位数码管上;如果两者之间的距离小于5cm,则LED灯(P2^7)亮起。

器件

HC-SR04超声波模块,4位数码管,LED灯,4根杜邦线

超声波测距展示图:

当距离小于5cm时:


此时超声波和遮挡物的距离为4.5cm< 5cm,所以LED(P2^7)点亮。

当距离大于5cm时:

此时超声波和遮挡物的距离为15.6cm,LED灯熄灭


知识介绍

超声波模块(HC-SR04)

以上是该模块测距的工作原理:由Trig引脚发送一个10us的高电平信号,此时模块内部会自动发送8个40khz的脉冲信号,最后声音返回的信号会传送至Echo引脚,利用距离、时间和速度的公式可以得出两者之间的距离

HC-SR04引脚定义图

该项目代码中,Trig口接至P2^1 , Echo接至P2^0,VCC接3.3v,GND接地

超声波测距公式及原理

测试距离 = (高电平时间 * 声速(340m / s)) /2

测试距离最终要除于2的原因是经历了一个来回,相当于走了原本距离的两倍

定时中断系统

外部中断:

STC89C52有4个外部中断;

STC89C52的外部中断有两种触发方式:

下降沿触发和低电平触发

下降沿触发:当按键按下不松手时只触发一次

低电平触发:当按键按下不松手时会持续触发

中断号:

主函数代码(C语言)KEIL5实现

#include


/*     自定义变量类型    */


typedef unsigned char uchar;   //0~255


typedef unsigned int uint;     //0~65535


sbit Echo = P2^0;


sbit Trig = P2^1;


uchar flag;


uchar date_distance[5];


uchar count;


/* 用于控制数码管的引脚 */


sbit LSA = P2^2;


sbit LSB = P2^3;


sbit LSC = P2^4;


uchar LSA_NODE1[] = {0,1,0,1,0,1,0,1,0};


uchar LSB_NODE1[] = {0,1,1,0,0,1,1,0,0};


uchar LSC_NODE1[] = {0,1,1,1,1,0,0,0,0};


//共阴数码管码表 0-F


uchar SMG[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0X00};


//延时10us


void delay_10us(uchar i)


{


   while(i--);


}


//延迟1ms


void delay_ms(uint c)   //误差 0us


{


   uint a,b;


   for(;c>0;c--)


       for(b=102;b>0;b--)


           for(a=3;a>0;a--);


}


/* 数码管选择函数 */


void init_smg(uchar i)


{


   LSA = LSA_NODE1[i];


   LSB = LSB_NODE1[i];


   LSC = LSC_NODE1[i];


}


//初始化定时器


void init_timer()


{


TMOD = 0x11; //打开定时器0 1


//初始化定时器 0


   TH0 = 0x00;


   TL0 = 0x00;


   EA = 1;


   ET0 = 1;


   //TR0 = 1;


//初始化定时器 1


TH1 = 0xF8; //定时2ms


   TL1 = 0xCD;


   ET1 = 1;


   TR1 = 1;


}


//计算距离


void count_distance()


{


//s = 340m/s * time us /2 = 170*time *10^-6 m = 0.17*time mm


uint distance = (TH0*256 + TL0*1)*0.17;  //单位mm


if(distance<50)


{


P2_7 = 0;


}


else {


P2_7 = 1;


}


TH0 = 0;


TL0 = 0;


date_distance[1] = distance%10000/1000;


date_distance[2] = distance%1000/100;


date_distance[3] = distance%100/10;


date_distance[4] = distance%10/1;


}


void display()


{


uchar i;


for(i = 1;i<=4;i++)


{


if(i==1)


P0 = SMG[date_distance[i]] |0x80;


else


P0 = SMG[date_distance[i]];


delay_ms(1);


P0 = 0x00;


}


}


void main()


{


init_timer();


while (1)


{


while(!Echo); //等待Trig发出


TR0 = 1;        //开始计时


while(Echo);      //当Trig发出时,Echo为高电平


TR0 = 0; //终止计时


count_distance();


}


}


//定时器 1 用来数码管显示数据和发射超声波信号


void timer1() interrupt 3


{


TR1 = 0; //终止定时


TH1 = 0xF8; //定时2ms


   TL1 = 0xCD;


count ++;


display();


if(count>100)   //每200ms启动一次超声波模块


{


count = 0;


//启动超声波模块


Trig = 1;


delay_10us(2);


Trig = 0;


}


TR1 = 1;


}


问题解答

Q:

为什么数码管不是显示完整的静态数?

A:

因为数码管显示扫描的速度过慢,只有当扫描的速度足够块,才能“欺骗”眼睛,也就是将延时的时间修改短一些。

如果想要数码管动态显示,只需要将delay_ms里面的时间修改为500即可。

Q:

为什么数码管不能实时更新显示数据,而是按一下RESET的键才能显示当前距离?

A:

解决的方法如下:将数码管要显示的数据赋值给数组,数组将数据进行短暂的存储,以至于数码管有数字可以显示,如果出现问题中的情况,很大原因是因为直接调用数码管的库函数进行显示

Q:

如何通过定时器得到测量距离?

A:

定时器0的初始值TH0和TL0同时设置为0x00,并且此时的TR0=0,也就是定时器还没开启。当Trig发送信号后,Echo开始接受高电平信号,此时开启TR0=1,当Echo恢复低电平时,TR0=0关闭定时器;此时可以得到TH0和TL0的值,将两者合并即可。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    信号,并通过接收器接收经液体流过后的反射波。发送的超声波通过液体,同时由流体中的颗粒反射并散射回传感器。 频率变化测量:接收到的反射波经过频率变化后,超声波传感器会测量变化后的信号频率。根据多普勒效应,频率......
    芯片的热式气体质量流量计方案得益于芯片本身的高信噪比、低功耗、低成本等优势,逐步成为目前的主流方向。 N.A. Djuzhev等学者提出了一个双模式测量系统,热量模式和风速模式,开发宽量程气体流量传感器。在低......
    的便携扫描仪的几乎只有智能手机那么大,但图像质量却媲美几年前昂贵的大型高端影像扫描系统。意法半导体的STHVUP64超声发射器驱动检测仪器的压电式变送器(传感器),提高了成像灵活性,增加......
    像质量优化变得更加灵活。STHVUP64的驱动电流高达 ±400mA,可以驱动高速传感器,实现多种成像模式。高驱动电流还有助于实现最短 5ns 的脉冲持续时间,提高对传感器的控制精度,最大限度地强化图像细节。变送器支持连续波(CW......
    控制技术和Ultrahaptics超声波触觉反馈技术,可轻松识别、解读驾乘者的每个手势动作,并通过微型扬声器发出的立体超声波予以驾乘者触觉反馈。 DS Aero Sport Lounge舱内手势识别以及超声波反馈传感器......
    正式发布了基于毫米波雷达的车载手势识别解决方案。该方案中的手势识别传感器位于尾门上方,可通过手部的左右挥动打开车门。 超声波雷达 2020年2月,DS在日内瓦车展上推出的Aero Sport Lounge概念车,集成了Leap Motion体感......
    输速率可高达 10M/s,在高速模式下具有比 JTAG 更加可靠的性能。因此本文中采用 SWD 接口进行程序的下载和调试。 数据采集模块的电路设计 在实际应用中需要对温湿度和风速这三种主要环境因素进行实时的监测,为此分别设有温湿度采集模块和风速传感器......
    这三种主要环境因素进行实时的监测,为此分别设有温湿度采集模块和风速传感器模块,通过实测值来完成对作物腾发量的预测。 1)温湿度采集模块 图6:DHT11 传感器......
    低功耗毫米波雷达在泊车辅助应用中优于超声波的原因;当今的泊车系统主要使用了超声波传感器,这是一种可以感应附近物体的低成本解决方案。尽管这种技术已发展成熟,但是原始设备制造商 (OEM) 必须......
    串尚未发射完,这样导致先发射出的脉冲产生的回波将到达接收端,影响测距结果,造成测距盲区增大。74HC04(U1)的U1a~U1e组成超声波脉冲驱动电路,可提高驱动超声波发送传感器的脉冲电压幅值,有效......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>