久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6167|回復: 5
打印 上一主題 下一主題
收起左側(cè)

求助STC15W408AS片內(nèi)ADC的使用問題

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:222232 發(fā)表于 2017-7-25 10:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
麻煩大家?guī)臀铱纯?nbsp; 死活都沒數(shù)值!


#include<STC15F2K60S2.h>

#include "intrins.h" // 11.0592MHz

sfr ADCCFG = 0xde;


unsigned int va,ADC_DATA;
unsigned int vv[9];

void Delay1ms()                //@11.0592MHz
{
        unsigned char i, j;

        _nop_();
        _nop_();
        _nop_();
        i = 11;
        j = 190;
        do
        {
                while (--j);
        } while (--i);
}

void Delay10ms()                //@11.0592MHz
{
        unsigned char i, j;

        i = 108;
        j = 145;
        do
        {
                while (--j);
        } while (--i);
}

void Delay100ms()                //@11.0592MHz
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 5;
        j = 52;
        k = 195;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}




void InitADC ()
{
        P1=0xff;
        P1ASF=0x20;  
        CLK_DIV|=0x20;

ADC_CONTR =0x80; // ADC  1000 0000
Delay100ms();       
P1M0 = 0x20; // 0010 0000  P1.5  ADC
P1M1 = 0x00;//
}

unsigned int GetAD()
{
        unsigned char DATA_H,DATA_L;
        ADC_DATA=0;
ADC_CONTR = 0x80; //1110 0000     AD   ADC_CONTR = 0x8d; // AD
Delay1ms();
ADC_CONTR = 0x85;// 1110 0101
Delay10ms();
ADC_CONTR = 0x8d; //1110 1101
while(ADC_CONTR & 0x10==0);// //while (!(ADC_CONTR & 0x10));
ADC_CONTR &= ~0x10;  //ADC_CONTR &=0xE7;
DATA_H=ADC_RES;
DATA_L=ADC_RESL;
ADC_DATA=DATA_H;
ADC_DATA=ADC_DATA<<2; //result=ADC_RES*4+ADC_RESL;
ADC_DATA |=ADC_RESL;
ADC_DATA=ADC_DATA/1024*500;
//ADC_CONTR=0x00;//ADC_CONTR |=0x80;
ADC_CONTR =0x00;

        return (ADC_DATA);

}       

unsigned int AD_average()
{
        unsigned int va1;
  unsigned char mi;

va1 =        GetAD();

for(mi=0;mi<10;mi++)       
{
vv[mi]=GetAD();
}
va=vv[0]+vv[1]+vv[2]+vv[3]+vv[4]+vv[5]+vv[6]+vv[7]+vv[8]+vv[9];
va=va/10;

  return (va);

}

void ioinit()
{
  P3M0 = 0x00;  P3M1 = 0x00;P5M0 = 0x00;  P5M1 = 0x00;
                P10=0;P11=0;P3=0x00;Delay100ms();Delay100ms();Delay100ms();Delay100ms();Delay100ms();P3=0xff;P10=1;P11=1;
}


