直接上代码,原理不做多解释了,基本原理就是利用发射一段脉冲出去,然后计算脉冲在空中的来回时间间接测出距离,不同模块的测距范围不一样,本文使用的模块范围在2cm~450cm左右,其他的都在代码里,暂时还没做过多的测试。

SRF05.c

// 超声波测距模块:HY-SRF05
// 精度:3mm→17.6us     62.5us→10.6mm
// 最小测距:2cm→117.6us
// 最大测距:4.5m→26.47ms
// Trig脚触发发射8个40khz的方波,
// us/58=cm或us/148=inch
// 或者距离=高电平时间*声速(340m/s)/2
// 周期60ms#include "SRF005.h"sbit Pin_trigger = P3^2;
sbit Pin_echo = P3^4;
static unsigned int EchoTmCount;
static unsigned int setRchoTmDelay;
static unsigned int EchoTmCountBackUp;
/*33MHz--0.03us不确定的需要用逻辑分析仪或示波器抓取,确保>10us
*/
static void SRF005_delay10us()
{int i=0;for(i=0; i<1*100/3; i++){   //~14us}
}
/*触发信号,10us以上的高电平信号
*/
void SRF005_trigger(void)
{Pin_trigger = 1;SRF005_delay10us();Pin_trigger = 0;EchoTmCount = 0; //计数清零重新开始setRchoTmDelay = 85/2;   //85ms后再去读echo的高电平时间
}
/*echo高电平时间计时,放在周期为62,5us的定时器中
*/
void SRF005_EchoCountTm(void)
{if(Pin_echo){EchoTmCount++;}
}
/*初始化超声波模块
*/
void Initialize_SRF005(void)
{GPIO_InitTypeDef GPIOinitStruct;//触发脚GPIOinitStruct.Mode = GPIO_PullUp;  //GPIOinitStruct.Pin = GPIO_Pin_2 | GPIO_Pin_4;GPIO_Inilize(GPIO_P3,&GPIOinitStruct);   Pin_trigger = 0;
}
/*获取超声波测距距离,返回长度,单位cm
*/
unsigned int getEchoTm(void)
{return (unsigned long)EchoTmCountBackUp*625/580;   //us/58=cm
}
/*获取echo高电平时间计数,延时时间到再赋值放在2ms计时
*/
void setRchoTm(void)
{if(setRchoTmDelay){setRchoTmDelay--;if(setRchoTmDelay == 0){EchoTmCountBackUp = EchoTmCount;}}
}

SRF05.h

#ifndef _SRF005_H
#define _SRF005_H#include "stc15w.h"
#include "intrins.h"
#include "GPIO.h"void SRF005_trigger(void);
void Initialize_SRF005(void);
void SRF005_EchoCountTm(void);
unsigned int getEchoTm(void);
void setRchoTm(void);
#endif

硬件模块应用之超声波测距模块SRF05应用相关推荐

  1. 基于52单片机的超声波测距模块(hc-sr04超声波测距模块+1602液晶显示器)

    二年级课设做了超声波测障仪,用的是hc-sr04超声波测距模块+1602液晶显示器和52单片机. 由于自己之前的学习很是不牢固,在课设的时候没少走弯路,最后在第二个周的星期五做了出来,浪费了很多的时间 ...

  2. HC-SR04超声波测距模块介绍

    超声波简介 超声波是由机械振动产生的, 可在不同介质中以不同的速度传播, 具有定向性好.能量集中.传输过程中衰减较小.反射能力较强等优点.超声波传感器可广泛应用于非接触式检测方法,它不受光线.被测物颜 ...

  3. 超声波测距模块的使用

    超声波测距模块的使用 超声波测距模块: 超声波测距模块有好多种类型,目前比较常用的有URM37超声波传感器默认是232接口,可以调为TTL接口,URM05大功率超声波传感器测试距离能到10米,算是目前 ...

  4. 学习HC-SR04超声波测距模块,代码附带卡尔曼滤波

    硬件引脚 VCC-供5V的电压(一定要是5v) GND-接地 Trig-HC-SR04超声波测距模块上的触发引脚,用于向模块发送一个10微秒的高电平触发信号,触发模块开始进行距离测量 Echo-用于接 ...

  5. 利用51单片机+HC-SR04+51单片机制造超声波测距模块

    利用HC-SR04和51单片机制造超声波测距模块 完整的项目链接: https://github.com/linxinloningg/51_chip_core.git 硬件电路分析: 1.HC-SR0 ...

  6. 使用超声波测距模块控制LED灯

    本文章为你介绍如何使用Arduino开发板和超声波测距模块来控制LED灯的明灭. 所需硬件 -Arduino开发板 -LED -超声波测距模块 下面主要为大家说明一下超声波模块. 超声波传感器通过采用 ...

  7. HC-SR04超声波测距模块使用方法和例程(STM32)

    基于STM32和HC-SR04模块实现超声波测距功能 最近在学STM32做个简单的应用实践一下,顺便水一篇文章. 本文用的单片机是STM32F103C8T6,超声波测距模块是HC-SR04,显示测距结 ...

  8. stm32控制超声波测距模块HC-SR04

    引脚:PB15 TRIG,PB0 ECHO: 不同距离,LED对应不良.闪烁.亮状态,并通过串口发送到PC; TIM3定时中断,测出脉宽长度,没有像野火一样使用捕捉功能: 1.HS-SR04模块实物图 ...

  9. 基于HC-SR04的超声波测距模块

    目录 前言: HC-SR04硬件概述: HC-SR04引脚介绍: HC-SR04的超声波测距模块工作原理: 软件设计: 超声波初始化函数:(代码如下) 超声波测距模块:(代码如下) 前言: 2022. ...

  10. 超声波测距模块(51单片机)

    超声波测距模块(51单片机) 硬件介绍 1.使用场景 2. 工作原理 讲解代码 重点 1.定义引脚 2.定义时间 3.获取时间和距离 4.主函数 5.延时函数 结尾 硬件介绍 1.使用场景 超声波测距 ...

最新文章

  1. SAP Hybris安装包里自带的apache ant
  2. [react] React为什么不要直接修改state?如果想修改怎么做?
  3. java 工厂模式的写法_java简单工厂模式是什么
  4. Java编程思想 4th 第5章 初始化与清理
  5. epel安装第三方扩展源后,运行yum报错的解决方案
  6. mysql 聚集函数 count 使用详解
  7. php mysql 1040_php – 如何修复消息:SQLSTATE [08004] [1040]连接太多
  8. Git学习笔记之廖雪峰Git教程
  9. 画图工具轻松打印长图
  10. Java生成无限制带参小程序码
  11. ORACLE sql 高级查询
  12. 打怪升级,看俄罗斯小哥是如何从互联网转行到自动驾驶行业?
  13. 轮胎规格怎么看?“3T”指数到底是什么?换轮胎前必读!
  14. 中科院计算机和理论物理双硕士白,[中科院物理研究所]2005年硕士招生专业及研究方向_跨考网...
  15. 通过内容提供者获取手机上的音乐资源
  16. Effective C++ 条款10_不止于此
  17. 不同操作系统进行跑分测试【win、linux】
  18. 利用正则表达式爬取中国古诗文网
  19. 写给2020:做一个有计划、有担当的人
  20. xmind linux,xmind 8 pro序列号-XMind 8(思维导图软件) for Linux下载v8.0-乐游网软件下载...

热门文章

  1. 定时器 java qua_spring项目中使用定时任务
  2. java Locale类使用
  3. C++基础学习之重载和重写的区别
  4. 十进制转换为三进制数_python3实现
  5. 只鳞片爪聊红楼——《红楼梦》读后感笔记3200字
  6. 单片机复位电路的可靠性设计及精典实用复位电路
  7. [转载]刘光斗-刘晚苍系武学传人概况
  8. 关于QT出现“error: undefined reference to XXXX”问题
  9. 最新问题:错误代码ERROR ITMS-90096 一.ERROR ITMS-90096解决方法
  10. C++运算符重载 ++,--,+,-,+=,-=,输出输入运算符