标题: 请教单片机+ADC0832两位数码管显示跳变 [打印本页]

作者: 芙蓉焊料    时间: 2023-7-26 09:28
标题: 请教单片机+ADC0832两位数码管显示跳变
2位数码管显示10V电压,但小数点后一位不停跳变是什么原因?谢谢



//AD转换子程序
unsigned char adc0832(unsigned char CH)
{
     unsigned char i,test,adval;
// adval = 0x00;
// test = 0x00;
    Clk = 0;       //初始化
    DATI = 1;
    _nop_();
    CS = 0;
    _nop_();
    Clk = 1;
   _nop_();
        
   if ( CH == 0x00 )      //通道选择
   {
      Clk = 0;
      DATI = 1;      //通道0的第一位
      _nop_();
      Clk = 1;
      _nop_();
      Clk = 0;
      DATI = 0;      //通道0的第二位
      _nop_();
      Clk = 1;
      _nop_();
    }
    else
    {
       Clk = 0;
    DATI = 1;      //通道1的第一位
      _nop_();
                        Clk = 1;
      _nop_();
                        Clk = 0;
      DATI = 1;      //通道1的第二位
     _nop_();
     Clk = 1;
     _nop_();
   }

      Clk = 0;
      DATI = 1;
    for( i = 0;i < 8;i++ )      //读取前8位的值   
    {
      adval <<= 1;
                        _nop_();
      Clk = 1;
      _nop_();
                        Clk = 0;
      if (DATO)
        adval |= 0x01;
    else
      adval |= 0x00;
                        
    }
      for (i = 0; i < 8; i++)      //读取后8位的值
      {
         test >>= 1;
         if (DATO)
                                 {
                                         test |= 0x80;
                                 }
        else
                                {
                                  test |= 0x00;
                                }

         _nop_();
                                 Clk = 1;
         _nop_();
                                 Clk = 0;

      }
      if (adval == test)  //比较前8位与后8位的值,如果不相同舍去
                          {
                            dat = test;
                          }
       nop_();
       CS = 1;        //释放ADC0832
       DATO = 1;
       Clk = 1;
       return dat;
}


作者: jlslwh    时间: 2023-7-26 14:09
这种情况多数不是软件问题,应该是CPU供电或是ADC的参考电压是不是纹波比较大。加强滤波后试一下。
作者: zsyzdx    时间: 2023-7-27 10:55
软件滤波,减少波动,因为ADC0832是8位的ADC,所以会波动!
作者: xianfajushi    时间: 2023-7-29 11:41
上载所有文件方便排查
作者: xianfajushi    时间: 2023-8-4 10:11
昨天刚刚对照时序图写的驱动,通过示波器即可观察是否读取到信息,以及调节电位器是否数据有变化,判断驱动是否正常,电位器不动波形也不动.


作者: xianfajushi    时间: 2023-8-5 06:05
电位器不动数据也不会变动说明驱动是正常的,那么波动的原因就是其他引起的,这样就排除了驱动程序,仿真不存在干扰波动。
这是单通道1驱动代码,演示单通道0转换电压代码:dy=ADC0832QD(0);dy*=1.9685;满量程499.





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