微機(jī)原理課程設(shè)計(jì)----信號(hào)發(fā)生器的設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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><b>  信號(hào)發(fā)生器的設(shè)計(jì)</b></p><p>  第一章 課程設(shè)計(jì)的目的意義</p><p>  1 課程設(shè)計(jì)的目的</p><p>  微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與綜合實(shí)驗(yàn)是對(duì)所學(xué)課程內(nèi)容全面、系統(tǒng)的總結(jié)、鞏固和提高的一項(xiàng)課

2、程實(shí)踐活動(dòng)。根據(jù)匯編語(yǔ)言的特點(diǎn),選擇相應(yīng)的題目,在老師的指導(dǎo)下,由學(xué)生獨(dú)立完成。課程設(shè)計(jì)要求同學(xué)們熟悉匯編語(yǔ)言的編程,BIOS中斷調(diào)用、系統(tǒng)功能調(diào)用、磁盤(pán)數(shù)據(jù)的查詢、存取等相關(guān)知識(shí)。通過(guò)課程設(shè)計(jì),一方面提高運(yùn)用匯編語(yǔ)言編程解決實(shí)際問(wèn)題的能力,另一方面使同學(xué)們更深入的了解計(jì)算機(jī)系統(tǒng)內(nèi)部的有關(guān)知識(shí),為以后的學(xué)習(xí)和系統(tǒng)開(kāi)發(fā)奠定良好的基礎(chǔ)。</p><p>  1.2 設(shè)計(jì)的意義</p><p>

3、;  通過(guò)課程設(shè)計(jì)要進(jìn)一步鍛煉同學(xué)們?cè)谖⑿陀?jì)算機(jī)應(yīng)用方面的實(shí)際工作能力。計(jì)算機(jī)科學(xué)在應(yīng)用上得到飛速發(fā)展,因此,學(xué)習(xí)這方面的知識(shí)必須緊密聯(lián)系實(shí)際:掌握這方面的知識(shí)更要強(qiáng)調(diào)解決實(shí)際問(wèn)題的能力。同學(xué)們要著重學(xué)會(huì)面對(duì)一個(gè)實(shí)際問(wèn)題,如何去自己收集資料,如何自己去學(xué)習(xí)新的知識(shí),如何自己去制定解決問(wèn)題的方案并通過(guò)實(shí)踐不斷地去分析和解決前進(jìn)道路上的一切問(wèn)題,最終到達(dá)勝利的彼岸。</p><p><b>  第二章 設(shè)

4、計(jì)任務(wù)</b></p><p>  1 課程設(shè)計(jì)的題目</p><p>  信號(hào)發(fā)生器軟硬件設(shè)計(jì):</p><p>  以8088CPU為核心設(shè)計(jì)一個(gè)信號(hào)發(fā)生器,系統(tǒng)可產(chǎn)生正弦波和三角波信號(hào)。</p><p>  2.2 設(shè)計(jì)的要求</p><p>  該設(shè)計(jì)由一個(gè)人選做并獨(dú)自完成,要求畫(huà)出電路原理圖,

5、說(shuō)明工作原理,編寫(xiě)程序及程序流程圖。</p><p>  2.3 設(shè)計(jì)的時(shí)間、地點(diǎn)</p><p>  時(shí)間:2006年7月3日-7月14日地點(diǎn):11112</p><p>  第三章 總體設(shè)計(jì)方案</p><p>  3.1 對(duì)信號(hào)發(fā)生器的認(rèn)識(shí)</p><p>  在我們?nèi)粘I钪?,以及一些科學(xué)研究中,鋸齒波

6、和正弦波、矩形波、三角波是常用的基本測(cè)試信號(hào)。此外,如在示波器、電視機(jī)等儀器中,為了使電子按照一定規(guī)律運(yùn)動(dòng),以利用熒光屏顯示圖像,常用到鋸齒波產(chǎn)生器作為時(shí)基電路。例如,要在示波器熒光屏上不失真地觀察到被測(cè)信號(hào)波形,要求在水平偏轉(zhuǎn)板加上隨時(shí)間作線性變化的電壓——鋸齒波電壓,使電子束沿水平方向勻速搜索熒光屏。而電視機(jī)中顯像管熒光屏上的光點(diǎn),是靠磁場(chǎng)變化進(jìn)行偏轉(zhuǎn)的,所以需要要用鋸齒波電流來(lái)控制,對(duì)于三角波,方波同樣有這不可忽視的作用而函數(shù)發(fā)生

7、器是指一般能自動(dòng)產(chǎn)生方波 正弦波 三角波以及鋸齒波階梯波等電壓波形的電路或儀器。因此信號(hào)發(fā)生器是我們?cè)趯W(xué)習(xí),科學(xué)研究等方面不可缺少的工具。此外,信號(hào)發(fā)生器在教學(xué)、試驗(yàn)、測(cè)控等各個(gè)領(lǐng)域有十分廣泛的應(yīng)用,其輸出信號(hào)的頻率范圍覆蓋了各個(gè)頻段,從甚低頻到甚高頻,操作方式也從手動(dòng)旋鈕到程控,產(chǎn)生的波形從傳統(tǒng)的正(余)弦波和脈沖波形,發(fā)展到現(xiàn)在能產(chǎn)生各種任意波形。以前的信號(hào)發(fā)生器往往獨(dú)占一個(gè)機(jī)箱,而現(xiàn)在的一些應(yīng)用中,它只是一塊插在計(jì)算機(jī)中的擴(kuò)展卡,

