蓝桥杯单片机快速开发笔记——超声波测距

news2025/7/11 9:41:41

一、原理分析

        超声波测距是一种常见的测距方法,其原理是利用超声波在空气中传播的速度恒定且较快的特性,通过发送超声波信号并接收回波,计算出物体与传感器之间的距离。以下是超声波测距的原理和应用:

原理:

  1. 发送超声波信号:超声波传感器发送一个短脉冲的超声波信号。
  2. 接收回波:超声波信号遇到物体后会被反射回来,传感器接收到回波信号。
  3. 计算时间差:通过测量发送超声波和接收回波之间的时间差,可以计算出超声波在空气中传播的时间。
  4. 计算距离:利用声波在空气中的传播速度(约为340m/s),将时间差转换为距离,即距离 = 速度 x 时间差。

应用:

  1. 测距应用:超声波测距广泛应用于机器人导航、智能车辆、无人机等领域,用于测量物体与传感器之间的距离,实现避障、定位等功能。
  2. 液位检测:超声波传感器可以用于检测液体的液位高度,常见于水箱、油箱等液位监测系统中。
  3. 智能家居:超声波传感器可以用于智能家居系统中,如智能灯光控制、智能门窗感应等。
  4. 工业自动化:在工业自动化领域,超声波传感器常用于测量物体的距禋、检测物体的存在等。

  注意事项:

        超声波模块的TX引脚接到单片机的P1.0端口RX引脚接到单片机的P1.1端口,注意按照上图连接好。

二、思维导图

三、示例框架

#include "intrins.h"
#include "stc15.h"
#include "smg.h"


sbit TX = P1^0;
sbit RX = P1^1;


extern unsigned int dat_f;

void Delay12us()                  //@12.000MHz 延时12us
{
	unsigned char i;
 
	_nop_();
	_nop_();
	i = 33;
	while (--i);
}

void Send_Wave()                 //产生8个40KHx超声波信号
{
	unsigned char i;
	for(i = 0; i < 8; i++)
	{
		TX = 1;           //将 TX 端口置为高电平,表示开始发送超声波信号。
		Delay12us();	    //调用延时函数 Delay12us(),延时12微秒。
		TX = 0;           //将 TX 端口置为低电平,表示停止发送超声波信号。
		Delay12us();
	}
}
 
void Measure_Distance()	        //超声波测距
{
	unsigned int time = 0;    //定义了一个无符号整型变量 time,用于存储测量到的时间。
														//将 TMOD 寄存器的高四位清零,保留低四位不变。这样可以确保只修改定时器1的工作模式,而不影响其他位。
	
	TMOD &= 0x0f;	            //定时器1模式0,13位定时器,最大8192个计数脉冲								
	TL1 = 0x00;										
	TH1 = 0x00;		
	
	Send_Wave();		    //发送超声波信号							
	TR1 = 1;            //启动定时器1						
	while((RX == 1) && (TF1 == 0));    //在循环中等待接收到超声波信号的回波且没有超出测量范围。
									   //TF1 是一个标识符,用于表示定时器1的溢出标志
	TR1 = 0;            //停止定时器				
	
	if(TF1 == 0)	            //正常测量范围							
	{
		time = TH1;			                        //将定时器1的值 TH1 读取到 time 变量中。						
		time = (time << 8) | TL1;		            //将定时器1的值 TL1 读取并与 TH1 合并,得到完整的时间值。
		dat_f = ((time / 10) * 17) / 100 + 3;   //根据计算公式将测量到的时间转换为距离,并存储在 dat_f 变量中。
	}
	else                        //超出测量范围			
	{
		TF1 = 0;
		dat_f = 999;
	}
}
  1. unsigned int dat_f;:定义一个无符号整型变量 dat_f,用于存储测量到的距离。

  2. void Delay12us():定义一个延时函数,用于实现12微秒的延时。

  3. void Send_Wave():定义一个函数,用于产生8个40KHz的超声波信号。在循环中,先将 TX 端口置为高电平,然后调用 Delay12us() 函数实现延时,再将 TX 端口置为低电平,再次调用 Delay12us() 函数实现延时。

  4. void Measure_Distance():定义一个超声波测距函数。在函数中:

    • 清零定时器1的模式位,设置为模式0,13位,最大8192个计数脉冲。
    • 将定时器1的低8位寄存器 TL1 和高8位寄存器 TH1 初始化为0。
    • 调用 Send_Wave() 函数发送超声波信号。
    • 启动定时器1。
    • 在 while 循环中,等待接收到超声波信号的回波或者超出测量范围。
    • 停止定时器1。
    • 如果测量在正常范围内,将定时器1的值读取到 time 变量中,然后根据一定的计算公式将测量到的时间转换为距离,并存储在 dat_f 变量中。
    • 如果超出测量范围,将 dat_f 设为999。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1528510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux安装Mysql5.7数据库

