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

            新聞中心

            51單片機 ADC0804控制

            作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
            現(xiàn)在大多單片機都帶有ADC模塊,對于精度要求不是很高的場合,一般都能夠滿足的。這里例程重在理解控制過程。

            原理圖:

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


            代碼如下:

            //頭文件
            #include
            #include //_nop_延時一個機械周期函數(shù)所在頭文件
            //定義宏
            #define uint unsigned int
            #define uchar unsigned char
            //端口聲明
            sbit duanxuan=P2^6;
            sbit weixuan=P2^7;
            sbit ADC0804_WR=P3^6; //寫信號輸入,低電平有效
            sbit ADC0804_RD=P3^7; //讀信號輸入,低電平有效
            //變量定義
            uint number; //存放模數(shù)轉(zhuǎn)換后的數(shù)字量
            uint baiwei,shiwei,gewei; //存放模數(shù)轉(zhuǎn)換后的數(shù)字量的百位、十位、各位

            //編碼定義
            uchar code table[]={
            0x3f,0x06,0x5b,0x4f,
            0x66,0x6d,0x7d,0x07,
            0x7f,0x6f,0x77,0x7c,
            0x39,0x5e,0x79,0x71};
            //數(shù)組聲明,其內(nèi)部元素代表的是位選端口選通信號數(shù)值,如0xfe代表選通第一個數(shù)碼管,包括選通ADC0804的CS端
            uint weixuan_shuzu[]={
            0x7e,0x7d,0x7b,
            0x77,0x6f,0x5f};
            //函數(shù)聲明
            void delay(uint); //延時函數(shù)聲明
            void quwei(uint); //整數(shù)取出每一位函數(shù)聲明
            void display(uint); //顯示函數(shù)申明
            void ADC0804_writting(); //ACD0804寫入操作函數(shù)聲明
            void ADC0804_reading(); //ACD0804讀取操作函數(shù)聲明
            //主函數(shù)
            void main()
            {
            uint aa; //用于模數(shù)轉(zhuǎn)換前得多次顯示,確保轉(zhuǎn)換完成
            weixuan=1;
            P0=0x7f; //首先選擇ADC0804的CS端口,選中ACD0804(如果沒有這里的,那么接下來的ADC0804寫操作函數(shù)不能進(jìn)行)
            weixuan=0;
            while(1)
            {
            ADC0804_writting(); //啟動AD轉(zhuǎn)換
            for(aa=10;aa>0;aa--) //10次顯示轉(zhuǎn)換結(jié)果
            {
            display(number); //顯示轉(zhuǎn)換結(jié)果
            }
            ADC0804_reading(); //讀取AD轉(zhuǎn)換結(jié)果
            }
            }
            //延時函數(shù)主體
            void delay(uint xs)
            {
            uint i,j;
            for(i=xs;i>0;i--)
            {
            for(j=110;j>0;j--)
            {
            }
            }
            }
            //整數(shù)取出每一位函數(shù)主體
            void quwei(uint digital_data0)
            {
            baiwei=digital_data0/100; //取出百位
            shiwei=digital_data00/10;
            gewei=digital_data0;
            }
            //顯示函數(shù)主體
            void display(uint digital_data)
            {
            quwei(digital_data); //首先取出結(jié)果的每一位
            //顯示第一位
            duanxuan=1;
            P0=table[baiwei];
            duanxuan=0;
            P0=0xff;
            weixuan=1;
            P0=weixuan_shuzu[0];
            weixuan=0;
            delay(2);
            //顯示第二位
            duanxuan=1;
            P0=table[shiwei];
            duanxuan=0;
            P0=0xff;
            weixuan=1;
            P0=weixuan_shuzu[1];
            weixuan=0;
            delay(2);
            //顯示第三位
            duanxuan=1;
            P0=table[gewei];
            duanxuan=0;
            P0=0xff;
            weixuan=1;
            P0=weixuan_shuzu[2];
            weixuan=0;
            delay(2);
            }
            //ACD0804寫入操作函數(shù)主體
            void ADC0804_writting()
            {
            ADC0804_WR=1; //首先拉高寫使能端
            _nop_(); //延時一個機械周期
            ADC0804_WR=0; //寫使能端低電平有效,開始轉(zhuǎn)換
            _nop_();
            ADC0804_WR=1; //轉(zhuǎn)換結(jié)束
            }
            //ACD0804讀取操作函數(shù)主體
            void ADC0804_reading()
            {
            P1=0xff; //讀取結(jié)果之前,先拉高P1口一次
            ADC0804_RD=1; //讀取之前先拉高讀取使能端
            _nop_(); //延時一個機械周期
            ADC0804_RD=0; //讀取使能端低電平有效,開始讀取
            _nop_();
            number=P1; //讀取的結(jié)果存放到number中,注意:number不需要轉(zhuǎn)換為十進(jìn)制,直接當(dāng)成十進(jìn)制用就OK
            ADC0804_RD=1; //讀取結(jié)束
            }

            以上,結(jié)束。



            關(guān)鍵詞: 51單片機ADC0804控

            評論


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

            關(guān)閉