基于PCF8591的数字电压表设计
proteus仿真原理图
单片机源程序如下:
- #include "config.h"
- #include "IIC.h"
- // 初始化PCF8591
- void Init_PCF(){
- IIC_Start(); // IIC起始信号
- IIC_SendByte(PCF_Address + IIC_Write); // 写入PCF8591器件地址和写方向位
- IIC_WaitAck(); // 等待从机应答
- IIC_SendByte(0x00); // 写入控制字0000 0000,选择通道0
- IIC_WaitAck(); // 等待从机应答
- IIC_Stop(); // IIC结束信号
- }
- //将模拟量转换为数字量
- uchar Read_PCF() {
- uchar temp;
- IIC_Start(); // IIC起始信号
- IIC_SendByte(PCF_Address + IIC_Read); // 发送PCF8591地址和读方向位
- IIC_WaitAck(); // 等待从机应答
- temp = IIC_ReadByte(); // 读取数字量
- IIC_SendAck(1); // 读取完毕,主机发送结束标志位
- IIC_Stop(); // IIC结束信号
- return temp;
- }
- // 数字量转换为模拟量
- void PCF_Output(uchar Digital) {
- IIC_Start();
- IIC_SendByte(PCF_Address + IIC_Write); //器件地址+0,下一个字节为写入
- IIC_WaitAck();
- IIC_SendByte(0x40); //设置控制字 0100 0000 允许模拟输出,不自增单端
- IIC_WaitAck();
- IIC_SendByte(Digital); //将要转换的数字量写入
- IIC_所有资料51hei提供下载:
- WaitAck();
- IIC_Stop();
- }
复制代码
所有资料51hei提供下载:
数字电压表设计.zip
(1.04 MB, 下载次数: 151)
|