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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STC單片機(jī)內(nèi)置ADC的使用方法

          STC單片機(jī)內(nèi)置ADC的使用方法

          作者: 時(shí)間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
          STC系列單片機(jī)中的STC89LE516AD/X2提供了8路8位精度的高速A/D轉(zhuǎn)換器,位于P1口上,從而省去了片外ADC的麻煩。這8路ADC為電壓輸入型,可做按鍵掃描,電池電壓檢測,頻譜檢測等。ADC轉(zhuǎn)換過程需要17個機(jī)器周期。通過對相關(guān)功能寄存器的適當(dāng)配置,就可以控制其工作。下面就對相關(guān)功能寄存器進(jìn)行介紹。

          A/D轉(zhuǎn)換寄存器總表:

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

          寄存器

          地址

          名稱

          7

          6

          5

          4

          3

          2

          1

          0

          初始初

          P1_ADC_EN

          97H

          允許P1.x

          成為A/D口

          P17

          P16

          P15

          P14

          P13

          P12

          P11

          P10

          0000

          0000

          ADC_

          CONTR

          C5H

          A/D轉(zhuǎn)換

          控制寄存器

          ADC_FLAG

          ADC_START

          CHS2

          CHS1

          CHS0

          xxx0

          0000

          ADC_DATA

          C6H

          A/D轉(zhuǎn)換

          結(jié)果寄存器

          0000

          0000

          (1) P1_ADC_EN:特殊功能寄存器

          P1.x作為A/D轉(zhuǎn)換輸入通道來用允許特殊功能寄存器。相應(yīng)位為“1”時(shí),對應(yīng)的P1.x口作為A/D轉(zhuǎn)換使用,內(nèi)部上拉電阻自動斷開。

          (2) ADC_CONTR:特殊功能寄存器

          CHS2/CHS1/CHS0是模擬輸入通道選擇,CHS2/CHS1/CHS0的取值如下表所示:

          CHS2

          CHS1

          CHS0

          模擬輸入通道選擇

          0

          0

          0

          選擇P1.0為A/D輸入

          0

          0

          1

          選擇P1.1為A/D輸入

          0

          1

          0

          選擇P1.2為A/D輸入

          0

          1

          1

          選擇P1.3為A/D輸入

          1

          0

          0

          選擇P1.4為A/D輸入

          1

          0

          1

          選擇P1.5為A/D輸入

          1

          1

          0

          選擇P1.6為A/D輸入

          1

          1

          1

          選擇P1.7為A/D輸入

          ADC_START是模擬/數(shù)字轉(zhuǎn)換(ADC)啟動控制位,設(shè)置為1時(shí),開始轉(zhuǎn)換。

          ADC_FLAG是模擬/數(shù)字轉(zhuǎn)換結(jié)束標(biāo)志位,當(dāng)A/D轉(zhuǎn)換完成后,ADC_FLAG=1。

          (3) ADC_DATA: A/D轉(zhuǎn)換結(jié)果特殊功能寄存器

          模擬/數(shù)字轉(zhuǎn)換結(jié)果計(jì)算公式為 結(jié)果=256×Vin/Vcc

          Vin是模擬輸入通道輸入電壓,Vcc為單片機(jī)實(shí)際工作電壓,用單片機(jī)工作電壓作為模擬參考電壓。

          內(nèi)置ADC的使用例程:

          STC_ADC.h:

          sfr P1_ADC_EN=0x97;

          sfr ADC_CONTR=0xc5;

          sfr ADC_DATA=0xc6;

          int GetAD(unsigned char channel)//channel為要取的通道號(0~7)

          {

          unsigned char AD_finished=0;

          ADC_DATA=0;

          ADC_CONTR=channel;

          ADC_CONTR|=0x08;

          while(!AD_finished)

          AD_finished=(ADC_CONTR&0x10);

          ADC_CONTR&=0xF7;

          return (ADC_DATA);

          }

          void AD_Init(unsigned char ADin)// ADC初始化,ADin為八位2進(jìn)制數(shù),分別對應(yīng)AD7~0,置1代表打開此路

          {

          P1=P1|ADin;//要設(shè)置為A/D轉(zhuǎn)換的P1.x口,先設(shè)為高

          P1_ADC_EN=ADin;

          }

          _main.c:

          #include

          #include adc.h>

          /*

          -------------------------------------------------

          此程序用以說明STC單片機(jī)ADC的使用方法

          -------------------------------------------------

          */

          void delay(unsigned time)

          {

          while(time--);

          }

          void main()

          {

          AD_Init(0x63);//0110,0011,要設(shè)置為A/D轉(zhuǎn)換的P1.x口,先設(shè)置為高

          //0110,0011,P1的P1.0,P1.1,P1.5,P1.6設(shè)置為A/D轉(zhuǎn)換輸入腳

          //斷開P1.0,P1.1,P1.5,P1.6內(nèi)部上拉電阻

          while(1)

          {

          P2=GetAD(0);

          delay(10000);

          P2=GetAD(1);

          delay(10000);

          P2=GetAD(5);

          delay(10000);

          P2=GetAD(6);

          delay(10000);

          }

          }



          關(guān)鍵詞: STC單片機(jī)內(nèi)置AD

          評論


          技術(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); })();