其中AIN1对应光敏电阻,AIN3对应滑动变阻
PCF8591采用IIC通信,底层驱动代码官方也会给,
********AD程序框架********
1、开始信号
2、写从设备地址(即PCF8591的地址)
3、等待应答
4、写控制字节地址
5、等待应答
6、开始信号
7、读从设备地址(即PCF8591的地址最低位置1)
8、等待应答
9、读数据
10、发送应答1
11、停止信号
12、返回值
unsigned char AD_PCF8591(void)
{
unsigned char dat;
I2CStart();
I2CSendByte(0x90); //PCF8591的地址
I2CWaitAck();
I2CSendByte(0x01); //光敏电阻通道
I2CWaitAck();
I2CStart();
I2CSendByte(0x91);
I2CWaitAck();
dat=I2CReceiveByte();
I2CSendAck(1);
I2CStop();
return dat;
}
********DA程序框架**********
1、开始信号
2、写从设备地址(即PCF8591的地址)
3、等待应答
4、写控制字节地址
5、等待应答
6、写数据
7、等待应答
8、停止信号
void DAC_PCF8591(unsigned char Data)
{
I2CStart();
I2CSendByte(0x90);
I2CWaitAck();
I2CSendByte(0x40); //DA允许位置1
I2CWaitAck();
I2CSendByte(Data);
I2CWaitAck();
I2CStop();
}
那这两个怎么转换成电压值呢?
Value=dat*5/255 //根据要求注意数据类型吧
如果AD/DA同时使用,上面的程序中的写控制字节不能互相影响了