在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > ADC0809A/D轉(zhuǎn)換芯片的原理及應用

            ADC0809A/D轉(zhuǎn)換芯片的原理及應用

            作者: 時間:2011-12-27 來源:網(wǎng)絡 收藏

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

            本文引用地址:http://www.biyoush.com/article/172275.htm

            (1)ADC0809的內(nèi)部邏輯結(jié)構(gòu)

            82.jpg
            由上圖可知,ADC0809由一個8路模擬開關(guān)、一個地址鎖存與譯碼器、一個A/D器和一個三態(tài)輸出鎖存器組成。多路開關(guān)可選通8個模擬通道,允許8路模擬量分時輸入,共用A/D轉(zhuǎn)換器進行轉(zhuǎn)換。三態(tài)輸出鎖器用于鎖存A/D轉(zhuǎn)換完的數(shù)字量,當OE端為高電平時,才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完的數(shù)據(jù)。

            (2) 引腳結(jié)構(gòu)

            83.jpg

            IN0-IN7:8條模擬量輸入通道

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

            地址輸入和控制線:4條

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

            84.jpg
            數(shù)字量輸出及控制線:11條

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

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

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

            2. ADC0809說明

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

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

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

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

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

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

            3. 實驗任務

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

            4. 電路

            85.jpg
            6. 程序設(shè)計內(nèi)容

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

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

            ABC=110選擇第三通道

            ST=0,ST=1,ST=0產(chǎn)生啟動轉(zhuǎn)換的正脈沖信號

            7. 匯編源程序
            CH EQU 30H
            DPCNT EQU 31H
            DPBUF EQU 33H
            GDATA EQU 32H
            ST BIT P3.0
            OE BIT P3.1
            EOC BIT P3.2

            ORG 00H
            LJMP START
            ORG 0BH
            LJMP T0X
            ORG 30H
            START: MOV CH,#0BCH
            MOV DPCNT,#00H
            MOV R1,#DPCNT
            MOV R7,#5
            MOV A,#10
            MOV R0,#DPBUF
            LOP: MOV @R0,A
            INC R0
            DJNZ R7,LOP
            MOV @R0,#00H
            INC R0
            MOV @R0,#00H
            INC R0
            MOV @R0,#00H
            MOV TMOD,#01H
            MOV TH0,#(65536-4000)/256
            MOV TL0,#(65536-4000) MOD 256
            SETB TR0
            SETB ET0
            SETB EA
            WT: CLR ST
            SETB ST
            CLR ST
            WAIT: JNB EOC,WAIT
            SETB OE
            MOV GDATA,P0
            CLR OE
            MOV A,GDATA
            MOV B,#100
            DIV AB
            MOV 33H,A
            MOV A,B
            MOV B,#10
            DIV AB
            MOV 34H,A
            MOV 35H,B
            SJMP WT
            T0X: NOP
            MOV TH0,#(65536-4000)/256
            MOV TL0,#(65536-4000) MOD 256
            MOV DPTR,#DPCD
            MOV A,DPCNT
            ADD A,#DPBUF
            MOV R0,A
            MOV A,@R0
            MOVC A,@A+DPTR
            MOV P1,A
            MOV DPTR,#DPBT
            MOV A,DPCNT
            MOVC A,@A+DPTR
            MOV P2,A
            INC DPCNT
            MOV A,DPCNT
            CJNE A,#8,NEXT
            MOV DPCNT,#00H
            NEXT: RETI
            DPCD: DB 3FH,06H,5BH,4FH,66H
            DB 6DH,7DH,07H,7FH,6FH,00H
            DPBT: DB 0FEH,0FDH,0FBH,0F7H
            DB 0EFH,0DFH,0BFH,07FH
            END

            8. C語言源程序
            #include AT89X52.H>
            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%10;
            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;
            }
            }



            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