(完整word版)電子發(fā)聲實驗課程設(shè)計_第1頁
(完整word版)電子發(fā)聲實驗課程設(shè)計_第2頁
(完整word版)電子發(fā)聲實驗課程設(shè)計_第3頁
(完整word版)電子發(fā)聲實驗課程設(shè)計_第4頁
(完整word版)電子發(fā)聲實驗課程設(shè)計_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機(jī)原理課程設(shè)t課題:電子發(fā)聲設(shè)計實驗專業(yè):學(xué)號:、課題名稱及設(shè)計組成員課題名稱電子發(fā)聲設(shè)計實驗設(shè)計人姓名學(xué)號分工程序設(shè)計及調(diào)試線路連接及查錯報告日期二、課題內(nèi)容及要求課題名:電子發(fā)聲設(shè)計實驗8254,使其輸出連接到揚(yáng)聲器上能發(fā)1、要求: 根據(jù)實驗提供的音樂頻率表和時間表,編寫程序控制 出相應(yīng)的樂曲。要求至少要完成下列項目的一項(1) 可播放兩首不同的樂曲(2) 根據(jù)不同的按鍵播放不同的音樂(3) 可改變音樂的音調(diào)(4) 可顯示播放樂曲的名稱2、所設(shè)計的電路實現(xiàn)的功能:設(shè)計中完成了實驗要求中提出的要求。設(shè)計中實現(xiàn)了,用按鍵進(jìn)行隨時切換兩首音K_0用于音樂播放設(shè)計中還實現(xiàn)了對 16X 16的LE

2、D樂(友誼地久天長,兩只老虎)和對所播放的當(dāng)前音樂進(jìn)行兩種不同音調(diào)(中音和低音)的 隨時切換的控制操作,其中用總開關(guān)K_7進(jìn)行播放開關(guān)的總控制,開關(guān)的選擇,開關(guān)K_1用于對當(dāng)前播放音樂的音調(diào)進(jìn)行選擇。 管的控制運(yùn)用點陣漢字輸出歌名。三、方案、系統(tǒng)組成框圖和工作原理說明1設(shè)計方案及原理:本設(shè)計中音樂播放控制為利用對現(xiàn)。音樂名的輸出為利用總線對8255和8254芯片的控制操作得以實 16X 16點陣地控制來實現(xiàn)。(1) 本設(shè)計中PC發(fā)聲系統(tǒng)以8254的計數(shù)器0為核心。系統(tǒng)初始化時,計數(shù)器 0工作 在方式3的“方波發(fā)聲器”方式,同過將音樂頻率轉(zhuǎn)換為相應(yīng)的計數(shù)初值,改變 計數(shù)器0的計數(shù)初值就可以使揚(yáng)聲

3、器發(fā)出不同的頻率的音響。(2) 發(fā)生系統(tǒng)控制為受 8255芯片控制,外界通過改變對 8255芯片的PA 口的不同輸 入來實現(xiàn)播放功能上的選擇。(3) 演奏但音符,為利用一個音符對應(yīng)一個頻率,將與一個頻率對應(yīng)的計數(shù)初值寫入 計數(shù)器0,揚(yáng)聲器就發(fā)出相應(yīng)的音調(diào)。計數(shù)器初值的計算公式為:計數(shù)初值=1MHZ十輸出頻率,:單位時間X N= N為調(diào)試參數(shù),一首歌只有一個調(diào)試參數(shù)。其中1MHZ轉(zhuǎn)換為16進(jìn)制為0F4240H。(4) 控制音符的演奏時間,是通過每一個音符規(guī)定一個“單位時間”音符的演奏時間。其中,2、系統(tǒng)組成(電路圖)XDOXD7系 統(tǒng) 總 線XA1XA2IOW# IOR#I0Y300DOGATE

4、0D7CLK0AOA1WROUT0RDCS8254單元4.7KCLK系統(tǒng)總線SPK電子發(fā)聲單元圖1.對8254與系統(tǒng)的連接XD0XD7系XA1統(tǒng)XA2總線IOW#IOR#I0Y1D0D7PA0PA7A0A1PB0WRPB7RDCS8255單元L1點 陣L8LED顯R1.示單R8元圖3.點陣漢字的接線四、程序功能描述及程序流程(1)程序功能描述:如程序流程圖所示。 程序下載鏈接、并運(yùn)行后,開始通過對外界按鍵掃描, 來檢查應(yīng)進(jìn)行采取的操作,根據(jù)外界不同的輸入,完成不同的程序跳轉(zhuǎn),從而 實現(xiàn)相應(yīng)的播放功能。其中K0、K1為外界電子控制單元。分為 0和1,即低電平和高電平。(2)程序流程圖:五、程序源

