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://www.mzph.cn/diannao/46231.shtml

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

相关文章

HCIA学习笔记(6)-ACL+NAT

ACL&#xff1a;访问控制列表 访问控制-------在路由器的入或者出接口上&#xff0c;匹配流量&#xff0c;之后产生动作-----只有允许或拒绝 定义感兴趣流量------帮助其他策略去抓流量 匹配规则&#xff1a;至上而下&#xff0c;逐一匹配&#xff0c;上条匹配按照上条执行&…

QTableView仿Excel表头排序和筛选

一.效果 Excel的排序和筛选弹窗如下所示 功能非常强大。不仅支持内容排序和筛选,还支持颜色的排序和筛选,而且还支持设置多种过滤条件。本文只仿最常用的内容排序和内容单过滤条件的筛选,效果如下所示。 从效果图中可以看出,表头Section中的按钮有下列六种状态 enum Butt…

算法的时间复杂度和空间复杂度-例题

一、消失的数字 . - 力扣&#xff08;LeetCode&#xff09; 本题要求的时间复杂度是O(n) &#xff0c;所以我们不能用循环嵌套&#xff1b; 解法一&#xff1a; int missingNumber(int* nums, int numsSize){int sum10;for(int i0;i<numsSize;i){sum1i;}int sum20;for(i…

成为CMake砖家(3):Windows安装make.exe

大家好&#xff0c;我是白鱼。相信很多朋友已经在用 CMake 做交叉编译了&#xff0c; 而交叉编译往往少不了 make.exe, 这篇来讲讲 make.exe 在 Windows 上的安装。 1. 交叉编译需要 generator CMake 本身是一个 meta build tool&#xff0c; 或者说它是派发任务到具体的 bui…

云计算练习题

第一题&#xff1a;每周日晚上11点59分需要将/data目录打包压缩到/mnt目录下并以时间命名 #crontab -e 59 23 * * 7 /bin/tar czvf /mnt/date %F-data.tar.gz /data 59 23 * * 7 /bin/tar czvf /mnt/date %T.tar.gz /data 第二题&#xff1a;查找出系统中/application目录下所有…

数据库使用SSL加密连接

简介 数据库开通SSL加密连接是确保数据传输过程中安全性的关键措施&#xff0c;它通过加密数据、验证服务器身份、保护敏感信息、维护数据完整性和可靠性&#xff0c;同时满足行业标准和法规要求&#xff0c;进而提升用户体验和信任度&#xff0c;为企业的数据安全和业务连续性…

离线语音识别芯片在智能生活中的应用

离线语音识别芯片&#xff0c;这一技术正逐渐渗透到我们日常生活的每一个角落&#xff0c;为众多产品带来前所未有的智能体验。它能够应用到多种产品中&#xff0c;‌包括但不限于&#xff1a;‌ 1、智能音箱&#xff1a;‌语音识别芯片作为智能音箱的核心&#xff0c;‌使用户…

钢铁与不锈钢区别

钢铁与不锈钢是两种比较特殊的金属材料&#xff0c;它们之间的主要区别可以从以下几个方面进行探讨&#xff1a; 钢属碳素钢&#xff1a;钢铁是含碳量介于0.02%至1.7%之间的铁合金&#xff0c;主要成分是铁&#xff08;Fe&#xff09;和碳&#xff0c;其中铁约占80%以上。它们…

Linux开发:Ubuntu22.04安装libcurl4

libcurl是一个跨平台的网络协议库&#xff0c;支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权&#xff0c;HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传&#xff0c;代理&#xff0c;cookies,和用户认证等&#xff0c;使用…

DNS域名解析原理及配置

目录 一、DNS原理 什么是DNS DNS 的作用 DNS 的工作原理 1. 用户输入域名 2. 查询本地 DNS 服务器 3. 递归查询 4. 根域名服务器 5. 顶级域名服务器 6. 权威 DNS 服务器 7. 返回结果 两种查询方式 二、DNS服务器系统类型 主域名服务器 从域名服务器 缓存域名服务…

搭建一个高并发的Web商品推荐系统,如何涉及软件架构?

搭建一个高并发的Web商品推荐系统&#xff0c;如何涉及软件架构 在搭建一个高并发的Web商品推荐系统时&#xff1a; 微服务架构&#xff1a; 为了支持高并发&#xff0c;我们可以采用微服务架构&#xff0c;将系统拆分成小型、独立的服务&#xff0c;每个服务专注于特定的功…

昇思25天学习打卡营第25天|GAN图像生成

学AI还能赢奖品&#xff1f;每天30分钟&#xff0c;25天打通AI任督二脉 (qq.com) GAN图像生成 模型简介 生成式对抗网络(Generative Adversarial Networks&#xff0c;GAN)是一种生成式机器学习模型&#xff0c;是近年来复杂分布上无监督学习最具前景的方法之一。 GAN论文逐…

C++ 入门11:虚函数和多态

往期回顾&#xff1a; C 入门08&#xff1a;运算符重载-CSDN博客 C 入门09&#xff1a;友元函数和友元类-CSDN博客 C 入门10&#xff1a;继承和派生类-CSDN博客 C 入门第十一天&#xff1a;虚函数和多态 一、前言 在前面的文章学习中&#xff0c;我们了解了类和对象的基础知识…

1.32、 基于区域卷积神经网络(R-CNN)的停车标志检测(matlab)

1、基于区域卷积神经网络(R-CNN)的停车标志检测原理及流程 基于区域卷积神经网络&#xff08;R-CNN&#xff09;的停车标志检测原理及流程如下&#xff1a; 原理&#xff1a; R-CNN 是一种用于目标检测的深度学习模型&#xff0c;其核心思想是首先在输入图像中提取出候选区域&…

优化调试体验:让PyCharm的调试过程飞起来

优化调试体验&#xff1a;让PyCharm的调试过程飞起来 PyCharm是一款功能强大的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了许多便利的调试工具来帮助开发者快速定位和解决问题。然而&#xff0c;在某些情况下&#xff0c;用户可能会遇到调试过程缓慢的…

请结合一个问题bug,帮忙梳理一下DecorView和Window之间的关系

在Android开发中&#xff0c;DecorView 和 Window 是两个核心概念&#xff0c;它们在用户界面显示和布局管理中扮演着重要角色。为了更好地理解它们之间的关系&#xff0c;并通过一个假设的bug场景来梳理它们&#xff0c;我们可以从以下几个方面进行阐述。 1. Window 的概念 …

Typescript Vue3中的defineProps接收参数,并withDefaults设置默认值

1. defineProps&#xff1a;接收父组件传递的参数 2. withDefaults&#xff1a;接收时设置默认值 这两个api都不需要引入&#xff0c;可直接在setup中使用 1. person.vue接收参数 <script setup lang"ts">import type {Persons} from /types// 接收list 可不…

springboot3 web

springboot web配置 springboot web的配置有&#xff1a; SpringMvc配置的前缀为&#xff1a;spring.mvcweb场景的通用配置为&#xff1a;spring.web文件上传的配置为&#xff1a;spring.servlet.multipart服务器相关配置为&#xff1a;server 接管SpringMVC 的三种方式 方…

【算法】无重复字符的最长子串

难度&#xff1a;中等 题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串的长度。 示例&#xff1a; 示例1&#xff1a; 输入&#xff1a;s “abcabcbb” 输出&#xff1a;3 解释&#xff1a;因为无重复字符的最长子串是 “abc”&#xff0c;所以…