機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
AD0809在51單片機(jī)中的應(yīng)用
AD0809在51單片機(jī)中的應(yīng)用
 更新時(shí)間:2009-11-13 14:41:21  點(diǎn)擊數(shù):0
【字體: 字體顏色

我們在做一個(gè)單片機(jī)系統(tǒng)時(shí),常常會(huì)遇到這樣那樣的數(shù)據(jù)采集,在這些被采集的數(shù)據(jù)中,大部分可以通過我們的I/O口擴(kuò)展接口電路直接得到,由于51單片機(jī)大部分不帶AD轉(zhuǎn)換器,所以模擬量的采集就必須靠A/DV/F實(shí)現(xiàn)。下現(xiàn)我們就來了解一下AD080951單片機(jī)的接口及其程序設(shè)計(jì)。

1AD0809的邏輯結(jié)構(gòu)

ADC08098位逐次逼近型A/D轉(zhuǎn)換器。它由一個(gè)8路模擬開關(guān)、一個(gè)地址鎖存譯碼器、一個(gè)A/D轉(zhuǎn)換器和一個(gè)三態(tài)輸出鎖存器組成(見圖1)。多路開關(guān)可選通8個(gè)模擬通道,允許8路模擬量分時(shí)輸入,共用A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。三態(tài)輸出鎖器用于鎖存A/D轉(zhuǎn)換完的數(shù)字量,當(dāng)OE端為高電平時(shí),才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完的數(shù)據(jù)。

                    

2、AD0809的工作原理

IN0IN78條模擬量輸入通道

ADC0809對(duì)輸入模擬量要求:信號(hào)單極性,電壓范圍是05V,若信號(hào)太小,必須進(jìn)行放大;輸入的模擬量在轉(zhuǎn)換過程中應(yīng)該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。

地址輸入和控制線:4

ALE為地址鎖存允許輸入線,高電平有效。當(dāng)ALE線為高電平時(shí),地址鎖存與譯碼器將A,B,C三條地址線的地址信號(hào)進(jìn)行鎖存,經(jīng)譯碼后被選中的通道的模擬量進(jìn)轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。A,BC為地址輸入線,用于選通IN0IN7上的一路模擬量輸入。通道選擇表如下表所示。

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

數(shù)字量輸出及控制線:11

ST為轉(zhuǎn)換啟動(dòng)信號(hào)。當(dāng)ST上跳沿時(shí),所有內(nèi)部寄存器清零;下跳沿時(shí),開始進(jìn)行A/D轉(zhuǎn)換;在轉(zhuǎn)換期間,ST應(yīng)保持低電平。EOC為轉(zhuǎn)換結(jié)束信號(hào)。當(dāng)EOC為高電平時(shí),表明轉(zhuǎn)換結(jié)束;否則,表明正在進(jìn)行A/D轉(zhuǎn)換。OE為輸出允許信號(hào),用于控制三條輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE1,輸出轉(zhuǎn)換得到的數(shù)據(jù);OE0,輸出數(shù)據(jù)線呈高阻狀態(tài)。D7D0為數(shù)字量輸出線。

CLK為時(shí)鐘輸入信號(hào)線。因ADC0809的內(nèi)部沒有時(shí)鐘電路,所需時(shí)鐘信號(hào)必須由外界提供,通常使用頻率為500KHZ

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

3、ADC0809應(yīng)用說明

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

(2).      初始化時(shí),使STOE信號(hào)全為低電平。

(3).      送要轉(zhuǎn)換的哪一通道的地址到A,B,C端口上。

(4).      ST端給出一個(gè)至少有100ns寬的正脈沖信號(hào)。

(5).      是否轉(zhuǎn)換完畢,我們根據(jù)EOC信號(hào)來判斷。

(6).      當(dāng)EOC變?yōu)楦唠娖綍r(shí),這時(shí)給OE為高電平,轉(zhuǎn)換的數(shù)據(jù)就輸出給單片機(jī)了。

4、AD0809的應(yīng)用

   了解完A/D轉(zhuǎn)換芯片,下面我們以圖2為例來完成它的程序設(shè)計(jì)。

電路說明:

電路見圖(2),主要由AD轉(zhuǎn)換器AD0809,頻率發(fā)生器SUN7474,單片機(jī)AT89S51及顯示用數(shù)碼管組成。

AD0809的啟動(dòng)方式為脈沖啟動(dòng)方式,啟動(dòng)信號(hào)START啟動(dòng)后開始轉(zhuǎn)換,EOC信號(hào)在START的下降沿10us后才變?yōu)闊o效的低電平。這要求查詢程序待EOC無效后再開始查詢,轉(zhuǎn)換完成后,EOC輸出高電平,再由OE變?yōu)楦唠娖絹磔敵鲛D(zhuǎn)換數(shù)據(jù)。我們在設(shè)計(jì)程序時(shí)可以利用EOC信號(hào)來通知單片機(jī)(查詢法或中斷法)讀入已轉(zhuǎn)換的數(shù)據(jù),也可以在啟動(dòng)AD0809后經(jīng)適當(dāng)?shù)难訒r(shí)再讀入已轉(zhuǎn)換的數(shù)據(jù)。

