这是我的程序,调了很久了 硬件的软件的都试过了 都没输出,各位大哥帮我看看哪里出问题了
void DAC_Write(uint8_t add,uint16_t dat)
{
uint8_t i,h_dat,l_dat;
h_dat=(dat>>8)&0x00ff;//数据高八位
l_dat=dat&0x00ff;//数据低八位
ATLCH_0;//片选拉低
for(i=8;i>0;i--)//写寄存器地址
{
SCLK_0;
if(add&0x80)
{
DIN_1;
}
else{
DIN_0;
}
SCLK_1;
add<<=1;
}
for(i=8;i>0;i--)//写高八位数据
{
SCLK_0;
if(h_dat&0x80)
{
DIN_1;
}
else {
DIN_0;
}
SCLK_1;
h_dat<<=1;
}
for(i=8;i>0;i--) //写低八位数据
{
SCLK_0;
if(l_dat&0x80)
{
DIN_1;
}
else{
DIN_0;
}
SCLK_1;
l_dat<<=1;
}
ATLCH_1;
DIN_1;
}
void DAC_Init(void)//初始化
{
DAC_Write(0x56,0x0001);//¸复位
DAC_Write(0X55,(1<<12)|0X0000);//使能输出 ,范围0-5v
DAC_Write(0x57,(1<<8) |(2<<9) );//双输出使能,范围0-20,ma
DAC_Write(0x01,0);//输出0
}
void out_put(uint16_t dat)
{
DAC_Write(0x01,dat);
}
下面是在mian函数里面的 调用方式,
void main()
{
DAC_Init();
out_put(0xffff);按理说应该输出最大 可是不管电压电流都没输出
}
|