红外测距模块 51单片机_[51单片机] HC-SR04超声波测距仪

c644e53878add3cb456f7e4df554f9e1.gif

1、HC-SR04超声波模块工作原理

(1)采用IO口触发测距,给至少10us高电平脉冲;

(2)模块自动发送八个40khz方波,并自主检测是否有电波返回;

(3)当有信号返回时,通过IO口输出一个高电平,高电平的持续时间就是超声波从发送到返回的时间;

(4)测距公式:距离=(高电平时间*声速)/2;

548244eb85f72ccedf1afd6ef6214ef7.png

超声波模块的时序图

(5)工作原理分析

bf520089da85bdc64127bbf5956e3c40.png

英语啥的我也看不懂呐

0275844b8b20f45a29a1e69ec25189fd.png

差不多就是这个意思

946505b230e81b2a8133313ff4a9a1bc.png

2、使用元器件如下

7de0bca757baaef3d844200851556c84.png

超声波模块和蓝牙模块

2ba5aa9a357c361fbe17d8bcba0f96d3.png

加上51单片机后的连接图

4262885093073a2e16bf19760678b28f.png

3、开始运行时的工作状态

82f7093ece967511ebbc5ed8dcc12c6e.png

哇哦还是蛮准的嘛,允许一丢丢误差

把障碍物放在距离超声波模块前方的14cm左右(当然放多远是无所谓的,这里就以14cm为例吧!),根据单片机计算出来的值,由蓝牙模块发送到手机上面。

嘿嘿不晓得这样说有没有说清楚,这差不多就是我的理解吧!

这时候要用个手机软件(当然用电脑也是ok的啦,也需要一个蓝牙串口的软件),俺用的是下面这个➡️

022d549207451cf56da4b75e48723bb9.png

偷偷告诉你豌豆荚可以下

d7dc967e652c2c06c226b3e832f0fe16.png

4、上主菜

#include

#include

#include //c语言库

#define uchar unsigned char

#define uint unsigned int

#define ECHO P1_1 //echo 接线:模块TRIG接 P1.2 ECH0 接P1.1

#define TRIG P1_0 //trig

unsigned int time=0;

float S=0;

bit flag =0;

void Conut(void)

{

time=TH0*256+TL0;

TH0=0;

TL0=0;

S=(time*1.87)/100; //算出来是CM

if(flag==1) //超出测量

{

flag=0;

printf("--------");

}

printf("S=%5.2fcm",S);

}

void delayms(unsigned int ms)

{

unsigned char i=100,j;

for(;ms;ms--)

{

while(--i)

{

j=10;

while(--j);

}

}

}

void zd0() interrupt 1 //T0中断计数器溢出

{

flag=1; //中断溢出标志

}

void StartModule() //T1中断用来扫描

{

int i;

TRIG=1; //启动一次模块

for(i=0;i<21;i++)

{

_nop_();

}

TRIG=0;

}

void main(void) //主工作区

{

TMOD=0x21; //T0为方式1 GATE=1;

SCON=0x50; //SCON是单片机串行口控制寄存器,用于控制串行通信的方式选择、接收和发送,指示串口的状态。

TH1=0xFD;

TL1=0xFD;

TH0=0;

TL0=0;

TR0=1;

ET0=1; //允许T0中断

TR1=1; //开启定时器

TI=1; //TI是串口送数据完成标志

EA=1; //开启总中断

while(1)

{

StartModule(); //启动模块

while(!ECHO); //当ECHO为零时

TR0=1; //开启计数

while(ECHO);//当ECHO为1计数并等待

TR0=0; //关闭计数

Conut(); //计算

delayms(50); //500ms = 0.5s

}

}

c9415bcd72428b506fe4805421006f75.png

下次见

2020.05.16

73d3c790bf5550e1cd899c221efbfa4c.png

‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧··END·‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值