微機(jī)原理音樂程序設(shè)計_第1頁
微機(jī)原理音樂程序設(shè)計_第2頁
微機(jī)原理音樂程序設(shè)計_第3頁
微機(jī)原理音樂程序設(shè)計_第4頁
微機(jī)原理音樂程序設(shè)計_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、沈 陽 工 程 學(xué) 院課 程 設(shè) 計課程設(shè)計題目:音樂程序設(shè)計系 別 信息工程系 班級 系統(tǒng)本101 學(xué)生姓名 凌賢忠 學(xué)號 2010414109 指導(dǎo)教師 衣云龍、王德君 職稱 講師、工程師起止日期:2012年 05月21日起至 2012年05月25日止沈 陽 工 程 學(xué) 院課程設(shè)計任務(wù)書課程設(shè)計題目:音樂程序設(shè)計系 別 信息工程系 班級 系統(tǒng)本101 學(xué)生姓名 凌賢忠 學(xué)號 2010414109 指導(dǎo)教師 衣云龍、王德君 職稱 講師、 工程師課程設(shè)計進(jìn)行地點(diǎn): 微機(jī)原理實驗室(F106) 任 務(wù) 下 達(dá) 時 間: 2012 年 05 月 18 日起止日期:2012 年 05 月21日起至2

2、012年05月25日止教研室主任 王健 2012年05月18日批準(zhǔn)一、設(shè)計目的通過課程設(shè)計使學(xué)生更進(jìn)一步掌握微機(jī)原理及應(yīng)用課程的有關(guān)知識,提高應(yīng)用微機(jī)解決問題的能力,加深對微機(jī)應(yīng)用的理解。通過查閱資料,結(jié)合所學(xué)知識進(jìn)行軟、硬件的設(shè)計,使學(xué)生初步掌握應(yīng)用微機(jī)解決問題的步驟及方法。為以后學(xué)生結(jié)合專業(yè)從事微機(jī)應(yīng)用設(shè)計奠定基礎(chǔ)。二、設(shè)計的原始資料及依據(jù)查閱可編程計數(shù)器/定時器芯片8254相關(guān)資料。用簡單的輸入輸出端口等硬件,輸入數(shù)據(jù)、處理數(shù)據(jù)和輸出數(shù)據(jù)。三、設(shè)計的主要內(nèi)容及要求內(nèi)容:利用微機(jī)原理試驗箱,設(shè)計簡易音樂程序,要求至少可以播放2首音樂。要求:1)用2個開關(guān)選擇歌曲。 2)能用揚(yáng)聲器播放歌曲。

3、四、對設(shè)計說明書撰寫內(nèi)容、格式、字?jǐn)?shù)的要求 1.課程設(shè)計說明書(論文)是體現(xiàn)和總結(jié)課程設(shè)計成果的載體,一般不應(yīng)少于3000字。2.學(xué)生應(yīng)撰寫的內(nèi)容為:目錄、正文、參考文獻(xiàn)等。課程設(shè)計說明書(論文)的結(jié)構(gòu)及各部分內(nèi)容要求可參照沈陽工程學(xué)院畢業(yè)設(shè)計(論文)撰寫規(guī)范執(zhí)行。應(yīng)做到文理通順,內(nèi)容正確完整,書寫工整,裝訂整齊。3.說明書(論文)手寫或打印均可。手寫要用學(xué)校統(tǒng)一的課程設(shè)計用紙,用黑或藍(lán)黑墨水工整書寫;打印時按沈陽工程學(xué)院畢業(yè)設(shè)計(論文)撰寫規(guī)范的要求進(jìn)行打印。4. 課程設(shè)計說明書(論文)裝訂順序為:封面、任務(wù)書、成績評定表、目錄、正文、參考文獻(xiàn)。五、 設(shè)計完成后應(yīng)提交成果的種類、數(shù)量、質(zhì)量等

