矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 1788|回复: 2

求助大家:AD转换,为什么0通道正常,后面1通道就不正常呢

[复制链接]
     
发表于 2019-8-22 20:12:31 | 显示全部楼层 |阅读模式
  求助大家,我按教程编PCF8591AD/DA转换芯片的实验。
  输出的信息,输出到数码管上,动态扫描,可以为什么0通道可以正常工作,1通道,就显示最高电压5V
  如果把1通道的语句,放在前面,它能工作,紧跟在后面那个通道,就不正常,我弄了一下午,也没找出原因,特请教大家。

while (1)
    {
        if (flag300ms)
        {
            flag300ms = 0;
            //显示通道0的电压
            val = GetADCValue(0);   //获取ADC通道0的转换值
            val = (val*25) / 255;   //电压值=转换结果*2.5V/255,式中的25隐含了一位十进制小数
            LedBuff[5] = LedChar[val/10] & 0x7F;  //通道0的整数位显示到数码管第5位,并点亮第5位的小数点
            LedBuff[4] = LedChar[val%10];         //通道0的小数位显示到数码管第4位

             //显示通道1的电压
            val = GetADCValue(1);   //获取ADC通道1的转换值
            val = (val*25) / 255;   //电压值=转换结果*2.5V/255,式中的25隐含了一位十进制小数
            LedBuff[1] = LedChar[val/10] & 0x7F;  //通道1的整数位显示到数码管第1位,并点亮第1位的小数点
            LedBuff[0] = LedChar[val%10];         //通道1的小数位显示到数码管第0位
        }
    }
     
发表于 2019-8-24 10:15:46 | 显示全部楼层
楼主的这个现象我当初在搞ADC0832的时候遇到过,也是在发送了通道切换命令,但还是程序第一次操作的那个通道,搞了很久最后看芯片的指导书,才发现是在切换通道的时候片选没有高电平(没有放开片选),楼主的这个是IIC的,没搞过,您不妨再仔细看看芯片的资料,或许能发现问题的所在
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-8-24 11:22:13 | 显示全部楼层
谢谢您 的回复
  程序是我按教程,做完AD采集显示在LCD这个实验后,再做的显示在LED上。原LCD程序是这样的,真奇怪,下面这个程序,是正常的,三路同时采集,都正常。
换用LED就不行了,差别最大的,是LED需要动态刷新,我感觉可能是刷新导致的,我再查一下。

  if (flag300ms)
  {
   flag300ms=0;
   val=getadcvalue(0);
   valuetostring(str,val);
   lcdshowstr(0,1,str);

   val=getadcvalue(1);
   valuetostring(str,val);
   lcdshowstr(6,1,str);

   val=getadcvalue(3);
   valuetostring(str,val);
   lcdshowstr(12,1,str);  
    }
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-29 05:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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