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博客》
相关文章:
51单片机STC89C52RC——18.1 HC-SR04超声波测距
目的/效果 独立按键K1按下后开始测距,LCD显示距离(mm) 一,STC单片机模块 二,HC-SR04 超声波测距 2.1 HC-SR04 简介 HC-SR04超声波测距模块提供2cm~400cm的测距功能,精度达3mm。 2.2 时序 以上时序图表明…...
WordPress与 wp-cron.php
WordPress 傲居全球最流行的内容管理系统(CMS)之位,占据了互联网约43%的网站后台,这主要得益于其直观易用的用户界面以及丰富的扩展功能,特别是为新手用户提供了极大的便利。 然而,在畅享WordPress带来的便…...
bb-------
社保费申报及缴纳...
数据挖掘与分析部分实验与实训项目报告
一、机器学习算法的应用 1. 朴素贝叶斯分类器 相关代码 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB, MultinomialNB from sklearn.metrics import accuracy_score # 将数据加载到DataFrame中&a…...
Python中使用SpeechLib实现文本转换语音朗读的示例(修正bug)
一、修正SpeechLib的导入包顺序后的代码: from comtypes.client import CreateObjectengine CreateObject(SAPI.SpVoice) stream CreateObject(SAPI.SpFileStream)from comtypes.gen import SpeechLibinfile E:\\语音文档\\易经64卦读音.txt outfile E:\\demo.…...
政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署Hallo :针对肖像图像动画的分层音频驱动视觉合成
政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 零基础玩转各类开源AI项目 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 本文目标:在Ubuntu系统上部署Hallo&#x…...
Spring Boot1(概要 入门 Spring Boot 核心配置 YAML JSR303数据校验 )
目录 一、Spring Boot概要 1. SpringBoot优点 2. SpringBoot缺点 二、Spring Boot入门开发 1. 第一个SpringBoot项目 项目创建方式一:使用 IDEA 直接创建项目 项目创建方式二:使用Spring Initializr 的 Web页面创建项目 (了解&#…...
电脑屏幕录制怎么弄?分享3个简单的电脑录屏方法
在信息爆炸的时代,屏幕上的每一个画面都可能成为我们生活中不可或缺的记忆。作为一名年轻男性,我对于录屏软件的需求可以说是既挑剔又实际。今天,我就为大家分享一下我近期体验的三款录屏软件:福昕录屏大师、转转大师录屏大师和OB…...
idea双击没有反应,打不开
问题描述 Error opening zip file or JAR manifest missing : /home/IntelliJ-IDEA/bin/jetbrains-agent.jar解决方案...
关于UniApp使用的个人笔记
UniApp 开发者中心 用于注册应用以及申请对应证书 https://dev.dcloud.net.cn/pages/app/list https://blog.csdn.net/fred_kang/article/details/124988303 下载证书后,获取SHA1关键cmd keytool -list -v -keystore test.keystore Enter keystore password…...
autoware.universe源码略读(3.16)--perception:object_range_splitter
autoware.universe源码略读3.16--perception:object_range_splitter Overviewnode(Class Constructor)ObjectRangeSplitterNode::ObjectRangeSplitterNode(mFunc)ObjectRangeSplitterNode::objectCallback Overview 这里处理的依…...
深度学习落地实战:人脸五官定位检测
前言 大家好,我是机长 本专栏将持续收集整理市场上深度学习的相关项目,旨在为准备从事深度学习工作或相关科研活动的伙伴,储备、提升更多的实际开发经验,每个项目实例都可作为实际开发项目写入简历,且都附带完整的代码与数据集。可通过百度云盘进行获取,实现开箱即用 …...
270-VC709E 基于FMC接口的Virtex7 XC7VX690T PCIeX8 接口卡
一、板卡概述 本板卡基于Xilinx公司的FPGA XC7VX690T-FFG1761 芯片,支持PCIeX8、两组 64bit DDR3容量8GByte,HPC的FMC连接器,板卡支持各种FMC子卡扩展。软件支持windows,Linux操作系统。 二、功能和技术指标: 板卡功…...
【go】Excelize处理excel表 带合并单元格、自动换行与固定列宽的文件导出
文章目录 1 简介2 相关需求与实现2.1 导出带单元格合并的excel文件2.2 导出增加自动换行和固定列宽的excel文件 1 简介 之前整理过使用Excelize导出原始excel文件与增加数据校验的excel导出。【go】Excelize处理excel表 带数据校验的文件导出 本文整理使用Excelize导出带单元…...
uniapp自定义tabBar
uniapp自定义tabBar 1、在登录页中获取该用户所有的权限 getAppFrontMenu().then(res>{if(res.length > 0){// 把所有权限存入缓存中let firstPath res.reverse()[0].path;uni.setStorageSync(qx_data, res);uni.switchTab({url: firstPath,})// 方法二 通过uni.setTabB…...
IDEA2023版本创建JavaWeb项目及配置Tomcat详细步骤!
一、创建JavaWeb项目 第一步 之前的版本能够在创建时直接选成Web项目,但是2023版本在创建项目时没有该选项,需要在创建项目之后才能配置,首先先创建一个项目。 第二步 在创建好的项目中选中项目后(一定要注意选中项目名称然后继…...
WPF中MVVM常用的框架
在WPF开发中,MVVM(Model-View-ViewModel)是一种广泛使用的设计模式,它有助于分离应用程序的用户界面(View)、业务逻辑(Model)和数据表现层(ViewModel)。以下是…...
Mysql----内置函数
前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、日期函数 日期:年月日 时间:时分秒 查询:当前时间,只显示当前日期 注意:如果类型为date或者datetime。表中数据类型为date,你插入时…...
去除重复字母
题目链接 去除重复字母 题目描述 注意点 s 由小写英文字母组成1 < s.length < 10^4需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置) 解答思路 本题与移掉 K 位数字类似,需要注意的是,并不是每个字母都能…...
Xcode进行真机测试时总是断连,如何解决?
嗨。大家好,我是兰若姐姐。最近我在用真机进行app自动化测试的时候,经常会遇到xcode和手机断连,每次断连之后需要重新连接,每次断开都会出现以下截图的报错 当这种情况出现时,之前执行的用例就相当于白执行了ÿ…...
Redis的使用(五)常见使用场景-分布式锁实现原理
1.绪论 为了解决并发问题,我们可以通过加锁的方式来保证数据的一致性,比如java中的synchronize关键字或者ReentrantLock,但是他们只能在同一jvm进程上加锁。现在的项目基本上都是分布式系统,如何对多个java实例进行加锁ÿ…...
AppML 案例:Products
AppML 案例:Products AppML(Application Markup Language)是一种创新的、基于XML的标记语言,旨在简化Web应用程序的开发。它允许开发者通过声明性的方式定义应用程序的界面和数据绑定,从而提高开发效率和减少代码量。…...
数据库端口LookUp功能:从数据库中获取并添加数据到XML
本文将为大家介绍如何使用知行之桥EDI系统数据库端口的Lookup功能,从数据库中获取数据,并添加进输入的XML中。 使用场景:期待以输入xml中的值为判断条件从数据库中获取数据,并添加进输入xml中。 例如:接收到包含采购…...
视频联网共享平台LntonCVS视频监控汇聚平台视频云解决方案
LntonCVS流媒体平台是一款遵循国家GB28181标准协议的先进视频监控与云服务平台。该平台设计独特,能够同时接入并处理多路设备的视频流,支持包括RTSP、RTMP、FLV、HLS、WebRTC在内的多种视频流格式的分发。其功能丰富多样,涵盖了视频直播监控、…...
深入探索Python中的`__slots__`类属性:优化内存与限制灵活性
深入探索Python中的__slots__类属性:优化内存与限制灵活性 在Python编程的广阔领域中,性能优化总是开发者们关注的焦点之一。特别是在处理大量对象或资源受限的环境中,减少内存占用和提高访问速度显得尤为重要。Python的__slots__类属性正是…...
llama 2 改进之 RMSNorm
RMSNorm 论文:https://openreview.net/pdf?idSygkZ3MTJE Github:https://github.com/bzhangGo/rmsnorm?tabreadme-ov-file 论文假设LayerNorm中的重新居中不变性是可有可无的,并提出了均方根层归一化(RMSNorm)。RMSNorm根据均方根(RMS)将…...
Matlab【光伏预测】基于雪融优化算法SAO优化高斯过程回归GPR实现光伏多输入单输出预测附代码
% 光伏预测 - 基于SAO优化的GPR % 数据准备 % 假设有多个输入特征 X1, X2, …, Xn 和一个目标变量 Y % 假设数据已经存储在 X 和 Y 中,每个变量为矩阵,每行表示一个样本,每列表示一个特征 % 参数设置 numFeatures size(X, 2); % 输入特征的…...
ES6 模块
ES6 模块学习记录 ES6(ECMAScript 2015)模块是JavaScript官方的标准模块系统。它允许开发者以模块化的方式编写代码,模块可以在不同的文件之间进行组织和重用。 基本特征 默认导出(Default Exports):每个…...
谷粒商城-全文检索-ElasticSearch
1.简介 一个分布式的开源搜索和分析引擎,可以 秒 级的从海量数据中检索 主要功能:做数据的检索和分析(MySQL专攻于数据的持久化存储与管理CRUD达到百万以上的数据MSQL就会很慢,海量数据的检索和分析还是要用ElasticSearch) 用途:我们电商项目里的所有的检索功能都是由Elasti…...
Java的LinkedHashMap 源码解析
LinkedHashMap 是 Java 中的一种有序 Map,它扩展了 HashMap,提供了有序的元素存储方式。在 LinkedHashMap 中,元素的有序性可以按照插入顺序或访问顺序来维护,而这个有序性是通过维护一个双向链表来实现的,这也是实现 …...
长春启做网站多少/2020新闻大事件摘抄
C:\Documents and Settings\Administrator>db2startINST : 服务已返回特定的服务错误码。SQL1220N 不能分配数据库管理器共享内存集。C:\Documents and Settings\Administrator>db2samplStarting the DB2 instance...Creating database "SAMPLE"...Attempt to…...
北京公司注册地址多少钱一年/王通seo赚钱培训
解决引用openssl静态库libcrypto.a和libssl.a出现undefined reference to错误的问题参考文章: (1)解决引用openssl静态库libcrypto.a和libssl.a出现undefined reference to错误的问题 (2)https://www.cnblogs.com/Bo…...
深圳网站制作哪家专业/网站app免费生成软件
UbuntuForumWikiLinuxPasteChat搜索 頁面討論編輯歷史简体繁体導航 首頁最近更改隨機頁面页面分类幫助编辑 编辑指南沙盒現時事件字词处理工具箱 鏈入頁面鏈出更改所有特殊頁面個人工具 登入SubVersion 目錄 [隱藏]1 SubVersion服務安裝設置 1.1 簡介1.2 假設1.3 本文涉及的範…...
如何用织梦cms做网站/新闻头条今日要闻
转自:https://wenku.baidu.com/view/1ef7c985b9d528ea81c779b8.html 在人像和微距摄影中经常会遇到背景虚化的手法。所谓背景虚化,就是说在保证被摄主体清晰的同时,将远处的背景模糊掉,从而突出被摄主体。很多人会问,…...
做app网站需要什么条件/市场营销模式有哪些
Zebra项目图解...
建站行业现状探讨/优化网站有哪些方法
隐式意图在很多app中应用广泛,使用隐式意图不仅可以启动自己程序中的Activity,还可以启动其他程序中的Activity,使得程序之间可以共享某种功能。以下将对于用过的setAction()的方法作以归纳整理,持续更新… 1、android.intent.ac…...