使用1652的单片机,它内置有1个通道可接内部1.03V恒压源,用于电池电量检测,配置完之后,采集到的数据转换得到的电压值跟实测值差别特别大。
初始化:
ADCH = 0x00; //P2.7,P3.6 - P3.1作为I/O端口
ADCON1 = 0x80; //RGON 接入内部1.03V恒压源
ADT = 0x45; //时钟周期: μs 采样时间: μs,转换时间: μs
ADCON = 0x80;
开始转换时:
ADCON |= 0x01;
解析数据:
g_ucADCData = (((UINT16)ADDH)<<2)|(ADDL&0x03);
得到的数据转换为电压值:
(1.03V*1024)/g_ucADCData = 电压值
计算值和实测值最大相差0.5V,最小时0.1V,没有规律,不同的采样时间采集到的数据还不一样。 |