新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ADC0832模數轉換51單片機程序與電路圖

        ADC0832模數轉換51單片機程序與電路圖

        作者: 時間:2016-11-30 來源:網絡 收藏
        #include
        #include
        #define uint unsigned int
        #define uchar unsigned char
        //******************adc0832****************************//
        sbit CS=P2^3; //使能。
        sbit CLK=P2^2;//時鐘
        sbit DO=P2^1; // 數據輸出
        sbit DI=P2^0;//數據輸入
        char CC[]="11001001";
        uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
        uchar temp;
        uint vvv,i;
        //通道的選擇:0x02就是單通道0;0x03就是單通道1;
        //0x00就是雙通道ch0="+"; ch0="-"
        //0x01就是雙通道ch0="-"; ch0="+"
        //*****************************************************//
        void delay(int tt)
        {
        while(tt--)
        {for(i=0;i<120;i++);}
        }
        void startADC()
        {
        CS=1;
        _nop_();
        _nop_();
        CLK=0;
        _nop_();
        _nop_();
        CS=0;
        _nop_();
        _nop_();
        DI=1;
        _nop_();
        _nop_();
        CLK=1;
        _nop_();
        _nop_();
        DI=0;
        _nop_();
        _nop_();
        CLK=0;
        _nop_();
        _nop_();
        }
        void choiceADC(uint CH)//CH為0選擇通道ch0,為1,選擇ch1進行AD轉換
        {
        startADC();
        if(CH==0)
        {
        DI=1;
        _nop_();
        CLK=1;//上升沿DI=1
        _nop_();
        CLK=0;//1個下降沿DI=1
        _nop_();
        DI=0;
        _nop_();
        CLK=1;
        _nop_();
        CLK=0;//第3個上升沿DI=0
        _nop_();
        }
        else
        {
        CLK=0;
        _nop_();
        DI=1;
        _nop_();
        CLK=1;//上升沿DI=1
        _nop_();
        CLK=0;//1個下降沿DI=1
        _nop_();
        DI=1;
        _nop_();
        CLK=1;//第3個上升沿DI=0
        _nop_();
        }
        /********通道選擇結束開始讀取轉換后的二進制數****/
        CLK=1;
        _nop_();
        CLK=0;//下降沿讀數,一下進行判斷和處理,共8次
        for(i=0;i<8;i++)
        {
        DI=1;
        if(DO)
        {
        temp |=0x01;
        }
        else
        {
        temp &=0xfe;
        }
        CLK=0;
        _nop_();
        CLK=1;
        temp=temp<<1;
        }
        vvv=temp;
        }
        void display(uint dat)
        {
        P3=0x04;
        P0=tab[dat/100];
        delay(1);
        P0=0xff;
        P3=0x02;
        P0=tab[dat%100/10];
        delay(1);
        P0=0xff;
        P3=0x01;
        P0=tab[dat%10];
        delay(1);
        P0=0xff;
        }
        void main()
        {
        P3=0xFF;
        P0=0xff;
        while(1)
        {
        choiceADC(0);
        delay(1);
        display(vvv);
        }
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 南丹县| 彩票| 江津市| 宣威市| 沅陵县| 丰台区| 乐业县| 庆城县| 额济纳旗| 离岛区| 闽清县| 茌平县| 伊川县| 岳阳市| 长宁区| 乌拉特中旗| 尼木县| 洪雅县| 吴川市| 长垣县| 乌拉特后旗| 肇源县| 寿阳县| 房产| 林芝县| 泉州市| 大化| 开平市| 张家口市| 蒙山县| 无极县| 汨罗市| 达尔| 乳山市| 陕西省| 巩留县| 根河市| 昌图县| 甘南县| 清河县| 博乐市|