标题: 实验C8051F410的ADC,使用串口输出电压值,但是输出与实际的误差随实际电压增大而增大 [打印本页]

作者: 迷茫的落叶    时间: 2020-12-26 14:09
标题: 实验C8051F410的ADC,使用串口输出电压值,但是输出与实际的误差随实际电压增大而增大
实验C8051F410的ADC,使用串口输出电压值,但是输出与实际的误差随实际电压增大而增大,达到参考电压时串口发送出去的值与实际电压相差0.3V;
相关程序:
*******************************************
void ADC0_ISR (void) interrupt 10
{
   static unsigned long accumulator = 0;     // accumulator for averaging
   static unsigned int measurements = 2048;  // measurement counter
   unsigned long result=0;
   unsigned long mV;                         // measured voltage in mV
static unsigned int  RH;
   AD0INT = 0;                               // clear ADC0 conv. complete flag
   accumulator += ADC0;
   measurements--;
m=1;
   if(measurements == 0)
   {
      measurements = 2048;
      result = accumulator / 2048;
      accumulator=0;

    mV =  result * 220 / 4095;
   RI0=0;
   TI0=0;
   SBUF0=mV;
   }
}
void UART0_Interrupt (void) interrupt 4
{
  Delay_ms (2);

if (TI0==!0)
{
TI0=0;
}
else if(RI0==!0)
{
RI0=0;
}
}
********************************************
主程序是死循环;参考电压是2.2V,因为串口输出只能显示16位二进制,最大255,所以在计算时乘的220而不是2200。有没有大佬帮忙看一下?

作者: 迷茫的落叶    时间: 2020-12-28 12:05
测量了一下实际参考电压是2.17V,但是发现ADC输入端有2.44V的初始电压,会将我接上去的电压拉高,比如我接0.3V的电压进去会给我拉到0.6V,但是我最后电脑收到数据是0.5V,尝试把输入口写0,但是这样电压就输不进去了。有没有什么好的解决方法?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1