131 1300 0010
其他
當(dāng)前位置: 首頁(yè)>> 元件技術(shù)>>其他>>
  • 導(dǎo)航欄目
  • 二極管
  • 整流橋
  • MOS管
  • 其他
  • STC單片機(jī)ADC采樣程序設(shè)計(jì)
    STC單片機(jī)ADC采樣程序設(shè)計(jì)
  • STC單片機(jī)ADC采樣程序設(shè)計(jì)
  •   發(fā)布日期: 2019-06-10  瀏覽次數(shù): 1,477

    #include“STC12C4052AD.h”

    typedefstruct

     

    {

    BOOLRun;//BOOL量作為定時(shí)采樣標(biāo)志,比如每隔3秒,置位一

    次該標(biāo)志

    BYTECurch;//當(dāng)前通道

    BYTEtempCvData[6];//轉(zhuǎn)換結(jié)果臨時(shí)緩沖

    BYTECvTimes;//采樣次數(shù)采樣4次,去最大最小,保留4個(gè)取平均值

    BYTEADData[MAX_ADCH];//MAX_ADCH保存各通道最終采樣數(shù)據(jù)

    STC單片機(jī)ADC采樣程序設(shè)計(jì)

    }STADC;

    STADCADC;

    voidInitADC()

    {

    Uint16i;

    ADC_CONTR=0xC0;//ADC模塊加電,420周期轉(zhuǎn)換一次

    for(i=0;i《20000;i++);//ADC電源開(kāi)啟后,延時(shí)

    //設(shè)置P口外AD模式

    P1M0=0x03;//ADC0/1高阻輸入

    P1M1=0x00;

    EADC_SPI=1;//開(kāi)放ADCSPI總中斷

    ADC_DATA=0;

    AUXR=EADCI;//開(kāi)放ADC中斷

    MEMSet(&ADC,0,sizeof(STADC));

    //啟動(dòng)0號(hào)通道

    ADC.Curch=0;

    ADC_CONTR|=ADC.Curch;//設(shè)置下一通道

    ADC.Run=TRUE;//標(biāo)志ADC正在轉(zhuǎn)換

    ADC_CONTR|=ADC_START;//啟動(dòng)AD轉(zhuǎn)換器

    }

    voidADCISR()interruptADC_VECTOR

    {

    ADC_CONTR&=ADC_STOP;//stopAD

    ADC.Run=FALSE;

    ADC.tempCvData[ADC.CvTImes]=ADC_DATA;//取轉(zhuǎn)換值

    ADC_DATA=0;

    ADC.CvTImes++;

    ADC.CvTImes%=6;

    if(ADC.CvTImes!=0)

    {

    ADC_CONTR|=ADC_START;//啟動(dòng)AD轉(zhuǎn)換器

    ADC.Run=TRUE;

    }

    ADC_CONTR&=ADC_FLAG;//清除ADC_FLAG中斷標(biāo)志

    }

    voidProc_ADC()

    {

    Uint16CvSum=0,i;

    BYTEMaxCv=0,MinCv=0;

    if(ADC.Run||ADC.CvTimes!=0)//AD還在進(jìn)行,等待

    return;

    for(i=0;i《6;i++)

    {

    if(ADC.tempCvData[i]》MaxCv)

    MaxCv=ADC.tempCvData[i];

    if(ADC.tempCvData[i]MinCv=ADC.tempCvData[i];

    }

    for(i=0;i《4;i++)

    CvSum+=ADC.tempCvData[i];

    CvSum=CvSum-MaxCv-MinCv;

    ADC.ADData[ADC.Curch]=(CvSum》》2);

    ADC.Curch++;

    ADC.Curch%=MAX_ADCH

    ADC_CONTR&=0xF8;//先清除當(dāng)前通道值

    ADC_CONTR|=ADC.Curch;//設(shè)置下一通道

    ADC.Run=TRUE;//標(biāo)志ADC正在轉(zhuǎn)換

    for(i=0;i《500;i++);//通道切換延時(shí)100us左右

    ADC_CONTR|=ADC_START;//啟動(dòng)AD轉(zhuǎn)換器

    }


  • ·上一篇:
    ·下一篇:
  • 其他關(guān)聯(lián)資訊
    深圳市日月辰科技有限公司
    地址:深圳市寶安區(qū)松崗鎮(zhèn)潭頭第二工業(yè)城A區(qū)27棟3樓
    電話:0755-2955 6626
    傳真:0755-2978 1585
    手機(jī):131 1300 0010
    郵箱:hu@szryc.com

    深圳市日月辰科技有限公司 版權(quán)所有:Copyright?2010-2023 www.kqne.cn 電話:13113000010 粵ICP備2021111333號(hào)