单片机的可控数字音乐盒设计 专业课程设计(3)
发布时间:2021-06-11
发布时间:2021-06-11
解释:由于工作方式0中计数器的THO和TL0所有位均用于装载计数初值,因此最大计数值为256*256=65536,周期为1x10s,频率为392HZ,每定时一次对输出
取反,因此计数初值应除以2。以下为所有音调标准频率及其在本设计中的的计数初值表 计数初值表
低音 Do Do﹟ Re Re﹟ Mi Fa Fa﹟ So So﹟ La La﹟ Si
频率 262 277 294 311 330 349 370 392 415 440 464 494
T 1908 1805 1701 1608 1515 1433 1351 1276 1205 1136 1078 1012
参数 229 217 204 193 182 172 162 153 145 136 129 121
中音 Do Do﹟ Re Re﹟ Mi Fa Fa﹟ So So﹟ La La﹟ Si
频率 523 554 587 622 659 698 740 784 831 880 932 988
T 956 903 852 804 759 716 676 638 602 568 536 506
参数 115 108 102 97 91 86 81 77 72 68 64 61
高音 Do Do﹟ Re Re﹟ Mi Fa Fa﹟ So So﹟ La La﹟ Si
频率 1046 1109 1175 1245 1318 1397 1480 1568 1661 1760 1865 1976
T 57 54 51 48 45 43 41 38 36 34 32 30
参数 57 54 51 48 45 43 41 38 36 34 32 30
-6
3.节拍的确定
学习音乐时,每个音符都有对应的节拍,我们唱拍的时候通常叫做打拍子,用来区分音符之间所间隔的时间,因此音符的产生不仅要有频率,还要有节拍。我们知道一共有12中不同的节拍,每一拍的时间都是最短拍的整数倍,例如4/4拍是1/4拍的4倍,因此我们可以确定一个基准的延时时间,然后用它的倍数表示不同的节拍,用一个无符号整数来表示其倍数。具体代码如下
void delay(uint p) { uint j; }
通过此程序,每一拍为107ms,可以实现要求,对于节拍没有固定的时间,也可以通过调节循环初值进行延时修改。
uint k,l; for(l=0;l<p;l++)
for(k=165;k>0;k--)
for(j=0;j<160;j++);
4.音符的编码
由计数初值表可以看到,如果采用将每一个音符的所对应的计数初值都直接编入音乐的码流中,每个码占两个字节,并且不易记忆,因此我们采用将不同音符的
上一篇:小学升初中英语模拟试题3
下一篇:数据库原理--机票预定系统