喜欢用单片机做音乐播放的,很愁怎么把音乐转换成代码,从而能在单片机中播放
下面就有方法了:
1:必须有认识简谱的能力,不懂简谱,那就免谈了,自己去学音乐知识吧
2:具有一定的电子知识,至少知道单片机是什么东西。不懂网上查。
3:用音乐代码编辑器,根据简谱,搞出一段代码来,复制到程序中的
uint code sound[]={0xff,0x00,};
放在0xff和0x00之间就可以了。(图片中涂色了得部分)
然后产生代码,烧写到51单片机去。
用普通的8050三极管,接一个8欧的喇叭就可以发出音乐。
管脚要求推挽输出。
4:相同的音之间,比如三个555 ,任意两个5之间最好加1/8拍的休止符。
5:目前没有加更短的拍数。普通音乐足够用了。
6: 删除音节,目前不能使用,输错一个话,就在屏幕上删除。
7: 先按一下节拍,就是上面一行的按钮,然后才按具体的音符,即下面的一行。
其中C1表示 钢琴的中央C。
说明
曲谱存贮格式 unsigned char code MusicName{音高,音长,音高,音长...., 0,0}; 末尾:0,0 表示结束(Important)音高由三位数字组成:
个位是表示 1~7 这七个音符
十位是表示音符所在的音区:1-低音,2-中音,3-高音;
百位表示这个音符是否要升半音: 0-不升,1-升半音。
音长最多由三位数字组成:
个位表示音符的时值,其对应关系是:
|数值(n): |0 |1 |2 |3 | 4 | 5 | 6
|几分音符: |1 |2 |4 |8 |16 |32 |64 音符=2^n
十位表示音符的演奏效果(0-2): 0-普通,1-连音,2-顿音
百位是符点位: 0-无符点,1-有符点
调用演奏子程序的格式
Play(乐曲名,调号,升降八度,演奏速度);
|乐曲名 : 要播放的乐曲指针,结尾以(0,0)结束;
|调号(0-11) : 是指乐曲升多少个半音演奏;
|升降八度(1-3) : 1:降八度, 2:不升不降, 3:升八度;
|演奏速度(1-12000): 值越大速度越快;