微機(jī)原理數(shù)字錄音機(jī)課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  微機(jī)原理課程設(shè)計(jì)</b></p><p>  題 目 數(shù)字錄音機(jī) </p><p>  學(xué)生姓名 XX </p><p>  專業(yè)班級(jí) 10計(jì)算機(jī)科學(xué)與技術(shù)3班 </p><p>  學(xué) 號(hào) X &l

2、t;/p><p>  所 在 系 信息工程學(xué)院 </p><p>  指導(dǎo)教師 </p><p>  完成時(shí)間 2012 年 1 月 4 日 </p><p>  微機(jī)原理課程設(shè)計(jì)任務(wù)書</p><p>  題目

3、 數(shù)字錄音機(jī) </p><p>  專業(yè) X 班級(jí) 3班 學(xué)號(hào)X姓名 X </p><p><b>  一、基本要求</b></p><p>  將聲傳感器MIC接J2,把代表語音的電信號(hào)送給ADC0809通道2;D/A轉(zhuǎn)換器的輸出端通過K8跳線接喇叭。編程,以8KHz的速率采集IN2輸入的語音數(shù)據(jù)并存入內(nèi)

4、存,共采集64000個(gè)數(shù)據(jù)(錄8秒),然后再以規(guī)定的速率和幅度將數(shù)據(jù)送DAC0832使喇叭發(fā)聲;要求用開關(guān)K0控制開始,K2停止,K3控制重放,也可用鍵盤控制啟停。</p><p><b>  二、設(shè)計(jì)任務(wù)</b></p><p>  按圖連接好線路,將傳感器(話筒)接T2,由話筒傳入語音電信號(hào),把代表語音的電信號(hào)傳送給ADC0809。利用可編程定時(shí)/計(jì)數(shù)器8253,

5、由CLK0計(jì)數(shù)時(shí)鐘,輸入時(shí)鐘頻率1MHz,再由GATE0門控信號(hào)接+5V,通過GATE0端控制計(jì)數(shù)器的啟動(dòng)計(jì)數(shù)和停止計(jì)數(shù)操作;CS片選信號(hào)接實(shí)驗(yàn)箱地址280H。</p><p><b>  三、設(shè)計(jì)時(shí)間</b></p><p>  2012年12月30日至2013年1月4日</p><p>  指導(dǎo)教師:

6、 </p><p>  教研室主任: </p><p><b>  目 錄</b></p><p><b>  摘要1</b></p><p><b>  引言2</b></p><p><b>  1.

7、實(shí)驗(yàn)?zāi)康?</b></p><p>  2.課題設(shè)計(jì)內(nèi)容4</p><p>  3.設(shè)計(jì)方案及論證6</p><p><b>  4.系統(tǒng)設(shè)計(jì)7</b></p><p>  4.1 硬件設(shè)計(jì)7</p><p>  4.1.1 數(shù)字錄音電路工作原理7</p>&

8、lt;p>  4.1.2 芯片簡(jiǎn)介及管腳功能介紹8</p><p>  4.2具體實(shí)現(xiàn)方法15</p><p>  4.2.1實(shí)現(xiàn)該聲音錄放系統(tǒng)功能15</p><p>  4.2.2 調(diào)試程序20</p><p>  5.分析與總結(jié)25</p><p><b>  致謝27</b&g

9、t;</p><p><b>  附 錄28</b></p><p>  附1:元件清單28</p><p>  附2:程序清單28</p><p>  微機(jī)原理數(shù)字錄音機(jī)課程設(shè)計(jì)</p><p><b>  摘要</b></p><p>  

10、本次課程設(shè)計(jì)的主題研究思想是利用微機(jī)原理與接口技術(shù)知識(shí),掌握數(shù)字錄音技術(shù)的基本原理.利用8253芯片,8255芯片,ADC0809芯片和DAC0832芯片實(shí)現(xiàn)電信號(hào)與數(shù)據(jù)信號(hào)的轉(zhuǎn)換.8253設(shè)置成方式0,記數(shù)為200個(gè),利用PA0查詢電平變化,控制錄音和放音時(shí)間.達(dá)到數(shù)字錄音的目的.可廣泛應(yīng)用于數(shù)字錄音領(lǐng)域.因此它具有一定的實(shí)用價(jià)值和開發(fā)價(jià)值。數(shù)字錄音機(jī)有一定的市場(chǎng)前景和研究領(lǐng)域。</p><p>  關(guān)鍵詞:數(shù)

11、字錄音 A/D轉(zhuǎn)換 D/A轉(zhuǎn)換</p><p><b>  引言</b></p><p>  微機(jī)原理和接口技術(shù)是一門實(shí)踐性強(qiáng)的學(xué)科,其中很多的原量、規(guī)則、現(xiàn)象等僅僅靠學(xué)習(xí)教科書是無法完全掌握的,必須通過實(shí)踐才能比較直觀和深刻的理解。在進(jìn)行課題設(shè)計(jì)的過程中,可以讓學(xué)生體驗(yàn)分析問題、提出解決方案、通過編程等手段實(shí)現(xiàn)解決方案、不斷調(diào)試最終達(dá)到設(shè)計(jì)要求的全過程,從而幫助

12、學(xué)生系統(tǒng)地掌握微機(jī)原理的接口技術(shù)的相關(guān)知識(shí),達(dá)到將知識(shí)融會(huì)貫通的目的。 主要特點(diǎn): 微結(jié)微機(jī)原理和接口技術(shù)教材的重點(diǎn)內(nèi)容編寫,涵蓋課程的主要知識(shí)點(diǎn),具有通用性,適合開設(shè)計(jì)課程的不同學(xué)校采用。 對(duì)課程設(shè)計(jì)的原理有比較詳細(xì)的描述,課程設(shè)計(jì)的步驟循序漸進(jìn),便于學(xué)生獨(dú)立完成課程設(shè)計(jì)。 實(shí)例豐富,既有小型的適合一個(gè)學(xué)生獨(dú)立完成的項(xiàng)目,也有比較大型的適合團(tuán)隊(duì)完成的項(xiàng)目,不僅可以培養(yǎng)學(xué)生的動(dòng)手能力,也有助于培養(yǎng)學(xué)生的團(tuán)隊(duì)意識(shí)。</p>

13、<p><b>  1. 實(shí)驗(yàn)?zāi)康?lt;/b></p><p><b>  實(shí)驗(yàn)?zāi)康模?lt;/b></p><p> ?。?)了解數(shù)/模轉(zhuǎn)換器的基本原理,掌握DAC0832芯片的使用方法;</p><p>  (2)了解模/數(shù)轉(zhuǎn)換器的基本原理,掌握ADC0809芯片的使用方法;</p><p> 

