当前位置: 首页 > news >正文

51单片机-第八节-蜂鸣器

一、什么是蜂鸣器?

蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号。

蜂鸣器按驱动方式可分为有源蜂鸣器无源蜂鸣器

有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。
无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音。

二、51蜂鸣器原理:

同理,一种单片机一个样,本篇只讲51。

蜂鸣器原理图:很简单,BZ接通即响,BZ则接通到五线四相步进电机上。

五线四相步进电机:BZ由P1_5控制,给1则蜂鸣器响。

内部原理图:(扩展)

三、音高:控制频率:

方法:定时器中断:

sbit Buzzer = P1 ^ 5;//蜂鸣器//低音L,中音M,高音H,后面为数组FreqTable的对应位置
#define P   0
#define L1  1     //低音1
#define L1_ 2     //1#,右边'_'标明#
#define L2  3
#define L2_ 4
#define L3  5
#define L4  6
#define L4_ 7
#define L5  8
#define L5_ 9
#define L6  10
#define L6_ 11
#define L7  12
#define M1  13     //中音1
#define M1_ 14     //1#
#define M2  15
#define M2_ 16
#define M3  17
#define M4  18
#define M4_ 19
#define M5  20
#define M5_ 21
#define M6  22
#define M6_ 23
#define M7  24
#define H1  25     //高音1
#define H1_ 26     //1#
#define H2  27
#define H2_ 28
#define H3  29
#define H4  30
#define H4_ 31
#define H5  32
#define H5_ 33
#define H6  34
#define H6_ 35
#define H7  36//前面0的目的是休止,后面是,音高所对应的,定时器起始时长
unsigned int FreqTable[] = { 0,63628,63731,63835,63928,64021,64103,64185,64260,64331,64400
,64463,64528,64580,64633, 64684, 64732,64777, 64820, 64860, 64898, 64934,64968,65000,
65030,65058, 65085,65110, 65134, 65157, 65178, 65198, 65217,65235,65252,65268, 65283, };void Timer0_Routine() interrupt 1
{if (FreqTable[FreqSelect]){TH0 = FreqTable[FreqSelect] / 256;TL0 = FreqTable[FreqSelect] % 256 + 1;Buzzer = !Buzzer;}
}

三、实战:蜂鸣器播放音乐:小星星

