

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 微機原理課程設計</b></p><p><b> 信號發(fā)生器的設計</b></p><p> 第一章 課程設計的目的意義</p><p> 1 課程設計的目的</p><p> 微機應用系統(tǒng)設計與綜合實驗是對所學課程內容全面、系統(tǒng)的總結、鞏固和提高的一項課
2、程實踐活動。根據(jù)匯編語言的特點,選擇相應的題目,在老師的指導下,由學生獨立完成。課程設計要求同學們熟悉匯編語言的編程,BIOS中斷調用、系統(tǒng)功能調用、磁盤數(shù)據(jù)的查詢、存取等相關知識。通過課程設計,一方面提高運用匯編語言編程解決實際問題的能力,另一方面使同學們更深入的了解計算機系統(tǒng)內部的有關知識,為以后的學習和系統(tǒng)開發(fā)奠定良好的基礎。</p><p> 1.2 設計的意義</p><p>
3、; 通過課程設計要進一步鍛煉同學們在微型計算機應用方面的實際工作能力。計算機科學在應用上得到飛速發(fā)展,因此,學習這方面的知識必須緊密聯(lián)系實際:掌握這方面的知識更要強調解決實際問題的能力。同學們要著重學會面對一個實際問題,如何去自己收集資料,如何自己去學習新的知識,如何自己去制定解決問題的方案并通過實踐不斷地去分析和解決前進道路上的一切問題,最終到達勝利的彼岸。</p><p><b> 第二章 設
4、計任務</b></p><p> 1 課程設計的題目</p><p> 信號發(fā)生器軟硬件設計:</p><p> 以8088CPU為核心設計一個信號發(fā)生器,系統(tǒng)可產生正弦波和三角波信號。</p><p> 2.2 設計的要求</p><p> 該設計由一個人選做并獨自完成,要求畫出電路原理圖,
5、說明工作原理,編寫程序及程序流程圖。</p><p> 2.3 設計的時間、地點</p><p> 時間:2006年7月3日-7月14日地點:11112</p><p> 第三章 總體設計方案</p><p> 3.1 對信號發(fā)生器的認識</p><p> 在我們日常生活中,以及一些科學研究中,鋸齒波
6、和正弦波、矩形波、三角波是常用的基本測試信號。此外,如在示波器、電視機等儀器中,為了使電子按照一定規(guī)律運動,以利用熒光屏顯示圖像,常用到鋸齒波產生器作為時基電路。例如,要在示波器熒光屏上不失真地觀察到被測信號波形,要求在水平偏轉板加上隨時間作線性變化的電壓——鋸齒波電壓,使電子束沿水平方向勻速搜索熒光屏。而電視機中顯像管熒光屏上的光點,是靠磁場變化進行偏轉的,所以需要要用鋸齒波電流來控制,對于三角波,方波同樣有這不可忽視的作用而函數(shù)發(fā)生
7、器是指一般能自動產生方波 正弦波 三角波以及鋸齒波階梯波等電壓波形的電路或儀器。因此信號發(fā)生器是我們在學習,科學研究等方面不可缺少的工具。此外,信號發(fā)生器在教學、試驗、測控等各個領域有十分廣泛的應用,其輸出信號的頻率范圍覆蓋了各個頻段,從甚低頻到甚高頻,操作方式也從手動旋鈕到程控,產生的波形從傳統(tǒng)的正(余)弦波和脈沖波形,發(fā)展到現(xiàn)在能產生各種任意波形。以前的信號發(fā)生器往往獨占一個機箱,而現(xiàn)在的一些應用中,它只是一塊插在計算機中的擴展卡,
8、還有一些信號發(fā)生器設計成一個獨立的小模塊,通過RS-232C或RS-422,</p><p><b> 總體設計思路</b></p><p> 該設計包括硬件設計和軟件設計兩部分。</p><p> 1.硬件是基于PC機的設計,設計要求以8088CPU為核心,通常采用8284時鐘產生器為CPU提供時鐘信號。由于計算機產生的是數(shù)字信號,而信
9、號發(fā)生器產生的是模擬量,所以必須把數(shù)字量轉化成模擬量,因此設計中用到的一個主要硬件便是D/A轉換器。信號發(fā)生器產生的信號又要經(jīng)過示波器顯示才能讓我們知道產生的是什么波形,所以經(jīng)D/A轉換器轉換后的電量要經(jīng)運算放大電路放大后才能在示波器上顯示連續(xù)的波形,因此運算放大電路便成為連接D/A轉換器和示波器的橋梁。D/A轉換器的端口地址由片選端CS決定,因此,還需要譯碼器和一些邏輯門將D/A轉換器的片選段和8088CPU連接起來。</p&g
10、t;<p> 至于PC機何時要它產生三角波,何時產生正弦波,何時退出,這就屬于軟件方面的設計了,通過編程產生三角波和正弦波,并控制波形的幅值和頻率。</p><p> 三角波要分兩段來產生,但因它的上升斜坡和下降斜坡都是線性關系,所以只要由數(shù)字量的增減來控制就可以了,產生上升斜坡時讓輸出值從零開始逐漸遞增,其上升的最大值是從鍵盤輸入的幅值,其頻率是由輸出點之間的延時來控制的;相反,產生下降斜坡時
11、,讓輸出值從最大幅值逐漸遞減到零。</p><p> 而正弦波是三角函數(shù)關系,通??梢杂靡韵聝煞N方法產生:(1) 查表法:該方法的優(yōu)點是速度快,但在精度高的情況下要求的存儲器容量也要增大。此種方法應用在對精度要求不高的場合。(2) 泰勒級數(shù)展開法:在某些時候這是一種比查表法更為有效的方法。與查表法相比,這種方法需要的存儲單元很少,而且精度高。其泰勒級數(shù)展開式如下:</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ù)表得到的值轉換成十六進制數(shù)填表。D/A轉換取值范圍為一個周期,采樣點越多,精度越高,本實驗中采樣點為256點/周期。正弦數(shù)字量表中的值為參考值,對于不同幅值的正弦波可以通過把表中的每個值乘以相同的倍數(shù)
13、得到,其頻率由改變輸出點之間的延時來實現(xiàn)。</p><p><b> 3.原理框圖</b></p><p> 信號發(fā)生器的原理框圖如圖3.1所示</p><p> 圖3.1 信號發(fā)生器原理框圖</p><p> 3.3 總體設計流程圖</p><p> 總體設計流程圖如圖3.2所示&
14、lt;/p><p><b> 關于流程圖的說明:</b></p><p> 程序從初始化開始,首先讓指針指向提示信息一,即在屏幕上顯示:</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> 當有鍵按下后,如果鍵是1,則轉向執(zhí)行產生三角波的程序;如果鍵不是1,則看鍵是否為2。如果鍵是2,則轉向執(zhí)行產生正弦波的程序;如果鍵也不是2,則看是否為3。如果是3,則退出;如果也不是3,則讓指針指向信息2,即顯示信息提示所輸入的鍵為無效鍵,并回到顯示提示信息1的地方,重新執(zhí)行上述過程。</p><p> 產生三角
16、波的過程:首先調用AMPLITUDE子程序提示輸入幅值,并把值轉換為二進制值,然后調用CHANGE子程序判斷輸入的值是否為規(guī)定范圍內的值,并把滿足條件的值轉換為十六進制的值;接下來提示輸入頻率的過程與輸入幅值的過程類似。在</p><p> 圖 3.2 總體設計流程圖</p><p> 指針指端口地址后,將AL的值從零開始依次增加并從端口輸出,各輸出點之間的延時便實現(xiàn)了對頻率的控制,
17、這是產生上升斜坡的過程。如果還沒到最大幅值,則循環(huán)產生上升斜坡的過程;當AL等于最大幅值時,程序往下執(zhí)行產生下降斜坡。產生下降斜坡的過程與上升斜坡類似,只是讓AL從最大值依次遞減并從端口輸出,如果AL </p><p> 不等于零,則循環(huán)產生下降斜坡,如果AL等于零,則返回到產生上升斜坡處循環(huán),直到有鍵按下才結束。</p><p> 產生正弦波的過程:開始提示要求輸入幅值和頻率的過程和
18、產生三角波的相同,這里就不再贅述了。接著是查表法產生正弦波,讓BX指表首址,AL清零,取采樣點數(shù)256作為計數(shù)初值,通過XLAT指令將BX+AL的值送給AL,這就是查表轉換的過程,由于表中給出的是固定的幅值,只要在表中各值得基礎上乘以相應的倍數(shù),便能得到需要的幅值的波形,計數(shù)小于256時,則在一個周期內循環(huán)查表,計數(shù)等于256次后,則從表首重新開始查表產生正弦波,直到有鍵按下才結束。</p><p><b&
19、gt; 第四章 硬件設計</b></p><p> 1 選用的芯片及其工作原理</p><p> 4.1.1 選用的芯片</p><p> D/A轉換器是把數(shù)字量變換成模擬量的線性電路器件,一做成集成芯片。由于實現(xiàn)這種轉換的原理和電路結構及工藝技術有所不同,因而出現(xiàn)上百種D/A轉換器,它們在轉換速度、轉換精度、分辨率以及使用價值上都具有特色
20、。在分辨率上,14、16、18位的D\A轉換器已投入市場,20位的D\A轉換器已研制成功。在速度上,16位幾百KHz,8位100MHz以上的產品都已成為商品。在各種各樣的D\A轉換芯片中我們選用8位的DAC0832芯片作為接口芯片。</p><p> 4.1.2 選用芯片的工作原理</p><p> DAC0832是采用CMOS工藝制成的單片直流輸出型8位數(shù)/模轉換器。它由倒T型R-
21、2R電阻網(wǎng)絡、模擬開關、運算放大器和參考電壓VREF四大部分組成。輸出的模擬量與輸入的數(shù)字量成正比,這就實現(xiàn)了從數(shù)字量到模擬量的轉換。一個8位D/A轉換器有8個輸入端(其中每個輸入端是8位二進制數(shù)的一位),有一個模擬輸出端。輸入可有256個不同的二進制組態(tài),輸出為256個電壓之一,即輸出電壓不是整個電壓范圍內任意值,而只能是256個可能值。</p><p> DAC0832有單緩沖,雙緩沖,直通三種工作方式。在
22、應用系統(tǒng)中只有一路D/A轉換,即不要求多個模擬輸出通道同時刷新模擬輸出時,通常采用單緩沖方式。本實驗便采用了此工作方式。</p><p> DAC0832的內部包括兩個8位寄存器、1個8位轉換器和相應輔助電路。8位輸入寄存器為第一級鎖存器,它的鎖存信號為ILE。當ILE為高電平、CS和WR1為低電平時,LE1為1,這種情況下,輸入寄存器的輸出隨輸入而變化。此后,WR1由低變高時,ILE變?yōu)榈碗娖?,此時,數(shù)據(jù)被鎖
23、存到輸入寄存器中。8位DAC寄存器為第二級鎖存器,它的鎖存信號也稱為通道控制信號。WR2和XFEB同時為低電平時,LE2為高電平,這時,8位的DAC寄存器的輸出隨輸入而變化,此后,當WR2由低變高時,LE2變?yōu)榈碗娖?,將輸入寄存器的信息鎖存到DAC寄存器。正是由于DAC0832內部的這兩種鎖存器,故它可直接掛接在總線上,在需要進行D/A轉換時,CPU通過片選信號和寫控制信號將數(shù)據(jù)寫至D/A變換器。</p><p>
24、; 4.2 電路圖及說明</p><p> 4.2.1 電路圖</p><p> 設計的電路圖如圖 4.1所示</p><p> 圖 4.1 信號發(fā)生器電路原理圖</p><p> 4.2.2 關于電路圖的說明</p><p> 8088CPU與8284的連接:</p><p
25、> 8088CPU由外界的時鐘發(fā)生器8284提供時鐘信號,在時鐘控制下,一步步順序的執(zhí)行指令。8284是用石英晶體或某一TTL脈沖發(fā)生器作為振蕩源,除提供頻率恒定的時鐘信號外,還要對外界輸入的“準備就緒”信號RDY和復位信號RES進行同步。外界的RDY輸入8284,經(jīng)時鐘的下降沿同步后,輸出READY信號作為8088的“準備就緒”信號;同樣,外界的復位信號RES輸入8284,經(jīng)整形并由時鐘的下降沿同步后,輸出RESET信號作為8
26、088的復位信號。本設計中采用晶體振蕩器作為振蕩源,這時,需將晶體振蕩器的兩端接到8284的X1和X2上,而F/C 接地。</p><p> 2.8088CPU與DAC0832的連接:</p><p> (1)由于8088CPU只有8位數(shù)據(jù)總線,因此8088CPU每次訪問存儲器或I/O端口只能讀/寫一個字節(jié),通過8位的地址/數(shù)據(jù)復用線AD7-AD0傳送,A15-A8不是復用線,始終是地
27、址線,根據(jù)前面的說明,DAC0832可直接掛接在總線上,因此應將8088CPU的AD7-AD0與DAC0832的DI7-DI0相連。</p><p> (2) 外設端口地址實際上是控制選通某一個外設或接口芯片的地址,一般通過譯碼電路及邏輯門電路來實現(xiàn)。在具體實現(xiàn)方案中,常見的是全譯碼和部分譯碼法,作為譯碼電路的輸入,PC機只使用16根中的低10根地址(A9-A0),全譯碼方法中A9-A0均參與地址譯碼,相應的端
28、口地址是唯一的。對接口芯片,地址譯碼的某一輸出端一般直接連到芯片的片選端,以74LS138為譯碼器的全譯碼電路,欲使Y0輸出低電平,EN 2B 、EN 2A、EN1、C、B、A引腳分別為1、0、0、0、0、0,A9-A0的組合應為1100000000。因而DAC0832的CS端接Y0時,其端口地址被唯一確定為300H。</p><p> (3) 8088CPU的PC/XT微機的控制信號AEN,經(jīng)反相后作為譯碼電
29、路的一個控制輸入信號,這是任何I/O端口地址譯碼電路必須采用的,所以把AEN接到G1端。</p><p> DAC0832與運算放大電路的連接:</p><p> 通過D/A轉換芯片輸出的是電流,而我們需要的是模擬電壓,因此,要把D/A轉換芯片輸出的電流轉換成電壓,這就是在0832的輸出端接運算放大電路的原因。如圖4.1所示,運算放大電路A1的作用是把電流輸出轉換為電壓輸出,運算放大電
30、路A2的作用是把運算放大電路A1的單極性輸出轉變?yōu)殡p極性輸出。A2的反相輸入端經(jīng)電阻R1與參考電壓Vref相連,Vref經(jīng)電阻R1向A2提供一個電流I1,運放A1的輸出Vout1經(jīng)電阻R3向A2提供一個電流I2.由于Vout1與Vout2的極性相反,所以I1,I2的方向相反,而運放A2實際上是一個反向加法器,即:</p><p> Vout=-((R2/R3)*Vout1+(R2/R1)*Vref)</p
31、><p> 因為R1:R2:R3=2:2:1,則有Vout=-2Vout1-Vref。當Vref=5V時,Vout在-5到5V范圍內變化。</p><p><b> 第五章 軟件設計</b></p><p> 1 程序的各功能模塊流程圖及其文字說明</p><p> 1. 各個子程序的流程圖如下</p>
32、;<p> 程序中用到的子程序主要有DELAY子程序,CHANGE子程序,AMPLITUDE子程序,F(xiàn)REQUENCY子程序,其流程圖分別如圖5.1,5.2,5.3,5.4所示。</p><p><b> 關于流程圖的說明</b></p><p> (1) AMPLITUDE子程序是通過屏幕顯示提示信息輸入小于四位數(shù)的幅值,并把輸入的字符逐個轉換
33、為二進制的代碼,結果暫存入BX中。該子程序的目的是為了排除數(shù)字以外的字符的干擾,如a,它不是數(shù)字,但其ASCII值為97,且在范圍內,經(jīng)過AMPLITUDE子程序轉換后就可知道它不是有效字符。</p><p> (2) FREQUENCY子程序是通過屏幕顯示提示信息輸入頻率,其它的功能和AMPLITUDE子程序相同。</p><p> (3) CHANGE子程序是把AMPLITUD
34、E或FREQUENCY子程序轉換后的二進制數(shù)進一步轉換成十六進制數(shù),當輸入值不為0-9的數(shù)字時顯示出錯信息,并且指定輸入的數(shù)值以數(shù)字9作為結束,轉向執(zhí)行下面的語句。</p><p> (4) DELAY子程序是用來控制輸出點之間的延時的,因為波形的頻率是由改變輸出點之間的延時來實現(xiàn)的,所以DELAY子程序的延時的時間也是隨輸入的頻率而變化的。</p><p><b> 5.
35、2 源程序</b></p><p> DATA SEGMENT</p><p> TABLE DB 80H,83H,86H,89H,8DH,90H,93H,96H ;選取256個點,定義</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 ;轉化為機器識別碼</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 ;輸入十進制數(shù)</p><p><b> INT 21H</b></p><p>
51、SUB AL,30H ;轉化為二進制數(shù)</p><p> JL EXIT ;若小于零,則退出</p><p> CMP AL,09H ;是否大于9?</p><p> JG EXIT
52、 ;是,退出</p><p> ADD BX,AX ;AX與BX相加,結果存入BX</p><p> LOOP KEYIN ;獲得下一個十進制數(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ù)為計數(shù)初值</p><p> ROTATE:MOV CL,4 ;設位循環(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 ;轉變成ASCII碼</p><p> CMP DL,3AH ; 〉9?</p><p> J
56、G JOP ;是,轉JOP</p><p> CMP DL,30H ;〈 0?</p><p> JL JOP ;是,轉JOP</p><p> MOV DL,AL
57、 ; 將結果存入DL</p><p><b> DEC CH</b></p><p> JNZ ROTATE ;計數(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 ;回車換行</p><p> PUSH AX
64、 ;AX入棧</p><p><b> PUSH DX</b></p><p> MOV DL,0DH ;顯示回車符</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、 ;延時子程序</p><p> MOV CL,[RESULT2] ;設輸入的頻率為計數(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 ;是,轉入產生三角波</p><p> CMP AL,'2'
72、 ;是否為2?</p><p> JE ZXB ;是,轉入產生正弦波</p><p> CMP AL,'3' ;是否為3?</p><p> JNE WX
73、 ;否,轉入WX</p><p> JMP QIT ;無條件轉向QIT</p><p> WX:LEA DX,SEN2 ;顯示無效信息</p><p> MOV AH,09H</p><p>
74、<b> INT 21H</b></p><p> JMP BG ;轉向BG</p><p> SJB: ;產生三角波</p><p> CALL AMPLITUDE
75、 ;調用AMPLITUDE子程序</p><p> ?。惠斎敕?</p><p> CALL CHANGE ;調用CHANGE子程序轉化</p><p><b> ;為十六進制</b></p><p> MOV [RESU
76、LT1],DL ;將幅值存入[RESULT1]單元</p><p> CALL NEWLINE ;回車換行</p><p> CALL FREQUENCY ;調用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 ;延時</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)產生三角波</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 ;有,轉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: ;產生正弦波</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ù)初值</p><p> MOV BX,OFFSET TABLE ;BX指表首址</p><p> ZX1:MOV AL,0 ;AL清零</p><p> XLAT
88、 ;查表轉換</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 ;計數(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)的使用操作說明</p><p> 在硬件條件滿足的條件下,源程序經(jīng)匯編,連接,運行后,屏幕上首先會顯示如下信息:</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. 當鍵入1后,屏幕上又將出現(xiàn)以下提示信息:</p><p> INPUT AMPLITUDE V
95、ALUE :</p><p> 若輸入的數(shù)大于三位且不是以9結束,則出現(xiàn)提示:</p><p> SORRY!THIS VALUE IS OUT OF RANGE!</p><p> 若輸入的數(shù)值的第四位是9時,即代表確認此數(shù)值,則出現(xiàn)提示:</p><p> INPUT FREQUENCY VALUE:</p><
96、;p> 再輸入一個數(shù),若輸入的數(shù)大于三位數(shù)且第四位不是數(shù)字9,又將出現(xiàn)提示:</p><p> SORRY!THIS VALUE IS OUT OF RANGE!</p><p> 若再輸入的數(shù)仍在范圍內,按9鍵確認后,則可以在示波器上觀察到連續(xù)的三角波形,按鍵3則退出。</p><p> 2. 當鍵入2后,屏幕上又將出現(xiàn)以下提示信息:</p&g
97、t;<p> INPUT AMPLITUDE VALUE :</p><p> 若輸入的數(shù)大于三位且不是以9結束,則出現(xiàn)提示:</p><p> SORRY!THIS VALUE IS OUT OF RANGE!</p><p> 若輸入的數(shù)值的第四位是9時,即代表確認此數(shù)值,則出現(xiàn)提示:</p><p> INPUT
98、 FREQUENCY VALUE:</p><p> 再輸入一個數(shù),若輸入的數(shù)大于三位數(shù)且第四位不是數(shù)字9,又將出現(xiàn)提示:</p><p> SORRY!THIS VALUE IS OUT OF RANGE!</p><p> 若再輸入的數(shù)仍在范圍內,按9鍵確認后,則可以在示波器上觀察到連續(xù)的正弦波形,按鍵3則退出。</p><p>&
99、lt;b> 3. 按鍵3退出。</b></p><p> 4.注意:輸入數(shù)字時,如果是小于十的數(shù)字,如:3,則應輸入003,然后按9鍵確認;如果是大于10小于100的數(shù),如:22,則應輸入022,然后按9鍵確認;如果是大于100小于1000的數(shù),如:123,則應輸入123,然后按9鍵確認,如果此時不是按9鍵,而是輸入其它數(shù)字,如5,則表示輸入的數(shù)為1235,這樣便出現(xiàn)出錯信息,而后退出程序。
100、</p><p> 第七章 收獲、體會</p><p> 7.1 課程設計中遇到的問題</p><p> 由于以前對信號發(fā)生器了解太少,剛拿到題目不知從何下手,經(jīng)過去圖館,上網(wǎng)查資料才懂得信號發(fā)生器主要就是數(shù)模轉換的問題。</p><p> 在設計硬件時,由于開始不熟悉Protel中8088CPU和DAC0832的引腳排布,導致了
101、所設計的電路圖過于復雜,線路交叉混亂,在熟悉了Protel的使用和芯片的引腳特性和排布后,經(jīng)過對初稿的優(yōu)化設計,使電路圖得到了改善。</p><p> 在軟件設計時,用查表法產生正弦波看似簡單,但要先造一張正弦表,去要花大量的功夫,一不小心算錯的某幾個數(shù)據(jù)都可能使全盤皆錯,在同學的幫助下,問題才得以解決。</p><p> 7.2 課程設計的收獲、體會</p><
102、p> 通過本次課程設計,了解了Intel系列微型機的基本組成以及計算機中數(shù)和字符的表示方法;熟練掌握Intel8086指令系統(tǒng)及尋址方式,偽指令及匯編語言程序格式;掌握基本程序設計方法、I/O程序設計方法以及DOS調用;掌握宏匯編的基本概念和方法;了解匯編語言程序與高級語言程序的連接方法,熟悉上機操作和程序調試技術,初步具備軟件設計的能力;并很好的了解了D/A轉換器(DAC0832)的功能,以及用匯編語言進行程序設計的基本思想和
103、方法。但在將計算機理論知識轉化為計算機應用知識的同時,也發(fā)現(xiàn)了許多薄弱環(huán)節(jié),比如說用匯編語言編程是我的弱項,對計算機領域各門學科的交叉應用還有待加強與提高。</p><p><b> 參考文獻</b></p><p> [1]潘名蓮.微計算機原理.北京:電子工業(yè)出版社,2004.7</p><p> [2]李志民.計算機原理與匯編語言程序
104、設計.長沙:中南大學出版社,2001.8</p><p> [3]許駿.微型計算機系統(tǒng)原理及應用.廣州:華南理工大學出版社,1996.5</p><p> [4]宮云戰(zhàn).微型計算機原理與應用基礎教程.北京:機械工業(yè)出版社,1999.5</p><p> [5]廖爐霖.跟我學Protel 99.北京:冶金工業(yè)出版社,2000.1</p><p
105、> [6]黃南志.Protel for Windows-Schematic使用技巧.科學出版社,1997</p><p> [7]楊恢先.單片機原理及應用.長沙:國防科技大學出版社,2002.7</p><p> [8]荀殿棟.微處理器應用技術與實例.北京:電子工業(yè)出版社,1997.11</p><p> [9]劉樂善.微型計算機接口技術.成都:電子科
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機原理課程設計--信號發(fā)生器功能程序設計
- 微機課程設計--簡易信號發(fā)生器
- 微機原理課程設計波形發(fā)生器
- 微機原理課程設計-函數(shù)發(fā)生器
- 微機原理課程設計---函數(shù)發(fā)生器
- 微機原理課程設計-- 波形發(fā)生器
- 信號發(fā)生器課程設計----函數(shù)信號發(fā)生器
- 信號發(fā)生器課程設計報告--函數(shù)信號發(fā)生器的設計
- 信號發(fā)生器課程設計---函數(shù)發(fā)生器的設計
- 課程設計--信號發(fā)生器設計
- 信號發(fā)生器課程設計
- 信號發(fā)生器課程設計
- 微機課程設計報告-波形發(fā)生器
- 微機原理與接口技術課程設計----數(shù)字信號發(fā)生器
- 課程設計--信號發(fā)生器的設計
- 555信號發(fā)生器課程設計
- 函數(shù)信號發(fā)生器課程設計
- 簡易信號發(fā)生器 課程設計
- 函數(shù)信號發(fā)生器課程設計
- 函數(shù)信號發(fā)生器課程設計
評論
0/150
提交評論