基于.8086的簡易電子琴設(shè)計附匯編源程序_第1頁
基于.8086的簡易電子琴設(shè)計附匯編源程序_第2頁
基于.8086的簡易電子琴設(shè)計附匯編源程序_第3頁
基于.8086的簡易電子琴設(shè)計附匯編源程序_第4頁
基于.8086的簡易電子琴設(shè)計附匯編源程序_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 .wd. .wd. .wd.?微機原理與接口技術(shù)?綜合設(shè)計實驗報告設(shè)計課題:基于8086的簡易電子琴設(shè)計指導(dǎo)教師:學(xué)生姓名:學(xué) 號:院 系:專 業(yè):通信工程基于8086的簡易電子琴設(shè)計摘要在學(xué)習(xí)?微機原理與接口設(shè)計?的根基上,針對課程設(shè)計要求,綜合運用相關(guān)軟件、硬件知識,設(shè)計一個簡易電子琴,使之具有音區(qū)切換、數(shù)碼管顯示音區(qū)及當前音符、記錄音符與音符持續(xù)時間、播放錄制的音樂等功能。關(guān)鍵詞:8086;電子琴;仿真調(diào)試;匯編目錄 TOC o 1-3 h z u HYPERLINK l _Toc485567075第1章 總體方案設(shè)計 PAGEREF _Toc485567075 h 1HYPERLIN

2、K l _Toc4855670761.1 系統(tǒng)整體架構(gòu)圖 PAGEREF _Toc485567076 h 1HYPERLINK l _Toc4855670771.2 功能介紹 PAGEREF _Toc485567077 h 1HYPERLINK l _Toc485567078第2章 硬件設(shè)計 PAGEREF _Toc485567078 h 2HYPERLINK l _Toc4855670792.1 硬件資源 PAGEREF _Toc485567079 h 2HYPERLINK l _Toc4855670802.2 硬件接線圖 PAGEREF _Toc485567080 h 3HYPERLINK

3、 l _Toc4855670812.2.1 8254接線圖 PAGEREF _Toc485567081 h 3HYPERLINK l _Toc4855670822.2.2 8255及鍵盤、數(shù)碼管接線圖 PAGEREF _Toc485567082 h 3HYPERLINK l _Toc485567083第3章 軟件設(shè)計 PAGEREF _Toc485567083 h 4HYPERLINK l _Toc4855670843.1 程序框圖 PAGEREF _Toc485567084 h 4HYPERLINK l _Toc4855670853.1.1 整體框圖 PAGEREF _Toc48556708

4、5 h 4HYPERLINK l _Toc4855670863.1.2 延時函數(shù) PAGEREF _Toc485567086 h 5HYPERLINK l _Toc4855670873.1.3 鍵盤掃描 PAGEREF _Toc485567087 h 5HYPERLINK l _Toc4855670883.1.4 數(shù)碼管顯示 PAGEREF _Toc485567088 h 6HYPERLINK l _Toc4855670893.1.5 聲音及時間錄制 PAGEREF _Toc485567089 h 6HYPERLINK l _Toc4855670903.1.6 選擇音區(qū)高、中、低 PAGERE

5、F _Toc485567090 h 7HYPERLINK l _Toc4855670913.1.7 播放音樂 PAGEREF _Toc485567091 h 7HYPERLINK l _Toc485567092第4章 實驗結(jié)果及演示 PAGEREF _Toc485567092 h 8HYPERLINK l _Toc485567093第5章 遇到的問題及改進措施 PAGEREF _Toc485567093 h 10HYPERLINK l _Toc4855670945.1 條件轉(zhuǎn)移指令報錯 PAGEREF _Toc485567094 h 10HYPERLINK l _Toc4855670955.2

6、 無法使用8254作為錄音時間計數(shù)器 PAGEREF _Toc485567095 h 10HYPERLINK l _Toc485567096附 錄 PAGEREF _Toc485567096 h 11HYPERLINK l _Toc485567097程序源碼 PAGEREF _Toc485567097 h 11第1章 總體方案設(shè)計1.1系統(tǒng)整體架構(gòu)圖系統(tǒng)整體架構(gòu)圖如圖1-1所示。圖1-11.2功能介紹本實驗設(shè)計實現(xiàn)了音區(qū)切換、數(shù)碼管顯示當前音區(qū)及音符、記錄音符與音符持續(xù)時間、播放錄制的音樂等功能。功能具體說明如下。按鍵0-6為音符鍵,按下后會有對應(yīng)的音符音調(diào)響起,按鍵彈起后音符終止,此時,按下

