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

📄 ad9851_driver.c

📁 幅频特性测试:主要用DDS芯片AD9851实现在5秒内完成步进为1KHZ的频率特性测试。
💻 C
字号:
#include<c8051f020.h>
#include "initial.h"
#define Data_Port_DDS P6
#define REF_clk 30000000.0//DDS参考时钟输入频率30M;
sbit W_clk=P2^3;    /*上升沿有效*/
sbit FQ_UD=P2^4;    /*上升沿有效*/ 
sbit DDS_RES=P2^5;    /*低电平有效*/

void AD9851_Init(void)
{
   FQ_UD=0;
   DDS_RES=1;       //   /*重启AD9851
   delay(5);
   W_clk=0;
//   delay(5);
   DDS_RES=0;        //  /*开始操作AD9851
}  
////////////////////////////////////////////////////
//计算发送的频率和相位值并发送给单片机
///////////////////////////////////////////////////
void AD9851_DDS_Control(long Freq,uchar Phase)
{
   long Freq_Data;
   //long Freq_Data,d1;  //////32位频率控制字
   //float fl_data;	   //////d1和fl_data为通过频率Freq计算控制字的中间变量
   uchar FData[5],i;
   //uchar PData;		  /////////5位相位控制字

  // d1=Freq<<8; //d1*256
  // fl_data=d1/REF_clk;
   Freq_Data=Freq*143; //得到频率控制字(加上面2的8次方,共2的32次方)
   
   FData[4]=Freq_Data;		 /////////////   ,FData为char型,
   FData[3]=Freq_Data>>8;	  ///////////	,数据保存到FData数组
   FData[2]=Freq_Data>>16;	  /////////////	  ,高8位丢失;
   FData[1]=Freq_Data>>24;	 //////////////////
   
   //PData=0;/*(Phase/360)*32; */
   FData[0]=0x00;  //6倍频开‘1’,并行工作‘0’,非掉电方式‘0’;
   //PData=PData<<3;
   //FData[0]=FData[0]|PData; ////////确定相位控制字以及工作方式;  
   FQ_UD=0;W_clk=0;DDS_RES=1;//复位;
   delay(5);
   DDS_RES=0;
   for(i=0;i<5;i++)
   {
   		Data_Port_DDS=FData[i];
		W_clk=1;delay(5); //上升沿将数据写入;
		W_clk=0;delay(5);
   }
   FQ_UD=1;//频率更新控制信号(上升沿将40位数据送入DDS;)
   delay(5);
   FQ_UD=0;   
}

⌨️ 快捷键说明

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