标题:
单片机+PCF8591的数字电压表Proteus仿真设计 源程序
[打印本页]
作者:
dream772
时间:
2019-12-4 11:56
标题:
单片机+PCF8591的数字电压表Proteus仿真设计 源程序
基于PCF8591的数字电压表设计
Snipaste_2019-12-04_11-55-36.png
(70.44 KB, 下载次数: 105)
下载附件
proteus仿真原理图
2019-12-4 11:55 上传
单片机源程序如下:
#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)
2019-12-4 11:52 上传
点击文件名下载附件
proteus仿真+源程序
下载积分: 黑币 -5
作者:
元亨利贞
时间:
2019-12-4 23:45
voldata = iic_readvoldata(); //接收iic总线输出数据
vol =1000- voldata*5/25.5*20; //将iic总线输出数据转换成百分比形式的数值(精确到0.1%)
我也用了这个芯片,但AD的算法我不明白,,你能讲一讲吗
作者:
down2
时间:
2019-12-30 19:24
感谢分享!!
作者:
yizhenfeng
时间:
2020-2-8 13:31
感谢分享
作者:
linnyshow
时间:
2020-2-26 13:03
感谢分享
作者:
qiaojungen51
时间:
2020-12-28 12:16
为什么单片机换成52的数码管就不亮了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1