工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->基础电路图->数字电路图->D/A转换(MAX517/518)的应用

D/A转换(MAX517/518)的应用

作者:Lamborghini时间:2009-09-23

MAX517/518是8位电压输出型数摸转换器,采用I2C的双总线串行接口 ,支持多个设备的通信,内部有精密输出缓冲源,支持双极性工作方式,工作电源电压为5V。MAX517是一单DAC转换器,参考电压由外部引脚接入,而MAX518则由两片DAC集成,具有两路输出,MAX518的两块DAC均由电源电压提供参考源,无需外部接入。数据传输速率可高达400Kbps。它们有如下特点:
  (1)单独5V电源供电;
  (2)简单的双线接口;
  (3)与I2C总线兼容;
  (4)输出缓冲放大双极性工作方式;
  (5)基准输入可为双极性;
  (6)上电复位将所有闭锁清零;
  (7)4uA掉电摸式;
  (8)总线上可挂四个器件(通过AD0、AD1选择)。

  MAX517时序图如下:    

 典型的应用电路如下面两图所示:

其C51应用程序如下:(MAX517)

#include <reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
sbit Sda=P1^1; //串行数据
sbit Scl=P1^2; //串行时钟

void mDelay(uchar j) //廷时
{uint i;
 for(;j>0;j--)
  for(i=0;i<10;i++)
  {}
 }
void Start(void) //起始条件
{
Sda=1;
Scl=1;
Sda=0;
}
void Stop(void) //停止条件
{
Sda=0;
Scl=1;
Sda=1;
}
void Ack(void) //应答位
{
Sda=0;
Scl=1;
Scl=0;
}
void Send(uchar Dat) //发送数据子程序,Dat为要求发送的数据
{
uchar BitCounter=8; //位数控制
uchar temp; //中间变量控制
do
 {
 temp=Dat;
 Scl=0;
  if((temp&0x80)==0x80) //如果最高位是1
   Sda=1;
  else
   Sda=0;
   Scl=1;
  temp=Dat<<1; //RLC
  Dat=temp;
  BitCounter--;
 }
 while(BitCounter);
 Scl=0;
}

void moveout(uchar num)
{
Start(); //发送启动信号
Send(0x58); //发送器件地址
Ack();
Send(0x00); //发送命令
Ack();
Send(num);
Ack();
Stop();
mDelay(2);
}
void main()
{uchar shuju;
moveout(shuju);
}

  MAX518的数摸转换程序和MAX517的程序类似,与MAX517不同的是,MAX518可以通过设置片内控制字来实现单路输出,或是双路输出,在程序设计时必须注意这一点。


关键词: 转换 MAX517 应用

评论

技术专区