打印
[牛人杂谈]

ADC采集

[复制链接]
949|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

刚入坑,把学到的巩固下,方便以后查阅

adc采集的有两种方式。1种是用基准电压来检测4095*Vdd/Vref,另外一种是是通过间隙电压来检测

基准检测:

Set_All_GPIO_Quasi_Mode;

Enable_ADC_AIN1;

    ADCDLY=0xff;
    ADCCON2|=0x01; //使用adc1通道

unsigned int ReadADC()

{

uint data;

clr_ADCF;

set_ADCS;

while(ADCF==0)

{

  data=ADCRH<<4+ADCRL;

}

return data;

}



沙发
天灵灵地灵灵|  楼主 | 2017-7-20 16:41 | 只看该作者
间隙检测:

   Set_All_GPIO_Quasi_Mode;
   Enable_ADC_AIN1;

   Enable_ADC_BandGap;
    ADCDLY=0xff;
    ADCCON2|=0x01; //使用adc1通道
uint16_t AdValue(uint8_t ch){//通道CH电压值 10次和
  uint16_t AdTemp1=0,AdTemp2=0;
  uint8_t i=0;
  ADCCON0 &=0XF0;
  ADCCON0 |= ch;
  ADCS=1;
  while(ADCF==0);//除出上一次的结果
  ADCF=0;
  for(i=0;i<10;i++){
    ADCS = 1;           //使能adc
    while(ADCF==0);
    ADCF=0;
    AdTemp1=ADCRL;
    AdTemp1 += ADCRH<<4;
    AdTemp2 += AdTemp1;
  }
  return AdTemp2;
}

uint16_t VbatValue(uint8_t ch){  //通道ch电压
  return  ((uint32_t)1220*(uint32_t)AdValue(ch)/(uint32_t)AdValue(8)); //Advalue(8) 是内部带隙电压(band-gap)1.22v,(需BODEN=1,band-gap才会有效)
}

使用特权

评论回复
板凳
yiyigirl2014| | 2017-7-20 20:16 | 只看该作者
再用上滤波就完美了。

使用特权

评论回复
地板
wahahaheihei| | 2017-7-20 21:05 | 只看该作者
其实除了配置,操作上真是简单的很。

使用特权

评论回复
5
gejigeji521| | 2017-7-20 21:17 | 只看该作者
确实,配置完后,就是读取了,非常容易。慢慢理解。

使用特权

评论回复
6
wahahaheihei| | 2017-7-21 16:49 | 只看该作者
学ADC是单片机的必须。

使用特权

评论回复
7
wahahaheihei| | 2017-7-21 16:49 | 只看该作者
模拟世界和单片机数字世界的桥梁。

使用特权

评论回复
8
zhuomuniao110| | 2017-7-22 19:23 | 只看该作者
ADC的复杂正在于配置

使用特权

评论回复
9
643757107| | 2017-7-23 11:40 | 只看该作者
MARK,学习的时候用得着。

使用特权

评论回复
10
稳稳の幸福| | 2017-7-23 13:31 | 只看该作者
貌似大部分单片机都是这么操作的。

使用特权

评论回复
11
yyglucky| | 2017-8-7 17:44 | 只看该作者

使用特权

评论回复
12
zhuomuniao110| | 2017-8-7 22:19 | 只看该作者
官方的库函数比较好用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

177

主题

3392

帖子

13

粉丝