《微機原理與接口技術》實驗報告 簡易電子琴_第1頁
《微機原理與接口技術》實驗報告 簡易電子琴_第2頁
《微機原理與接口技術》實驗報告 簡易電子琴_第3頁
《微機原理與接口技術》實驗報告 簡易電子琴_第4頁
《微機原理與接口技術》實驗報告 簡易電子琴_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、海南大學信息學院信息安全系專業(yè)課程海南大學信息學院信息安全系專業(yè)課程 微機原理與接口技術微機原理與接口技術 簡易電子琴實驗報告簡易電子琴實驗報告 目錄 一、設計要求.3 二、設計思路.3 三、實驗材料、工具、或軟件.4 四、實驗內容.4 1、實驗電路連接.4 2、程序流程圖.5 3、實驗電路圖.6 4、8253 與 8255A 相關結構及原理說明.7 8253.7 8255A.9 5、方案確定.12 6、設計原程序及注釋 .13 7、簡易電子琴的安裝與調試 .16 五、實驗總結.17 六、參考文獻.17 一、設計要求一、設計要求 利用用實驗箱上的揚聲器與 8 個開關設計一個電子琴。用開關模擬琴

2、鍵,當開 關撥為“1”時,相當于有鍵按下,喇叭發(fā)出聲音。撥動不同的開關則對應不同 的音符,每次只能撥一個開關(相當于按下一個鍵) 。連續(xù)撥動開關,喇叭發(fā)出 音樂。 二、設計思路二、設計思路 簡易電子琴設計選用 8253 計數器,8255A 并行接口兩個芯片: 1. (輸入部分)以 8255A 接八個開關 K1K8,做電子琴按鍵輸入,由輸入控 制輸出,即撥碼開關控制揚聲器; 2. (發(fā)音部分)以 8253 控制揚聲器(揚聲器為輸出) ,撥動不同的開關,發(fā)出 相應的音階。 將 8255A 芯片的 B 端口作為輸出端口,PB0-PB7 與輸出端的 K1-K8(分別對應音 符 1、2、3、4、5、6、

3、7、i)相連接,而 8253 的時鐘輸入引腳 CLK0 與相應的 時鐘發(fā)生器相連接,8253 的 GATA0 接開關 K9(靜音) ,8253 的 0 通道的 OUT0 信號與 LB 區(qū)的 SIN 口相連接,從而驅動并控制喇叭的發(fā)音:當 INPUT 上的開關 對應為“1”時喇叭連通,能夠發(fā)出聲音;當 INPUT 上的開關對應為“0”時喇 叭被中斷,不能發(fā)出聲音。這樣,我們在硬件上實現(xiàn)了通過 8255A 芯片輸入設 備的輸入信號并通過它傳送給 8253,讓 8253 進行相應的處理后輸出給喇叭的 功能。 我們要通過對 8255A 的初始化和編程控制它的相關工作,使其能夠實現(xiàn)上 面提到的相應功能。

4、然后,我們對 8253 進行編程,使其初始化,并根據從 8255A 芯片傳遞來的信息的種類為 8253 的運行編寫不同的程序段,使其在運行 中根據 8255A 芯片傳遞來的信息的不同執(zhí)行不同的程序(輸出不同的音頻) 。 音符轉換表如下所示: 鍵值 01h02h04h08h10h20h40h80h 音符 1234567i 計數初值 40023567317828342527225020051786 三、實驗材料、工具、或軟件三、實驗材料、工具、或軟件 接口實驗箱平臺、Windows XP 計算機 四、實驗內容四、實驗內容 1 1、實驗電路連接、實驗電路連接 (1)8253 的 GATE0 接開關

