要單片機(jī)8031產(chǎn)生音頻脈沖,只要算出某一音頻的周期,然后用計(jì)數(shù)器計(jì)數(shù)1/2 此周期,計(jì)時(shí)到即將輸出脈沖的I/O管腳反相,再重計(jì)時(shí)輸出,既可在此I/O管腳得到此音頻的脈沖。
用8031內(nèi)部定時(shí)/計(jì)數(shù)器計(jì)數(shù),使其工作于模式1,要得到不同頻率的音頻信號(hào),只要改變其計(jì)數(shù)值即可。如要產(chǎn)生頻率為f的音頻信號(hào),計(jì)數(shù)器計(jì)數(shù)如下: N=2-10/f(采用6M晶振)
表1為C調(diào)各音符頻率與計(jì)數(shù)值N的對(duì)照表 一、硬件 用廣州單片機(jī)實(shí)驗(yàn)室設(shè)計(jì)開發(fā)的ZH5101單板機(jī),從其擴(kuò)展口P1口的P1.0管腳拉出一根線,外加如右下圖所示的電路,就做成了會(huì)奏樂的單片機(jī)。 二、軟件設(shè)計(jì) 要輸出某一曲調(diào),必須知道此曲調(diào)所包括的音符以及每個(gè)音符所占的節(jié)拍。本軟件將一個(gè)音符用一個(gè)字節(jié)的代碼表示。字節(jié)高四位代表簡碼,低四位代表音符的節(jié)拍數(shù),設(shè)1/4拍所占時(shí)間為T,則一個(gè)節(jié)拍的時(shí)間為4T,如某一音符節(jié)拍為2/4拍,則聲音的延續(xù)時(shí)間為2T,在2T時(shí)間里,P1.0輸出的即為此音符的音頻脈沖。
 為使讀者能進(jìn)一步了解此軟件的設(shè)計(jì)思想,現(xiàn)舉例如下: 如要輸出曲調(diào)|63 43 26|,此譜只有4個(gè)音符,可先對(duì)這4個(gè)音符建一計(jì)數(shù)值表TAB如表2,再根據(jù)每個(gè)音符的簡碼號(hào)極其節(jié)拍數(shù)依次將其代碼存于TAB1地址開始的存儲(chǔ)單元,高四位存簡碼號(hào),低四位存節(jié)拍。如6的簡碼號(hào)為1,節(jié)拍數(shù)為2/4,即2T,則寫入的數(shù)據(jù)代碼為12H,高四位為1,低四位為2(2T),這樣根據(jù)以上曲調(diào)從TAB1開始處依次寫入:12H,32H,42H,32H,24H,14H便組成了音符代碼表(表3)。 程序運(yùn)行時(shí),從代碼表中依次讀出各音符代碼,根據(jù)高位的簡碼號(hào)從TAB表中取出相應(yīng)的計(jì)數(shù)值送THO TLO,再根據(jù)低位的節(jié)拍數(shù)確定每個(gè)音符相應(yīng)的延時(shí)時(shí)間。本程序流程圖如下: 如果讀者手頭沒有單片機(jī)實(shí)驗(yàn)板,不妨向本站郵購。郵購價(jià):¥110(包括郵費(fèi))
表1
| 音符 |
頻率(Hz) |
簡碼(N值) |
音符 |
頻率(Hz) |
簡碼(N值) |
| 低1 |
262 |
F117H |
#4 |
740 |
FAB8H |
| #1 |
277 |
F1E5H |
中5 |
784 |
FB04H |
| 低2 |
294 |
F2B6H |
#5 |
831 |
FB4CH |
| #2 |
311 |
F370H |
中6 |
880 |
FB8FH |
| 低3 |
330 |
F429H |
#6 |
932 |
FBCFH |
| 低4 |
349 |
F4CEH |
中7 |
988 |
FC0BH |
| #4 |
370 |
F571H |
高1 |
1046 |
FC43H |
| 低5 |
392 |
F608H |
#1 |
1109 |
FC7AH |
| #5 |
415 |
F696H |
高2 |
1175 |
FCACH |
| 低6 |
440 |
F71FH |
#2 |
1245 |
FCDCH |
| #6 |
466 |
F79EH |
高3 |
1318 |
FDO9H |
| 低7 |
494 |
F817H |
高4 |
1397 |
FD34H |
| 中1 |
523 |
F887H |
#4 |
1480 |
FD5CH |
| #1 |
554 |
F8F2H |
高5 |
1568 |
FD82H |
| 中2 |
578 |
F93DH |
#5 |
1661 |
FDA5H |
| #2 |
622 |
F9B8H |
高6 |
1760 |
FDC7H |
| 中3 |
659 |
FA12H |
#6 |
1865 |
FDE7H |
| 中4 |
698 |
FA67H |
高7 |
1976 |
FE05H |
表2
| 音符 |
簡碼 |
N值 |
存儲(chǔ)地址 |
| 6 |
1 |
F71FH |
TAB |
| 2 |
2 |
F93DH |
TAB+2 |
| 3 |
3 |
FA12H |
TAB+4 |
| 4 |
4 |
FA67H |
TAB+6 |
表3
| 音符 |
節(jié)拍 |
代碼 |
存儲(chǔ)地址 |
| 6 |
2/4 |
12H |
TAB1 |
| 3 |
2/4 |
32H |
TAB1+1 |
| 4 |
2/4 |
42H |
TAB1+2 |
| 3 |
2/4 |
32H |
TAB1+3 |
| 2 |
4/4 |
24H |
TAB1+4 |
| 6 |
4/4 |
14H |
TAB1+5 | |