14、?。?)掌握計(jì)數(shù)器/定時(shí)器8253和并行輸入輸出8255的基本工作原理和編程使用方法;</p><p> ?。?)了解錄音機(jī)的基本工作原理,掌握其內(nèi)部連接方式。</p><p><b>  2.課題設(shè)計(jì)內(nèi)容</b></p><p><b>  1、總體設(shè)計(jì)思想</b></p><p>  根據(jù)設(shè)計(jì)要

15、求,本次數(shù)字錄音機(jī)的匯編語言設(shè)計(jì)所需芯片有模數(shù)轉(zhuǎn)換芯片ADC0809、數(shù)模轉(zhuǎn)換芯片DAC0832、定時(shí)計(jì)數(shù)器8253、可編程并行I/O接口8355A及譯碼器74LS138。設(shè)計(jì)過程可簡(jiǎn)述為:利用傳感器和ADC0809采集語音數(shù)據(jù),以每秒5000的速率采集IN0輸入的語音數(shù)據(jù)并存入內(nèi)存,共采集數(shù)據(jù)60000個(gè),即錄音12秒。DAC0832進(jìn)行數(shù)模轉(zhuǎn)換,以同樣的速率將數(shù)據(jù)送DAC0832使喇叭發(fā)聲。8253用作定時(shí),定時(shí)0.2ms,設(shè)置成方

16、式0,計(jì)數(shù)初值為200。8253計(jì)數(shù)器0的OUT0與8255A的PA0連接,利用PA0查詢OUT0電平,如果為高點(diǎn)平則表示定時(shí)時(shí)間到。用譯碼器74LS138對(duì)地址線進(jìn)行譯碼以產(chǎn)生各接口芯片所需的信號(hào)。</p><p>  2、按圖1連接電路,將聲傳感器接J2,把代表語音的電信號(hào)送給ADC0809通道2(IN2);D/A轉(zhuǎn)換器的輸出端通過K8跳線接喇叭。</p><p>  圖2.1 硬件連

17、接圖</p><p>  3、各芯片的作用及工作方式</p><p> ?。?)ADC0809在本次設(shè)計(jì)中的作用及工作方式</p><p>  ADC0809作數(shù)據(jù)采集用,用來采集12秒的語音信號(hào)并保存到相應(yīng)的存儲(chǔ)單元。對(duì)ADC0809的8個(gè)模擬通道,這里是用數(shù)據(jù)總線的低8位D2、D1、D0來控制ADC的通道選擇信號(hào)ADDC、ADDB、ADDA,以實(shí)現(xiàn)選擇其中之一模

18、擬通道輸入。在本次設(shè)計(jì)中,初始值為000(D2=0、D1=0、D0=0),即選擇IN0通道進(jìn)行數(shù)據(jù)采集,然后使ADC0809的ALE、START有效,START和ALE信號(hào)通過CPU向選中的通道口執(zhí)行一條輸出指令,啟動(dòng)A/D轉(zhuǎn)換。轉(zhuǎn)換結(jié)束后,發(fā)出EOC信號(hào),當(dāng)EOC為高電平時(shí),可供CPU查詢,讀取每次采集的A/D轉(zhuǎn)換結(jié)果。當(dāng)CPU知道轉(zhuǎn)換已完成,執(zhí)行一條輸入指令使OE信號(hào)有效,此時(shí)輸出緩沖器被打開,數(shù)據(jù)送到數(shù)據(jù)總線。系統(tǒng)時(shí)鐘經(jīng)分頻后接到

19、ADC0809芯片的時(shí)鐘引腳CLK上。</p><p> ?。?)DAC0832在本次設(shè)計(jì)中的作用及工作方式</p><p>  在本次設(shè)計(jì)中,我使用的DAC0832采用直通方式與CPU連接,從硬件圖中可以看出,該片DAC0832只有一個(gè)端口地址,即88H。DAC0832的ILE信號(hào)與+5V連在一起, 、WR1和WR2均接地,總是有效的,DAC0832的輸入寄存器和DAC寄存器均處于選通狀

20、態(tài),只要CPU想88H端口執(zhí)行一條輸出指令,就會(huì)使XFER有效,CPU輸出繁榮數(shù)字量就會(huì)順利通過DAC0832的兩個(gè)寄存器,然后進(jìn)行D/A轉(zhuǎn)換,在運(yùn)算放大器的輸出端得到轉(zhuǎn)換結(jié)果。</p><p> ?。?)8253、8255A在本次設(shè)計(jì)中的作用及工作方式</p><p>  8253在本次設(shè)計(jì)中用作定時(shí),工作于方式0,與8255A連接使用完成定時(shí)操作。8255A采用工作方式0進(jìn)行輸入操作,

21、工作方式0是8255A個(gè)端口的基本輸入輸出方式,CPU可從指定端口輸入信息,也可向指定端口輸出信息。當(dāng)8253寫入方式0控制字后,計(jì)數(shù)輸出端OUT0立即變?yōu)榈碗娖?,并且在?jì)數(shù)過程中一直保持低電平,當(dāng)計(jì)數(shù)完成時(shí),OUT0輸出變?yōu)楦唠娖健?253計(jì)數(shù)器0的OUT0與8255A的PA0連接,因此可通過查詢PA0是否為1,判斷計(jì)數(shù)是否完成。計(jì)數(shù)完成,則表示定時(shí)時(shí)間到。</p><p>  (4)74LS138在本次設(shè)計(jì)中

22、的作用</p><p>  譯碼器74LS138對(duì)地址線進(jìn)行譯碼以產(chǎn)生各接口芯片所需的信號(hào)</p><p><b>  3.設(shè)計(jì)方案及論證</b></p><p>  設(shè)計(jì)方案及論證如下:</p><p>  1、本課題設(shè)計(jì)可采用單獨(dú)的硬件設(shè)計(jì),也可以軟件與硬件結(jié)合設(shè)計(jì)。后者的設(shè)計(jì)方案較為合適,能夠達(dá)到微機(jī)原理與接口技術(shù)

