『51单片机』蜂鸣器
🚩 WRITE IN FRONT 🚩
- 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎
- 🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评百大博主、华为云享专家、阿里云专家博主、掘金优秀创作者、全网粉丝量8w+、个人社区人数累计4w+、全网访问量100w+ 🏅
- 🆔 本文章内容由 謓泽 原创 如需相关转载请提前告知博主 ⚠
- 📑 创作时间:2022 年 11 月 2 日 📅
- 📝 个人主页:謓泽的博客 📃
- 📣 专栏系列:【51单片机】系列_謓泽的博客📃
- 🙌 Gitee:謓泽 (wsxsx) - Gitee.com ⭐️
- 🎁 点赞👍+ 收藏⭐️+ 留言📝
✉️ 我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 📩
简介
蜂鸣器是一种只能将电信号转换为声信号的器件,常用来产生设备的按键音、报警音等提示音。
蜂鸣器按照驱动方式可以分为有源蜂鸣器和无源蜂鸣器。
有源蜂鸣器:内部自带振荡源,将正负极街上直流电压(达到要求)即可持续发出声音,频率固定的。
无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可以持续发出声音。调整提供脉冲的振荡脉冲频率可以发出不同频率的声音的(设计的时候不能让无源蜂鸣器一直处于通电状态当中)开发板使用的就是无源蜂鸣器。
注→蜂鸣器只能发出一种鸣叫的声音(音色是只有一种的不能发出像其它乐理的声音)
驱动电路
NPN三极管⇢高电平触发。
PNP三极管⇢低电平触发。
注→在三极管的基极信号当中,这里的基极电阻的范围1k~10k都是可以的。
集成电路驱动:VCC连接了一个电阻再连接到蜂鸣器的一根引脚另一个脚的(BZ)的网络编号另一头连接到了五线四相步进电机(ULN2003)连接到OUT5(BZ)P15是单片机的引脚相当于控制信号。注:在这里的话给P15(高电平"1")的话是有驱动的,原因是里面有一个(非门)如下图原理图所示↓那么我们要让我们的单片机蜂鸣器响应也非常的简单我们给BZ低电平即可。
UN2003()﹣达令顿管阵列
乐理
在学习蜂鸣器的同时我们也需要掌握一些基础的乐理这样我们就可以使用蜂鸣器来演奏不同的歌曲了。下面是钢琴键盘的无限谱对照表如下↓
降记号(b)表示将基本音级的音高降低半音,根据该记号所在的线或间而降音。
还原记号:表示把已经升高或降低的音还原。
升记号(#)表示将基本音级的音高升高半音,根据该记号所在的线或间而降音。
如下是音符,像我们最熟知的小⭐⭐基本以四分音符为一拍的。
我们可以列一个时间的基准值假设为0.5(s)那么二分音符就是1s、全音符就是2s。八分音符就是0.25(s)依次类推,从上述我们观察可以得出都是以2倍为β倍的。
红色框线中向上弯曲的曲线叫延音线,它可以将两个或两个以上相同音高的音符相连,在钢琴演奏时作爲一个音符,它的拍值等于这些音符的拍值总和。当然延音线也可以用向下弯曲的曲线表示。
音频与频率对照表
通过上述的音频与频率对照表根据频率(HZ)的值可以控制定时器产生相应频率的计时。如何用单片机产生频率就可以用定时器+中断。
周期的单位(s):T = 1/f(频率) 由于转换的时间单位数值比较小(s)单位的话,那么我们把周期时间单位转换成(us)乘以10^6次方。
注⇢在这里周期/2(us)是因为一个周期的占空比是(50%)也就是半个周期的高电平以及半个周期的低电平。重装载值就是定时器当中计数值在这里总数是65535us减去的数字是溢出差值这个就是决定了它的一个音调频率的一个值了。在写程序的时候我们可以把这些存放进数组当中去。然后获取相对应的值放到定时器中断当中即可。如果对这个定时器不熟悉或者是忘了的话可以看博主前面的文章哟(●'◡'●)
蜂鸣器发声
让蜂鸣器响应发声的话特别容易我们只需要把IO口翻转一下即可。
#include <REGX52.H> sbit Buzzer = P1^5; int main(void) {Buzzer=!Buzzer; }
显然上述代码是不允许让蜂鸣器持续发生的,因为我们只是翻转了一次IO口相当于没有发出声音。所以我们需要用到循环和延迟保证让它翻转的时间够长。如下代码所示↓
#include <REGX52.H> sbit Buzzer = P1^5; void Delay(unsigned int xms) {unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);} } int main(void) {unsigned int i;while(1){for(i=0;i<500;i++){Buzzer=!Buzzer;Delay(1);}} }
在上述代码当中是每隔1ms可以翻转一次IO口电平。
周期时间为高电平1ms低电平1ms一个周期时间为2ms。频率f=1/T=500HZ。
这里循环1次是1ms。那么这里的i<500就会以500HZ的频率响应500ms。
同理如果我们改成i<100的话会以100HZ的频率响应100ms。
Buzzer模块化
#include <REGX52.H> #include <INTRINS.H>//蜂鸣器端口: sbit Buzzer=P1^5;/*** @brief 蜂鸣器私有延时函数,延时500us* @param 无* @retval 无*/ void Buzzer_Delay500us() //@12.000MHz {unsigned char i;_nop_();i = 247;while (--i); }/*** @brief 蜂鸣器发声* @param ms 发声的时长(ms),范围:0~32767* @retval 无*/ void Buzzer_Time(unsigned int ms) {unsigned int i;for(i=0;i<ms*2;i++){Buzzer=!Buzzer;Buzzer_Delay500us();//f=1/1ms=1000HZ,一个时间周期翻转两次。} }
相关文章:

『51单片机』蜂鸣器
🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…...

计算机视觉 | 基于二值图像数字矩阵的距离变换算法
Hi,大家好,我是半亩花海。本实验基于 OpenCV 实现了二值图像数字矩阵的距离变换算法。首先生成一个 480x480 的黑色背景图像(定义黑色为0,白色为1),在其中随机选择了三个白色像素点作为距离变换的原点&…...

Arcgis windows webadaptor配置
注意windows下安装细节 1、电脑必须添加限定域名及dns后缀。 准备工作 a、安装webadaptor,获取jar文件 b、tomcat中部署两个jar,名字不相同,一个用server配置,一个用于portal配置 c、geoserver用来配置server d、geoscene用来配置…...

对接阿里云实时语音转文字的思路
将上述概念转化为详细代码需要一定的步骤。这里,我们将根据之前讨论的服务划分,创建一个简化的框架来模拟这个流程。注意,由于空间限制和简化目的,某些实现细节会被省略或简化,你可能需要根据实际情况进行调整。 1. 配…...

如何转行成为产品经理?
转行NPDP也是很合适的一条发展路径,之后从事新产品开发相关工作~ 一、什么是NPDP? NPDP 是产品经理国际资格认证,美国产品开发与管理协会(PDMA)发起的,是目前国际公认的唯一的新产品开发专业认证ÿ…...

SpringCloudAlibaba-整合nacos(二)
目录地址: SpringCloudAlibaba整合-CSDN博客 一、nacos服务部分 1.下载nacos,并执行数据库脚本:nacos-mysql.sql 2.修改配置文件,配置mysql 3.启动nacos ./startup.sh -m standalone 4.访问:http://127.0.0.1:884…...

STM32H7通用定时器计数功能的使用
目录 概述 1 STM32定时器介绍 1.1 认识通用定时器 1.2 通用定时器的特征 1.3 递增计数模式 1.4 时钟选择 2 STM32Cube配置定时器时钟 2.1 配置定时器参数 2.2 配置定时器时钟 3 STM32H7定时器使用 3.1 认识定时器的数据结构 3.2 计数功能实现 4 测试案例 4.1 代码…...

信息系统项目管理师0044:IT治理方法与标准(3信息系统治理—3.1 IT治理—3.1.4 IT治理方法与标准)
点击查看专栏目录 文章目录 3.1.4 IT治理方法与标准1. ITSS中1T服务治理 3.1.4 IT治理方法与标准 考虑到IT治理对组织战略目标达成的重要性,国内外各类机构持续研究并沉淀IT治理相关的最佳实践方法、定义相关标准,这里面比较典型的是我国信息技术服务标准…...

探索Linux:在VMware虚拟机上安装Linux操作系统
探索Linux:在VMware虚拟机上安装Linux操作系统 在计算机领域,Linux操作系统以其稳定性、安全性和自由开源的特点备受青睐。通过在VMware虚拟机上安装Linux,您可以轻松体验Linux操作系统的强大功能。本文将详细介绍在VMware虚拟机上安装Linux…...

JavaScript进阶6之函数式编程与ES6ESNext规范
函数式编程 柯里化currycurrycompose示例:简化版展开写: debug示例一:示例二: 模板字符串css in js方案 箭头函数问题 生成器 generator应用场景 反射 Reflect 柯里化curry compose是curry的应用 在 lodash/fp underscore ramba …...

AcWing 1381. 阶乘
解题思路 最后一位数相乘的变化。注意:为什么不是ss%10,如果12 * 15, 12的最后一位时2, * 1530,则为3,问题是12*15180,为8,两 者不符,说明ss%10中的10要多加0. import j…...

Leetcode 394. 字符串解码
心路历程: 这道题看到括号直接想到栈,五分钟新题直接秒了,一开始以为需要两个栈分别存储数字和非数字,后来发现一个栈就够了,思路如图: 这道题考察的应该是队栈这两种数据结构的转换,因为每次…...

LeetCode - 1702. 修改后的最大二进制字符串
文章目录 解析AC CODE 题目链接:LeetCode - 1702. 修改后的最大二进制字符串 解析 详细题解:贪心,简洁写法(Python/Java/C/Go/JS/Rust) 思路很牛b。 简单来说我们需要想办法将0配对,将其变为10࿰…...

虹科Pico汽车示波器 | 免拆诊断案例 | 2011款东风悦达起亚K5车发动机偶尔起动困难
一、故障现象 一辆2011款东风悦达起亚K5车,搭载G4KD发动机,累计行驶里程约为24.5万km。车主反映,第1次起动发动机时偶尔无法起动着机,第2次能够正常起动着机,但发动机故障灯异常点亮。为此在其他维修厂维修过…...

Docker- Redis
博文目录 文章目录 说明前置命令 说明 Docker Hub Redis 数据卷数据卷印射在容器内的路径redis/data 容器内的路径说明/data数据目录/data/redis.conf配置文件 前置 在 GitHub 找一份 redis.conf 配置文件, 放到卷 redis 中, 按需修改 # bind 127.0.0.1 # 解除只允许环回地…...

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之八 简单视频素描效果
Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之八 简单视频素描效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之八 简单视频素描效果 一、简单介绍 二、简单指定视频某片段快放效果实现原理 三、简单指定视频某…...

数据结构——线性表(链式存储结构)
语言:C语言软件:Visual Studio 2022笔记书籍:数据结构——用C语言描述如有错误,感谢指正。若有侵权请联系博主 一、线性表的逻辑结构 线性表是n个类型相同的数据元素的有限序列,对n>0,除第一元素无直接…...

面试算法-169-二叉树的中序遍历
题目 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2] 解 class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> resul…...

