一、A/D(模数)、D/A(数模)转换
(一)、引脚
AOUT:模拟输出
Vref:参考电压
AGND:模拟地
EXT:接地
OSC:悬空
SCL,SDA:IIC
AIN0、AIN1、AIN2:模拟输入口
(二)、电路图
从电路图可以看出,A0,A1,A2接地,所以当写入的时候地址应该是0X90,读取的时候应该是0X91
(三)、AGND和DGND
模拟地和数字地隔离开,消除干扰
(四)、控制字节
(五)、AD读数据函数
#include <reg52.h>
#include "delay.h"
#include "iic.h"
#define SUCC 1
#define FAIL 0
unsigned char ad_read_byte(unsigned char device_addr,unsigned char channel)
{
unsigned char result;
unsigned char temp;
iic_start();
result = iic_send_byte(device_addr);
if(result == FAIL)
{
return FAIL;
}
result = iic_send_byte(0x44 + channel);
if(result == FAIL)
{
return FAIL;
}
iic_start();
result = iic_send_byte(device_addr + 1);
if(result == FAIL)
{
return FAIL;
}
temp = iic_rcv_byte();
iic_noack();
iic_stop();
return temp;
}
(六)、AD写数据函数
unsigned char ad_write_byte(unsigned char deviceaddr, unsigned char num)
{
unsigned char result;
iic_start();
result = iic_send_byte(deviceaddr);
if(result == FAIL) return FAIL;
result = iic_send_byte(0x40);
if(result == FAIL) return FAIL;
result = iic_send_byte(num);
if(result == FAIL) return FAIL;
iic_stop();
return SUCC;
}