23、的目的.</p><p>  2、單獨(dú)使用硬件來完成此設(shè)計(jì),所使用的硬件材料較多,且不便于調(diào)試,而且設(shè)計(jì)復(fù)雜,相對(duì)于用軟件和硬件想結(jié)合而言,后者較為合適。</p><p>  3、由于我們上一期學(xué)的課程是微機(jī)原理與接口技術(shù)課程,掌握了一定的微機(jī)原理與接口技術(shù)知識(shí).所以此設(shè)計(jì)采用硬件與軟件結(jié)合設(shè)計(jì),配合通用微機(jī)接口實(shí)驗(yàn)系統(tǒng)實(shí)驗(yàn)箱實(shí)現(xiàn)此設(shè)計(jì)及此設(shè)計(jì)功能,與此同時(shí)也可以對(duì)此門課程加深理解和鞏固。

24、為以后的學(xué)習(xí)和工作打下良好的基礎(chǔ).</p><p><b>  4.系統(tǒng)設(shè)計(jì)</b></p><p><b>  4.1 硬件設(shè)計(jì)</b></p><p>  準(zhǔn)備好實(shí)驗(yàn)箱,檢查芯片和導(dǎo)線是否完整. 按圖1連接線路.具體連接情況如下:</p><p>  8255:CS8255接地址譯碼Y1,&l

25、t;/p><p>  PA0   接8253的OUT0。</p><p>  8253:CS8253接地址譯碼Y0,</p><p>  CLK0  接1MHz脈沖,</p><p>  GATE0 接VCC。</p><p>  DAC0832:CS0832接地址譯碼Y2,</p>

26、;<p>  UB    接SPEAK INPUT。</p><p>  ADC0809:CS0809接地址譯碼Y3,</p><p>  CLK   接1MHz脈沖,</p><p>  IN2    接MIC OUTPUT。</p><p>  

27、4.1.1 數(shù)字錄音電路工作原理</p><p>  按圖連接好線路,將傳感器(話筒)接T2,由話筒傳入語音電信號(hào),把代表語音的電信號(hào)傳送給ADC0809。A/D轉(zhuǎn)換芯片通道2(IN2),片選信號(hào)CS低電平有效接微機(jī)通用實(shí)驗(yàn)系統(tǒng)箱地址298H,由298H地址信號(hào)控制,低電平表示ADC0809芯片被選中.利用可編程定時(shí)/計(jì)數(shù)器8253,由CLK0計(jì)數(shù)時(shí)鐘,輸入時(shí)鐘頻率1MHz,再由GATE0門控信號(hào)接+5V,通過G

28、ATE0端控制計(jì)數(shù)器的啟動(dòng)計(jì)數(shù)和停止計(jì)數(shù)操作;CS片選信號(hào)接實(shí)驗(yàn)箱地址280H;同理,CS低電平有效,若280H為低電平,表示8253芯片被選中.OUT0接PA0;時(shí)間到或者計(jì)數(shù)結(jié)束輸出引腳,將8253設(shè)置成方式0。計(jì)數(shù)值為200(定時(shí)0.2mS)。再利用8255PA0查詢OUT0電平,高電平表示定時(shí)時(shí)間到,CS片選信號(hào)接實(shí)驗(yàn)箱288H,由它輸入。D/A轉(zhuǎn)換器的輸出端下接喇叭。CS片選信號(hào)接地址292H??傮w思想為:以每秒鐘5000次的

29、速率(以8253作為定時(shí))IN2采集輸入的語言數(shù)據(jù)并存入內(nèi)存。共采集60000個(gè)數(shù)據(jù)(錄12秒鐘),然后以同樣的速率將數(shù)據(jù)送入DAC0832使喇叭發(fā)聲(放音),達(dá)到數(shù)字錄音、放音的效果。</p><p>  4.1.2 芯片簡(jiǎn)介及管腳功能介紹</p><p> ?。?)、 A/D轉(zhuǎn)換器ADC0809</p><p>  圖4.1 ADC0809構(gòu)造</p>

30、;<p>  ADC0809是CMOS工藝制成的雙列直插式8位A/D轉(zhuǎn)換芯片,內(nèi)部采用逐次逼近原理,單極性,量程為0~+5V。片內(nèi)部有8路模擬開關(guān),可控制選擇輸入8個(gè)模擬量之中的一個(gè),并帶有三態(tài)輸出鎖存緩沖器,可直接與CPU總線連接,不需要外部鎖存器,是應(yīng)用較廣泛的一種A/D轉(zhuǎn)換芯片。</p><p>  ①ADC0809內(nèi)部結(jié)構(gòu)</p><p>  ADC0809內(nèi)部由兩部

31、分電路組成:</p><p>  第一部分:8路模擬通道選擇開關(guān),地址鎖存器和譯碼器。</p><p>  第二部分:比較器、8位逐次逼近寄存器SAR、8位開關(guān)樹型D/A轉(zhuǎn)換電路、控制邏輯、三態(tài)輸出緩沖鎖存器。</p><p>  工作原理:由ADDA、ADDB、ADDC及ALE選擇8個(gè)模擬量之一,并通過通道選擇開關(guān)加至比較器一端。由START信號(hào)啟動(dòng)A/D轉(zhuǎn)換開始

32、且SAR清0。在CLOCK的控制下,將SAR從高位逐次置1,并將每次置位后的SAR送D/A轉(zhuǎn)換器轉(zhuǎn)換成與SAR中數(shù)字量成正比的模擬量。DAC的輸出加至比較器的另一端與輸入的模擬電壓進(jìn)行比較,若Vi大于等于V0保留SAR中該位的1;若Vi小于V0則該位清0。經(jīng)過8次比較(8個(gè)CLOCK)后,SAR中的8位數(shù)字量即是結(jié)果。在OE有效時(shí),將SAR中的8位二進(jìn)制數(shù)輸出至鎖存器,并通過D7~D0輸出,同時(shí)發(fā)出EOC轉(zhuǎn)換結(jié)束信號(hào)。</p>

33、;<p> ?、贏DC0809引腳功能如下:</p><p>  IN0~I(xiàn)N7 :8 路模擬輸入通道。</p><p>  D0~D7 :8 位數(shù)字量輸出端。</p><p>  START : 啟動(dòng)轉(zhuǎn)換命令輸入端,由 1 → 0 時(shí)啟動(dòng) A/D 轉(zhuǎn)換,要求信號(hào)寬度 >100n</p><p>  OE :輸出使能端,高

34、電平有效</p><p>  ADDA 、ADDB 、ADDC : 地址輸入線,用于選通 8 路模擬輸入中的一路進(jìn)入 A/D 轉(zhuǎn)換。其中 ADDA 是 LSB 位,這三個(gè)引腳上所加電平的編碼為 000~111 ,分別對(duì)應(yīng) IN 0 ~I(xiàn)N 7 ,例如,當(dāng) ADDC=0 , ADDB=1 , ADDA=1 時(shí),選中 IN 3 通道。</p><p>  ALE :地址鎖存允許信號(hào)。用于將 A