一、前置条件 系统版本&#xff1a;Linux CentOS 7.5 MySQL版本&#xff1a;mysql5.7.31 二、操作步骤 2.1、关闭mysql服务 service mysqld stop 提示使用命令&#xff1a;systemctl stop mysqld.service 2.2、grep查找已安装的mysql服务 rpm -qa | grep -i mysql 2.3、卸载…

机器学习(1)机器学习的概念与应用领域

文章目录 一、前提二、机器学习的概念与应用领域1.认识①亚瑟•塞缪尔的定义②汤姆米切尔的定义 2.相关术语数据术语训练模型术语获得模型后术语 3.应用领域语音识别计算机视觉自然语言处理①自然语言分析②自然语言生成 大数据分析 一、前提 Python语言具有数量庞大且功能相对…

记录一次爬虫接单项目【采集国际淘宝数据】

1.背景 前几天接了一个爬虫的单子&#xff0c;上周六已经完成这个单子&#xff0c;也收到了酬劳&#xff08;数目还不错&#xff0c;哈哈哈&#xff0c;小喜了一下&#xff09;。这个项目大概我用了两天写完了&#xff08;空闲时间写的&#xff09;。 2.介绍 大概要采集的数据…

Flutter-仿淘宝京东录音识别图标效果

效果 需求 弹起键盘&#xff0c;录制按钮紧挨着输入框收起键盘&#xff0c;录制按钮回到初始位置 实现 第一步&#xff1a;监听键盘弹起并获取键盘高度第二步&#xff1a;根据键盘高度&#xff0c;录制按钮高度计算偏移高度&#xff0c;并动画移动第三步&#xff1a;键盘收起…

深度学习_卷积

卷积 卷积&#xff08;Convolution&#xff09;是数学和计算机科学中的一个重要概念&#xff0c;特别在信号处理和图像处理中应用广泛。在信号处理领域&#xff0c;卷积是两个函数之间的一种数学操作&#xff0c;它表示两个函数的重叠部分的积分量。 在图像处理中&#xff0c…

KKVIEW远程: TODESK退出了还能远程吗

Todesk退出了还能远程吗 当我们谈论Todesk或其他远程桌面软件时&#xff0c;一个经常被提及的问题是&#xff1a;当我退出Todesk后&#xff0c;是否仍然可以远程访问我的计算机&#xff1f;为了回答这个问题&#xff0c;我们首先需要了解Todesk的工作原理和远程访问的基本条件…

WhatsApp商业推广有哪些推广技巧?

在现代化商业&#xff0c;与用户创造紧密、良好的互动体验&#xff0c;建立强大的品牌形象以及找到最佳的推广途径&#xff0c;变得尤为重要。而WhatsApp作为全球使用最广泛的即时通讯应用之一&#xff0c;成为无数企业选择优选的推广平台。那么&#xff0c;在WhatsApp商业推广…

图书推荐|西门子S7-1200 PLC编程与应用实例

一线资深工程师的全彩版PLC实战教程&#xff0c;软硬件及编程全方位详解&#xff08;配视频教学&#xff09; 本书内容 《西门子S7-1200 PLC编程与应用实例》对西门子S7-1200 PLC的硬件和编程软件的功能进行详细讲解&#xff0c;内容包括PLC编程基础、博途TIA软件入门、指令介…

使用OCC进行切割操作

OCC中切割操作以一个平面作为切割面&#xff0c;对物体进行切割操作 //要操作的图形 TopoDS_Shape shape getHanleShape(); //构造切割面 TopoDS_Shape faceShape getSplitterFace(); //切割操作 BOPAlgo_Splitter splitter; splitter.AddArgument(shape); splitter.AddTool(…

13.Python从入门到精通—Python 集合操作与方法概览