void main(void)
{
unsigned int V_ad1,V_ad;
ioinit();
InitADC ();
while(1)
{
        V_ad1=GetAD() ;
         V_ad=GetAD() ;
if(V_ad>=200)
{
P3=0x00;
}
else P3=0xff;


}         
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:222232 發(fā)表于 2017-7-25 15:17 | 只看該作者
大神指點指點啊
回復

使用道具 舉報

板凳
ID:213173 發(fā)表于 2017-7-25 21:11 | 只看該作者
這么簡單的程序你洋洋灑灑寫了這么多?給你一個STC15W404AS實際應用的程序(ADC相關(guān)部分)參考
/*-------------------------
  宏定義ADC的操作命令
--------------------------*/
#define ADC_POWER   0x80                                //ADC power control dit (宏定義ADC電源控制位)
#define ADC_FLAG    0x10                                //ADC complete flag (宏定義ADC完成標志位)
#define ADC_START   0x08                                //ADC start control dit (宏定義ADC啟動控制位)
#define ADC_SPEEDLL 0x00                                //420 clocks (宏定義420時鐘)速度控制
//#define ADC_SPEEDL  0x20                                //280 clocks (宏定義280時鐘)速度控制
//#define ADC_SPEEDH  0x40                                //140 clocks (宏定義140時鐘)速度控制
//#define ADC_SPEEDHH 0x60                                //70 clocks (宏定義70時鐘)速度控制
/*------------------------
  初始化ADC
-------------------------*/
void InitADC()
{
        P1M1 = 0x01;                                         //設(shè)置P1.0高阻
        P1M0 = 0x00;                                         //設(shè)置P1.0高阻
        P1ASF=0x01;                                                //設(shè)置P1的0通道端口作為模擬輸入
        ADC_RES=0;                                                //清除ADC_RES存儲器以前的結(jié)果
        ADC_RESL=0;                                                //清除ADC_RESL存儲器以前的結(jié)果
        ADC_CONTR=ADC_POWER|ADC_SPEEDLL;//ADC 開啟電源、轉(zhuǎn)換速度
        delayms(1);                                                //上電延時1ms                                                                                       
}
/*---------------------------
  獲取ADC結(jié)果
----------------------------*/
uint Read(uchar CHA)
{
        ADC_CONTR=ADC_POWER|ADC_SPEEDLL|CHA|ADC_START;//啟動轉(zhuǎn)換1000 1000
    _nop_();                        //延時確保正確讀到ADC_CONTR寄存器的值
    _nop_();
    _nop_();
    _nop_();
        while(!(ADC_CONTR & ADC_FLAG));        //等待ADC轉(zhuǎn)換完成標志置位
        ADC_CONTR &=~ADC_FLAG;                        //關(guān)閉ADC
        return(ADC_RES*4+ADC_RESL);                //返回十位ADC結(jié)果
}

回復

使用道具 舉報

地板
ID:552244 發(fā)表于 2019-6-30 06:02 來自手機 | 只看該作者
wulin 發(fā)表于 2017-7-25 21:11
這么簡單的程序你洋洋灑灑寫了這么多?給你一個STC15W404AS實際應用的程序(ADC相關(guān)部分)參考
/*-------- ...

這程序stc15w408as適用?請大師指點
回復

使用道具 舉報

5#
ID:36359 發(fā)表于 2020-2-11 21:45 | 只看該作者
小兄弟,408與404如管腳封裝一致差別只是在flash容量上有區(qū)別。
回復

使用道具 舉報

6#
ID:461486 發(fā)表于 2020-2-13 15:43 | 只看該作者
ADC_CONTR = 0x80; //1110 0000     AD   ADC_CONTR = 0x8d; // AD
Delay1ms();
ADC_CONTR = 0x85;// 1110 0101
Delay10ms();
ADC_CONTR = 0x8d; //1110 1101 這地方怎么回事?8 ==1110??
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91黄在线观看 | 国产成人精品999在线观看 | 欧美a在线 | 涩爱av一区二区三区 | 一级毛片免费完整视频 | 亚洲精美视频 | 一区二区高清 | 欧美性网 | 欧美aaa级 | 日韩成人高清 | 国内精品一区二区 | 欧美一级片中文字幕 | 97免费在线观看视频 | 国产精品福利视频 | 欧美一区二区在线播放 | 第四色狠狠 | 欧美午夜一区 | 欧美成人一区二区 | 日韩国产精品一区二区三区 | 亚洲一区免费视频 | 亚洲高清在线 | 视频1区2区 | 精品二区 | 亚洲精品视频导航 | 国产一区二区精品在线 | 成人在线免费 | 亚洲毛片 | 午夜视频免费在线观看 | 久久精品一级 | 欧美三级在线 | 精品久久久久久红码专区 | 蜜桃在线播放 | 日韩一区二区精品 | 狠狠插天天干 | 色欧美综合 | 2021天天干夜夜爽 | 亚洲国产一区二区三区 | 久久99视频精品 | 草久久 | 网站国产 | 成人在线看片 |