5、代碼及注釋1在 LED 單元中顯示歌曲名稱ROW1EQU 0600H;端口定義ROW2EQU 0640HCOL1COL2EQU 0680HEQU 06C0HSTACK1SEGMENT STACKSTACK1DW 256 DUP(?)ENDS;定義為數(shù)據(jù)段INCLUDE HZDOTht.ASM;數(shù)據(jù)字段為漢字點陣庫 , 在 HZDOTht.ASM;文件中CODESEGMENTASSUME CS:CODE, DS:DATASTART:MOV AX, DATAMOV DS, AXMOV DX, ROW1MOV AL, 00HOUT DX, ALMOV DX, ROW2OUT DX, ALMOV AL

6、, 0ffHMOV DX, COL1OUT DX, ALMOV DX, COL2OUT DX, ALBG0:BG1:MOV AX, 160MOV SI, OFFSET HZDOThtCALL DISPADD SI, 2DEC AXJZ BG0JMP BG1顯示漢字子程序DISP:MOV CX, 000FHPUSH AXML0:PUSH CXMOV BL, 01HMOV CX, 0008HML1:MOV DX, ROW1MOV AL, 00H OUT DX, AL MOV AL, SI not alMOV DX, COL1 OUT DX, ALINC SIMOV AL, SI not alMOV

7、 DX, COL2 OUT DX, AL INC SIMOV DX, ROW1MOV AL, BL OUT DX, ALROL BL, 1CALL DELAYLOOP ML1MOV DX, ROW1MOV AL, 00H OUT DX, ALMOV CX, 0008HML2:MOV DX, ROW2MOV AL, 00H OUT DX, ALMOV AL, SI not alMOV DX, COL1 OUT DX, AL INC SIMOV AL, SI not alMOV DX, COL2 OUT DX, AL INC SIMOV DX, ROW2; 入口參數(shù) : SI = 存放漢字起始地址

8、;控制 0-7 行;0-7 列;8-15 列;控制 0-7 行;控制 8-15 行;0-7 列;8-15 列;控制 8-15 行MOV AL, BLOUT DX, ALROL BL, 1CALL DELAYLOOP ML2MOV DX, ROW2MOV AL, 00H OUT DX, AL SUB SI, 32POP CXLOOP ML0POP AXRETDELAY:PUSH CX;延時子程序MOV CX, 0100HDL1:PUSH AXPOP AXLOOP DL1POP CXRETCODEENDSLED 顯示單元來顯示漢END START 此程序中 8255 芯片和點陣 LED 單元的連接

9、,用來實現(xiàn)在點陣 字的功能。通過調(diào)用漢字存放單元的地址,在 LED 單元中可以顯示出流動的字體。此程序 實現(xiàn)的字體是“友誼天長地久” 。2.此程序用來實現(xiàn)程序流程圖中所示的功能, 即通過開關(guān)來控制播放曲目的的切 換和音調(diào)的改變。EQU 06C0HIOY3MY8254_COUNT0EQU IOY3+00HMY8254_COUNT1EQU IOY3+02HMY8254_COUNT2EQU IOY3+04H;8254 計數(shù)器;8254 計數(shù)器;8254 計數(shù)器;8254 控制寄存器端口地址0 端口地址1 端口地址2 端口地址IOY0EQU 0600HMY8255_AEQUIOY0+00HMY8255

10、_BEQUIOY0+02HMY8255_CEQUIOY0+04HMY8254_MODEEQU IOY3+06HMY8255_MODEEQUIOY0+06HSTACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENTFREQ_LIST 表DW371,495,495,495,624,556,495,556,624;第一首歌頻率DWDWDW495,495,624,742,833,833,833,742,624624,495,556,495,556,624,495,416,416,371495,833,742,624,624,495,556,495,

