蓝桥杯单片机必备知识-----(4)pcf8591–DAC
IIC.H文件中添加
dac_pcf8591(unsigned char dat)
IIC.C文件中添加
void dac_pcf8591(unsigned char dat)
{
IIC_Start(); //总线启动条件
IIC_SendByte(0x90); //通过I2C总线发送数据
IIC_WaitAck(); //等待应答
IIC_SendByte(0x40); //通过I2C总线发送数据
IIC_WaitAck(); //等待应答
IIC_SendByte(dat);
IIC_WaitAck();
IIC_Stop();
}
主函数 main.c中添加
dac_pcf8591(dac_value);
注:该ADC模块只能通过0~255来输出最大4.85V,显示时应该需要适当的转换
测试结果:(测试结果没有转换)
完整代码粘贴
IIC.H
#ifndef _IIC_H
#define _IIC_H
void IIC_Start(void);
void IIC_Stop(void);
bit IIC_WaitAck(void);
void IIC_SendAck(bit ackbit);
void IIC_SendByte(unsigned char byt);
unsigned char IIC_RecByte(void);
unsigned char init_pcf8591(void);
unsigned char adc_pcf8591(void);
void dac_pcf8591(unsigned char dat);
#endif
IIC.C
#include "reg52.h"
#include "intrins.h"
#define DELAY_TIME 5
#define SlaveAddrW 0xA0
#define SlaveAddrR 0xA1
//总线引脚定义
sbit SDA = P2^1; /* 数据线 */
sbit SCL = P2^0; /* 时钟线 */
void IIC_Delay(unsigned char i)
{
do{
_nop_();}
while(i--);