求助大家:AD转换,为什么0通道正常,后面1通道就不正常呢
求助大家,我按教程编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 = LedChar & 0x7F;//通道0的整数位显示到数码管第5位,并点亮第5位的小数点
LedBuff = LedChar; //通道0的小数位显示到数码管第4位
//显示通道1的电压
val = GetADCValue(1); //获取ADC通道1的转换值
val = (val*25) / 255; //电压值=转换结果*2.5V/255,式中的25隐含了一位十进制小数
LedBuff = LedChar & 0x7F;//通道1的整数位显示到数码管第1位,并点亮第1位的小数点
LedBuff = LedChar; //通道1的小数位显示到数码管第0位
}
} 楼主的这个现象我当初在搞ADC0832的时候遇到过,也是在发送了通道切换命令,但还是程序第一次操作的那个通道,搞了很久最后看芯片的指导书,才发现是在切换通道的时候片选没有高电平(没有放开片选),楼主的这个是IIC的,没搞过,您不妨再仔细看看芯片的资料,或许能发现问题的所在 谢谢您 的回复
程序是我按教程,做完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);
}
页:
[1]