7、的音符以及時間將被記錄。按鍵12,13,14可以選擇低音,中音,高音區(qū)。按下按鍵15后開場播放錄制的音符不超過16個。另外數(shù)碼管0顯示音符,數(shù)碼管2顯示音區(qū)。第2章 硬件設(shè)計2.1 硬件資源TD-PITE 實驗教學(xué)系統(tǒng),其主要系統(tǒng)構(gòu)成如表2-1 所示。CPUIntel 386EX存儲器系統(tǒng)程序存儲器:Flash ROM 128KB數(shù)據(jù)存儲器:SRAM 128KB信號源單次脈沖:消抖動脈沖 2 組邏輯電平開關(guān)與顯示16 組電平開關(guān),16 組電平顯示 LED 燈正邏輯8259、8237、8254、8255、8251、DAC0832、ADC0809、SRAM 、鍵盤掃描及數(shù)接口實驗單元碼管顯示、電子

8、發(fā)聲、點陣 LED、液晶 LCD可選、步進電機可選、直流電機、溫度控制實驗擴展單元2 組 40 線通用集成電路擴展單元、擴展模塊總線單元系統(tǒng)電源5V/2A,12V/0.2A表 2-1 TD-PITE 系統(tǒng)構(gòu)成系統(tǒng)硬件構(gòu)造如圖 2-1 所示。圖2-12.2 硬件接線圖2.2.18254接線圖8254芯片接線如圖2-2所示。圖2-22.2.28255及鍵盤、數(shù)碼管接線圖8255及鍵盤、數(shù)碼管接線方法如圖2-3所示。圖2-3第3章 軟件設(shè)計3.1 程序框圖3.1.1整體框圖圖3-13.1.2延時函數(shù)圖3-23.1.3鍵盤掃描圖3-33.1.4數(shù)碼管顯示圖3-43.1.5聲音及時間錄制圖3-53.1.

9、6選擇音區(qū)高、中、低圖3-63.1.7播放音樂圖3-7第4章 實驗結(jié)果及演示具體演示效果可掃描以下二維碼進展觀看,二維碼如圖4-1所示。圖4-1以下為視頻截圖。系統(tǒng)初始運行狀體如圖4-2所示。圖4-2選擇中音區(qū),如圖4-3所示。圖4-3按下音符健,如圖4-4所示。圖4-4音樂播放,如圖4-5所示。圖4-5第5章遇到的問題及改進措施5.1 條件轉(zhuǎn)移指令報錯在編寫程序時曾屢次遇到使用條件轉(zhuǎn)移指令時編譯出錯的情況。查閱書本后發(fā)現(xiàn)條件轉(zhuǎn)移指令只能在代碼段的-128+127字節(jié)內(nèi)進展跳轉(zhuǎn)。解決方法:使用條件轉(zhuǎn)移指令轉(zhuǎn)移到一個較近程序段,并在這程序段使用無條件轉(zhuǎn)移指令JMP進展轉(zhuǎn)移。5.2無法使用8254

10、作為錄音時間計數(shù)器在進展設(shè)計的過程中,曾屢次按照使用8254作為時間計數(shù)器的方案進展編程,但經(jīng)過屢次嘗試后均以失敗告終。解決方法:使用軟件延時進展計時,每次延時執(zhí)行完畢后進展計數(shù),該計數(shù)值就是音符的相對持續(xù)時間。在播放時只需要調(diào)用同樣時間長度的延時函數(shù)即可。缺點:使用軟件延時與計數(shù),占用了CPU計算資源,導(dǎo)致數(shù)碼管掃描頻率降低,亮度變暗。同時對于錄音時間的記錄不準確,存在一定的誤差。附 錄程序源碼;=; 文件名: Hypo.asm; 功能描述: 按鍵0-6為音符鍵,按下后會有對應(yīng)的音調(diào)響起,; 按鍵彈起后音符終止。; 按鍵12,13,14可以選擇低音,中音,高音區(qū)。; 按下按鍵15后開場播放之

