哪位大侠用过AD7705的啊 ?

来源:百度知道 编辑:UC知道 时间:2024/05/04 07:40:31
我调了几天没有出来,希望做过的朋友加下我,QQ165292803 或者EMAIL:syyhcl@163.com 万分感谢!

利用ADD7705采样数据,与51单片机通讯,硬件连接是:P3.1提供数据脉冲,与AD7705的SCLK管脚连接,P3.0与DOUT,DIN相连,并接上拉电阻,利用51串口方式1工作,程序如下:
#include<stc89c58.h>
#include<intrins.h>
sbit AD7705_DATA=P3^0; // AD7705 input & output data
sbit AD7705_CLK=P3^1; // AD7705 CLK
sbit AD7705_DRDY=P2^7; // AD7705 data ready
sbit DIS= P4^1;
unsigned int data_out;
unsigned char rearrange(unsigned char a)
{
unsigned char i,b;
b=a&0x01;
for(i=1; i<8; i++)
{
b=b<<1;
a=a>>1;
b=b+(a&0x01);
}
return(b);
}

/*******************************************************/
void Delayms(unsigned char ms)
// relay ms
{ unsigned char i;
while(ms--)
{
for(i=0; i<124; i++);
}
}

/****************************************************************/

void WriteToReg_ADC(uns

1.51串口方式1有停止位,每次发送一个字节,将产生至少九个时钟脉冲。而AD7705每发送或接收一个字节只需要八个时钟脉冲(多一个就乱了),多发的脉冲将破坏通信的同步,应该用串口方式0吧。

2.强烈建议用一个I/O口线去控制AD7705的RESET脚,每当通信没能同步时,发一个复位脉冲即可实现同步通信。

3.P3.0与DOUT,DIN相连”,如果一切正常的话,这样设计挺好的;但是,一旦通信没能同步,出现AD7705与51单片机同时往数据线上发数据,引起冲突。可能会损害芯片。建议DOUT、DIN分开走线(尽管线多了点)。

我是用AVR单片机做的AD7705测试程序,AVR直接有SPI接口。

没能帮上你