<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機(jī) ADC0804控制

          51單片機(jī) ADC0804控制

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

          原理圖:

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


          代碼如下:

          //頭文件
          #include
          #include //_nop_延時一個機(jī)械周期函數(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_(); //延時一個機(jī)械周期
          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_(); //延時一個機(jī)械周期
          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單片機(jī)ADC0804控

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();