基于PCF8591的數(shù)字電壓表設(shè)計
proteus仿真原理圖
單片機源程序如下:
- #include "config.h"
- #include "IIC.h"
- // 初始化PCF8591
- void Init_PCF(){
- IIC_Start(); // IIC起始信號
- IIC_SendByte(PCF_Address + IIC_Write); // 寫入PCF8591器件地址和寫方向位
- IIC_WaitAck(); // 等待從機應(yīng)答
- IIC_SendByte(0x00); // 寫入控制字0000 0000,選擇通道0
- IIC_WaitAck(); // 等待從機應(yīng)答
- IIC_Stop(); // IIC結(jié)束信號
- }
- //將模擬量轉(zhuǎn)換為數(shù)字量
- uchar Read_PCF() {
- uchar temp;
- IIC_Start(); // IIC起始信號
- IIC_SendByte(PCF_Address + IIC_Read); // 發(fā)送PCF8591地址和讀方向位
- IIC_WaitAck(); // 等待從機應(yīng)答
- temp = IIC_ReadByte(); // 讀取數(shù)字量
- IIC_SendAck(1); // 讀取完畢,主機發(fā)送結(jié)束標(biāo)志位
- IIC_Stop(); // IIC結(jié)束信號
- return temp;
- }
- // 數(shù)字量轉(zhuǎn)換為模擬量
- void PCF_Output(uchar Digital) {
- IIC_Start();
- IIC_SendByte(PCF_Address + IIC_Write); //器件地址+0,下一個字節(jié)為寫入
- IIC_WaitAck();
- IIC_SendByte(0x40); //設(shè)置控制字 0100 0000 允許模擬輸出,不自增單端
- IIC_WaitAck();
- IIC_SendByte(Digital); //將要轉(zhuǎn)換的數(shù)字量寫入
- IIC_所有資料51hei提供下載:
- WaitAck();
- IIC_Stop();
- }
復(fù)制代碼
所有資料51hei提供下載:
數(shù)字電壓表設(shè)計.zip
(1.04 MB, 下載次數(shù): 151)
2019-12-4 11:52 上傳
點擊文件名下載附件
proteus仿真+源程序
|