并行模數(shù)轉換實驗
一、實驗目的
熟悉A/D 轉換的工作原理,學習使用并行模數(shù)轉換芯片ADC0809 進行電壓信號
的采集和數(shù)據(jù)處理。
二、實驗設備及器件
IBM PC 機 一臺
DP-51PROC 單片機綜合仿真實驗儀 一臺
數(shù)字萬用表 一臺
ADC0809 PACK 模塊(選配件) 一套
三、實驗內(nèi)容
通過片外總線方式訪問并行模擬數(shù)字轉換器芯片ADC0809,掌握模擬電壓的通用
采集方法。
四、實驗要求
理解掌握ADC0809 的A/D 轉換原理和并行A/D 轉換器接口的編程方法,學會使
用ADC0809 并行模數(shù)轉換器實現(xiàn)電壓信號采集的方案設計。
五、實驗步驟
1. 將ADC0809 PACK 模塊(選配件)插入PARK2 區(qū);
2. 將D2 區(qū)1K 電位器和10K 電位器的左端金屬孔通過導線連接到該區(qū)的
GND 金屬孔,而右端金屬孔通過導線連接到該區(qū)的VCC 金屬孔;
3. 將D2 區(qū)1K 電位器的中間金屬孔連接到A7 區(qū)的P2_IO2 金屬孔,而D2
區(qū)10K 電位器的中間金屬孔連接到A7 區(qū)的P2_IO1 金屬孔;
4. 將A7 區(qū)的P2_IO3~P2_IO5 分別連接到A2 區(qū)的A2~A0;
5. 將A7 區(qū)的P2_CS 連接到A2 區(qū)的A15;
6. 運行編寫好的軟件程序,每次跑到斷點就會停止,此時觀察轉換的結果和
用數(shù)字萬用表測量的結果相比較是否正確(所需觀察的存儲單元或者變量
在程序中依照注釋執(zhí)行);
7. 改變1K 電位器和/或10K 電位器的旋鈕位置,用數(shù)字萬用表測量中間金
屬孔的電壓,再次運行程序至斷點處, 觀察轉換的結果是否正確。
六、實驗預習要求
認真預習本節(jié)實驗內(nèi)容,按照實驗的要求提前做好實驗準備工作,認真閱讀
ADC0809的數(shù)據(jù)手冊。
七、 實驗參考程序
1. 匯編語言程序:
;使用該程序前請先按照實驗指導手冊連接好連線,
;運行程序至斷點,觀察30H 單元和31H 單元轉換的十六進制
;數(shù)據(jù)換算成實際電壓值是否與萬用表的測量結果相等?
;扭動電位器,改變IN0 或/和IN1 模擬輸入電壓,再次運行程序至
;斷點,觀察30H 或/和31H 單元的數(shù)值是否隨之改變,改變的是否正確?
ORG 8000H
LJMP MAIN
ORG 8100H
MAIN: MOV SP,#70H
MOV R1,#30H ;置數(shù)據(jù)區(qū)首地址,用于存放A/D 轉換結果
MOV DPTR,#7FF8H ;P2.7=0,且指向通道0
MOV R7,#02H ;置通道數(shù)
LOOP: MOVX @DPTR,A ;啟動A/D 轉換
MOV R6,#20H ;軟件延時,等待轉換結束
DELAY: NOP
NOP
NOP
DJNZ R6,DELAY
MOVX A,@DPTR ;讀取轉換結果
MOV @R1,A ;轉存
INC DPTR ;指向下一個通道
INC R1 ;修改數(shù)據(jù)區(qū)指針
DJNZ R7,LOOP ;IN0、IN1 兩個通道全采樣完了嗎?
LJMP MAIN
END
2. C51 程序:
//使用該程序前請先按照實驗指導手冊連接好連線,
//運行程序至斷點,觀察result0 和result1 的轉換結果
//浮點數(shù)值是否與數(shù)字萬用表的測量結果相等?
//扭動電位器,改變IN0 或/和IN1 模擬輸入電壓,再次運行程序至斷點,
//觀察result0 或/和result1 的轉換結果浮點數(shù)值是否隨之改變,改變的是否正確?
#include
#include
#include
#define PIN0 XBYTE[0x7ff8]
#define PIN1 XBYTE[0x7ff9]
typedef unsigned char byte;
typedef unsigned int word;
void main(void)
{
float result0,result1; //兩個通道A/D 轉換結果的存儲變量
float result0_reg,result1_reg; //浮點數(shù)據(jù)輸出存儲
byte i,j;
while(1)
{
for(i=0;i<2;i++) //對IN0、IN1 兩個通道進行采樣
{
if(!i)
PIN0=0xff; //啟動通道0 的A/D 轉換
else
PIN1=0xff; //啟動通道1 的A/D 轉換
for(j=0;j<0x50;j++); //延時,等待轉換的完成
if(!i)
result0_reg=PIN0; //讀取通道0 的轉換結果
else
result1_reg=PIN1; //讀取通道1 的轉換結果
}
result0=result0_reg*5/256;
result1=result1_reg*5/256;
}
}
八、實驗思考
1. 本實驗采用了延時等待的方式等待ADC0809 轉換結束,請用戶改用中斷方式
做一次這個實驗,并說出這個實驗采用中斷方式與延時等待方式相比有哪些優(yōu)
點;
2. 請將D5 區(qū)上的ZLG7290 芯片和數(shù)碼管與本實驗相結合,設計出一個數(shù)字電
壓表,并與商品化的數(shù)字電壓表測量值比較。
評論
查看更多