微機原理課程設(shè)計報告數(shù)據(jù)采集系統(tǒng)三中斷法_第1頁
微機原理課程設(shè)計報告數(shù)據(jù)采集系統(tǒng)三中斷法_第2頁
微機原理課程設(shè)計報告數(shù)據(jù)采集系統(tǒng)三中斷法_第3頁
微機原理課程設(shè)計報告數(shù)據(jù)采集系統(tǒng)三中斷法_第4頁
微機原理課程設(shè)計報告數(shù)據(jù)采集系統(tǒng)三中斷法_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機原理課程設(shè)計課設(shè)題目:數(shù)據(jù)采集系統(tǒng)三(中斷法)實驗者姓名: 劉 京 實驗者學(xué)號: 041010114 學(xué)院: 電子信息工程學(xué)院 數(shù)據(jù)采集系統(tǒng)三(中斷法)一、實驗?zāi)康?進一步掌握微機原理知識,了解微機在實時采集過程中的應(yīng)用,學(xué)習(xí)、掌握編程和程序調(diào)試方法。二、實驗內(nèi)容 1、用中斷法,將adc 0809通道0外接0 5v電壓,轉(zhuǎn)換成數(shù)字量后,在七段led數(shù)碼管上,以小數(shù)點后兩位(幾十毫伏)的精度,顯示其模擬電壓的十進值;0809通道0的數(shù)字量以線性控制方式送dac0832輸出,當(dāng)通道0的電壓為5v時,0832的out為0v, 當(dāng)通道0的電壓為0時,0832的out為2.5v;此模擬電壓再送到ad

2、c 0809通道1,轉(zhuǎn)換后的數(shù)字量在crt上以十六進制顯示。 2、adc 0809 的clk 脈沖,由定時器8254的out0提供;adc 0809的eoc信號,用作8259中斷請求信號。 3、要有較好的人機對話界面;控制程序的運行。三、總體設(shè)計 1 、adc 0809的in0采集電位器0 5v電壓,in1采集0832輸出的模擬量。 2 、dac 0832將adc 0809的in0數(shù)字量后重新轉(zhuǎn)換成模擬量輸出。 3、8259用于檢測adc 0809轉(zhuǎn)換是否結(jié)束和向cpu發(fā)送intr信號 4、 8255為七段led數(shù)碼管顯示提供顯示驅(qū)動信息。 5、七段led數(shù)碼管顯示adc 0809的in0的值

3、。 6、8254提供adc 0809的采樣時鐘脈沖。 7、有良好的人機對話界面。系統(tǒng)運行時,顯示主菜單,開始數(shù)據(jù)采集, 在數(shù)據(jù)采集時, 主鍵盤有鍵按下, 退出返回dod系統(tǒng)。四、硬件設(shè)計 因采用了pc機和微機實驗箱, 硬件電路設(shè)計相對比較簡單, 主要利用微機實驗箱上的8255并行口、adc 0809、dac 0832、七段led數(shù)碼管單元、8254定時/計數(shù)器、74ls574輸出接口、電位器等單元電路, 就構(gòu)成了數(shù)據(jù)采集系統(tǒng), 硬件電原理框圖4-3-1所示。五、軟件設(shè)計 本設(shè)計通過軟件編程,實現(xiàn)模/數(shù)轉(zhuǎn)換器0809分別對in0 0-5v直流電壓的采樣,和經(jīng)0832線性控制后輸出電壓的in1采樣

4、,in0的值轉(zhuǎn)換成十進制后,在七段數(shù)碼管上顯示; in1的值在顯示器上顯示。cpu 根據(jù)in0的值,使八位發(fā)光二極管根據(jù)題目的要求,指示相應(yīng)的范圍。1、設(shè)計思想 數(shù)據(jù)采集系統(tǒng)分成四個功能模塊,分別是主程序模塊、量綱轉(zhuǎn)換模塊、數(shù)碼管顯示模塊、中斷服務(wù)子程序模塊。(1)主程序模塊 根據(jù)題目要求,采用中斷方式實現(xiàn)數(shù)據(jù)采集,因此可把讀取in0的值并保存,和此數(shù)字量經(jīng)線性控制后送給0832輸出, 作為0809 in1的模擬電壓和in1的啟動、讀取以及in0的bcd碼轉(zhuǎn)換, 放在中斷服務(wù)子程序模塊中完成。所以,在主程序模塊上主要實現(xiàn)啟動0809 in0、顯示模塊的調(diào)用、和中斷結(jié)束部分程序。(2) 鍵盤掃描

