超声波模块HC-SRO4

2023-05-16

1)引脚和原理:
该模块有VCC、GND、Trig和Echo针脚。
TRIG是输出和ECHO是输入。
该模块的工作原理为,先向TRIG脚输入至少10us的触发信号,该模块内部将发出 8 个 40kHz 周期电平并检测回波。一旦检测到有回波信号则ECHO输出高电平回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式: 距离=高电平时间*声速(340M/S)/2。

2)实现功能:
通过超声波模块测距离,并将测试距离显示到串口助手上。

3)工具:
超声波模块、51单片机、定时器模块、串口

3)代码:
#include<reg52.h>
#include<stdio.h>
unsigned int time;
char buf[32]={0};
float distance;
sbit TRIG=P1^0; //超声波上引脚TRIG,接单片机引脚
sbit ECHO=P1^1;//ECHO 接单片机引脚

void delay() //延时函数
{
int i;
for(i=0;i<5000;i++);
}

void inputstr(char character ) //串口输入输出存放数据,输出一个字符

	SBUF=character;	

}
void inputstring(char *p) //串口输入输出存放数据,输出一串字符
{
while(*p!=’\0’){
inputstr(*p);
p++;
delay();
}
}

void initUART_115200() //初始化串口,使用波特率115200
{
SCON = 0x50; //0101 0000 方式一
TH2=0xFF;
TL2=0xFD;
RCAP2H=0xFF;
RCAP2L=0xFD;
T2CON=0x34; //波特率115200 算法巩固
}

void init_timer() //定时器初始化
{
TMOD=0x01; //定时器0的工作方式
TH0=0xff; //高八位,设置初始值 10us
TL0=0xf6; //底八位
}
void open_counttime() //定时器开始计时,初值为0
{
TH0=0;
TL0=0;
TR0=1;
}
void end_counttime() //定时器 结束计时
{
TR0=0;
}
int get_time() //计算定时器 计时的时间。
{
unsigned int a;
a=TH0*256 + TL0; // ***
return a;
}

void CSB_Init() //超声波模块初始化
{
TMOD=0x01;
TH0=0;
TL0=0;
EA=1;
ET0=1;
TRIG = 0;
}

void main()
{
initUART_115200();
init_timer();
while(1){
CSB_Init();
TRIG=1; //输出拉高
TR0=1; //定时器开始工作
while(TF0==1); //等待10us
TR0=0; //关闭计时器
TRIG=0; //输出拉低

while(ECHO!=1);																							
open_counttime();
while(ECHO!=0);										//	输入时间,接收脉冲时间,用于计算距离																										
end_counttime();
time=get_time();																														
																																
distance = (float)time * 0.017	;
sprintf(buf,"distance=%f\r\n",distance);

inputstring(buf);
delay();

}

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

超声波模块HC-SRO4 的相关文章

  • vue js时分秒计时器_Vue js框架的倒数计时器

    vue js时分秒计时器 VUE倒计时 vue count down timer This is a count down timer for Vue js framework This library supports two types
  • TCP长连接(Keepalive)

    TCP Keepalive的起源 TCP协议中有长连接和短连接之分 短连接环境下 xff0c 数据交互完毕后 xff0c 主动释放连接 xff1b 长连接的环境下 xff0c 进行一次数据交互后 xff0c 很长一段时间内无数据交互时 xf
  • 从输入一个网址到浏览器显示页面经历的全过程

    作为网络专栏的开篇导文 xff0c 本文概况介绍下经典案例 xff1a 从输入一个网址到浏览器显示页面的全过程 步骤概要介绍如下 xff1a 1 输入网址2 DNS解析获取域名对应的IP地址3 建立TCP连接4 web浏览器向web服务器发
  • 端口号是什么以及常见端口号

    端口号 具有网络功能的应用软件的标识号 注意 xff0c 端口号是不固定的 xff0c 即可以由用户手工可以分配 xff08 当然 xff0c 一般在软件编写时就已经定义 xff09 当然 xff0c 有很多应用软件有公认的默认的端口 xf
  • DNS域名解析过程

    目录 1 DNS2 域名系统DNS 的作用3 域名的层级关系4 DNS域名解析过程 递归查询迭代查询 5 高速缓存6 DNS相关面试问题 1 DNS DNS xff08 Domain Name System xff09 是域名系统的英文缩写
  • java常见面试题

    目录 基础语法 1 Java 语言的优点 xff1f 2 Java 如何实现平台无关 xff1f 3 JVM xff0c JDK 和 JRE 的区别 xff1f 4 Java 按值调用还是引用调用 xff1f 5 浅拷贝和深拷贝的区别 xf
  • 分段分页存储

    2020 4 27 在家的网课 xff0c 无聊 xff0c 记录一下分页 xff0c 分段 xff0c 段页式存储笔记 昨天刚学了分页存储 xff0c 听得我一脸懵逼 xff0c 好在课下花了很长时间才弄懂 1 分页存储管理 1 分页存储
  • 解压码

    BN00001 22kke BN00002 88cde BN00003 00ike BN00004 76cdb BN00005 09dbm BN00006 0mndc BN00007 cd78d BN00008 bdmf8 BN00009
  • 保险项目业务流程

    1 整个项目分为四分模块 xff1a 信息采集模块 信息验证 审批 生成合同 xff08 开单 xff09 信息采集模块 xff1a 包括购买保险产品 xff0c 客户个人信息 1 纸质文档给客户填写 xff0c 在回来录入系统 2 客户直
  • IDEA使用maven自定义archetype

    标题自定义archetype 在pom文件中添加archetype plugin span class token generics span class token punctuation lt span plugin span clas
  • 自定义Perperties文件内容读取

    新建properties文件放在resources目录下 properties文件内容 url span class token operator 61 span jdbc span class token operator span my
  • 如何使用Google TV设置Chromecast

    Justin Duino 贾斯汀 杜伊诺 Justin Duino Google changed up its streaming platform with the release of the Chromecast with Googl
  • 使用CSS中的Hover控制显示子元素或者兄弟元素

    lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt meta name 61 34 viewport
  • maven项目中的jdbc连接步骤

    在maven项目pom xml中到入驱动包 xff08 以下是驱动包代码 xff09 lt dependencies gt lt https mvnrepository com artifact mysql mysql connector
  • executeUpdate()与executeQuery()的使用

    增 删 改 用executeUpdate xff08 xff09 返回值为int型 xff0c 表示被影响的行数 例子 查用executeQuery 返回的是一个集合 next xff08 xff09 表示 指针先下一行 xff0c 还有f
  • Access denied for user ''@'localhost' (using password: YES)错误解决方法

    远程登录被拒绝 xff0c 要改一个表数据的属性让他可以远程登录 解决方法如下 xff0c 执行命令 xff1a mysql gt use mysql mysql gt select host user from user 查看结果是不是r

随机推荐