51单片机STC89C52RC——18.1 HC-SR04超声波测距

目的/效果

独立按键K1按下后开始测距,LCD显示距离(mm)

一,STC单片机模块

二,HC-SR04 超声波测距

2.1 HC-SR04 简介

HC-SR04超声波测距模块提供2cm~400cm的测距功能,精度达3mm。


 2.2 时序 

以上时序图表明你只需要提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式: uS/58=厘米或者uS/148=英寸;或是:距离=高电平时间*声速(340M/S)/2;建议测量周期为60ms 以上,以防止发射信号对回响信号的影响。 

声音的速度为340m/s,因此我们将回响电平的时间除340再除2之后得到的就是单位为米的测距结果。

完整代码如下


/*** 函    数:HC-SR04开始测距* 参    数:无* 返 回 值:无*/
int HC_SR04_MeasureDistance()
{	  int time=0;float dis=0;Echo=0;						//输出回响信号引脚置低电平 Trig=1;						//置高电平Delay_10us(2);				//保持10us以上,这里20usTrig=0;						//置低电平	 while(Echo==0);				//等待Echo高电平Timer0_SetCounter(0);		//定时器初始值为0	Timer0_Run(1);				//开启计时(等待HC_SR04_CallbackOut高电平)while(Echo==1);				//等待Echo低电平Timer0_Run(0);				//定时器停止运行time=Timer0_GetCounter();	//获取定时器高电平时长	dis=time*0.00034/2*1000;	//计算距离(换成毫米)return (int)dis;
} 

2.3 接线方式


sbit Trig=P2^0;	//触发信号引脚
sbit Echo=P2^1;	//输出回响信号引脚

在不冲突的情况下,Trig和Echo也可以用其他I/O针脚

Vcc接5V电源,

GGND接板子上GND

2.4 定时器使用


