ypm 发表于 2014-1-9 17:16:46

简版51声音播放。

51播放声音,原理:产生对应声音频率的方波(定时器),然后延时。依次循环就可以播放声音。
网上看了好多历程,难点在于乐谱的编辑,什么高音,低音,中音。连音,普通音。什么高八度,低八度,完全不懂。最后决定搞一个简版的,糊弄下大家。
定义一个音1BYTE,1-7这几个音符占用BIT0-BIT2,剩余一个用来表示符号'-'.BIT3表示有无附点,BIT4表示是否升半音,BIT5-BIT6表示音长。
去掉了数字上面一个点的,数字下面点的都没有。连音也没有。反正就是乱搞就是了。但不管怎么说,可以糊弄过去了貌似。
那就先上图
曲谱:

用于测试。大概还行。
仿真:

ypm 发表于 2014-1-9 17:17:27


源文件

shawn_bu 发表于 2014-1-9 17:18:26

大学的时候课本上就有这么个例子。

ypm 发表于 2014-1-9 17:19:01

为了多刷几层楼,我再贴一个声音code转换软件,配使用。

开始 发表于 2014-1-9 23:18:02

copy了。。。。。。。。。。。。。。。。

devcang 发表于 2014-1-10 00:50:14

{:victory:}{:victory:}{:victory:}{:victory:}

xou822 发表于 2014-1-10 08:19:17

额 这尼玛也太简单了哈   谢谢分享

ypm 发表于 2014-1-10 09:35:02

xou822 发表于 2014-1-10 08:19
额 这尼玛也太简单了哈   谢谢分享

一切为了节省资源哈,被迫的。要是所有音高,音长参数都算上的话,要么用2个BYTE表示一个音,要么就要想办法把这些参数压缩到一个BYTE里面去。相比之下,一个BYTE比2个BYTE节省的资源可是很大的。放出来的声音也还好。

wkman 发表于 2014-1-10 10:18:12

看样子是 直流蜂鸣器,如果用 交流喇叭,需要个电容隔直,{:victory:}

minier 发表于 2014-1-10 12:54:39

这是简易的乐音,标准的要出正弦波

xwkm 发表于 2014-1-10 13:46:21

可以试试存一段sine数据然后变速播放什么的。
记的有人用AVR写了个复音music box
elm-chan

xou822 发表于 2014-1-11 21:22:39

ypm 发表于 2014-1-10 09:35
一切为了节省资源哈,被迫的。要是所有音高,音长参数都算上的话,要么用2个BYTE表示一个音,要么就要想 ...

恩这个方案更像是数码音乐而不是放MP3那种的声音

LZ19992005 发表于 2014-2-15 19:48:00


这是简易的乐音,标准的要出正弦波
页: [1]
查看完整版本: 简版51声音播放。