项目场景:
蓝桥杯单片机使用PCF8591采集电位器和光敏电阻的电压
问题描述
电压通道错乱。
原因分析:
PCF8591每读出一次,它启动一次转换转换的结果,在下次,才能读出。
解决方案:
多读一次,把第一次读到的舍弃.
unsigned char Get_V(unsigned char ain)
{
unsigned char dat;
IIC_Start();
IIC_SendByte(0x90);//写
IIC_WaitAck();
IIC_SendByte(ain);
IIC_WaitAck();
IIC_Stop();
//读了丢舍弃一次
IIC_Start();
IIC_SendByte(0x91);//读
IIC_WaitAck();
//加延时把数据丢完不然要数据异常
Delay1ms();
IIC_RecByte();
IIC_Ack(0);
IIC_Stop();
IIC_Start();
IIC_SendByte(0x91);//读
IIC_WaitAck();
dat = IIC_RecByte();
IIC_Ack(0);
IIC_Stop();
return dat;
}
void Read_V(unsigned short *V1,unsigned short*V2)
{
*V1 = Get_V(1)*(5.0/255)*100;
*V2 = Get_V(3)*(5.0/255)*100;
}