计算机视觉——引导APSF和梯度自适应卷积增强夜间雾霾图像的可见性算法与模型部署(C++/python)
摘要 在夜间雾霾场景中,可见性经常受到低光照、强烈光晕、光散射以及多色光源等多种因素的影响而降低。现有的夜间除雾方法常常难以处理光晕或低光照条件,导致视觉效果过暗或光晕效应无法被有效抑制。本文通过抑制光晕和增强低光区域来提升单张夜间雾霾…...

git bash用法-批量修改文件名
在win系统上安装git bash可以使用命令行模式操作,比较方便 1.原始文件名 2.代码 for file in *3utr*; do mv "$file" "$(echo "$file" | sed s/3utr/5utr/)"; done3.修改后的文件名...

分布式社交媒体:探索Web3对社交媒体的改变
在数字化时代,社交媒体已成为人们日常生活中不可或缺的一部分。然而,传统的社交媒体平台往往由中心化的机构或公司掌控,用户的数据和内容受到限制,引发了一系列的隐私和安全问题。随着区块链技术的发展,分布式社交媒体…...

vue的监视属性
目录 1. 场景引入2. watch3. 深度监视4. 监视属性简写5. 小结 1. 场景引入 在实际开发中,有时开发者需要根据某个属性的变化,做出相应的决策,因此Vue为开发者提供了watch.这一监视属性,用于实现此类需求。比如下面这个场景&…...