11、556,833DWDWTIME_LIST 表DB742,624,624,742,833,990,742,624,624,495556,495,556,624,495,416,416,371,495,04,6,2,4, 4,6,2,4,;第一首歌時間DBDBDBDBDB6,4,12,6,6,2,4,4,2,2,4,6,6,4,4,4, 12,2, 4,2, 4,4, 12,4, 6,1,4,4,4,2,3,6,6,6,4,6,2,2,2,4,4,4,4,12FREQ_LIST1歌頻率表DW 330,371,416,330;第二首TIME_LIST1FREQ_LIST2 音后DW 330,371,

12、416,330DW 416,441,495DW 495,556,495,441,416,330DW 495,556,495,441,416,330DW 330,248,330DW 330,248,330,0DB 4,4,4,4DB 4,4,4,4DB 4,4,8DB 4,4,8DB 2,2,2,2,4,4DB 2,2,2,2,4,4DB 4,4,8DB 4,4,8;第二首歌時間表;第一首歌頻率表變TIME_LIST2 歌時間表變音后;第一首DBDBDBDB6,4,12,2,4,4,4,6,6,4, 6,4, 12,2, 4,2, 4,2,1,4,4,4,3,6,6,4,6,2,2,6,24,4

13、,DBDB6,6,2,2,4,4,4, 12,4, 6,4,2,6,4,2,4,4,122, 4, 4FREQ_LIST3TIME_LIST3;第二首歌頻率表變音后;第二首歌時間表變音后DB 4,4,4,4DB 4,4,4,4DB 4,4,8DB 4,4,8DB 2,2,2,2,4,4DB 2,2,2,2,4,4DB 4,4,8DB 4,4,8DATA ENDSCODESEGMENTASSUMECS:CODE, DS:DA TASTART:MOV AX, DATAMOV DS, AX;初始化 8254 工作方式MOV DX, MY8255_MODEMOV AX,90H;A 口作為輸入MOV D

14、X,AXINPUT:MOV DX, MY8254_MODEMOV AL, 36H;定時器 0、OUT DX, ALMOV DX, MY8255_AIN AL,DX;初始化 8254 工作方式 方式 3 ;檢查輸入,是否要設(shè)中斷問題CMP AL,80H JZ NEAR PTRBEGINCMP AL,81H JZ NEAR PTRBEGIN1CMP AL,82H JZ NEAR PTRBEGIN2CMP AL,83HJZ NEAR PTR BEGIN3JNZ INPUTMOV SI,OFFSET FREQ_LIST MOV DI,OFFSET TIME_LIST PLAY:BEGIN:;裝入頻率表

15、起始地址;裝入時間表起始地址MOV DX,MY8255_AIN AL,DXCMP AL,80HJNZ NEAR PTRINPUTMOV DX,0FHMOV AX,4240HDIV WORD PTR SIMOV DX,MY8254_COUNT0OUT DX,ALMOV AL,AHOUT DX,AL;輸入時鐘為 1MHz ,1M = 0F4240H;取出頻率值計算計數(shù)初值, 0F4240H / 輸出頻率;裝入計數(shù)初值MOV DL,DICALL DALL Y;取出演奏相對時間,調(diào)用延時子程序ADD SI,2INC DICMP WORD PTR SI,0 JE NEAR PTRINPUT;判斷是否到曲

16、末?JMP PLAYBEGIN1: MOV SI,OFFSET FREQ_LIST1MOV DI,OFFSET TIME_LIST1PLAY1:;裝入頻率表起始地址;裝入時間表起始地址MOV DX,MY8255_AIN AL,DXCMP AL,81HJNZ NEAR PTR INPUTMOV DX,0FHMOV AX,4240HDIV WORD PTR SIMOV DX,MY8254_COUNT0 OUT DX,ALMOV AL,AHOUT DX,ALMOV DL,DICALL DALL Y;輸入時鐘為 1MHz ,1M = 0F4240H;取出頻率值計算計數(shù)初值, 0F4240H / 輸出頻

17、率;裝入計數(shù)初值;取出演奏相對時間,調(diào)用延時子程序ADD SI,2INC DICMP WORD PTR SI,0 JE NEAR PTRINPUT;判斷是否到曲末?JMP NEAR PTRPLAY1BEGIN2: MOV SI,OFFSET FREQ_LIST2MOV DI,OFFSET TIME_LIST2PLAY2:;裝入頻率表起始地址;裝入時間表起始地址MOV DX,MY8255_AIN AL,DXCMP AL,82HJNZ NEAR PTR INPUTMOV DX,0FHMOV AX,4240HDIV WORD PTR SIMOV DX,MY8254_COUNT0OUT DX,ALMO

