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

📄 ad9851.c

📁 AD9851子程序,实现快速频率变换和波形输出
💻 C
字号:
//------------------------------------AD9851---------------------------------------
#include "REG51.h"
sbit M_DATA=P1^0;  
sbit M_CLK=P1^1;   
sbit M_UD=P1^2;   
sbit M_RESET=P1^3; 
unsigned int Phase_Ctrl_Word = 0x0000; 
unsigned int Order_Ctrl_Word = 0x0001;
 /*************************************************************************************/ 
void Write_AD9851(unsigned long int Freq_Ctrl_Word)	  
{
 unsigned long int mask = 0x00000001;
 unsigned int i;
 M_UD=0;  
 for(i = 0;i < 32;i++)						 //写频率
 {
  M_CLK=0; 
  if(Freq_Ctrl_Word & mask)
  {
   M_DATA=1;
  }
  else 
  {
   M_DATA=0;
  }
  M_CLK=1;
  mask=mask<<1;
 }
 mask = 0x0001;
 for(i = 0;i < 3;i++)			 //写3位控制字,
 {
  M_CLK=0; 
  if(Order_Ctrl_Word & mask)
  {
   M_DATA=1;
  }
  else 
  {
   M_DATA=0;
  }
  M_CLK=1;
  mask = mask << 1;
 }

 mask = 0x0001;
 for(i = 0;i < 5;i++)			   //写相位控制字
 {
  M_CLK=0;
  if(Phase_Ctrl_Word & mask)
  {
   M_DATA=1;
  }
  else 
  {
   M_DATA=0;
  }
  M_CLK=1;
  mask = mask << 1;
 }
 M_UD=1; 
}
/**********************************************************************************/
void Write_freq(unsigned long int freq)
{
	unsigned long int dds; 
	dds= 42.94967296*freq;				//32位=2^32/clock*f	,用的是100M的有源震荡器
	Write_AD9851(dds);	
}
/****************************************************************************************/
   main()
{   
    M_RESET=0;						//初始化:注意,本程序用串行方式进行数据传输,D0,D1接高电平,D2接低电平
	M_RESET=1;						//就省去了开始要用并行方式送控制字:00000011
	M_RESET=0;
	M_CLK=0;
	M_UD=0;	
	M_CLK=1;
	M_CLK=0;
	M_UD=1; 
	M_UD=0;
	
    Write_freq(8000000);
}	

⌨️ 快捷键说明

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