各位大神:程序如下
#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
芯片坏了可能性大吗?
先谢谢各位了
一周热门 更多>