驱动蜂鸣器演奏乐曲(蜂鸣器驱动原理与演奏音乐的2种方法)
电磁蜂鸣器的驱动原理:
蜂鸣器发声的原理是电流通过电磁线圈,产生磁场驱动振膜发声。所以需要一定的电流来驱动,而单片机I/O引脚的输出电压很小。单片机输出的TTLK电平基本不能驱动蜂鸣器,因为需要加一个放大电路。这里,三极管被用作放大电路。这是示意图:
我这里的J8终端连接到芯片的P1 5端口。当P1 5输出高电平时,三极管截止,蜂鸣器不响。相反,当输出低电平时,蜂鸣器鸣响。
要驱动蜂鸣器发出像唱歌一样的声音,其实只需要让蜂鸣器发出不同频率和时长的声音就可以了。周期等于频率的倒数,所以可以通过频率知道这段时间,所以可以通过调用延时函数或者定时器来实现。同样的发声时长也可以通过延时功能实现,所以让蜂鸣器发声的关键是要知道需要多长时间!
用单片机演奏音乐,只要明确两个概念,即“音”和“拍”。
音调表示一个音符应该唱的频率。
节拍表示一个音符应该唱多长。
这里有两种方法可以实现这个功能:
(1)查表法这种方法的复杂性在于你要找出每个音符对应的频率(根据音符;查频率表),然后根据公式换算成相应的时间(半周),再通过延时功能实现。最后是编程。
整个过程是这样的:
首先根据《生日快乐歌》的配乐,将每个音调转换成相应的频率。
比如左边是生日歌的乐谱,右边是音符频率转换表。
在这里,我们先来了解一下乐谱。左边乐谱号下面有一个小音符。如果没有备注,则是常见的。数字上面有个小音符,但是5的低音是4.5,高音是5.5。其他笔记也是一样。
乐谱左上方写有“1=F”,一般乐谱在C调,表示“1=C”。注意,乐谱中的1234567(哆啦a梦Sorasido)对应的不是ABCDEFG而是CDEFGAB!因此,如果这里的调节是F调,
那就意味着2会唱G,3会唱A,7会唱E,所以这里的低音5应该对应低音1.5!所谓向左或向右的转变是必要的。如果还是不明白,看下面:
1应该对应C,4应该对应F吧?
现在1对应F,相当于4,对吧?
那么1.5对应什么呢?
4.5!
那是什么意思?
5!
那么,低音5是4.5,等于1.5吗?所以半周期是1803 s。
至于为什么按照半周期计算,是因为单片机通过循环设置和复位连接蜂鸣器的端口,所以是半周期。因为我用的是无源蜂鸣器,有源蜂鸣器是全周期的。
然后按照上面的原理,一个一个的用延时函数转换实现,因为每个音符的转换频率不一样,或者用多个延时函数来一个一个的实现精确的基音频率,但是这样太烦了,而且MCU本身也不专业。
唱歌。我们不应该为难他们,所以我们自己将就一下。所以为了适应每个音频率差不多的情况,延时函数是自己算的,不同的歌值不一样,所以这就是问题所在。
困难在于。
然后就是唱多久的问题。一首普通歌曲的默认节拍是400 ms-500 ms。
同样,在乐谱的左上方,写着“3/4”,表示四分音符为拍子,每个小结有三个拍子。
而且每个数字下面都有一条横线,那个时间就是那个节拍的时间乘以0.5,乘以0.25的两倍,乘以0.125的三倍。不要拿音乐基础知识来为难我。我是个音乐白痴。所以我是这么理解的。
哈哈哈哈~
至于节拍到频率的转换,也有对应的表格,如下图:
同样是通过延时功能实现的,当然会有误差。
编程的思路很简单,就是先把音符的频率和要唱的时间进行转换,放入两个数组中。然后在主程序中,通过延时达到相应的频率,唱完一次,停一会儿,再唱。
(2)用工具转码,用定时器实现这个代码明显来自网络。哈哈。原谅我,这个我不解释了。哎,再来说说步骤。(具体的我不是很懂,但是这个真的很通用,所以我就记在笔记里了。)
一开始用MUSICENCODE把乐谱转换成相应的代码,然后根据音调和音区生成新的频率表。所谓调区,就是降调、平调、升调,根据转换码的对应位就可以知道。
再计算一下歌曲的长度,就用while,用来设置唱完之后是否再做一遍或者执行其他动作。
然后取出数组数据的奇数位,那就是音长。然后根据这个,计算一个音会唱多久,把初始值赋给定时器。关于定时器的使用,稍后会发布。
唱一个音最好的方法是设定一个基本的持续时间,因为在这个例子中,一个四分之一拍大概是400ms-500ms,那么有的是1/4拍(100ms),有的是2/4拍(200ms),所以设定一个。
50 m定时器,通话时设置参数即可。这样的好处就是方便。
然后调用函数让它唱歌。
对比这两种方法的优缺点,第一种方法转码太复杂,但声音好,分辨率高。第二种方法是通用的!不同的歌曲,你只需要用工具把代码,然后再用一个数组保存这些值,然后传递
调用函数Play(音乐名称、调号、升降八度、演奏速度)即可,但这种方法达到的音质不是很理想。其实最重要的是,这种方法不懂音乐知识也没关系,第一种方法是
要获得正确的音高频率和音长,需要一定的知识。
推荐阅读
- 电容器工作原理详解(电容器的工作原理是什么)
- 科目三夜间模拟考试灯光操作文章,科目三考试夜间模拟灯光考试使用全解
- 笨拙攀登者无限生命版软件介绍(笨拙攀登者无限生命版)
- 不小心红灯过去了怎么办? 无意中闯了红灯怎么办
- 迈巴赫57怎么样值得买不,迈巴赫57怎么样
- remotr streamer手机版游戏介绍(remotr streamer手机版)
- 时间继电器的工作原理是什么样的(时间继电器的工作原理是什么)
- lumia920如何重置? nokia lumia920
- 继承法2022年最新规定? 2022年新出台的房产继承新规
- 海象图片大全,海象怎么样内饰油耗最新价格
- 取样电阻的原理(取样电阻的接法)
- 联想的智能手机质量好不好啊 联想手机商城
- 平安金管家问律师要收费吗 问律师
- 腾翼c30优缺点,腾翼C30怎么样内饰油耗最新价格
- picture style editor 佳能软件介绍(picture style editor 佳能)
- 晶闸管的门极触发电路原理图(晶闸管的门极触发电路原理)
- 集体不动产过户手续流程及费用? 房产过户需要什么手续和费用
- rx7油耗多少的介绍,RX-7怎么样内饰油耗最新价格
- 苹果官网icloud登陆怎么登陆? icloud官网登录入口