毕业论文
您现在的位置: 电子琴 >> 电子琴发展 >> 正文 >> 正文

初学单片机,周杰伦的菊花台还能用单片

来源:电子琴 时间:2024/9/22
前面我们制作了一块简单的线路板——单片机电子琴,小小满足了一下成为音乐“家”的梦想(也就是在自己家里弹奏音乐的梦想)。可是就这么完事是不是太草率了?不行!我们还得给它增加新的功能。今天我们一起聊聊如何让单片机播放一段音乐,请跟我来。。。如何翻译简谱给单片机?单片机没有眼睛,他只认识程序代码,所以我们要把有用的东西翻译给他使用,这样单片机才能为我们演奏一段音乐。通过上面的图片,我们知道有用的两样东西是频率和节拍。解决频率和节拍问题:解决频率问题:前面几篇文章中,我们在设计单片机电子琴的时候已经解决了这个问题。就是利用单片机的定时器,通过改变定时器的初值来改变输出音频信号的频率,产生相应频率的声音。解决节拍问题:参照简谱,我们把一秒作为参考时间长度,然后把1/32(x4)秒作为最小单位,制作一个节拍表。同样利用单片机的另一个定时器来产生不同的时间,对应到每个频率所占用的时间节拍长度。单片机播放音乐——节拍表回顾以前制作的频率表(表中增加了休止符):单片机播放音乐——频率表单片机程序设计思路:我们要用到的是两张表的索引号。节拍表的索引号0对应的是1/32节拍(31.25约32(x4)毫秒),索引号1、2、3分别对应的是1/16(62.5约63x4)、1/8(x4)、1/4(x4),以此类推。频率表的索引号已经在图中标注好了。下面我们节选周杰伦的歌曲《菊花台》中的一段简谱说明一下如何制作音乐数据表:从图中我们能够看出来,蓝色的数字是两个一组的,第一个数字是频率的索引号,第二个数字是节拍的索引号。单片机是如何演奏这段音乐的呢?首先读取第一组数字,通过索引号查《频率表》,把《频率表》中的值“0xa6,0X6b”赋值给定时器0的初值寄存器,单片机就会连续输出中音“3”的声音;紧接着通过第二个数字索引号查《节拍表》的定时参数为(x4)毫秒(1/4节拍),根据参数用定时器2进行计时,直到计时到了参数对应的时间,就完成了第一个音符的音频输出。接下来读取第二组数字。。。以此类推,直到演奏完所有音符。以上就是用单片机演奏音乐的一种设计思路。今天就聊到这里,如果您感兴趣,记得

转载请注明:http://www.0431gb208.com/sjszyzl/6200.html

  • 上一篇文章:
  • 下一篇文章: 没有了