18、V AL,AHOUT DX,ALMOV DL,DI;輸入時鐘為 1MHz ,1M = 0F4240H;取出頻率值計算計數(shù)初值, 0F4240H / 輸出頻率;裝入計數(shù)初值;取出演奏相對時間,調(diào)用延時子程序CALL DALL YADD SI,2INC DI;判斷是否到曲末?CMP WORD PTR SI,0 JE NEAR PTRINPUTJMP PLAY2;裝入頻率表起始地址;裝入時間表起始地址BEGIN3: MOV SI,OFFSET FREQ_LIST3MOV DI,OFFSET TIME_LIST3PLAY3:MOV DX,MY8255_AIN AL,DXCMP AL,83HJNZ NE

19、AR PTR INPUTMOV DX,0FHMOV AX,4240HDIV WORD PTR SIMOV DX,MY8254_COUNT0OUT DX,ALMOV AL,AHOUT DX,ALMOV DL,DICALL DALL Y;輸入時鐘為 1MHz ,1M = 0F4240H;取出頻率值計算計數(shù)初值, 0F4240H / 輸出頻率;裝入計數(shù)初值;取出演奏相對時間,調(diào)用延時子程序ADD SI,2;判斷是否到曲末?INC DICMP WORD PTR SI,0JE NEAR PTR INPUTJMP PLAY3DALL YPROCD0:MOV CX,0010HD1:MOV AX,0F00HD

20、2:DEC AXJNZ D2LOOP D1DEC DLJNZ D0RETDALL YENDPDONE:MOV AX,4C00HINT 21H;延時子程序CODE ENDSEND START本程 序中,分別設(shè)定了 TIME_LIST1 TIME_LIST2 TIME_LIST3 和 FREQ_LIST1 FREQ_LIST2 FREQ_LIST3 ,其中 TIME_LIST 是歌曲時間表, FREQ_LIST 是歌曲頻率表。 當(dāng)程序下載鏈接無誤后,執(zhí)行程序;如程序流程圖所示; K0,K1 為控制開關(guān),當(dāng)外設(shè)輸入為 00 時,電子發(fā)聲單元播放“友誼天長地久”的低音調(diào);當(dāng)為 01 時,播放“兩只老虎

21、”的低 音調(diào);當(dāng) 10 時播放“友誼天長地久”的原調(diào),當(dāng)11時播放“兩只老虎”的原調(diào)。在播放每首歌曲時,程序通過一直掃描鍵盤的輸入來判斷鍵盤輸入值是否發(fā)聲變化,如果發(fā)聲變化, 則執(zhí)行相應(yīng)的程序,如果沒有發(fā)生變化則一直播放當(dāng)前播放的歌曲。六、電路的連接及調(diào)試1.電路連接 電路的連接與調(diào)試過程中,由于在試驗箱中操作, 8254 8255 芯片已內(nèi)置,所以對照著電路 圖,電路的連接比較容易完成。在完成 8255 單元的連接時候,由于此處沒有給出電路圖, 同過與小組成員的討論,給出了電路連接方案,如圖 2 所示。在電路的連接過程中,要注意系統(tǒng)的地址總線與芯片的地址總線相連,單元的A0 、A1分別于系統(tǒng)

22、的 XA0 XA1 相連, IOW 與 WR、 IOR 與 RD 、 IOY 與 CS 相連。實現(xiàn)第二個程序的時候, 由于要用到開關(guān)單元按鍵,因此 8255 的程序總線 PA0-PA7 要 分別與開關(guān)按鍵單元中的 K_0-K_7 連接。2.程序調(diào)試 在試驗的調(diào)試過程中,會遇到不能加載的情況,檢查后發(fā)現(xiàn)是因為試驗箱與電腦的連 接出現(xiàn)了問題:由于接口的松動,使得在端口測試的過程中總會出現(xiàn)接口通信失敗的情況, 此時不光要檢查連接的接口是否松動, 還要在端口中選擇合適的端口, 來完成試驗箱與電腦 的連接。還有,調(diào)試時會遇到?jīng)]有按照程序設(shè)計的功能來完成的情況,在這種情況下,應(yīng)該首 先檢查程序是否有錯,如

