四个通道都测电压,但是读通道1得到通道4的值,然后循环这样,读通道4得到通道3的值。。。。。。
这是读AD值的函数
unsigned char Read_AD(unsigned char CH)
{
unsigned char Digital;
IIC_Read(SlaveAddr,CH,&Digital,1);
return Digital;
}
其中IIC_Read是
bit IIC_Read(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no)
{
unsigned char i;
Start_I2c(); //启动总线
SendByte(sla); //发送器件地址
if(ack==0)return(0);
SendByte(suba); //发送器件子地址
if(ack==0)return(0);
Start_I2c();
SendByte(sla+1);
if(ack==0)return(0);
for(i=0;i<no-1;i++)
{
*s=RcvByte(); //发送数据
Ack_I2c(); //发送就答位
s++;
}
*s=RcvByte();
NoAck_I2c(); //发送非应位
Stop_I2c(); //结束总线
return(1);
}
然后主程序里
while(1)
{
val[0]=Read_AD(0);
//Send_Byte(val[0]); //串口输出看看值
//delay_ms(10);
val[1]=Read_AD(1);
val[2]=Read_AD(2);
val[3]=Read_AD(3);
Display();
delay_ms(500);
}
0对应1通道,但读出的值是4通道的,我用万能表,测过了,4通道输入的值确实和读到的1通道的电压值一样!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>