A D 7705 的操作 我现在使用外部TL431(2.5V 基准电压),电源电压为5V,外接晶体振荡器2.4576MHz,电路如下: 程序如下: -------------------------- AD7705.H ----------------------------------- #ifndef _AD7705_H_ #define _AD7705_H_ // 引脚定义 sbit AD7705_SCLK = P2^4; sbit AD7705_DRDY = P2^5; sbit AD7705_DOUT = P2^6; sbit AD7705_DIN = P2^7; // 通讯寄存器地址定义 #define WR_SETUP_REG 0x10 //选中设置寄存器,写 #define RD_SETUP_REG 0x18 //选中设置寄存器,读 #define WR_CLOCK_REG 0x20 //选中时钟寄存器,写 #define RD_DATA_REG 0x38 //选中数据寄存器,读 #define WR_OFFSET_REG 0x60 //选中 offset 寄存器,写 #define RD_OFFSET_REG 0x68 //选中 offset 寄存器,读 #define WR_FULL_REG 0x70 //选中 full scale 寄存器,写 #define RD_FULL_REG 0x78 //选中 full scale 寄存器,读 #define SYS_ZERO_CALI 0x80 //系统零校准模式 #define SYS_FULL_CALI 0xC0 //系统满量程校准模式 #define ZERO_CALIBRATION 0x00 //系统零校准 #define FULL_CALIBRATION 0x01 //系统满量程校准 #define CLOCK_REG_SET 0x04 //CLOCK寄存器设置,无分频,50HZ输出更新速率 #define DELAY() {_nop_();_nop_();_nop_();} // 函数声明 void AD7705_Init(void); void AD7705_Reset(void); void AD7705_Start(void); uchar AD7705_ReadByte(void); void AD7705_WritByte(uchar d); float AD7705_ReadVol(void); #endif -------------------------- AD7705.C ----------------------------------- //**************************************************************************** //功能:AD7705 串行接口失步后将其复位。复位后要延时 500us 再访问 //参数:无 //返回:无 //备注: //**************************************************************************** void AD7705_Reset(void) { uchar data i; for( i=0; i<36; i++ ) { AD7705_SCLK = LOW; AD7705_DIN = HIGH; // DIN 端口连续写 36 个周期的高电平,保证复位 DELAY(); AD7705_SCLK = HIGH; DELAY(); } DelayMS(1); // 复位之后等待 1MS } //***************************************************...