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

来源:互联网 发布:linux nano 怎样保存 编辑:程序博客网 时间:2024/05/29 07:22

一、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}/************************************************************************/




2 0
原创粉丝点击