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

(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可以通过设置片内控制字来实现单路输出,或是双路输出,在程序设计时必须注意这一点。
评论