外包干了15天,技术倒退明显
先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…...

防止邮箱发信泄露服务器IP教程
使用QQ邮箱,网易邮箱,189邮箱,新浪邮箱,139邮箱可能会泄露自己的服务器IP。 泄露原理:服务器通过请求登录SMTP邮箱服务器接口,对指定的收件人发送信息。 建议大家使用商业版的邮箱,比如阿里云邮箱发信等 防止邮件发信漏源主要关注的是确保邮件…...

鸿蒙HarmonyOS开发实战:【分布式音乐播放】
介绍 本示例使用fileIo获取指定音频文件,并通过AudioPlayer完成了音乐的播放完成了基本的音乐播放、暂停、上一曲、下一曲功能;并使用DeviceManager完成了分布式设备列表的显示和分布式能力完成了音乐播放状态的跨设备分享。 本示例用到了与用户进行交…...

【iOS ARKit】App 中嵌入 AR Quick Look
AR Quick Look 功能强大,但在应用中嵌入并使用它实现 AR体验却非常简单,如其他所有QuickLook使用一样,简单到只需要提供一个文件名就可以达到目标。 AR Quick Look 支持.usdz 和.reality 两种格式文件,如果在 Xcode 工程中引入了 …...

【Web开发】jquery图片放大镜效果制作变焦镜头图片放大
jquery图片放大镜效果制作变焦镜头图片放大实现 整体步骤流程: 1. 前端html实现 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"…...