8、還有一些信號(hào)發(fā)生器設(shè)計(jì)成一個(gè)獨(dú)立的小模塊,通過(guò)RS-232C或RS-422,</p><p><b>  總體設(shè)計(jì)思路</b></p><p>  該設(shè)計(jì)包括硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分。</p><p>  1.硬件是基于PC機(jī)的設(shè)計(jì),設(shè)計(jì)要求以8088CPU為核心,通常采用8284時(shí)鐘產(chǎn)生器為CPU提供時(shí)鐘信號(hào)。由于計(jì)算機(jī)產(chǎn)生的是數(shù)字信號(hào),而信

9、號(hào)發(fā)生器產(chǎn)生的是模擬量,所以必須把數(shù)字量轉(zhuǎn)化成模擬量,因此設(shè)計(jì)中用到的一個(gè)主要硬件便是D/A轉(zhuǎn)換器。信號(hào)發(fā)生器產(chǎn)生的信號(hào)又要經(jīng)過(guò)示波器顯示才能讓我們知道產(chǎn)生的是什么波形,所以經(jīng)D/A轉(zhuǎn)換器轉(zhuǎn)換后的電量要經(jīng)運(yùn)算放大電路放大后才能在示波器上顯示連續(xù)的波形,因此運(yùn)算放大電路便成為連接D/A轉(zhuǎn)換器和示波器的橋梁。D/A轉(zhuǎn)換器的端口地址由片選端CS決定,因此,還需要譯碼器和一些邏輯門(mén)將D/A轉(zhuǎn)換器的片選段和8088CPU連接起來(lái)。</p&g

10、t;<p>  至于PC機(jī)何時(shí)要它產(chǎn)生三角波,何時(shí)產(chǎn)生正弦波,何時(shí)退出,這就屬于軟件方面的設(shè)計(jì)了,通過(guò)編程產(chǎn)生三角波和正弦波,并控制波形的幅值和頻率。</p><p>  三角波要分兩段來(lái)產(chǎn)生,但因它的上升斜坡和下降斜坡都是線性關(guān)系,所以只要由數(shù)字量的增減來(lái)控制就可以了,產(chǎn)生上升斜坡時(shí)讓輸出值從零開(kāi)始逐漸遞增,其上升的最大值是從鍵盤(pán)輸入的幅值,其頻率是由輸出點(diǎn)之間的延時(shí)來(lái)控制的;相反,產(chǎn)生下降斜坡時(shí)

11、,讓輸出值從最大幅值逐漸遞減到零。</p><p>  而正弦波是三角函數(shù)關(guān)系,通??梢杂靡韵聝煞N方法產(chǎn)生:(1) 查表法:該方法的優(yōu)點(diǎn)是速度快,但在精度高的情況下要求的存儲(chǔ)器容量也要增大。此種方法應(yīng)用在對(duì)精度要求不高的場(chǎng)合。(2) 泰勒級(jí)數(shù)展開(kāi)法:在某些時(shí)候這是一種比查表法更為有效的方法。與查表法相比,這種方法需要的存儲(chǔ)單元很少,而且精度高。其泰勒級(jí)數(shù)展開(kāi)式如下:</p><p>  s

12、in(x)=x(1-(1/6)*x^2*(1-(1/20)*x^2*(1-(1/42)*x^2*(1-(1/72)*x^2))))</p><p>  由于時(shí)間的原因,本實(shí)驗(yàn)中采用查表法,造一張正弦數(shù)字量表,即查函數(shù)表得到的值轉(zhuǎn)換成十六進(jìn)制數(shù)填表。D/A轉(zhuǎn)換取值范圍為一個(gè)周期,采樣點(diǎn)越多,精度越高,本實(shí)驗(yàn)中采樣點(diǎn)為256點(diǎn)/周期。正弦數(shù)字量表中的值為參考值,對(duì)于不同幅值的正弦波可以通過(guò)把表中的每個(gè)值乘以相同的倍數(shù)

13、得到,其頻率由改變輸出點(diǎn)之間的延時(shí)來(lái)實(shí)現(xiàn)。</p><p><b>  3.原理框圖</b></p><p>  信號(hào)發(fā)生器的原理框圖如圖3.1所示</p><p>  圖3.1 信號(hào)發(fā)生器原理框圖</p><p>  3.3 總體設(shè)計(jì)流程圖</p><p>  總體設(shè)計(jì)流程圖如圖3.2所示&

14、lt;/p><p><b>  關(guān)于流程圖的說(shuō)明:</b></p><p>  程序從初始化開(kāi)始,首先讓指針指向提示信息一,即在屏幕上顯示:</p><p>  PLEASE ENTER 1 TO FORM SJB</p><p>  PLEASE ENTER 2 TO FORM ZXB</p><p&g

15、t;  PLEASE ENTER 3 TO EXIT!</p><p>  當(dāng)有鍵按下后,如果鍵是1,則轉(zhuǎn)向執(zhí)行產(chǎn)生三角波的程序;如果鍵不是1,則看鍵是否為2。如果鍵是2,則轉(zhuǎn)向執(zhí)行產(chǎn)生正弦波的程序;如果鍵也不是2,則看是否為3。如果是3,則退出;如果也不是3,則讓指針指向信息2,即顯示信息提示所輸入的鍵為無(wú)效鍵,并回到顯示提示信息1的地方,重新執(zhí)行上述過(guò)程。</p><p>  產(chǎn)生三角