35、DDA~ADDC 三條地址線送入地址鎖存器中。</p><p>  EOC :轉(zhuǎn)換結(jié)束信號(hào)輸出。轉(zhuǎn)換完成時(shí), EOC 的正跳變可用于向 CPU 申請(qǐng)中斷,其高電平也可供 CPU 查詢。</p><p>  CLK :時(shí)鐘脈沖輸入端,要求時(shí)鐘頻率不高于 640KHZ 。</p><p>  REF(+)、REF(-):基準(zhǔn)電壓,一般與微機(jī)接口時(shí),REF(-)接 0V

36、或 -5V ,REF (+)接 +5V 或 0V 。</p><p>  (2)D/A轉(zhuǎn)換器DAC 0832</p><p>  圖4.2 ADC0809的工作圖</p><p>  DAC0832是用COMS工藝制成的雙列直插式8位D/A轉(zhuǎn)換芯片,內(nèi)部采用T型電阻網(wǎng)絡(luò),數(shù)字輸入有輸入寄存器和DAC寄存器兩級(jí)緩沖,可以雙緩沖、單緩沖或直接輸入方式連接。</p&

37、gt;<p>  片選信號(hào):輸入低電平有效,與ILE相配合,可對(duì)寫信號(hào) 是否有效起到控制作用。</p><p>  ILE允許鎖存信號(hào):輸入高電平有效。輸入鎖存器的鎖存信號(hào) 由ILE, , 的邏輯組合產(chǎn)生。當(dāng)ILE為高電平、 為低電平、 輸入負(fù)脈沖時(shí),在 端產(chǎn)生正脈沖。當(dāng) 為高電平時(shí),輸入鎖存器的狀態(tài)隨著數(shù)據(jù)輸入線的狀態(tài)變化, 的負(fù)跳變將數(shù)據(jù)線上的信息打入輸入鎖存器。</p><

38、p>  寫信號(hào)1:輸入低電平有效。當(dāng) , ,ILE均為有效時(shí),可將數(shù)據(jù)寫入8位輸入鎖存器。</p><p>  寫信號(hào)2:輸入低電平有效。當(dāng)其有效時(shí),在傳送控制信號(hào) 的作用下,可將鎖存在輸入鎖存器的8位數(shù)據(jù)送到DAC寄存器。</p><p>  數(shù)據(jù)傳送控制信號(hào):輸入低電平有效。當(dāng) , 均有效時(shí),則在 端產(chǎn)生正脈沖。當(dāng) 為高電平時(shí),DAC寄存器的輸出和輸入鎖存器的狀態(tài)一致, 的負(fù)跳變

39、將輸入鎖存器的內(nèi)容打入DAC寄存器。</p><p>  基準(zhǔn)電壓輸入端:可在±10 V范圍內(nèi)調(diào)節(jié)。</p><p>  DI7~DI0:8位數(shù)字輸入量輸入端。</p><p>  Iout1:DAC的電流輸出1。當(dāng)DAC寄存器各位均為1時(shí),輸出電流最大;當(dāng)DAC寄存器各位均為0時(shí),輸出電流為0。</p><p>  Iout2 :

40、DAC的電流輸出2。 與 的和為一常數(shù),一般單極性輸出時(shí) 接地,在雙極性輸出時(shí)接運(yùn)放。</p><p>  Rfb :反饋電阻引腳。在DAC0832芯片內(nèi)部有一個(gè)反饋電阻,可作為外部運(yùn)算放大電路的反饋電阻用。</p><p>  3)芯片8253簡(jiǎn)介</p><p>  A: 8253管腳介紹及其功能如下:</p><p>  圖4.3 52

41、53構(gòu)造 </p><p><b>  8253內(nèi)部結(jié)構(gòu)</b></p><p><b> ?、贁?shù)據(jù)總線緩沖器</b></p><p>  該緩沖器為 8 位雙向三態(tài)的緩沖器, 8 根數(shù)據(jù)線 D 0 ~D 7 可直接掛在 CPU 數(shù)據(jù)總線上。</p><p><b>  ② 讀

42、/寫控制邏輯</b></p><p>  它是 8253 內(nèi)部操作的控制部分,它決定三個(gè)計(jì)數(shù)器和控制字寄存器中哪一個(gè)能進(jìn)行工作,并控制內(nèi)部總線上數(shù)據(jù)傳送的方向。</p><p><b>  ③控制字寄存器</b></p><p>  接收從 CPU 來的控制字,并由控制字的 D7 、D6 位的編碼決定該控制字寫入哪個(gè)計(jì)數(shù)器的控制寄存

43、器,控制寄存器只能寫入,不能讀出。</p><p><b>  ④計(jì)數(shù)器</b></p><p>  8253 有 3 個(gè)獨(dú)立的計(jì)數(shù)器通道,每個(gè)通道的結(jié)構(gòu)完全相同,如圖 10.2 所示。每一個(gè)通道有一個(gè) 16 位減法計(jì)數(shù)器;還有對(duì)應(yīng)的 16 位初值寄存器和輸出鎖存器。每個(gè)計(jì)數(shù)器都可以對(duì)其 CLK 輸入端輸入的脈沖按照二進(jìn)制或 BCD 碼從預(yù)置的初值開始進(jìn)行減 1 計(jì)數(shù)

44、,當(dāng)減至 0 時(shí),從 OUT 端輸出一個(gè)信號(hào),計(jì)數(shù)的開始由軟件啟動(dòng)或硬件門控信號(hào) GATE 控制。計(jì)數(shù)開始前寫入的計(jì)數(shù)初值存于初值寄存器;計(jì)數(shù)過程中,減法計(jì)數(shù)器的值不斷遞減,而初值寄存器中的初值不變。輸出鎖存器則用于寫入鎖存命令時(shí)鎖定當(dāng)前計(jì)數(shù)值。</p><p>  當(dāng) 8253 用作計(jì)數(shù)器時(shí),加在 CLK 引腳上脈沖的間隔可以是不相等的;當(dāng)它用作定時(shí)器時(shí),則在 CLK 引腳應(yīng)輸入精確的時(shí)鐘脈沖, 8253 所能

