蓝桥杯篇---超声波距离测量频率测量
文章目录
- 简介
- 第一部分:超声波的简介
- 工作原理
- 1.发射超声波
- 2.接收反射波
- 3.计算时间差
- 4.计算距离
- 硬件连接
- 1.Trig
- 2.Echo
- 示例代码
- 代码说明
- 注意事项
- 1.声速
- 2.延时精度
- 3.硬件连接
- 第二部分:频率测量简介
- 频率测量原理
- 1.信号输入
- 2.计数
- 3.计算频率
- 硬件连接
- 示例代码:使用定时器和外部中断测量频率
- 代码说明
- 频率计算公式
- 注意事项
- 1.定时器溢出时间
- 2.信号幅度
- 3.噪声干扰
- 4.测量范围
- 总结
简介
本文简单介绍了IAP15F2K61S2中的超声波距离测量与频率测量。
第一部分:超声波的简介
IAP15F2K61S2 是一款基于8051内核的单片机,常用于超声波测距。超声波测距通过发射超声波并接收反射波,计算时间差来确定距离。
工作原理
1.发射超声波
发射超声波:单片机通过IO口触发超声波传感器发射超声波。
2.接收反射波
接收反射波:传感器接收反射波并输出信号。
3.计算时间差
计算时间差:单片机测量发射到接收的时间差。
4.计算距离
计算距离:根据声速和时间差计算距离。
硬件连接
1.Trig
Trig:连接单片机IO口,用于触发超声波。
2.Echo
Echo:连接单片机IO口,用于接收反射信号。
示例代码
以下代码展示了如何在IAP15F2K61S2上实现超声波测距。
#include <reg52.h>#define uchar unsigned char
#define uint unsigned intsbit Trig = P1^0; // 超声波Trig引脚
sbit Echo = P1^1; // 超声波Echo引脚void delay_us(uint us) {while (us--);
}void delay_ms(uint ms) {uint i, j;for (i = ms; i > 0; i--)for (j = 110; j > 0; j--);
}void Ultrasonic_Init() {Trig = 0;Echo = 1;
}uint Ultrasonic_Measure() {uint time = 0;Trig = 1;delay_us(10); // 保持10us高电平Trig = 0;while (!Echo); // 等待Echo变高while (Echo) { // 测量高电平时间time++;delay_us(1);}return time;
}void main() {uint distance;Ultrasonic_Init();while (1) {distance = Ultrasonic_Measure() * 0.017; // 计算距离,单位cmdelay_ms(100); // 延时100ms}
}
代码说明
-
delay_us 和 delay_ms:用于微秒和毫秒级延时。
-
Ultrasonic_Init:初始化超声波传感器。
-
Ultrasonic_Measure:触发超声波并测量反射时间。
-
main:循环测量距离并计算。
注意事项
1.声速
声速:假设声速为340m/s,实际应用中需根据环境调整。
2.延时精度
延时精度:延时函数的精度会影响测量结果。
3.硬件连接
硬件连接:确保Trig和Echo引脚连接正确。
通过以上代码,你可以在IAP15F2K61S2上实现超声波测距。
第二部分:频率测量简介
IAP15F2K61S2 是一款基于8051内核的单片机,支持通过定时器和外部中断实现频率测量。频率测量通常用于测量周期性信号的频率,例如方波、正弦波等。
频率测量原理
1.信号输入
信号输入:将待测信号连接到单片机的外部中断引脚或定时器输入引脚。
2.计数
计数:在固定时间内统计信号的脉冲数量。
3.计算频率
计算频率:根据脉冲数量和测量时间计算频率。
硬件连接
将待测信号连接到单片机的 P3.2(INT0) 或 P3.3(INT1) 引脚(外部中断引脚),或者连接到定时器的输入引脚(如 T0 或 T1)。
示例代码:使用定时器和外部中断测量频率
以下代码展示了如何使用定时器和外部中断在 IAP15F2K61S2 上实现频率测量。
#include <reg52.h>#define uchar unsigned char
#define uint unsigned intsbit FreqInput = P3^2; // 待测信号连接到P3.2(INT0)uint pulse_count = 0; // 脉冲计数
bit measure_flag = 0; // 测量标志位void Timer0_Init() {TMOD |= 0x02; // 定时器0,模式2(8位自动重装)TH0 = 0x00; // 初始值TL0 = 0x00;ET0 = 1; // 使能定时器0中断EA = 1; // 使能总中断TR0 = 1; // 启动定时器0
}void External_Init() {IT0 = 1; // 设置INT0为下降沿触发EX0 = 1; // 使能外部中断0EA = 1; // 使能总中断
}void Timer0_ISR() interrupt 1 {measure_flag = 1; // 定时器溢出,设置测量标志
}void External_ISR() interrupt 0 {pulse_count++; // 每次下降沿触发,脉冲计数加1
}void main() {uint frequency = 0;Timer0_Init(); // 初始化定时器0External_Init(); // 初始化外部中断while (1) {if (measure_flag) { // 如果定时器溢出measure_flag = 0; // 清除标志位frequency = pulse_count * 2; // 计算频率(假设定时器溢出时间为0.5秒)pulse_count = 0; // 重置脉冲计数}}
}
代码说明
-
Timer0_Init:初始化定时器0,设置为模式2(8位自动重装),定时器溢出时间为固定值。
-
External_Init:初始化外部中断0,设置为下降沿触发。
-
Timer0_ISR:定时器0中断服务函数,定时器溢出时设置测量标志。
-
External_ISR:外部中断0服务函数,每次检测到下降沿时增加脉冲计数。
-
main:主循环中检测测量标志,计算频率并重置计数。
频率计算公式
频率 = 脉冲数 / 测量时间
代码中假设定时器溢出时间为 0.5 秒,因此频率为 pulse_count * 2。
注意事项
1.定时器溢出时间
定时器溢出时间:根据实际需求调整定时器的溢出时间,确保测量精度。
2.信号幅度
信号幅度:待测信号的幅度需要在单片机输入引脚的可接受范围内。
3.噪声干扰
噪声干扰:高频信号可能受到噪声干扰,建议在硬件上添加滤波电路。
4.测量范围
测量范围:定时器和外部中断的频率测量范围有限,高频信号可能需要分频处理。
通过以上代码和说明,你可以在 IAP15F2K61S2 上实现频率测量功能。如果需要测量更高频率的信号,可以考虑使用定时器的捕获功能或外部计数器。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了IAP15F2K61S2中的超声波距离测量与频率测量。
相关文章:
蓝桥杯篇---超声波距离测量频率测量
文章目录 简介第一部分:超声波的简介工作原理1.发射超声波2.接收反射波3.计算时间差4.计算距离 硬件连接1.Trig2.Echo 示例代码代码说明注意事项1.声速2.延时精度3.硬件连接 第二部分:频率测量简介频率测量原理1.信号输入2.计数3.计算频率 硬件连接示例代…...
机器学习所需要的数学知识【01】
总览 导数 行列式 偏导数 概理论 凸优化-梯度下降 kkt条件...
【D2】神经网络初步学习
总结:学习了 PyTorch 中的基本概念和常用功能,张量(Tensor)的操作、自动微分(Autograd)、正向传播、反向传播。通过了解认识LeNet 模型,定义神经网络类,熟悉卷积神经网络的基本结构和…...
变相提高大模型上下文长度-RAG文档压缩-3.优化map-reduce(reranker过滤+社区聚类)
我遇到的业务问题实际上是RAG需要处理很多同一对象的日常报告,不像常识类问题,它的相关Document更多而且更分散,日常报告代表数据库里有很多它的内容,而且对象可能只在段落中的几句话提及到。top-k数量受限于大模型长度࿰…...
电解电容的参数指标
容量 这个值通常是室温25℃,在一定频率和幅度的交流信号下测得的容量。容量会随着温度、直流电压、交流电压值的变化而改变。 额定电压 施加在电容上的最大直流电压,通常要求降额使用。 例如额定电压是4V,降额到70%使用,最高施…...
计时器任务实现(保存视频和图像)
下面是一个简单的计时器任务实现,可持续地每秒保存一幅图像,也可持续地每60秒保存一个视频,图像和视频均以当前时间命名: TimerTask类的实现如下: class TimerTask { public:TimerTask(const std::string& path):…...
Django 美化使用ModelForm的输入框
在初次使用ModelForm时,我的html文件代码如下,主要内容是显示一个卡片式表单,通过循环遍历 form 对象动态生成表单字段 {% extends layout.html %}{% block content %} <div class"container"><div class"c1"&g…...
应用层优秀的共享民宿物联网框架该怎么选?
有一说一,应用层优秀的物联网框架通常能帮助提升用户体验、提高运营效率、节能减排等等优势,很多老板也很注重这个层面的设计和打磨,那么对于选择应用层优秀的共享民宿物联网框架时,大家可以从哪几个关键因素进行考量呢࿱…...
【kafka系列】生产者
目录 发送流程 1. 流程逻辑分析 阶段一:主线程处理 阶段二:Sender 线程异步发送 核心设计思想 2. 流程 关键点总结 重要参数 一、核心必填参数 二、可靠性相关参数 三、性能优化参数 四、高级配置 五、安全性配置(可选࿰…...
HCIA-路由器相关知识和面试问题
二、 路由器 2.1 关于路由器的知识 2.1.1 什么是路由器 路由器是一种网络层互联设备,主要用于连接多个逻辑上分开的网络,实现不同网络之间的数据路由和通信。它能根据网络层地址(如 IP 地址)来转发数据包,在网络中起…...
Unity 获取独立显卡数量
获取独立显卡数量 导入插件包打开Demo 运行看控制台日志 public class GetGraphicCountDemo : MonoBehaviour{public int count;// Start is called before the first frame updatevoid Start(){count this.GetIndependentGraphicsDeviceCount();}}...
【stm32】定时器输出PWM波形(hal库)
一. PWM基本原理 PWM是一种通过调节信号的占空比(Duty Cycle)来控制输出平均电压的技术。占空比是指高电平时间与整个周期时间的比值。例如: - 占空比为50%时,输出平均电压为电源电压的一半。 - 占空比为100%时,输出始…...
Deepseek R1模型本地化部署+API接口调用详细教程:释放AI生产力
文章目录 前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装ollama2部署DeepSeek R1模型删除已存在模型,以7b模型为例 三、DeepSeek API接口调用Cline配置 前言 随着最近人工智能 DeepSeek 的爆火,越来越多的技术大佬们开始关注如…...
Mac ARM 架构的命令行(终端)中,删除整行的快捷键是:Ctrl + U
在 Mac ARM 架构的命令行(终端)中,删除整行的快捷键是: Ctrl U这个快捷键会删除光标所在位置到行首之间的所有内容。如果你想删除光标后面的所有内容,可以使用: Ctrl K这两个快捷键可以帮助你快速清除当…...
用pytorch实现一个简单的图片预测类别
前言: 在阅读本文之前,你需要了解Python,Pytorch,神经网络的一些基础知识,比如什么是数据集,什么是张量,什么是神经网络,如何简单使用tensorboard,DataLoader。 本次模型训练使用的是…...
深度学习框架探秘|TensorFlow:AI 世界的万能钥匙
在人工智能(AI)蓬勃发展的时代,各种强大的工具和框架如雨后春笋般涌现,而 TensorFlow 无疑是其中最耀眼的明星之一。它不仅被广泛应用于学术界的前沿研究,更是工业界实现 AI 落地的关键技术。今天,就让我们…...
Linux: 调整套接字缓冲区大小相关内核参数
Linux: 调整套接字缓冲区大小相关内核参数 内核参数关于套接字缓冲区大小相关的设置,这些参数控制了TCP和UDP套接字的接收和发送缓冲区的最大值、默认值以及动态调整范围。 当前配置 net.core.rmem_max 212992 # 最大接收缓冲区大小(字节&#…...
Linux 服务器部署deepseek
把手教你在linux服务器部署deepseek,打造专属自己的数据库知识库 正文开始 第一步:安装Ollama 打开官方网址:https://ollama.com/download/linux 下载Ollama linux版本 复制命令到linux操作系统执行 [rootpostgresql ~]# curl -fsSL http…...
性能测试工具
Postman Postman 是一款功能强大的API开发协作平台,支持构建、测试和记录 API。这款工具提供了直观的图形界面来发送请求并查看响应数据。它还允许创建复杂的 HTTP 请求序列,并能通过内置脚本引擎实现自动化测试场景。 对于团队合作而言,Po…...
DeepSeek、Kimi、文心一言、通义千问:AI 大语言模型的对比分析
在人工智能领域,DeepSeek、Kimi、文心一言和通义千问作为国内领先的 AI 大语言模型,各自展现出了独特的特点和优势。本文将从技术基础、应用场景、用户体验和价格与性价比等方面对这四个模型进行对比分析,帮助您更好地了解它们的特点和优势。…...
反转链表2(92)
92. 反转链表 II - 力扣(LeetCode) 相关题目:206. 反转链表 - 力扣(LeetCode) 解法: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(…...
CSDN、markdown环境下如何插入各种图(流程图,时序图,甘特图)
流程图 横向流程图 mermaid graph LRA[方形] --> B{条件a}B -->|满足| C(圆角)B -->|不满足| D(圆角)C --> E[输出结果1]D --> E效果图: 竖向流程图 mermaid graph TDC{条件a} --> |a1| A[方形]C --> |a2| F[竖向流程图]A --> B(圆角)B …...
《探秘AI绿色计算:降低人工智能硬件能耗的热点技术》
在人工智能飞速发展的当下,其硬件能耗问题愈发凸显。据国际能源署预测,人工智能的能源消耗可能大幅增长。因此,降低人工智能硬件能耗,实现绿色计算,已成为行业关键课题。以下是一些正在崭露头角的热点技术。 新型硬件…...
《Foundation 起步》
《Foundation 起步》 引言 在当今快速发展的科技时代,了解并掌握最新的技术是至关重要的。本文旨在为初学者提供一个全面的《Foundation》起步指南,帮助大家快速入门并掌握这一强大的技术。 一、什么是Foundation? Foundation 是一个流行的前端框架,由 ZURB 公司开发。…...
【Elasticsearch】runtime_mappings搜索请求中定义运行时字段
在 Elasticsearch 中,在搜索请求中定义运行时字段(Runtime Fields)是一种强大的功能,允许用户在查询时动态添加和计算字段,而无需预先在索引映射中定义这些字段。这种方式提供了极大的灵活性,尤其是在处理动…...
unity学习40:导入模型的 Animations文件夹内容,动画属性和修改动画文件
目录 1 Animations文件夹内容 2 每个模型文件的4个标签 3 model 4 rig 动画类型 5 Animation 5.1 新增动画和修改动画 5.2 限制动画某个轴的变化,烘焙 6 material 材料 1 Animations文件夹内容 下面有很多文件夹每个文件夹都是不同的动作模型每个文件夹下…...
【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十三节】
ISO 14229-1:2023 UDS诊断服务测试用例全解析(ControlDTCSetting_0x85服务) 作者:车端域控测试工程师 更新日期:2025年02月14日 关键词:UDS协议、0x85服务、DTC设置控制、NRC覆盖、ISO 14229-1:2023 一、服务功能概述…...
web第三次作业
弹窗案例 1.首页代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>综合案例</title><st…...
GMSL 实例1:当 MAX96717 遇上 MAX96724,打通 Camera 视频数据传输
新年伊始,继 Deepseek 在 AI 圈掀起风波之后。比亚迪在2月10日发布会上重磅官宣:全系车型将搭载自研的高阶智驾系统“天神之眼”,覆盖从10万元级入门车型到高端豪华车型的所有范围。此举如一颗重磅炸弹投向当前一卷再卷的新能源汽车赛道&…...
Python实现AWS Fargate自动化部署系统
一、背景介绍 在现代云原生应用开发中,自动化部署是提高开发效率和保证部署质量的关键。AWS Fargate作为一项无服务器计算引擎,可以让我们专注于应用程序开发而无需管理底层基础设施。本文将详细介绍如何使用Python实现AWS Fargate的完整自动化部署流程。 © ivwdcwso (ID…...