13.Python从入门到精通—Python 集合操作与方法概览 Python 集合集合的基本操作1、添加元素2、移除元素3、计算集合元素个数4、清空集合5、判断元素是否在集合中存在 集合内置方法完整列表 Python 集合 在Python中&#xff0c;集合是一种无序、不重复的数据类型。集合通常用于…

unicloud快速上手,unicloud项目创建以及项目创建注意事项

uniCloud快速上手 本项目地址https://gitee.com/qayrup/unicloud-demo 创建unicloud项目 新建一个uni项目,并选择启用unicloud,选择阿里云或腾讯云 阿里云和支付宝云都支持一个月免费的云,如果只想体验啥的,可以选择这两个, 但是需要注意,支付宝云需要配置跨域,否则很多云函…

0基础学习VR全景平台篇第145篇:图层控件功能

大家好&#xff0c;欢迎观看蛙色VR官方——后台使用系列课程&#xff01;这期&#xff0c;我们将为大家介绍如何使用图层控件功能。 一.如何使用图层控件功能&#xff1f; 进入作品编辑页面&#xff0c;点击左边的控件后就可以在右边进行相应设置。 二.图层控件有哪些功能&am…

C++有关内存的那些事

个人主页&#xff1a;PingdiGuo_guo 收录转栏&#xff1a;C干货专栏 前言 本篇博客是讲解关于C内存的一些知识点的。 文章目录 前言 1.内存函数 1.1memcpy函数 1.2memmove函数 1.3 memset函数 2.各数据类型占用 2.1bool类型 2.2char类型 2.3short、int、long类型及整数…

英语广场杂志英语广场杂志社英语广场编辑部2024年第3期目录

英语翻译理论与实践 浅析钱钟书“化境论”与文言文英译的适配度 冯睿;姚锦宁;李佳彧; 3-6《英语广场》投稿&#xff1a;cn7kantougao163.com 目的论视角下《写作、阅读和演讲的艺术》的翻译分析报告 张俊怡; 7-10 新加坡籍译者温宏文翻译行为研究 周梦; 11-14 …

CVE-2024-24112 XMall后台管理系统 SQL 注入漏洞分析

------作者本科毕业设计项目 基于 Spring Boot Vue 开发而成...... [Affected Component] /item/list /item/listSearch /sys/log /order/list /member/list (need time-based blind injection) /member/list/remove 项目下载地址 Exrick/xmall: 基于SOA架构的分布式…

百年难遇:3款良心好用的国产软件,常被误以为是外国佬开发

许多出色的国产软件&#xff0c;但由于某些特殊原因&#xff0c;我们常常错过了它们。 今天&#xff0c;笔者将向大家推荐三款电脑必备的软件&#xff0c;每一款都堪称神器。 Teamind Teamind是一款功能强大的在线白板工具&#xff0c;支持多人协作&#xff0c;成为众多居家…

收银软件多少钱一套?亿发全面解析超市收银系统软件价位

当超市经营达到一定规模时&#xff0c;商户通常会选择配置收银系统软件&#xff0c;以提升收银效率和为顾客提供更完善的购物体验。然而&#xff0c;人们常问&#xff1a;收银系统软件一套需要多少钱&#xff1f;安装一个收银系统又需要多少费用呢&#xff1f;了解收银系统软件…

JDK1.8安装环境变量配置检测是否安装成功

前言 目前市面上最常用的还是java1.8和Mysql5.7&#xff08;企业&#xff09;2024 安装包 已上传CSDN&#xff0c;审核中 JDK安装细节 注&#xff1a;如果怕麻烦就直接安装在C盘&#xff08;默认&#xff09; 环境变量配置 Win10打开左下角图标点击系统&#xff0c;下滑点…

ET框架新起一个服务及实现服务之间的消息通讯

ET框架是熊猫大大写的双端框架&#xff0c;游戏客户端和服务端都是用C#语言来编写 新起一个服务名比如叫做Activity 1.配置文件StartSceneConfig 2. SceneFactory switch (scene.SceneType) {case SceneType.Activity:break; } 定义SceneType枚举类型 public enum SceneTyp…

计算机网络——物理层(物理传输介质和物理层的设备)

计算机网络——物理层&#xff08;物理传输介质和物理层的设备 物理传输介质导向性传输介质双绞线同轴电缆光纤 非导向性传输介质无线电波多径效应 微波地面微波通信ISM 频段 卫星通信 物理层设备中继器集线器中继器和集线器的区别 我们今天进入物理层的物理传输介质和物理层的…