4、方面的要求;提交課程設(shè)計說明書一份。在說明書中要有設(shè)計原理、硬件電路接線圖、設(shè)計的程序及必要注釋等。六、時間進(jìn)度安排;順序階段日期計 劃 完 成 內(nèi) 容備注11.5天查閱資料及程序設(shè)計22.5天上機(jī)調(diào)試程序30.5天成績評定40.5天書寫報告沈 陽 工 程 學(xué) 院微機(jī)原理及匯編語言 課程設(shè)計成績評定表系(部): 信息系 班級: 系統(tǒng)本101 學(xué)生姓名: 凌賢忠 指 導(dǎo) 教 師 評 審 意 見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分調(diào)研論證能獨(dú)立查閱文獻(xiàn),收集資料;能制定課程設(shè)計方案和日程安排。0.15432工作能力態(tài)度工作態(tài)度認(rèn)真,遵守紀(jì)律,出勤情況是否良好,能夠獨(dú)立完成設(shè)計工作, 0.2543

5、2工作量按期圓滿完成規(guī)定的設(shè)計任務(wù),工作量飽滿,難度適宜。0.25432說明書的質(zhì)量說明書立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理,文字通順,技術(shù)用語準(zhǔn)確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。0.55432指導(dǎo)教師評審成績(加權(quán)分合計乘以12) 分加權(quán)分合計指 導(dǎo) 教 師 簽 名: 年 月 日評 閱 教 師 評 審 意 見評價內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分查閱文獻(xiàn)查閱文獻(xiàn)有一定廣泛性;有綜合歸納資料的能力0.25432工作量工作量飽滿,難度適中。0.55432說明書的質(zhì)量說明書立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理,文字通順,技術(shù)用語準(zhǔn)確,符號統(tǒng)一,編號齊全,圖表完備,書寫工整規(guī)范。0.3543

6、2評閱教師評審成績(加權(quán)分合計乘以8)分加權(quán)分合計評 閱 教 師 簽 名: 年 月 日課 程 設(shè) 計 總 評 成 績分目錄目錄1第一章 緒論1第二章 實驗原理22.1 設(shè)計原理22.2 設(shè)計環(huán)境及設(shè)備22.3 硬件接線圖22.4 設(shè)計流程圖32.5 8254芯片52.5.1 定時/計數(shù)器825452.5.2 8254內(nèi)部結(jié)構(gòu)52.5.3 8254外部引腳52.5.4 計數(shù)器內(nèi)部結(jié)構(gòu)62.5.5 8254功能62.5.6 8254控制字72.5.7 8254工作方式72.6 8255芯片82.6.1 8255外部引腳功能92.6.2 8255內(nèi)部結(jié)構(gòu)92.6.3 8255控制字10第三章 程序設(shè)

7、計123.1 頻率產(chǎn)生模塊123.2 控制模塊123.3 控制音符的演奏時間123.4 音符頻率表133.6 程序設(shè)計14第四章 結(jié)論18主要參考資料(文獻(xiàn))19第一章 緒論微機(jī)接口原理是一門非常重要的計算機(jī)技術(shù)基礎(chǔ)課程,全面介紹微機(jī)的基本結(jié)構(gòu)、工作原理、硬件配置、接口期間和接口種類等。本次微機(jī)接口課程設(shè)計的主要目的是要使學(xué)生更進(jìn)一步掌握微機(jī)原理及應(yīng)用課程的有關(guān)知識,提高應(yīng)用微機(jī)解決問題的能力,加深對微機(jī)應(yīng)用的理解。通過查閱資料,結(jié)合所學(xué)知識進(jìn)行軟、硬件的設(shè)計,使學(xué)生初步掌握應(yīng)用微機(jī)解決問題的步驟及方法。為以后學(xué)生結(jié)合專業(yè)從事微機(jī)應(yīng)用設(shè)計奠定基礎(chǔ)。在本次課程設(shè)計中大家利用課上所學(xué)的各種知識,對