16、波的過(guò)程:首先調(diào)用AMPLITUDE子程序提示輸入幅值,并把值轉(zhuǎn)換為二進(jìn)制值,然后調(diào)用CHANGE子程序判斷輸入的值是否為規(guī)定范圍內(nèi)的值,并把滿足條件的值轉(zhuǎn)換為十六進(jìn)制的值;接下來(lái)提示輸入頻率的過(guò)程與輸入幅值的過(guò)程類似。在</p><p>  圖 3.2 總體設(shè)計(jì)流程圖</p><p>  指針指端口地址后,將AL的值從零開(kāi)始依次增加并從端口輸出,各輸出點(diǎn)之間的延時(shí)便實(shí)現(xiàn)了對(duì)頻率的控制,

17、這是產(chǎn)生上升斜坡的過(guò)程。如果還沒(méi)到最大幅值,則循環(huán)產(chǎn)生上升斜坡的過(guò)程;當(dāng)AL等于最大幅值時(shí),程序往下執(zhí)行產(chǎn)生下降斜坡。產(chǎn)生下降斜坡的過(guò)程與上升斜坡類似,只是讓AL從最大值依次遞減并從端口輸出,如果AL </p><p>  不等于零,則循環(huán)產(chǎn)生下降斜坡,如果AL等于零,則返回到產(chǎn)生上升斜坡處循環(huán),直到有鍵按下才結(jié)束。</p><p>  產(chǎn)生正弦波的過(guò)程:開(kāi)始提示要求輸入幅值和頻率的過(guò)程和

18、產(chǎn)生三角波的相同,這里就不再贅述了。接著是查表法產(chǎn)生正弦波,讓BX指表首址,AL清零,取采樣點(diǎn)數(shù)256作為計(jì)數(shù)初值,通過(guò)XLAT指令將BX+AL的值送給AL,這就是查表轉(zhuǎn)換的過(guò)程,由于表中給出的是固定的幅值,只要在表中各值得基礎(chǔ)上乘以相應(yīng)的倍數(shù),便能得到需要的幅值的波形,計(jì)數(shù)小于256時(shí),則在一個(gè)周期內(nèi)循環(huán)查表,計(jì)數(shù)等于256次后,則從表首重新開(kāi)始查表產(chǎn)生正弦波,直到有鍵按下才結(jié)束。</p><p><b&

19、gt;  第四章 硬件設(shè)計(jì)</b></p><p>  1 選用的芯片及其工作原理</p><p>  4.1.1 選用的芯片</p><p>  D/A轉(zhuǎn)換器是把數(shù)字量變換成模擬量的線性電路器件,一做成集成芯片。由于實(shí)現(xiàn)這種轉(zhuǎn)換的原理和電路結(jié)構(gòu)及工藝技術(shù)有所不同,因而出現(xiàn)上百種D/A轉(zhuǎn)換器,它們?cè)谵D(zhuǎn)換速度、轉(zhuǎn)換精度、分辨率以及使用價(jià)值上都具有特色

20、。在分辨率上,14、16、18位的D\A轉(zhuǎn)換器已投入市場(chǎng),20位的D\A轉(zhuǎn)換器已研制成功。在速度上,16位幾百KHz,8位100MHz以上的產(chǎn)品都已成為商品。在各種各樣的D\A轉(zhuǎn)換芯片中我們選用8位的DAC0832芯片作為接口芯片。</p><p>  4.1.2 選用芯片的工作原理</p><p>  DAC0832是采用CMOS工藝制成的單片直流輸出型8位數(shù)/模轉(zhuǎn)換器。它由倒T型R-

21、2R電阻網(wǎng)絡(luò)、模擬開(kāi)關(guān)、運(yùn)算放大器和參考電壓VREF四大部分組成。輸出的模擬量與輸入的數(shù)字量成正比,這就實(shí)現(xiàn)了從數(shù)字量到模擬量的轉(zhuǎn)換。一個(gè)8位D/A轉(zhuǎn)換器有8個(gè)輸入端(其中每個(gè)輸入端是8位二進(jìn)制數(shù)的一位),有一個(gè)模擬輸出端。輸入可有256個(gè)不同的二進(jìn)制組態(tài),輸出為256個(gè)電壓之一,即輸出電壓不是整個(gè)電壓范圍內(nèi)任意值,而只能是256個(gè)可能值。</p><p>  DAC0832有單緩沖,雙緩沖,直通三種工作方式。在

22、應(yīng)用系統(tǒng)中只有一路D/A轉(zhuǎn)換,即不要求多個(gè)模擬輸出通道同時(shí)刷新模擬輸出時(shí),通常采用單緩沖方式。本實(shí)驗(yàn)便采用了此工作方式。</p><p>  DAC0832的內(nèi)部包括兩個(gè)8位寄存器、1個(gè)8位轉(zhuǎn)換器和相應(yīng)輔助電路。8位輸入寄存器為第一級(jí)鎖存器,它的鎖存信號(hào)為ILE。當(dāng)ILE為高電平、CS和WR1為低電平時(shí),LE1為1,這種情況下,輸入寄存器的輸出隨輸入而變化。此后,WR1由低變高時(shí),ILE變?yōu)榈碗娖?,此時(shí),數(shù)據(jù)被鎖

23、存到輸入寄存器中。8位DAC寄存器為第二級(jí)鎖存器,它的鎖存信號(hào)也稱為通道控制信號(hào)。WR2和XFEB同時(shí)為低電平時(shí),LE2為高電平,這時(shí),8位的DAC寄存器的輸出隨輸入而變化,此后,當(dāng)WR2由低變高時(shí),LE2變?yōu)榈碗娖?,將輸入寄存器的信息鎖存到DAC寄存器。正是由于DAC0832內(nèi)部的這兩種鎖存器,故它可直接掛接在總線上,在需要進(jìn)行D/A轉(zhuǎn)換時(shí),CPU通過(guò)片選信號(hào)和寫(xiě)控制信號(hào)將數(shù)據(jù)寫(xiě)至D/A變換器。</p><p>

