微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > AD转换出现问题了

AD转换出现问题了

时间:10-02 整理:3721RD 点击:
我用STC12C5A60S2检测三个电压,开启了三个通道,逐一检测,但是只有第一个通道的检测正常,其他两个会受第一个检测电压影响,我检测的是开关电源的电压,开关电源会干扰AD转换吗
float AD_work(unsigned char ch)
{
float AD_val;     //定义处理后的数值AD_val为浮点数
unsigned char i;
for(i=0;i<5;i++)
  AD_val+=GetADCResult(ch); //转换100次求平均值(提高精度)
AD_val/=5;
if(ch==0)
{
  if(voltage<=40)
     AD_val=AD_val*5*1080/1024;
  if((voltage>=50)&&(voltage<=60))
   AD_val=AD_val*5*1045/1024; //AD的参考电压是单片机上的5v,电压最大21V,缩小5倍给AD0检测.放大10倍显示小数
}
if(ch==1)
AD_val=AD_val*5/1024/9.2/0.166*10000; //AD的参考电压是单片机上的5v,所以乘5即为实际电压值
if(ch==2)
AD_val=AD_val*5*70/1024;
return (AD_val);
}
这里是float数据AD_val=AD_val*5/1024/9.2/0.166*10000;这里在LCD可以正确显示电压值,但是后面两个通道的电压都会漂浮的很厉害,我显示的时候转换为int数据显示,我觉得是我的程序出问题了,AD每次转换完会关闭,下一次检测开启。后两个检测数据很大浮动,显示数据放中断里处理合适吗各位大神,求助啊

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top