8、自己的課程設(shè)計題目進(jìn)行設(shè)計。我們小組所要設(shè)計的題目是音樂程序設(shè)計。在設(shè)計的過程中主要利用計數(shù)器/定時器8254芯片和可編程并行接口8255A芯片,完成2個開關(guān)選擇歌曲,能用揚(yáng)聲器播放歌曲。首先我們利用定時器產(chǎn)生各種頻率的聲音,如“DO”“RE”“ME”然后將各個單音連接起來就組成了一首簡單的曲子或者旋律,旋律及拍數(shù)可以按音樂簡譜而定。對8255芯片PA0和PA6口的置0和1來選擇歌曲。其次實現(xiàn)唱歌功能即實現(xiàn)歌曲的節(jié)拍通過調(diào)用延時子程序控制音符發(fā)音的長短,實現(xiàn)連續(xù)發(fā)聲把SI是否為0作為循環(huán)的條件在每一次揚(yáng)聲器發(fā)出一個相應(yīng)音符之后做無條件轉(zhuǎn)移,從而使揚(yáng)聲器連續(xù)發(fā)聲。第二章 實驗原理2.1 設(shè)計原理

9、我們在這次課設(shè)選擇了音樂程序設(shè)計,音樂程序設(shè)計可以實現(xiàn)至少兩首歌的可選擇播放。對于歌曲的播放我們采用的是計數(shù)器/定時器8254芯片,而對于選擇哪首歌播放則是利用可編程并行接口8255A芯片來實現(xiàn)的?;?254定時計數(shù)接口芯片的工作原理,本次課設(shè)實現(xiàn)了音樂演奏系統(tǒng)程序設(shè)計。當(dāng)運(yùn)行程序時,揚(yáng)聲器便發(fā)出優(yōu)美的音樂。首先要解決發(fā)聲并發(fā)出相應(yīng)音符聲音的問題,由8254計數(shù)器0在初始化時用來產(chǎn)生一定頻率的方波來使揚(yáng)聲器發(fā)聲,再根據(jù)不同音符對應(yīng)的頻率寫入計數(shù)初值發(fā)出相應(yīng)的音符聲。對8255芯片PA0和PA1口的置0和1來控制揚(yáng)聲器的開關(guān)。其次實現(xiàn)唱歌功能即實現(xiàn)歌曲的節(jié)拍通過調(diào)用延時子程序控制音符發(fā)音的長短

10、,實現(xiàn)連續(xù)發(fā)聲把SI是否為0作為循環(huán)的條件在每一次揚(yáng)聲器發(fā)出一個相應(yīng)音符之后做無條件轉(zhuǎn)移,從而使揚(yáng)聲器連續(xù)發(fā)聲。2.2 設(shè)計環(huán)境及設(shè)備PC機(jī)一臺、windows 98系統(tǒng)、實驗箱,導(dǎo)線若干。8254定時器:用于產(chǎn)生秒脈沖。8255并口:用做接口芯片,與數(shù)碼管相連 2.3 硬件接線圖硬件接線圖如圖2.1所示。D0 PB0D1 PB1 D2 8 D3 2 D4 5 D5 5 D6 芯 D7 片 WR RD PA0CS PA1A0 A1 XD0XD1XD2 系XD3 統(tǒng)XD4 總XD5 線XD6XD7IOW#IOR#IOY3 IOY1XA1XA2Clk+5VD0D1D2 8D3 2D4 5D5 4D

11、6 芯D7 片WRRDCSA0A1CLK0OUT0GATE0 圖2.1 硬件接線圖2.4 設(shè)計流程圖軟件流程圖如圖2.2所示。開始獲取選項選擇第1首歌YN曲1各音符頻率設(shè)置曲1各音符時間設(shè)置讀取頻率頻率=0調(diào)用paly子程序讀取時間節(jié)拍計數(shù)次數(shù)送8254,產(chǎn)生該頻率信號,在送至揚(yáng)聲器延時曲2各音符頻率設(shè)置曲2各音符時間設(shè)置讀取頻率頻率=0調(diào)用paly子程序讀取時間節(jié)拍計數(shù)次數(shù)送8254,產(chǎn)生該頻率信號,在送至揚(yáng)聲器延時結(jié)束是否播放NYYNNY圖 2.2 軟件流程圖2.5 8254芯片2.5.1 定時/計數(shù)器8254 主要功能: 每片上有3 個獨(dú)立的16 位的減計數(shù)器通道。 對于每個計數(shù)器,都可

