📄 ad7705c51_2.c
字号:
#include <reg51.H>
#include<ABSACC.H>
sbit Rest7705=P1^7;
sbit DRDY=P1^6;
sbit SCLK=P3^1;
sbit DOUT=P3^0;
sbit DIN=P3^0;
//=======================================================
void R_ADTEM();
void Init_Channel_Temp();
void Write_Command(unsigned char command);
void delay1 (int ms);
unsigned int Read_AD_Data();
char AD_INBYT(void);
//========================================================
void main()
{ int i;
SP=0x6f;
Rest7705=0;
for(i=0;i<1000;i++)
{ i++;
}
Rest7705=1;
Init_Channel_Temp();
while(1)
{R_ADTEM();}
}
void R_ADTEM()
{ unsigned int temp;
// while(DRDY==1);
temp=Read_AD_Data();
}
void Init_Channel_Temp()
{
Write_Command(0x20);
Write_Command(0x02);
Write_Command(0x10);
Write_Command(0x72);
}
//================================================
//模拟串口写数据到AD7705
void Write_Command(unsigned char command)
{ int i;
char temp;
temp=command;
for(i=0;i<8;i++)
{ SCLK=0;
SCLK=0;
DOUT=temp&0x80 ;
temp<<=1;
SCLK=1;
SCLK=1;
}
DOUT=1;
SCLK=1;
}
void delay1 (int ms)
/*****************延时子程序******************/
{ int i,j;
for(i=0;i<ms;i++)
for(j=0;j<1000;j++);
}
//===============================================================
//读取温度通道AN1的AD转换数据
unsigned int Read_AD_Data()
{ unsigned char temp;
unsigned int temp_data;
Write_Command(0x38);
temp= AD_INBYT();
temp_data=temp*0x100;
temp= AD_INBYT();
temp_data=temp_data+temp;
return temp_data ;
}
//==================================================================
//AD7705模拟串行输入程序
char AD_INBYT(void)
{
char temp,i;
temp=0;
while(DRDY==1);
for(i=0;i<8;i++) //mov R0, #08 ; Set bit counter to eight
{
//inbyt1:
SCLK=0; //setb sck ; Bring SCK high
SCLK=0; //clr sck ; Bring SCK low
temp=temp<<1; //mov C, so ; Receive data bit and store in carry
//rlc A ; Shift byte left through carry
SCLK=1;
SCLK=1;
temp|=DIN; //djnz R0, inbyt1 ; Finish if last data bit
} //ret
return temp;
}
//======================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -