江科大51单片机笔记【10】蜂鸣器(上)

一、蜂鸣器

1.原理

  • 蜂鸣器是一种将电信号转换为声音信号的器件,常同来产生设备的按键音、报警音等提示信号
  • 蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器(外观基本一样)
  • 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定
  • 无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发生,调整提供振荡脉冲的频率,可发出不同频率的声音

我们开发板用的是无源蜂鸣器

以下三种符号都是蜂鸣器

低电平触发的蜂鸣器模块

2.驱动电路

  • 三极管驱动

左图是NPN,有图是PNP

以左图举例,当b口(R1所在口)给高电平时,三极管导通,即VCC接到蜂鸣器上,当b口(R1所在口)给低电平时,三极管截止,即蜂鸣器接地。三极管就相当于一个开关。相当于我们只用在b口给信号,驱动交给c口(VCC所在口)的VCC(我们指挥别人干活)。有图就是相反,给低电平导通,给高电平截止。

  • 集成电路驱动

我们单片机采用,因为单片机的IO口不能直接驱动蜂鸣器,就需要经过一个芯片(下面详细介绍)

3.ULN2003

达林顿晶体管就是两对三级管开关复合在一起,增大驱动能力

ULN2003是一个单片高电压、高电流的达林顿晶体管阵列集成电路,是由7对NPN达林顿晶体管组成的。此电路主要用于继电器驱动器,字锤驱动器等等

中间的三角带一个圈是非门,即给1输出0,给0输出1

一般情况下负载都是像红线这样接,只有给1经过非门输出0才能驱动

ULN2003一般用于驱动步进电机(在我们单片机就是驱动无线四相步进单片机 )

二、声乐部分(如何模拟乐谱的频率)

弹钢琴最主要的是音高和按的时长两部分

1.音高

每一组相同的音间隔相差八度

相邻两个音是半音的关系,这里的音指的是每个键上面的黑色部分和白色部分,都算一个音,即一个键算一个全音,一个键有两个半音,即黑白部分。(白色和白色相邻也是半音的关系)

相邻两个键是全音的关系

从左往右每一个组就是升高八度的关系,以中间的小字1组为例,右边的小字2组对应的音就是升高了八度,左边的小字组就是降低了八度

在简谱中降低一个八度就在下面标一个点,两个就标两个;升高一个八度就在上面标一个点,两个就标两个

黑白键的区分:“#”对应是升高,“b”对应是降低,如果在简谱中的数字头上左边标“#”,就弹数字对应的键上的右边部分,即升高半音

2.时长

横线就是表示的时长,横线占了一个拍子的时间,例:弹5的时间是弹6的时间的两倍

从左到右以此是

全音符,二分音符,四分音符(圈),八分音符,十六分音符,三十二分音符

一般是以四分音符为基准

如上图中的单个数字就是一个四分音符,后面带有一条横线的数字就是二分音符,如果是全音符就在后面加三条横线,这条线就叫增音线

但如果要表示八分音符,就得在数字下面加一条横线,这条线就叫减音线

3.看简谱

1= D是调号,就等于是D调,如果是C调的话全部都是弹白键,其他调才会用到黑键

4/4是拍号,从下往上读,叫以四分音符为一拍,每小节有四拍,一个竖线分割为一个小节,每一个小节都保证是四分音符