5、模塊 設(shè)置鍵盤掃描模塊,采用行列反轉(zhuǎn)發(fā),先pc4-pc7輸出低電平,然后讀入pc0-pc3.再讓pc0-pc3輸出低電平,讀入pc4-pc7.合并掃描值,獲得按鍵值。(3) 量綱轉(zhuǎn)換模塊 量綱轉(zhuǎn)換模塊在中斷服務(wù)程序內(nèi)完成,只要將in0的數(shù)字量分別除以51, 商存入顯示in0的個位存儲單元; 余數(shù)乘以十,再除以51, 商存入十分位存儲單元; 余數(shù)再乘以十,除以51, 若余數(shù)大于25,則商加1, 小于25則舍去, 這樣就達到四舍五入的精度, 再把商存入百分位存儲單元; 以供七段數(shù)碼管顯示時調(diào)用,bcd碼轉(zhuǎn)換模塊可參考圖10所示的流程圖。(4) 數(shù)碼管顯示模塊數(shù)碼管顯示模塊比較簡單,自編程序可參考實

6、驗指導(dǎo)書圖1-6所示的流程圖,也可參考實驗8255并行口中的顯示模塊,應(yīng)注意的是在顯示個位時, 要加上小數(shù)點的顯示,這可以在查表獲取個位段碼后,再加上80h來實現(xiàn),注意每一位顯示后要適當(dāng)延遲時間。(5) 中斷服務(wù)子程序模塊 考慮到0832的輸出是0809 in1的輸入,因此,為防止在執(zhí)行中斷服務(wù)子程序時,二次進入中斷服務(wù)子程序, 故在進入中斷服務(wù)子程序后,應(yīng)關(guān)閉中斷,而在退出中斷前開中斷,以便下次中斷進入。中斷服務(wù)子程序模塊主要完成對in0數(shù)據(jù)的讀取和保存,對in1的啟動和讀取,對in0數(shù)據(jù)的bcd轉(zhuǎn)換等任務(wù)。1、 程序流程圖 數(shù)據(jù)采集三主程序流程圖如圖4-3-2所示; 中斷服務(wù)子程序如圖4-

7、3-3所示。數(shù)碼管顯示子程序流程圖如圖3-4-7所示,鍵盤掃描流程圖如圖 4-3-4所示。yn初 始 化顯示提示信息關(guān)中斷保存原中斷向量表內(nèi)容設(shè)置新的中斷向量表保存原中斷屏蔽寄存器值允許irq2中斷8254初始化開中斷啟動0809 in0flag=0ffhin0值量綱轉(zhuǎn)換后送顯存調(diào)用數(shù)碼管顯示子程序?qū)n1的值進行ascii碼轉(zhuǎn)換顯示器顯示in1的值有鍵按下嗎?恢復(fù)原中斷屏蔽寄存器值恢復(fù)原中斷向量表內(nèi)容結(jié) 束 圖4-3-2 數(shù)據(jù)采集三主程序流程圖ny圖4-3-3 中斷服務(wù)子程序流程圖讀in0值, 保存in0值按要求變換后,送0832輸出 啟動in1flag=0 讀in1值, 保存發(fā)中斷結(jié)束命令

8、返回主程序恢復(fù)現(xiàn)場 ; 開中斷保護現(xiàn)場 ; 關(guān)中斷flag=01h ?列值為0,讀行值,屏蔽高四位后保存行值為0,讀列值,屏蔽低四位后保存 al=合并行列后取反 al=0?ysi=鍵盤掃描碼首址,cx=16,dl=0nal=si?yn 鍵值=dl鍵值緩沖區(qū)移位dl+1,si+1 cx-1nn cx=0? 返回 圖4-3-4 鍵盤掃描程序流程圖六、試驗所遇問題及解決方法問題1:轉(zhuǎn)動電位器時數(shù)碼管電壓變化不靈敏,有很嚴(yán)重的遲滯現(xiàn)象,且輸出不穩(wěn)定。分析:每次轉(zhuǎn)動電位器都對應(yīng)一次中斷請求,中斷數(shù)據(jù)采集頻率對應(yīng)8254的out0輸出的600khz,即對clk0輸入的1.8432mhz的三分頻。我想問題應(yīng)

