實驗?zāi)康?/B>
1、掌握A/D轉(zhuǎn)換器0809的工作原理及其與8031的連接方法。
2、掌握A/D轉(zhuǎn)換的程序設(shè)計。
實驗板中,A/D接口采用0809芯片,其接口連接如圖6-1示。8路模擬輸入,由A、B、C三腳選擇。輸入Vin=0~5V時,相應(yīng)輸出00H~FFH。
為了啟動A/D轉(zhuǎn)換,應(yīng)在STAR引腳加正脈沖,通??捎脤懭胫噶頜OVX @DPTR,A來獲得。A/D轉(zhuǎn)換結(jié)束后,EOC腳發(fā)出高電平,通知CPU從數(shù)據(jù)口D7~D0讀取轉(zhuǎn)換結(jié)果。線路中,0809 EOC接至8031的INT1,所以即可通過查詢,也可利用中斷響應(yīng)來判斷A/D轉(zhuǎn)換是否完成。
本實驗僅采集一路(IN1)的模擬輸入0~5V,假設(shè)A/D轉(zhuǎn)換的結(jié)果存放于CPU內(nèi)RAM 50H。下面分別列出查詢法或中斷法的轉(zhuǎn)換程序。
ORG? 0600H |
查詢法 | |
?? AD1: |
MOV ?DPTR, #5001H |
|
MOVX ?@DPTR, A |
;啟動0809通道1 | |
MOV ?R2, #20H |
;延時 | |
? ?DL: |
DJNZ ?R2, DL |
|
WEND: |
JB ?P3.3 ,WEND |
;等待A/D完成 |
MOVX ?A, @DPTR |
;讀A/D結(jié)果 | |
MOV ?50H, A |
;存50H | |
RET |
||
ORG ?0620H |
中斷法,主程序。 | |
MAIN: |
MOV ?SP #60H |
;設(shè)置堆棧指針 |
SETB ?EA |
;開CPU中斷 | |
SETB? EX1 |
;允許INT1中斷 | |
SETB ?IT1 |
;INT1邊沿觸發(fā) | |
?? |
MOV ?DPTR, #5001H |
|
MOVX ?@DPTR, A |
;啟動0809通道1 | |
SJMP ?$ |
;等待中斷或其它 | |
ORG ?0013H |
||
LJMP ?AD2 |
;中斷入口 | |
ORG? 0640H |
||
? ?AD2: |
PUSH ?PSW |
; A/D中斷服務(wù)子程序 |
PUSH ?A |
;入棧保護 | |
PUSH ?DPL |
||
PUSH ?DPH |
||
MOV ?DPTR, #5001H |
||
MOVX ?A, @DPTR |
;讀A/D轉(zhuǎn)換結(jié)果 | |
MOV ?50H, A |
;結(jié)果存50H | |
MOV ?DPTR, #5001H |
||
MOVX ?@DPTR ,A |
;再次啟動通道1 | |
POP ?DPH |
;恢復(fù)現(xiàn)場 | |
POP ?DPL |
||
POP ?A |
||
POP ?PSW |
||
RETI |
實驗步驟:
1、 輸入程序。
2、采用設(shè)置斷點和連續(xù)執(zhí)行方式,運行程序。檢查模擬輸入電壓和A/D轉(zhuǎn)換結(jié)果之間是否互相對應(yīng)。
思考題:
1、中斷法A/D采樣程序,中斷子程序中為什么要再次啟動A/D?
2、仿真調(diào)試中,如何確認中斷已經(jīng)響應(yīng)?
3、如果采集8路輸入,程序如何改寫?
(二)A/D演示實驗
實驗內(nèi)容:
實驗板的最左二位數(shù)碼管顯示0809通道1的A/D轉(zhuǎn)換結(jié)果(16進制數(shù)字量),它經(jīng)標度變換后得到的模擬輸入電壓值(10進制)顯示在最右三位,兩者之間以“一”號分開。
設(shè)A/D轉(zhuǎn)換結(jié)果為數(shù)字量N,則對應(yīng)的模擬輸入大小為 。可見,只要將乘積5×N的小數(shù)點右移8位,就能實現(xiàn)標度變換了。
參考程序:
ORG ?0000H |
||
LJMP ?MAIN |
||
ORG |
||
? MAIN: |
MOV ?SP, #60H |
;設(shè)置堆棧 |
MOV ?DPTR, #0B000H |
;8155命令字 | |
MOV ?A, #03H |
||
MOVX ?@DPTR, A |
;A、B口輸出,C口輸入 | |
MOV ?R0, #2AH |
;顯示初始化 | |
MOV ?A, #11H |
;全部亮“一” | |
?? ML0: |
MOV ?@R0, A |
|
INC ?R0 |
||
CJNE ?R0, #30H, ML0 |
||
?? DIS: |
LCALL ?DISP |
;調(diào)用顯示 |
LCALL ?AD1 |
;調(diào)用A/D | |
MOV ?A, 50H |
;采樣值高8位送顯示緩沖2A | |
ANL ?A, #0F0H |
||
SWAP ?A |
||
MOV ?2AH, A |
||
MOV ?A, 50H |
;低8位送顯示緩沖2B | |
ANL ?A, #0FH |
||
MOV ?2BH, A |
||
MOV ?A, 50H |
;標度度換:5×N×2-8 | |
MOV ?B, #05H |
||
MUL ?AB |
;結(jié)果:整數(shù)存B,小數(shù)存A | |
PUSH ?A |
;暫存 | |
MOV ?A, B |
;整數(shù)加亮小數(shù)點后送顯示2DH | |
ADD ?A, #14H |
;14H為顯示字形碼中加亮小數(shù)點的偏移量 | |
MOV ?2DH, A |
||
POP ?R3 |
;小數(shù)部分變換為BCD碼后,存入顯示緩沖2EH、2FH | |
MOV ?R0, #2E |
;調(diào)用二進制小數(shù)→十進制 | |
LCALL ?PBTD |
||
SJMP ?DIS |
||
END |
實驗步驟:
1、輸入程序。
2、單步執(zhí)行,觀察程序執(zhí)行過程。
3、連續(xù)運行。改變模擬輸入的大小,觀察顯示結(jié)果。
思考題:
擬將實驗板作為溫度變送器的測量值數(shù)字顯示。溫度變送器量程0~300℃、輸出0~5V,接至0809的通道1,試編寫程序。
評論
查看更多