微機課程設計實驗報告修改版_第1頁
微機課程設計實驗報告修改版_第2頁
微機課程設計實驗報告修改版_第3頁
微機課程設計實驗報告修改版_第4頁
微機課程設計實驗報告修改版_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——微機課程設計實驗報告修改版課程設計說明書

課程名稱:

《微機原理及接口技術》課程設計

設計題目:用定時與計數(shù):利用8253操縱揚聲器發(fā)聲,播放一段音樂

班級:

網(wǎng)絡工程1502

姓名:

潘萬丁

開始時間:_2022_____年_01___月_15___日

完成時間:_2022_____年_01___月_19___日

成績評定平時考勤(20%)

試驗室調(diào)試(30%)

創(chuàng)新(10%)

辯論(20%)

說明書(20%)

總評

指導教師簽名:

___年__月__日

目錄摘要隨著科技的高速發(fā)展,計算機已經(jīng)經(jīng)過了好幾代的更新,然而計算機的運行的基本原理依舊沒有改變的。而今,我們通過一個學期的學習,已經(jīng)初步了解了計算機的基本結構和原理,并且已經(jīng)學會了用匯編語言進行基本的程序編寫。

一、概述匯編語言是計算機能夠提供應用戶使用的最快而有效的語言,也是能夠利用計算機所有特性并能直接操縱硬件的唯一語言。借助于匯編程序,計算機本身可以自動地把匯編源程序翻譯成用機器語言表示的目的程序,從而實現(xiàn)了程序設計工作的部分自動化。而本次課程設計的主要目的就是穩(wěn)定所學過的知識,用匯編語言熟練地運用三大結構,進一步把握一些指令的功能、把握子程序的定義及調(diào)用和INT21H、INT10H中斷的使用,同時熟練運用通用寄放器和堆棧來進行編寫一個完整的具有某種特定功能的程序。

二、方案設計1.功能分析

在此次設計中,第一個重點就是音樂播放的操縱,要想能依照正常的頻率和節(jié)拍播放出音樂,就需要合理的設計出給蜂鳴器的頻率值和播放的時間。這樣就能對比確切的把音樂按一定的節(jié)奏播放出來。假如我們要想加快播放速度,我們可以改變每一節(jié)拍的播放時間,假如我們改變了播放的頻率值,那么歌曲也就相應的改變了。

我們根據(jù)上面的功能分析,同時通過查閱相關資料,了解了計算機的內(nèi)部結構的同時還明了的理解了DOS中的21H和10H中斷的調(diào)用,因此我們設計出如下方案:

(1)音樂的代碼化

我們首先收集了一首簡單的歌曲《兩只老虎》,同時還帶有相應的音譜,通過查閱相關的音樂資料,了解了節(jié)拍的概念和各音符所對應的頻率,而后我們把每一首歌曲都轉化成兩個數(shù)據(jù)段,一個是把各個音符翻譯成相應的頻率值,其次是把相應的節(jié)拍轉化成對應的時間值,來操縱播放每一個音符所對應的時間。這樣我們在播放歌曲時,同時調(diào)用頻率值和時間值就可以把相應的歌曲播放出來了。

(2)音樂演奏的硬件協(xié)同

我們了解到在計算機的主板上有8253、8255和蜂鳴器,同時了解到蜂鳴器的驅動是通過8255和8253共同操縱的,我們通過對8253的通道2進行寫數(shù)據(jù)來操縱蜂鳴器的聲音頻率,再通過8255來操縱播放時間的長短,就通過這樣的奇妙協(xié)同來達到播放完整音樂的效果。

(3)音樂演奏的軟件設計

軟件設計是本設計的重點,在軟件設計中,我們要給8253和8255寫數(shù)據(jù),執(zhí)行相應的代碼來操縱音樂的播放。

三、軟件設計

在介紹音樂的播放之前,先來說說PC機的小喇叭是怎樣與機器相連的呢?下面的"發(fā)聲原理圖'表示了喇叭與機器簡單的相連狀況。喇叭的一端連接在電源正極,另一端與機器的61H端口的bit位相連??梢韵胂?,若能連續(xù)改變61H端口的bit位0,1狀態(tài),就可以使喇叭線圈內(nèi)的電流時有時無,從而使喇叭發(fā)聲。我們編制的匯編程序的工作,就是連續(xù)改變61H端口的bit位狀態(tài)。