AT89S51的輸出頻為晶振頻的1/62MHZ),AT89S1SUN7474連接經(jīng)與7474ST腳提供AD0809的工作時(shí)鐘。AD0809的工作頻范圍為10KHZ-1280KHZ,當(dāng)頻率范圍為500KHZ時(shí),其轉(zhuǎn)換速度為128us

AD0809的數(shù)據(jù)輸出公式為:Dout=Vin*255/5=Vin*51,其中Vin為輸入模擬電壓,Vout

為輸出數(shù)據(jù)。

       當(dāng)輸入電壓為5V時(shí),讀得的數(shù)據(jù)為255再乘以2,得510。我們用510*98%499,再將百位數(shù)碼管的小數(shù)點(diǎn)點(diǎn)亮,顯示為4.99V,顯示值與輸入值基本吻合。

件設(shè)計(jì)思路及程序流程

編程思路:

(1)       AD0809寫入通道號(hào)并啟動(dòng)轉(zhuǎn)換

(2)       延時(shí)1ms后等待EOC出現(xiàn)高電平(JNB  EOC,$)

(3)       OE置高并讀入轉(zhuǎn)換數(shù)據(jù)存入數(shù)據(jù)地址或數(shù)組中。

(4)       顯示

(5)      

 

初始化

1、   寫入通道號(hào)

 

2、   延時(shí)20us后等待EOC變高

 

3、讀入采集到的數(shù)據(jù)并存入數(shù)組存入下一通道

 #include <at89x51.h>
#define uchar unsigned char 
#define uint unsigned int
sbit st=P3^2;
sbit oe=P3^1;
sbit eoc=P3^0;
uchar code tab[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//數(shù)碼管顯示段碼
uchar code td[]={0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70};//通道先擇數(shù)組
uint ad_0809,ad_data1,ad_data2,ad_data3,ad_data0;
uchar m,number;
uchar x[8];//八通道數(shù)據(jù)待存數(shù)組
void delaynms(uint x);//nms延時(shí)程序
void display();//顯示程序
void ad0809();//芯片啟動(dòng)程序
void key();//鍵掃描程序
main()

number=1;
P1=0x00;
while(1)
{
ad0809();//調(diào)AD0809啟動(dòng)子程序
key();//調(diào)按鍵子程序
ad_0809=x[number];//把相關(guān)通道數(shù)據(jù)給ad_0809
display();//調(diào)顯示
}}
//nms延時(shí)程序
void delaynms(uint x)
{
uchar i;
while(x-->0)
{
for(i=0;i<125;i++)
{;}}}
void display()
{
uchar a;
ad_data1=(ad_0809*49/25)/100;//讀得的數(shù)據(jù)乘以2再乘以98%除以100得百位
ad_data2=((ad_0809*49/25)%100)/10;//讀得的數(shù)據(jù)乘以2再乘以98%再分出十位
ad_data3=(((ad_0809*49/25)%100)%10);//讀得的數(shù)據(jù)乘以2再乘以98%再分出個(gè)位
for(a=0;a<10;a++)
{
P0=tab[ad_data3];//送小數(shù)點(diǎn)后第二位顯示
P2=0x07;//選通第一個(gè)數(shù)碼管
delaynms(3);
P0=tab[ad_data2];//送小數(shù)點(diǎn)后第一位顯示
P2=0x0b;//選通第二個(gè)數(shù)碼管
delaynms(3);
P0=tab[ad_data1];//送整數(shù)顯示
P0_7=0;//點(diǎn)亮第三個(gè)數(shù)碼管小數(shù)點(diǎn)
P2=0x0d;// 選通第三個(gè)數(shù)碼管
delaynms(3);
P0=tab[number];//送通道號(hào)顯示
P2=0x0e;
delaynms(3);
}}
void ad0809()
{
uchar i,m=1;
for(i=0;i<8;i++)
{
P0=td[i];//選通通道
oe=0;//以下三條指令為起動(dòng)AD0809
st=0; 
st=1;
st=0;
delaynms(1);
while(!eoc);//等待轉(zhuǎn)換結(jié)束
oe=1;//取出讀得的數(shù)據(jù)
x[m]=P2;//送相關(guān)通道數(shù)組
oe=0;
m++;
}}
void key()
{
if(!P3_5)//P3.5是否按下
{
delaynms(20);//延時(shí)判誤
if(!P3_5)//再一次判斷P3。5是否按下
{
while(!P3_5);//等待P3。5為高電平
number++;//通道號(hào)顯示加一
if(number>8)number=1;//八通道
}}}

 

 

  • 上一篇: 基于89C51的智能轉(zhuǎn)速計(jì)設(shè)計(jì)
  • 下一篇: 沒有了
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1