⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad7705c51_2.c

📁 16位AD转换芯片调试好的程序
💻 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 + -