RTC实时显示时间(备份电源 备份域的作用)
RTC初始化配置 系统复位后,可通过 PWR 电源控制寄存器 (PWR_CR) 的 DBP 位保护 RTC 寄存器以防止 非正常的写访问。必须将 DBP 位置 1 才能使能 RTC 寄存器的写访问。 上电复位后,所有 RTC 寄存器均受到写保护。通过向写保护寄存器 (RTC_WPR) 写入一个…...

【YOLOv9】完胜V8的SOTA模型Yolov9(论文阅读笔记)
官方论文地址: 论文地址点击即可跳转 官方代码地址: GitCode - 开发者的代码家园 官方代码地址点击即可跳转 1 总述 当输入数据经过各层的特征提取和变换的时候,都会丢失一定的信息。针对这一问题:...

学生管理系统详细需求文档
文章目录 1. 引言1.1 目的1.2 范围 2. 功能性需求2.1 用户认证2.1.1 登录 2.2 学生信息管理2.2.1 学生档案2.2.2 学籍管理 2.3 课程管理2.3.1 课程信息2.3.2 选课系统 2.4 成绩管理2.4.1 成绩录入2.4.2 成绩查询 2.5 课程进度和通知2.5.1 课程日历2.5.2 通知和提醒 2.6 学生活动…...