9、該是采樣頻率太低的原因,輸出之所以不穩(wěn)定也是有可能因為頻率不匹配的問題。解決方法:修改8254計數(shù)器0的計數(shù)初值,將原來的3改為了2,即對應(yīng)2分頻,結(jié)果電位器變化與數(shù)碼管電壓變化基本一致。問題2:中斷服務(wù)子程序中要實現(xiàn)0809通道0的數(shù)字量以線性控制方式送dac0832輸出,當(dāng)通道0的電壓為5v時,0832的out為0v, 當(dāng)通道0的電壓為0時,0832的out為2.5v,但是我們的程序中線性變換結(jié)果混亂。分析:設(shè)0809通道0的值為x,dac0832的輸出端數(shù)據(jù)為y,根據(jù)實驗所給數(shù)據(jù)推得x與y的數(shù)值關(guān)系式為y=(5-x)/2。解決方法:將中斷服務(wù)子程序中的0809通道0的數(shù)字量和dac083

10、2輸出量之間的轉(zhuǎn)換函數(shù)修改為mov in0in, al ; a1為in0 mov ah,0 div n (n=2) ; in0 ad后線性轉(zhuǎn)換給0832的值 neg al add al,80h mov bl,al cmp bl,40h jb ss1 sub bl,4 ss1: mov al,bl mov a3,al mov dx,dacs out dx,al最后0809通道0的數(shù)據(jù)和0832輸出端的數(shù)據(jù)得到正確的對應(yīng)關(guān)系。七、心得體會及建議 體會: 通過一學(xué)期的學(xué)習(xí),我發(fā)現(xiàn)匯編語言與我之前所學(xué)過的c+完全不同,匯編語言是從計算機內(nèi)部結(jié)構(gòu)出發(fā),立足于cpu存儲結(jié)構(gòu)進行編程,更加基礎(chǔ),深入。 為了

11、順利完成課程設(shè)計,在進行編程之前,我把中斷控制器8259、并行控制8255、時鐘發(fā)生器8254以及a/d轉(zhuǎn)換0809和d/a轉(zhuǎn)換0832的工作原理以及工作方式進行了深入的回顧與理解。 結(jié)合以前80x86實驗內(nèi)容,我完成了課程設(shè)計的編程。接下來是上機調(diào)試,經(jīng)過匯編鏈接,有幾個小問題,經(jīng)過檢查順利排除。程序已經(jīng)可以生成.exe文件執(zhí)行了,但是轉(zhuǎn)動電位器,屏幕上現(xiàn)實in0和in1的值但是關(guān)系不正確。后來經(jīng)過仔細研究in0經(jīng)轉(zhuǎn)換后的數(shù)字量應(yīng)該進行的變換,調(diào)整了程序,終于實現(xiàn)了功能。驗收時,老師讓我們修改源程序與試驗箱上的接線。這對我來說也是一次挑戰(zhàn),我根據(jù)自己的理解,修改了源程序與接線,編譯鏈接之后,

12、實現(xiàn)了轉(zhuǎn)動電位器,在不同電壓范圍內(nèi)發(fā)出不同頻率聲音的功能。也順利通過了老師的驗收。通過這次課程設(shè)計,自己對編程解決問題不是那么恐懼了,相反還有了很大的興趣。我發(fā)現(xiàn),當(dāng)我們把匯編語言當(dāng)成一種工具,而不是一門考試時,就能更加好的掌握它。建議:1.希望老師們能在上課期間增加必要的試驗箱器件知識,同時在課外增加一些匯編語言在生活中應(yīng)用的相關(guān)知識介紹,幫助學(xué)生提高工程意識,在后期學(xué)習(xí)當(dāng)中有一種將知識運用于實踐的思想。2.希望老師可以提前布置和安排微機原理課設(shè)的任務(wù),不要等到微機原理課程結(jié)束且考試也已經(jīng)結(jié)束的情況下載布置微機課設(shè),老師們也知道,一方面微機原理已經(jīng)考完大家在微機原理課程上投入的時間肯定不會太

