微機報告波形發(fā)生器_第1頁
微機報告波形發(fā)生器_第2頁
微機報告波形發(fā)生器_第3頁
微機報告波形發(fā)生器_第4頁
微機報告波形發(fā)生器_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

[在此處鍵入]PAGEPAGE13東南大學《微機實驗及課程設計》實驗報告實驗五參數可調波形發(fā)生器姓名: 學號: 專業(yè): 實驗室: 實驗時間: 年 月日報告時間:2015年06月17日評定成績:審閱教師:

一、實驗要求

1.基本要求:

編制一個參數在線可調的波形發(fā)生程序,由D/A

輸出,構成參數在線可調的波形發(fā)生器,并用示波器觀察波形。

(1)函數波形可選f(t)=asin(bt),其中a、b參數在線可調(亦可自己選擇,但要求至少2個參數可調且調節(jié)很明顯);

(2)參數調節(jié)采用如下兩種方式之一:兩個可調電位器輸出通過A/D

轉換后作為可調參數、參數通過實驗系統(tǒng)上的鍵盤實時修改;

(3)精確時間,開關選擇標準信號輸出(a=2V,

b=100πRAD/s,即50Hz

正弦波),精度0.1ms

以上。

2.進一步設計要求:(1)分別采用兩種參數調節(jié)方式在線調節(jié)參數;

(2)產生周期性三次可調函數f(t)=at3+bt2+ct+d。

二、軟硬件平臺

1.

硬件環(huán)境:

微型計算機(Intel

x86系列CPU)一臺,清華科教儀器廠TPC—2003A微機接口試驗系統(tǒng)一臺,模擬示波器一臺。

2.

軟件環(huán)境:

1)

Windows

XP操作系統(tǒng),編輯、匯編、鏈接和調試程序;

2)

TPC—2003A集成開發(fā)環(huán)境軟件一套及實驗系統(tǒng)電子版資料。三、設計分析1.程序流程開始開始輸出波形標準波?選擇修改方式或退出鍵盤修改電位器修改退出

2.芯片需求及功能 0832:輸出波形 8253:精確延時,控制輸出波形的頻率 8255:并行輸入,讀取開關K0狀態(tài)與8253的out0端口狀態(tài) 0809:讀取電位器電壓并轉為數字量,即通過電位器修改a、b參數3.模塊設計模塊a:波形輸出對于從鍵盤修改或者是電位器修改得到的參數a、b(取值范圍均在0-255d之間),并不能直接輸入到DAC0832以及8253中,而應當進行變換。參數a的變換:對于數據段定義的sin數據表,將獲取的a值與0ffh相比,從而確定輸出波形幅度的相對于正弦波最大幅度(即5V)的比值。由于sin表中各點振幅數據s[i]范圍為0-0ffh,故并不能直接將a/0ffh的值作為比例系數與表中振幅數據相乘。此時各點正確的振幅數據為s_new[i]=7fh+(s[i]-7fh)*a/0ffh=s[i]*a/0ffh+7fh-a/2,將其輸入到0832中即可改變正弦波的振幅;模塊b:精確延時參數b的變換:(輸入的b值認為是正弦波頻率)sin表中數據為100組,即相鄰兩組數據輸出到0832的時間間隔為T/100=1/(b*100)秒,而當8253的CLK0端接入1MHz時,在8253工作于方式0下,需要賦計數初值為(1/(b*100))/1M次即可精確延時,控制輸出波形的頻率。模塊c:電位器修改利用0809的ADC的功能將從電位器獲取的電壓值轉變?yōu)?-0ffh的數字量,并保存為a或b的值。模塊d:鍵盤修改(提高)利用Int21h功能09提示使用者當前輸入的數據及范圍,反復調用int21h功能01獲取使用者輸入的數據(單個字符),直到判斷輸入的字符為enter鍵則停止調用,并將獲取的數據保存為a或b的值。4.接線圖5V5V280hCS非CLK0OUT0GATE01MHz8253K02b8hCS非PC1PC08255示波器290hCS非UbUa08322a0h2a0hCS非IN0IN1電位器1電位器20809四、實驗結果 1.實物搭接圖2.程序運行流程圖

