您的位置 首页 > 数码极客

〈单片机音乐代码如何得到〉单片机两只老虎音乐代码

前面我们制作了一块简单的线路板——单片机电子琴,小小满足了一下成为音乐“家”的梦想(也就是在自己家里弹奏音乐的梦想)。

可是就这么完事是不是太草率了?不行!我们还得给它增加新的功能。

今天我们一起聊聊如何让单片机播放一段音乐,请跟我来。。。

  • 如何翻译简谱给单片机?

单片机播放音乐——分析简谱思维导图

单片机没有眼睛,他只认识程序代码,所以我们要把有用的东西翻译给他使用,这样单片机才能为我们演奏一段音乐。

通过上面的图片,我们知道有用的两样东西是频率和节拍。

  • 解决频率和节拍问题:

  1. 解决频率问题:

    前面几篇文章中,我们在设计单片机电子琴的时候已经解决了这个问题。就是利用单片机的定时器,通过改变定时器的初装值来改变输出音频信号的频率,产生相应频率的声音。

  2. 解决节拍问题:

    参照简谱,我们把一秒作为参考时间长度,然后把1/32秒作为最小单位,制作一个节拍表。同样利用单片机的另一个定时器来产生不同的时间,对应到每个频率所占用的时间节拍长度。

单片机播放音乐——节拍表

回顾以前制作的频率表(表中增加了休止符):

单片机播放音乐——频率表

  • 单片机程序设计思路:

我们要用到的是两张表的索引号。

节拍表的索引号0对应的是1/32节拍(31.25约32毫秒),索引号1、2、3分别对应的是1/16(62.5约63)、1/8(125)、1/4(250),以此类推。

频率表的索引号已经在图中标注好了。

下面我们节选周杰伦的歌曲《菊花台》中的一段简谱说明一下如何制作音乐数据表:

单片机播放音乐——简谱翻译详解示例图

从图中我们能够看出来,蓝色的数字是两个一组的,第一个数字是频率的索引号,第二个数字是节拍的索引号。

单片机是如何演奏这段音乐的呢?首先读取第一组数字,通过索引号查《频率表》,把《频率表》中的值“0xa6,0X6b”赋值给定时器0的初装值寄存器,单片机就会连续输出中音“3”的声音;紧接着通过第二个数字索引号查《节拍表》的定时参数为250毫秒(1/4节拍),根据参数用定时器2进行计时,直到计时到了参数对应的时间,就完成了第一个音符的音频输出。接下来读取第二组数字。。。以此类推,直到演奏完所有音符。

以上就是用单片机演奏音乐的一种设计思路。

今天就聊到这里,如果您感兴趣,记得关注头条号/春天说,欢迎在评论区留言,或者分享给更多朋友。。。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“单片机音乐代码如何得到,单片机两只老虎音乐代码,单片机音乐代码,小星星,51单片机音乐代码”边界阅读