新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > c8051f330系列單片機AD轉(zhuǎn)換

        c8051f330系列單片機AD轉(zhuǎn)換

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

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

        本文引用地址:http://www.104case.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; //采用內(nèi)部基準電壓VDD. // REF0CN=0X03;
        AMX0P=0X08; //P1.0口采樣。
        AMX0N=0X11;//單端輸入方式。
        ADC0CF=((clk/3000000)-1)<<3;//設置SAR時鐘為3M。
        ADC0CF |=0X00; //設置為右對齊狀態(tài)。
        AD0EN=1; //AD轉(zhuǎn)換為活躍狀態(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);
        }
        }




        評論


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

        關(guān)閉
        主站蜘蛛池模板: 翼城县| 台中县| 玛沁县| 两当县| 广西| 剑川县| 麻阳| 齐齐哈尔市| 清原| 宁强县| 台东市| 宜兰县| 油尖旺区| 印江| 泸西县| 崇左市| 衡东县| 汕头市| 鹤峰县| 休宁县| 满城县| 江安县| 邵武市| 三都| 万载县| 内丘县| 嘉鱼县| 平安县| 册亨县| 乌拉特前旗| 沙河市| 沙雅县| 正蓝旗| 壤塘县| 皮山县| 银川市| 大连市| 大宁县| 溧水县| 介休市| 敦化市|