12、以單獨(dú)作為定時器或計數(shù)器使用,并且都可以按照二進(jìn)制或十進(jìn)制來計數(shù)。 每個通道都有6 種工作方式,都可以通過程序設(shè)置或改變。 每個計數(shù)器的速率可高達(dá)2MHz。最高的計數(shù)時鐘頻率為2.6MHz。2.5.2 8254內(nèi)部結(jié)構(gòu)8254的內(nèi)部結(jié)構(gòu)如圖2.3所示,它主要包括以下幾個主要部分:圖 2.3 8254的內(nèi)部結(jié)構(gòu)2.5.3 8254外部引腳8254芯片是具有24個引腳的雙列直插式集成電路芯片,其引腳分布如圖所示。8254芯片的24個引腳分為兩組,一組面向CPU,另一組面向外部設(shè)備,各個引腳及其所傳送信號的情況,介紹如下: D7D0:雙向、三態(tài)數(shù)據(jù)線引腳,與系統(tǒng)的數(shù)據(jù)線連接,傳送控制、數(shù)據(jù)及狀態(tài)信息

13、。 :來自于CPU的讀控制信號輸入引腳,低電平有效。 :來自于CPU的寫控制信號輸入引腳,低電平有效。 :芯片選擇信號輸入引腳,低電平有效。圖2.4 8254的引腳 A1、A0:地址信號輸入引腳,用以選擇8254芯片的通道及控制字寄存器。 VCC及GND:+5V電源及接地引腳 CLKi:i=0,1,2,第i個通道的計數(shù)脈沖輸入引腳,8254規(guī)定,加在CLK引腳的輸入時鐘信號的頻率不得高于2.6MHZ,即時鐘周期不能小于380ns。 GATEi:i=0,1,2,第i個通道的門控信號輸入引腳,門控信號的作用與通道的工作方式有關(guān)。 OUTi:i=0,1,2,第i個通道的定時/計數(shù)到信號輸出引腳,輸出

14、信號的形式由通道的工作方式確定,此輸出信號可用于觸發(fā)其它電路工作,或作為向CPU發(fā)出的中斷請求信號。2.5.4 計數(shù)器內(nèi)部結(jié)構(gòu)每個計數(shù)器由一個16位可預(yù)置的減1計數(shù)器組成,計數(shù)初值可保存在16位的鎖存器中,該鎖存器只寫不能讀。在計數(shù)器工作時,初值不受影響,以便進(jìn)行重復(fù)計數(shù)。圖中每個計數(shù)器有一個時鐘輸入端CLK作為計數(shù)脈沖源, 計數(shù)方式可以是二進(jìn)制,計數(shù)范圍110000H,也可以是十進(jìn)制,計數(shù)范圍165536。門控端GATE用于控制計數(shù)開始和停止。輸出OUT端當(dāng)計數(shù)器計數(shù)值減到零時,該端輸出標(biāo)志信號 。2.5.5 8254功能8254既可作定時器又可作計數(shù)器: 計數(shù): 計數(shù)器裝入初值后,當(dāng)GAT

15、E為高電平時,可用外部事件作為CLK 脈沖對計數(shù)值進(jìn)行減1 計數(shù),每來一個脈沖減1,當(dāng)計數(shù)值減至0時,由OUT 端輸出一個標(biāo)志信號。 定時: 計數(shù)器裝入初值后,當(dāng)GATE為高電平時,由CLK 脈沖觸發(fā)開始自動計數(shù),當(dāng)計數(shù)到零時,發(fā)計數(shù)結(jié)束定時信號。除上述典型應(yīng)用外,8254還可作頻率發(fā)生器、分頻器、實時鐘、單脈沖發(fā)生器等。2.5.6 8254控制字圖2.5 8254控制字說明 : 8254每個通道對輸入CLK按二進(jìn)制或二十進(jìn)制從預(yù)置值開始減1計數(shù),減到0時從OUT輸出一個信號。 8254編程時先寫控制字,再寫時間常數(shù)。2.5.7 8254工作方式 方式0:計數(shù)結(jié)束產(chǎn)生中斷方式當(dāng)寫入控制字后,O

