51單片機電子琴仿真文件和程序源碼.zip
(139.94 KB, 售價: 1 E幣)
一首音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構成我們所想要的音樂了,當然對于單片機來產生不同的頻率非常方便,我們可以利用單片機的定時/計數器T0來產生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應頻率關系弄正確即可。現在以單片機12MHZ晶振為例,例出高中低音符與單片機計數T0相關的計數值如下表所示
音符 頻率(HZ) 簡譜碼(T值) 音符 頻率(HZ) 簡譜碼(T值)
低1 DO 262 63628 # 4 FA# 740 64860
#1 DO# 277 63731 中 5 SO 784 64898
低2 RE 294 63835 # 5 SO# 831 64934
#2 RE# 311 63928 中 6 LA 880 64968
低 3 M 330 64021 # 6 932 64994
低 4 FA 349 64103 中 7 SI 988 65030
# 4 FA# 370 64185 高 1 DO 1046 65058
低 5 SO 392 64260 # 1 DO# 1109 65085
# 5 SO# 415 64331 高 2 RE 1175 65110
低 6 LA 440 64400 # 2 RE# 1245 65134
# 6 466 64463 高 3 M 1318 65157
低 7 SI 494 64524 高 4 FA 1397 65178
中 1 DO 523 64580 # 4 FA# 1480 65198
# 1 DO# 554 64633 高 5 SO 1568 65217
中 2 RE 587 64684 # 5 SO# 1661 65235
# 2 RE# 622 64732 高 6 LA 1760 65252
中 3 M 659 64777 # 6 1865 65268
中 4 FA 698 64820 高 7 SI 1967 65283
下面我們要為這個音符建立一個表格,有助于單片機通過查表的方式來獲得相應的數據
低音0-19之間,中音在20-39之間,高音在40-59之間
1 2 3 4 5 6 7 8 9 10
TABLE: DW 0 ,63628,63835,64021,64103,64260,64400,64524,0 ,0
DW 0 ,63731,63928,0 ,64185,64331,64463,0 ,0 ,0
DW 0 ,64580,64684,64777,64820,64898,64968,65030,0 ,0
DW 0 ,64633,64732,0 ,64860,64934,64994,0 ,0 ,0
DW 0 ,65058,65110,65157,65178,65217,65252,65283,0 ,0
DW 0 ,65085,65134,0 ,65198,65235,65268,0 ,0 ,0
DW 0
unsigned int code tab[]={64021,64103,64260,64400,
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178};
db定義字節(jié)型的變量 dw定義字類型(兩個字節(jié))變量 dd定義雙字類型(兩個字)變量
2、音樂的音拍,一個節(jié)拍為單位(C調)
曲調值 DELAY 曲調值 DELAY
調4/4 125ms 調4/4 62ms
調3/4 187ms 調3/4 94ms
調2/4 250ms 調2/4 125ms
對于不同的曲調我們也可以用單片機的另外一個定時/計數器來完成。
| 歡迎光臨 ELEOK (http://www.afoofa.cn/) | Powered by Discuz! X5.0 |