数字的右下边有一个点表附点,表示时长是该数字原本的时长+1/2(该数字原本的时长

数字的下边有横线就表示时长是该数字原本的时长-1/2(该数字原本的时长),如果相邻两个数字下边都有横线,就会把他们连接在一起

相邻数字的上边有线连接在一起叫延音线,代表是这两个音是一直按下去不放的

三、单片机知识

这三组就代表我们键盘上三个小节的音符,分别对应前面的小字组,小字组1,小字组2

也包括黑键,每一组刚好有十二个按键,刚好对上十二个频率  

我们以上图中低音6为基准(440hz),可以看到中音6(880hz)刚好是低音6的两倍,中间相隔十二个音符,这正好是以2的十二平分率

下面教怎么确认单片机产生的频率

我们利用定时器中断来产生中断

这里假设我们单片机是12T,机器周期是震荡周期(晶振)的1/12,一个机器周期我们定时器的计数值+1,也就是说定时器+1的时间是1us,而我们翻转IO口两次才算一个周期,也就是说翻转一次的时间是半个周期

而我们的计数器重装载值就是最大次数溢出的次数(2的16次方)减去总翻转时间,然后再把高八位取出来放在TH0上,把低八位取出来放在TL0上

总而言之,我们就是要求计时器的重装载值,先找出每个音符对应的评论,然后求出周期,再求出周期/2,取整(方便运算),最后再求出重装载值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/31055.html

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

相关文章

VS Code连接服务器教程

VS Code是什么 VS Code(全称 Visual Studio Code)是一款由微软推出的免费、开源、跨平台的代码编辑神器。VS Code 支持 所有主流操作系统,拥有强大的功能和灵活的扩展性。 官网:https://code.visualstudio.com/插件市场&#xff1…

使用QT + 文件IO + 鼠标拖拽事件 + 线程 ,实现大文件的传输

第一题、使用qss&#xff0c;通过线程&#xff0c;使进度条自己动起来 mythread.h #ifndef MYTHREAD_H #define MYTHREAD_H#include <QObject> #include <QThread> #include <QDebug>class mythread : public QThread {Q_OBJECT public:mythread(QObject* …

本地搭建DeepSeek R1模型 + 前端

本地搭建DeepSeek R1模型 前端 配置&#xff1a; 操作系统&#xff1a;windows11 CPU&#xff1a;i5 13600KF GPU&#xff1a;英伟达4070 12GB 内存&#xff1a;16G DDR5 硬盘&#xff1a;1TB 模型安装 本文采用Ollama进行安装。Ollama安装比较简单。 官网&#xff1…

[项目]基于FreeRTOS的STM32四轴飞行器: 五.Motor驱动

基于FreeRTOS的STM32四轴飞行器: 五.Motor驱动 一.配置CubeMX二.Motor驱动3.bug修改 一.配置CubeMX 观察motor原理图引脚对应的TIM&#xff1a; 使用内部时钟&#xff0c;配置4分频&#xff0c;后为18M&#xff0c;在设置Counter Period为1000-1&#xff0c;之后频率为18K&am…

Electron-Forge + Vue3 项目初始化

本人对Electron的浅薄理解如下图所示 由上图可以&#xff0c;如果你需要开发一个electron应用&#xff0c;你得具备基本的前端开发经验。对于electron相关的知识&#xff0c;建议先了解下基本的窗口操作&#xff0c;比如新建窗口、关闭窗口等简单的操作&#xff0c;这些内容在…

神经网络为什么要用 ReLU 增加非线性?

在神经网络中使用 ReLU&#xff08;Rectified Linear Unit&#xff09; 作为激活函数的主要目的是引入非线性&#xff0c;这是神经网络能够学习复杂模式和解决非线性问题的关键。 1. 为什么需要非线性&#xff1f; 1.1 线性模型的局限性 如果神经网络只使用线性激活函数&…

手写Tomcat:实现基本功能

首先&#xff0c;Tomcat是一个软件&#xff0c;所有的项目都能在Tomcat上加载运行&#xff0c;Tomcat最核心的就是Servlet集合&#xff0c;本身就是HashMap。Tomcat需要支持Servlet&#xff0c;所以有servlet底层的资源&#xff1a;HttpServlet抽象类、HttpRequest和HttpRespon…

PyTorch系列教程:编写高效模型训练流程

当使用PyTorch开发机器学习模型时&#xff0c;建立一个有效的训练循环是至关重要的。这个过程包括组织和执行对数据、参数和计算资源的操作序列。让我们深入了解关键组件&#xff0c;并演示如何构建一个精细的训练循环流程&#xff0c;有效地处理数据处理&#xff0c;向前和向后…

Linux系统基于ARM平台的LVGL移植

软硬件介绍&#xff1a;Ubuntu 20.04 ARM 和&#xff08;Cortex-A53架构&#xff09;开发板 基本原理 LVGL图形库是支持使用Linux系统的Framebuffer帧缓冲设备实现的&#xff0c;如果想要实现在ARM开发板上运行LVGL图形库&#xff0c;那么就需要把LVGL图形库提供的关于帧缓冲设…

Consensus 大会全观察:政策、生态与技术交汇,香港能否抢占 Web3 先机?

被誉为 “区块链界超级碗” 和 “Web3 世界杯” 的全球顶级行业峰会 —— Consensus 大会&#xff0c;在诞生十年之际首次跨越太平洋登陆亚洲&#xff0c;于 2025 年 2 月 18 日至 20 日在香港会议展览中心盛大启幕。大会汇聚了亚洲主要金融政策制定者、加密领域思想领袖、投资…

hadoop集群环境配置

目录 VMware虚拟机安装 Xshell安装 网络问题 centos7下载 ---------参考以下视频步骤进行生态搭建---------- 搭建好hadoop01 克隆出hadoop02、hadoop03 启动三台虚拟机 打开终端 输入 记录下各个ip 打开Xshell&#xff0c;新建会话 修改主机名 配置静态IP 主机名称…

C++之list

list是链表的意思&#xff0c;由一个个节点组成 一、基本接口使用&#xff1a; &#xff08;1&#xff09;与vector相同&#xff0c;有个尾插&#xff0c;也可以使用迭代器遍历&#xff1a; void test_list1() {list<int> lt;lt.push_back(1);lt.push_back(2);lt.push…

MWC 2025 | 紫光展锐联合移远通信推出全面支持R16特性的5G模组RG620UA-EU

2025年世界移动通信大会&#xff08;MWC 2025&#xff09;期间&#xff0c;紫光展锐联合移远通信&#xff0c;正式发布了全面支持5G R16特性的模组RG620UA-EU&#xff0c;以强大的灵活性和便捷性赋能产业。 展锐芯加持&#xff0c;关键性能优异 RG620UA-EU模组基于紫光展锐V62…

vue2设置横向滚动指令

图片横向滑动展示效果 创建directives.js文件 // 横向列表拖拽 const draggleScrollX {inserted(el, binding) {let isDragging false;let startX 0;let scrollLeft 0;el.classList.add("draggle-horizontal");// 添加监听事件-鼠标按下const onMouseDown (eve…

城市霓虹灯夜景拍照后期Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 在城市霓虹灯夜景拍摄中&#xff0c;由于现场光线复杂等因素&#xff0c;照片可能无法完全呈现出当时的视觉感受。通过 Lr 调色&#xff0c;可以弥补拍摄时的不足。例如&#xff0c;运用基本调整面板中的曝光、对比度、阴影等工具&#xff0c;可以处理出画面的整体明暗…

20250307确认荣品PRO-RK3566开发板在Android13下的以太网络共享功能

20250307确认荣品PRO-RK3566开发板在Android13下的以太网络共享功能 2025/3/7 13:56 缘起&#xff1a;我司地面站需要实现“太网络共享功能”功能。电脑PC要像连接WIFI热点一样连接在Android设备/平板电脑上来实现上网功能/数据传输。 Android设备/平板电脑通过4G/WIFI来上网。…

清华北大推出的 DeepSeek 教程(附 PDF 下载链接)

清华和北大分别都有关于DeepSeek的分享文档&#xff0c;内容非常全面&#xff0c;从原理和具体的应用&#xff0c;大家可以认真看看。 北大 DeepSeek 系列 1&#xff1a;提示词工程和落地场景.pdf  北大 DeepSeek 系列 2&#xff1a;DeepSeek 与 AIGC 应用.pdf  清华 Deep…

MYSQL之创建数据库和表

创建数据库db_ck &#xff08;下面的创建是最好的创建方法&#xff0c;如果数据库存在也不会报错&#xff0c;并且指定使用utf8mb4&#xff09; show databases命令可以查看所有的数据库名&#xff0c;可以找到刚刚创建的db_ck数据库 使用该数据库时&#xff0c;发现里面没有…

用Python写一个算24点的小程序

一、运行界面 二、显示答案——递归介绍 工作流程&#xff1a; 1. 基本情况&#xff1a;函数首先检查输入的数字列表 nums 的长度。如果列表中只剩下一个数字&#xff0c;它会判断这个数字是否接近 24&#xff08;使用 abs(nums[0] - 24) < 1e-10 来处理浮点数精度问题&…

每天五分钟深度学习框架PyTorch:使用残差块快速搭建ResNet网络

本文重点 前面我们使用pytorch搭建了残差块&#xff0c;本文我们更进一步&#xff0c;我们使用残差块搭建ResNet网络&#xff0c;当学会如何搭建残差块之后&#xff0c;搭建ResNet就会非常简单了&#xff0c;因为ResNet就是由多个残差块组成的。 残差块 残差块我们前面已经介…