【正文】
第一篇:微機(jī)原理課程設(shè)計(jì)電子音樂(lè)播放器武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)目錄一、課程設(shè)計(jì)任務(wù)及要求...................................................1 :....................................................1 :..............................................1二、課程設(shè)計(jì)相關(guān)知識(shí).....................................................1 定時(shí)/計(jì)數(shù)器8253/58254............................................1 8254外部引腳.....................................................2 8254端口地址....................................................3 8254工作方式....................................................4三、程序設(shè)計(jì)思路.........................................................5四、功能流程圖及子程序說(shuō)明...............................................6 ..........................................................6 ..............................................7 ....................................................9五、調(diào)試結(jié)果截屏及結(jié)果分析..............................................10 .....................................................10 .........................................................11六、參考文獻(xiàn)............................................................11七、附錄................................................................12 :.....................................................13 :...........................................17八、總結(jié)................................................................18武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)一、課程設(shè)計(jì)任務(wù)及要求:電子音樂(lè)播放器:設(shè)計(jì)一個(gè)音樂(lè)程序,演奏音樂(lè)按大寫(xiě)字母“A”,唱樂(lè)曲“瑪麗有只小羔羊”;按大寫(xiě)字母“B”,唱樂(lè)曲“太湖船”按大寫(xiě)字母“C”,唱樂(lè)曲“祝福歌”按“Q”鍵,退出二、課程設(shè)計(jì)相關(guān)知識(shí) 定時(shí)/計(jì)數(shù)器8253/58254在微機(jī)及控制系統(tǒng)中,經(jīng)常要用到定時(shí)信號(hào)。如系統(tǒng)的日歷時(shí)鐘,動(dòng)態(tài)存儲(chǔ)器刷新。對(duì)外部執(zhí)行機(jī)構(gòu)控制時(shí)也需要定時(shí)中斷、定時(shí)檢測(cè)、定時(shí)查詢(xún)等。定時(shí)的方法主要是兩種:軟件定時(shí):利用指令的執(zhí)行時(shí)間設(shè)計(jì)循環(huán)程序,使CPU 執(zhí)行延遲子程序的時(shí)間就是定時(shí)時(shí)間。缺點(diǎn):執(zhí)行延遲時(shí),CPU 一直被占用,降低了CPU 的效率。硬件定時(shí):用計(jì)數(shù)器/定時(shí)器作為主要硬件,在軟件簡(jiǎn)單指令的控制下產(chǎn)生精確的時(shí)間延遲。突出優(yōu)點(diǎn)為計(jì)數(shù)時(shí)不占用CPU 時(shí)間,如利用定時(shí)器/計(jì)數(shù)器產(chǎn)生中斷信號(hào),可建立多作業(yè)環(huán)境,提高了CPU 效率。作為定時(shí)器可用8253或者8254,二者功能基本相同,知識(shí)工作的最高頻率不一樣。本實(shí)驗(yàn)就采用了8254,其主要功能為:(1)每片上有3 個(gè)獨(dú)立的16 位的減計(jì)數(shù)器通道。(2)對(duì)于每個(gè)計(jì)數(shù)器,都可以單獨(dú)作為定時(shí)器或計(jì)數(shù)器使用,并且都可以按照二進(jìn)制或十進(jìn)制來(lái)計(jì)數(shù)。武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)(3)每個(gè)通道都有6 種工作方式,都可以通過(guò)程序設(shè)置或改變。(4)每個(gè)計(jì)數(shù)器的速率可高達(dá)10MHz。主要部分有:數(shù)據(jù)總線(xiàn)緩沖器、讀/寫(xiě)控制邏輯、控制字寄存器、計(jì)數(shù)通道0、2: 內(nèi)部結(jié)構(gòu)如下圖:8254內(nèi)部結(jié)構(gòu) 8254外部引腳8254芯片是具有24個(gè)引腳的雙列直插式集成電路芯片,其引腳分布如圖所示。8254芯片的24個(gè)引腳分為兩組,一組面向CPU,另一組面向外部設(shè)備,各個(gè)引腳及其所傳送信號(hào)的情況,介紹如下:8254的引腳(1)D7~D0:雙向、三態(tài)數(shù)據(jù)線(xiàn)引腳,與系統(tǒng)的數(shù)據(jù)線(xiàn)連接,傳送控制、數(shù)據(jù)及狀態(tài)信息。(2)RD:來(lái)自于CPU的讀控制信號(hào)輸入引腳,低電平有效。武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)(3)WR:來(lái)自于CPU的寫(xiě)控制信號(hào)輸入引腳,低電平有效。(4)CS:芯片選擇信號(hào)輸入引腳,低電平有效。(5)AA0:地址信號(hào)輸入引腳,用以選擇8254芯片的通道及控制字寄存器。(6).VCC及GND:+5V電源及接地引腳。(7)CLKi: i=0,1,2,第i個(gè)通道的計(jì)數(shù)脈沖輸入引腳,8254規(guī)定,即時(shí)鐘周期不能小于380ns。(8)GATEi: i=0,1,2,第i個(gè)通道的門(mén)控信號(hào)輸入引腳,門(mén)控信號(hào)的作用與通道的工作方式有關(guān)。(9)OUTi:i=0,1,2,第i個(gè)通道的定時(shí)/計(jì)數(shù)到信號(hào)輸出引腳,輸出信號(hào)的形式由通道的工作方式確定,此輸出信號(hào)可用于觸發(fā)其它電路工作,或作為向CPU發(fā)出的中斷請(qǐng)求信號(hào)。 8254端口地址8254控制字 武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)說(shuō)明 :(1)8254每個(gè)通道對(duì)輸入CLK按二進(jìn)制或二十進(jìn)制從預(yù)置值開(kāi)始減1計(jì)數(shù),減到0時(shí)從OUT輸出一個(gè)信號(hào)。(2)8254編程時(shí)先寫(xiě)控制字,再寫(xiě)時(shí)間常數(shù)。 8254工作方式(1)方式0:計(jì)數(shù)結(jié)束產(chǎn)生中斷方式當(dāng)寫(xiě)入控制字后,OUT變?yōu)榈碗娖?,?dāng)寫(xiě)入初值后立即開(kāi)始計(jì)數(shù),當(dāng)計(jì)數(shù)結(jié)束時(shí),變成高電平。(2)方式1:可編程單次脈沖方式當(dāng)初值裝入后且GATE由低變高時(shí),OUT變?yōu)榈碗娖?,?jì)數(shù)結(jié)束變?yōu)楦唠娖健?3)方式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ù)周期。(4)方式3:方波發(fā)生器當(dāng)裝入初值后,在GATE上升沿啟動(dòng)計(jì)數(shù),OUT 輸出高電平; 當(dāng)計(jì)數(shù)完成一半時(shí),OUT輸出低電平。方式3與方式2的工作方式類(lèi)似,也是在初始化完成后能重復(fù)循環(huán)計(jì)數(shù),只是輸出的波形不同。(5)方式4:軟件出發(fā)選通方式進(jìn)入工作方式4,OUTi輸出高電平。裝入計(jì)數(shù)值n后,如果GATE為高電平,則立即武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)開(kāi)始減“1”計(jì)數(shù),直到計(jì)數(shù)值減到“0”為止,OUTi輸出寬度為一個(gè)CLKi周期的負(fù)脈沖。由軟件裝入的計(jì)數(shù)值只有一次有效,如果要繼續(xù)操作,必須重新置入計(jì)數(shù)初值n。如果在操作的過(guò)程中,GATE變?yōu)闊o(wú)效,則停止減“1”計(jì)數(shù),到GATE再次有效時(shí),重新從初值開(kāi)始減“1”計(jì)數(shù)。(6)方式5:硬件觸發(fā)方式計(jì)數(shù)進(jìn)入工作方式5,OUTi輸出高電平,硬件觸發(fā)信號(hào)由GATE端引入。因此,開(kāi)始時(shí)GATE應(yīng)輸入為0,裝入計(jì)數(shù)初值n后,減“1”計(jì)數(shù)并不工作,一定要等到硬件觸發(fā)信號(hào)由GATE端引入一個(gè)正階躍信號(hào),減“1”計(jì)數(shù)才會(huì)開(kāi)始,待計(jì)數(shù)值計(jì)到“0”,OUTi將輸出負(fù)脈沖,其寬度固定為一個(gè)CLKi周期,表示定時(shí)時(shí)間到或計(jì)數(shù)次數(shù)到。三、程序設(shè)計(jì)思路所有音樂(lè)都是由各個(gè)不同頻率的音階和其延續(xù)時(shí)間的長(zhǎng)短來(lái)實(shí)現(xiàn)的。不同的音樂(lè)是由各個(gè)音階按某種排列各自播放一定時(shí)間形成的,將各音樂(lè)音階和其延續(xù)時(shí)間存在數(shù)據(jù)段中,然后根據(jù)不同按鍵值選擇不同的音階和時(shí)間表,再使用計(jì)數(shù)器產(chǎn)生該音階頻率。CPU通過(guò)對(duì)定時(shí)器的通道2(端口地址為42)進(jìn)行編程,使其I/O寄存器接收一個(gè)控制聲音頻率的16位計(jì)數(shù)值,端口61H的最低控制通道2門(mén)控的開(kāi)斷。以產(chǎn)生特殊的音響。當(dāng)定時(shí)器接收的計(jì)數(shù)值為533H時(shí),能產(chǎn)生896Hz的聲音,因此產(chǎn)生其他頻率的計(jì)數(shù)值就可算出來(lái):533Hz896247。頻率=1234DC247。頻率在送出頻率計(jì)數(shù)值之前,還要給方式寄存器送一個(gè)方式值,該數(shù)決定對(duì)哪一個(gè)通道編程,采用什么模式,送入通道的計(jì)數(shù)值是一字節(jié)還是兩字節(jié),是二進(jìn)制碼還是BCD碼。其位組合的格式如下:當(dāng)通道2用于發(fā)聲時(shí),采用的是模式3,在模式3下,輸出線(xiàn)為“1”和為“0”的時(shí)間各占計(jì)數(shù)時(shí)間的一半,因而產(chǎn)生一系列間隔均勻的脈沖。產(chǎn)生指定頻率聲音的程序段如下: MOV AL,0B6H OUT 43H,AL ;43H為8254的控制字端口 MOV DX,12H MOV AX,34DCH DIV DI ;(DI)=頻率OUT 42H,AL ;42H為8254的通道2端口武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)MOV AL,AH MOV 42H,AL 從定時(shí)器輸出的方波信號(hào),經(jīng)功率放大和濾波后驅(qū)動(dòng)揚(yáng)聲器。送到揚(yáng)聲器的信號(hào)還受到了從并行接口芯片8255(端口地址為61H)來(lái)的雙重控制,端口61H的最低位控制通道2的門(mén)控開(kāi)斷,以產(chǎn)生特殊的音頻信號(hào),端口61H的PA1位和定時(shí)器的輸出信號(hào)同時(shí)作為與門(mén)的輸入,PA0和PA1位可由程序決定為0還是為1。顯然只有PA0和PA1都是1時(shí),才能使揚(yáng)聲器發(fā)出聲音??刂埔糸L(zhǎng)的時(shí)間可以簡(jiǎn)單地通過(guò)反復(fù)執(zhí)行指令來(lái)得到。我們知道執(zhí)行2801次LOOP指令約需要10MS的時(shí)間。因此用10MS的倍數(shù)值來(lái)控制揚(yáng)聲器開(kāi)關(guān)的時(shí)間間隔,就可控制發(fā)聲的音長(zhǎng)了。實(shí)現(xiàn)程序如下:IN AL,61H MOV AH,AL OR AL,3 OUT 61H,AL。開(kāi)揚(yáng)聲器 L: MOV CX,2801 DY:LOOP DY DEC BX JNZ L MOV AL,AH OUT 61H,AL。關(guān)揚(yáng)聲器四、功能流程圖及子程序說(shuō)明MAIN程序:MAIN程序是總程序,輸出說(shuō)明,等待用戶(hù)按鍵并讀取鍵值。根據(jù)不同的按鍵選擇調(diào)用播音子程序播放不同的歌曲。武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)PLAY子程序:PLAY子程序是播音子程序,SI指向音節(jié)表中的頻率,BP指向音節(jié)表中的時(shí)間。從SI的指向的音節(jié)表中取一個(gè)頻率,只要不是1,即有效就再讀取時(shí)間,然后計(jì)算計(jì)數(shù)初值送入計(jì)數(shù)器,產(chǎn)生各種頻率。開(kāi)啟揚(yáng)聲器,根據(jù)所取的時(shí)間調(diào)用若干次延時(shí)子程序。這段時(shí)間揚(yáng)聲器就發(fā)出該頻率的聲音,延時(shí)結(jié)束,就關(guān)閉揚(yáng)聲器,調(diào)用音節(jié)之間的小延時(shí)程序。最后修改SI和BP,指向下一個(gè)頻率,重復(fù)上面的工作DELAY子程序和DELAY_OFF子程序:兩個(gè)都是子程序,采用空操作循環(huán)多次的方法,只是第二個(gè)延時(shí)時(shí)間較短,大概為5ms。武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)開(kāi)始保護(hù)現(xiàn)場(chǎng)曲N各音符頻率設(shè)置曲N各音符時(shí)間設(shè)置讀取頻率F頻率是1 ?Y恢復(fù)現(xiàn)場(chǎng)N讀取時(shí)間T結(jié)束返回計(jì)算機(jī)計(jì)數(shù)次數(shù)送計(jì)數(shù)器,產(chǎn)生該頻率F信號(hào)啟動(dòng)喇叭延時(shí)T關(guān)閉喇叭音符間延時(shí)播音流程圖 武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)五、調(diào)試結(jié)果截屏及結(jié)果分析初始界面:如果按錯(cuò)了鍵,會(huì)出現(xiàn)如下界面:如果選擇正確,將出現(xiàn)如下界面: 武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)根據(jù)輸出結(jié)果顯示,此次試驗(yàn)設(shè)計(jì)結(jié)果與預(yù)想設(shè)計(jì)方案想要達(dá)到的結(jié)果相一致,沒(méi)有出現(xiàn)任何偏差,此次設(shè)計(jì)較為成功。但在實(shí)驗(yàn)過(guò)程中對(duì)程序不斷地進(jìn)行了調(diào)試,將音頻頻率不斷地進(jìn)行了改變,由原來(lái)的低頻通過(guò)同時(shí)擴(kuò)大其倍數(shù),最終使音頻達(dá)到預(yù)期的效果。武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)六、參考文獻(xiàn)【1】:中國(guó)礦業(yè)大學(xué)出版社,2006 【2】:清華大學(xué)出版社,2002年 【3】:人民郵電出版社,2002年 武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)七、附錄:DATA SEGMENT DATA1 DB 0AH, 0DH, 39。HELLEL!WELCOME YOU TO COME HERE!$39。 DB 0AH, 0DH, 39。THIS IS A MUSIC PROGRAM!$39。 DB 0AH, 0DH, 39。PLEASE SELECLT!$39。 DATA4 DB 0AH, 0DH, 39。input ERROR!$39。 DATA5 DB 0AH, 0DH, 39。input AGAIN!$39。MUSLIST DB 0AH, 0DH, 39。PressA Ma li you zhi xiao yang gao39。 DB 0AH, 0DH, 39。PressB Tai hu chuan39。 DB 0AH, 0DH, 39。PressC zhu fu ge39。 DB 0AH, 0DH, 39。$39。 MUSFRQA DW 330,294,262,294,3 du