24、;  4.2 電路圖及說(shuō)明</p><p>  4.2.1 電路圖</p><p>  設(shè)計(jì)的電路圖如圖 4.1所示</p><p>  圖 4.1 信號(hào)發(fā)生器電路原理圖</p><p>  4.2.2 關(guān)于電路圖的說(shuō)明</p><p>  8088CPU與8284的連接:</p><p

25、>  8088CPU由外界的時(shí)鐘發(fā)生器8284提供時(shí)鐘信號(hào),在時(shí)鐘控制下,一步步順序的執(zhí)行指令。8284是用石英晶體或某一TTL脈沖發(fā)生器作為振蕩源,除提供頻率恒定的時(shí)鐘信號(hào)外,還要對(duì)外界輸入的“準(zhǔn)備就緒”信號(hào)RDY和復(fù)位信號(hào)RES進(jìn)行同步。外界的RDY輸入8284,經(jīng)時(shí)鐘的下降沿同步后,輸出READY信號(hào)作為8088的“準(zhǔn)備就緒”信號(hào);同樣,外界的復(fù)位信號(hào)RES輸入8284,經(jīng)整形并由時(shí)鐘的下降沿同步后,輸出RESET信號(hào)作為8

26、088的復(fù)位信號(hào)。本設(shè)計(jì)中采用晶體振蕩器作為振蕩源,這時(shí),需將晶體振蕩器的兩端接到8284的X1和X2上,而F/C 接地。</p><p>  2.8088CPU與DAC0832的連接:</p><p>  (1)由于8088CPU只有8位數(shù)據(jù)總線,因此8088CPU每次訪問(wèn)存儲(chǔ)器或I/O端口只能讀/寫(xiě)一個(gè)字節(jié),通過(guò)8位的地址/數(shù)據(jù)復(fù)用線AD7-AD0傳送,A15-A8不是復(fù)用線,始終是地

27、址線,根據(jù)前面的說(shuō)明,DAC0832可直接掛接在總線上,因此應(yīng)將8088CPU的AD7-AD0與DAC0832的DI7-DI0相連。</p><p>  (2) 外設(shè)端口地址實(shí)際上是控制選通某一個(gè)外設(shè)或接口芯片的地址,一般通過(guò)譯碼電路及邏輯門(mén)電路來(lái)實(shí)現(xiàn)。在具體實(shí)現(xiàn)方案中,常見(jiàn)的是全譯碼和部分譯碼法,作為譯碼電路的輸入,PC機(jī)只使用16根中的低10根地址(A9-A0),全譯碼方法中A9-A0均參與地址譯碼,相應(yīng)的端

28、口地址是唯一的。對(duì)接口芯片,地址譯碼的某一輸出端一般直接連到芯片的片選端,以74LS138為譯碼器的全譯碼電路,欲使Y0輸出低電平,EN 2B 、EN 2A、EN1、C、B、A引腳分別為1、0、0、0、0、0,A9-A0的組合應(yīng)為1100000000。因而DAC0832的CS端接Y0時(shí),其端口地址被唯一確定為300H。</p><p>  (3) 8088CPU的PC/XT微機(jī)的控制信號(hào)AEN,經(jīng)反相后作為譯碼電

29、路的一個(gè)控制輸入信號(hào),這是任何I/O端口地址譯碼電路必須采用的,所以把AEN接到G1端。</p><p>  DAC0832與運(yùn)算放大電路的連接:</p><p>  通過(guò)D/A轉(zhuǎn)換芯片輸出的是電流,而我們需要的是模擬電壓,因此,要把D/A轉(zhuǎn)換芯片輸出的電流轉(zhuǎn)換成電壓,這就是在0832的輸出端接運(yùn)算放大電路的原因。如圖4.1所示,運(yùn)算放大電路A1的作用是把電流輸出轉(zhuǎn)換為電壓輸出,運(yùn)算放大電

30、路A2的作用是把運(yùn)算放大電路A1的單極性輸出轉(zhuǎn)變?yōu)殡p極性輸出。A2的反相輸入端經(jīng)電阻R1與參考電壓Vref相連,Vref經(jīng)電阻R1向A2提供一個(gè)電流I1,運(yùn)放A1的輸出Vout1經(jīng)電阻R3向A2提供一個(gè)電流I2.由于Vout1與Vout2的極性相反,所以I1,I2的方向相反,而運(yùn)放A2實(shí)際上是一個(gè)反向加法器,即:</p><p>  Vout=-((R2/R3)*Vout1+(R2/R1)*Vref)</p

31、><p>  因?yàn)镽1:R2:R3=2:2:1,則有Vout=-2Vout1-Vref。當(dāng)Vref=5V時(shí),Vout在-5到5V范圍內(nèi)變化。</p><p><b>  第五章 軟件設(shè)計(jì)</b></p><p>  1 程序的各功能模塊流程圖及其文字說(shuō)明</p><p>  1. 各個(gè)子程序的流程圖如下</p>

