枭龙战机

AD9850介绍及应用

0
阅读(2749)

AD9850是AD公司生产的最高时钟为125 MHz、采用先进的CMOS技术的直接频率合成器,主要由可编程DDS系统、高性能模数变换器(DAC)和高速比较器3部分构成,能实现全数字编程控制的频率合成。内含可编程DDS 系统和高速比较器,可实现全数字编程控制的频率合成。可编程DDS系统的核心是相位累加器,由一个加法器和一个N位相位寄存器组成,N 一般为24~32。每来一个外部参考时钟,相位寄存器便以步长M递加。相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。正弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0°~360°范围的一个相位点。查询表把输入地址的相位信息映射成正弦波幅度信号,然后驱动DAC 输出模拟量。 下面是编的程序。 

 

#include 
sbit ad9850_fq_up    =P1^1;  //接ad9850的fq_up脚
sbit ad9850_bit_data =P1^2;  //接ad9850的D7脚
sbit ad9850_w_clk    =P1^3;  //接ad9850的w_clk脚
//***************************************************//
//          向ad9850中写命令(串口)             //
//---------------------------------------------------//
void ad9850_wr_com(unsigned char w, double frequence)
{
unsigned char i;
unsigned long int M;
//计算频率值
frequence=frequence*85.89934592+0.5; //适合50M晶振  f=fclk*M/2^32即M=f*2^32/fclk
M=frequence;        //频率控制字
ad9850_w_clk=0;       //初始化 
ad9850_fq_up=0;

//写频率控制字
for(i=0;i<32;i++)       //连续写入32位频率控制字
{
ad9850_w_clk=0;
ad9850_bit_data=(bit)((M>>i)&0x0001);
ad9850_w_clk=1;         //上升沿写入数据
}
//写相位控制字  
for(i=0;i<8;i++)        //需要w<=32  相位有180、90、45、22.5、11.25以及它们的组合。
{
ad9850_w_clk=0;
ad9850_bit_data=(bit)(w>>i)&0x01;
ad9850_w_clk=1;         //上升沿写入数据
}
//移入始能 
ad9850_fq_up=0;       
ad9850_fq_up=1;         //上升沿将40位数一次性打入数据寄存器
}
void main()
{
ad9850_wr_com(0,1000000);    
while(1);
}