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

📄 ad9958.txt

📁 AD9958源程序:以完全通过测试
💻 TXT
字号:


#include<reg52.h>
#define PLL_M 6
#define Fclk  (20*1000000*PLL_M)   //时钟频率
#define uchar unsigned char 
#define uint  unsigned int 

sbit OSK="P1"^5; //
sbit PS0=P1^6;  //
sbit PS1=P1^7;  // RAM选择控制寄存器选择位 /////////自动扫描模式下必须保持0
/*********************************************/

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

sbit IO_UPDATE=P2^0;                             
sbit SDIO="P2"^1; //数据上升沿写入,下降沿读出
sbit SCLK="P2"^2; 
sbit _CS=P2^3;
sbit SDO="P2"^4;      //可以不要
sbit IOSYNC="P2"^5;   //保持低电平
sbit RESET="P2"^6;   //保持低电平
sbit PWRDWNCTL="P2"^7;//保持低电平
              

 
void delay10ms()
{uchar i,j;
 for(i=248;i>0;i--)
 for(j=20;j>0;j--);
}


void AD9954_init()
{ IO_UPDATE=0;  
  RESET="0";
  PWRDWNCTL="0";
  IOSYNC="0";
  OSK="0";
   _CS=1;                                                    
  SDIO="0";

}


void run()
{
IO_UPDATE=0;
IO_UPDATE=0;
IO_UPDATE=0;
IO_UPDATE=1;
IO_UPDATE=1;
IO_UPDATE=1;

}


void write_a_byte(uchar  w_data)
{
 uchar i;
 for(i=0;i<8;i++)
  {
   SDIO=(w_data&0x80);
   w_data<<=1;
   SCLK="0";
   SCLK="0";
   SCLK="1";
   SCLK="1"; 
  }
}

//********************** 写控制字1 ****************************/

void write_CFR1(uchar w1,uchar w2,uchar w3,uchar w4)
{_CS=0;
 _CS=0;
 write_a_byte(0x00);
 write_a_byte(w1);
 write_a_byte(w2);
 write_a_byte(w3);
 write_a_byte(w4);
 _CS=1;
 _CS=1;
}
 
//********************** 写控制字2 ****************************/
  //*************  主要确定PLL倍频控制字M*********************/

void write_CFR2(uchar w1,uchar w2,uchar w3)
{_CS=0;
 _CS=0;
 write_a_byte(0x01);
 write_a_byte(w1);
 write_a_byte(w2);
 write_a_byte(w3);
 _CS=1;
 _CS=1;
}


//**********************写幅度转换字****************************/

void write_ASF(uchar w1,uchar w2)
{_CS=0; 
 _CS=0;
 write_a_byte(0x02);
 write_a_byte(w1);
 write_a_byte(w2);
 _CS=1;
 _CS=1;
}

//**********************写幅度转换速度字****************************/


void write_ARR(uchar w1)
{_CS=0; 
 _CS=0;
 write_a_byte(0x03);
 write_a_byte(w1);
 _CS=1;
 _CS=1;
}

//**********************写频率转换字FTW1****************************/

void write_FTW0(uchar w1,uchar w2,uchar w3,uchar w4)
{_CS=0;
 _CS=0;
 write_a_byte(0x04);
 write_a_byte(w1);
 write_a_byte(w2);
 write_a_byte(w3);
 write_a_byte(w4);
 _CS=1;
 _CS=1;
}

//**********************写相位偏移字****************************/

void write_POW0(uchar w1,uchar w2)
{_CS=0;
 _CS=0;
 write_a_byte(0x05);
 write_a_byte(w1);
 write_a_byte(w2);
 _CS=1;
}

//**********************写频率转换字2****************************

void write_FTW1(uchar w1,uchar w2,uchar w3,uchar w4)
{_CS=0;
 _CS=0;
 write_a_byte(0x06);

 write_a_byte(w1);
 write_a_byte(w2);
 write_a_byte(w3);
 write_a_byte(w4);
 _CS=1;
}


main()
{
 uint i;


 for(i=200;i>0;i--)
 delay10ms();

 AD9954_init();

while(1)
{
 for(i=200;i>0;i--)
 delay10ms();

 write_CFR1(0x02,0x00,0x02,0x00);
  
 write_CFR2(0x00,0x02,0x30);//  写PLL_M=6, 必不可少

 write_ASF(0x10,0x00);

 write_FTW0(0x01,0x00,0x00,0x00);

 write_POW0(0x00,0x01);

 run();
 while(1);

}


}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -