驱动蜂鸣器演奏乐曲(蜂鸣器驱动原理与演奏音乐的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(音乐名称、调号、升降八度、演奏速度)即可,但这种方法达到的音质不是很理想。其实最重要的是,这种方法不懂音乐知识也没关系,第一种方法是
要获得正确的音高频率和音长,需要一定的知识。
推荐阅读
- alfa romeo车标含义?(阿尔法罗密欧车标)
- 华为鸿蒙os如何操作 华为鸿蒙os2.0系统官网报名入口
- 14款沃尔沃s60l二手车能买吗?(沃尔沃s60为什么贬值厉害)
- power mp3 wma converter(mp3格式转换器)软件介绍(power mp3 wma converter(mp3格式转换器))
- 42岁李贞贤宣布平安生女,网友:歌声击退山贼的那个
- 热火朝天的高铁WiFi迟迟未到(5G能否破局)
- 华为手机性价比最高是哪几款2022? 华为哪款手机性价比高最值得入手
- 进口捷豹全部车型报价?(捷豹报价大全价格表)
- 韩庚江铠同疑相恋,两人同游马尔代夫遭曝光
- 八卦格字帖软件介绍(八卦格字帖)
- 虚拟机 操作系统(操作系统整合:虚拟机管理程序的下一步)
- 比亚迪f6参数配置?(比亚迪f6)
- 奥沙利文获世锦冠军,奥沙利文得了几次世锦赛冠军
- Evel Knievel手游游戏介绍(Evel Knievel手游)
- 索尼wi1000x拆解(SONYNZW-X1000系列高清拆解图集)
- 4座硬顶敞篷跑车都有哪几款?(4门4座硬顶敞篷车推荐)
- 艺术体操团体全能决赛,艺术体操团体全能决赛中国
- 工人物语6通用修改器游戏介绍(工人物语6通用修改器)
- 简述电机换向器的工作原理图(简述电机换向器的工作原理)
- Atheros-AR5007EG无线网卡驱动软件介绍(Atheros-AR5007EG无线网卡驱动)