王曉爽 夏振華
摘? 要 針對單片機課程教學的特點,介紹一個基于項目開發(fā)的單片機實驗教學案例的設計。該案例利用單片機定時器產(chǎn)生不同長度和頻率的方波信號來實現(xiàn)MIDI音樂的演奏,學生自由選取自己喜歡的樂曲,音樂播放可采用按鍵啟動或光電檢測啟動,在實際教學應用中可以吸引學生研究單片機程序的興趣,具有較強的趣味性。
關鍵詞 單片機;MIDI音樂;實驗教學
中圖分類號:G642? ? 文獻標識碼:B
文章編號:1671-489X(2021)20-0031-03
SCM Experiment Teaching Design based on MIDI Music//WANG
Xiaoshuang, XIA Zhenhua
Abstract In view of the characteristics of SCM course, this paper introduces the design of a SCM experiment teaching case based on project development. The case use single-chip timer to generate a different length and frequency of the square wave signal to achieve MIDI music performance, the students choose the music they like, music player can start with the button or photoelectric detection. In the practical teaching application, it can attract the students to study the enthusiasm of SCM program, and have a strong interest.
Key words SCM; MIDI music; experiment teaching
0? 前言
單片機課程是一門應用性和實踐性很強的課程,基于單片機的項目開發(fā)是一個很好的學習單片機課程的方法,該方法具有一定的挑戰(zhàn)性、創(chuàng)造性、開拓性和趣味性[1-3]。音樂是大家都喜愛的一種藝術形式,而MIDI技術是數(shù)字音頻技術在音樂制作和處理中的使用。因此,將MIDI音樂引入單片機課程的學習,可以極大地激發(fā)學生學習單片機的興趣,培養(yǎng)學生的自主創(chuàng)新精神。
1? 實驗設計原理及方案
MIDI音樂是由不同頻率和不同節(jié)拍長度的正弦信號(或方波信號)組成的波形序列,利用單片機的定時器產(chǎn)生不同長度和頻率的方波信號,就可以實現(xiàn)MIDI音樂的演奏[4-5]。
在單片機程序的控制下,產(chǎn)生與MIDI音樂對應的波形序列,通過功率放大和電聲轉換產(chǎn)生聲波信號,通過人們的聽覺器官(耳朵)欣賞動聽的音樂。該實驗還利用光敏電阻檢測光線強度的變化,來確認是否有人在光敏電阻周圍活動,當有人在附近時會自動觸發(fā)音樂程序的執(zhí)行。其電路原理框圖如圖1所示。
1.1? 樂器鍵盤與音符頻率的關系
參考88鍵電子琴鍵盤,本設計只考慮C調(diào)從低音5到高音5,共15個音符,包括休止符需要16個狀態(tài)。51單片機的定時/計數(shù)器采用加計數(shù)器方式,當定時器使用時有8位初值自動裝入方式和16位程序初值重裝方式。設時鐘頻率為12 MHz,采用8位初值自動重裝方式,最低頻率為1/512 μs=1 953 Hz,最高頻率為1/2 μs=500 kHz,顯然最低頻率遠不能達到音樂演奏的要求,所以采用16位程序初值重裝方式[6]。根據(jù)音符頻率,計算出定時器的重裝值,表1中最右邊一欄是定時器需要裝入的初值[7]。
1.2? 音樂數(shù)據(jù)表格式的定義
音樂數(shù)據(jù)由音符(輸出信號頻率)、節(jié)拍(長度)和力度(輸出信號幅度)組成,由于單片機引腳輸出只有兩個邏輯狀態(tài)“0”和“1”,控制輸出功率比較困難,因此只考慮前兩個因素。將信號簡化為頻率高低—音符和發(fā)聲的長度—節(jié)拍兩個控制參數(shù)[7]。因為包括休止符頻率有16個狀態(tài),節(jié)拍不超過16個狀態(tài),所以可把每個音符的兩個參數(shù)壓縮在一個字節(jié)中,用高4位表示節(jié)拍,低4位表示頻率,如表2所示。低4位數(shù)字與音符的關系如表3所示。
D7~D4為聲音長度控制參數(shù),數(shù)字8代表1個節(jié)拍,4=1/2拍,2=1/4拍,1=1/8拍,15為2拍。在低4位為0時,高4位的數(shù)值表示休止符的長度。因為正常演奏音符中沒有00H出現(xiàn),所以當遇到00H時表示音樂結束。其中每首音樂的長度由樂譜數(shù)據(jù)表的長度控制。樂譜數(shù)據(jù)表根據(jù)演奏歌曲的簡譜翻譯得到。
2? 實驗軟件設計思想
2.1? 音樂波形產(chǎn)生
音樂信號的頻率由定時器0控制,用一個16位的變量保存當前需要輸出頻率的半周期值,當定時器溢出時產(chǎn)生中斷,將初值重新裝入定時器,同時輸出信號的引腳取反。當定時器啟動后就會不停地輸出波形,如果要停止波形的產(chǎn)生,用關閉定時器來實現(xiàn)。
2.2? 節(jié)拍控制
音樂信號的節(jié)拍長度用定時器1控制,設每秒演奏2個節(jié)拍,每拍8個基本單元,每秒需要16個單元。定時器1的定時時間為一個基本單元(即62.5 mS),通過一個標志位來告訴主程序基本節(jié)拍時間到。初值為音符的基本節(jié)拍數(shù),用一個軟件計數(shù)器對基本節(jié)拍標志進行計數(shù),采用減計數(shù)的方法,當減到“0”時表示該音符結束,達到控制音符長度的目的。
2.3? 音樂演奏
實驗設計了通過按鍵啟動和通過光線變化自動啟動兩種方式開啟音樂演奏。通過設置一個表示演奏和停止演奏的標志位(邏輯變量)來實現(xiàn),當按鍵按下時演奏標志置“1”,當演奏結束(演奏數(shù)據(jù)表的值=00H)將演奏標志置“0”。音樂演奏過程由演奏數(shù)據(jù)表來指揮,起始時演奏指針為“0”,當讀取一個音符后,指針加1指向下一個音符的位置。其中使用1字節(jié)指針最大長度為256,即一首歌最長255個音符,用數(shù)據(jù)00H表示演奏結束。
2.4? 程序流程圖
主程序流程如圖2所示,演奏子程序流程如圖3所示。
3? 實驗過程實現(xiàn)
首先要求學生課前根據(jù)MIDI音樂的數(shù)據(jù)構成和歌曲簡譜,利用表2和表3把自己喜歡的歌曲簡譜翻譯成數(shù)據(jù)表備用;再綜合所學的單片機原理知識,如定時器、中斷、I/O口數(shù)據(jù)輸入輸出和查表等,一步一步地實現(xiàn)整個項目。
1)波形輸出:設置定時器0,從單片機的I/O引腳輸出方波信號。
2)輸出有節(jié)拍信號:設置定時器1,將方波信號調(diào)制成間歇信號,每秒兩次,信號長度約95%。
3)多頻率輸出:編寫頻率數(shù)據(jù)表,利用查表技術實現(xiàn)從1(dao)到7(xi)的等長度演奏。
4)簡單音樂信號輸出:編寫音樂數(shù)據(jù)表,修改演奏程
序,完成等長度音樂音符的演奏;
5)音樂信號輸出:編寫節(jié)拍控制表,修改演奏程序,完成歌曲的演奏;
6)按鍵啟動:當有鍵按下啟動演奏,一首音樂完成停止。
7)光感應啟動:用光敏電阻設計光檢測電路,實現(xiàn)光強變化對音樂的啟動。
4? 結論
該實驗充分利用了單片機的定時器資源、中斷資源、比較器資源,用引腳的邏輯操作輸出方波信號完成MIDI音樂演奏,具有較強的趣味性。不僅可以引起學生研究編寫單片機程序的興趣,而且利用光的檢測和使用揭開了自動控制的神秘面紗,為后續(xù)學習傳感器檢測課程打下良好基礎。該實驗還可以進一步擴展,如引入鍵盤設計制作成簡易電子琴,讓學生對電子產(chǎn)品的形成有一個直觀的認識?!?/p>
參考文獻
[1]曹建樹,代峰燕,俞建榮,等.應用型工科院校單片機課程教學改革與實踐[J].實驗室研究與探索,2012,31(3):129-132.
[2]彭遠芳,陸勤,胡寧,等.基于“項目驅動法”的單片機課程一體化教學的探索與實踐[J].計算機教育,2010(6):78-82.
[3]任肖麗,王驥.基于單片機課程的實驗教學思考[J].中國電力教育,2012(16):127-128.
[4]張建榮.MIDI技術在新媒體內(nèi)容制作實驗教學中的應用[J].實驗室研究與探索,2014,33(4):264-266,280.
[5]潘曉利,陳學煌,劉永志.基于MIDI模塊的音樂發(fā)生器設計[J].電子測量技術,2007(2):108-110.
[6]柴泉,李月寒.基于51單片機的音樂發(fā)生器的設計[J].安徽科技學院學報,2014,28(4):38-41.
[7]楊軍.MIDI消息和標準MIDI文件格式剖析及應用[J].中南民族大學學報(自然科學版),2003,22(S1):21-64.