江科大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,取整(方便运算),最后再求出重装载值

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android设备是如何进入休眠的呢?

首先我们手机灭屏后,一般需要等一段时间CPU才真正进入休眠。即Android设备屏幕暗下来的时候,并不是立即就进入了休眠模式;当所有唤醒源都处于de-avtive状态后,系统才会进入休眠。在手机功耗中从灭屏开始到CPU进入休眠时间越短&…

011---UART协议的基本知识(一)

1. 摘要 文章为学习记录。主要介绍 UART 协议的概述、物理层、协议层、关键参数。 2. UART概述 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART(串口),是一种异步****串…

共绘智慧升级,看永洪科技助力由由集团起航智慧征途

在数字化洪流汹涌澎湃的当下,企业如何乘风破浪,把握转型升级的黄金机遇,已成为所有企业必须直面的时代命题。由由集团,作为房地产的领航者,始终以前瞻视野引领变革,坚决拥抱数字化浪潮,携手数字…

【leetcode100】组合总和Ⅱ

1、题目描述 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示例 1: 输入: candidates…

【cocos creator】热更新

一、介绍 试了官方的热更新功能,总结一下 主要用于安卓包热更新 参考: Cocos Creator 2.2.2 热更新简易教程 基于cocos creator2.4.x的热更笔记 二、使用软件 1、cocos creator v2.4.10 2、creator热更新插件:热更新manifest生成工具&…

open webui-二次开发-源码启动前后端工程-【超简洁步骤】

参考资料 openwebui docs 获取源码 git clone https://github.com/open-webui/open-webui && cd open-webui启动后端服务 cd backend conda create --name open-webui python3.11 conda activate open-webui pip install -r requirements.txt -U sh dev.sh没有cond…

软件工程笔记下

从程序到软件☆ 章节 知识点 概论☆ 软件的定义,特点,生存周期。软件工程的概论。软件危机。 1.☆软件:软件程序数据文档 (1)软件:是指在计算机系统的支持下,能够完成特定功能与性能的包括…

Manus AI Agent 技术解读:架构、机制与竞品对比

目录 1. Manus 是什么? 1.1 研发背景 1.2 技术特点 1.3 工具调用能力 1.4 主要应用场景 2. Manus 一夜爆火的原因何在? 2.1 技术突破带来的震撼 2.2 完整交付的产品体验 2.3 生态与开源策略 3. Manus 与其他 AI Agent 的对比分析 3.1 技术架构…

深入探讨 Docker 层次结构及其备份策略20250309

深入探讨 Docker 层次结构及其备份策略 本文将深入探讨 Docker 层次结构 以及在 不同场景下应选择哪种备份方式。通过本文的介绍,您将对如何高效地管理和迁移 Docker 容器有更深的理解。 📌 什么是 Docker 层次结构? Docker 镜像采用了 分…

Rust语言:开启高效编程之旅

目录 一、Rust 语言初相识 二、Rust 语言的独特魅力​ 2.1 内存安全:消除隐患的护盾​ 2.2 高性能:与 C/C++ 并肩的实力​ 2.3 强大的并发性:多线程编程的利器​ 2.4 跨平台性:适配多环境的优势​ 三、快速上手 Rust​ 3.1 环境搭建:为开发做准备​ 3.2 第一个 R…

邮件发送器:使用 Python 构建带 GUI 的邮件自动发送工具

在本篇博客中,我们将深入解析一个使用 wxPython 构建的邮件发送器 GUI 程序。这个工具能够自动查找指定目录中的文件作为附件,并提供邮件发送功能。本文将从功能、代码结构、关键技术等方面进行详细分析。 C:\pythoncode\new\ATemplateFromWeekReportByM…

JavaWeb-HttpServletRequest请求域接口

文章目录 HttpServletRequest请求域接口HttpServletRequest请求域接口简介关于请求域和应用域的区别 请求域接口中的相关方法获取前端请求参数(getParameter系列方法)存储请求域名参数(Attribute系列方法)获取客户端的相关地址信息获取项目的根路径 关于转发和重定向的细致剖析…

IO多路复用实现并发服务器

一.select函数 select 的调用注意事项 在使用 select 函数时,需要注意以下几个关键点: 1. 参数的修改与拷贝 readfds 等参数是结果参数 : select 函数会直接修改传入的 fd_set(如 readfds、writefds 和 exceptfds&#xf…

实现静态网络爬虫(入门篇)

一、了解基本概念以及信息 1.什么是爬虫 爬虫是一段自动抓取互联网信息的程序,可以从一个URL出发,访问它所关联的URL,提取我们所需要的数据。也就是说爬虫是自动访问互联网并提取数据的程序。 它可以将互联网上的数据为我所用,…

计算机网络——交换机

一、什么是交换机? 交换机(Switch)是局域网(LAN)中的核心设备,负责在 数据链路层(OSI第二层)高效转发数据帧。它像一位“智能交通警察”,根据设备的 MAC地址 精准引导数…

【SpringBoot】深入解析 Maven 的操作与配置

Maven 1.什么是Maven? Maven是一个项目管理工具,通过pom.xml文件的配置获取jar包,而不用手动去添加jar包; 2. 创建一个Maven项目 IDEA本身已经集成了Maven,我们可以直接使用,无需安装 以下截图的idea版本为&#xff…

MySQL的安装以及数据库的基本配置

MySQL的安装及配置 MySQL的下载 选择想要安装的版本,点击Download下载 Mysql官网下载地址:​ ​https://downloads.mysql.com/archives/installer/​​ MySQL的安装 选择是自定义安装,所以直接选择“Custom”,点击“Next”​ …

Manus AI : Agent 元年开启.pdf

Manus AI : Agent 元年开启.pdf 是由华泰证券出品的一份调研报告,共计23页。报告详细介绍了Manus AI 及 Agent,主要包括Manus AI 的功能、优势、技术能力,Agent 的概念、架构、应用场景,以及 AI Agent 的类型和相关案例&#xff0…

2.数据结构-栈和队列

数据结构-栈和队列 2.1栈2.1.1栈的表示和实现2.1.2栈的应用举例数制转换括号匹配检验迷宫给求解表达式求值 2.1.3链栈的表示和实现2.1.4栈与递归的实现遍历输出链表中各个结点的递归算法*Hanoi塔问题的递归算法 2.2队列2.2.1循环队列——队列的顺序表示和实现2.2.2链队——队列…

(十七) Nginx解析:架构设计、负载均衡实战与常见面试问题

什么是Nginx? Nginx 是一款高性能的 HTTP 服务器和反向代理服务器,同时支持 IMAP/POP3/SMTP 协议。其设计以高并发、低资源消耗为核心优势,广泛应用于负载均衡、静态资源服务和反向代理等场景。 一、Nginx 的核心优势 高并发处理能力采用异步非阻塞的…