我們使用PC機有一個專門用于定時的電路,型號為8253。它有三個通道,第一個通道用于操縱始終正常運轉;其次個通道用于存儲器刷新;這兩個通道與我們現(xiàn)在要探討的問題無關。第三個就是一組電路域喇叭相連。

如下圖所示就是PC機中完整的發(fā)聲電路,定時器通道3的G端與61H端口的bit0位相連,假如把61H端口的bit0位置為1,那么定時器通道3就會被啟動,此時將有一組信號從OUT輸出,信號的頻率可以用程序操縱;若61H的端口bit0位為0,則定時器被關閉,out端就恒為1.

發(fā)聲原理圖:

發(fā)聲程序設計原理:

PC機發(fā)聲系統(tǒng)以8253的2號計數(shù)器為核心。系統(tǒng)初始化時,2號計數(shù)器I作在"方波發(fā)生器'方式,初值為二進制數(shù),,寫入順序為先低后高,CLK2為1.193182MHz,當計數(shù)初值為533H時,OUT2輸出的方波大約為900Hz,經(jīng)過簡單的濾波之后,送至揚聲器。改變1、4號計數(shù)器的計數(shù)初值就可以使揚聲器發(fā)出不同頻率的音響。

ROMBIOS中有個BEEP子程序,這能根據(jù)BL中組出的時間計數(shù)值操縱8253定時器,產(chǎn)生持續(xù)時間為1個或幾個0.5秒,頻率為896HZ的聲音,我們可以利用并修改BEEP,使其產(chǎn)生任一頻率的聲音。為此我們需要做兩點修改,首先,BEEP程序只能產(chǎn)生896HZ的聲音,我們的通用發(fā)聲程序應能產(chǎn)生任一頻率的聲音。其次,BEEP產(chǎn)生聲音的持續(xù)時間(音長)只能是0.5秒的倍數(shù),我們希望聲音的持續(xù)時間更易于調(diào)整,例如可以是10ms的倍數(shù)。

我們知道BEEP能將計數(shù)值533H送給定時器2產(chǎn)生896HZ的聲音的,那么產(chǎn)生其它頻率聲音的時間計數(shù)值應為:

533H896給定頻率=123280H給定頻率發(fā)聲程序包括4個步驟:

(1)在8253中的42端口送一個操縱字0B6H(10110110B),該操縱字對定時器2進行初始化,使定時器2準備接收計數(shù)初值。

(2)在8253中的42H端口(Timer2)裝入一個16位的計數(shù)值(533H895/頻率),以建立將要產(chǎn)生的聲音頻率。

(3)把輸出端口61H的PB0、PB1兩位置1,發(fā)出聲音。

對于發(fā)音部分。PC機上的大多數(shù)輸入/輸出(I/O)都是由主板上的8255(或8255A)可編程序外圍接口芯片(PPI)管理的。PPI包括3個8位寄放器,兩個用于輸入功能,一個用于輸出功能。輸入寄放器分派的I/O端口號為60H和62H,輸出寄放器分派的I/O端口號為61H。由PPI輸出寄放器中的0、1兩位來選擇揚聲器的驅動方式。

(4)注意音樂節(jié)拍表的頻率表的設定。一個頻率對應一個節(jié)拍,假如頻率表和節(jié)拍表有問題,同樣不會發(fā)出聲音。

對于發(fā)音部分。PC機上的大多數(shù)輸入/輸出(I/O)都是由主板上的8255(或8255A)可編程序外圍接口芯片(PPI)管理的。PPI只有PB0和PB1同時為"1'時,才能驅動揚聲器地聲。

當從8255中采集到輸入的數(shù)據(jù)時,需要確定相應的頻率,所以在軟件編程時要建立一個數(shù)據(jù)表。

把相應的頻率送到一個寄放器上,通過公式:

計數(shù)值=533H896f=1234DCHf