16、UT變?yōu)榈碗娖?,?dāng)寫入初值后立即開始計數(shù),當(dāng)計數(shù)結(jié)束時,變成高電平。 方式1:可編程單次脈沖方式當(dāng)初值裝入后且GATE由低變高時,OUT變?yōu)榈碗娖?,計?shù)結(jié)束變?yōu)楦唠娖健?方式2:頻率發(fā)生器方式當(dāng)初值裝入時,OUT變?yōu)楦?;計?shù)結(jié)束,OUT變?yōu)榈汀T摲绞较氯绻嫈?shù)未結(jié)束,但GATE為低時,立即停止計數(shù),強(qiáng)制OUT變高,當(dāng)GATE再變高時,便啟動一次新的計數(shù)周期。 方式3:方波發(fā)生器當(dāng)裝入初值后,在GATE上升沿啟動計數(shù),OUT 輸出高電平; 當(dāng)計數(shù)完成一半時,OUT輸出低電平。圖2.6 方波圖方式3與方式2的工作方式類似,也是在初始化完成后能重復(fù)循環(huán)計數(shù),只是輸出的波形不同。計數(shù)過程當(dāng)把方式3的控

17、制字寫入控制字寄存器后,輸出端OUT變成高電平,作為初始電平。再將計數(shù)初值寫入計數(shù)初值寄存器CR中,再經(jīng)過一個時鐘周期,計數(shù)初值被移入計數(shù)執(zhí)行單元CE中,從下一個時鐘脈沖開始作減1 計數(shù),方式3的計數(shù)過程分為兩種情況:第一種情況:計數(shù)初值為偶數(shù),當(dāng)作減1計數(shù)減到N/2時,輸出端OUT端變成低電平,減到0時,輸出端OUT變成高電平,并重新從初值開始新的計數(shù)過程。若GATE為高電平,則一直重復(fù)同樣的計數(shù)過程??梢?,輸出端OUT輸出連續(xù)的方波,故稱方波發(fā)生器。第二種情況:計數(shù)初值為奇數(shù),當(dāng)作減1計數(shù)減到(N+1)/2以后,輸出端OUT變成低電平,減到0時,輸出端OUT又變成高電平。并重新從初值開始新

18、的計數(shù)過程。這時輸出端的波形為連續(xù)的近似方波。門控信號的影響工作在方式3時,門控信號GATE的功能與工作方式2一樣,即GATE 為高電平時,允許計數(shù);GATE為低電平時停止計數(shù)。GATE引腳上的信號從低電平跳到高電平時,將會重新把計數(shù)初值寄存器CR中的內(nèi)容移入計數(shù)執(zhí)行單元CE中,并以新裝入的值重新開始計數(shù)。如果在計數(shù)過程中寫入新的初值,而GATE信號一直維持高電平,則新的初值不會影響當(dāng)前的計數(shù)過程,只有在計數(shù)結(jié)束后的下一個計數(shù)周期,才按新的初值計數(shù)。若寫入新的初值后,遇到門控信號的上升沿,則結(jié)束現(xiàn)行的計數(shù)過程,從下一個時鐘脈沖下降沿開始按新的計數(shù)初值進(jìn)行計數(shù)。2.6 8255芯片2.6.1 8