11、前按下的音符不超過16個; 數(shù)碼管0顯示音符,數(shù)碼管2顯示音區(qū);=IOY3EQU 06C0HMY8254_COUNT0EQU 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_A EQU 0600H ;8255A端口地址MY8255_B EQU 0602H ;8255B端口地址MY8255_C EQU 0604H ;8255C端口地址MY8255_CONEQ

12、U 0606H ;8255控制端口地址SSTACKSEGMENT STACK ;定義堆棧段DW 256 DUP(?)SSTACKENDSDATA SEGMENTDTABLEDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H;數(shù)碼管的段選數(shù)據(jù)DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HFREQ_LIST1 DW 248,278,312,330,371,416,467 ;低音頻率表FREQ_LIST2 DW 495,556,624,661,742,833,935 ;中音頻率表FREQ_LIST3 DW 990,1112,1248,1322,1484,166

13、5,1869 ;高音頻率表REC_DATA DW 000,000,000,000,000,000,000,000 ;錄音儲存段 DW 000,000,000,000,000,000,000,000SB DB 00H,00H ;過渡段REC_TIME DB 00H,00H,00H,00H,00H,00H,00H,00H ;時間儲存段 DB 00H,00H,00H,00H,00H,00H,00H,00HSAVE_SI DW ? ;錄音儲存地址儲存SI_FREQ DW ? ;頻率表地址儲存SAVE_SI_TIME DW ? ;時間儲存表地址儲存SAVE_TIME DB 01H ;時間技術(shù)儲存CHOO

14、SE_FLAG DW 01H;頻率表選擇標志位DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA ;初始化數(shù)據(jù)段、代碼段START: MOV AX,DATAMOV DS,AXMOV DX,MY8254_MODE ;初始化8254工作方式MOV AL,36H ;定時器0、方式3OUT DX,ALMOV SI,OFFSET REC_DATA ;裝入錄音表初始地址MOV SAVE_SI,SIMOV CL,0EHCLEAN_REC: ;錄音表清零MOV AX,0000HMOV SI,AXADD SI,2LOOP CLEAN_RECMOV SI,OFFSET REC

15、_TIME ;裝入時間表起始地址MOV SAVE_SI_TIME,SIMOV SI,OFFSET FREQ_LIST1 ;裝入頻率表默認起始地址MOV SI_FREQ,SI MOV SI,3000HMOV AL,00HMOV SI,AL;清顯示緩沖MOV SI+1,ALMOV SI+2,ALMOV SI+3,ALMOV SI+4,ALMOV SI+5,ALMOV DI,3005H MOV DX,MY8255_CON;寫8255控制字 MOV AL,81HOUT DX,ALBEGIN: CALL DIS;調(diào)用顯示子程序CALL DIS_FREQ ;調(diào)用音區(qū)顯示子程序CALL CLEAR;清屏CA

16、LL CCSCAN;鍵盤掃描JNZ INK1JMP BEGININK1: CALL DIS CALL DALLY CALL DALLY CALL CLEARCALL CCSCANJNZ INK2;有鍵按下,轉(zhuǎn)到INK2JMP BEGIN;=蜂鳴器關(guān)閉子程序=SILENT:MOV DX,MY8254_MODE ;初始化8254工作方式MOV AL,36H ;定時器0、方式3OUT DX,ALRET;=遠程跳轉(zhuǎn)過渡=PLAY2_JUMP: JMP PLAY2CHOOSE_JUMP1: JMP CHOOSE1CHOOSE_JUMP2: JMP CHOOSE2CHOOSE_JUMP3: JMP CHO

17、OSE3;=;確定按下鍵的位置;=INK2: MOV CH,0FEHMOV CL,00HCOLUM: MOV AL,CH MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C IN AL,DXL1: TEST AL,01H ;is L1? JNZ L2 ;如果不是的話跳轉(zhuǎn)到L2 MOV AL,00H ;L1JMP KCODEL2: TEST AL,02H ;is L2? JNZ L3 MOV AL,04H ;L2 JMP KCODEL3: TEST AL,04H ;is L3? JNZ L4 MOV AL,08H ;L3JMP KCODEL4: TEST AL,0