/*** 函    数:定时器1初始化* 参    数:无* 返 回 值:无*/
void Time0_Init()
{	TMOD = 0x01;	//设置定时器模式TL0=0;	//给定时器赋初值TH0=0;	//给定时器赋初值	TR0=0;	//定时器1 最初不计时}/*** 函    数:定时器1设置计数器值* 参    数:Value,要设置的计数器值,范围:0~65535* 返 回 值:无*/
void Timer0_SetCounter(unsigned int Value)
{TH0=Value/256;TL0=Value%256;
}/*** 函    数:定时器1获取计数器值* 参    数:无* 返 回 值:计数器值,范围:0~65535*/
unsigned int Timer0_GetCounter(void)
{return (TH0<<8)|TL0;
}/*** 函    数:定时器1启动停止控制* 参    数:Flag 启动停止标志,1为启动,0为停止* 返 回 值:无*/
void Timer0_Run(unsigned char Flag)
{TR0=Flag;
}

有关定时器请参考:《51单片机STC89C52RC——6.2 定时器》

独立按键模块请参考:《51单片机STC89C52RC——2.1 独立按键控制LED亮灭》

LCD1602请参考:《51单片机STC89C52RC——5.1 LCD1602液晶显示屏》

三,创建Keil项目

详细参考:51单片机STC89C52RC——创建Keil项目-CSDN博客

四,代码 

完整代码参考《https://gitee.com/oopxiajun/STC89C52》

主代码如下

#include <REGX52.H>
#include "LCD1602.h"
#include "key.h"
#include "Delay.h"int Dis=0,KeyNum=0;
/*** 函    数:主函数* 参    数:无* 返 回 值:无*/
void main()
{Time0_Init();	//定时器初始化LCD_Init();		//LCD1602初始化LCD_ShowString(1,1,"Dis:     mm");while(1){KeyNum=GetKey();if(KeyNum==1){LCD_ShowString(2,1,"Measuring...");Dis=HC_SR04_MeasureDistance();		//发送触发信号Delay_ms(1000);}else{LCD_ShowString(2,1,"             ");  } LCD_ShowNum(1,5,Dis,5);		//显示距离(毫米mm)}
}

五,代码编译、下载到51单片机

代码编译请参考

《51单片机STC89C52RC——代码编译-CSDN博客》

代码下载请参考

《51单片机STC89C52RC——STCAI-ISP代码下载-CSDN博客》

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

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

相关文章

【GPT-4多态大模型研究】

1.概述 GPT-4是OpenAI最新的系统&#xff0c;能够产生更安全和更有用的回应。它是一个大型的多模态模型&#xff08;接受图像和文本输入&#xff0c;输出文本&#xff09;&#xff0c;在各种专业和学术的基准测试中展现了人类水平的表现。例如&#xff0c;它在模拟的律师资格考…

Android 12系统源码_存储(二)StorageManagerService服务

前言 在 Android 系统中&#xff0c;StorageManagerService是一个用于获取存储设备信息和管理存储设备的服务。它提供了一系列方法&#xff0c;可以获取当前挂载的存储设备信息&#xff0c;以及对存储设备进行挂载和卸载操作。 一、Storage存储模块介绍 1.1、StorageManager…

Android 10.0 Launcher3拖拽图标进入hotseat自适应布局功能实现一

1.前言 在10.0的系统rom定制化开发中&#xff0c;在对于launcher3的一些开发定制中&#xff0c;在对hotseat的一些开发中&#xff0c;需要实现动态hotseat居中 的功能&#xff0c;就是在拖拽图标进入和拖出hotseat&#xff0c;都可以保持hotseat居中的功能&#xff0c;接下来分…

阿里云短信PHP集成api类

无需安装sdk扩展包&#xff0c;直接引入类即可使用 V3版本请求体&签名机制:自研请求体和签名机制 - 阿里云SDK - 阿里云 模版内容&#xff1a; <?phpnamespace common\components;use common\constant\UserConst; use common\models\bee\SmsReferer; use common\mode…

C++从入门到起飞之——类的定义/实例化 全方位剖析!

个人主页&#xff1a;秋风起&#xff0c;再归来~ C从入门到起飞 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 目录 1.类的定义 1.1、类定义格式 1.2、访问限定符 1.3、类域 2.实例化 2.…

备忘录删除了怎么恢复 备忘录误删恢复办法

备忘录作为我们日常生活中的得力助手&#xff0c;帮助我们记录重要事项和灵感&#xff0c;然而&#xff0c;使用中偶尔会出现误删的情况。若不能及时找回误删的内容&#xff0c;可能会造成重要信息的丢失&#xff0c;给我们的工作和生活带来不必要的麻烦。 如果你也担心备忘录…

tinymce富文本支持word内容同时粘贴文字图片上传 vue2

效果图 先放文件 文件自取tinymce: tinymce富文本简单配置及word内容粘贴图片上传 封装tinymce 文件自取&#xff1a;tinymce: tinymce富文本简单配置及word内容粘贴图片上传 页面引用组件 <TinymceSimplify refTinymceSimplify v-model"knowledgeBlockItem.content…

还在羡慕别人的爆款视频是怎么做出来的?Transform Video给你答案,让你轻松制作出爆款的作品!

大家好&#xff01;我是闷声轻创&#xff01;最近我发现了一个牛批的AI视频编辑工具——Transform Video。这款软件将彻底改变你的视频创作体验&#xff0c;来看看都有什么功能吧 先了解一下Transform Video是什么&#xff1f; Transform Video是一个革命性的AI视频编辑平台&a…

vxe-grid 实现配置式form搜索条件 form搜索条件框可折叠 配置式table

文章目录 效果图代码 效果图 代码 <template><div class"app-container"><vxe-grid refxGrid v-bind"gridOptions" v-if"tableHeight" :height"tableHeight"><template #billDate"{ data }"><e…

Linux内核编程(八) 添加自定义目录驱动菜单 (Kconfig文件使用)

本文目录 一、Linux 内核驱动目录二、自定义驱动的Kconfig编写●示例&#xff1a;在 drivers 菜单添加一个自己驱动的子菜单。 三、自写驱动的Makefile编写四、总结 一个Linux内核源码&#xff0c;其中包含了很多驱动程序&#xff0c;对应不同的功能。我们在编译内核时。如果将…

《TF2.x强化学习手册》P59-P65-SARSA-Q-learning

文章目录 实现SARSA算法和对应的强化学习智能体前期准备实现步骤工作原理初始化算法流程 构建基于Q学习的智能体前期准备实现步骤工作原理SARSA 算法的收敛性&#xff1a;SARSA 适合在线学习和真实系统&#xff1a;Q 学习算法的适用性&#xff1a; 实现SARSA算法和对应的强化学…

linux|多线程(一)

主要介绍了为什么要有线程 和线程的调用 和简单的对线程进行封装。 背景知识 a.重谈地址空间 我们知道物理内存的最小单元大小是4kB 物理内存是4G那么这样的单元友1M个 操作系统先描述再组织struct page[1M] 对于32位数据字长的机器&#xff0c;页表有2^32条也就是4G条&#…

随笔一、泰山派RK3566开发板调试串口波特率修改

摘要&#xff1a;立创泰山派RK3566开发板默认调试串口波特率是1500000bps&#xff0c;一般串口助手工具没有此波特率&#xff0c;为适应各种调试环境需要&#xff0c;打算修改调试串口波特率为115200bps 需要修改三个部分 1. uboot引导部分 修改tspi_linux_sdk/u-boot/config…

python数据可视化(10)——绘制地图图表

课程学习来源&#xff1a;b站up&#xff1a;【蚂蚁学python】 【课程链接&#xff1a;【【数据可视化】Python数据图表可视化入门到实战】】 【课程资料链接&#xff1a;【链接】】 python&#xff1a;3.12.3 所有库都使用最新版。 Python绘制中国地图和城市图表 from pyech…

CSS技巧专栏:一日一例 7 - 纯CSS实现炫光边框按钮特效

CSS技巧专栏&#xff1a;一日一例 7 - 纯CSS实现炫光边框按钮特效 本例效果图 案例分析 相信你可能已经在网络见过类似这样的流光的按钮&#xff0c;在羡慕别人做的按钮这么酷的时候&#xff0c;你有没有扒一下它的源代码的冲动&#xff1f;或者你当时有点冲动&#xff0c;却…

[第一期]带日期时间的LED滚动广告屏美化

效果图&#xff1a; 源代码&#xff1a; <style type"text/css">.studytextgzbox {background: #F9F9F9; border: 1px solid #999999;margin: 1px;text-align:center; float: left;line-height: 28px;height: 28px;overflow: hidden;width: 236px; }.hulik…

最新电子书|使用Anybus网关,轻松实现工业设备互联

无论何时&#xff0c;确保多网络连接 工业网关的关键角色 工业网关&#xff0c;又称为协议网关、协议转换器或协议翻译器&#xff0c;是实现工业设备互联的最简捷方法。作为信息的翻译器&#xff0c;它们使得不同工业协议的设备、机器、系统或网络能够无缝交换数据&#xff0c…

数据架构新篇章:存算一体与存算分离的协同演进

数据架构新篇章&#xff1a;存算一体与存算分离的协同演进 前言被误解的存算分离存算一体的概念存算一体的过往存算一体的演进 存算分离的定义存算分离的过往存算分离的演进 存算一体和分离示例总结 前言 降本增效大环境下&#xff0c;存算分离架构如火如荼&#xff0c;Why&am…

【STC89C51单片机】定时器中断系统

中断概念 中断是一种重要的硬件机制&#xff0c;用于在处理器正在执行程序时&#xff0c;能够及时响应某些外部或内部事件。中断可以临时中止当前正在执行的指令序列&#xff0c;转而去执行专门的中断服务程序&#xff08;ISR&#xff0c;Interrupt Service Routine&#xff0…

Stable Diffusion:解锁AI绘画新纪元的保姆级入门指南

在这个数字艺术日新月异的时代&#xff0c;Stable Diffusion如同一股清新的风&#xff0c;吹散了传统绘画的界限&#xff0c;让每个人都能成为创意无限的数字艺术家。作为一款基于Transformer结构的文本到图像生成模型&#xff0c;Stable Diffusion以其惊人的生成速度、细腻的画…