19、255外部引腳功能圖2.7 8255外部引腳圖可編程并行接口8255芯片的外部引腳圖如圖2.7所示。 PA0PA7:端口A輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入鎖存器。 PB0PB7:端口B輸入輸出線,一個8位的I/O鎖存器, 一個8位的輸入輸出緩沖器。 PC0PC7:端口C輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設(shè)定而分成2個4位的端口, 每個4位的端口包含一個4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號輸出或狀態(tài)信號輸入端口。 RESET:復(fù)位輸入線,當(dāng)該輸入端外于高電平時,所有內(nèi)部寄存器(包

20、括控制寄存器)均被清除,所有I/O口均被置成輸入方式。 CS:片選信號線,當(dāng)這個輸入引腳為低電平時,表示芯片被選中,允許8255與CPU進(jìn)行通訊。 RD:讀信號線,當(dāng)這個輸入引腳為低電平時,允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。 WR:寫入信號,當(dāng)這個輸入引腳為低電平時,允許CPU將數(shù)據(jù)或控制字寫8255。 D0D7:8255的數(shù)據(jù)線。8255與CPU數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行輸入輸出指令時,通過它實現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。 2.6.2 8255內(nèi)部結(jié)構(gòu)圖2.8 8255的內(nèi)部結(jié)構(gòu)圖可編程并行接口8255芯

21、片的內(nèi)部結(jié)構(gòu)圖如圖2.8所示。 輸入/輸出端口A、B、C 。這三個端口均可看作是I/O端口,但它們的結(jié)構(gòu)和功能也稍有不同。A口和B口是一個獨(dú)立的8位I/O口。C口:可以看作是一個獨(dú)立的8位I/O口;也可以看作是兩個獨(dú)立的4位I/O口。 A組和B組控制電路。這是兩組根據(jù)CPU命令控制8255A工作方式的電路,這些控制電路內(nèi)部設(shè)有控制寄存器,可以根據(jù)CPU送來的編程命令來控制8255A的工作方式,也可以根據(jù)編程命令來對C口的指定位進(jìn)行置/復(fù)位的操作。A組控制電路用來控制A口及C口的高4位;B組控制電路用來控制B口及C口的低4位。 讀/寫控制邏輯,它負(fù)責(zé)管理8255A的數(shù)據(jù)傳輸過程。它接收CS*及R

22、D*、WR*、RESET,還有來自系統(tǒng)地址總線的口地址選擇信號A0和A1。將這些信號組合后,得到對A組控制部件和B組控制部件的控制命令,并將命令發(fā)給這兩個部件,以完成對數(shù)據(jù)、狀態(tài)信息和控制信息的傳輸。 數(shù)據(jù)總緩沖器,它是8位的雙向的三態(tài)緩沖器。作為8255A與系統(tǒng)總線連接的界面,輸入/輸出的數(shù)據(jù),CPU的編程命令以及外設(shè)通過8255A傳送的工作狀態(tài)等信息,都是通過它來傳輸?shù)摹?.6.3 8255控制字1 工作方式選擇控制字它可以使8255的三個端口工作于不同的工作方式,如圖2.9所示的8255控制字。圖 2.9 8255的控制字圖當(dāng)控制字bit=7時,控制字的bit6bit3這4位用來控制A組

23、,A口的8位和C口的高4位,而控制字的低3位bit2bit0用來控制B組,包括B口的8位和C口的低四位。三種工作方式的描述如下: 方式0基本輸入/輸出方式; 方式1選通輸入/輸出方式; 方式2雙向傳送方式。2 C口按位置位/復(fù)位控制字8255的C口具有位控功能,即端口C的8位中的任一位都可通過CPU向8255的控制寄存器寫入一個按位置位/復(fù)位控制字來置1或清0,而C口中其他位的狀態(tài)不變。其格式注意8255的C口按位置位/復(fù)位控制字的最高位D7(特征位)應(yīng)為低電平。如圖2.10所示C口按位置位/復(fù)位控制字格式。圖 2.10 C口按位置位/復(fù)位控制字第三章 程序設(shè)計3.1 頻率產(chǎn)生模塊所有音樂都是

24、由各個不同頻率的音階和其延續(xù)時間的長短來實現(xiàn)的。不同的音樂是由各個音階按某種排列各自播放一定時間形成的,將各音樂音階和其延續(xù)時間存在數(shù)據(jù)段中,然后根據(jù)不同按鍵值選擇不同的音階和時間表,再使用計數(shù)器產(chǎn)生該音階頻率。而我們學(xué)過的有計數(shù)器可以產(chǎn)生各種頻率,所以我們主要采用計數(shù)器8254產(chǎn)生各音符,用8255并行接口來控制,達(dá)到播放音樂的功能。所有音樂都是由各個不同頻率的音階和其延續(xù)時間的長短來實現(xiàn)的。不同的音樂是由各個音階按某種排列各自播放一定時間形成的,將各音樂音階和其延續(xù)時間存在數(shù)據(jù)段中,然后根據(jù)不同按鍵值選擇不同的音階和時間表,再使用計數(shù)器產(chǎn)生該音階頻率。CPU通過對定時器的通道0進(jìn)行編程,使

