找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1017|回复: 1
打印 上一主题 下一主题
收起左侧

实验C8051F410的ADC,使用串口输出电压值,但是输出与实际的误差随实际电压增大而增大

[复制链接]
跳转到指定楼层
楼主
ID:803014 发表于 2020-12-26 14:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实验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。有没有大佬帮忙看一下?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表