利用US-100超声波传感器测距的核心代码

一、US-100的电气参数:

工作电压   DC2.4V~5.5V

静态电流  2mA

输出方式  电平或UART


二、利用US-100电平模式测距核心代码


1、启动检测:

/*启动测距信号,只需要在 Trig/TX 管脚输入一个 10US 以上的高电平,系统便可发出 8 个 40KHZ 的超声波脉冲,然后检测回波信号。
当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过Echo/RX 管脚输出*/
 void  StartModule()               
   {
      TRIG=1;                            
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_();
      _nop_(); 
      _nop_(); 
      _nop_(); 
      _nop_();
      TRIG=0;
   }


 2、计算距离: 

 /**************************************************
 US-100超声波测距模块,模块将距离值转化为 340m/s 时的时间值的 2倍,通过 Echo 端输出一高电平,可根据此高电平的持续时间来
计算距离值。即距离值为:(高电平时间*340m/s)/2。
********************************************************/
	  void Conut(void)	    //计算距离
	{
	  while(!ECHO);		    //当RX为零时等待,不为零是退出循环,执行下一行程序,给TR0赋值1,开启计数器。
	  TR0=1;		    //开启计数
	  while(ECHO);		    //当RX为1计数并等待(ECHO引脚持续输出高电平时),当ECHO为低电平退出循环,给TR0赋值0,关闭计数器。
	  TR0=0;		    //关闭计数
	  time=TH0*256+TL0;         //读取脉宽长度time(TH0占八位,TL0占八位,一共16位,2^8=256,所以time=TH0*256+TL0)
	  TH0=0;                    //计数器重新初始化
	  TL0=0;
	  S=(time*1.7)/100;         //(高电平时间*340m/s)/2,通过计算算出来是CM
	}
/************************************************************************/




  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值