版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、沈 陽 工 程 學(xué) 院課 程 設(shè) 計(jì)課程設(shè)計(jì)題目:音樂程序設(shè)計(jì)系 別 信息工程系 班級 系統(tǒng)本101 學(xué)生姓名 張伶俐 學(xué)號(hào) 2010414102 指導(dǎo)教師 衣云龍、王德君 職稱 講師、工程師起止日期:2012年 05月21日起至 2012年05月25日止沈 陽 工 程 學(xué) 院課程設(shè)計(jì)任務(wù)書課程設(shè)計(jì)題目:音樂程序設(shè)計(jì)系 別 信息工程系 班級 系統(tǒng)本101 學(xué)生姓名 張伶俐 學(xué)號(hào) 2010414102 指導(dǎo)教師 衣云龍、王德君 職稱 講師、 工程師課程設(shè)計(jì)進(jìn)行地點(diǎn): 微機(jī)原理實(shí)驗(yàn)室(f106) 任 務(wù) 下 達(dá) 時(shí) 間: 2012 年 05 月 18 日起止日期:2012 年 05 月21日起至2
2、012年05月25日止教研室主任 王健 2012年05月18日批準(zhǔn)一、設(shè)計(jì)目的通過課程設(shè)計(jì)使學(xué)生更進(jìn)一步掌握微機(jī)原理及應(yīng)用課程的有關(guān)知識(shí),提高應(yīng)用微機(jī)解決問題的能力,加深對微機(jī)應(yīng)用的理解。通過查閱資料,結(jié)合所學(xué)知識(shí)進(jìn)行軟、硬件的設(shè)計(jì),使學(xué)生初步掌握應(yīng)用微機(jī)解決問題的步驟及方法。為以后學(xué)生結(jié)合專業(yè)從事微機(jī)應(yīng)用設(shè)計(jì)奠定基礎(chǔ)。二、設(shè)計(jì)的原始資料及依據(jù)查閱可編程計(jì)數(shù)器/定時(shí)器芯片8254相關(guān)資料。用簡單的輸入輸出端口等硬件,輸入數(shù)據(jù)、處理數(shù)據(jù)和輸出數(shù)據(jù)。三、設(shè)計(jì)的主要內(nèi)容及要求內(nèi)容:利用微機(jī)原理試驗(yàn)箱,設(shè)計(jì)簡易音樂程序,要求至少可以播放2首音樂。要求:1)用2個(gè)開關(guān)選擇歌曲。 2)能用揚(yáng)聲器播放歌曲。
3、四、對設(shè)計(jì)說明書撰寫內(nèi)容、格式、字?jǐn)?shù)的要求 1.課程設(shè)計(jì)說明書(論文)是體現(xiàn)和總結(jié)課程設(shè)計(jì)成果的載體,一般不應(yīng)少于3000字。2.學(xué)生應(yīng)撰寫的內(nèi)容為:目錄、正文、參考文獻(xiàn)等。課程設(shè)計(jì)說明書(論文)的結(jié)構(gòu)及各部分內(nèi)容要求可參照沈陽工程學(xué)院畢業(yè)設(shè)計(jì)(論文)撰寫規(guī)范執(zhí)行。應(yīng)做到文理通順,內(nèi)容正確完整,書寫工整,裝訂整齊。3.說明書(論文)手寫或打印均可。手寫要用學(xué)校統(tǒng)一的課程設(shè)計(jì)用紙,用黑或藍(lán)黑墨水工整書寫;打印時(shí)按沈陽工程學(xué)院畢業(yè)設(shè)計(jì)(論文)撰寫規(guī)范的要求進(jìn)行打印。4. 課程設(shè)計(jì)說明書(論文)裝訂順序?yàn)椋悍饷?、任?wù)書、成績評定表、目錄、正文、參考文獻(xiàn)。五、 設(shè)計(jì)完成后應(yīng)提交成果的種類、數(shù)量、質(zhì)量等
4、方面的要求;提交課程設(shè)計(jì)說明書一份。在說明書中要有設(shè)計(jì)原理、硬件電路接線圖、設(shè)計(jì)的程序及必要注釋等。六、時(shí)間進(jìn)度安排;順序階段日期計(jì) 劃 完 成 內(nèi) 容備注11.5天查閱資料及程序設(shè)計(jì)22.5天上機(jī)調(diào)試程序30.5天成績評定40.5天書寫報(bào)告沈 陽 工 程 學(xué) 院微機(jī)原理及匯編語言 課程設(shè)計(jì)成績評定表系(部): 信息系 班級: 系統(tǒng)本101 學(xué)生姓名: 張伶俐 指 導(dǎo) 教 師 評 審 意 見評價(jià)內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分調(diào)研論證能獨(dú)立查閱文獻(xiàn),收集資料;能制定課程設(shè)計(jì)方案和日程安排。0.15432工作能力態(tài)度工作態(tài)度認(rèn)真,遵守紀(jì)律,出勤情況是否良好,能夠獨(dú)立完成設(shè)計(jì)工作, 0.2543
5、2工作量按期圓滿完成規(guī)定的設(shè)計(jì)任務(wù),工作量飽滿,難度適宜。0.25432說明書的質(zhì)量說明書立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理,文字通順,技術(shù)用語準(zhǔn)確,符號(hào)統(tǒng)一,編號(hào)齊全,圖表完備,書寫工整規(guī)范。0.55432指導(dǎo)教師評審成績(加權(quán)分合計(jì)乘以12) 分加權(quán)分合計(jì)指 導(dǎo) 教 師 簽 名: 年 月 日評 閱 教 師 評 審 意 見評價(jià)內(nèi)容具 體 要 求權(quán)重評 分加權(quán)分查閱文獻(xiàn)查閱文獻(xiàn)有一定廣泛性;有綜合歸納資料的能力0.25432工作量工作量飽滿,難度適中。0.55432說明書的質(zhì)量說明書立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理,文字通順,技術(shù)用語準(zhǔn)確,符號(hào)統(tǒng)一,編號(hào)齊全,圖表完備,書寫工整規(guī)范。0.3543
6、2評閱教師評審成績(加權(quán)分合計(jì)乘以8)分加權(quán)分合計(jì)評 閱 教 師 簽 名: 年 月 日課 程 設(shè) 計(jì) 總 評 成 績分目錄目錄1第一章 緒論1第二章 實(shí)驗(yàn)原理22.1 設(shè)計(jì)原理22.2 設(shè)計(jì)環(huán)境及設(shè)備22.3 硬件接線圖22.4 設(shè)計(jì)流程圖32.5 8254芯片52.5.1 定時(shí)/計(jì)數(shù)器825452.5.2 8254內(nèi)部結(jié)構(gòu)52.5.3 8254外部引腳52.5.4 計(jì)數(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、計(jì)123.1 頻率產(chǎn)生模塊123.2 控制模塊123.3 控制音符的演奏時(shí)間123.4 音符頻率表133.6 程序設(shè)計(jì)14第四章 結(jié)論18主要參考資料(文獻(xiàn))19第一章 緒論微機(jī)接口原理是一門非常重要的計(jì)算機(jī)技術(shù)基礎(chǔ)課程,全面介紹微機(jī)的基本結(jié)構(gòu)、工作原理、硬件配置、接口期間和接口種類等。本次微機(jī)接口課程設(shè)計(jì)的主要目的是要使學(xué)生更進(jìn)一步掌握微機(jī)原理及應(yīng)用課程的有關(guān)知識(shí),提高應(yīng)用微機(jī)解決問題的能力,加深對微機(jī)應(yīng)用的理解。通過查閱資料,結(jié)合所學(xué)知識(shí)進(jìn)行軟、硬件的設(shè)計(jì),使學(xué)生初步掌握應(yīng)用微機(jī)解決問題的步驟及方法。為以后學(xué)生結(jié)合專業(yè)從事微機(jī)應(yīng)用設(shè)計(jì)奠定基礎(chǔ)。在本次課程設(shè)計(jì)中大家利用課上所學(xué)的各種知識(shí),對
8、自己的課程設(shè)計(jì)題目進(jìn)行設(shè)計(jì)。我們小組所要設(shè)計(jì)的題目是音樂程序設(shè)計(jì)。在設(shè)計(jì)的過程中主要利用計(jì)數(shù)器/定時(shí)器8254芯片和可編程并行接口8255a芯片,完成2個(gè)開關(guān)選擇歌曲,能用揚(yáng)聲器播放歌曲。首先我們利用定時(shí)器產(chǎn)生各種頻率的聲音,如“do”“re”“me”然后將各個(gè)單音連接起來就組成了一首簡單的曲子或者旋律,旋律及拍數(shù)可以按音樂簡譜而定。對8255芯片pa0和pa6口的置0和1來選擇歌曲。其次實(shí)現(xiàn)唱歌功能即實(shí)現(xiàn)歌曲的節(jié)拍通過調(diào)用延時(shí)子程序控制音符發(fā)音的長短,實(shí)現(xiàn)連續(xù)發(fā)聲把si是否為0作為循環(huán)的條件在每一次揚(yáng)聲器發(fā)出一個(gè)相應(yīng)音符之后做無條件轉(zhuǎn)移,從而使揚(yáng)聲器連續(xù)發(fā)聲。第二章 實(shí)驗(yàn)原理2.1 設(shè)計(jì)原理
9、我們在這次課設(shè)選擇了音樂程序設(shè)計(jì),音樂程序設(shè)計(jì)可以實(shí)現(xiàn)至少兩首歌的可選擇播放。對于歌曲的播放我們采用的是計(jì)數(shù)器/定時(shí)器8254芯片,而對于選擇哪首歌播放則是利用可編程并行接口8255a芯片來實(shí)現(xiàn)的?;?254定時(shí)計(jì)數(shù)接口芯片的工作原理,本次課設(shè)實(shí)現(xiàn)了音樂演奏系統(tǒng)程序設(shè)計(jì)。當(dāng)運(yùn)行程序時(shí),揚(yáng)聲器便發(fā)出優(yōu)美的音樂。首先要解決發(fā)聲并發(fā)出相應(yīng)音符聲音的問題,由8254計(jì)數(shù)器0在初始化時(shí)用來產(chǎn)生一定頻率的方波來使揚(yáng)聲器發(fā)聲,再根據(jù)不同音符對應(yīng)的頻率寫入計(jì)數(shù)初值發(fā)出相應(yīng)的音符聲。對8255芯片pa0和pa1口的置0和1來控制揚(yáng)聲器的開關(guān)。其次實(shí)現(xiàn)唱歌功能即實(shí)現(xiàn)歌曲的節(jié)拍通過調(diào)用延時(shí)子程序控制音符發(fā)音的長短
10、,實(shí)現(xiàn)連續(xù)發(fā)聲把si是否為0作為循環(huán)的條件在每一次揚(yáng)聲器發(fā)出一個(gè)相應(yīng)音符之后做無條件轉(zhuǎn)移,從而使揚(yáng)聲器連續(xù)發(fā)聲。2.2 設(shè)計(jì)環(huán)境及設(shè)備pc機(jī)一臺(tái)、windows 98系統(tǒng)、實(shí)驗(yàn)箱,導(dǎo)線若干。8254定時(shí)器:用于產(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 4d6
11、 芯d7 片wrrdcsa0a1clk0out0gate0 圖2.1 硬件接線圖2.4 設(shè)計(jì)流程圖軟件流程圖如圖2.2所示。開始獲取選項(xiàng)選擇第1首歌yn曲1各音符頻率設(shè)置曲1各音符時(shí)間設(shè)置讀取頻率頻率=0調(diào)用paly子程序讀取時(shí)間節(jié)拍計(jì)數(shù)次數(shù)送8254,產(chǎn)生該頻率信號(hào),在送至揚(yáng)聲器延時(shí)曲2各音符頻率設(shè)置曲2各音符時(shí)間設(shè)置讀取頻率頻率=0調(diào)用paly子程序讀取時(shí)間節(jié)拍計(jì)數(shù)次數(shù)送8254,產(chǎn)生該頻率信號(hào),在送至揚(yáng)聲器延時(shí)結(jié)束是否播放nyynny圖 2.2 軟件流程圖2.5 8254芯片2.5.1 定時(shí)/計(jì)數(shù)器8254 主要功能: 每片上有3 個(gè)獨(dú)立的16 位的減計(jì)數(shù)器通道。 對于每個(gè)計(jì)數(shù)器,都可以
12、單獨(dú)作為定時(shí)器或計(jì)數(shù)器使用,并且都可以按照二進(jìn)制或十進(jìn)制來計(jì)數(shù)。 每個(gè)通道都有6 種工作方式,都可以通過程序設(shè)置或改變。 每個(gè)計(jì)數(shù)器的速率可高達(dá)2mhz。最高的計(jì)數(shù)時(shí)鐘頻率為2.6mhz。2.5.2 8254內(nèi)部結(jié)構(gòu)8254的內(nèi)部結(jié)構(gòu)如圖2.3所示,它主要包括以下幾個(gè)主要部分:圖 2.3 8254的內(nèi)部結(jié)構(gòu)2.5.3 8254外部引腳8254芯片是具有24個(gè)引腳的雙列直插式集成電路芯片,其引腳分布如圖所示。8254芯片的24個(gè)引腳分為兩組,一組面向cpu,另一組面向外部設(shè)備,各個(gè)引腳及其所傳送信號(hào)的情況,介紹如下: d7d0:雙向、三態(tài)數(shù)據(jù)線引腳,與系統(tǒng)的數(shù)據(jù)線連接,傳送控制、數(shù)據(jù)及狀態(tài)信息。
13、 :來自于cpu的讀控制信號(hào)輸入引腳,低電平有效。 :來自于cpu的寫控制信號(hào)輸入引腳,低電平有效。 :芯片選擇信號(hào)輸入引腳,低電平有效。圖2.4 8254的引腳 a1、a0:地址信號(hào)輸入引腳,用以選擇8254芯片的通道及控制字寄存器。 vcc及gnd:+5v電源及接地引腳 clki:i=0,1,2,第i個(gè)通道的計(jì)數(shù)脈沖輸入引腳,8254規(guī)定,加在clk引腳的輸入時(shí)鐘信號(hào)的頻率不得高于2.6mhz,即時(shí)鐘周期不能小于380ns。 gatei:i=0,1,2,第i個(gè)通道的門控信號(hào)輸入引腳,門控信號(hào)的作用與通道的工作方式有關(guān)。 outi:i=0,1,2,第i個(gè)通道的定時(shí)/計(jì)數(shù)到信號(hào)輸出引腳,輸出信
14、號(hào)的形式由通道的工作方式確定,此輸出信號(hào)可用于觸發(fā)其它電路工作,或作為向cpu發(fā)出的中斷請求信號(hào)。2.5.4 計(jì)數(shù)器內(nèi)部結(jié)構(gòu)每個(gè)計(jì)數(shù)器由一個(gè)16位可預(yù)置的減1計(jì)數(shù)器組成,計(jì)數(shù)初值可保存在16位的鎖存器中,該鎖存器只寫不能讀。在計(jì)數(shù)器工作時(shí),初值不受影響,以便進(jìn)行重復(fù)計(jì)數(shù)。圖中每個(gè)計(jì)數(shù)器有一個(gè)時(shí)鐘輸入端clk作為計(jì)數(shù)脈沖源, 計(jì)數(shù)方式可以是二進(jìn)制,計(jì)數(shù)范圍110000h,也可以是十進(jìn)制,計(jì)數(shù)范圍165536。門控端gate用于控制計(jì)數(shù)開始和停止。輸出out端當(dāng)計(jì)數(shù)器計(jì)數(shù)值減到零時(shí),該端輸出標(biāo)志信號(hào) 。2.5.5 8254功能8254既可作定時(shí)器又可作計(jì)數(shù)器: 計(jì)數(shù): 計(jì)數(shù)器裝入初值后,當(dāng)gate
15、為高電平時(shí),可用外部事件作為clk 脈沖對計(jì)數(shù)值進(jìn)行減1 計(jì)數(shù),每來一個(gè)脈沖減1,當(dāng)計(jì)數(shù)值減至0時(shí),由out 端輸出一個(gè)標(biāo)志信號(hào)。 定時(shí): 計(jì)數(shù)器裝入初值后,當(dāng)gate為高電平時(shí),由clk 脈沖觸發(fā)開始自動(dòng)計(jì)數(shù),當(dāng)計(jì)數(shù)到零時(shí),發(fā)計(jì)數(shù)結(jié)束定時(shí)信號(hào)。除上述典型應(yīng)用外,8254還可作頻率發(fā)生器、分頻器、實(shí)時(shí)鐘、單脈沖發(fā)生器等。2.5.6 8254控制字圖2.5 8254控制字說明 : 8254每個(gè)通道對輸入clk按二進(jìn)制或二十進(jìn)制從預(yù)置值開始減1計(jì)數(shù),減到0時(shí)從out輸出一個(gè)信號(hào)。 8254編程時(shí)先寫控制字,再寫時(shí)間常數(shù)。2.5.7 8254工作方式 方式0:計(jì)數(shù)結(jié)束產(chǎn)生中斷方式當(dāng)寫入控制字后,ou
16、t變?yōu)榈碗娖?,?dāng)寫入初值后立即開始計(jì)數(shù),當(dāng)計(jì)數(shù)結(jié)束時(shí),變成高電平。 方式1:可編程單次脈沖方式當(dāng)初值裝入后且gate由低變高時(shí),out變?yōu)榈碗娖?,?jì)數(shù)結(jié)束變?yōu)楦唠娖健?方式2:頻率發(fā)生器方式當(dāng)初值裝入時(shí),out變?yōu)楦?;?jì)數(shù)結(jié)束,out變?yōu)榈?。該方式下如果?jì)數(shù)未結(jié)束,但gate為低時(shí),立即停止計(jì)數(shù),強(qiáng)制out變高,當(dāng)gate再變高時(shí),便啟動(dòng)一次新的計(jì)數(shù)周期。 方式3:方波發(fā)生器當(dāng)裝入初值后,在gate上升沿啟動(dòng)計(jì)數(shù),out 輸出高電平; 當(dāng)計(jì)數(shù)完成一半時(shí),out輸出低電平。圖2.6 方波圖方式3與方式2的工作方式類似,也是在初始化完成后能重復(fù)循環(huán)計(jì)數(shù),只是輸出的波形不同。計(jì)數(shù)過程當(dāng)把方式3的控制
17、字寫入控制字寄存器后,輸出端out變成高電平,作為初始電平。再將計(jì)數(shù)初值寫入計(jì)數(shù)初值寄存器cr中,再經(jīng)過一個(gè)時(shí)鐘周期,計(jì)數(shù)初值被移入計(jì)數(shù)執(zhí)行單元ce中,從下一個(gè)時(shí)鐘脈沖開始作減1 計(jì)數(shù),方式3的計(jì)數(shù)過程分為兩種情況:第一種情況:計(jì)數(shù)初值為偶數(shù),當(dāng)作減1計(jì)數(shù)減到n/2時(shí),輸出端out端變成低電平,減到0時(shí),輸出端out變成高電平,并重新從初值開始新的計(jì)數(shù)過程。若gate為高電平,則一直重復(fù)同樣的計(jì)數(shù)過程??梢姡敵龆薿ut輸出連續(xù)的方波,故稱方波發(fā)生器。第二種情況:計(jì)數(shù)初值為奇數(shù),當(dāng)作減1計(jì)數(shù)減到(n+1)/2以后,輸出端out變成低電平,減到0時(shí),輸出端out又變成高電平。并重新從初值開始新的
18、計(jì)數(shù)過程。這時(shí)輸出端的波形為連續(xù)的近似方波。門控信號(hào)的影響工作在方式3時(shí),門控信號(hào)gate的功能與工作方式2一樣,即gate 為高電平時(shí),允許計(jì)數(shù);gate為低電平時(shí)停止計(jì)數(shù)。gate引腳上的信號(hào)從低電平跳到高電平時(shí),將會(huì)重新把計(jì)數(shù)初值寄存器cr中的內(nèi)容移入計(jì)數(shù)執(zhí)行單元ce中,并以新裝入的值重新開始計(jì)數(shù)。如果在計(jì)數(shù)過程中寫入新的初值,而gate信號(hào)一直維持高電平,則新的初值不會(huì)影響當(dāng)前的計(jì)數(shù)過程,只有在計(jì)數(shù)結(jié)束后的下一個(gè)計(jì)數(shù)周期,才按新的初值計(jì)數(shù)。若寫入新的初值后,遇到門控信號(hào)的上升沿,則結(jié)束現(xiàn)行的計(jì)數(shù)過程,從下一個(gè)時(shí)鐘脈沖下降沿開始按新的計(jì)數(shù)初值進(jìn)行計(jì)數(shù)。2.6 8255芯片2.6.1 82
19、55外部引腳功能圖2.7 8255外部引腳圖可編程并行接口8255芯片的外部引腳圖如圖2.7所示。 pa0pa7:端口a輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入鎖存器。 pb0pb7:端口b輸入輸出線,一個(gè)8位的i/o鎖存器, 一個(gè)8位的輸入輸出緩沖器。 pc0pc7:端口c輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入緩沖器。端口c可以通過工作方式設(shè)定而分成2個(gè)4位的端口, 每個(gè)4位的端口包含一個(gè)4位的鎖存器,分別與端口a和端口b配合使用,可作為控制信號(hào)輸出或狀態(tài)信號(hào)輸入端口。 reset:復(fù)位輸入線,當(dāng)該輸入端外于高電平時(shí),所有內(nèi)部寄存器(包括
20、控制寄存器)均被清除,所有i/o口均被置成輸入方式。 cs:片選信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),表示芯片被選中,允許8255與cpu進(jìn)行通訊。 rd:讀信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),允許8255通過數(shù)據(jù)總線向cpu發(fā)送數(shù)據(jù)或狀態(tài)信息,即cpu從8255讀取信息或數(shù)據(jù)。 wr:寫入信號(hào),當(dāng)這個(gè)輸入引腳為低電平時(shí),允許cpu將數(shù)據(jù)或控制字寫8255。 d0d7:8255的數(shù)據(jù)線。8255與cpu數(shù)據(jù)傳送的通道,當(dāng)cpu 執(zhí)行輸入輸出指令時(shí),通過它實(shí)現(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 。這三個(gè)端口均可看作是i/o端口,但它們的結(jié)構(gòu)和功能也稍有不同。a口和b口是一個(gè)獨(dú)立的8位i/o口。c口:可以看作是一個(gè)獨(dú)立的8位i/o口;也可以看作是兩個(gè)獨(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*及rd
22、*、wr*、reset,還有來自系統(tǒng)地址總線的口地址選擇信號(hào)a0和a1。將這些信號(hào)組合后,得到對a組控制部件和b組控制部件的控制命令,并將命令發(fā)給這兩個(gè)部件,以完成對數(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的三個(gè)端口工作于不同的工作方式,如圖2.9所示的8255控制字。圖 2.9 8255的控制字圖當(dāng)控制字bit=7時(shí),控制字的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的控制寄存器寫入一個(gè)按位置位/復(fù)位控制字來置1或清0,而c口中其他位的狀態(tài)不變。其格式注意8255的c口按位置位/復(fù)位控制字的最高位d7(特征位)應(yīng)為低電平。如圖2.10所示c口按位置位/復(fù)位控制字格式。圖 2.10 c口按位置位/復(fù)位控制字第三章 程序設(shè)計(jì)3.1 頻率產(chǎn)生模塊所有音樂都是由
24、各個(gè)不同頻率的音階和其延續(xù)時(shí)間的長短來實(shí)現(xiàn)的。不同的音樂是由各個(gè)音階按某種排列各自播放一定時(shí)間形成的,將各音樂音階和其延續(xù)時(shí)間存在數(shù)據(jù)段中,然后根據(jù)不同按鍵值選擇不同的音階和時(shí)間表,再使用計(jì)數(shù)器產(chǎn)生該音階頻率。而我們學(xué)過的有計(jì)數(shù)器可以產(chǎn)生各種頻率,所以我們主要采用計(jì)數(shù)器8254產(chǎn)生各音符,用8255并行接口來控制,達(dá)到播放音樂的功能。所有音樂都是由各個(gè)不同頻率的音階和其延續(xù)時(shí)間的長短來實(shí)現(xiàn)的。不同的音樂是由各個(gè)音階按某種排列各自播放一定時(shí)間形成的,將各音樂音階和其延續(xù)時(shí)間存在數(shù)據(jù)段中,然后根據(jù)不同按鍵值選擇不同的音階和時(shí)間表,再使用計(jì)數(shù)器產(chǎn)生該音階頻率。cpu通過對定時(shí)器的通道0進(jìn)行編程,使其
25、i/o寄存器接收一個(gè)控制聲音頻率的16位計(jì)數(shù)值。以產(chǎn)生特殊的音響。當(dāng)定時(shí)器接收的計(jì)數(shù)值為533h時(shí),能產(chǎn)生896hz的聲音,因此產(chǎn)生其他頻率的計(jì)數(shù)值就可算出來:533hz896頻率=1234dc頻率在送出頻率計(jì)數(shù)值之前,還要給方式寄存器送一個(gè)方式值,該數(shù)決定對哪一個(gè)通道編程,采用什么模式,送入通道的計(jì)數(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,ahout dx,al3.2 控制模塊
26、對8255芯片pa0和pa6口的置0和1來選擇歌曲。其次實(shí)現(xiàn)唱歌功能即實(shí)現(xiàn)歌曲的節(jié)拍通過調(diào)用延時(shí)子程序控制音符發(fā)音的長短,實(shí)現(xiàn)連續(xù)發(fā)聲把si是否為0作為循環(huán)的條件在每一次揚(yáng)聲器發(fā)出一個(gè)相應(yīng)音符之后做無條件轉(zhuǎn)移,從而使揚(yáng)聲器連續(xù)發(fā)聲。3.3 控制音符的演奏時(shí)間控制音符的演奏時(shí)間,是設(shè)計(jì)音樂程序的關(guān)鍵問題。最直觀的方法是按照按照樂譜為每一個(gè)音符規(guī)定一個(gè)演奏時(shí)間,但是利用這種方法是調(diào)試程序特別困難。特別是在遇到一首不熟悉的歌曲時(shí),初期很難確定每一個(gè)音符的演唱時(shí)間,而調(diào)試程序的時(shí)候費(fèi)時(shí)費(fèi)力,效果很差,下面,我么么向讀者推薦一個(gè)記號(hào)的方法,即沒一個(gè)音符規(guī)定一個(gè)“單位時(shí)間”。 單位時(shí)間*n=音符的演唱時(shí)間
27、其中n為調(diào)試參數(shù),一首歌只有一個(gè)調(diào)試參數(shù)。設(shè)計(jì)程序時(shí)用equ偽指令定義調(diào)試參數(shù),初值先行估計(jì),調(diào)試時(shí)再修改它。如何確定每個(gè)音符的演奏時(shí)間呢?我們知道,音符的節(jié)奏分為一拍、半拍、1/4拍、1/8拍等等。如果在一首歌曲中,音符演奏的時(shí)間最短為1/8拍,我們就規(guī)定一拍音符的單位時(shí)間為8,半拍音符的單位時(shí)間為4,1/4拍音符的單位時(shí)間為2,1/8拍音符的單位時(shí)間為1。以“友誼地久天長”這首歌為例,最短音符為1/8拍,我們就定義一個(gè)單位時(shí)間為8。所示,途中第一行是一段曲譜,第3行是相應(yīng)音符的單位時(shí)間,編程時(shí),首先將一個(gè)音符的頻率轉(zhuǎn)化成計(jì)數(shù)初值寫入2號(hào)計(jì)數(shù)器,然后將音符的單位時(shí)間乘以調(diào)試參數(shù)n,在調(diào)用延時(shí)
28、子程序,就可以控制音符的演奏時(shí)間了,調(diào)試時(shí),只需改變調(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 音符頻率表2 音符音調(diào) 1 2 3 4
29、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 990 1112 1248 1322 1
30、484 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)生各種音符的頻率可參照此表。具體實(shí)現(xiàn)時(shí)由于各計(jì)算器的速度不同,樂曲演奏的速度存在差異,所以可以適當(dāng)?shù)恼{(diào)整延遲子程序的時(shí)間參數(shù)。3.6 程序設(shè)計(jì)ioy3equ 06c0h ; 端口定義ioy1equ 0640hmy8254_count0equ ioy3+00h ;82
31、54計(jì)數(shù)器0端口地址my8254_count1equ ioy3+02h ;8254計(jì)數(shù)器1端口地址my8254_count2equ ioy3+04h ;8254計(jì)數(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控制寄存器端口地址 stack1segment stackdw 256 dup(
32、?)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,495,0time_list db 4
33、, 6, 2, 4, 4, 6, 2, 4, 4 ;時(shí)間表 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, 14freq_list1 dw 393,330,393,330,393,330,262,294,350,330,294,393 dw 393,330,393,330,393,330,262,294,350,330,294,262
34、dw 294,294,350,350,330,262,393,294,350,330,294,393 dw 393,330,393,330,393,330,262,294,350,330,294,262,0time_list1 db 2,2,2,2,2,2,4,2,2,2,2,8 db 2,2,2,2,2,2,4,2,2,2,2,8 db 2,2,2,2,2,2,4,2,2,2,2,8 db 2,2,2,2,2,2,4,2,2,2,2,4dataendscodesegmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,my825
35、4_mode;assume cs:code,ds:data ;初始化8254工作方式mov al,36h ;定時(shí)器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 ;裝入時(shí)間表起始地址jmp playbegin1:mov si,offset freq_list1 ;裝入頻率表起始地址mov di,offset ti
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《機(jī)械設(shè)計(jì)基礎(chǔ)》期末考試試卷七
- 吉林藝術(shù)學(xué)院《數(shù)字空間形態(tài)設(shè)計(jì)》2021-2022學(xué)年第一學(xué)期期末試卷
- 吉林藝術(shù)學(xué)院《電腦美術(shù)3D設(shè)計(jì)》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024年多臺(tái)挖機(jī)租賃合同范本
- 2024年大棚維修建設(shè)合同范本
- 駕校摩托車轉(zhuǎn)讓協(xié)議書范文范本
- 2022年北京市公務(wù)員錄用考試《行測》真題及答案解析
- (人教2024版)英語七年級上冊Unit 6.4 Section B 1a-2b 課件(新教材)
- 吉林師范大學(xué)《公司法學(xué)》2021-2022學(xué)年期末試卷
- 能源企業(yè)環(huán)保自查工作制度
- 因?yàn)榧覍俨辉谏磉叾a(chǎn)寫的委托書
- 基礎(chǔ)構(gòu)成設(shè)計(jì)全套教學(xué)課件
- 三年級上冊數(shù)學(xué)易錯(cuò)題50道及答案【考點(diǎn)梳理】
- JT-T-983-2015路橋用溶劑性瀝青基防水粘結(jié)涂料
- 經(jīng)銷商可以實(shí)施哪些策略來提供個(gè)性化和定制的購物體驗(yàn)
- 2024年全國碩士研究生入學(xué)統(tǒng)一考試英語(一)真題及答案
- 幼兒園保育教育質(zhì)量評估指南解讀
- 火力發(fā)電廠分散控制系統(tǒng)驗(yàn)收導(dǎo)則
- 汽車行走的藝術(shù)智慧樹知到期末考試答案章節(jié)答案2024年吉林大學(xué)
- 貴州黔南民族師范學(xué)院碩士人才引進(jìn)公開引進(jìn)高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 超星爾雅學(xué)習(xí)通《舞臺(tái)人生走進(jìn)戲劇藝術(shù)(中央戲劇學(xué)院)》2024章節(jié)測試答案
評論
0/150
提交評論