5、K9。 (2)8253 的 CLK0 插孔接分頻器 74LS393(左上方)的 T1 插孔,T1 輸出的頻 率為 1MHZ。 (3)8253 的 OUT0 接喇叭,即 LB 區(qū)的 SIN 口。 (4)8255A 的 PB0PB7(端口 B 輸入輸出線,一個 8 位的 I/O 鎖存器, 一個 8 位的輸入輸出緩沖器)接開關 K1K8(8255A 的片選信號,實驗箱系統(tǒng)已連 接好;8255A 的 PA 口不給出引腳,A 口系統(tǒng)留用。 ) (5)實驗箱接到喇叭的 J5 引腳 實際電路連接圖實際電路連接圖 2 2、程序流程圖、程序流程圖 開始 8255A 初始化: 控制字控制口 音符對應的計數初值存

6、放初址BX 設置 8255A 端口 B 為輸 入 測試按鍵位置 跳轉至對應分支 8253 初始化: 控制字控制口 計數值計數器 0 接通揚聲器,發(fā)出相應聲音 K1-K8 分別對應 1、2、3、4、5、6、7、i K9 對應靜音 延時 復位 8255A 端口 C bit0 返回 3、實驗電路圖 PA4 PA5 PA6 PA7 WR RESET D0 D1 D2 D3 D4 D5 D6 D7 VCC PB7 PB6 PB5 PB4 PB3 Vcc WR RD CS A1 A2 CLK2 OUT2 GATE2 CLK1 GATE1 OUT1 D7 D6 D5 D4 D3 D2 D1 D0 CLK0

7、Out0 GATE0 GND 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 PA3 PA2 PA1 PA0 RD CS GND A0 A1 PC7 PC6 PC5 PC4 PC0 PC1 PC2 P3 PB0 PB1 PB2 1 2 3 4 5 6 7 8 9 10 11 12 24 23 22 21 20 19 18 17 16 15 14 13 8253 . . 8255A 揚聲器 T1(1MHZ) 分頻器 74LS

8、393 K10 K9 K8 K7 K6 K5 K4 K3 K2 K1 K0 INPUT SIN 4 4、82538253 與與 8255A8255A 相關結構及原理說明相關結構及原理說明 82538253 8253 內部結構內部結構 8253 定時/計數器具有定時、計數雙功能。它具有三個相同且相互獨立的 16 位減法計 數器,分別稱為計數器 0、計數器 1、計數器 2。每個計數器計數頻率為 02MHZ;8253 的 內部數據總線緩沖器為雙向三態(tài),可直接接在系統(tǒng)數據總路線上,通過 CPU 寫入計數初值, 也可由 CPU 讀出計數當前值; 其工作方式通過控制字確定。 計數器內部結構計數器內部結構

9、每個計數器由一個 16 位可預置的減 1 計數器組成,計數初值可保存在 16 位的鎖存器中, 該鎖存器只寫不能讀。在計數器工作時,初值不受影響,以便進行重復計數。每一個計數 器有一個時鐘輸入端 CLK 作為計數脈沖源,計數方式可以是二進制,計數范圍 110000H, 也可以是十進制,計數范圍 165536。門控端 GATE 用于控制計數開始和停止。輸出 OUT 端當計數器計數值減到零時,該端輸出標志信號。 8253 端口地址選擇端口地址選擇 表 1.1 8253 端口地址選擇表 CSRDWRA1A2寄存器選擇與操作 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 寫入計數器 0 寫

10、入計數器 1 寫入計數器 2 圖 1.0 8253 內部結構 01011寫入控制寄存器 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 讀計數器 0 讀計數器 1 讀計數器 2 0 1 0 0 1 1 1 1 1 無操作(三態(tài)) 禁止(三態(tài)) 無操作(三態(tài)) 8253 功能功能 8253 既可作定時器又可作計數器: (1) 計數:計數器裝入初值后,當 GATE 為高電平時,可用外部事件作為 CLK 脈沖對計 數值進行減 1 計數,每來一個脈沖減 1,當計數值減至 0 時,由 OUT 端輸出一個標志信號。 (2) 定時:計數器裝入初值后,當 GATE 為高電平時,由 CLK 脈沖觸發(fā)

