① 求教,stm32怎么用超声波模块测距,用的是HC-SR04
设置gpio口,还需使用定时器,根据超声波测距模块的使用说明进行开发,一般是操作一个触发引脚,一个返回方波信号的引脚。承接单片机项目开发。
② 求助: 有哪位大侠知道使用超声波测距模块
#include"sst89e516.h"
#include"SMC162.H"
#include <stdio.h>
#include "math.h"
#include "binary.h"
#include "intrins.h"
#define trig P1_0 //脉冲产生端口
/******************系统全局变量***************/
typedef unsigned char uchar;
typedef unsigned int uint;
bit Success; //测量成功标志位
bit Done; //测量完成标志位
bit Mode; //测量模式:0--近距离,1---远距离
uint nCount;
float nResult;
/***********超声波测量相关函数定义***************/
void StartInit();
void Delay_us(uint i); //微秒级延时:T=7+2*(X-1) us
void StartMeasure();
void DisplayResult();
void ConvertCount();
void Delay_ms(uint x);
////////////////////////主函数////////////////////////////////
void main()
{
unsigned long Sum;
uchar i;
uchar num;
bit bOK;
TCON=0x05; //INT0 INT1下降沿触发
TMOD=0X01; //T0作为计数输入
IP=0x00; //置INT1优先级最高
LcdInit();
while(1) //测量系统主循环
{
bOK=0;
num=0;
Sum=0;
for(i=1; i<=3; ++i) //循环测量,求平均值
{
StartInit(); //测量初始化
StartMeasure(); //开始测量第1次,确定大概范围
if(Success==1)
{
bOK=1; //有1次成功,则测距成功
Sum=(nCount>Sum)?nCount:Sum; //取测量最大值
}
Delay_ms(80); //延时10ms后继续测量
}
nCount=Sum;
Success=bOK;
DisplayResult();
}
}
/***************所用到的相关函数功能实现*****************/
void INT_0() interrupt 0 //运行到此处说明echo产生回波
{
TR0=1; //关计数
ET0=1; //关定时器中断
EX0=0; //关INT0中断
Done=1;
}
void INT_T0() interrupt 1
{
//运行到此处说明测距失败
TR0=0;
EX0=0;
EX1=0;
Success=0;
Done=1;
}
void INT_1() interrupt 2
{
TR0=0;
ET0=0;
EX1=0;
nCount=TH0;
nCount=nCount<<8;
nCount=nCount|TL0;
Success=1;
Done=1;
}
void StartInit()
{
TH0=0;
TL0=0; //计数器置0
trig=0;
EA=0; //开总中断
ET0=0; //关T0中断
EX0=0; //关INT0中断
EX1=0;
Success=0; //测量成功标志位
Done=0; //测量一次标志位
}
void StartMeasure()
{
trig=0;
trig=1;
Delay_us(5);
trig=0;
EX0=1;
EX1=1;
while(Done==0);
}
void DisplayResult()
{
float temp=0;
char String[10];
if(Success==1) //测距成功,显示“成功”,并显示距离
{
temp=nCount*184e-3; // 算出距离
sprintf(String," d= %6.2f mm",temp); //将整数转换为字符串
PutStr(0,0,String);
Delay_ms(50);
}
else //测距失败,显示“失败”提示
{
PutStr(0,4," --Fail-- ");
}
}
void Delay_ms(uint x) //12M环境下延时1ms
{
uchar j;
while(x--)
{
for(j=0;j<125;j++);
}
}
void Delay_us(uint i) //微秒级延时:T=7+2*(X-1) us
{
while(--i);
}
程序如下:(显示函数没有问题)
③ 超声波测距模块、红外线测距模块,
首先要看功能,比如测距的距离,输出信号。安装方式,使用环境,然后才是设计体积。
测距红外和超声波对人体都没有伤害。但是激光对眼睛有伤害。
④ STM32如何使用超声波模块进行测距
这种东西又不是很难,最好还是自己做。每个人思路不一样。自己做的收获比较大。
⑤ 多个超声波模块同时测距怎么实现
一般来说是分时工作就够了,同时工作,那要考虑互相干扰的问题。所以有点困难的。
⑥ 超声波测距模块使用问题
这种类型的探头,发射是圆锥形的,角度应该在50°左右。但是要测电线的反射,估计很困难。因为电线的反射信号很弱。被测的障碍物的形状也很关键,不同的障碍物,反射系数不一样的。
⑦ hc-sr04超声波测距模块怎么做
//(1)采用 IO 触发测距,给至少10us 的高电平信号;
//(2)模块自动发送8 个40khz 的方波,自动检测是否有信号返回;
//(3)有信号返回,通过IO 输出一高电平,高电平持续的时间就是
//(4)超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2
⑧ 超声波测距模块是什么哪里有具体点的,谢谢
超声波测距模块就是 处理器给超声波一定频率,然后模块就发出人听不到的声音,但是存在,当碰到物体后就返回,这个时候模块收到这信号给处理器, , 你可以在淘宝搜索就有了
⑨ 超声波传感器如何测距
超声波传感器测距工作原理:超声波传感器是将超声波信号转换成其他能量信号(通常是电信号)的传感器。超声波是指频率大于20 kHz的在弹性介质中产生的机械震荡波,其具有指向性强、能量消耗缓慢、传播距离相对较远等特点,因此常被用于非接触测距。由于超声波对液体、固体的穿透本领很大,尤其是在阳光不透明的固体中。超声波碰到杂质或分界面会产生显著反射形成反射成回波,碰到活动物体能产生多普勒效应。,因此超声波测距对环境有较好的适应能力,此外超声波测量在实时、精度、价格也能得到很好的折中。
目前超声波测距的方法有多种:如往返时间检测法、相位检测法、声波幅值检测法。其原理是超声波传感器发射一定频率的超声波,借助空气媒质传播,到达测量目标或障碍物后反射回来,经反射后由超声波接收器接收脉冲,其所经历的时间即往返时间,往返时间与超声波传播的路程的远近有关。