25、其I/O寄存器接收一個控制聲音頻率的16位計數(shù)值。以產(chǎn)生特殊的音響。當(dāng)定時器接收的計數(shù)值為533H時,能產(chǎn)生896Hz的聲音,因此產(chǎn)生其他頻率的計數(shù)值就可算出來:533Hz×896÷頻率=1234DC÷頻率在送出頻率計數(shù)值之前,還要給方式寄存器送一個方式值,該數(shù)決定對哪一個通道編程,采用什么模式,送入通道的計數(shù)值是一字節(jié)還是兩字節(jié),是二進(jìn)制碼還是BCD碼。其位組合的格式如下:產(chǎn)生指定頻率聲音的程序段如下: PLAY:MOV DX,0FH MOV AX,4240H DIV WORD PTR SIMOV DX,MY8254_COUNT0OUT DX,ALMOV AL,

26、AHOUT DX,AL3.2 控制模塊對8255芯片PA0和PA6口的置0和1來選擇歌曲。其次實現(xiàn)唱歌功能即實現(xiàn)歌曲的節(jié)拍通過調(diào)用延時子程序控制音符發(fā)音的長短,實現(xiàn)連續(xù)發(fā)聲把SI是否為0作為循環(huán)的條件在每一次揚(yáng)聲器發(fā)出一個相應(yīng)音符之后做無條件轉(zhuǎn)移,從而使揚(yáng)聲器連續(xù)發(fā)聲。3.3 控制音符的演奏時間控制音符的演奏時間,是設(shè)計音樂程序的關(guān)鍵問題。最直觀的方法是按照按照樂譜為每一個音符規(guī)定一個演奏時間,但是利用這種方法是調(diào)試程序特別困難。特別是在遇到一首不熟悉的歌曲時,初期很難確定每一個音符的演唱時間,而調(diào)試程序的時候費(fèi)時費(fèi)力,效果很差,下面,我么么向讀者推薦一個記號的方法,即沒一個音符規(guī)定一個“單位

27、時間”。 單位時間*N=音符的演唱時間其中N為調(diào)試參數(shù),一首歌只有一個調(diào)試參數(shù)。設(shè)計程序時用EQU偽指令定義調(diào)試參數(shù),初值先行估計,調(diào)試時再修改它。如何確定每個音符的演奏時間呢?我們知道,音符的節(jié)奏分為一拍、半拍、1/4拍、1/8拍等等。如果在一首歌曲中,音符演奏的時間最短為1/8拍,我們就規(guī)定一拍音符的單位時間為8,半拍音符的單位時間為4,1/4拍音符的單位時間為2,1/8拍音符的單位時間為1。以“友誼地久天長”這首歌為例,最短音符為1/8拍,我們就定義一個單位時間為8。所示,途中第一行是一段曲譜,第3行是相應(yīng)音符的單位時間,編程時,首先將一個音符的頻率轉(zhuǎn)化成計數(shù)初值寫入2號計數(shù)器,然后將音

28、符的單位時間乘以調(diào)試參數(shù)N,在調(diào)用延時子程序,就可以控制音符的演奏時間了,調(diào)試時,只需改變調(diào)試參數(shù)N即可。3.4 音符頻率表音符頻率表如下表所示:表 4.1 音符頻率表1 音符音調(diào) A B C D E F G221 248 278 294 330 371 416248 278 312 330 371 416 467131 147 165 175 196 221 248147 165 185 196 221 248 278165 185 208 221 248 278 312175 196 221 234 262 294 330196 221 248 262 294 330 371表 4.2 音

