實驗要求: 應(yīng)用A/D轉(zhuǎn)換器將滑動電阻輸出的模擬電壓量轉(zhuǎn)換為數(shù)字電壓量,將數(shù)字電壓量輸出到四位數(shù)碼管,并通過電壓表給出模擬電壓量的讀數(shù)。下圖是實驗截圖。
實驗方案: 應(yīng)用proteus設(shè)計實驗用模擬電路,A/D轉(zhuǎn)換器采用ADC0804模擬器件,滑動電阻采用proteus支持的POT-HG,四位數(shù)碼管采用7SEG-MPX4CA。
ADC0804模數(shù)轉(zhuǎn)換器
有20個引腳,分辨率為8位,轉(zhuǎn)換時間為100μs,輸入電壓范圍為0~5V。
分辨率:A/D轉(zhuǎn)換器對輸入模擬信號的分辨能力,ADC0804分辨率為8位,即輸出位數(shù)為8個二進制位,可以區(qū)分2^8(256)不同等級的輸入模擬電壓,能區(qū)分輸入的電壓最小值為滿量程輸入的1/2^8(1/256),若需要區(qū)分更小的輸入電壓。就需要增加輸出位數(shù),提高A/D轉(zhuǎn)換器的分辨率。
轉(zhuǎn)換時間:A/D轉(zhuǎn)換器從接收到模擬電壓到輸出數(shù)字電壓需要的時間,不同類型的轉(zhuǎn)換器轉(zhuǎn)換時間不同,并行比較的A/D轉(zhuǎn)換器轉(zhuǎn)換時間可達50ns以內(nèi),逐次比較的A/D轉(zhuǎn)換器轉(zhuǎn)換時間一般在10~100μs之間,雙積分A/D轉(zhuǎn)換器轉(zhuǎn)換時間一般在幾十毫秒到幾百毫秒之間。
CS引腳:芯片的片選信號,低電平有效。若該引腳為低電平,芯片開始工作,若該引腳為高電平,芯片停止工作。當外接多個ADC0804芯片時,該引腳可作為芯片的選擇地址,通過不同的地址信號使用不同的ADC0804芯片,從而可以實現(xiàn)多個ADC通道的分時復用。
WR引腳:采樣觸發(fā)信號,低電平有效。若該引腳由高電平變?yōu)榈碗娖綍r,芯片對模擬信號進行一次采樣,并進行AD轉(zhuǎn)換。
RD引腳:轉(zhuǎn)換數(shù)據(jù)完成信號,低電平有效。若檢測到該引腳為低電平,說明一次轉(zhuǎn)換完成,轉(zhuǎn)換完成的數(shù)據(jù)從DB0~DB7引腳讀取。
VIN+和VIN-引腳:模擬電壓輸入端,用以接收單極性、雙極性和差模輸入信號。雙極性輸入信號有正負電壓、零電壓,單極性輸入信號僅有正電壓。若為單極性輸入信號,VIN+接模擬電壓的輸入,VIN-接地;若為雙極性輸入信號,VIN+和VIN-分別接模擬輸入電壓的正極和負極。
VREF/2引腳:參考電壓接入引腳。該引腳可外接電壓,也可懸空。
CLKIN引腳:引入外部時鐘脈沖,用于芯片的時鐘信號。
CLKR引腳:內(nèi)部時鐘發(fā)生器外接電阻端,與CLKIN端配合可由芯片自身產(chǎn)生時鐘脈沖,時鐘脈沖頻率范圍一般為100KHz~1460KHz。
INTR引腳:轉(zhuǎn)換結(jié)束輸出信號,低電平有效,當一次A/D轉(zhuǎn)換完成后,該引腳被設(shè)置為0。在實際應(yīng)用中,該引腳可與外部中斷輸入引腳相連(如51單片機的INT0,INT1腳),觸發(fā)中斷請求,中斷發(fā)生后,還需等待RD=0才能正確讀出A/D轉(zhuǎn)換結(jié)果。若不使用中斷,該引腳可以懸空。
AGAND和DGAND引腳:模擬接地和數(shù)字接地,兩個引腳可以直接接地。
VCC引腳:接+5V電源。
DB0~DB7引腳:輸出A/D轉(zhuǎn)換后的8位二進制結(jié)果。
四位數(shù)碼管7SEG-MPX4CA
實驗用顯示器件采用四位數(shù)碼管7SEG-MPX4CA,該器件共有12個引腳。其中1、2、3、4引腳為位選信號,用于控制幾個數(shù)碼管亮,A~G引腳為顯示數(shù)字的段選信號,DP引腳為小數(shù)點。
ADC0804中的VCC接入5V電源,REF/2引腳懸空(懸空則相當于與VCC共接5V電源),因此ADC轉(zhuǎn)換的參考電壓為VCC的值,即5V。DB0DB7引腳連接單片機的P1.0P1.7,RD和WR引腳連接單片機的P3.6和P3.7,VIN+引腳接滑動變阻器的可調(diào)節(jié)端,VIN-引腳接地,在VIN+和VIN-引腳之間接入電壓表,CLKIN引腳和CLKR引腳連接的電容和電阻構(gòu)成外部時鐘脈沖。單片機P0.0~P0.7接四位數(shù)碼管的段選線。
單片機內(nèi)運行的完整C程序如下:
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit wr=P3^6;
sbit rd=P3^7;
uchar code dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(uint x)
{
uchar i;
while(x--)
for(i=0;i< 120;i++);
}
void display(uchar db)
{
uchar bw,sw,gw;
float value;
int voltage;
value = (float)db * 5 / 256 * 100;
voltage = (int)value;
bw=voltage/100;
sw=voltage%100/10;
gw=voltage%10;
P2=0x01;
P0=dis[bw]&0x7f;
delay(5);
P2=0x02;
P0=dis[sw];
delay(5);
P2=0x04;
P0=dis[gw];
delay(5);
P2=0x08;
P0=dis[0];
delay(5);
}
void main()
{
uchar i;
while(1)
{
wr=0;
_nop_();
wr=1;
delay(1);
P1=0xff;
rd=0;
_nop_();
for(i=0;i< 10;i++)
display(P1);
}
}
位變量wr和rd用于操作P3.6和P3.7,P3.6和P3.7連接到了ADC0804的WR和RD引腳,用于控制信號采樣和讀取采樣信號。數(shù)組變量dis[]定義了數(shù)碼管顯示的數(shù)字編碼。
delay(uint x)是延遲函數(shù),參數(shù)x為延時的毫秒數(shù)。
display(uchar db)是數(shù)碼管顯示函數(shù),參數(shù)db為P1口,P1口存儲了采集到的電壓數(shù)字量。ADC0804的分辨率為8位,可以區(qū)分2^8(256)不同等級的輸入模擬電壓,且輸入電壓量程為0 ~ 5V,ADC0804輸出的數(shù)值范圍為0~256,轉(zhuǎn)換為電壓(單位V)的公式為:
輸出的數(shù)值*輸入最大量程 / 256
下面的代碼將輸出的數(shù)值轉(zhuǎn)換為電壓的數(shù)字量(單位V),并分別計算出數(shù)字量的各個位數(shù)。
value = (float)db * 5 / 256 * 100;
// 輸出數(shù)值轉(zhuǎn)換為電壓,乘以1000方便計算出數(shù)值的各個位數(shù)
voltage = (int)value;
bw=voltage/100; // 計算出百位數(shù)
sw=voltage%100/10; // 計算出十位數(shù)
gw=voltage%10; // 計算出個位數(shù)
語句P2=0x01選擇數(shù)碼管的第1位顯示數(shù)字,語句P0=dis[bw]&0x7f用于顯示數(shù)字和小數(shù)點,dis[bw]指定的數(shù)字的編碼,再和0x7f做與操作,顯示小數(shù)點。
main()函數(shù)是主控函數(shù),應(yīng)用while結(jié)構(gòu)循環(huán)采集和轉(zhuǎn)換可變電阻輸出的電壓,并將采集的電壓輸出到數(shù)碼管顯示。語句wr=0將ADC0804的wr引腳設(shè)為低電平,通知ADC0804進行采樣,語句_nop_()執(zhí)行_nop_()函數(shù), nop ()函數(shù)不是C語言標準庫的函數(shù),它是51單片機提供的指令,它執(zhí)行一個機器周期的空操作,讓ADC0804完成數(shù)據(jù)采樣和模數(shù)轉(zhuǎn)換,其后執(zhí)行語句wr=1,將ADC0804的wr引腳設(shè)為高電平。語句P1=0xff將P1各端口都設(shè)置為高電平,準備接收采集的數(shù)據(jù),語句rd=0將ADC0804的rd引腳設(shè)為低電平,從DB0~DB7引腳讀取數(shù)據(jù)到P1口。
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8941瀏覽量
150681 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1889瀏覽量
92207 -
模數(shù)轉(zhuǎn)換器
+關(guān)注
關(guān)注
26文章
3294瀏覽量
127944 -
引腳
+關(guān)注
關(guān)注
16文章
1547瀏覽量
52321 -
adc0804
+關(guān)注
關(guān)注
1文章
31瀏覽量
22459
發(fā)布評論請先 登錄
基于ADC0804單片集成A/D轉(zhuǎn)換器時序圖

單片機外設(shè)AD轉(zhuǎn)換器ADC0804時序圖
5962-9581501HXA高端AD模數(shù)轉(zhuǎn)換器
模數(shù)轉(zhuǎn)換器(ADC)的配置有哪些流程?
ADC模數(shù)轉(zhuǎn)換器
STM32之ADC模數(shù)轉(zhuǎn)換器介紹
模數(shù)轉(zhuǎn)換器ADC簡介
ADC0804中文資料.pdf

模數(shù)轉(zhuǎn)換ADC0804的應(yīng)用(含源程序及電路)

電流積分模數(shù)轉(zhuǎn)換器(ADC),什么是電流積分模數(shù)轉(zhuǎn)換器(AD
數(shù)模模數(shù)轉(zhuǎn)換芯片ADC0804數(shù)據(jù)手冊
adc0804工作原理

ADC0804模數(shù)轉(zhuǎn)換51單片機程序與電路

adc0804和adc0809區(qū)別
adc0804操作方法

評論