利用PCF8591进行AD转换

您所在的位置:网站首页 pcf8591的adc电压采样 利用PCF8591进行AD转换

利用PCF8591进行AD转换

2024-01-21 00:07| 来源: 网络整理| 查看: 265

上学期用过这款芯片,主要还是IIC的应用…… 原理的话没有太多时间深究了,主要还是应用

芯片引脚图

在这里插入图片描述 AN0~AN3为模拟量输入(可以选择输入方式) A0~A2为硬件地址引脚,用来编码地址 AOUT应该为模拟量输出(DA转换) SCL、SDA即为IIC通信时的总线引脚

设备地址

在这里插入图片描述 高四位为固定的编码,用来标识PCF8591,第四位就是硬件引脚+读写位

控制字

在这里插入图片描述 第6位:控制模拟量输出使能 第5和4位:模拟量输入的方式 第2位:自动增量使能,每次A/D 转换后通道号将自动增加 第1和0位:模拟输入的通道选择 在这里插入图片描述 根据原理图可以确定硬件设备地址

AD转换的操作

分别来看写和读的时序 写: 在这里插入图片描述 读: 在这里插入图片描述 若要完成一次AD转换,应严格按照时序图进行: 开启总线-----发送地址+写-----发送控制字节-----等待PCF8591响应-----停止总线-----重新启动总线-----发送地址+读------读取数据-----主机发送非应答信号-----停止总线

利用之前的IIC总线的驱动完成PCF8591的AD转换

//读取AD转换后得到的值 void Read_PCF8591() { IIC_Start(); IIC_SendByte(0x90); IIC_WaitAck(); IIC_SendByte(0x03); IIC_WaitAck(); IIC_Stop(); IIC_Start(); IIC_SendByte(0x91); IIC_WaitAck(); signal=IIC_RecByte(); IIC_SendAck(1); IIC_Stop(); }

切记:每一次发送完数据都要调用等待应答函数,否则读数将出现问题!(之前一直显示127,后来发现发完读命令后忘记等待应答了……) 还有就是延时函数要调整,把宏定义改为25!

Reference: https://www.cnblogs.com/whik/p/6650955.html https://blog.csdn.net/ohy3686/article/details/86721281



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3