當前位置:編程學習大全網 - 源碼下載 - 求壹簡易數字電壓表的電路原理圖

求壹簡易數字電壓表的電路原理圖

28.數字電壓表

1.?實驗任務?

利用單片機AT89S51與ADC0809設計壹個數字電壓表,能夠測量0-5V之間的直流電壓值,四位數碼顯示,但要求使用的元器件數目最少。

2.?電路原理圖?

圖1.28.1

3.?系統板上硬件連線?

a)?把“單片機系統”區域中的P1.0-P1.7與“動態數碼顯示”區域中的ABCDEFGH端口用8芯排線連接。

b)把“單片機系統”區域中的P2.0-P2.7與“動態數碼顯示”區域中的S1S2S3S4S5S6S7S8端口用8芯排線連接。

c)把“單片機系統”區域中的P3.0與“模數轉換模塊”區域中的ST端子用導線相連接。

d)把“單片機系統”區域中的P3.1與“模數轉換模塊”區域中的OE端子用導線相連接。

e)?把“單片機系統”區域中的P3.2與“模數轉換模塊”區域中的EOC端子用導線相連接。

f)?把“單片機系統”區域中的P3.3與“模數轉換模塊”區域中的CLK端子用導線相連接。

g)把“模數轉換模塊”區域中的A2A1A0端子用導線連接到“電源模塊”區域中的GND端子上。

h)把“模數轉換模塊”區域中的IN0端子用導線連接到“三路可調電壓模塊”區域中的VR1端子上。

i)?把“單片機系統”區域中的P0.0-P0.7用8芯排線連接到“模數轉換模塊”區域中的D0D1D2D3D4D5D6D7端子上。

4.?程序設計內容?

i.?由於ADC0809在進行A/D轉換時需要有CLK信號,而此時的ADC0809的CLK是接在AT89S51單片機的P3.3端口上,也就是要求從P3.3輸出CLK信號供ADC0809使用。因此產生CLK信號的方法就得用軟件來產生了。

ii.?由於ADC0809的參考電壓VREF=VCC,所以轉換之後的數據要經過數據處理,在數碼管上顯示出電壓值。實際顯示的電壓值?(D/256*VREF)

5.?匯編源程序?

ADC0809中文資料

ADC0809是帶有8位A/D轉換器、8路多路開關以及微處理機兼容的控制邏輯的CMOS組件。它是逐次逼近式A/D轉換器,可以和單片機直接接口。?

(1)ADC0809的內部邏輯結構?

由下圖可知,ADC0809由壹個8路模擬開關、壹個地址鎖存與譯碼器、壹個A/D轉換器和壹個三態輸出鎖存器組成。多路開關可選通8個模擬通道,允許8?路模擬量分時輸入,***用A/D轉換器進行轉換。三態輸出鎖器用於鎖存A/D轉換完的數字量,當OE端為高電平時,才可以從三態輸出鎖存器取走轉換完的數?據。

(2).?ADC0809引腳結構?

ADC0809各腳功能如下:

D7-D0:8位數字量輸出引腳。

IN0-IN7:8位模擬量輸入引腳。

VCC:+5V工作電壓。

GND:地。

REF(+):參考電壓正端。

REF(-):參考電壓負端。

START:A/D轉換啟動信號輸入端。

ALE:地址鎖存允許信號輸入端。

(以上兩種信號用於啟動A/D轉換).

EOC:轉換結束信號輸出引腳,開始轉換時為低電平,當轉換結束時為高電平。

OE:輸出允許控制端,用以打開三態數據輸出鎖存器。

CLK:時鐘信號輸入端(壹般為500KHz)。

A、B、C:地址輸入線。

ADC0809對輸入模擬量要求:信號單極性,電壓範圍是0-5V,若信號太小,必須進行放大;輸入的模擬量在轉換過程中應該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。?

地址輸入和控制線:4條?

ALE為地址鎖存允許輸入線,高電平有效。當ALE線為高電平時,地址鎖存與譯碼器將A,B,C三條地址線的地址信號進行鎖存,經譯碼後被選中的通道的模?擬量進轉換器進行轉換。A,B和C為地址輸入線,用於選通IN0-IN7上的壹路模擬量輸入。通道選擇表如下表所示。

C?B?A?選擇的通道

