7、蓝桥杯单片机之PCF8591(AD/DA转换)

本文详细描述了如何使用PCF8591进行光敏电阻和滑动变阻的AD采样以及DAC模拟输出的I2C通信过程,并解释了控制字节的管理以避免并发操作中的干扰。
摘要由CSDN通过智能技术生成

2ffc6ea863704e889d818b91ca89332c.jpeg

963603dd881d4980ac75c531e8816589.png

 其中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同时使用,上面的程序中的写控制字节不能互相影响了

 

 

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

了了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值