3.示波器波形圖4.單步調試截圖(當前為調用鍵盤修改參數函數來修改b值)實驗中通過鍵盤、電位器均可準確調節(jié)輸出的正弦波的振幅與頻率,撥動開關K0可以在標準波輸出與參數可修改正弦波輸出之間切換,實驗效果明顯、鍵盤修改下的波形幅值和頻率與預期的值十分接近,電位器修改下的波形略有偏差。五、實驗分析及總結 從實驗結果來看,設計的波形發(fā)生器較好的實現了實驗要求,支持鍵盤修改、電位器修改與標準波選擇開關,波形的精確性較好,且程序運行時顯示的提示語句清晰、交互性好。 實驗中免不了遇到一些問題,在設計電位器修改參數功能時,之前設計的是同時調節(jié)兩個電位器并確定調節(jié),然而實際調試時發(fā)現同時調節(jié)會出現0809的從in0、in1端口輸入轉化后的數字量相互影響,不得已改成先調節(jié)參數a確認a的參數后再調節(jié)參數b并確認,雖然功能上同樣是實現了,然而我卻并沒有找到先前設計出現的問題的原因所在。 實驗尚有不欠缺之處,電位器調整參數時有時會出現滑動電位器波形或是沒有明顯的變化或是變化幅度過大的問題;在實現精確延時的時候,我采用的是使8253工作在方式0,每次都重新賦計數初值使之計時,驗收時經錢堃老師提問得知,其實更好的控制延時的方式是讓8253自動重裝計數初值。這些都是值得改進的地方。六、附錄源代碼如下datasegmentioportequ0b800h-280hio0832aequioport+290hio0809aequioport+2A0hio0809bequioport+2A1hio8253aequioport+280hio8253cequioport+283hio8255aequioport+2B8hio8255cequioport+2BAhio8255kequioport+2BBh;正弦波數據100組sindb128d,136d,144d,152d,160d,168d,175d,182d,190d,197ddb203d,210d,216d,221d,227d,232d,236d,240d,244d,247ddb250d,252d,254d,255d,255d,255d,255d,255d,254d,252ddb250d,247d,244d,240d,236d,232d,227d,221d,216d,210ddb203d,197d,190d,182d,175d,168d,160d,152d,144d,136ddb128d,120d,112d,104d,96d,88d,81d,74d,66d,59d,53ddb46d,40d,35d,29d,24d,20d,16d,12d,9d,6ddb4d,2d,1d,0d,0d,0d,1d,2d,4d,6ddb9d,12d,16d,20d,24d,29d,35d,40d,46d,53ddb59d,66d,74d,81d,88d,96d,104d,112d,120d,128dmessage1db0dh,0ah,'ParameterAdjustableWaveformGeneratorZhaowei(08013435)',0dh,0ah,'$'message2db0dh,0ah,'thecurrentvalueofa&bis(displaywithhex)',0dh,0ah,'$'message3db0dh,0ah,'nowucan1.enter1tochangea&bbykeyboard',0dh,0ahdb0dh,0ah,'2.enter2tochangea&bbypotentiometer',0dh,0ahdb0dh,0ah,'3.enter3toexit',0dh,0ah,'$'message4db0dh,0ah,'enteranykeytocontinue',0dh,0ah,'$'message7db0dh,0ah,'enteranykeytoconfirmyourpotentiometerchangeofa',0dh,0ah,'$'message8db0dh,0ah,'enteranykeytoconfirmyourpotentiometerchangeofb',0dh,0ah,'$'message5db0dh,0ah,'firstlyplsenterthevalueofa(rangewithdec:0-255).',0dh,0ah,'$'message6db0dh,0ah,'plsenterthevalueofb(rangewithdec:0-255).',0dh,0ah,'$'message0db0dh,0ah,'standardwave',0dh,0ah,'$'stringadb0dh,0ah,30h,30h,0dh,0ah,'$'stringbdb0dh,0ah,30h,30h,0dh,0ah,'$'adb7fhbdb32hanumdw3bnumdw3inputadb3dup(1,0,2)inputbdb3dup(1,0,0)dataendsstackssegmentstack db100dup(?)stacksendscodesegment assumecs:code,ds:data,ss:stacks,es:data mainprocfarstart: movax,stacks movss,ax movax,data movds,ax moves,ax ;displaymessge movdx,offsetmessage1 movah,09 int21hsdisp: movdx,offsetmessage2 ;'Thecurrentvalueofa&bis' movah,09 int21h calldisp;顯示ab movdx,io8255k moval,8bh ;方式0A口輸出,C口輸入 outdx,al movdx,io8255c inal,dx andal,01h cmpal,01h jnzsd ;檢測是否輸出標準波 movdx,offsetmessage3 ;Nowucanenter1keyboard23 movah,09 int21h movah,01 int21h movbl,al cmpbl,31h jzck cmpbl,32h jzcp cmpbl,33h jzexitsd:callstdwave jmpsdispck: callkeyboard jmpsdispcp: callpotentiometera callpotentiometerb jmpsdispexit: movah,4ch int21hmainendp;標準輸出2V100pirad/s50Hz正弦波dispprocnear ;入參a,b輸出波形 xorax,ax moval,a pushax movcl,4 shral,cl cmpal,09h jbstrt0 addal,07hstrt0: addal,30h movstringa[2],al popax andal,0fh cmpal,09h jbstrt1 addal,07hstrt1: addal,30h movstringa[3],al movdx,offsetstringa;顯示a值以十六進制 movah,09 int21h xorax,ax moval,b pushax movcl,4 shral,cl cmpal,09h jbstrt2 addal,07hstrt2: addal,30h movstringb[2],al popax andal,0fh cmpal,09h jbstrt3 addal,07hstrt3: addal,30h movstringb[3],al movdx,offsetstringb;顯示b值以十六進制 movah,09 int21h movdx,offsetmessage4 movah,09 int21h ;輸入0832lp1:movsi,offsetsin movch,100 xorax,axlp2:;moval,[si]; moval,a; subal,7fh; movcl,[si]; mulcl; movbl,0ffh; divbl;結果存放在axal為商 ;pushbx moval,[si] mula movbl,0ffh divbl movbl,a shrbl,1 movdl,128d subdl,bl addal,dl movdx,io0832a outdx,al calldelay movah,06h movdl,0ffh int21h jnedispend;有鍵盤輸入跳至dispend incsi ;popbx decch jnzlp2 jmplp1dispend: retdispendpkeyboardprocnear movdx,offsetmessage5 movah,09 int21h xorsi,sikloop1: movah,01h int21h cmpal,0dh;回車 jzenda subal,30h movinputa[si],al incsi jmpkloop1enda: movanum,si;參數位數 xorax,ax xorsi,sikloop2:addal,inputa[si] incsi cmpanum,si jzfinisha movdl,10 muldl jmpkloop2;結果存放在alfinisha:mova,al movdx,offsetmessage6 movah,09 int21h xorsi,sikloop3: movah,01h int21h cmpal,0dh;回車 jzendb subal,30h movinputb[si],al incsi jmpkloop3endb: movbnum,si;參數位數 xorax,ax xorsi,sikloop4:addal,inputb[si] incsi cmpbnum,si jzfinishb movdl,10 muldl jmpkloop4;結果存放在alfinishb:movb,al retkeyboardendppotentiometeraprocnear ;displaymessage ;輸入a movdx,offsetmessage7 movah,09 int21hpstart: xorax,ax movdx,io0809a outdx,al movcx,0ffhploop1:loopploop1 inal,dx movbl,al cmpbl,00h jnzpp1 movbl,128dpp1: mova,bl movah,06h movdl,0ffh int21h jnepout1;有鍵盤輸入跳至pout jmppstartpout1: retpotentiometeraendppotentiometerbprocnear ;輸入b movdx,offsetmessage8 movah,09 int21hpstart2: xorax,ax movdx,io0809b outdx,al movcx,0ffhploop2:loopploop2 inal,dx m

溫馨提示

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

評論

0/150

提交評論