32、;<p>  程序中用到的子程序主要有DELAY子程序,CHANGE子程序,AMPLITUDE子程序,F(xiàn)REQUENCY子程序,其流程圖分別如圖5.1,5.2,5.3,5.4所示。</p><p><b>  關(guān)于流程圖的說(shuō)明</b></p><p>  (1) AMPLITUDE子程序是通過(guò)屏幕顯示提示信息輸入小于四位數(shù)的幅值,并把輸入的字符逐個(gè)轉(zhuǎn)換

33、為二進(jìn)制的代碼,結(jié)果暫存入BX中。該子程序的目的是為了排除數(shù)字以外的字符的干擾,如a,它不是數(shù)字,但其ASCII值為97,且在范圍內(nèi),經(jīng)過(guò)AMPLITUDE子程序轉(zhuǎn)換后就可知道它不是有效字符。</p><p>  (2) FREQUENCY子程序是通過(guò)屏幕顯示提示信息輸入頻率,其它的功能和AMPLITUDE子程序相同。</p><p>  (3) CHANGE子程序是把AMPLITUD

34、E或FREQUENCY子程序轉(zhuǎn)換后的二進(jìn)制數(shù)進(jìn)一步轉(zhuǎn)換成十六進(jìn)制數(shù),當(dāng)輸入值不為0-9的數(shù)字時(shí)顯示出錯(cuò)信息,并且指定輸入的數(shù)值以數(shù)字9作為結(jié)束,轉(zhuǎn)向執(zhí)行下面的語(yǔ)句。</p><p>  (4) DELAY子程序是用來(lái)控制輸出點(diǎn)之間的延時(shí)的,因?yàn)椴ㄐ蔚念l率是由改變輸出點(diǎn)之間的延時(shí)來(lái)實(shí)現(xiàn)的,所以DELAY子程序的延時(shí)的時(shí)間也是隨輸入的頻率而變化的。</p><p><b>  5.

35、2 源程序</b></p><p>  DATA SEGMENT</p><p>  TABLE DB 80H,83H,86H,89H,8DH,90H,93H,96H ;選取256個(gè)點(diǎn),定義</p><p>  DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH ;正弦表</p>

36、<p>  DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H</p><p>  DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H</p><p>  DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H </p><p>  DB 0EAH,0E

37、CH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H</p><p>  DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH</p><p>  DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH</p><p>  DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0F

38、EH,0FDH</p><p>  DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H</p><p>  DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH</p><p>  DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH </p><

39、;p>  DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H</p><p>  DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H</p><p>  DB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H</p><p>  DB 96H,93H,90H,8DH,8

40、9H,86H,83H,80H</p><p>  DB 80H,7CH,79H,78H,72H,6FH,6CH,69H</p><p>  DB 66H,63H,60H,5DH,5AH,57H,55H,51H</p><p>  DB 4EH,4CH,48H,45H,43H,40H,3DH,3AH</p><p>  DB 38H,35H,3

41、3H,30H,2EH,2BH,29H,27H</p><p>  DB 25H,22H,20H,1EH,1CH,1AH,18H,16H</p><p>  DB 15H,13H,11H,10H,0EH,0DH,0BH,0AH</p><p>  DB 09H,08H,07H,06H,05H,04H,03H,02H</p><p>  DB 0

42、2H,01H,00H,00H,00H,00H,00H,00H</p><p>  DB 00H,00H,00H,00H,00H,00H,01H,02H</p><p>  DB 02H,03H,04H,05H,06H,07H,08H,09H</p><p>  DB 0AH,0BH,0DH,0EH,10H,11H,13H,15H</p><p&g

43、t;  DB 16H,18H,1AH,1CH,1EH,20H,22H,25H</p><p>  DB 27H,29H,2BH,2EH,30H,33H,35H,38H</p><p>  DB 3AH,3DH,40H,43H,45H,48H,4CH,4EH</p><p>  DB 51H,55H,57H,5AH,5DH,60H,63H,66H</p>

44、<p>  DB 69H,6CH,6FH,72H,76H,79H,7CH,80H</p><p>  SEN1 DB 'PLEASE ENTER 1 TO FORM SJB',0DH,0AH</p><p>  DB 'PLEASE ENTER 2 TO FORM ZXB',0DH,0AH</p><p>  DB 

45、9;PLEASE ENTER 3 TO EXIT',0DH,0AH,'$'</p><p>  SEN2 DB 'YOU DID NOT ENTER THE RIGHT KEY,ENTER AGAIN!',0DH,0AH,'$'</p><p>  A DB 'INPUT AMPLITUDE VALUE :',0DH

46、,0AH,'$'</p><p>  RESULT1 DB 4 DUP(?)</p><p>  F DB 'INPUT FREQUENCY VALU:',0DH,0AH,'$'</p><p>  RESULT2 DB 4 DUP(?)</p><p>  WRONG DB 'S

47、ORRY! THIS VALUE IS OUT OF RANGE!',0DH,0AH,'$'</p><p><b>  DATA ENDS</b></p><p>  STACK SEGMENT</p><p>  STA DB 20 DUP(?)</p><p>  TOP EQU LENGT

48、H STA</p><p>  STACK ENDS</p><p>  CODE SEGMENT</p><p>  ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA</p><p>  AMPLITUDE PROC NEAR ;轉(zhuǎn)化為機(jī)器識(shí)別碼</p&g

49、t;<p>  LEA DX,A ;顯示提示信息輸入幅值 </p><p>  MOV AH,09H</p><p><b>  INT 21H</b></p><p><b>  MOV CX,3<

50、/b></p><p>  MOV BX,0 ;BX清零</p><p>  KEYIN:MOV AH,01H ;輸入十進(jìn)制數(shù)</p><p><b>  INT 21H</b></p><p>  

