版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p> Micro-computer - to achieve flower procedures</p><p><b> Abstract</b></p><p> With computer technology and microelectronic technology, the development of micro-computers
2、 rather quickly, particularly from IBM introduced the IBM-PC personal computers, micro-computer quickly transition from eight to 16 Microcomputer machine. China is no exception, many units in the affairs management, nume
3、rical calculation, data acquisition and processing, industrial automation, and other aspects of the choice of 16 aircraft. Therefore, the majority of computer applications in the engineerin</p><p> 16 micro
4、-computers more widely applied to our real life, as a junior this year, we also learned this course, and in schools under the requirements of this 16 micro-computer curriculum design. The curriculum is designed around th
5、e knowledge acquired by a small independent design process. I design are: to achieve flower procedures. Require the use of modules 8088,8255,8279 draw by the circuit design and realization of the functions of the procedu
6、re. Flower achieve the main function is key in 8257 </p><p> This was also extended: sound recording: record by playing pieces; release recordings: any time playback latest record tracks in the process of a
7、 repertoire can be the default, according to a key player to achieve the pieces in play pre-recorded tracks or Set pieces, press any button on the keyboard 8279 can be paused, and then one from the Department to suspend
8、the broadcast is running friendly user interface.</p><p> Key words: Flower 8088 8255 8279 Digital control</p><p> 微型計算機-實現(xiàn)電子琴的程序</p><p><b> 摘 要</b></p>
9、;<p> 隨著計算機技術與微電子技術的發(fā)展,微型計算機的發(fā)展相當迅速,特別是從IBM公司推出的IBM—PC個人計算機以來,微型計算機很快的由八位微型機過渡到十六位機。在我國也不例外,很多單位在事務管理,數(shù)值計算,數(shù)據(jù)采集與處理,工業(yè)自動化等方面都選用了十六位機。因此,對于廣大從事微機應用的工程技術人員來說,十六位機的認識愈來愈需要了。</p><p> 十六位微型計算機越來越廣泛的應用到我們的
10、現(xiàn)實生活中,作為大三的我們今年也學習了這門課程,并且在學校的要求下進行了這次十六位微型計算機的課程設計。本次課程設計的內(nèi)容是圍繞所學的知識自主設計一個小程序。我的設計內(nèi)容是:實現(xiàn)電子琴的程序。要求利用所學的8088,8255,8279等模塊畫出所設計的電路圖以及實現(xiàn)該功能的程序。實現(xiàn)電子琴的主要功能是用8257鍵盤輸入對應的七個音階,通過實驗箱的喇叭發(fā)出聲音,并通過七段數(shù)碼管顯示輸入音階。</p><p> 同
11、時還對此進行了擴展:錄音:記錄所彈奏曲目;放錄音:任意時刻重放最新記錄曲目;在程序中可預設一曲目,按一鍵實現(xiàn)播放該曲目;在播放錄制曲目或預設曲目時,按8279鍵盤上任意鍵可以暫停播放,再按一次從暫停處繼續(xù)播放;程序運行時有友好的用戶介面。</p><p> 關鍵詞:電子琴 8255 8088 數(shù)碼管</p><p><b> 目 錄</b><
12、/p><p> 1電子琴的設計內(nèi)容2</p><p> 2元件與儀器介紹3</p><p> 2.1 8253的介紹3</p><p> 2.1.1 8253的工作原理3</p><p> 2.1.2 8253初始化編程5</p><p> 2.2對8255的認識6&l
13、t;/p><p> 2.2.1 8255引腳功能6</p><p> 2.3 8088功能介紹7</p><p> 2.4 DAC08329</p><p> 2.4.1 DA轉(zhuǎn)換dac0832的原理與應用9</p><p> 3設計原理、思路及流程圖11</p><p>
14、3.1 設計原理11</p><p> 3.2電路連接圖11</p><p> 3.3 設計思路12</p><p> 3.3.1簡單電子琴主程序12</p><p> 3.4 流程圖13</p><p><b> 致 謝16</b></p><p>
15、; 參 考 文 獻17</p><p> 附錄1 源程序代碼18</p><p> 附錄2 系統(tǒng)原理圖26</p><p><b> 1電子琴的設計內(nèi)容</b></p><p> 隨著計算機技術與微電子技術的發(fā)展,微型計算機的發(fā)展相當迅速,特別是從IBM公司推出的IBM—PC個人計算機以來,微型計算機很
16、快的由八位微型機過渡到十六位機。在我國也不例外,很多單位在事務管理,數(shù)值計算,數(shù)據(jù)采集與處理,工業(yè)自動化等方面都選用了十六位機。因此,對于廣大從事微機應用的工程技術人員來說,十六位機的認識愈來愈需要了。</p><p> 編寫一實現(xiàn)電子琴的程序,并實現(xiàn)若干擴展功能?;竟δ埽河?257鍵盤輸入對應的七個音階,通過實驗箱的喇叭發(fā)出聲音,并通過七段數(shù)碼管顯示輸入音階;</p><p> 擴
17、展功能:錄音:記錄所彈奏曲目;放錄音:任意時刻重放最新記錄曲目;在程序中可預設一曲目,按一鍵實現(xiàn)播放該曲目;在播放錄制曲目或預設曲目時,按8279鍵盤上任意鍵可以暫停播放,再按一次從暫停處繼續(xù)播放;程序運行時有友好的用戶介面。</p><p><b> 2元件與儀器介紹</b></p><p> 本設計所要用到的元器件有:計時器8253,使用8088芯片的鍵盤控制
18、器,并行控制器8255A,實驗臺。</p><p> 2.1 8253的介紹</p><p> 8253是可編程的計數(shù)器/定時器,其內(nèi)部有三個獨立的16位計數(shù)器/定時器通道,每個計數(shù)器通道均可按6種不同的方式工作,并且都可以按二進制或十進制計數(shù)。</p><p> 2.1.1 8253的工作原理 </p><p> 8253是可編
19、程的計數(shù)器/定時器,其CLK0~CLK2是計數(shù)器0~2的時鐘脈沖輸入端, GATE0~GATE2是門控脈沖輸入端, OUT0~OUT2是輸出端及內(nèi)部結(jié)構(gòu)見下圖。</p><p> 當用8253做外部事件計數(shù)器時,在CLK端所加的計數(shù)脈沖由外部事件產(chǎn)生,這些脈沖的間隔可以不相等。如果要用它做定時器,則CLK端應輸入精確的時鐘脈沖。這時, 8253所能實現(xiàn)的定時時間決定于計數(shù)脈沖的頻率和計數(shù)器的初值,即定時時間=時
20、鐘脈沖周期tc ×預置的計數(shù)初值n8253的控制邏輯由5個控制信號WR、CS、A1和A0組成,對應的操作見表1。</p><p> 8253編程時,要對其控制字寄存器寫入相應的控制字,控制字寄存器格式如表2所示。</p><p> 其中: SC1, SC0———通道選擇位。為00, 01, 10分別表示選擇0, 1, 2通道。RL1, RL0——讀/寫操作位。00 表示鎖存數(shù)
21、據(jù),可隨時讀取計數(shù)器中的計數(shù)值; 01 表示只讀/寫低8位,高8位自動置為0; 10表示只讀/寫高8位,低8位自動置為0; 11表示讀/寫16位數(shù)據(jù),先低8位,后高8位。M2,M1,M0——工作方式選擇位。8253 具有3 個獨立的16 位減法計數(shù)器,6 種不同的工作方式。</p><p> 方式0 :又稱計數(shù)結(jié)束產(chǎn)生中斷工作方式。當程序?qū)⒐ぷ鞣绞娇刂谱謱懭肟刂谱旨拇嫫鲿r,計數(shù)器的輸出端OUT 立即變?yōu)榈碗娖健?/p>
22、在計數(shù)初值寫入該計數(shù)器后,輸出仍將保持為低電平。當門控信號GATE 為高電平時,計數(shù)器對輸入端CLK的輸入脈沖開始作減一計數(shù),當計數(shù)器從初值減為0 時,輸出端OUT由低電平變?yōu)楦唠娖?該輸出信號可作為向CPU 發(fā)出的中斷請求信號。</p><p> 方式1 :又稱可編程單穩(wěn)態(tài)工作方式。功能是在GATE 信號的上升沿作用下,輸出端OUT 產(chǎn)生一個負脈沖信號,負脈沖的寬度可由定時器的計數(shù)初值和時鐘頻率編程確定。&l
23、t;/p><p> 方式2 :又稱頻率發(fā)生器工作方式。當程序?qū)⒐ぷ鞣绞娇刂谱謱懭肟刂谱旨拇嫫鲿r,計數(shù)器的輸出端OUT立即變?yōu)楦唠娖?。在寫入計?shù)初值后,計數(shù)器對輸入時鐘CLK計數(shù)。在計數(shù)過程中OUT 保持不變,直到計數(shù)器從初值減為1 時,輸出OUT 將變低,再經(jīng)過一個CLK周期,OUT 恢復為高電平,并按已設定的計數(shù)初值重新開始計數(shù)。在需要產(chǎn)生某個脈沖信號或?qū)⒛骋粋€較高頻率的脈沖信號分頻為較低頻率時,可使用8253
24、的方式2。</p><p> 方式3 :又稱方波發(fā)生器工作方式。方式3 的工作類似于方式2 ,不同之處是方式3 的輸出OUT</p><p><b> 是方波。</b></p><p> 方式4 :又稱軟件觸發(fā)選通工作方式。其功能是在輸出OUT 端隔一定時間產(chǎn)生一價目負脈沖。</p><p> 與方式0 不同的是
25、,輸出脈沖的寬度是固定的,但產(chǎn)生負脈沖所相隔時間是可編程的。</p><p> 方式5 : 又稱硬件觸發(fā)選通工作方式。方式5的工作類似于方式4 ,不同之處是GATE 信號的作用</p><p> 不同。方式5 的計數(shù)過程由GATE 的上升沿觸發(fā),當計數(shù)結(jié)束時,OUT 將輸出一個CLK周期的低電平信號。</p><p> 其中方式0的工作過程如下:當程序送一控制
26、字將所選的計數(shù)器置于所設定的方式后,該計數(shù)器的輸出為低;當計數(shù)器初值裝入被選中的計數(shù)器后,在外部輸入的門控高電平的控制下,則可通過各自的計數(shù)脈沖進行遞減計數(shù)。此時其輸出仍為“低”。當計數(shù)器從初始值減到全“0”時,便產(chǎn)生一高電平輸出,利用此輸出信號向CPU發(fā)計數(shù)完中斷;此中斷請求一直保持到程序再次向計數(shù)器裝入初值為止。</p><p> BCD———計數(shù)方式選擇位。1 表示按十進制計數(shù), 0表示按二進制計數(shù)。&l
27、t;/p><p> 2.1.2 8253初始化編程</p><p> 編程時,可選擇計數(shù)器1工作在方式0。在8253的方式0工作方式中,從將計數(shù)初值寫入計數(shù)器到開始減1計數(shù)之間,有一個時鐘脈沖的延遲。若計數(shù)初值為n = 999,那么經(jīng)過n + 1個即1000個脈沖時計數(shù)值減為0,并在OUT1端輸出一正跳變,這可以作為中斷請求。在中斷服務子程序中CPU可以做其他處理,如送下一個包裝箱等。設
28、計數(shù)初值為1999 (要求一個包裝箱內(nèi)裝工件2000) ,按十進制計數(shù),先送低8位,再送高8位,控制字為01110001B。</p><p><b> 初始化程序為:</b></p><p> MOV AL, 01110001B </p><p> AL, 01110001B </p><p> MOV
29、 DX, 0356H</p><p> OUT DX,AL ;送方式控制字</p><p> MOV AL, 99H</p><p> MOV DX, 0352H</p><p> OUT DX,AL ;向通道1送計數(shù)初值低8位</p><p> MOV AL, 19H</p><p>
30、; OUT DX,AL ;向通道1送計數(shù)初值高8位</p><p> 2.2對8255的認識</p><p> 單片機系統(tǒng)里常用的8255芯片是一個典型的可編程通用并行接口芯片,用來擴展單片機的端口,它具有3個8位的并行口,有三種工作方式,可作為單片機與各種外部設備連接的接口電路! 下面介紹8255的引腳圖及引腳功能。</p><p> 2.2.1 8255
31、引腳功能 </p><p> 8255引腳功能說明:</p><p> RESET:復位輸入線,當該輸入端外于高電平時,所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。 </p><p> PA0~PA7:端口A輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入鎖存器。</p><p> PB0
32、~PB7:端口B輸入輸出線,一個8位的I/O鎖存器, 一個8位的輸入輸出緩沖器。</p><p> PC0~PC7:端口C輸入輸出線,一個8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設定而分成2個4位的端口, 每個4位的端口包含一個4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號輸出或狀態(tài)信號輸入端口。</p><p> CS:片選信號線,
33、當這個輸入引腳為低電平時,表示芯片被選中,允許8255與CPU進行通訊。</p><p> RD:讀信號線,當這個輸入引腳為低電平時,允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。</p><p> WR:寫入信號,當這個輸入引腳為低電平時,允許CPU將數(shù)據(jù)或控制字寫8255。</p><p> D0~D7:三態(tài)雙向數(shù)據(jù)
34、總線,8255與CPU數(shù)據(jù)傳送的通道,當CPU 執(zhí)行輸入輸出指令時,通過它實現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。</p><p> 2.3 8088功能介紹 </p><p> 多數(shù)引腳采用復用、分時,因為40條引腳不夠分配,只能使一部分引腳分時復用:一條引腳當兩條引腳使用。 8086管腳圖見圖4.2.1(圖4.2.1同時給出了8088的管腳圖), 圖中第24
35、~31號管腳具有兩種定義。括弧中表示的是最大模式下的管腳定義。首先我們介紹8086在最小模式下的管腳定義。 有一部分引腳的功能和CPU的工作方式有關:在最小方式和最大方式下,這些引腳可能有不同的功能。</p><p> (1) 數(shù)據(jù)總線D0~D15 </p><p> 16位(8088僅8位),雙向傳輸, 可分別使用其低8位或高8位,該總線與地址總線A0~A15共用CPU引腳形成復用總
36、線AD0~AD15, 地址、數(shù)據(jù)分時傳送。</p><p> (2) 地址總線A0~A19 </p><p> 20位,單向,地址由CPU產(chǎn)生,用于尋址訪問存儲器單元或IO端口。A0~A15與D0~D15復用,A16~A19與狀態(tài)信號S3~S6復用(A16/S3 ~A19/S6)。其中AD15~AD0地址/數(shù)據(jù)復用信號(標號2~16、39),雙向,三態(tài)。 在總線周期的T1狀態(tài)(地址周期
37、)AD15~AD0上出現(xiàn)的 是低16位的地址信號A15~A0;在T3狀態(tài)(數(shù)據(jù)周期)AD15~AD0上出 現(xiàn)的是數(shù)據(jù)信號D15~D0。</p><p> 作為分時復用管腳,因為既做地址信號,又做數(shù)據(jù)信號,因此是雙向信號。 在總線周期的T1狀態(tài)AD15~AD0輸出CPU所要訪問的存儲器或者I/O端口的地址; 而在總線周期的T3狀態(tài),AD15~AD0上出現(xiàn)的是CPU和存儲器或I/O端口交換的數(shù)據(jù)。T2狀態(tài)對于讀周期
38、和寫周期來說AD15~AD0上的狀態(tài)是不同的: 在是讀周期, AD15~AD0要從CPU驅(qū)動(地址周期)切換為存儲器或I/O端口驅(qū)動(數(shù)據(jù)周期),AD15~AD0管腳需要在一個狀態(tài)周期內(nèi)維持高阻狀態(tài),以便不同總線驅(qū)動源的切換。如果是寫周期,地址和數(shù)據(jù)信號都是由CPU驅(qū)動,所以CPU從T2開始便輸出數(shù)據(jù)。T2~T3都是數(shù)據(jù)周期。</p><p> A19/S6~A16/S3 (Address/Status):地址
39、/狀態(tài)復用信號(標號35~38),輸出。 在總線周期的T1狀態(tài)(地址周期)A19/S6~A16/S3上出現(xiàn)的是地址的高4位。在T2~T4狀態(tài),A19/S6~A16/S3上輸出狀態(tài)信息。</p><p> (3) 狀態(tài)信號S3~S6</p><p> S6:指示8086當前是否與總線相連。S6=0表示8086連在總線上。</p><p> S5:表示中斷允許標
40、志狀態(tài)。S5=1表示中斷允許標志IF=1(對可屏蔽中斷請求起作用)。S5=0表示IF=0,禁止可屏蔽中斷。</p><p> S4和S3用來指出當前使用的段寄存器。 S4、S3代碼組合對應的含義如表4.2.1所示:</p><p><b> 表4.2.1</b></p><p> 地址和狀態(tài)信號也都是由CPU驅(qū)動, 所以T1地址周期之后,
41、緊接著的T2~T4是狀態(tài)周期。</p><p><b> (4) 控制信號 </b></p><p> 與CPU工作模式無關的信號有:BHE#、NMI、INTR、RD#、CLK、RESET、READY#、TEST#、MN/MX#、GND</p><p> 2.4 DAC0832</p><p> DAC0832是
42、采樣頻率為八位的D/A轉(zhuǎn)換器件,下面介紹一下該器件的中文資料以及電路原理方面的知識。</p><p> DAC0832內(nèi)部結(jié)構(gòu)資料:芯片內(nèi)有兩級輸入寄存器,使DAC0832具備雙緩沖、單緩沖和直通三種輸入方式,以便適于各種電路的需要(如要求多路D/A異步輸入、同步轉(zhuǎn)換等)。D/A轉(zhuǎn)換結(jié)果采用電流形式輸出。要是需要相應的模擬信號,可通過一個高輸入阻抗的線性運算放大器實現(xiàn)這個供功能。運放的反饋電阻可通過RFB端引用
43、片內(nèi)固有電阻,??梢酝饨?。 </p><p> 該片邏輯輸入滿足TTL電壓電平范圍,可直接與TTL電路或微機電路相接,下面是芯片電路原理圖</p><p> 2.4.1 DA轉(zhuǎn)換dac0832的原理與應用 </p><p> DAC0832是8位分辨率D/A轉(zhuǎn)換集成芯片,與處理器完全兼容,其價格低廉,接口簡單,轉(zhuǎn)換控制容易等優(yōu)點,在單片機應用系統(tǒng)中得到了廣
44、泛的應用。 </p><p> DAC0832的引腳及功能</p><p> DI0~DI7:數(shù)據(jù)輸入線,TLL電平。 </p><p> ILE:數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效。 </p><p> CS:片選信號輸入線,低電平有效。 </p><p> WR1:為輸入寄存器的寫選通信號。 <
45、/p><p> XFER:數(shù)據(jù)傳送控制信號輸入線,低電平有效。 </p><p> WR2:為DAC寄存器寫選通輸入線。 </p><p> Iout1:電流輸出線。當輸入全為1時Iout1最大。 </p><p> Iout2: 電流輸出線。其值與Iout1之和為一常數(shù)。 </p><p> Rfb:反饋信號輸
46、入線,芯片內(nèi)部有反饋電阻. </p><p> Vcc:電源輸入線 (+5v~+15v) </p><p> Vref:基準電壓輸入線 (-10v~+10v) </p><p> AGND:模擬地,摸擬信號和基準電源的參考地. </p><p> DGND:數(shù)字地,兩種地線在基準電源處共地比較好. </p>
47、<p> 3設計原理、思路及流程圖</p><p><b> 3.1 設計原理</b></p><p> ?。?)對于一個特定的D/A轉(zhuǎn)換接口電路,CPU執(zhí)行一條輸出指令將數(shù)據(jù)送入D/A, 即可在其輸出端得到一定的電壓輸出。給D/A轉(zhuǎn)換器輸入按正弦規(guī)律變化的數(shù)據(jù), 在其輸出端即可產(chǎn)生正弦波。對于音樂,每個音階都有確定的頻率。 </p>
48、<p> 各音階標稱頻率值: </p><p> ?。?)產(chǎn)生一個正弦波的數(shù)據(jù)可取32個(小于亦可),不同頻率的區(qū)別,可通過調(diào)節(jié)向D/A轉(zhuǎn)換器輸出數(shù)據(jù)的時間間隔,例如:發(fā)"1"頻率為261。1HZ,周期為1/261.1=3.83ms,輸出數(shù)據(jù)的時間間隔為3.83ms/32=0.12ms. 定時時間可以由8253配合8255來實現(xiàn)。按下某鍵后發(fā)音時間的長短可以由發(fā)出的正弦波的個數(shù)多少
49、來控制。本程序中設置默認長度為60個正弦波。</p><p><b> 3.2電路連接圖</b></p><p><b> 電路連接圖如下:</b></p><p> (1)8253和8255連接如下</p><p> (2)8279鍵盤在一個擴充板上,用一根20芯扁平電纜與實驗臺上擴展插頭
50、J7相連。</p><p><b> 3.3 設計思路</b></p><p> 在本次課程設計中,根據(jù)復雜程序設計思想——模塊化程序設計,分析和確定程序總體設計目標:電子琴基本功能及部分擴展功能后,將總體目標劃分為若干模塊。</p><p> 程序設計的思路按以下順序進行:</p><p> a. 分析與確定程
51、序總體設計目標</p><p> b. 將總體目標劃分為若干模塊</p><p> c. 定義每個模塊的具體任務,明確它與其他模塊間的通信方式</p><p> d. 編寫源程序,進行調(diào)試。</p><p> 3.3.1簡單電子琴主程序</p><p> 結(jié)合實驗指導書的兩程序,將其分為5個子程序,實現(xiàn)簡單的
52、播放和顯示音階的功能。</p><p><b> (1)錄音子程序</b></p><p> 實現(xiàn)記錄彈奏曲目并播放的功能。首先由9觸發(fā),將輸入的音階存入緩存區(qū)song中,輸入的同時可以發(fā)聲和顯示。當再次按9時錄制完成。</p><p><b> (2)放音子程序</b></p><p>
53、本子程序?qū)崿F(xiàn)放音功能。首先從8279鍵盤讀出鍵碼,判斷,如果鍵碼不是1-8即回到程序開始,如果是,即求出相應的時間常數(shù)的序號,取60次32個正弦波數(shù)據(jù),播放32個數(shù)據(jù),組成一個正弦波。播放60次后,從PORT1中取出值到AL,和1相與,判斷是否有按鍵,如果有就進入死循環(huán),直到下次按鍵為止。</p><p><b> (3)放歌子程序</b></p><p><
54、b> 調(diào)用放音子程序。</b></p><p><b> (4)暫停子程序</b></p><p> 在樂曲播放過程中,每調(diào)用一次MUSIC,就從PORT1中取出AL,檢測AL個數(shù),即每次發(fā)音后按鍵盤的次數(shù)。當檢測到AL為1時,即按了一次任意就使程序進入一個死循環(huán),不發(fā)音,到此實現(xiàn)了暫停,然后再次按動任意鍵時,AL就為2,不為1,所以程序跳出死
55、循環(huán),繼續(xù)從斷開處調(diào)用樂曲,繼續(xù)播放。</p><p><b> (5)源程序整體</b></p><p> 程序開始,顯示提示信息,對緩存區(qū)、8279初始化。接著調(diào)用發(fā)音子程序,鍵盤子程序,在把AL送緩存區(qū),實現(xiàn)發(fā)音和顯示。接著對9鍵、0鍵、f鍵、r鍵進行逐個判斷,當9按下時,調(diào)用錄音子程序。當按下0時,播放錄制的曲目。當按下f鍵時,播放程序中預設的曲目。當檢測
56、到r時,退出到DOS狀態(tài)。當每一個都檢測不到時,退回到調(diào)用發(fā)音子程序,繼續(xù)發(fā)音顯示。從而實現(xiàn)有擴展功能的電子琴。</p><p><b> 3.4 流程圖</b></p><p> 以下用主程序與子程序配合流程圖其進行說明。</p><p><b> ?。?)主程序流程圖</b></p><p&g
57、t; (2)發(fā)音子程序流程圖</p><p> ?。?)鍵盤顯示子程序流程圖 (4)顯示子程序流程圖</p><p> (5)錄音子程序流程圖 (6)放錄音子程序流程圖</p><p><b> 致 謝</b></p><p&g
58、t; 本課題在選題及研究過程中得到劉紅科老師的悉心指導。劉老師多次詢問課程進程,并為我指點迷津,幫助我開拓研究思路,精心點撥、熱忱鼓勵。劉老師一絲不茍的作風,嚴謹求實的態(tài)度,踏踏實實的精神,不僅授我以文,而且教我做人,雖歷時三載,卻給以終生受益無窮之道。對劉老師的感激之情是無法用言語表達的。</p><p> 同時要感謝小組成員之間的互相幫助,俗話說的好,眾人拾柴火焰高,團隊精神自古以來都是我們?nèi)〉贸晒Ρ夭豢?/p>
59、少的步驟,三年的社會實踐,三年的論文報告,使我們深深的體會到了團結(jié)就是力量,團結(jié)就有成果,我們的成功建立在互幫互助的基礎之上,我們的報告在不知不覺中圓滿完成了,為我們小組成員之間的成果驕傲。</p><p> 在課程設計即將完成之際,我的心情無法平靜,從開始進入課題到報告的順利完成,有多少可敬的師長、同學、朋友給了我無言的幫助,在這里請接受我誠摯的謝意!最后我還要感謝培養(yǎng)我長大含辛茹苦的父母,謝謝你們!<
60、/p><p><b> 參 考 文 獻</b></p><p> [1]錢曉捷、陳濤 微型計算機原理及接口技術 機械工業(yè)出版社 1999.1</p><p> ?。?]楊素行 微型計算機系統(tǒng)原理及應用. 清華大學出版社1995.10</p><p> [3]錢曉捷 匯編語言程序設計 電子工業(yè)出版社 2
61、000.9</p><p> [4]周明德 微型計算機IBM PC/XT系統(tǒng)原理及應用 清華大學出版社 1991.7</p><p><b> 附錄Ⅰ 源程序代碼</b></p><p> DATA SEGMENT</p><p> IOPORT EQU 0C400H-0280H</p>&
62、lt;p> PORT0 EQU IOPORT+2B0H ;8279 DATA PORT</p><p> PORT1 EQU IOPORT+2B1H ;8279 CTRL PORT</p><p> SEC1 DB 0 ;HOUR HIGHT</p><p> SEC2 DB 0 ;HOUP LOW</p><p> MIN1
63、 DB 0 ;MIN HIGHT</p><p> MIN2 DB 0 ;MIN LOW</p><p> HOUR1 DB 0 ;SEC HIGHT</p><p> HOUR2 DB 0 ;SEC LOW</p><p> LED DB 3FH,06,5BH,4FH,66H,6DH,7DH,07,7FH,6FH,77H,7CH,3
64、9H,5EH,79H,71H ;7段管對應的顯示碼</p><p> DB 67H,37H,73H,31H,3EH,36H,66H</p><p> IO8253A EQU IOPORT+280H</p><p> IO8253B EQU IOPORT+283H</p><p> IO8255A EQU IOPORT+288H<
65、/p><p> IO8255B EQU IOPORT+28BH</p><p> IO0832A EQU IOPORT+290H</p><p> DATA1 DB 80H,96H,0AEH,0C5H,0D8H,0E9H,0F5H,0FDH</p><p> DB 0FFH,0FDH,0F5H,0E9H,0D8H,0C5H,0AEH,96
66、H</p><p> DB 80H,66H,4EH,38H,25H,15H,09H,04H</p><p> DB 00H,04H,09H,15H,25H,38H,4EH,66H ;正弦波數(shù)據(jù)</p><p> TIME DB 120,106,94,89,79,70,63,59 ;發(fā)不同音時8253的計數(shù)器初值</p><p> MS
67、G DB’************************************************’,0DH,0AH</p><p> DB’THIS IS OUR WORK, PLEASE SUPPORT US, THANK YOU’,0DH,0AH</p><p> DB '1.PRESS 1~8 TO PLAY',0DH,0AH,0DH,0AH</p
68、><p> DB'2.PRESS 9 TO RECORD',0DH,0AH,0DH,0AH</p><p> DB'3.PRESS 0 TO PLAY THE RECORD',0DH,0AH,0DH,0AH</p><p> DB'4.PRESS F TO PLAY THE SONG',0DH,0AH,0DH,0AH
69、</p><p> DB'5.PRESS ANYKEY TO PAUSE/START WHEN PLAY THE RECORD',0DH,0AH,0DH,0AH</p><p> DB'6.PRESS R TO EXIT',0DH,0AH,0DH,0AH</p><p> DB’COPYRIGHT@MR.LI&MR.HU
70、ANG’,0DH,0AH</p><p> DB’**********************************’,0DH,0AH,'$'</p><p> NUM DB ? ;NUM為8253計數(shù)器初值的序號</p><p> SONG DB 50 DUP(?)</p><p> SONG1 DB 1,2,3,
71、4,5,6,7,8,8,7,6,5,4,3,2,1,-1</p><p> MSGPLAY DB 0DH,0AH,0DH,0AH,'RECORDING......PLESS 9 TO END',0DH,0AH,0DH,0AH,'$'</p><p> MSGEND DB 'RECORD FINISHED.',0DH,0AH,0DH,0AH
72、,0DH,0AH,0DH,0AH,'$'</p><p> MSGPLAY1 DB 0DH,0AH,0DH,0AH,'PLAYING......PRESS ANYKEY TO PAUSE.',0DH,0AH,0DH,0AH,'$'</p><p> MSGEND1 DB 'PLAYING FINISHED.',0DH,0A
73、H,0DH,0AH,'$'</p><p><b> DATA ENDS</b></p><p> STACK1 SEGMENT PARA STACK 'STACK'</p><p> DB 50 DUP(0)</p><p> STACK1 ENDS</p><
74、;p> CODE SEGMENT</p><p> MAIN PROC FAR</p><p> ASSUME CS:CODE,DS:DATA</p><p><b> START:</b></p><p> MOV AX,DATA</p><p><b> MOV D
75、S,AX</b></p><p> MOV DX,OFFSET MSG</p><p><b> MOV AH,9</b></p><p> INT 21H ;顯示提示信息</p><p><b> CLI</b></p><p> MOV AX,DAT
76、A</p><p><b> MOV DS,AX</b></p><p> MOV SEC1,0</p><p> MOV SEC2,0</p><p> MOV MIN1,0</p><p> MOV MIN2,0</p><p> MOV HOUR1,0&l
77、t;/p><p> MOV HOUR2,0 ;顯示緩存區(qū)初始化</p><p> MOV AX,DATA</p><p><b> MOV DS,AX</b></p><p><b> MOV AX,CS</b></p><p><b> MOV DS,
78、AX</b></p><p> MOV DX,PORT1</p><p> MOV AL,0D3H ;11010011 清除命令特征位</p><p> OUT DX,AL ;8279 CLEAR</p><p> MOV AL,2AH ;00101010 42分頻,內(nèi)部使用1MHZ/42的頻率</p>
79、<p> OUT DX,AL ;8279 CLOCK</p><p> MOV AL,40H</p><p> OUT DX,AL ;READ FIFO RAM COMMAND</p><p> MOV AL,00H ;8個字符顯示,左入口。編碼掃描鍵盤,雙鍵鎖定。</p><p> OUT DX,AL ;
80、KEYBORD DISPLY MODE</p><p> MOV AL,80H ;寫入的存儲單元地址為0000</p><p> OUT DX,AL ;WRITE RAM COMMAND</p><p><b> KEY1:</b></p><p> CALL MUSIC ;發(fā)音</p>
81、<p> CALL KEYBORD ;CALL KEYBORD AND DISPLY</p><p><b> NEXT2:</b></p><p> MOV HOUR2,AL</p><p> MOV HOUR1,AL</p><p> MOV MIN2,AL</p><p>
82、; MOV MIN1,AL</p><p> MOV SEC2,AL</p><p> MOV SEC1,AL ;鍵盤碼存入顯示緩沖區(qū)</p><p><b> LP0:</b></p><p><b> CMP AL,9H</b></p><p><b&g
83、t; JZ RE</b></p><p><b> CMP AL,0H</b></p><p><b> JZ OUTPUT</b></p><p><b> CMP AL,15</b></p><p><b> JZ FU</b>&
84、lt;/p><p> CMP AL,13H ;'R' COMMAND</p><p><b> JNZ LP1</b></p><p> MOV AX,4C00H ;QUIT TO DOS</p><p><b> INT 21H</b></p><p>
85、 LP1: JMP KEY1</p><p> RE:CALL RE0 ;錄音</p><p><b> JMP LP1</b></p><p> OUTPUT:CALL OUTPUT0 ;放錄音</p><p><b> JMP LP1</b></p>&l
86、t;p> FU:CALL OUTPUT1</p><p><b> JMP LP1</b></p><p><b> MAIN ENDP</b></p><p> RE0 PROC NEAR ;錄音子程序</p><p> MOV DX,OFFSET MSGPLAY</
87、p><p><b> MOV AH,9</b></p><p> INT 21H ;顯示錄音提示信息</p><p> LEA SI,SONG</p><p><b> R:</b></p><p> CALL KEYBORD</p><p>
88、; MOV HOUR2,AL</p><p> MOV HOUR1,AL</p><p> MOV MIN2,AL</p><p> MOV MIN1,AL</p><p> MOV SEC2,AL</p><p> MOV SEC1,AL ;鍵盤碼存入顯示緩沖區(qū)</p><p>
89、 CALL MUSIC</p><p><b> CALL DISP</b></p><p> MOV [SI],AH</p><p><b> CMP AH,9</b></p><p><b> JZ QRE0</b></p><p><
90、;b> INC SI</b></p><p><b> JMP R</b></p><p><b> QRE0:</b></p><p> MOV DX,OFFSET MSGEND</p><p><b> MOV AH,9</b></p>
91、;<p> INT 21H ;顯示錄音提示信息</p><p><b> RET</b></p><p><b> RE0 ENDP</b></p><p> OUTPUT0 PROC NEAR ;放錄音子程序</p><p> MOV DX,OFFSET MSGP
92、LAY1</p><p><b> MOV AH,9</b></p><p> INT 21H ;顯示PLAY提示信息</p><p> LEA SI,SONG</p><p><b> OU:</b></p><p> MOV AL,[SI]</p>
93、;<p><b> CMP AL,9</b></p><p><b> JZ QRE1</b></p><p> MOV HOUR2,AL</p><p> MOV HOUR1,AL</p><p> MOV MIN2,AL</p><p> MOV
94、 MIN1,AL</p><p> MOV SEC2,AL</p><p> MOV SEC1,AL ;鍵盤碼存入顯示緩沖區(qū)</p><p><b> CALL DISP</b></p><p><b> MOV AL,AH</b></p><p> CALL M
95、USIC</p><p><b> NEXT:</b></p><p><b> INC SI</b></p><p><b> JMP OU</b></p><p><b> QRE1:</b></p><p> MOV
96、 DX,OFFSET MSGEND1</p><p><b> MOV AH,9</b></p><p> INT 21H ;顯示PLAYEND提示信息</p><p><b> RET</b></p><p> OUTPUT0 ENDP</p><p> OU
97、TPUT1 PROC NEAR ;放歌子程序</p><p> MOV DX,OFFSET MSGPLAY1</p><p><b> MOV AH,9</b></p><p> INT 21H ;顯示PLAY提示信息</p><p> LEA SI,SONG1</p><p>
98、<b> OU1:</b></p><p> MOV AL,[SI]</p><p><b> CMP AL,-1</b></p><p><b> JZ QRE2</b></p><p> MOV HOUR2,AL</p><p> MOV
99、 HOUR1,AL</p><p> MOV MIN2,AL</p><p> MOV MIN1,AL</p><p> MOV SEC2,AL</p><p> MOV SEC1,AL ;鍵盤碼存入顯示緩沖區(qū)</p><p><b> CALL DISP</b></p>
100、<p><b> MOV AL,AH</b></p><p> CALL MUSIC</p><p><b> NEXT1:</b></p><p><b> INC SI</b></p><p><b> JMP OU1</b>&l
101、t;/p><p><b> QRE2:</b></p><p> MOV DX,OFFSET MSGEND1</p><p><b> MOV AH,9</b></p><p> INT 21H ;顯示PLAYEND提示信息</p><p><b> RE
102、T</b></p><p> OUTPUT1 ENDP</p><p> KEYBORD PROC NEAR ;鍵盤子程序</p><p> MOV DX,PORT1</p><p> MOV AL,0D1H</p><p> OUT DX,AL ;CLEAR DISPLAY</p&g
103、t;<p><b> WREP:</b></p><p><b> CALL DISP</b></p><p> MOV DX,PORT1</p><p> IN AL,DX ;讀狀態(tài)</p><p> AND AL,07H ;判斷是否有按鍵</p><
104、;p><b> JZ WREP</b></p><p> KEYN: ;下一次的按鍵</p><p> MOV DX,PORT0</p><p> IN AL,DX ;讀數(shù)據(jù)</p><p><b> MOV BL,AL</b></p><p>
105、 AND AL,07H</p><p> AND BL,38H</p><p><b> MOV CL,03</b></p><p><b> SHR BL,CL</b></p><p> CMP BL,00H</p><p><b> JNZ LINE
106、1</b></p><p> ADD AL,08H</p><p><b> JMP QUIT1</b></p><p><b> LINE1:</b></p><p> CMP BL,01H</p><p><b> JNZ LINE2<
107、;/b></p><p><b> JMP QUIT1</b></p><p><b> LINE2:</b></p><p> ADD AL,10H</p><p><b> QUIT1:</b></p><p><b> R
108、ET</b></p><p> KEYBORD ENDP</p><p> DISP PROC NEAR ;顯示子程序</p><p><b> PUSH SI</b></p><p><b> PUSH CX</b></p><p><b&g
109、t; PUSH DX</b></p><p> MOV AX,DATA</p><p><b> MOV DS,AX</b></p><p> MOV DX,PORT1</p><p> MOV AL,90H</p><p> OUT DX,AL ;寫地址為0000的顯
110、示緩存區(qū)命令,每次寫入后地址自動加1指向下一次寫入地址</p><p> MOV SI,OFFSET SEC1</p><p> MOV CX,0001</p><p> MOV BX,OFFSET LED</p><p><b> DISP1:</b></p><p><b>
111、 CLD</b></p><p><b> LODSB</b></p><p><b> MOV AH,AL</b></p><p> XLAT ;鍵盤碼轉(zhuǎn)顯示碼</p><p> MOV DX,PORT0</p><p> OUT DX,AL
112、 ;顯示</p><p> LOOP DISP1</p><p><b> POP DX</b></p><p><b> POP CX</b></p><p><b> POP SI</b></p><p><b> Q:RET&
113、lt;/b></p><p><b> DISP ENDP</b></p><p> MUSIC PROC NEAR ;發(fā)音子程序</p><p><b> PUSH SI</b></p><p><b> CMP AL,1</b></p><
114、p><b> JL QUIT</b></p><p><b> CMP AL,8</b></p><p> JG QUIT ;若不在'1'-'8'之間轉(zhuǎn)QUIT,不發(fā)音</p><p> MOV NUM,AL ;求出相應的時間常數(shù)的序號</p><p>
115、; MOV CX,60 ;取60次32個正弦波數(shù)據(jù)</p><p><b> DDD:</b></p><p><b> MOV SI,0</b></p><p><b> LLL:</b></p><p> MOV AL,DATA1[SI] ;取正弦波數(shù)據(jù)</
116、p><p> MOV DX,IO0832A</p><p> OUT DX,AL ;放音</p><p> CALL DELAY ;調(diào)延時子程序</p><p><b> INC SI</b></p><p> CMP SI,32 ;是否取完32個數(shù)據(jù)</p><p>
117、; JL LLL ;若沒有,則繼續(xù)</p><p> LOOP DDD ;總循環(huán)次數(shù)60是否完,沒有,則繼續(xù)</p><p><b> D:</b></p><p> MOV DX,PORT1 ;掃描實現(xiàn)任意鍵暫停</p><p> IN AL,DX ;讀狀態(tài)</p><p>
118、; AND AL,01H ;判斷是否有按鍵</p><p> JNZ FFF; ;按鍵延時</p><p><b> JMP QUIT</b></p><p> FFF: MOV CX,60</p><p><b> JMP D</b></p><p><
119、b> QUIT:</b></p><p><b> POP SI</b></p><p><b> RET</b></p><p> MUSIC ENDP</p><p> DELAY PROC NEAR ;延時子程序</p><p> CCC:
120、 MOV BX,OFFSET TIME</p><p> MOV DX,IO8253B ;置8253通道0為方式0工作</p><p> MOV AL,10H</p><p><b> OUT DX,AL</b></p><p> MOV DX,IO8255B ;設8255A口輸入</p><
121、p> MOV AL,9BH</p><p><b> OUT DX,AL</b></p><p> MOV AL,NUM ;取相應的時間常數(shù)</p><p><b> XLAT</b></p><p> MOV DX,IO8253A</p><p> OUT
122、 DX,AL ;向8253通道0輸出</p><p> KKK: MOV DX,IO8255A</p><p> IN AL,DX ;從8255A口讀一字節(jié)</p><p> TEST AL,01 ;判PA0口是否為1</p><p> JZ KKK ;若不為1,則轉(zhuǎn)KKK</p><p> RET ;子程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論