打印

STC AD转换问题,崩溃了

[复制链接]
6608|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
superclee|  楼主 | 2009-7-12 10:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC12C5410AD
转换通道分别为p1.0 p1.1  P1.2()   硬件上电阻分压   8位精度

现在的问题是,只要调整一个通道上接的电阻,会影响其它通道的输出值,通过串口发送出来的数据看,确实是这样,

硬件上是电阻分压,一个通道调整时,我用电压表测另一个够通道上的输入电压,变化只有0.01-----0.04 V左右
将端口设置为开漏或是输入都不行,

软件部分,我都写了好几个版本了,实在是没招了,有经验的同仁琢磨下是什么问题

程序如下!!


unsigned char GetTem(unsigned char TemChanel)
{
 unsigned char ADC_LopNum=0;
 ADC_CONTR=ADC_PowOn;//将ADC设为SPeed(0.1)=00,且开启基准电源
 OSTimeDly(10);//10MS
 P1M0=0x07;
 P1M1=0x07;     //将P1.x值为开漏 
 ADC_CONTR|=TemChanel;  //将P1.x做为AD输入  下同
 DelayXus(100);  //延时20us---200us 因为不管通道是否发生变化,全部延时,使通道路输入稳定,这个延时函数要重新写
 ADC_DATA=0;     //对于ADC_DATA清0
 ADC_CONTR|=ADC_ChStart;
 while((ADC_CONTR&ADC_Finish)!=ADC_Finish);       //等待AD转换结束
 ADC_CONTR&=ADC_ClrFS;                      //对Flag清0,停止AD转换
 
 ADC_CONTR&=0x00;
 P1M0=0x00;
 P1M1=0x00;

 return ADC_DATA;
}


unsigned char DPTemDat(unsigned char ADCChanel)
{
 unsigned char i,j,DatBuff;
 unsigned int Sum;
 unsigned char idata TemValue[6];
 unsigned char idata MidValue;

 for(i=0;i<6;i++)                            //连续采6次
   TemValue=GetTem(ADCChanel);
 for(i=0;i<5;i++)                           //冒泡
  for(j=0;j<6-i;j++)
    {
     if(TemValue[j]>TemValue[j+1])
       {
        DatBuff=TemValue[j];
        TemValue[j]=TemValue[j+1];
        TemValue[j+1]=DatBuff;
        }
    }
 Sum=0;
 for(j=1;j<5;j++)                          //滤波
   Sum+=TemValue[j];
 MidValue=Sum>>2;
 
return MidValue;
 
       
}

相关帖子

沙发
xad74| | 2009-7-14 15:10 | 只看该作者

STC AD转换问题,崩溃了

ADC_CONTR=ADC_PowOn;//将ADC设为SPeed(0.1)=00,且开启基准电源
STC是没有专用基准电源的它采用电源电压作为基准所以对AD要求比较高的话就不能采用。
P1M0=0x07;
P1M1=0x07;     //将P1.x值为开漏
为什么每次多要设置管脚呢初始化时设置一下不就成了,还有就是等6次采样完后再切换

使用特权

评论回复
板凳
耕在此行| | 2009-7-14 16:44 | 只看该作者

呵呵 没用过他的AD呢

使用特权

评论回复
地板
quakegod| | 2009-7-15 04:37 | 只看该作者

STC AD问题回复

STC AD使用的时候要特别注意,虽然它号称输入阻抗可以到10K,
但是如果输入是阻抗太高的话,会影响AD的准确性,
另外,前一个通道的值会影响下一次采样。

解决办法是,每次切换通道后,采得的第一个或前两个值抛弃不用。
每个通道再连续采样几次。

使用特权

评论回复
5
ddllxxrr| | 2011-6-29 10:24 | 只看该作者
中断怎么办

使用特权

评论回复
6
ddllxxrr| | 2011-6-29 10:26 | 只看该作者
我的意思说,用中断不准吧,我的是STC12C5616AD,1.5V电压用中断方式,总在302-330之间跑哟

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

22

帖子

0

粉丝