45、實(shí)現(xiàn)的定時(shí)時(shí)間,取決于計(jì)數(shù)脈沖的頻率和計(jì)數(shù)器的初值。</p><p>  對(duì) 8253 來講,外部輸入到 CLK 引腳上的時(shí)鐘脈沖頻率不能大于 2MHZ ,否則需分頻后才能送到 CLK 端。</p><p>  (4):8255芯片管腳介紹及功能如下:</p><p>  圖4.4 8255芯片管腳</p><p> ?、俨⑿休斎?輸出端口A

46、、B、C</p><p>  8255A 芯片具有 24 個(gè)可編程輸入輸出引腳,分成 3 個(gè) 8 位端口,其中:端口 A 包含一個(gè) 8 位數(shù)據(jù)輸出鎖存 / 緩沖寄存器和一個(gè) 8 位數(shù)據(jù)輸入鎖存器;端口 B 包含一個(gè) 8 位數(shù)據(jù)輸入 / 輸出、鎖存 / 緩沖寄存器和一個(gè) 8 位數(shù)據(jù)輸入緩沖寄存器;端口 C 包含一個(gè)輸出鎖存 / 緩沖寄存器和一個(gè)輸入緩沖寄存器。必要時(shí)端口 C 可分成兩個(gè) 4 位端口,分別與端口 A

47、與端口 B 配合工作,通常將端口 A 和端口 B 定義為輸入 / 輸出的數(shù)據(jù)端口,而端口C可作為狀態(tài)或控制信息的傳送端口。</p><p>  ②A組和B組控制部件</p><p>  端口 A 與端口 C 的高 4 位 (PC 7 ~ PC 4) 構(gòu)成 A 組,由 A 組控制部件實(shí)現(xiàn)控制功能,端口 B 與端口 C 的低 4 位( PC 3 ~ PC 0 )構(gòu)成 B 組,由 B 組控制部件

48、實(shí)現(xiàn)控制功能。它們各有一個(gè)控制單元,可接收來自讀 / 寫控制部件的命令和 CPU 通過數(shù)據(jù)總線(D7~D0)送來的控制字,并根據(jù)它們來定義各個(gè)端口的操作方式。</p><p><b> ?、蹟?shù)據(jù)總線緩沖器</b></p><p>  這是一個(gè)三態(tài)雙向 8 位數(shù)據(jù)緩沖器,它是 8255A 與 8086CPU 之間的數(shù)據(jù)接口, CPU輸入輸出的數(shù)據(jù),CPU輸出的控制字以及

49、外設(shè)的狀態(tài)信息都是通過這個(gè)緩沖器進(jìn)行傳送。</p><p><b> ?、茏x/寫控制部件</b></p><p>  這是 8255A 內(nèi)部完成讀 / 寫控制功能的部件,它與 CPU 的地址總線及有關(guān)的控制信號(hào)相連,接收 CPU 的控制命令,并根據(jù)它們向片內(nèi)各功能部件發(fā)出操作命令</p><p>  (5)74LS138譯碼器</p>

50、;<p>  74LS138是3-8線二進(jìn)制譯碼器,它有3個(gè)輸入端,8個(gè)輸出端,輸出低電平有效。該器件3個(gè)輸入端A、B、C接受二進(jìn)制碼,其輸出端Y0~Y7工8條譯碼輸出線。除此之外,還有3個(gè)使能控制端G、G2A、G2B,目的在于靈活應(yīng)用并組合各種電路。只有當(dāng)G=0,同時(shí)G2A +G2B=0時(shí),譯碼器工作,否則,譯碼器功能被禁止。</p><p><b>  4.2具體實(shí)現(xiàn)方法</b&

51、gt;</p><p>  4.2.1實(shí)現(xiàn)該聲音錄放系統(tǒng)功能</p><p>  實(shí)現(xiàn)該聲音錄放系統(tǒng)功能的程序可以分為以下四個(gè)部分:</p><p><b> ?。?)主程序</b></p><p>  主程序的主要任務(wù)是對(duì)8253、8255A進(jìn)行初始化,實(shí)現(xiàn)錄、放音的功能調(diào)用。</p><p>

52、 ?、?253初始化設(shè)置</p><p>  8253在程序中設(shè)置成方式0,計(jì)數(shù)200,定時(shí)0.2ms </p><p>  8253工作方式控制字:10000000B,即10H;選擇通道0,方式0,只讀寫的、低8位</p><p>  設(shè)8253輸入時(shí)鐘信號(hào)的頻率為 1MHZ</p><p>  計(jì)數(shù)初值=0.2 ms/0.001ms=20

53、0</p><p>  控制字端口地址為:81H</p><p>  計(jì)數(shù)器0端口地址為:80H</p><p>  ②8255A初始化設(shè)置</p><p>  8255A控制字:10010000B,即90H;方式0,A口輸入</p><p>  控制字端口地址為:85H</p><p><

54、;b>  A口地址為:84H</b></p><p> ?、壅{(diào)用錄、放音子程序</p><p>  首先DOS功能調(diào)用,顯示錄音提示信息,然后BIOS功能調(diào)用,讀鍵盤緩沖區(qū)字符,等待鍵盤輸入,若無鍵按下,繼續(xù)等待;有鍵按下,則調(diào)用錄音子程序,錄音12秒。清除鍵盤緩沖區(qū)后,再進(jìn)行放音子程序的調(diào)用。</p><p> ?。?)A/D錄放音子程序<

55、/p><p>  根據(jù)設(shè)計(jì)要求,ADC0809要以每秒5000的速率采集語音數(shù)據(jù),錄音12秒,因此共需采集5000×12=60000個(gè)數(shù)據(jù),計(jì)數(shù)器CX=60000。</p><p>  選擇IN0通道進(jìn)行數(shù)據(jù)采集(D2=0、D1=0、D0=0),尋址A/D轉(zhuǎn)換啟動(dòng)端口地址,CPU向IN0通道執(zhí)行一條輸出指令,啟動(dòng)一次A/D轉(zhuǎn)換。尋址EOC狀態(tài)端口地址,讀取EOC狀態(tài),測(cè)試轉(zhuǎn)換是否結(jié)束

56、,未完則繼續(xù)等待,轉(zhuǎn)換完成后,則尋址ADC0809轉(zhuǎn)換結(jié)果端口,CPU執(zhí)行一條輸入指令,取A/D轉(zhuǎn)換結(jié)果。</p><p>  A/D轉(zhuǎn)換啟動(dòng)端口地址:8CH</p><p>  轉(zhuǎn)換結(jié)果端口地址:90H</p><p>  EOC狀態(tài)端口地址:94H</p><p> ?。?)D/A放音子程序</p><p>  置