//低音L,中音M,高音H,后面为数组FreqTable的对应位置
#define P   0
#define L1  1     //低音1
#define L1_ 2     //1#,右边'_'标明#
#define L2  3
#define L2_ 4
#define L3  5
#define L4  6
#define L4_ 7
#define L5  8
#define L5_ 9
#define L6  10
#define L6_ 11
#define L7  12
#define M1  13     //中音1
#define M1_ 14     //1#
#define M2  15
#define M2_ 16
#define M3  17
#define M4  18
#define M4_ 19
#define M5  20
#define M5_ 21
#define M6  22
#define M6_ 23
#define M7  24
#define H1  25     //高音1
#define H1_ 26     //1#
#define H2  27
#define H2_ 28
#define H3  29
#define H4  30
#define H4_ 31
#define H5  32
#define H5_ 33
#define H6  34
#define H6_ 35
#define H7  36//前面0的目的是休止,后面是,音高所对应的,定时器起始时长
unsigned int FreqTable[] = { 0,63628,63731,63835,63928,64021,64103,64185,64260,64331,64400
,64463,64528,64580,64633, 64684, 64732,64777, 64820, 64860, 64898, 64934,64968,65000,
65030,65058, 65085,65110, 65134, 65157, 65178, 65198, 65217,65235,65252,65268, 65283, };unsigned char Music_LittleStar[] = { 13,1,13,1,20,1,20,1,22,1,22,1,20,2,18,1,18,1,17,1,17,1,15,1,15,1,13,2,0xFF };
unsigned char FreqSelect, MusicSelect;void main()
{Time0_Init();while (1){if (Music[MusicSelect] != 0xFF){FreqSelect = Music[MusicSelect];MusicSelect++;Delay(500 * Music[++MusicSelect]);//停顿,让同一音符分开TR0 = 0;Buzzer = 0;Delay(50);TR0 = 1;} else{//播放结束TR0 = 0;Buzzer = 0;while (1);}}
}void Timer0_Routine() interrupt 1
{if (FreqTable[FreqSelect]){TH0 = FreqTable[FreqSelect] / 256;TL0 = FreqTable[FreqSelect] % 256 + 1;Buzzer = !Buzzer;}
}

相关文章:

51单片机-第八节-蜂鸣器

一、什么是蜂鸣器? 蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号。 蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器: 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可…...

Windows命令查看WiFi密码

查看所有已保存的WiFi网络 (以管理员身份)输入以下命令 netsh wlan show profiles查看某个WiFi网络的密码 netsh wlan show profile name"你的网络名" keyclear在输出中,在关键内容(Key Content)字段下找…...

不同环境下RabbitMQ的安装-2 ARM架构、X86架构、Window系统环境下安装RabbitMQ

ARM架构、X86架构、Window系统环境下RabbitMQ的安装 RabbitMQ安装1 Erlang语言介绍2 安装Erlang2.1 ARM架构的CentOS虚拟机中安装Erlang2.2 X86架构的CentOS虚拟机中安装Erlang2.3 Windows系统安装Erlang2.3.1 下载Erlang2.3.2 安装Erlang2.3.3 配置Erlang2.3.4 检测Erlang 3.安…...

C++(week16): C++提高:(六) Qt提高

文章目录 四、Qt的元对象系统1.元对象和MOC(1)自省 和 反射(2)Qt是怎样支持元对象系统的?(3)支持元对象系统的三个要求(4)元对象系统的功能(5)动态属性 2.信号和槽机制(1)信号与槽机制的基本原理(2)自定义信号、自定义槽函数①自定义信号②自定义槽③关联 connect (…...

go 时间转时间戳的时区设置问题

昨天遇到一个问题,在完成时间转换时间戳,在后续测试中发现转换后的时间戳转成时间后,时间发生错误,时间和转换时间不一致问题 如下: package mainimport ("fmt""time" )func main() {Start : &q…...

MySQL 常见日志清理策略

前言: MySQL 数据库服务器使用多种类型的日志来记录操作和事件,这对于故障诊断、审计和性能分析非常重要。然而,这些日志文件会随着时间的推移而不断增长,可能会占用大量的磁盘空间。因此,定期清理这些日志是必要的&a…...

3大管人绝招让你的手下心服口服

3大管人绝招让你的手下心服口服 一:差异化管理,玩弄人性 谁赞成,谁反对,看清楚谁顺从自己,谁反对自己之后,接下来要做的便是区别对待。 给听话的下属最好的资源、最轻松简单的工作、最高的待遇&#xf…...

useImperativeHandle 是什么?你可以理解为 vue3 的 expose

useImperativeHandle 确实类似于 Vue 3 的 expose,两者都用于控制子组件向父组件暴露的接口。 在 React 中,useImperativeHandle 需要与 forwardRef 一起使用,原因如下: 转发引用:forwardRef 允许父组件将 ref 传递给…...

《Techporters架构搭建》-Day05 属性校验

属性校验 前言Validated基础用法集合校验分组校验嵌套校验自定义校验器 源码地址 前言 在项目开发过程中,经常遇到需要对传递的参数进行校验,比如某个参数字段是否为空、值的取值是否在约定范围、格式是否合法等等,最原始的写法,…...

HTTP的场景实践

HTTP的场景实践:任选一个浏览器,对于其涉及的请求中的缓存策略展开具体分析 1. 强缓存: Cache-Control用于指定缓存的最长有效时间。 Expires用于指定资源过期的日期。 2. 协商缓存: ETag用于标识资源的唯一标识符,…...

MySQL:表的设计原则和聚合函数

所属专栏:MySQL学习 💎1. 表的设计原则 1. 从需求中找到类,类对应到数据库中的实体,实体在数据库中表现为一张一张的表,类中的属性对应着表中的字段 2. 确定类与类的对应关系 3. 使用SQL去创建具体的表 范式&#xff1…...

介绍springmvc-水文

Spring MVC 是一个基于 Java 的开源 Web 框架,它是 Spring Framework 的一部分。Spring MVC 提供了一个架构,用于开发灵活、可扩展的 Web 应用程序。 Spring MVC 的主要特点包括: 基于模型-视图-控制器(MVC)的架构&am…...

uni-app学习笔记

一、下载HBuilder https://www.dcloud.io/hbuilderx.html 上述网址下载对应版本,下载完成后进行解压,不需要安装,解压完成后,点击HBuilder X.exe文件进行运行程序 二、创建uni-app项目 此处我是按照文档创建的uni-ui项目模板…...

Windows Server修改远程桌面端口

新建入站规则 填写端口 允许连接 修改远程桌面端口 winR打开注册表 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp修改PortNumber为新端口 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wi…...

界面组件Kendo UI for Vue 2024 Q2亮点 - 发布一系列新组件

随着最新的2024年第二季度发布,Kendo UI for Vue为应用程序开发设定了标准,包括生成式AI集成、增强的设计系统功能和可访问的数据可视化。新的2024年第二季度版本为应用程序界面提供了人工智能(AI)提示,从设计到代码的生产力增强、可访问性改…...

达梦数据库 逻辑备份还原

达梦的逻辑备份还原 1.背景2.要求3.实验步骤3.1 相关术语3.2 dexp逻辑导出3.2.1 使用dexp工具3.2.2 dexp相关参数含义3.2.3 四种级别导出3.2.3.1 FULL3.2.3.2 OWNER3.2.3.3 SCHEMAS3.2.3.4 TABLES 3.2.4 使用范例3.2.4.1 环境准备3.2.4.2 dexp逻辑导出 3.3 dimp逻辑导入3.3.1 使…...

Stable Diffusion绘画 | 图生图-上传重绘蒙版

上传重绘蒙版,可以弥补局部重绘的缺点,能够更精细的修改画面中的指定区域 使用PS制作的蒙版图片为耳朵下方区域,可以为图片中的女生带上不同款式的耳环。 参数配置: 调整提示词: 生成图片如下所示: 调整提…...

打开Office(word、excel、ppt)显示操作系统当前的配置不能运行此应用程序最全解决方案!

我以前用过分区助手把office从c盘挪到d盘了,从那以后office就用不了了,然后我就删了(貌似没删干净)。 最近由于有使用word的需求,所以我从学校官网找到正版软件的安装包,按照步骤重新卸载电脑中office残留…...

猫头虎 分享已解决Bug || TypeError: Cannot read property ‘map‘ of undefined 解决方案

🐯 猫头虎 分享已解决Bug || TypeError: Cannot read property map of undefined 解决方案 摘要: 今天猫头虎带大家深入探讨在前端开发中常见的一个令人头疼的问题:TypeError: Cannot read property map of undefined。这个错误通常出现在我…...

大模型快速部署,以浪潮源2.0为例

step1: 申请PAI-DSW试用 step2:魔塔社区授权 由于本地授权一直失败,于是采用了魔塔免费平台实例进行学习。 搭建好之后,打开就有相关页面了: demo搭建: 按照官方提示的步骤进行搭建,内容如下:…...

Git-Sim终极调试指南:快速解决常见错误与性能优化技巧

Git-Sim终极调试指南:快速解决常见错误与性能优化技巧 【免费下载链接】git-sim Visually simulate Git operations in your own repos with a single terminal command. 项目地址: https://gitcode.com/gh_mirrors/gi/git-sim Git-Sim是一款强大的Git操作可…...

5个实战技巧:快速掌握新一代AI组件开发

5个实战技巧:快速掌握新一代AI组件开发 【免费下载链接】Element-Plus-X Enterprise-level AI component library front-end solution 🤖 项目地址: https://gitcode.com/gh_mirrors/el/Element-Plus-X Element-Plus-X是企业级AI组件库前端解决方…...

Blazor与AI原生融合:如何在客户端直接调用ONNX Runtime + ML.NET推理模型(含TensorFlow.js互操作避坑指南)

第一章:Blazor与AI原生融合的范式演进传统Web前端框架长期面临状态同步复杂、服务端耦合度高、实时AI能力接入成本大等瓶颈。Blazor凭借WebAssembly(WASM)与服务器端SignalR双执行模型,首次为浏览器端提供了可运行强类型.NET代码的…...

【农业物联网PHP可视化实战指南】:20年专家亲授5大高并发数据看板搭建秘技,错过再等三年

第一章:农业物联网PHP可视化实战导论 农业物联网正加速推动传统农耕向数据驱动、智能决策的现代化模式演进。在田间部署的温湿度传感器、土壤EC/pH探头、光照强度模块等设备,通过LoRa或Wi-Fi将实时数据上传至边缘网关或云平台;而PHP凭借其轻量…...

一个命令救命:GitHub 爆火项目 thefuck,真把我笑服了

最近刷短视频的时候,被一个终端操作狠狠戳中了笑点:你是不是也经历过这种时刻——git pul回车。报错。然后你盯着屏幕沉默两秒,默默改成:git pull再回车。……如果你每天都在终端里“手滑 → 报错 → 重输”,那这个在 …...

VideoDownloadHelper:突破流媒体下载壁垒的智能解析工具

VideoDownloadHelper:突破流媒体下载壁垒的智能解析工具 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper VideoDownloadHelper是一…...

【Python机器学习】零基础掌握SGDOneClassSVM线性分类器

如何高效地识别异常数据点? 在数据分析、金融风控、网络安全等多个领域,识别异常数据点是一个常见但又具有挑战性的问题。传统的方法可能需要复杂的计算和专门的知识背景,但有没有一种更简单、更直观的方式来解决这个问题呢? 假设一个金融公司需要识别可能的欺诈信用卡交…...

如何让经典魔兽争霸在现代系统重生?WarcraftHelper兼容性解决方案全解析

如何让经典魔兽争霸在现代系统重生?WarcraftHelper兼容性解决方案全解析 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 当你在Windows 11…...

突破限制:让旧Mac重获新生的OpenCore Legacy Patcher完整方案

突破限制:让旧Mac重获新生的OpenCore Legacy Patcher完整方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款强大…...

突破VMware限制:Unlocker工具实现macOS虚拟机的完整指南

突破VMware限制:Unlocker工具实现macOS虚拟机的完整指南 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 在虚拟化技术广泛应用的今天,许多开发者和技术爱好者需要在非苹果硬件上…...