利用蜂鸣器播放音乐

news/2024/10/30 11:31:03/

        我们知道,蜂鸣器可分为有源蜂鸣器和无源蜂鸣器,有源蜂鸣器内置了频率发生电路,因此其通电就能够发出声音,但是其频率是固定的,而无源蜂鸣器内部没有频率发生电路,需要外界给予频率,因此适用于单片机控制使其发出不同的音调频率。在这一点有源蜂鸣器是做不到的。现在就利用无源蜂鸣器播放不同的音乐。

无源蜂鸣器的原理图:

 蜂鸣器发声原理是电流通过电磁线圈,使电磁圈产生磁场来驱动振动膜发声的。因此需要一定的电流才能驱动它,而单片机I/O引脚输出的电压较小。单片机输出的TTL电平基本驱动不了蜂鸣器,因需要增加一个放大电路。这里用三极管作为放大电路。

由原理图分析知:通过控制晶体三极管的导通和截止就可以控制蜂鸣器的开关,因此通过控制GPIO_PB5引脚的高低电平的变化就可以控制三极管的导通截止。但是需要注意的是,在使用无源蜂鸣器时,单纯地给它高电平是不能使其导通的,这反而会时蜂鸣器中的项圈持续发热,长时间甚至可能损坏蜂鸣器,因此我们必须保证在空闲的状态下引脚的电平是高电平,使三极管截止。原理图中加入了上拉电阻正是防止在空闲状态下损坏蜂鸣器。

那么蜂鸣器能够发出不同的声音的原理是通过PWM波来驱动实现的,通过调节PWM波的频率就可以输出不同的声音。即引脚高低电平的变化,来产生频率一定的方波进而驱动蜂鸣器,而通过延时长度就可控制其节奏。假设要产生1kHz的频率,即每秒产生1000个振动周期,也就是一个频率周期就是1000us,所以通过控制方波高低电平的占空比就可以发出1kHz的音调频率。

软件实现:

基于STM32固件库函数控制蜂鸣器播放音乐

部分主要程序:

 

        第一个枚举用于定义各个音阶对应的频率值,这样封装的目的是可以让简谱数组更易维护,接下来就是定义的简谱数组,只要按照简谱结构编写数组,就可以让单片机弹奏你的音乐。该数组有三部分组成,第一部分就是音调,第二部分就是数字表示的延时节奏,最后是两个 0,用于告诉单片机,此时演奏完毕,退出演奏循环。用两个 0 的目 的是,如果简谱是一个节奏对应一个延时的话,那么它是偶数个演奏单元,所以会用到最后 一个零,如果是奇数个演奏单元,就用到第一个 0 来标识结束。结束状态的控制也可以通过for循环控制。

通过下载调试最后能够达到很好的效果,如果想要达到更佳的效果可以通过调试延时长度达到自己想要的效果。

 

 

 


http://www.ppmy.cn/news/445474.html

相关文章

如何选择6×9汽车喇叭为您的立体声

如何选择69汽车喇叭为您的立体声   这些69汽车音响的方法不断地从休息站出来,只是因为他们的形状不同,产生清晰的高品质声音。他们是目前年轻人和成人的汽车爱好者的选择,因为他们提供的几个特质。不是所有的69汽车音响系统将适合每一辆车&…

喇叭音圈是大一点好还是小一点好

基本上电子产品都会带有音频产品,手机、电脑、电视、汽车等产品成为越来越普通的用品。对于音频产品来说喇叭是核心。大家可能意识到了现在喇叭产品变得越来越小了(如手机、电脑),相反的,喇叭音圈却有越来越大的趋势&a…

这款扩音器让我见识了什么才是地摊神器,震撼的声音通透整条街

最近一段时间,地摊经济在全国范围内火了起来,各个城市的夜市一时间热闹非凡,大家茶余饭后都纷纷出去感受那“最抚凡人心”的城市烟火气。这当中,很多年轻人也都想着体验一把摆摊抢位的新鲜感,而在这样嘈杂的环境下摆摊…

鼠标速度太快怎么调

鼠标速度太快怎么调 1、找到键盘win键,找到设置 2、找到设置里边设备 3、找到鼠标点击一下右边会出现鼠标里的功能 4、这样就可以了,想快就往右边调,想慢一点就往左调 5、有的(机械)鼠标滚轮上下可以调 鼠标速度快慢

有关熊猫

[zt]床前明月光,熊猫在烧香 床前明月光,熊猫在烧香专杀杀不尽,两眼泪汪汪 熊猫烧不尽,关机开又生 宝剑锋自磨砺出,熊猫香自网上来。 无边香火烧烧下,不尽熊猫滚滚来。 身心俱疲终不悔,为猫消得人憔悴 千呼万唤猫出来&#x…

实现龙卷风收音机客户端电台数据解密算法

最新说明:自7月份始,文章公布后,Cradio官方更新了加密算法,故以下实现只对7月份之前的版本有效.关于最新的电台数据,目前只能通过js的方式获取,而相关的除电台名称,地址之外信息还需另外搜集和整理.在此,请诸位自行决定.(再次声明:js获取数据方式因可能对Cradio官方服务器产生不…

在电脑上收听广播——龙卷风网络收音机试用

在电脑上收听广播——龙卷风网络收音机试用 随着宽带网的普及,网速越来越快,网上听广播已不成问题。使用龙卷风网络收音机,只用鼠标轻轻一点,就能让您听遍全世界的声音。  龙卷风网络收音机(CRadio)是一款可以收听全球各地网络…

USB收音机

一、Altium Designer Winter 09 第一块板子做的是关于“USB收音机”,这块板子我画的很仓促,原理图是参照用户手册画的,基本上是抄板。但是我要修改的是样板上的一块收音芯片,把他换成更高级的模块,由SPI转到I2C。由于…