0?0?0?IN0

0?0?1?IN1

0?1?0?IN2

0?1?1?IN3

1?0?0?IN4

1?0?1?IN5

1?1?0?IN6

1?1?1?IN7

數字量輸出及控制線:11條?

ST為轉換啟動信號。當ST上跳沿時,所有內部寄存器清零;下跳沿時,開始進行A/D轉換;在轉換期間,ST應保持低電平。EOC為轉換結束信號。當?EOC為高電平時,表明轉換結束;否則,表明正在進行A/D轉換。OE為輸出允許信號,用於控制三條輸出鎖存器向單片機輸出轉換得到的數據。OE=1,輸?出轉換得到的數據;OE=0,輸出數據線呈高阻狀態。D7-D0為數字量輸出線。?

CLK為時鐘輸入信號線。因ADC0809的內部沒有時鐘電路,所需時鐘信號必須由外界提供,通常使用頻率為500KHZ,?

VREF(+),VREF(-)為參考電壓輸入。?

2.?ADC0809應用說明?

(1).?ADC0809內部帶有輸出鎖存器,可以與AT89S51單片機直接相連。?

(2).?初始化時,使ST和OE信號全為低電平。?

(3).?送要轉換的哪壹通道的地址到A,B,C端口上。?

(4).?在ST端給出壹個至少有100ns寬的正脈沖信號。?

(5).?是否轉換完畢,我們根據EOC信號來判斷。?

(6).?當EOC變為高電平時,這時給OE為高電平,轉換的數據就輸出給單片機了。

3.?實驗任務?

如下圖所示,從ADC0809的通道IN3輸入0-5V之間的模擬量,通過ADC0809轉換成數字量在數碼管上以十進制形成顯示出來。ADC0809的VREF接+5V電壓。?

4.?ADC0809應用電路原理圖?

6.?程序設計內容?

(1).?進行A/D轉換時,采用查詢EOC的標誌信號來檢測A/D轉換是否完畢,若完畢則把數據通過P0端口讀入,經過數據處理之後在數碼管上顯示。?

(2).?進行A/D轉換之前,要啟動轉換的方法:?

ABC=110選擇第三通道?

ST=0,ST=1,ST=0產生啟動轉換的正脈沖信號?.

C語言源程序

#include?

unsigned?char?code?dispbitcode[]={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f};

unsigned?char?code?dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f,0x00};

unsigned?char?dispbuf[8]={10,10,10,10,10,0,0,0};

unsigned?char?dispcount;

sbit?ST="P3"^0;

sbit?OE="P3"^1;

sbit?EOC="P3"^2;

unsigned?char?channel="0xbc";//IN3

unsigned?char?getdata;

void?main(void)

{

TMOD=0x01;

TH0=(65536-4000)/256;

TL0=(65536-4000)%256;

TR0=1;

ET0=1;

EA=1;

P3=channel;

while(1)

{

ST=0;

ST=1;

ST=0;

while(EOC==0);

OE=1;

getdata=P0;

OE=0;

dispbuf[2]=getdata/100;

getdata=getdata%100;

dispbuf[1]=getdata/10;

dispbuf[0]=getdata%10;

}

}

void?t0(void)?interrupt?1?using?0

{

TH0=(65536-4000)/256;

TL0=(65536-4000)%256;

P1=dispcode[dispbuf[dispcount]];

P2=dispbitcode[dispcount];

dispcount++;

if(dispcount==8)

{

dispcount=0;

}

dispbuf[i]=temp;?

ST=1;?

ST=0;?

}?

}?

}?

void?t0(void)?interrupt?1?using?0?

{?

CLK=~CLK;?

}?

void?t1(void)?interrupt?3?using?0?

{?

TH1=(65536-4000)/256;?

TL1=(65536-4000)%256;?

P1=dispcode[dispbuf[dispcount]];?

P2=dispbitcode[dispcount];?

if(dispcount==7)?

{?

P1=P1?|?0x80;?

}?

dispcount++;?

if(dispcount==8)?

{?

dispcount=0;?

}?

}

  • 上一篇:魔獸世界妳的第壹個中音源鎖解謎攻略wow9.2妳的第壹個中音源鎖任務怎麽做
  • 下一篇:騰訊微雲如何使用
  • copyright 2024編程學習大全網