18、8H ;is L4? JNZ NEXT MOV AL,0CH ;L4;=;確認按鍵的值;=KCODE: ADD AL,CLCALL PUTBUFPUSH AX;=;鍵值存在AX中 ;= CMP AX,12 ;選擇音區(qū)1 JZ CHOOSE_JUMP1 CMP AX,13 ;選擇音區(qū)2 JZ CHOOSE_JUMP2 CMP AX,14 ;選擇音區(qū)3 JZ CHOOSE_JUMP3 CMP AX,15 ;播放錄制的音樂 JZ PLAY2_JUMP ;jump to play2 POP AXPUSH AXCALL PLAY ; 播放音符POP AXPUSH AX;=;松手檢測;=KON: CALL

19、 DIS CALL DIS_FREQCALL CLEARCALL CNT_TIME ;按鍵沒有彈起,執(zhí)行時間計數(shù)POP AXPUSH AXCALL CCSCANJNZ KON ;判斷是否彈起,如果沒有彈起,繼續(xù)檢測。;按鍵彈起后:CALL SILENT ;蜂鳴器靜音MOV SI,SAVE_SI_TIME MOV AL,SAVE_TIMEMOV SI,AX ;按下的時間進入時間表INC SAVE_SI_TIME;時間表地址+1MOV SAVE_TIME,00H;時間計數(shù)清零INC SAVE_SI ;錄音表地址+1INC SAVE_SIPOP AXNEXT: INC CLMOV AL,CHTEST

20、 AL,08HJZ KERRROL AL,1MOV CH,ALJMP COLUMKERR: JMP BEGINCNT_TIME: ;時間計數(shù)CALL DALLY3INC SAVE_TIMERET;=;鍵盤掃描子程序,有按鍵按下,返回1;=CCSCAN: MOV AL,00H MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C IN AL,DXNOT AL AND AL,0FHRET;=;清屏子程序;=CLEAR: MOV DX,MY8255_B MOV AL,00H OUT DX,ALRET;=;顯示子程序;=DIS: PUSH AXMOV SI,3000H;數(shù)

21、碼管地址MOV DL,0FEH ;數(shù)碼管位選MOV AL,DLAGAIN: PUSH DX MOV DX,MY8255_A OUT DX,AL ;數(shù)碼管位選輸出 MOV AL,SI MOV BX,OFFSET DTABLEAND AX,00FFHADD BX,AX ;得到數(shù)碼管段選數(shù)據(jù)MOV AL,BX MOV DX,MY8255_B OUT DX,AL ;數(shù)碼管段選輸出CALL DALLY POP DX MOV AL,DLMOV DL,ALJMP OUT1OUT1: POP AXRET;= 延時子程序 =DALLY: PUSH CX MOV CX,0006HT1: MOV AX,009FHT

22、2: DEC AXJNZ T2LOOP T1POP CXRET;=;存鍵盤值到相應(yīng)位的緩沖中;=PUTBUF: MOV SI,ALCMP DI,3005HJNZ GOBACKGOBACK: RETCHOOSE1:MOV SI,OFFSET FREQ_LIST1 ;裝入頻率表1起始地址MOV SI_FREQ,SIMOV CHOOSE_FLAG,01HJMP BEGINCHOOSE2:MOV SI,OFFSET FREQ_LIST2 ;裝入頻率表2起始地址MOV SI_FREQ,SIMOV CHOOSE_FLAG,02HJMP BEGINCHOOSE3:MOV SI,OFFSET FREQ_LIS

23、T3 ;裝入頻率表3起始地址MOV SI_FREQ,SIMOV CHOOSE_FLAG,03HJMP BEGIN;=;音區(qū)數(shù)碼管顯示;=DIS_FREQ: PUSH AXMOV SI,3003HMOV DL,0FBHMOV AL,DLAGAIN1: PUSH DX MOV DX,MY8255_A OUT DX,AL MOV AL,SI MOV BX,OFFSET DTABLEAND AX,00FFHADD BX,CHOOSE_FLAGMOV AL,BX MOV DX,MY8255_B OUT DX,ALCALL DALLY POP DX MOV AL,DLMOV DL,ALJMP OUT2OUT2: POP AXRETPLAY: MOV SI,SI_FREQ ;裝入頻率表起始地址ADD SI,AXADD SI,AXMOV DX,0FH ;輸入時鐘為1MHz,1M = 0F4240H MOV AX,4240H DIV WORD PTR

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論