1.1 課題背景 目前,單片機正朝著高性能和多品種方向發展,發展趨勢將是進一步向著CMOS化、低功耗、小體積、大容量、高性能、低價格和外圍電路內裝化等幾個方面。單片機應用的重要意義還在于它從根本上改變了傳統的控制系統設計思想和設計方法。從前必須由模擬電路或數字電路實現的大部分功能,現在已能用單片機通過軟件方法來實現了。這種軟件代替硬件的控制技術也稱為微控制技術,是傳統控制技術的一次革命。單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。導彈的導航裝置,飛機上各種儀表的控制,計算機的網絡通訊與數據傳輸,工業自動化過程的實時控制和數據處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統,錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。 本設計是以STC89C52芯片的電路為基礎,加上蜂鳴器、液晶顯示器等,以此來實現音樂演奏控制器的硬件電路,通過軟件程序來控制單片機內部的定時器使其演奏出優美動聽的音樂。用戶可以按照自己的喜好選擇音樂并將其轉化成機器碼存入單片機的存儲器中。對于不同型號的單片機只需要相應的改變一下地址即可。該軟、硬件系統具有很好的通用性,很高的實際使用價值。 1.2 單片機數字音樂盒有關介紹 發音原理:播放一段音樂需要的是兩個元素,一個是音調,另一個是音符。首先要了解對應的音調,音調主要由聲音的頻率決定,同時也與聲音強度有關。對一定強度的純音,音調隨頻率的升降而升降;對一定頻率的純音、低頻純音的音調隨聲強增加而下降,高頻純音的音調卻隨強度增加而上升。另外,音符的頻率有所不同。 音符的發音主要靠不同的音頻脈沖。利用單片機內部定時器/計數器0,使其工作在模式1,定時中斷,然后控制引腳的輸出音樂。只要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間,利用定時器計時這個半周期時間,每當計時到后就將輸出脈沖的I/O反相,然后重復計時此半周期時間再對I/O反相,就可在I/O腳上得到此頻率的脈沖。 1.2.1 歌曲簡譜的編碼規則 do re mi fa so la si分別編碼為1~7。播放長度以十六分音符為單位(在本程序中為165ms),一拍即四分音符等于4個十六分音符,編為4,其它的播放時間以此類推。音調作為編碼的高4位,而播放時間作為低4位,如此音調和節拍就構成了一個編碼。以0xff作為曲譜的結束標志。 舉例1:音調do,發音長度為兩拍,即二分音符,將其編碼為0x18。 舉例2:音調re,發音長度為半拍,即八分音符,將其編碼為0x22。 歌曲播放的設計。先將歌曲的簡譜進行編碼,儲存在一個數據類型為unsigned char 的數組中。程序從數組中取出一個數,然后分離出高4位得到音調,接著找出相應的值賦給定時器0,使之定時操作蜂鳴器,得出相應的音調;接著分離出該數的低4位,得到延時時間,接著調用軟件延時。 1.2.2 確定定時器0對應于音調的初值 不同的音調對應著不同的物理頻率,而若要產生一定頻率的聲音,我們只需用一定頻率的方波來驅動蜂鳴器即可。對于固定頻率的產生方法,本系統中用定時器0設置為工作方式1(TMOD=0x01),對不同的音調依據頻率裝入對應的計數初值,定時器計數完時將輸出端取反(編程中采用異或),進而產生對應的方波。具體計算如下: 如對于低音SO,其頻率為392HZ,我們實驗中采用的為12M晶振,因此機器周期為1us,那么該音調對應的計數初值為:65536-1000000/(2*392)=65536-1276=64270 解釋:由于工作方式0中計數器的THO和TL0所有位均用于裝載計數初值,因此最大計數值為256*256=65536,周期為1x 10^6 -s,頻率為392HZ,每定時一次對 輸出取反,因此計數初值應除以2。
|