23、果沒有,再檢查試驗箱中電路連接是否有錯誤。一般來說,錯誤都 出現(xiàn)在連線上面: 或者程序總線插在了地址總線處, 或者連線的插口接反了。 這種情況都比 較容易來處理。七、調(diào)試中出現(xiàn)的問題、原因及排除方法調(diào)試過程中出現(xiàn)的問題。1、 在程序編譯、加載、鏈接無誤的情況下,下載程序后,單擊運(yùn)行,則程序會出現(xiàn)從 START 直接跳到 END 的情況。遇到這種情況,最大的可能是程序中有問題,但不是明顯的問題,并不是錯誤,但 是運(yùn)行會直接結(jié)束。首先就要從程序檢查開始,一般這種錯誤的出現(xiàn)有可能就是長轉(zhuǎn)指 令的運(yùn)用錯誤,或者在設(shè)定時間、判斷程序是否執(zhí)行方面出了問題。通過仔細(xì)檢查程序 和修改后,這類問題就能得到解決。

24、2、調(diào)試過程中出現(xiàn) jump out of the range 的錯誤 這種情況,是由于程序太長,超出了 JMP 跳轉(zhuǎn)的能力范圍。解決這種問題的方法是 增加中間過渡指令,從而縮短每條指令的長度。3、LED 顯示單元中顯示的字體與實際字體相反。 這種情況是由于把字的點陣的高低位與試驗箱的顯示方式弄反了,通過調(diào)整字的點 陣的高低位的位置,就可以使此問題得到解決。4、在調(diào)試過程中還會出現(xiàn)一些原因不明的錯誤,如亂碼,符號等錯誤。 這類錯誤的出現(xiàn)是由于在復(fù)制程序代碼時, 同時將程序的注釋一起復(fù)制到了程序中, 而有些漢字的編碼不能被識別,從而出現(xiàn)了這些錯誤。解決的辦法是將出現(xiàn)錯誤行 的漢字注釋刪掉。八、收

25、獲和體會這次的課程設(shè)計,其實也就是考驗我們是否能將所學(xué)知識與動手結(jié)合起來的一次很好 的機(jī)會。微機(jī)原理這門課程我們在上學(xué)期學(xué)過,學(xué)習(xí)這門課程的目的就是要將所學(xué)的匯編知識 運(yùn)用到實際當(dāng)中來; 在這次的課程設(shè)計中, 有幾個題目我們可以選擇, 為了更好的重溫學(xué)習(xí) 過的知識,我選擇了電子發(fā)聲試驗這個課題。整個設(shè)計通過了軟件和硬件上的調(diào)試。我想這對于自己以后的學(xué)習(xí)和工作都會有很大 的幫助。在這次設(shè)計中遇到了很多實際性的問題,在實際設(shè)計中才發(fā)現(xiàn),書本上 理論性的 東西與在實際運(yùn)用中的還是有一定的出入的, 所以有些問題不但要深入地理解, 而且要不斷 地更正以前的錯誤思維。 一切問題必須要靠自己一點一滴的解決,

26、 而在解決的過程當(dāng)中你會 發(fā)現(xiàn)自己在飛速的提升。 對于電子發(fā)聲試驗, 其程序是比較簡單的, 主要是解決程序設(shè)計中 的問題, 而程序設(shè)計是一個很靈活的東西, 它反映了你解決問題的邏輯思維和創(chuàng)新能力, 它 才是一個設(shè)計的靈魂所在。因此在整個設(shè)計過程中 大部分時間是用在程序上面的。很多子 程序是可以借鑒書本上的, 但怎樣銜接各個子程序才是關(guān)鍵的問題所在, 這需要對系統(tǒng)的結(jié) 構(gòu)很熟悉。因此可以說系統(tǒng)的設(shè)計 是軟件和硬件的結(jié)合,二者是密不可分的。通過這次課 程設(shè)計我也發(fā)現(xiàn)了自身存在的不足之處, 雖然感覺理論上已經(jīng)掌握, 但在運(yùn)用到實踐的過程 中仍有意想不到的 困惑,經(jīng)過一番努力才得以解決。生活就是這樣,汗水預(yù)示著結(jié)果也見

溫馨提示

  • 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

提交評論