版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、微型計算機(jī)技術(shù)課程設(shè)計 模擬電壓采集電路指導(dǎo)教師: 學(xué)生班級: 學(xué)生姓名: 學(xué) 號: 班內(nèi)序號: 41 課設(shè)日期:2013年1月11日2013年1月16日 同組隊員:24 目錄一 設(shè)計任務(wù)、設(shè)計要求、設(shè)計目的-1二 課題設(shè)計思路-2三 設(shè)計儀器、器件-3 以及芯片介紹-3 74ls138-3 8253-4 8255a-5 adc0809-6 adc0809與8255a的連接-7 8259內(nèi)部結(jié)構(gòu)及原理-7 數(shù)碼管-9四 芯片初始化編程程序初始化8255和8253-10(1) 初始化8255-10(2) 初始化8253-10編寫中斷服務(wù)子程序-11五 程序流程圖-12adc主程序編寫-12中斷流
2、程-12六 硬件連接圖-13七 程序代碼-14八 主要難點(diǎn)及解決思路和辦法-19九 課設(shè)設(shè)結(jié)果及分析-20十收獲、體會和建議-21一、設(shè)計任務(wù)利用微型計算機(jī)原理課程中所學(xué)的主要可編程接口芯片74ls138、8253、8255a、adc0809和中斷控制器8259設(shè)計一個模擬電壓采集電路。采用adc0809設(shè)計一個單通道模擬電壓采集電路,要求對所接通道變化的模擬電壓值進(jìn)行采集,采集來的數(shù)字量送至數(shù)碼管led指示,采集完100個數(shù)據(jù)后停止采集過程。設(shè)計要求1、 選用8088cpu和適當(dāng)?shù)拇鎯ζ餍酒?、接口芯片完成相?yīng)的功能。2、 畫出詳細(xì)的硬件連接圖。3、 畫出各程序的詳細(xì)框圖。4、 給出ram地址
3、分配表及接口電路的端口地址。5、 給出設(shè)計思路。6、 給出程序所有清單并加上必要的注釋。7、 完成設(shè)計說明書。設(shè)計目的1. 通過本設(shè)計,使學(xué)生綜合運(yùn)用微型計算機(jī)技術(shù)、匯編語言程序設(shè)計以及電子技術(shù)等課程的內(nèi)容,為以后從事計算機(jī)檢測與控制工作奠定一定的基礎(chǔ)。2. 主要掌握并行i/o接口芯片8253、8255a、adc0809及中斷控制芯片8259a等可編程器件的使用,掌握譯碼器74ls138的使用。3. 學(xué)會用匯編語言編寫一個較完整的實用程序。4. 掌握微型計算機(jī)技術(shù)應(yīng)用開發(fā)的全過程:分析需求、設(shè)計原理圖、選用元器件、布線、編程、調(diào)試、撰寫報告等步驟。2、 設(shè)計思路: 本設(shè)計是利用已給芯片配搭相應(yīng)
4、輔助器件完成一個對電壓的采集并顯示的過程。我對這個課題的設(shè)計思路如下: 先用adc0809模數(shù)轉(zhuǎn)換芯片作為與外部測量到的模擬量相連接,如果adc0809接收到模擬量時,將其轉(zhuǎn)化為相應(yīng)的數(shù)字信號。然后中斷芯片8259不停地對外設(shè)進(jìn)行探測,沒有發(fā)現(xiàn)中斷就繼續(xù)探測,當(dāng)有模擬量轉(zhuǎn)化為數(shù)字量時,就有中斷執(zhí)行。8088開始工作,通過接口電路8255a對數(shù)據(jù)進(jìn)行傳輸,最后顯示在數(shù)碼管上!100個數(shù)據(jù)還得分配相應(yīng)的內(nèi)存空間(本設(shè)計中沒有畫出相應(yīng)的存儲芯片)。本設(shè)計以8088為中心,通過譯碼器74ls138對個芯片的工作進(jìn)行地址分配,控制各個芯片工作在何種狀態(tài)。 當(dāng)?shù)谝粋€模擬信號通過采集放到內(nèi)存并顯示后,中斷執(zhí)
5、行結(jié)束,8088通過控制分頻器8253,在一定時間間隔后再對模擬電壓量進(jìn)行采集,知道執(zhí)行100次之后,采集電壓過程結(jié)束!三、設(shè)計儀器、器件1、一臺微機(jī)原理與接口實驗裝置一套。2、可編程芯片8253、8255a 、adc0809和譯碼器芯片74ls138、8259中斷芯片、數(shù)據(jù)總路線緩沖器74ls245各一片。3、四位數(shù)碼管4、其它邏輯器件、導(dǎo)線若干、示波器、萬用表、常用工具等。74ls138芯片圖:控制方式圖:當(dāng)一個選通端為高電平,另兩個選通端為低電平時,可將地址端(a、b、c)的二進(jìn)制編碼在y0至y7對應(yīng)的輸出端以低電平譯出。比如:abc=110時,則y6輸出端輸出低電平信號。8253825
6、3內(nèi)部有三個計數(shù)器,分別稱為計數(shù)器0、計數(shù)器1和計數(shù)器2,他們的機(jī)構(gòu)完全相同。每個計數(shù)器的輸入和輸出都決定于設(shè)置在控制寄存器中的控制字,互相之間工作完全獨(dú)立。每個計數(shù)器通過三個引腳和外部聯(lián)系,一個為時鐘輸入端clk,一個為門控信號輸入端gate,另一個為輸出端out。每個計數(shù)器內(nèi)部有一個8位的控制寄存器,還有一個16位的計數(shù)初值寄存器cr、一個計數(shù)執(zhí)行部件ce和一個輸出鎖存器ol。8255a8255a在使用前要寫入一個方式控制字,選擇a、b、c三個端口各自的工作方式,共有三種;方式0 :基本的輸入輸出方式,即無須聯(lián)絡(luò)就可以直接進(jìn)行的 i/o方式。其中a、b、c口的高四位或低四位可分別設(shè)置成輸入
7、或輸出。方式1 :選通i/o,此時接口和外圍設(shè)備需聯(lián)絡(luò)信號進(jìn)行協(xié)調(diào),只有a口和b口可以工作在方式1,此時c口的某些線被規(guī)定為a口或b口與外圍設(shè)備的聯(lián)絡(luò)信號,余下的線只有基本的i/o功能,即只工作在方式0.方式2: 雙向i/o方式,只有a口可以工作在這種方式,該i/o線即可輸入又可輸出,此時c口有5條線被規(guī)定為a口和外圍設(shè)備的雙向聯(lián)絡(luò)線,c口剩下的三條線可作為b口方式1的聯(lián)絡(luò)線,也可以和b口一起方式0的i/o線。8255a是一個并行輸入、輸出器件,具有24個可編程設(shè)置的i/o口,包括3組8位的i/o為pa口、pb口、pc口,又可分為2組12位的i/o口:a組包括a口及c口高4位,b組包括b口及c
8、組的低4位。a口可以設(shè)置為方式0、方式1、方式2,b口與c口只能設(shè)置為方式0或方式1.adc08091、提供一個8通道的多路開關(guān)和尋址邏輯l in0in7:8個模擬電壓輸入端l adda、addb、addc:3個地址輸入線l ale:地址鎖存允許信號2、ale的上升沿用于鎖存3個地址輸入的狀態(tài),然后由譯碼器從8個模擬輸入中選擇一個模擬輸入端進(jìn)行a/d3、adc0809的轉(zhuǎn)換時序:4、adc0809內(nèi)部鎖存轉(zhuǎn)換后的數(shù)字量5、具有三態(tài)數(shù)字量輸出端d0d76、配合輸出允許信號oe7、當(dāng)輸出允許信號oe為高電平有效時,將三態(tài)鎖存緩沖器的數(shù)字量從d0d7輸出(4).8255a與adc0809的連接中斷控
9、制器8259 8259芯片的工作原理一個外部中斷請求信號通過中斷請求線irq,傳輸?shù)絠mr(中斷屏蔽寄存器),imr根據(jù)所設(shè)定的中斷屏蔽字(ocw1),決定是將其丟棄還是接受。如果可以接受,則8259a將irr(中斷請求暫存寄存器)中代表此irq的位置位,以表示此irq有中斷請求信號,并同時向cpu的intr(中斷請求)管腳發(fā)送一個信號。但cpu這時可能正在執(zhí)行一條指令,因此cpu不會立即響應(yīng)。而當(dāng)這cpu正忙著執(zhí)行某條指令時,還有可能有其余的irq線送來中斷請求,這些請求都會接受imr的挑選。如果沒有被屏蔽,那么這些請求也會被放到irr中,也即irr中代表它們的irq的相應(yīng)位會被置1。當(dāng)cp
10、u執(zhí)行完一條指令時后,會檢查一下intr管腳是否有信號。如果發(fā)現(xiàn)有信號,就會轉(zhuǎn)到中斷服務(wù),此時,cpu會立即向8259a芯片的inta(中斷應(yīng)答)管腳發(fā)送一個信號。當(dāng)芯片收到此信號后,判優(yōu)部件開始工作,它在irr中,挑選優(yōu)先級最高的中斷,將中斷請求送到isr(中斷服務(wù)寄存器),也即將isr中代表此irq的位置位,并將irr中相應(yīng)位置零,表明此中斷正在接受cpu的處理。同時,將它的編號寫入中斷向量寄存器ivr的低三位(ivr正是由icw2所指定的,不知你是否還記得icw2的最低三位在指定時都是0,而在這里,它們被利用了?。┻@時,cpu還會送來第二個inta信號,當(dāng)收到此信號后,芯片將ivr中的內(nèi)
11、容,也就是此中斷的中斷號送上通向cpu的數(shù)據(jù)線。數(shù)碼管數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極com增加位選通控制電路,位選通由各自獨(dú)立的i/o線控制,當(dāng)單片機(jī)輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是哪個數(shù)碼管會顯示出字形,取決于單片機(jī)對位選通com端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。4、 芯片初始化(1)初始化8255:8255有四個寄存器,地址為300h-303h,分別為a口,b口,c口,和控制口,首先要向c口寫入控制字,控制字格式
12、如下:工作方式控制d7 d6 d5 d4 d3 d2 d1 d0特征位1a組方式選擇端口a輸入/輸出c口高四位輸入/輸出b組方式選擇端口b輸入/輸出端口c低四位輸入/輸出c端口置位/復(fù)位控制d7 d6 d5 d4 d3 d2 d1 d0特征位0任意位選擇置位/復(fù)位 0為復(fù)位,1為置位可用如下代碼初始化8255:mov dx,303h mov al,10011001bout dx,al(2)初始化82538253控制字格式如下d7 d6 d5 d4 d3 d2 d1 d0計數(shù)器選擇讀寫格式工作方式計數(shù)方式輸入時鐘信號為0.5mhz,需要寫入的計數(shù)初值為2,選用計數(shù)器0,工作方式3,代碼如下:mo
13、v dx,307h mov al,00110110b out dx,al mov ax,2 mov dx,304h out dx,al mov al,ah out dx,al(3)編寫中斷服務(wù)子程序首先要設(shè)置好中斷向量,這里是調(diào)用72h號中斷,在里面寫入a/d轉(zhuǎn)換的中斷服務(wù)子程序地址,所以要保存原來72h中斷向量表里面的內(nèi)容,最后在程序完成時要恢復(fù)72h里的內(nèi)容,在執(zhí)行這些操作的時候是不容許中斷的,所以要關(guān)中斷,操作完成后要開中斷,可以用一下指令來完成:cli;獲取原中斷向量里的內(nèi)容并保存 in al,0a1h;設(shè)置中斷屏蔽寄存器,系統(tǒng)自動產(chǎn)生72號中斷 and al,0fbh out 0a1
14、h,al mov ax,3572h int 21h mov intoff,bx mov intseg,es push ds mov dx,offset convert_proc;設(shè)置新的中斷向量 mov ax,seg convert_proc mov ds,ax mov ax,2572h int 21h pop dssti;開中斷,進(jìn)行判斷選擇按什么鍵cli;恢復(fù)1c號中斷向量 mov dx,intoff mov ax,intseg mov ds,ax mov ax,2572h int 21h sti中斷服務(wù)子程序:要想啟動0809進(jìn)行轉(zhuǎn)換,首先必須有一個start信號,該信號為:在轉(zhuǎn)換的時候
15、通過eoc信號來判斷轉(zhuǎn)換是否結(jié)束,當(dāng)eoc信號由0變?yōu)?時就代表轉(zhuǎn)換結(jié)束,此時讓oe引腳為1,這時轉(zhuǎn)換出來的數(shù)據(jù)就輸出了。五、程序流程圖 adc主程序編寫開 始8253初始化8255初始化中斷向量的設(shè)置啟動8253分頻啟動adc有 中 斷?中斷處理采集100次到否?有esc按下?結(jié) 束 六、詳細(xì)的硬件連接圖七、程序代碼stack1 segment stackdw 200 dup(?)stack1 endsdata segmentmesg1 db '8255 checkself 8253 checkself and a/dconversion',0ah,0dh db 'e
16、xit with esc',0ah,0dh,'$'leddata db 0feh,0fdh,0fbh,0f7h,0efh,0dfh,0bfh,7fhnum db 0 count1 db 0int0a_off dw(?)int0a_seg dw(?) data endscode segment assume cs:code,ds:datadelay proc push cx push bx mov bx,0fffhloop2:mov cx,0ffffhloop1:loop loop1 dec bx jnz loop2 pop bx pop cx ret delay end
17、p ;延時程序start: mov ax,data mov ds,ax mov ah,09h mov dx,offset mesg1 int 21h ;顯示提示信息 mov dx,303h ;初始化8255 mov al,80h out dx,al mov dx,301h ;led燈亮4盞滅四盞 mov al,0f0h out dx,al mov ax,3572h ;獲取原中斷向量 int 21h mov int0a_off,bx ;保存原中斷向量 mov bx,es mov int0a_seg,bx cli ;關(guān)中斷 mov ax,2572h mov dx,seg ledlight ;設(shè)置新
18、的中斷向量 push ds mov ds,dx mov dx,offset ledlight int 21h pop ds sti ;開中斷 in al,0a1h ;打開irq10 and al,0fbh out 0a1h,al in al,21h ;打開irq2 and al,0fbh out 21h,al mov dx,307h ;8253定時1s mov al,01110110b out dx,al mov dx,305h mov al,0e8h out dx,al mov al,03h out dx,al mov dx,307h mov al,10110110b out dx,al m
19、ov dx,306h mov al,0e8h out dx,al mov al,03h out dx,all1: mov ah,0bh ;檢查是否有esc鍵按下 int 21h inc al jnz next0 ; 若無鍵按下,則程序往下執(zhí)行 mov ah,08h ;如有esc鍵按下,則程序退出 int 21h cmp al,27 jz exit next0: call delay jmp l1 exit: mov ax,2572h ;恢復(fù)中斷向量 mov dx,int0a_seg push ds mov ds,dx mov dx,int0a_off int 21h pop ds in al,
20、0a1h ;屏蔽irq10 or al,04h out 0a1h,al in al,21h ;屏蔽irq2 or al,04h out 21h,al mov ax,4c00h ;程序退出 int 21h ledlight proc far ;中斷服務(wù)程序 push ax inc count1 mov al,count1 cmp al,100 pop ax jz exit ;采集到100次后退出 cli ;關(guān)中斷 mov dx,303h mov al,10011000b out dx,al ;重寫8255方式字,a口輸入,c口低四位輸出,c口高四位輸入lop: mov dx,303h mov a
21、l,1h out dx,al ;先使pc0為1 mov cx,0f00hlop1: loop lop1 ;延時 mov dx,303h mov al,00h ;使pc0為0下降沿啟動信號 out dx,allopsub: mov dx,302 in al,dx and al,10h jz lopsub ;判斷pc4是否為高,即判斷轉(zhuǎn)換是否結(jié)束 mov dx,303h mov al,5h out dx,al ;使pc2為高,發(fā)出oe mov dx,300h in al,dx ;從a口讀數(shù)據(jù) mov bl,al push ax mov dx,303h mov al,10011001b out dx
22、,al mov dx,301h mov al,bl out dx,al ;將數(shù)據(jù)輸入發(fā)光二極管顯示 pop ax push axshow1: ;顯示高四位 and al,0f0h shr al,4 cmp al,9 ja hex2 add al,30h jmp nextprol1 hex2: add al,37hnextprol1: mov dl,al mov ah,2 int 21h pop ax and al,0fh ;顯示低四位 cmp al,9 ja hex3 add al,30h jmp next4 hex3: add al,37h next4: push ax inc num mo
23、v al,num cmp al,5 pop ax jnz next5 ;使一行輸入5個數(shù)據(jù) mov dl,al mov ah,2 int 21h mov dl,20h ;向屏幕送空格符 mov ah,2 int 21h mov dl,13 ;向屏幕送回車符 mov ah,2 int 21h mov dl,10 ;向屏幕送換行符 mov ah,2 int 21h mov num,0 jmp next next5: mov dl,al mov ah,2 int 21h mov dl,20h ;向屏幕送空格符 mov ah,2 int 21hnext: mov al,62h ;發(fā)中斷結(jié)束命令 mov
24、 dx,0a0h out dx,al ;向從片8259發(fā)eoi命令 out 020h,al ;向主片8259發(fā)eoi命令 sti ;開中斷 iretledlight endpcode ends end start八、設(shè)計過程中的主要難點(diǎn)及解決思路和辦法:在本次設(shè)計中,我遇到的問題很多:1、 adc08009模數(shù)轉(zhuǎn)換芯片的使用,以及對這塊芯片與接口單元8255a的連接很不熟悉。解決方法:先翻閱相關(guān)文獻(xiàn),了解adc0809各個接口的功能以及內(nèi)部結(jié)構(gòu)原理,再和本次設(shè)計的課題相結(jié)合,找出它與8255a的連接方式。2、 譯碼器74ls138如何輸出相應(yīng)的地址控制各個芯片正常工作。解決方法:在設(shè)計前先對這個電路的所有工作方式寫出來,然后通過對相應(yīng)的芯片的片選端進(jìn)行置1或置0,從而對每一個方式進(jìn)行地址譯碼,這樣就可以較簡潔地通過譯碼器輸出相應(yīng)控制地址。3、 中斷處理器8259如何放入設(shè)計電路中,對中斷進(jìn)行執(zhí)行。解決方法:整理思路,結(jié)合中斷處理的過程和原理,結(jié)合本次設(shè)計電路的要求,將每次采集的每一個模擬電壓量看作一次中斷,從而將中斷融入到次電路設(shè)計中去。4、74ls245數(shù)據(jù)總路線緩沖器的原理結(jié)構(gòu)及使用方法不太了解。 解決方法:通過網(wǎng)絡(luò)、書籍等途徑,對74ls245數(shù)據(jù)總路線緩沖器的內(nèi)部結(jié)構(gòu)、原理進(jìn)一步了解,熟悉74ls245的功能表,從
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)五年級數(shù)學(xué)小數(shù)乘除法豎式計算練習(xí)題
- 土方分包合同范本-合同范本
- 《美容項目專業(yè)知識》課件
- 《醫(yī)院急診科的管理》課件
- 屆每日語文試題精練
- 更新采伐公路護(hù)路林許可申請表
- 《家用醫(yī)療用具使用》課件
- 金融產(chǎn)業(yè)電話理財顧問績效總結(jié)
- 快遞公司保安工作總結(jié)
- 醫(yī)療器械行業(yè)安全工作總結(jié)
- 污水處理廠有毒有害氣體檢測記錄表
- 馬克思主義與社會科學(xué)方法論課后思考題答案全
- 針灸推拿習(xí)題庫+參考答案
- 手術(shù)區(qū)皮膚消毒及鋪單法課件
- 血液科侵襲性真菌的治療
- 淺析巖溶地區(qū)工程地質(zhì)勘察手段及應(yīng)用
- 2023-2024學(xué)年六年級上期末數(shù)學(xué)考試試卷附答案解析
- 羅伊模式個案護(hù)理
- 公益性崗位開發(fā)申請審批表
- 中國馬克思主義與當(dāng)代知到章節(jié)答案智慧樹2023年西安交通大學(xué)
- 組織協(xié)同運(yùn)用平衡計分卡創(chuàng)造企業(yè)合力
評論
0/150
提交評論