51、SUB AL,30H ;轉(zhuǎn)化為二進(jìn)制數(shù)</p><p>  JL EXIT ;若小于零,則退出</p><p>  CMP AL,09H ;是否大于9?</p><p>  JG EXIT

52、 ;是,退出</p><p>  ADD BX,AX ;AX與BX相加,結(jié)果存入BX</p><p>  LOOP KEYIN ;獲得下一個(gè)十進(jìn)制數(shù)</p><p>  RET

53、 </p><p>  EXIT: RET ;返回</p><p>  AMPLITUDE ENDP</p><p>  CHANGE PROC NEAR</p><p>  MOV CH,3

54、 ;設(shè)十進(jìn)制位數(shù)為計(jì)數(shù)初值</p><p>  ROTATE:MOV CL,4 ;設(shè)位循環(huán)制</p><p>  ROL BX,CL ;左右字節(jié)交換</p><p><b>  MOV AL,BL</b></p&g

55、t;<p>  AND AL,0FH ;屏蔽高4位</p><p>  ADD AL,30H ;轉(zhuǎn)變成ASCII碼</p><p>  CMP DL,3AH ; 〉9?</p><p>  J

56、G JOP ;是,轉(zhuǎn)JOP</p><p>  CMP DL,30H ;〈 0?</p><p>  JL JOP ;是,轉(zhuǎn)JOP</p><p>  MOV DL,AL

57、 ; 將結(jié)果存入DL</p><p><b>  DEC CH</b></p><p>  JNZ ROTATE ;計(jì)數(shù)不為零則循環(huán)</p><p>  MOV AH,08H</p><p><b>  INT 21H&l

58、t;/b></p><p>  CMP AL,'9'</p><p><b>  JE T</b></p><p>  T: RET ;返回</p><p>  JOP : CALL NEWLINE</p><

59、p>  LEA DX,WRONG ;顯示信息提示溢出</p><p>  MOV AH,09H</p><p><b>  INT 21H</b></p><p><b>  JMP QIT</b></p><p>  CHANGE ENDP&

60、lt;/p><p>  FREQUENCY PROC NEAR</p><p>  LEA DX,F ;顯示信息提示輸入頻率</p><p>  MOV AH,09H</p><p><b>  INT 21H</b></p><p><

61、b>  MOV CX,3</b></p><p>  MOV BX,0 ;BX清零 </p><p>  REPEAT:MOV AH,01H</p><p><b>  INT 21H</b></p>

62、<p>  SUB AL,30H</p><p><b>  JL EXIT1</b></p><p><b>  CMP AL,9</b></p><p><b>  JG EXIT1</b></p><p><b>  ADD BX,AX</b&g

63、t;</p><p>  LOOP REPEAT</p><p>  EXIT1: RET</p><p>  FREQUENCY ENDP</p><p>  NEWLINE PROC NEAR ;回車(chē)換行</p><p>  PUSH AX

64、 ;AX入棧</p><p><b>  PUSH DX</b></p><p>  MOV DL,0DH ;顯示回車(chē)符</p><p><b>  MOV AH,2</b></p><p><b

65、>  INT 21H</b></p><p>  MOV DL,0AH ;換行</p><p><b>  MOV AH,2</b></p><p><b>  INT 21H</b></p><p>  POP DX

66、 ;DX出棧</p><p><b>  POP AX</b></p><p><b>  RET</b></p><p>  NEWLINE ENDP</p><p>  DELAY PROC NEAR

67、 ;延時(shí)子程序</p><p>  MOV CL,[RESULT2] ;設(shè)輸入的頻率為計(jì)數(shù)初值</p><p>  WAT: LOOP WAT ;不為零,循環(huán)</p><p><b>  RET</b></p>

68、;<p>  DELAY ENDP</p><p>  START:MOV AX,DATA ;初始化DS</p><p><b>  MOV DS,AX</b></p><p>  MOV AX,STACK ;初始化SS&

69、lt;/p><p><b>  MOV SS,AX</b></p><p>  MOV AX,TOP ;初始化SP</p><p><b>  MOV SP,AX</b></p><p>  BG:LEA DX,SEN1

70、 ;顯示基本信息</p><p>  MOV AH,09H</p><p><b>  INT 21H</b></p><p>  MOV AH,01H ;等待有鍵按下</p><p><b>  INT 21H<

71、/b></p><p>  CMP AL,'1' ;是否為1?</p><p>  JE SJB ;是,轉(zhuǎn)入產(chǎn)生三角波</p><p>  CMP AL,'2'

72、 ;是否為2?</p><p>  JE ZXB ;是,轉(zhuǎn)入產(chǎn)生正弦波</p><p>  CMP AL,'3' ;是否為3?</p><p>  JNE WX

73、 ;否,轉(zhuǎn)入WX</p><p>  JMP QIT ;無(wú)條件轉(zhuǎn)向QIT</p><p>  WX:LEA DX,SEN2 ;顯示無(wú)效信息</p><p>  MOV AH,09H</p><p>

74、<b>  INT 21H</b></p><p>  JMP BG ;轉(zhuǎn)向BG</p><p>  SJB: ;產(chǎn)生三角波</p><p>  CALL AMPLITUDE

75、 ;調(diào)用AMPLITUDE子程序</p><p> ??;輸入幅值 </p><p>  CALL CHANGE ;調(diào)用CHANGE子程序轉(zhuǎn)化</p><p><b> ??;為十六進(jìn)制</b></p><p>  MOV [RESU

76、LT1],DL ;將幅值存入[RESULT1]單元</p><p>  CALL NEWLINE ;回車(chē)換行</p><p>  CALL FREQUENCY ;調(diào)用FREQUENCY子程序</p><p><b>

