其他分享
首页 > 其他分享> > 多点超声波测距报警系统

多点超声波测距报警系统

作者:互联网

基本功能包括:

       为了使移动小车能自动避障转弯,就必须在小车上加装测距系统,为了能及时获取距障碍物的距离和方向信息; 制作了三方向(前、左、右)超声波测距系统,就是为小车提供一个有效的运动距离信息。         在超声波测距中,通常因温度和时间检测的误差,使得测距的精度降低,为此,可以在小车上增加温度补偿功能。         本次制作完成的,只是三个超声波测距延时,没有安装到小车上,后续将陆续实现更多的功能。。。

超声波模块介绍

             超声波模块原理图      相关超声波测距参考程序 //超声波声明
char flags=0;
//超声波距离有效
char flag1s=0;
//计算时间
uint time=0;
//计算距离
ULint L_=0; //温度值
int Temp=0; //定义 超声波 管脚
sbit RX_csb=P1^2;  //对照实物修改
sbit TX_csb=P1^1;  //对照实物修改 //初始化 超声波模块
void Init_ultrasonic_wave()
{
    TX_csb=0;             //关发射模式
    TH0=0;                   //定时器0
    TL0=0;
    EX0=1;                 IT0=1;                   //外部中断
    EA=1;                   //总中断开启   
} //超声波启动
void StartModule()
{
    TX_csb=1;           //启动模块
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();          //延时
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    TX_csb=0;    //关闭模块
} //做计算,得到有效距离
void Conut()
{
     time=TH0*256+TL0;
     TH0=0;
     TL0=0;
   L_=(time*1.67)/100;              if(L_>300||flags==1)
     {
        flags=0;
        flag1s=0; //无效
        L_=0;
     }   
     else if(L_<=500)
     {
        flag1s=1; //有效
     }
}
制作完成的三向测距实物                                                有相关探讨问题,可以留言

标签:TX,超声波,csb,多点,模块,nop,测距
来源: https://www.cnblogs.com/xmdz/p/14408691.html