DA芯片(AD5542)输出问题

2019-07-16 00:12发布

各位大神:程序如下
#include<reg52.h>
#include<math.h>
#define uchar unsigned char
sbit D_cs=P0^0;//片选信号
sbit D_sclk=P0^1;//时钟信号
sbit D_in=P0^2;//数据输入端
void delay(int t)
{
        int x,y;
        for(x=t;x>0;x--)
                for(y=110;y>0;y--);
}
void short_delay()
{
        uchar x;
        for(x=20;x>0;x--)
                        ;
}
void DAC_16bit_oper(int date)//跳变沿数据读走
{
        uchar i;
        bit b;
        D_cs=0;//CS片选
        short_delay();
        D_cs=1;
        D_sclk=0;
        short_delay();
        D_sclk=1;
        short_delay();
        D_cs=0;
        D_sclk=0;
        for(i=16;i>0;i--)
        {
                D_sclk=0;           //时钟信号
                b=(date&0x8000)>>15;
                D_in=b;             //数据输入端
                short_delay();
                D_sclk=1;
                short_delay();
                D_sclk=0;
                date=(date<<1);       
        }
        D_cs=1;
        delay(5);
}
void main()
{
        int num;
        dula=0;
        wela=0;
        num=26214;
        while(1)
        {
                DAC_16bit_oper(num);//完成一次向AD5542写数据的操作
                while(1);
        }
}
这样的情况下输出 1V 左右 和预期一样。但是我如果把倒数第三行的while(1)去掉不断往DA里面写 ,     DA输出就不稳了  1V  1.5V 2.4V什么都有
请教下各位  这种情况的原因可能有哪些?  
DA芯片坏了可能性大吗?

先谢谢各位了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。