13、多,大家對匯編語言的編寫說實話也就少了幾分熱情;另一方面,隨著期末考試的緊逼,后續(xù)課程的復(fù)習(xí)也是大家要付出很多時間的。以上兩點建議希望老師們能接納,先謝謝老師了。八、源程序 ;*回車宏定義*crlf macro mov dl, 0dh mov ah,02h int 21h ;宏定義了回車 endm ;*端口地址定義* y0equ 3000h ;片選y0對應(yīng)的端口始地址,0809,0832y2 equ 3040h ;片選y2對應(yīng)的端口始地址in1 equ y0+01h*4adcsequ y0 ;ad0809的端口地址dacsequ y2 ;dac0832的端口地址y3 equ 3060h tim

14、er0 equy3+00h*4 ;8254計數(shù)器0端口地址,8254timer1 equy3+01h*4 ;8254計數(shù)器1端口地址timer2 equy3+02h*4 ;8254計數(shù)器2端口地址tctl equ y3+03h*4 ;8254控制寄存器端口地址y1 equ 3020h ;片選y1對應(yīng)的端口始地址,8255pa55 equ y1+00h*4 ;8255的a口地址pb55 equ y1+01h*4 ;8255的b口地址pc55 equ y1+02h*4 ;8255的c口地址pctl equ y1+03h*4 ;8255的控制寄存器地址intr_ivaddequ 01c8h;intr

15、對應(yīng)的中斷矢量地址,8259intr_ocw1 equ 0a1h ;intr對應(yīng)pc機內(nèi)部8259的ocw1地址intr_ocw2 equ 0a0h ;intr對應(yīng)pc機內(nèi)部8259的ocw2地址intr_im equ 0fbh;intr對應(yīng)的中斷屏蔽字y7 equ 30e0h;片選y7對應(yīng)的端口始地址my8259_icw1 equ y7+00h;實驗系統(tǒng)中8259的icw1端口地址my8259_icw2 equ y7+04h;實驗系統(tǒng)中8259的icw2端口地址my8259_icw3 equ y7+04h;實驗系統(tǒng)中8259的icw3端口地址my8259_icw4 equ y7+04h;實驗

16、系統(tǒng)中8259的icw4端口地址my8259_ocw1 equ y7+04h;實驗系統(tǒng)中8259的ocw1端口地址my8259_ocw2 equ y7+00h;實驗系統(tǒng)中8259的ocw2端口地址my8259_ocw3 equ y7+00h;實驗系統(tǒng)中8259的ocw3端口地址;*堆棧段定義* stack1 segment stackdw 256dup(?)stack1 ends;*堆棧段定義* data segmentdctbldb 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;數(shù)碼管的段碼表 db 77h,7ch,39h,5eh,79h,71h,00hn

17、 db 2in0in db ?in1out db ?a3 db ?b db 3 dup(?)d1 db 0ahe1 db 33hflag db ?mes4db0dh,0ah,'+ welcome to wei ji yuan li ke she: +',0dh,0ah,'$'mes0db0dh,0ah,'* data colection system *',0dh,0ah,'$'mes1db0dh,0ah,'- zuo zhe :liu jing and wang zhi ming',0dh,0ah,'$&

18、#39;messdb 0dh, 'press any key to end the system!',0dh,0ah,0dh, 0ah,'$'mes2db 0dh, 'in1out data : $',0dh,'$' cs_bak dw ? ;保存intr原中斷處理程序入口段地址的變量ip_bak dw ? ;保存intr原中斷處理程序入口偏移地址的變量im_bak db ? ;保存intr原中斷屏蔽字的變量data ends;*代碼段定義* codesegmentassume cs:code,ss:stack1,ds:datas

19、tart: movax,data movds,ax mov al, 10000000b ;8255初始 mov dx, pctl out dx, al movdx,offset mes4 movah,9 ;顯示mes4 int 21h movdx,offset mes0 movah,9 ;顯示mes0 int 21h movdx,offset mes1 movah,9 ;顯示mes1 int 21h movdx,offset mess movah,9 ;顯示mess int 21h cli ; 8259初始 mov ax,0000h mov es,ax ;替換intr的中斷矢量 mov di,

