大家好,最近在忙一个数模转换的东东,用到了一片dac7612,双通道输出,12bit ,我用单片机进行的控制,控制信号如下图所示,示波器中显示良好,图显示的是输出128.也就是0.128mv,dac7612没有加负载什么的,然后测试输出口,电压值不知为什么不稳定,请大家帮忙看看,帮我找一下原因,
示波器显示的数据
(原文件名:p_large_dWtm_4e610000000d5c41.jpg)
(原文件名:p_large_NAcX_34b2000000205c3f.jpg)
(原文件名:时序.png)
(原文件名:时序一.png)
附c程序代码
void AnalogOutput(bit lbch ,unsigned int da_data){
unsigned char lucBitNum;
EA = 0;
da_data = da_data<<2;
if(!lbch){
// ch A
da_data |= 0x8000; // A1 = 1;
da_data &= 0xBFFF; // A0 = 0;
}else{
// ch B
da_data |= 0xC000;
}// A1 = A0 = 1;
LOADDA = 1;
delay_us(15);
da_cs=0;
delay_us(15);
for(lucBitNum=0;lucBitNum<14;lucBitNum++)
{
DA_CLK=1;
DA_SDI = da_data & 0x8000;
delay_us(15);
DA_CLK = 0;
delay_us(15);
da_data= da_data<<1;
}
da_cs=1;
delay_us(15);
LOADDA=0;
delay_us(15);
LOADDA=1;
delay_us(15);
EA=1;
}
void main()
{
while(1)
{
AnalogOutput(0,128);
while(1) ;
}
}
换了另一个口也是这样的情况
电路设计只是一片dac7612,电源地都测试良好
以下是我的代码,你参考下。
VOID CODEFOR7612(UNSIGNED INT DATA,CHAR ADDR)
{
SCK=1;
LD=1;
CS=0;
DATA=(DATA&0XFFF)|ADDR; //ADDR 只能是 0X00或者 0X02
FOR(I=13;I<=0;I--)
{
SDI=DATA&(1<<I);
SCK=0;
DELAY();
SCK=1;
DELAY();
}
LD=0;
DELAY();
LD=1;
DELAY();
CS=1;
}
VOID DELAY()
{
CHAR CNT=12;
WHILE(CNT--);
}
借用一下,嘿嘿
这个有问题吧,看一眼for循环的条件0.0、、、
一周热门 更多>