DIY编程器网
标题:
让单片机唱歌(2)
[打印本页]
作者:
liyf
时间:
2012-1-27 19:47
标题:
让单片机唱歌(2)
[table]
二.节拍[/td]
[/td]
[/td]
[/td]
[/td]
[/td][/tr]
[/td][/tr]
(一) 相关知识[/td][/tr]
每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,表2为节拍与节拍码的对照.如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间.假设1/4拍为1delay,则1拍应为4delay,以此类推.所以只要求得1/4拍的delay时间,其余的节拍就是它的倍数,如表3为1/4和1/8节拍的时间设定.[/td][/tr]
[/td]
表2 节拍与节拍码对照[/td]
[/td]
[/td]
[/td][/tr]
节 拍 码[/td]
节 拍 数[/td]
节 拍 码[/td]
节 拍 数[/td][/tr]
1[/td]
1/4 拍[/td]
1[/td]
1/8 拍[/td][/tr]
2[/td]
2/4 拍[/td]
2[/td]
1/4 拍[/td][/tr]
3[/td]
3/4 拍[/td]
3[/td]
3/8 拍[/td][/tr]
4[/td]
1 拍[/td]
4[/td]
1/2 拍[/td][/tr]
5[/td]
1又1/4 拍[/td]
5[/td]
5/8 拍[/td][/tr]
6[/td]
1又1/2 拍[/td]
6[/td]
3/4 拍[/td][/tr]
8[/td]
2 拍[/td]
8[/td]
1 拍[/td][/tr]
a[/td]
2又1/2 拍[/td]
a[/td]
1又1/4 拍[/td][/tr]
c[/td]
3 拍[/td]
c[/td]
1又1/2 拍[/td][/tr]
f[/td]
3又3/4 拍[/td]
[/td]
[/td][/tr]
[/td]
表3 各调1/4节拍的时间设定 各调1/8节拍的时间设定[/td]
[/td][/tr]
曲 调 值[/td]
delay[/td]
曲 调 值[/td]
delay[/td][/tr]
调 4/4[/td]
125 毫秒[/td]
调 4/4[/td]
62 毫秒[/td][/tr]
调 3/4[/td]
187 毫秒[/td]
调 3/4[/td]
94 毫秒[/td][/tr]
调 2/4[/td]
250 毫秒[/td]
调 2/4[/td]
125毫秒[/td][/tr]
三. 编码[/td][/tr]
建立音乐的步骤:[/td][/tr]
1. 先把乐谱的音符找出,然后由表63建立t值表的顺序. [/td][/tr]
2. 把t值勤表建立在table1,构成发音符的计数值放在"table".[/td][/tr]
3. 简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的"table"处. [/td][/tr]
[/td]
表4 简谱对应的简谱码.t值. 节拍数[/td]
[/td]
[/td][/tr]
简 谱[/td]
发 音[/td]
简 谱 码[/td]
t 值[/td]
节 拍 码[/td]
节 拍 数[/td][/tr]
5[/td]
低音 so[/td]
1[/td]
64260[/td]
1[/td]
1/4 拍[/td][/tr]
6[/td]
低音 la[/td]
2[/td]
64400[/td]
2[/td]
2/4 拍[/td][/tr]
7[/td]
低音 ti[/td]
3[/td]
64524[/td]
3[/td]
3/4 拍[/td][/tr]
1[/td]
中音 do[/td]
4[/td]
64580[/td]
4[/td]
1 拍[/td][/tr]
2[/td]
中音 re[/td]
5[/td]
64684[/td]
5[/td]
1又1/4 拍[/td][/tr]
3[/td]
中音 mi[/td]
6[/td]
64777[/td]
6[/td]
1又1/2 拍[/td][/tr]
4[/td]
中音 fa[/td]
7[/td]
64820[/td]
8[/td]
2 拍[/td][/tr]
5[/td]
中音 so[/td]
8[/td]
64898[/td]
a[/td]
2又1/2 拍[/td][/tr]
6[/td]
中音 la[/td]
9[/td]
64968[/td]
c[/td]
3 拍[/td][/tr]
7[/td]
中音 ti[/td]
a[/td]
65030[/td]
f[/td]
3又3/4 拍[/td][/tr]
1[/td]
高音 do[/td]
b[/td]
65058[/td]
[/td]
[/td][/tr]
2[/td]
高音 re[/td]
c[/td]
65110[/td]
[/td]
[/td][/tr]
3[/td]
高音 mi[/td]
d[/td]
65157[/td]
[/td]
[/td][/tr]
4[/td]
高音 fa[/td]
e[/td]
65178[/td]
[/td]
[/td][/tr]
5[/td]
高音 so[/td]
f[/td]
65217[/td]
[/td]
[/td][/tr]
[/td]
不发音[/td]
0[/td]
[/td]
[/td]
[/td][/tr]
1/4拍的延迟时间=187毫秒[/td]
[/td]
[/td]
[/td]
[/td][/tr]
delay: mov r7. #02[/td][/tr]
d2: mov r4. #187[/td][/tr]
d3: mov r3. #248[/td][/tr]
djnz r3. $[/td][/tr]
djnz r4. d3[/td][/tr]
djnz r7. d2[/td][/tr]
djnz r5. delay[/td][/tr]
ret[/td][/tr]
欢迎光临 DIY编程器网 (http://www.diybcq.com/)
Powered by Discuz! X3.2