11、開始自動計數, 當計數到零時,發(fā)計數結束定時信號。 除上述典型應用外,8253 還可作頻率發(fā)生器、分頻器、實時鐘、單脈沖發(fā)生器等。 8253 控制字控制字 圖 1.1 8253 方式控制字 8253 工作方式工作方式 (1) 方式 0:計數結束產生中斷方式 當寫入控制字后,OUT 變?yōu)榈碗娖?,當寫入初值后立即開始計數,當計數結束時,變 成高電平。 (2) 方式 1:可編程單次脈沖方式 當初值裝入后且 GATE 由低變高時,OUT 變?yōu)榈碗娖?,計數結束變?yōu)楦唠娖健?(3) 方式 2:頻率發(fā)生器方式 當初值裝入時,OUT 變?yōu)楦唠娖?;計數結束,OUT 變?yōu)榈碗娖?。該方式下如果計數?結束,但 GA

12、TE 為低電平時,立即停止計數,強迫 OUT 變?yōu)楦唠娖?,?GATE 再變?yōu)楦?時,便啟動一次新的計數周期。 (4) 方式 3:方波發(fā)生器 當裝入初值后,在 GATE 上升沿啟動計數,OUT 輸出高電平;當計數完成一半時,OUT 輸出低電平。 (5) 方式 4:軟件觸發(fā)選通 當寫入控制字后,OUT 輸出為高電平;裝入初值且 GATE 為高電平時開始計數,當計數 結束,OUT 端輸出一個寬度等于一個時鐘周期的負脈沖。 (6) 方式 5:硬件觸發(fā)選通 在 GATE 上升沿啟動計數器,OUT 一直保持高電平;計數結束,OUT 端輸出一個寬度等于 一個時鐘周期的負脈沖。 8255A8255A 825

13、5A 內部結構內部結構 8255A 內部有 3 個 8 位 I/O 端口:A 口、B 口、C 口;也可以分為各有 12 位的兩組:A 和 B 組,A 組包含 A 口 8 位和 C 口的高 4 位,B 組包含 B 口 8 位和 C 口的低 4 位;8255A 中的讀寫控制邏輯用于控制芯片內寄存器的數據和控制字經數據總線緩沖器送入各組接口 寄存器中。由于 8255A 數據總線緩沖器是雙向三態(tài) 8 位驅動器,因此可以直接和 CPU 系統(tǒng) 總線相連。 圖 2.0 8255A 內部結構 8255A 端口地址端口地址 表 2.1 8255A 端口地址選擇表 A1A0RDWRCS操作類型操作方向 0 0 1

14、 0 1 0 0 0 0 1 1 1 0 0 0 PA數據總線 PB數據總線 PC數據總線 輸入(讀) 0 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 數據總線PA 數據總線PB 數據總線PC 數據總線控制 字 輸出(寫) 1 1 0 1 1 1 1 0 0 數據總線三態(tài) 非法狀態(tài) 數據總線三態(tài) 斷開 8255A 工作方式工作方式 8255A 芯片有三種工作方式:方式 0、方式 1、方式 2。它通過對控制寄存器寫入不同 的控制字來決定其三種不同的工作方式。 (1)方式 0:基本輸入/輸出 該方式下的 A 口 8 位和 B 口 8 位可以由輸入的控制字決定為輸入或

15、輸出,C 口分成高 4 位(PC4PC7)和低 4 位(PC0PC3)兩組,也有控制字決定其輸入或輸出。需注意的 是:該方式下,只能將 C 口其中一組的四位全部置為輸入或輸出。 圖 2.1 工作方式 0 (2)方式 1:選通輸入/輸出 該方式又叫單向輸入輸出方式,它分為 A、B 兩組,A 組由數據口 A 和控制口 C 的高 4 位組成,B 組由數據口 B 和控制口 C 的低 4 位組成。數據口的輸入/輸出都是鎖存的,與 方式不同,由控制字來決定它作為輸入還是輸出。C 口的相應位用于寄存數據傳送中所需 的狀態(tài)信號和控制信息。 圖 2.2 工作方式 1 輸入 圖 2.3 工作方式 1 輸出 (3)

