[牛人杂谈] ADC采集

[复制链接]
1205|11
 楼主| 天灵灵地灵灵 发表于 2017-7-20 16:40 | 显示全部楼层 |阅读模式

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

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 | 显示全部楼层
其实除了配置,操作上真是简单的很。
gejigeji521 发表于 2017-7-20 21:17 | 显示全部楼层
确实,配置完后,就是读取了,非常容易。慢慢理解。
wahahaheihei 发表于 2017-7-21 16:49 | 显示全部楼层
学ADC是单片机的必须。
wahahaheihei 发表于 2017-7-21 16:49 | 显示全部楼层
模拟世界和单片机数字世界的桥梁。
zhuomuniao110 发表于 2017-7-22 19:23 | 显示全部楼层
ADC的复杂正在于配置
643757107 发表于 2017-7-23 11:40 | 显示全部楼层
MARK,学习的时候用得着。
稳稳の幸福 发表于 2017-7-23 13:31 | 显示全部楼层
貌似大部分单片机都是这么操作的。
yyglucky 发表于 2017-8-7 17:44 | 显示全部楼层
zhuomuniao110 发表于 2017-8-7 22:19 | 显示全部楼层
官方的库函数比较好用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

183

主题

3475

帖子

13

粉丝
快速回复 在线客服 返回列表 返回顶部