在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設計應用 > c8051f330系列單片機AD轉換

            c8051f330系列單片機AD轉換

            作者: 時間:2016-11-23 來源:網絡 收藏
            c8051f330系列單片機AD轉換. 作者 lml198694 日期 2008-7-21 10:53:00
            2
            推薦

            根據(jù)最近自己學習的C8051F330單片機.寫了一個關于AD轉換的程序,但是在調試的時候,總是發(fā)現(xiàn)其精度沒有我想象中的高,不知道是不是因為自己所用的萬用表不準,還是因為我的基準電壓不夠,其測試的結果總是比用萬用表測試的相差那么0.1V左右.想了好久了,就是沒有解決的了啊.我想大概是因為萬用表的精度還不過的原因應該是主要原因.呵呵.還是再調試..............

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

            主要是將數(shù)據(jù)通過串口傳到上位機上來顯示.

            其基本的代碼如下:

            #i nclude
            typedef unsigned char uint8;
            #define clk 24500000
            sfr16 adc0=0xbd;

            void delay(uint8 time)
            {
            uint8 i;
            while(--time)
            {
            for(i=0;i<125;i++);
            }
            }

            void systemclk(void)
            {
            RSTsrc="/0X04";
            OSCICN=0X83;
            }

            void port(void)
            {
            P0MDOUT=0X30;
            P1MDIN=0x00;
            XBR0=0X01; //將發(fā)送位設置為推挽輸出。
            XBR1=0X40;
            }

            void timer(void)
            {
            TMOD = 0x20;
            CKCON = 0X00; //系統(tǒng)時鐘12分頻。 波特率為9600
            TH1 = 0x96;
            }
            void uart(void)
            {
            SCON0=0X10;//接受允許。
            }
            void AD_start(void)
            {
            ADC0CN=0X00; //采用AD0BUSY啟動。
            REF0CN=0X0b; //采用內部基準電壓VDD. // REF0CN=0X03;
            AMX0P=0X08; //P1.0口采樣。
            AMX0N=0X11;//單端輸入方式。
            ADC0CF=((clk/3000000)-1)<<3;//設置SAR時鐘為3M。
            ADC0CF |=0X00; //設置為右對齊狀態(tài)。
            AD0EN=1; //AD轉換為活躍狀態(tài)。
            }

            void begin(void)
            {
            systemclk();
            port();
            timer();
            uart();
            AD_start();
            }

            void main(void)
            {
            PCA0MD &=~0x40;
            PCA0MD =0X00;
            begin();
            TR1=1;
            TI0=0;
            AD0INT=0; //清零。
            while(1)
            {
            AD0BUSY=1;
            while(AD0INT==0);
            ADC0H &=0X03;
            SBUF0=ADC0H;
            while(TI0==0);
            TI0=0;
            delay(200);
            SBUF0=ADC0L;
            while(TI0==0);
            AD0BUSY=0;
            TI0=0;
            delay(200);
            }
            }




            評論


            技術專區(qū)

            關閉