16、方式 2:雙向輸入/輸出 本方式只有 A 組(數據口 A 和控制口 C 的低 3 位 PC0PC2)可以使用,此時 A 口為 輸入輸出雙向口,C 口中的高 5 位(PC3PC7)作為 A 口的控制位。 8255A 控制字控制字 圖 2.5 8255A 方式選擇控制字 圖 2.4 工作方式 2 圖 2.6 8255A 的 PC 口按置位/復位控制字 5 5、方案確定、方案確定 根據揚聲器發(fā)聲原理可知:不同頻率的方波通過揚聲器可發(fā)出不同的聲音。 由此構想運用8253工作在方式3的狀態(tài)下控制其0#計數器對應寄存器中的數值,然后將輸 出端口OUT0產生的方波通過揚聲器轉換成為聲音。 為了實現(xiàn)彈奏按鍵(

17、即撥碼開關)來控制揚聲器,可以通過用撥碼開關改變8253(工作 在方式3的狀態(tài)下)0#選擇計數器對應寄存器中的數值,8253輸出端口OUT0與揚聲器相連 接。 最后要實現(xiàn)的就是將撥碼開關對應的數字信號存入寄存器中。 采用8255A并行接口特點,使端口A工作在方式0并作為輸出口,端口B工作在方式0,并 作為輸入口。將撥碼開關與8255A的輸入端口B相連接。 表1 8255A端口地址表 寄存口 編址 A口0FF28H B口 0FF29H C口 0FF2AH 控制寄存器 0FF2BH 表2 8253端口地址表 寄存口 編址 0#計數器40H 1#計數器 41H 2#計數器 42H 控制寄存器 43H

18、 6、設計原程序及注釋、設計原程序及注釋 code segment assume cs:code ,ds:data ;把代碼段 CS、數據段 DS 分別與相應的寄存器相連 接 ;ASSUME 語句只是使匯編程序知道在程序執(zhí)行時各個 段寄存器的值,而這些寄存器的實際值(除了代碼 段寄存器 CS 以外) ,還必須在程序執(zhí)行時,用 MOV 指令來賦給,不起真正的關聯(lián)作用。 data segment ;定義數據段 data1 dw 4002,3567,3178,2834,2527,2250,2005,1786 ;8253 計數值,不同頻率 脈沖需要不同計數值 (此處使用 T1) data ends ;

19、定義數據段結束 org 1500h ;偽指令 org:指定了段內在它以后的程序或數據塊存放的起始地 址(本實驗采用 1500h,與實驗室實驗箱相關) start : mov ax,data ;起真正關聯(lián)作用,對數據段寄存器 DS 初始化,取出 DATA 數據段的段地址,借助 AX 寄存器中轉 ;START 為語句標號,可作為跳轉目標 mov ds,ax ;實現(xiàn)段寄存器 DS 的初始化 mov dx, 0ff2bh ;8255A 控制口地址:0FF2BH mov al,82h ;B out dx,al ;寫 8255A 芯片的控制字,實現(xiàn)工作在方式 0,A 端口和 C 端 口輸出,B 端口輸入

20、b8255: mov bx,offset data1 ;初始化地址指針,以后就可以用這些指針來間接 尋址緩沖區(qū) mov dx, 0ff29h;8255A 的 B 口地址:0FF29H,將 8255 的 B 口地址賦給 DX in al,dx ;從 B 口得到輸入信息送到 AL 中 test al,80h ;B 檢驗按下鍵是否在 K8 ;test(按位與)用于檢測哪個開關撥上去 jnz lop8 ; 不是 K8 則跳到 LOP8,以下均類似(jnz 不等于 0 轉移, ZF=0) test al,40h ;B 檢驗按下鍵是否在 K7 ;注意:高電平有效 jnz lop7 test al,20h

