AD/DA模块代码
AD模块
unsigned char AD_in(unsigned char add)
{
unsigned char dat;
IIC_Start();
IIC_SendByte(0x90);
IIC_WaitAck();
IIC_SendByte(add);//当有DAC输出时改为0x43
IIC_WaitAck();
IIC_Stop();
IIC_Start();
IIC_SendByte(0x91);
IIC_WaitAck();
dat=IIC_RecByte();
IIC_Stop();
return dat;
}
当需要显示电压时
显示范围 | 调用方法 |
---|---|
0-5.0(V) | Vp=(float)AD_in(0x03)*50/255; |
0-5.00(V) | Vp=(float)AD_in(0x03)*500/255; |
0-100(V) | Vp=(float)AD_in(0x03)*100/255; |
- 对于代码中add的填写解释
通道 | add |
---|---|
光敏电阻 | 0x01/0x41 |
滑动电阻 | 0x03/0x43 |
对于0x03和0x43的区别在于:
上图中的0旁边的第7位(也就是最下面解释的控制位),他是控制模拟输出的开关位。
在通过电位器控制输出电压时需要使能这个位,通常情况下建议使能该位以做到通用。
DA模块
void DA_put(unsigned char val)
{
IIC_Start();
IIC_SendByte(0x90);
IIC_WaitAck();
IIC_SendByte(0x40);
IIC_WaitAck();
IIC_SendByte(val);
IIC_WaitAck();
IIC_Stop();
}
DA输出:
val范围 | 电压V |
---|---|
val(0-255) | 0-5(V) |
51*val(0-5) | 0-5(V) |