77、;  ;輸入頻率</b></p><p>  CALL CHANGE </p><p>  MOV [RESULT2],DL ;將頻率值存入[RESULT2]單元</p><p>  TR0:MOV DX,300H

78、 ;DX指端口地址</p><p>  MOV AL,0 ;AL賦初值零</p><p>  TR1:OUT DX,AL ;將AL值從端口輸出</p><p>  INC DX ;端口

79、值增加1</p><p>  OUT DX,AL ;將AL的值再一次輸出</p><p><b>  DEC DX</b></p><p>  CALL DELAY ;延時(shí)</p><p>  ADD AL,

80、01H ;AL加1</p><p>  CMP AL,[RESULT1] ;AL是否等于指定的幅值?</p><p>  JNE TR1 ;否,循環(huán)</p><p>  TR2:OUT DX,AL</

81、p><p><b>  INC DX</b></p><p><b>  OUT DX,AL</b></p><p><b>  DEC DX</b></p><p>  CALL DELAY</p><p>  SUB AL,01H

82、 ;AL減1</p><p>  CMP AL,00H ;AL是否等于0?</p><p>  JNE TR2 ;否,循環(huán)</p><p>  LOOP TR1 ;循

83、環(huán)產(chǎn)生三角波</p><p><b>  PUSH AX</b></p><p><b>  PUSH DX</b></p><p>  MOV DL,0FFH ;等待有鍵按下</p><p>  MOV AH,06H</p><

84、;p><b>  INT 21H</b></p><p>  JNZ BG1 ;有,轉(zhuǎn)BG1</p><p><b>  POP DX</b></p><p><b>  POP AX</b></p><p>&

85、lt;b>  JMP TR0</b></p><p>  BG1:JMP BG</p><p>  ZXB: ;產(chǎn)生正弦波</p><p>  CALL AMPLITUDE</p><p>  CALL CHANGE</p><p&g

86、t;  MOV [RESULT1],DL</p><p>  CALL NEWLINE</p><p>  CALL FREQUENCY</p><p>  CALL CHANGE</p><p>  MOV [RESULT2],DL</p><p>  ZX0:MOV DX,300H</p><p

87、>  MOV CX,0FFH ;設(shè)計(jì)數(shù)初值</p><p>  MOV BX,OFFSET TABLE ;BX指表首址</p><p>  ZX1:MOV AL,0 ;AL清零</p><p>  XLAT

88、 ;查表轉(zhuǎn)換</p><p>  MOV BYTE PTR[SI],AL ;AL的值暫存SI字節(jié)單元</p><p>  MOV AL,[RESULT1] </p><p><b>  MUL SI</b></p>

89、<p><b>  OUT DX,AL</b></p><p><b>  INC DX</b></p><p><b>  OUT DX,AL</b></p><p><b>  DEC DX</b></p><p>  CALL DELAY&

90、lt;/p><p><b>  INC BX</b></p><p>  JNZ ZX1 ;計(jì)數(shù)器不為零則循環(huán)</p><p><b>  PUSH AX</b></p><p><b>  PUSH DX</b></

91、p><p>  MOV DL,0FFH </p><p>  MOV AH,06H</p><p><b>  INT 21H</b></p><p><b>  JNZ BG2</b></p><p><b>  POP DX</b></p&

92、gt;<p><b>  POP AX</b></p><p><b>  JMP ZX0</b></p><p>  BG2:JMP BG</p><p>  QIT:MOV AX,4C00H </p><p><b>  INT 2

93、1H</b></p><p><b>  CODE ENDS</b></p><p><b>  END START</b></p><p>  軟件系統(tǒng)的使用操作說(shuō)明</p><p>  在硬件條件滿足的條件下,源程序經(jīng)匯編,連接,運(yùn)行后,屏幕上首先會(huì)顯示如下信息:</p>

94、<p>  PLEASE ENTER 1 TO FORM SJB</p><p>  PLEASE ENTER 2 TO FORM ZXB</p><p>  PLEASE ENTER 3 TO EXIT!</p><p>  1. 當(dāng)鍵入1后,屏幕上又將出現(xiàn)以下提示信息:</p><p>  INPUT AMPLITUDE V

95、ALUE :</p><p>  若輸入的數(shù)大于三位且不是以9結(jié)束,則出現(xiàn)提示:</p><p>  SORRY!THIS VALUE IS OUT OF RANGE!</p><p>  若輸入的數(shù)值的第四位是9時(shí),即代表確認(rèn)此數(shù)值,則出現(xiàn)提示:</p><p>  INPUT FREQUENCY VALUE:</p><

96、;p>  再輸入一個(gè)數(shù),若輸入的數(shù)大于三位數(shù)且第四位不是數(shù)字9,又將出現(xiàn)提示:</p><p>  SORRY!THIS VALUE IS OUT OF RANGE!</p><p>  若再輸入的數(shù)仍在范圍內(nèi),按9鍵確認(rèn)后,則可以在示波器上觀察到連續(xù)的三角波形,按鍵3則退出。</p><p>  2. 當(dāng)鍵入2后,屏幕上又將出現(xiàn)以下提示信息:</p&g

