在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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>

            新聞中心

            ADC0832檢測(cè)模擬電壓值

            作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
            =============================================================================================

            ``````````````````````````````程序思想`````````````````````````````

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

            AD0832與AD08004有所不同,AD0804的數(shù)據(jù)是并行輸出,而AD0832是串行輸出,其思想略有復(fù)雜。

            根據(jù)ADC0832的時(shí)序,首先選通芯片,在第一個(gè)脈沖下沿前讓addi為高,在第二個(gè)下沿前給addi1位數(shù)據(jù),在第三個(gè)下沿前給addi1位數(shù)據(jù),
            兩位數(shù)據(jù)為10時(shí)選通CH0,為11時(shí)選通CH1; 在第三個(gè)下沿后開始接收數(shù)據(jù)。

            數(shù)據(jù)接收核心思想:
            1、以dat來(lái)接收從高位到低位傳回來(lái)的數(shù)據(jù),分8次依次接收。dat每接收一位后向高位移1位,最低位與下一位接收到的數(shù)據(jù)
            相或,直到接收到8位。
            2、以ndat來(lái)接收從低位到高位傳回來(lái)的數(shù)據(jù),分8次依次接收。 用參數(shù)j來(lái)接收1位數(shù)據(jù),ndat來(lái)存儲(chǔ)接收到的8位數(shù)據(jù)。當(dāng)j接收到1位數(shù)據(jù)以后
            向左移7位,到最高位,然后與ndat相或,即將數(shù)據(jù)傳給ndat,ndat每接收到1位以后,其數(shù)據(jù)向右移1位,直到7位傳完。最后將接收到的數(shù)據(jù)傳回即可。

            AD00832接收數(shù)據(jù)共分為19個(gè)時(shí)鐘脈沖,由單片機(jī)提供。前三個(gè)為初始化,第四個(gè)到第11個(gè)為高位在先數(shù)據(jù),第11到第19個(gè)為低位在先數(shù)據(jù)。

            從AD中讀到的數(shù)據(jù)并非為真實(shí)的電壓值,只是一個(gè)虛擬量。真是的電壓值為

            V=date*VREF/256,(VREF為外部提供的基準(zhǔn)電壓,即AD給供電的VCC)

            *********************轉(zhuǎn)載請(qǐng)注明出處,謝謝!*********************

            ==============================================================================================

            #include
            #include
            #define uchar unsigned char
            #define uint unsigned int
            uchar code table[]={0x3F, //"0"
            0x06, //"1"
            0x5B, //"2"
            0x4F, //"3"
            0x66, //"4"
            0x6D, //"5"
            0x7D, //"6"
            0x07, //"7"
            0x7F, //"8"
            0x6F, //"9"
            };

            //端口定義
            sbit adcs=P3^3; //芯片選通信號(hào),低有效
            sbit adclk=P3^2; //芯片時(shí)鐘信號(hào)
            sbit addo=P3^7; //通道0
            sbit addi=P3^6; //通道1
            uchar date;
            int a,b,c;

            void delay(uchar z)//延時(shí)函數(shù)
            {
            uchar x,y;
            for(x=z;x>0;x--)
            for(y=110;y>0;y--);
            }

            void delay1() //延時(shí)兩個(gè)空指令
            {
            _nop_();
            _nop_();
            }


            int ADconvert() //AD轉(zhuǎn)換


            {
            uchar i=0;
            uchar j;
            uint dat=0;
            uchar ndat=0;

            addi=1;
            delay1();
            adcs=0; //芯片選通
            delay1();
            adclk=1; //
            delay1();
            adclk=0; //下降沿1
            delay1();
            adclk=1; //
            addi=0;
            delay1();
            adclk=0; //下降沿2
            delay1();
            adclk=1; //
            addi=1; //選擇通道
            delay1();
            adclk=0; //下降沿3
            addi=1;
            delay1();
            dat=0;
            for(i=0;i<8;i++) //串行接收數(shù)據(jù)高位在前
            {
            dat|=addo; //將addo數(shù)據(jù)給dat
            adclk=1; //拉高
            delay1();
            adclk=0;//拉低,循環(huán)時(shí)鐘
            delay1();
            dat<<=1;//將數(shù)據(jù)向左移動(dòng)1位,方便低位接收下一位數(shù)據(jù)
            if(i==7)
            dat|=addo;//最后一位數(shù)據(jù)直接賦給dat
            }
            for(i=0;i<8;i++) //串行接收數(shù)據(jù)低位在前
            {
            j=0; //每次接收前復(fù)位為0
            j|=addo;//j用來(lái)接收1位數(shù)據(jù)
            adclk=1; //拉高
            delay1();
            adclk=0;//拉低,循環(huán)時(shí)鐘
            delay1();
            j<<=7;//將接收到的數(shù)據(jù)移動(dòng)到最高位
            ndat=ndat|j; //將接收到的數(shù)據(jù)傳給ndat
            if(i<7)
            ndat>>=1; //每接收到1為數(shù)據(jù),ndat向右移動(dòng)1位
            }
            adcs=1;
            adclk=0;
            addo=1; //回到初始狀態(tài)
            dat<<=8; //int型數(shù)據(jù)為16位,將接收到的8位數(shù)據(jù)移到高8位,
            dat|=ndat;
            return(dat);
            }

            void display() //數(shù)碼管顯示
            {
            P1=0xf0;
            P2=table[a];
            delay(10);
            P1=0xf2;
            P2=table[b];
            delay(10);
            P1=0xf4;
            P2=table[c];
            delay(10);

            }

            void main()
            {
            int num;
            delay(500);
            adcs=1;

            while(1)
            {
            date=ADconvert(); //獲取轉(zhuǎn)換數(shù)據(jù)
            a=date/100;
            b=date0/10;
            c=date;
            for(num=255;num>0;num--)
            {
            display();
            }

            }

            }



            關(guān)鍵詞: ADC0832檢測(cè)模擬電壓

            評(píng)論


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

            關(guān)閉