单片机音乐代码问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 20:38:19
帮忙详细解释下以下这个表各个值的含义吧

比如说 低1DO 和 #1DO# 是什么意思? 高1DO 和 #DO#又代表什么?

[音符 频率HZ 6MHZ 十六进制值]这一行每个名称又具体什么意思?
在程序中如何运用?

最好能详细解释下...谢谢了

C调各音符频率与计数值T的对照表:
音符 频率HZ 6MHZ 十六进制值 音符 频率HZ 6MHZ 十六进制值
低1DO 262 64582 FC46 #4FA# 740 65198 FEAE
#1DO# 277 64634 FC7A 中5SO 784 65217 FEC1
低2RE 294 64686 FCAE #5SO# 831 65235 FED3
#2RE# 311 64732 FCDC 中6LA 880 65252 FEE4
低3M 330 64779 FD0B #6LA# 932 65268 FEF4
低4FA 349 64820 FD34 中7SI 988 65283 FF03
#4FA# 370 64860 FD5C 高1DO 1046 65297 FF11
低5SO 392 64898 FD82 #DO# 1109 65311 FF1F
#5SO# 415 64934 FDA6 高2RE 1175 65323 FF2B
低6LA 440 64968 FDC8 #2RE# 1245 65335 FF37
#6LA# 466 65000 FDE8 高3M 1318 65346 FF42
低7SI 4

由于声音是由震动发出,所以每个音符都有其固定的频率,“频率HZ”就是指每个音符的频率,而如果要让机器准确表达这个频率,就要在单片机的晶振下取固定的值,即用定时器来循环一定的次数,“6MHZ”就是指单片机的晶振为6MHz的时候发出制定频率所需要的循环次数,“十六进制值”就是由前面十进制转化而来,因为机器不能识别十进制数,因此应用的时候要转换成十六进制或二进制。
具体应用的时候,将你所需要的音符的十六进制值送入定时器,将扬声器所接的口置1,即可发出制定的音符。
如果想做一首歌的话可先将音符的十六进制值做成一个TABLE,然后通过MOV DPTR,#TABLE,将整个表送入定时器,这样就可以按照表中音符的顺序发出一段音乐。

[音符 频率HZ 6MHZ 十六进制值]这一行音符指的就是从低音到高音的1、2、3、4、5、6、7这些音符。频率是每个音符都有它的频率,因为声音是由物体震动所发出来的。6MHZ是指单片机的晶振为6MHZ时,发出指定音符所用到的循环数值。后面的十六进制值是前面的十进制数转换来的。
在执行过程中,你想让单片机发出哪个音符,就查表得到哪个音符的循环数,让扬声器或蜂鸣器震动发声。