57、數(shù)據(jù)區(qū)首址至SI,計(jì)數(shù)器CX=60000。從數(shù)據(jù)區(qū)取數(shù)據(jù),尋址DAC端口地址,CPU執(zhí)行一條輸出指令,進(jìn)行D/A轉(zhuǎn)換。</p><p>  DAC端口地址為:88H</p><p><b> ?。?)延時(shí)子程序</b></p><p>  DELAY是延時(shí)0.2 ms的子程序</p><p>  將8253計(jì)數(shù)器0的OU

58、T0輸入到8255A端口,測(cè)試PA0是否為1,若不為1,則表示8253未計(jì)數(shù)完,繼續(xù)查詢,如果為1,則表示8253計(jì)數(shù)完成,定時(shí)時(shí)間到。</p><p><b>  參考流程圖如下:</b></p><p>  圖4.5 主程序流程圖</p><p>  圖4.6 錄音子程序流程圖</p><p>  圖4.7 放音子程

59、序流程圖</p><p>  圖4.8 延時(shí)子程序</p><p>  4.2.2 調(diào)試程序</p><p><b>  ASM程序:</b></p><p>  data segment</p><p>  ioportequ 01400h-0280h</p><p>

60、;  luportequ ioport+29ah ;錄音口地址</p><p>  fangportequ ioport+290h ;放音口地址</p><p>  io8253aequ ioport+283h</p><p>  io8253bequ ioport+280h</p>&l

61、t;p>  io8255cequ ioport+28bh</p><p>  io8255dequ ioport+288h</p><p>  data_qu db 60000 dup(?) ;錄音數(shù)據(jù)存放數(shù)據(jù)區(qū)</p><p>  news_1 db 'Press any key to r

62、ecord:',24h ;錄音提示</p><p>  news_2 db 0dh,0ah,' Playing:',24h ;放音提示</p><p>  data ends</p><p>  code segment</p><p>  assume cs:code

63、,ds:data,es:data</p><p>  begin:mov ax,data ;初始化</p><p>  mov ds,ax</p><p><b>  mov es,ax</b></p><p>  mov dx,offset news_1

64、 ;顯示錄音提示</p><p><b>  mov ah,9</b></p><p><b>  int 21h</b></p><p>  test_1: mov ah,1 ;等待鍵盤輸入</p>&

65、lt;p><b>  int 16h</b></p><p>  jz test_1 ;若不是則循環(huán)等待</p><p>  call lu ;調(diào)用錄音子程序</p><p>  mov dx,offset n

66、ews_2 ;顯示放音提示</p><p><b>  mov ah,9</b></p><p><b>  int 21h</b></p><p>  fy: call fang ;調(diào)用放音子程序</p>

67、<p>  mov ax,0c07h</p><p><b>  int 21h</b></p><p>  cmp al,20h</p><p><b>  jz fy</b></p><p>  mov ah,4ch ;返回

68、DOS</p><p><b>  int 21h</b></p><p>  lu proc near ;錄音子程序</p><p>  mov di,offset data_qu ;置數(shù)據(jù)區(qū)首地址為DI</p><p>

69、  mov cx,60000 ;錄60000個(gè)數(shù)據(jù)</p><p><b>  cld</b></p><p>  xunhuan:mov dx,luport ;啟動(dòng)A/D</p><p><b>  out dx,al&l

70、t;/b></p><p>  call delay ;延時(shí)</p><p>  in al,dx ;從A/D讀數(shù)據(jù)到AL</p><p>  stosb ;存入數(shù)據(jù)區(qū)

71、,使DI加1</p><p>  loop xunhuan ;循環(huán)</p><p>  ret ;子程序返回</p><p><b>  lu endp</b></p><p>  fang

72、proc near ;放音子程序</p><p>  mov cx,60000 ;放60000個(gè)數(shù)據(jù)</p><p>  mov si,offset data_qu ;置數(shù)據(jù)區(qū)首地址為SI</p><p><

73、;b>  cld</b></p><p>  fang_yin:mov dx,fangport</p><p>  lodsb ;從數(shù)據(jù)區(qū)取出數(shù)據(jù)</p><p>  sub al,30h</p><p>  out dx,al

74、 ;放音</p><p>  call delay ;延時(shí)</p><p>  loop fang_yin ;循環(huán)</p><p>  ret ;子程序返

75、回</p><p><b>  fang endp</b></p><p>  delay procnear ;延時(shí)子程序</p><p><b>  pushdx</b></p><p>  moval,10h

76、 ;設(shè)8253通道0工作方式0</p><p>  movdx,io8253a</p><p><b>  outdx,al</b></p><p>  moval,200 ;寫入計(jì)數(shù)器初值200</p><p>  movdx,io8

77、253b</p><p><b>  outdx,al</b></p><p>  movdx,io8255c ;設(shè)8255的A口為輸入</p><p>  moval,9bh</p><p><b>  outdx,al</b></p>

78、;<p>  movdx,io8255d ;從8255的A口輸入</p><p>  delay1:inal,dx</p><p>  andal,1 ;判斷PA0是否為1</p><p>  jzdelay1

79、 ;若PA0不為1,轉(zhuǎn)de_lay</p><p><b>  popdx</b></p><p>  ret ;子程序返回</p><p>  delay endp</p><p><b>  code en

80、ds</b></p><p><b>  end begin</b></p><p><b>  CPP程序:</b></p><p>  #include<stdio.h></p><p>  #include<conio.h></p><p

81、>  #include "ApiEx.h"</p><p>  #pragma comment(lib,"ApiEx.lib")</p><p>  void lu();/*錄音函數(shù)*/</p><p>  void fang();/*放音函數(shù)*/</p><p>  void de_lay