97、t;<p>  INPUT AMPLITUDE VALUE :</p><p>  若輸入的數(shù)大于三位且不是以9結(jié)束,則出現(xiàn)提示:</p><p>  SORRY!THIS VALUE IS OUT OF RANGE!</p><p>  若輸入的數(shù)值的第四位是9時(shí),即代表確認(rèn)此數(shù)值,則出現(xiàn)提示:</p><p>  INPUT

98、 FREQUENCY VALUE:</p><p>  再輸入一個(gè)數(shù),若輸入的數(shù)大于三位數(shù)且第四位不是數(shù)字9,又將出現(xiàn)提示:</p><p>  SORRY!THIS VALUE IS OUT OF RANGE!</p><p>  若再輸入的數(shù)仍在范圍內(nèi),按9鍵確認(rèn)后,則可以在示波器上觀察到連續(xù)的正弦波形,按鍵3則退出。</p><p>&

99、lt;b>  3. 按鍵3退出。</b></p><p>  4.注意:輸入數(shù)字時(shí),如果是小于十的數(shù)字,如:3,則應(yīng)輸入003,然后按9鍵確認(rèn);如果是大于10小于100的數(shù),如:22,則應(yīng)輸入022,然后按9鍵確認(rèn);如果是大于100小于1000的數(shù),如:123,則應(yīng)輸入123,然后按9鍵確認(rèn),如果此時(shí)不是按9鍵,而是輸入其它數(shù)字,如5,則表示輸入的數(shù)為1235,這樣便出現(xiàn)出錯(cuò)信息,而后退出程序。

100、</p><p>  第七章 收獲、體會(huì)</p><p>  7.1 課程設(shè)計(jì)中遇到的問(wèn)題</p><p>  由于以前對(duì)信號(hào)發(fā)生器了解太少,剛拿到題目不知從何下手,經(jīng)過(guò)去圖館,上網(wǎng)查資料才懂得信號(hào)發(fā)生器主要就是數(shù)模轉(zhuǎn)換的問(wèn)題。</p><p>  在設(shè)計(jì)硬件時(shí),由于開(kāi)始不熟悉Protel中8088CPU和DAC0832的引腳排布,導(dǎo)致了

101、所設(shè)計(jì)的電路圖過(guò)于復(fù)雜,線路交叉混亂,在熟悉了Protel的使用和芯片的引腳特性和排布后,經(jīng)過(guò)對(duì)初稿的優(yōu)化設(shè)計(jì),使電路圖得到了改善。</p><p>  在軟件設(shè)計(jì)時(shí),用查表法產(chǎn)生正弦波看似簡(jiǎn)單,但要先造一張正弦表,去要花大量的功夫,一不小心算錯(cuò)的某幾個(gè)數(shù)據(jù)都可能使全盤(pán)皆錯(cuò),在同學(xué)的幫助下,問(wèn)題才得以解決。</p><p>  7.2 課程設(shè)計(jì)的收獲、體會(huì)</p><

102、p>  通過(guò)本次課程設(shè)計(jì),了解了Intel系列微型機(jī)的基本組成以及計(jì)算機(jī)中數(shù)和字符的表示方法;熟練掌握Intel8086指令系統(tǒng)及尋址方式,偽指令及匯編語(yǔ)言程序格式;掌握基本程序設(shè)計(jì)方法、I/O程序設(shè)計(jì)方法以及DOS調(diào)用;掌握宏匯編的基本概念和方法;了解匯編語(yǔ)言程序與高級(jí)語(yǔ)言程序的連接方法,熟悉上機(jī)操作和程序調(diào)試技術(shù),初步具備軟件設(shè)計(jì)的能力;并很好的了解了D/A轉(zhuǎn)換器(DAC0832)的功能,以及用匯編語(yǔ)言進(jìn)行程序設(shè)計(jì)的基本思想和

103、方法。但在將計(jì)算機(jī)理論知識(shí)轉(zhuǎn)化為計(jì)算機(jī)應(yīng)用知識(shí)的同時(shí),也發(fā)現(xiàn)了許多薄弱環(huán)節(jié),比如說(shuō)用匯編語(yǔ)言編程是我的弱項(xiàng),對(duì)計(jì)算機(jī)領(lǐng)域各門(mén)學(xué)科的交叉應(yīng)用還有待加強(qiáng)與提高。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]潘名蓮.微計(jì)算機(jī)原理.北京:電子工業(yè)出版社,2004.7</p><p>  [2]李志民.計(jì)算機(jī)原理與匯編語(yǔ)言程序

104、設(shè)計(jì).長(zhǎng)沙:中南大學(xué)出版社,2001.8</p><p>  [3]許駿.微型計(jì)算機(jī)系統(tǒng)原理及應(yīng)用.廣州:華南理工大學(xué)出版社,1996.5</p><p>  [4]宮云戰(zhàn).微型計(jì)算機(jī)原理與應(yīng)用基礎(chǔ)教程.北京:機(jī)械工業(yè)出版社,1999.5</p><p>  [5]廖爐霖.跟我學(xué)Protel 99.北京:冶金工業(yè)出版社,2000.1</p><p

105、>  [6]黃南志.Protel for Windows-Schematic使用技巧.科學(xué)出版社,1997</p><p>  [7]楊恢先.單片機(jī)原理及應(yīng)用.長(zhǎng)沙:國(guó)防科技大學(xué)出版社,2002.7</p><p>  [8]荀殿棟.微處理器應(yīng)用技術(shù)與實(shí)例.北京:電子工業(yè)出版社,1997.11</p><p>  [9]劉樂(lè)善.微型計(jì)算機(jī)接口技術(shù).成都:電子科

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論