21、;B 檢驗按下鍵是否在 K6 jnz lop6 test al,10h ;B 檢驗按下鍵是否在 K5 jnz lop5 test al,08h ;B 檢驗按下鍵是否在 K4 jnz lop4 test al,04h ;B 檢驗按下鍵是否在 K3 jnz lop3 test al,02h ;B 檢驗按下鍵是否在 K2 jnz lop2 test al,01h ;B 檢驗按下鍵是否在 K1 jnz lop1 jmp b8255 ;跳轉至 b8255 lop8: add bx,2 ;2:每一個字占 2 個字節(jié),以下均一致 ;bx+2 的值是 data 段中離開存儲單元的兩個字節(jié)的存儲單元 的地址,而

22、不是 bx 單元的內容加 2 lop7: add bx,2 lop6: add bx,2 lop5: add bx,2 lop4: add bx,2 lop3: add bx,2 lop2: add bx,2 lop1: add bx,2 ;每次進行 test 后不為 0 則跳轉到指定 lop,從指定 lop 開始地址依次加 2, 最終執(zhí)行完所有的 lop 后使得地址指向撥上去的開關對應的地址(對應當前喇 叭發(fā)出的音符)的下一個地址(對應當前音符的下一個音符) mov dx, 0043h ;8253 的控制字端口地址為:43H ;在送出頻率計數值之前,還要給方式寄存器送一個方 式值,該數決定對

23、哪一個通道編程,采用什么模式, 送入通道的計數值是一字節(jié)還是兩字節(jié),是二進制碼 還是 BCD 碼。 mov al,37h ;B out dx,al ;寫 8253 芯片的控制字,選擇計數器 0,先寫最低有效位, 然后寫最高有效位,實現(xiàn)工作在方式 3,8253 的每個計數 器的計數制為二進制 ;out 指令把輸出結果送到端口 DX 中去 mov dx,0040h ;8253 的計數器 0 的地址為:40H mov ax,word ptr ds:bx ;寫計數值,從偏移中取出寫到計數器端口 ;運算符 PTR 建立一個新的存儲器地址操作數。 新的操作數的段地址和段內偏移量與 PTR 運 算符右邊的操

24、作數的對應分量相同(ds:數 據段段地址;bx:數據段內偏移量;地址 =ds16+bx) ,而類型由 PTR 的左邊的操作 數指定,此處為 word 字類型。 out dx,al ;先寫最低有效位(即低 8 位) mov al,ah out dx,al ;再寫最高有效位(即高 8 位) 這時喇叭發(fā)出聲音 mov cx,0ffffh ;0ffffh 控制延時 11: mov dx,03h 12:dec dx ;對指定的操作數減 1,然后把結果送回操作數 jnz 12 ;不等于 0 轉移,跳轉至 12 loop 11 ;跳轉到 11 目的是增加時延 ;LOOP 指令使 CX 減 1,且判斷若 CX 不等于 0,則循環(huán)至目標操作數 一條 LOOP 指令相當于以下兩種指令的組合: DEC CX JNZ AGAIN mov dx, 0ff2ah ;8255A 的 C 口地址:0FF2AH mov al,0 out dx,al ;寫端口 C 控制字,使 bit0 復位的控制字為 B 注意:使端口 C 按復位的控制字被寫入控制字寄存器 jmp b8255 ;跳轉至 b8255 ret ;從過程返回 code ends ;代碼段結束 end start ;end 用來結束整個源程序 7 7、簡易電子琴、簡易電子琴的安裝與調試的安裝與調試 硬件

溫馨提示

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

評論

0/150

提交評論