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