答某网友:虽然是12位的ADC,但ADC的寄存器是16位(或两个8位)的,所以后面楼主是读取的16位的ADC结果。
楼主的这个问题,明显是前后矛盾的啊,怎么没人看出来呢?
一、电路问题
单片机的ADC只能测量0~VCC范围内的电压,那么楼主的电路应该是将±10V进行的抬升,但是电压范围也是太高,还要有线性降压。
楼主的情况并不与数据手册上的完全一样吧,要根据电路进行调整的。
二、程序问题
按上面的电路进行采样(也必然是上面电路的思路,否则你的单片机就烧了),你的输入电压0V,应该是对应于VCC/2的电压值,那么你的ADC结果应该是2^15,即2048吧,你上面的计算方法就很明显的不对了。
这也是问题有些前后矛盾了。
三、关于精度问题
请楼主自行摆渡“过采样技术”