算出計數(shù)值,再把算得的計數(shù)值送給8253,就可產(chǎn)生所要頻率的方波。在把計數(shù)值送8253前,必需先把8253進行初始化:

使其選用通道2,工作在方式3下。

就整個電路而言,接好電路后,通過軟件編程不斷地采集從8255口中輸入的信號,而8個開關都接在8255的A口上,只要有開關按下,就會采集到一個數(shù)據(jù),根據(jù)這個數(shù)據(jù)與事先編好的表對應,得到一個計數(shù)值,把這個計數(shù)值送給8253的通道2,8253的通道2工作的方式3下,這樣就可以產(chǎn)生滿足頻率要求的發(fā)聲方波。這個方波經(jīng)驅動放大就可以使揚聲器發(fā)出相應的聲音。

所以8255在這里完成兩個任務,它不僅從A口中采集到數(shù)據(jù),而且B口的PB1和PB0兩個位要操縱發(fā)聲。8253的主要任務就是產(chǎn)生

所要求發(fā)聲的不同頻率的方波。

本例程序是由8253芯片操縱發(fā)聲的音階和節(jié)拍,由8255芯片操縱揚聲器的端口地址開啟揚聲器發(fā)生。音階對應的數(shù)據(jù)表如下音符

簡譜音階

頻率

音符

簡譜音階

頻率

音符

簡譜音階

頻率

C1.139C1262C.1524D2.147D2294D.2587E3.165E3330E.3659F4.175F4349F.4698G5.196G5392G.5784A6.220A6440A.6880B7.247B7494B.7988通過編寫程序,由計算機主板上的8253芯片和8255芯片連接到主板上的揚聲器來操縱主板發(fā)聲。

1.算法描述流程圖:

Y

N

開始數(shù)據(jù)段存入內(nèi)存取SI所指向的音節(jié)頻率段頻率取BP所指向的發(fā)聲時長值頻率是否為-1?向8253計數(shù)器2寫操縱字8253操縱8255發(fā)聲調(diào)整SI,BP地址,使SI指向下一個頻率BP指向下一個時長終止

實現(xiàn)代碼如下:

;***************************************************************************;程序名稱:ceshi;兩只老虎樂曲;***************************************************************************stacksegmentparastack"stack"

db64dup("stack...")stackends;*******************************************************************dsegsegmentpara"data"mus_freq

dw

262,294,330,262,262,294,330,262

dw

330,349,392,330,349,392,392,440

dw

392,349,330,262,392,440,392,349

dw

330,262,294,196,262,294,196,262,-1mus_time

dw

25,25,25,25,25,25,25,25,25,25

dw

50,25,25,50,12,12,12,12,25,25

dw

12,12,12,12,25,25,25,25,50,25,25,50dsegends;*******************************************************************csegsegmentpara"code"

assumecs:cseg,ss:stack,ds:dseg;

musicprocfar

mov

ax,dseg

mov

ds,ax

lea

si,mus_freq

lea

bp,ds:mus_timefreq:

mov

di,[si]

cmp

di,-1

je

end_mus

mov

bx,ds:[bp]

callsoundf

add

si,2

add

bp,2

jmp

freqend_mus:

mov

ax,4c00h

int

21hmusicendp;soundfprocnear

pushax

pushbx

pushcx

pushdx

pushdi

mov

al,0b6h

out

43h,al

mov

dx,12h

mov

ax,348ch

div

di

out

42h,al

mov

al,ah

out

42h,al

in

al,61h

mov

ah,al

or

al,3

out

61h,alwait1:

mov

cx,6630

callwaitf

dec

bx

jnz

wait1

mov

al,ah

out

61h,al

pop

di

pop

dx

pop

cx

pop

bx

pop

ax

retsoundfendp;waitfprocnear

pushaxwaitf1:

in

al,61h

and

al,10h

cmp

al,ah

je

waitf1

mov

ah,al

loopwaitf1

pop

ax

retwaitfendp;csegends;***************************************************************************

endmusic;***************************************************************************

四、調(diào)試過程1.編輯源程序,假

溫馨提示

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

評論

0/150

提交評論