标题: 单片机+PCF8591的数字电压表Proteus仿真设计 源程序 [打印本页]

作者: dream772    时间: 2019-12-4 11:56
标题: 单片机+PCF8591的数字电压表Proteus仿真设计 源程序
基于PCF8591的数字电压表设计



单片机源程序如下:
  1. #include "config.h"
  2. #include "IIC.h"


  3. // 初始化PCF8591
  4. void Init_PCF(){
  5.         IIC_Start();                                                                // IIC起始信号
  6.         IIC_SendByte(PCF_Address + IIC_Write);                // 写入PCF8591器件地址和写方向位
  7.         IIC_WaitAck();                                                                // 等待从机应答
  8.         IIC_SendByte(0x00);                                                        // 写入控制字0000 0000,选择通道0
  9.         IIC_WaitAck();                                                                // 等待从机应答
  10.         IIC_Stop();                                                                        // IIC结束信号
  11. }

  12. //将模拟量转换为数字量
  13. uchar Read_PCF() {
  14.         uchar temp;
  15.         IIC_Start();                                                                // IIC起始信号
  16.         IIC_SendByte(PCF_Address + IIC_Read);                // 发送PCF8591地址和读方向位
  17.         IIC_WaitAck();                                                                // 等待从机应答
  18.         temp = IIC_ReadByte();                                                 // 读取数字量
  19.         IIC_SendAck(1);                                                                // 读取完毕,主机发送结束标志位
  20.         IIC_Stop();                                                                        // IIC结束信号
  21.         return temp;
  22. }

  23. // 数字量转换为模拟量
  24. void PCF_Output(uchar Digital) {
  25.     IIC_Start();
  26.     IIC_SendByte(PCF_Address + IIC_Write);     //器件地址+0,下一个字节为写入
  27.     IIC_WaitAck();
  28.     IIC_SendByte(0x40);                                          //设置控制字 0100 0000 允许模拟输出,不自增单端
  29.     IIC_WaitAck();
  30.     IIC_SendByte(Digital);                                       //将要转换的数字量写入
  31.     IIC_所有资料51hei提供下载:


  32. WaitAck();
  33.     IIC_Stop();            
  34. }
复制代码

所有资料51hei提供下载:
数字电压表设计.zip (1.04 MB, 下载次数: 151)


作者: 元亨利贞    时间: 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