82、();/*延時(shí)函數(shù)*/</p><p><b>  int i;</b></p><p><b>  BYTE *ii;</b></p><p>  void main()</p><p><b>  {</b></p><p>  printf(&q

83、uot;--------------------EXP22_13_LYJ---------------------\n");</p><p>  printf("1. MIC === J2\n");</p><p>  printf("2. I/O (298-29F) === 0809 (CS)\n");</p><p&

84、gt;  printf("3. (JUMP 2 TO 3) of JP2\n");</p><p>  printf("4. SPEAKER === J1\n");</p><p>  printf("5. I/O (290-297) === 0832 (CS)\n");</p><p>  printf(

85、"6. 8253 (CLK0) === (1MHz) or (2MHz)\n");</p><p>  printf("7. TPC (+5V) === 8253 (GATE0)\n");</p><p>  printf("8. 8253 (OUT0) === 8255 (PA0)\n");</p><p&g

86、t;  printf("9. I/O (280-287) === 8253 (CS)\n");</p><p>  printf("10. I/O (288-28F) === 8255 (CS)\n");</p><p>  printf("Press any key to begin!\n\n");</p><

87、;p><b>  getch();</b></p><p>  if(!Startup())/*打開設(shè)備*/</p><p><b>  {</b></p><p>  printf("ERROR: Open Device Error!\n");</p><p><

88、;b>  return;</b></p><p><b>  }</b></p><p>  ii = (BYTE *)malloc(60000);/*分配空間用于存放錄音數(shù)據(jù)*/</p><p><b>  if(!ii)</b></p><p><b>  {&l

89、t;/b></p><p>  printf("No memory!\7");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>  PortWriteByte(0x28b,0x9b);/*設(shè)8255A口為輸入

90、方式*/</p><p>  PortWriteByte(0x283,0x10);/*初始化8253通道0為方式0*/</p><p>  printf("Press any key to record!\n");/*錄音提示*/</p><p><b>  getch();</b></p><p&

91、gt;  printf("Playing record!\n");</p><p>  lu();/*按任意鍵后開始錄音*/</p><p>  printf("Press any key to playing!ESC is exit!\n");/*放音提示*/</p><p>  while(getch() != 0

92、x1b)</p><p><b>  {</b></p><p>  fang();/*按任意鍵后開始放音*/</p><p>  printf("Playing end!\n");</p><p><b>  }</b></p><p>  Clea

93、nup();/*關(guān)閉設(shè)備*/</p><p><b>  }</b></p><p><b>  void lu()</b></p><p><b>  {</b></p><p>  BYTE data;</p><p>  for(i=0;i&l

94、t;60000;i++)/*啟動(dòng)A/D,采集60000個(gè)數(shù)據(jù)放在ii中*/</p><p><b>  {</b></p><p>  PortWriteByte(0x29a,0);</p><p><b>  de_lay();</b></p><p>  PortReadByte(0x29a,

95、&data);</p><p>  *(ii+i) = data;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void fang()</p><p><b>  {</b></p&g

96、t;<p>  BYTE data;</p><p>  for(i=0;i<60000;i++)/*將ii中的60000個(gè)從D/A輸出*/</p><p><b>  {</b></p><p>  data = *(ii+i);</p><p>  PortWriteByte(0x290,dat

97、a);</p><p><b>  de_lay();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void de_lay()</p><p><b>  {</b>&

98、lt;/p><p>  BYTE data;</p><p>  PortWriteByte(0x280,200);/*送計(jì)數(shù)器初值200*/</p><p><b>  do{</b></p><p>  PortReadByte(0x288,&data);</p><p>  }whil

99、e(!data&0x01);}</p><p>  /*查詢8255的PA0是否為高電平,若是則表明定時(shí)時(shí)間到*/</p><p><b>  運(yùn)行結(jié)果:</b></p><p>  運(yùn)行程序,打開開關(guān)K0或按下鍵盤上任一鍵,顯示“Record......”開始錄音,錄音結(jié)束后自動(dòng)播放,顯示“Play……”。播放過程,可以用K2控制停止

100、,K3控制重放;幅度和放音增益由開關(guān)(K4、 K5、K6)指定。并且可以實(shí)現(xiàn)在8×8 雙色點(diǎn)陣顯示器上顯示錄音和放音的粗略波形,紅色為放音,綠色為錄音。</p><p><b>  5.分析與總結(jié)</b></p><p>  本實(shí)驗(yàn)從硬件上講共有四個(gè)工作芯片,0809和0832負(fù)責(zé)信號(hào)數(shù)模模數(shù)轉(zhuǎn)換,8253是定時(shí)用的,8255則是讀取開關(guān)狀態(tài),從而決定工作狀

101、態(tài)的,從軟件上講,共有錄音和放音兩個(gè)主要子程序,這兩個(gè)程序每執(zhí)行一次調(diào)用一次顯示程序,顯示聲信號(hào)的波形。通過綜合設(shè)計(jì)實(shí)驗(yàn),我們鞏固了很多器件的使用方法,進(jìn)一步熟悉了試驗(yàn)箱的硬件結(jié)構(gòu)和匯編的調(diào)試方法。</p><p>  在本實(shí)驗(yàn)中, 充分利用學(xué)過的匯編語言程序設(shè)計(jì)能力, 在了解了數(shù)字錄音技術(shù)的基本原理后, 通過對(duì) A/D 轉(zhuǎn)換器與 D/A 轉(zhuǎn)換器的使用,以及利用 8253 和 8255 芯片實(shí)現(xiàn)延時(shí)功能,成功 完

102、成了數(shù)字錄音機(jī)的設(shè)計(jì)。 測(cè)試實(shí)驗(yàn)結(jié)果時(shí), 成功實(shí)現(xiàn)了 12s 的錄音及放音, 達(dá)到設(shè)計(jì)要求。 在本次數(shù)字錄音機(jī)設(shè)計(jì)中,實(shí)現(xiàn)功能有 12s 錄音功能、放音功能、重復(fù)放音功能。 課程設(shè)計(jì)使我們了解到數(shù)字錄音技術(shù)的基本原理,進(jìn)一步掌握A/D轉(zhuǎn)換器和D/A轉(zhuǎn)換器的使用方法,并鞏固和加深了匯編語言程序設(shè)計(jì)的能力。</p><p><b>  參考文獻(xiàn)</b></p><p> 

103、 [1] 楊素行.《微型計(jì)算機(jī)系統(tǒng)原理及應(yīng)用》,北京,清華大學(xué)出版社,2004年</p><p>  [2] 劉樹中.孫書膺,王春平.單片機(jī)和液晶顯示驅(qū)動(dòng)器串行接口的實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007</p><p>  [3] 李廣弟.單片機(jī)基礎(chǔ)[M]。北京:北京航天航空大學(xué)出版社,2001</p><p>  [4] 楊振江.智能儀器與數(shù)據(jù)采集系統(tǒng)的新器件及應(yīng)用

104、[M]。西安:西安電子科技大學(xué)出版社,2001</p><p>  [5] 彭介華.電子技術(shù)課程設(shè)計(jì)指導(dǎo)[J].北京:高等教育出版社,1997.</p><p>  [6]葛紉秋.實(shí)用微機(jī)接口技術(shù).高等教育出版社.2007</p><p>  [7]何超.微型計(jì)算機(jī)原理及應(yīng)用.中國水利水電出版社.2007</p><p>  [8]田艾平.微

105、型計(jì)算機(jī)技術(shù).清華大學(xué)出版社.2005</p><p>  [9]鄭嵐,王洪海.微機(jī)原理與接口技術(shù).北京理工大學(xué)出版社.2012</p><p><b>  致謝</b></p><p>  這次微機(jī)實(shí)驗(yàn)課程設(shè)計(jì),使我對(duì)微機(jī)軟硬件結(jié)合有了進(jìn)一步的了解。原來并不太清楚是什么意思,一直都很模糊,聽課本也是很迷茫;而之前的那些單元實(shí)驗(yàn),也沒有都做好。

106、之前做的實(shí)驗(yàn),由于大部分是驗(yàn)證性的,所以就很被動(dòng)地去做,甚至并沒有想為什么要那樣連電路,內(nèi)部的代碼更沒有認(rèn)真看。這次課程設(shè)計(jì),因?yàn)橐约喝ピO(shè)計(jì)整個(gè)過程,所以就不得不去了解學(xué)習(xí)自己原來并沒有真正弄懂的東西。比如一些程序的代碼的意思,匯編語言的邏輯,比如一些芯片的用途。使我對(duì)前面所做的實(shí)驗(yàn)有了原理性的了解,回頭看一些實(shí)驗(yàn),也知其然其所以然了。同時(shí)對(duì)課本上講的一些內(nèi)容,不再像以前那樣覺得抽象,通過這次設(shè)計(jì),有了具體的理解。</p>

107、<p>  通過這次課程設(shè)計(jì),我對(duì)各個(gè)芯片的功能有了更深刻的認(rèn)識(shí)和體會(huì),平時(shí)上課的理論知識(shí)只是停留在理論的層面,只有通過了這樣的試驗(yàn)才能更好的體會(huì)到,做到了理論和實(shí)際的相結(jié)合,使理論知識(shí)真正運(yùn)用到了實(shí)踐中去。</p><p>  這次實(shí)驗(yàn)使我熟悉并掌握了匯編如何實(shí)現(xiàn)一些功能,一些中斷的調(diào)用。在以后的學(xué)習(xí)中我會(huì)從多方面繼續(xù)結(jié)合硬件學(xué)習(xí)匯編語言。</p><p>  上面是關(guān)于課

108、設(shè)內(nèi)容的總結(jié),除此之外,在這課設(shè)時(shí)間里我既有快樂,也有郁悶??鞓返氖峭ㄟ^親身實(shí)踐學(xué)到了更多的知識(shí);郁悶的是,知道了并不等于會(huì)做。理論只能在一定程度上指導(dǎo)實(shí)踐,還需要實(shí)踐來進(jìn)一步完善理論。</p><p>  通過這次課程設(shè)計(jì),使我深刻認(rèn)識(shí)了匯編語言。以前在課上聽老師講的時(shí)候思路很清晰,覺得自己都會(huì),不知怎么的,自己做起來非常的困難,沒辦法,去圖書館找了兩三本書,回來有仔細(xì)看了起來,還好,有的知識(shí)他們相互補(bǔ)充,讓我

109、稍有眉目。后又和同學(xué)探討探討。這才有了思路。通過這次設(shè)計(jì)也讓我深刻理解了這句古訓(xùn):“紙上得來終覺淺,絕知此事要躬行”。</p><p><b>  附 錄</b></p><p><b>  附1:元件清單</b></p><p>  1:ADC0809芯片 一塊.</p><p>  2:DA

110、C0832芯片 一塊.</p><p>  3:8253芯片 一塊.</p><p>  4:8255芯片 一塊</p><p>  5:通用微機(jī)接口實(shí)驗(yàn)系統(tǒng)實(shí)驗(yàn)箱 一個(gè).</p><p><b>  6:導(dǎo)線若干.</b></p><p>  7:電腦 一臺(tái).

111、</p><p><b>  附2:程序清單</b></p><p>  data segment</p><p>  ioportequ 01400h-0280h</p><p>  luportequ ioport+29ah ;錄音口地址</p><p>  f

112、angportequ ioport+290h ;放音口地址</p><p>  io8253aequ ioport+283h</p><p>  io8253bequ ioport+280h</p><p>  io8255cequ ioport+28bh</p><p>  io8255dequ

113、ioport+288h</p><p>  data_qu db 60000 dup(?) ;錄音數(shù)據(jù)存放數(shù)據(jù)區(qū)</p><p>  news_1 db 'Press any key to record:',24h ;錄音提示</p><p>  news_2 db 0dh,0ah

114、,' Playing:',24h ;放音提示</p><p>  data ends</p><p>  code segment</p><p>  assume cs:code,ds:data,es:data</p><p>  begin:mov ax,data

115、 ;初始化</p><p>  mov ds,ax</p><p><b>  mov es,ax</b></p><p>  mov dx,offset news_1 ;顯示錄音提示</p><p><b>  mov ah,9&l

116、t;/b></p><p><b>  int 21h</b></p><p>  test_1: mov ah,1 ;等待鍵盤輸入</p><p><b>  int 16h</b></p><p>  jz test_

117、1 ;若不是則循環(huán)等待</p><p>  call lu ;調(diào)用錄音子程序</p><p>  mov dx,offset news_2 ;顯示放音提示</p><p><b>  mov

118、ah,9</b></p><p><b>  int 21h</b></p><p>  fy: call fang ;調(diào)用放音子程序</p><p>  mov ax,0c07h</p><p><b>  int 21h</

119、b></p><p>  cmp al,20h</p><p><b>  jz fy</b></p><p>  mov ah,4ch ;返回DOS</p><p><b>  int 21h</b></p><p

120、>  lu proc near ;錄音子程序</p><p>  mov di,offset data_qu ;置數(shù)據(jù)區(qū)首地址為DI</p><p>  mov cx,60000 ;錄60000個(gè)數(shù)據(jù)</p><p

121、><b>  cld</b></p><p>  xunhuan:mov dx,luport ;啟動(dòng)A/D</p><p><b>  out dx,al</b></p><p>  call delay

122、 ;延時(shí)</p><p>  in al,dx ;從A/D讀數(shù)據(jù)到AL</p><p>  stosb ;存入數(shù)據(jù)區(qū),使DI加1</p><p>  loop xunhuan

溫馨提示

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

評(píng)論

0/150

提交評(píng)論