找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6273|回復(fù): 5
收起左側(cè)

單片機+PCF8591的數(shù)字電壓表Proteus仿真設(shè)計 源程序

  [復(fù)制鏈接]
ID:630107 發(fā)表于 2019-12-4 11:56 | 顯示全部樓層 |閱讀模式
基于PCF8591的數(shù)字電壓表設(shè)計

proteus仿真原理圖

proteus仿真原理圖


單片機源程序如下:
  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();                                                                // 等待從機應(yīng)答
  8.         IIC_SendByte(0x00);                                                        // 寫入控制字0000 0000,選擇通道0
  9.         IIC_WaitAck();                                                                // 等待從機應(yīng)答
  10.         IIC_Stop();                                                                        // IIC結(jié)束信號
  11. }

  12. //將模擬量轉(zhuǎn)換為數(shù)字量
  13. uchar Read_PCF() {
  14.         uchar temp;
  15.         IIC_Start();                                                                // IIC起始信號
  16.         IIC_SendByte(PCF_Address + IIC_Read);                // 發(fā)送PCF8591地址和讀方向位
  17.         IIC_WaitAck();                                                                // 等待從機應(yīng)答
  18.         temp = IIC_ReadByte();                                                 // 讀取數(shù)字量
  19.         IIC_SendAck(1);                                                                // 讀取完畢,主機發(fā)送結(jié)束標(biāo)志位
  20.         IIC_Stop();                                                                        // IIC結(jié)束信號
  21.         return temp;
  22. }

  23. // 數(shù)字量轉(zhuǎn)換為模擬量
  24. void PCF_Output(uchar Digital) {
  25.     IIC_Start();
  26.     IIC_SendByte(PCF_Address + IIC_Write);     //器件地址+0,下一個字節(jié)為寫入
  27.     IIC_WaitAck();
  28.     IIC_SendByte(0x40);                                          //設(shè)置控制字 0100 0000 允許模擬輸出,不自增單端
  29.     IIC_WaitAck();
  30.     IIC_SendByte(Digital);                                       //將要轉(zhuǎn)換的數(shù)字量寫入
  31.     IIC_所有資料51hei提供下載:


  32. WaitAck();
  33.     IIC_Stop();            
  34. }
復(fù)制代碼

所有資料51hei提供下載:
數(shù)字電壓表設(shè)計.zip (1.04 MB, 下載次數(shù): 151)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:318131 發(fā)表于 2019-12-4 23:45 | 顯示全部樓層
voldata = iic_readvoldata();                                //接收iic總線輸出數(shù)據(jù)
    vol =1000- voldata*5/25.5*20;                                //將iic總線輸出數(shù)據(jù)轉(zhuǎn)換成百分比形式的數(shù)值(精確到0.1%)
我也用了這個芯片,但AD的算法我不明白,,你能講一講嗎
回復(fù)

使用道具 舉報

ID:674202 發(fā)表于 2019-12-30 19:24 來自手機 | 顯示全部樓層
感謝分享!
回復(fù)

使用道具 舉報

ID:345173 發(fā)表于 2020-2-8 13:31 來自手機 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報

ID:110278 發(fā)表于 2020-2-26 13:03 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報

ID:848128 發(fā)表于 2020-12-28 12:16 來自手機 | 顯示全部樓層
為什么單片機換成52的數(shù)碼管就不亮了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表