HC-SR04超声波测距模块的正确理解

        今天,在阅读关于HC-SR04超声波测距模块的51单片机程序时,比对相应参考资料,发现一个矛盾的地方,一时间想了好久,才有了一点眉目,特此记录。

       主函数部分代码如下:

    while(1)
    {
        StartModule();
        while (!gEcho);                        // 当RX为零时等待
        TR0 = 1;                            // 开启计数
        while (gEcho);                        // 当RX为1计数并等待
        TR0 = 0;                            // 关闭计数
         MesureDistance();                    // 计算距离并显示
        delay100ms();                        // 以100ms为测距周期
    }

        而用户手册上说:

   


即有信号返回才输出高电平信号。

        这句话的意思很显然表示,如果没有信号返回,就不输出高电平。那么程序中“while (!gEcho);”,必然一直等待,整个程序不可能正确执行。   

        实验表示,程序没有问题,那么问题只可能出在使用说明书上。正确的解释应该是:

      1.给超声波模块接入电源和地。
      2.给脉冲触发引脚(trig)输入一个长为20us的高电平方波

      3.输入方波后,模块会自动发射8个40KHz的声波,与此同时回波引脚(echo)端的电平会由0变为1;(此时应该启动定时器计时)
      4.当超声波返回被模块接收到时,回波引脚端的电平会由1变为0;(此时应该停止定时器计数),定时器记下的这个时间即为超声波由发射到返回的总时长。(如果长时间没有接收到超声波返回信号,即超声波测距超限,该引脚也会回零,以方便下次测量,不然又会在程序中的“ while (gEcho);”一直死循环,无法继续。
      5.根据声音在空气中的速度为344米/秒,即可计算出所测的距离。
      

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值