99网
您的当前位置:首页AD9850驱动程序

AD9850驱动程序

来源:99网


AD9850(DDS)驱动程序

//串行时序

#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;

//计算频率值

1

frequence=frequence*85.934592+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、 2

以及它们的组合。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);

}

3

//该芯片使用简单,新手可能困惑于相位,如无特殊情况相位设置为0即可,如需参

4

因篇幅问题不能全部显示,请点此查看更多更全内容