20、intr_ivadd ;保存intr原中斷處理程序入口偏移地址 mov ax,es:di mov ip_bak,ax mov ax,offset myisr ;設(shè)置當(dāng)前中斷處理程序入口偏移地址 mov es:di,ax add di,2 mov ax,es:di ;保存intr原中斷處理程序入口段地址 mov cs_bak,ax mov ax,seg myisr ;設(shè)置當(dāng)前中斷處理程序入口段地址 mov es:di,ax mov dx,intr_ocw1 ;設(shè)置中斷屏蔽寄存器,打開intr的屏蔽位 in al,dx ;保存intr原中斷屏蔽字 mov im_bak,al and al,intr

21、_im ;允許pc機內(nèi)部8259的ir2中斷 out dx,al mov dx,my8259_icw1; 初始化實驗系統(tǒng)中8259的icw1 mov al,13h ;邊沿觸發(fā)、單片8259、需要icw4 out dx,al mov dx,my8259_icw2 mov al,08h ;初始化實驗系統(tǒng)中8259的icw2 out dx,al mov dx,my8259_icw4 ;初始化實驗系統(tǒng)中8259的icw4 mov al,01h ;非自動結(jié)束eoi out dx,al mov dx,my8259_ocw3 mov al, 0ah out dx, al mov dx,my8259_ocw1

22、 ;初始化實驗系統(tǒng)中8259的ocw1 mov al,0fch ;打開ir0的屏蔽位 outdx,al mov dx, tctl ;8254初始 mov al, 17h out dx, al mov dx, timer0; mov al,2 out dx,al sti s33: mov al, 0 mov dx,adcs;啟動0809 in0 out dx,al mov flag,0ffh call dispint0 mov dx,offset mes2 mov ah,9 ;顯示mes2 int 21h mov al,in1out call dispint1 mov dl,0ffh mov a

23、h,6 int 21h jz s33 quit: cli mov ax,0000h ;恢復(fù)intr原中斷矢量 mov es,ax movdi,intr_ivadd ;恢復(fù)intr原中斷處理程序入口偏移地址 mov ax,ip_bak mov es:di,ax add di,2 mov ax,cs_bak;恢復(fù)intr原中斷處理程序入口段地址 mov es:di,ax mov dx,intr_ocw1 mov al,im_bak ;恢復(fù)intr原中斷屏蔽寄存器的屏蔽字 out dx,al sti exit: mov ah,4ch ;返回到dos int 21h;*數(shù)碼管顯示int1*dispin

24、t1 proc push ax mov bl,al ; 屏幕顯示 and al,0f0h movcl,4 ; 顯示高位 ror al,cl callcrt1 moval,bl andal,0fh ;顯示低位 callcrt1 crlf pop ax retdispint1 endp crt1proc addal,30h cmpal,39h jbe d0 add al,7 ;在屏幕上顯示一位16進制字符d0: movdl,al movah,2 int 21h ret crt1endp;*數(shù)碼管顯示int0*dispint0 proc pushds pushax mov al,in0in ;轉(zhuǎn)換i

25、n0個位 十分位 百分位 mov ah,0 div e1 mov si,offset b mov si,al mov al,ah mov ah,0 mul d1 div e1 inc si mov si,al mov al,ah mov ah,0 mul d1 div e1 inc si cmp ah,19h jnbe s11 mov al,0 jmp s2s11: inc als2: mov si,al movcl,8 ;從最左邊開始顯示 movsi,offset b moval,si leabx,dctbl xlat ;輸出段碼 add al,80h movdx,pb55 outdx,al

26、 movdx,pa55 moval,cl ;輸出位碼 outdx,al calldelay incsi ;段碼地址+1 rolcl,1 ;位碼向左移1位 moval,si leabx,dctbl xlat movdx,pb55 outdx,al movdx,pa55 moval,cl ;輸出位碼 outdx,al calldelay incsi ;段碼地址+1 rolcl,1 ;位碼向左移1位 moval,si leabx,dctbl xlat movdx,pb55 outdx,al movdx,pa55 moval,cl ;輸出位碼 outdx,al calldelay ;輸出三位碼 movsi,offset b mov al

溫馨提示

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

最新文檔

評論

0/150

提交評論