29、符頻率表2 音符音調(diào) 1 2 3 4 5 6 7 A B C D E F G 441 495 556 589 661 742 833 495 556 624 661 742 833 935 262 294 330 350 393 441 495 294 330 371 393 441 495 556 330 371 416 441 495 556 624 350 393 441 467 525 589 661 393 441 495 525 589 661 742表 4.3 音符頻率表3 音符音調(diào) A B C D E F G 882 990 1112 1178 1322 1484 1665 9

30、90 1112 1248 1322 1484 1665 1869 525 589 661 700 786 882 990 589 661 742 833 882 990 1112 661 742 833 882 990 1112 1248 700 786 882 935 1049 1178 1322 789 882 990 1049 1178 1322 1484 編程產(chǎn)生各種音符的頻率可參照此表。具體實現(xiàn)時由于各計算器的速度不同,樂曲演奏的速度存在差異,所以可以適當(dāng)?shù)恼{(diào)整延遲子程序的時間參數(shù)。3.6 程序設(shè)計IOY3EQU 06C0H ; 端口定義IOY1EQU 0640HMY8254_COU

31、NT0EQU IOY3+00H ;8254計數(shù)器0端口地址MY8254_COUNT1EQU IOY3+02H ;8254計數(shù)器1端口地址MY8254_COUNT2EQU IOY3+04H ;8254計數(shù)器2端口地址MY8254_MODEEQU IOY3+06H ;8254控制寄存器端口地址MY8255_AEQU IOY1+00H ;8255輸入輸出0端口地址MY8255_BEQU IOY1+02H ;8255輸入輸出1端口地址MY8255_CEQU IOY1+04H ;8255輸入輸出2端口地址MY8255_MODEEQU IOY1+06H ;8255控制寄存器端口地址 STACK1SEGME

32、NT STACKDW 256 DUP(?)STACK1ENDSDATASEGMENT FREQ_LIST DW 371,495,495,495,624,556,495,556,624 ;頻率表 DW 495,495,624,742,833,833,833,742,624 DW 624,495,556,495,556,624,495,416,416,371 DW 495,833,742,624,624,495,556,495,556,833 DW 742,624,624,742,833,990,742,624,624,495 DW 556,495,556,624,495,416,416,371,

33、495,0TIME_LIST DB 4, 6, 2, 4, 4, 6, 2, 4, 4 ;時間表 DB 6, 2, 4, 4, 12, 1, 3, 6, 2 DB 4, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 12, 4, 6, 2, 4, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 12, 4, 6, 2, 4, 4 DB 6, 2, 4, 4, 6, 2, 4, 4, 4FREQ_LIST1 DW 330,331,330,332,330,331,330,393,262,294,330,350,350,350,350 DW 350,330,332,330,33

34、1,330,294,294,262,294,393,330,330,330,330DW 330,330,330,393,262,294,330,350,350,350,350,350,330,330,330DW 330,330,294,0TIME_LIST1 DB 4,4,8,4,4,8,4,4,6,2,16,4,4,6,2 DB 4,4,4,2,2,4,4,4,4,8,8,4,4,8,4,4 DB 8,4,4,6,2,16,4,4,6,2,4,4,4,2,2 DB 4,2DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV

35、 DS,AXMOV DX,MY8254_MODE;ASSUME CS:CODE,DS:DATA ;初始化8254工作方式MOV AL,36H ;定時器0、方式3OUT DX,ALMOV DX, MY8255_MODE ;初始化8255MOV AL, 90H ;A口輸入,B口輸出OUT DX, ALXIE: MOV DX, MY8255_AIN AL, DXMOV DX, MY8255_BOUT DX, ALCALL DALLY CMP AL,01H JZ BEGIN JMP BEGIN1BEGIN:MOV SI,OFFSET FREQ_LIST ;裝入頻率表起始地址MOV DI,OFFSET TIME_LIST ;裝入時間表起始地址JMP PLAYBEGIN1:MOV SI,OFFSET FREQ_LIST1 ;裝入頻率表起始地址MOV DI,OFFSET

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論