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

📄 ad9958.txt

📁 AD9858:频率从1M~120M输出可设置。通过测试。
💻 TXT
字号:
AD9858程序:12M晶体

#include<reg52.h>
#define PLL_M 8
#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;  //
 
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 + -