51驱动AD9850/AD9851—DDS信号发生器

51驱动AD9850/AD9851—DDS信号发生器

AD9850/AD9851的简介

AD9850/AD9851 模块是采用 ADI 应用最广泛的 DDS(AD9850 和 AD9851)制作的模块。
51驱动AD9850/AD9851—DDS信号发生器

主要功能特点:

  • 模块能够输出正弦波和方波,2 个正弦波和 2 个方波输出。
     AD9850: 0-40MHz
     AD9851: 0-70MHz
     频率在 20-30MHz 后谐波越来越大,波形会越来越不干净。
     方波: 0-1MHz
  • 采用 70MHz 的低通滤波器,使波形的 SN 比更好
  • 比较器的基准输入端电压由可变电阻产生,调节该电阻可以得到不同的占空比方波
  • AD9850 模块采用 125MHz 的有源晶振,AD9851 模块采用 30MHZ 的有源晶振

AD9850 和 AD9851 主要区别

  • AD9850 的时钟频率最高 125MHz,AD9851 的时钟频率最高 180MHz。输出最高频率
     AD9851 要比 AD9850 高。
  • AD9850 没有 6 倍频,AD9851 有

原理图

51驱动AD9850/AD9851—DDS信号发生器

DDS输出波形的灵活性

关于DDS的其他性能这里暂不多叙。关于DDS的输出波形灵活性只要在 DDS内部加上相应控制如调频控制FM、调相控制PM和调幅控制AM,即可以方便灵活地实现调频、调相和调幅功能,产生FSK、PSK、ASK和 MSK等信号。另外,只要在DDS的波形存储器存放不同波形数据,就可以实现各种波形输出,如三角波、锯齿波和矩形波甚至是任意的波形。当DDS的波形存储器分别存放正弦和余弦函数表时,既可得到正交的两路输出。
DDS的原理框图:
51驱动AD9850/AD9851—DDS信号发生器

AD9850/AD9851 模块的输出波形

输出正弦波和方波,
注:在输出正弦波的情况下,接线到方波输出的 IO 口,直接调节
蓝色的电位器可输出方波。

程序介绍

下面对主要的源代码进行简单的介绍
初始化DDS

void init_dds(void)
{
clk =0;
load =0;
delay(2);
clk = 1;
delay(2);
clk =0;
delay(5);
load= 1;
delay(2);
load= 0;
}

写入40bit到DDS芯片,频率占用前32bit,相位暂不可调

void write_dds(unsigned long dds)
{
uchar i;
load= 0;
clk =0;
for(i=0;i<40;i++)
{
clk = 0;
delay(3);
if(dds & 0x00000001)
dat = 1;
else dat = 0;
delay(2);
clk = 1;
dds = dds >> l;
}
load=1;clk =0;delay(5);load= 0;
}

输出你要的频率,例如输出12.5M则调用write freq ( 12500000);

void write_freq(unsigned long freq)
{
unsigned long dds;
dds = 42.94967296*freq;write_dds(dds);
}

实验接线

ad9850 51
w_clk P2^2
fq_up P2^1
rest P2^0
bit_data P1^7

当然,还要接电源供电

调试结果

51驱动AD9850/AD9851—DDS信号发生器
下载好对应的代码
OUT1 和 OUT2 端能测试到对应输出 1KHz 信号。如需测试方波,调节可变电位器,可在方波 1 和方波 2 端测试到方波。

AD9851的程序设计

其实软件和AD9850差不多,主要采用注意6clock打开还是关闭,其余的当成180M的时钟处理。
外部晶体为30M,6倍频打开,不像AD9854可以4—20倍频可选。在AD9851的基础上稍做修改就可搞定。
本次主要以AD9850为主做介绍

总结

AD9850是AD公司采用先进的DDS技术1996年推出的高集成度DDS频率合成器,它内部包括可编程 DDS系统、高性能DAC及高速比较器,能实现全数字编程控制的频率合成器和时钟发生器。有需要全代码的可下方留言邮箱获取,长期发布此类文章,喜欢的可以常关注,有不对的地方欢迎大家指点。

上一篇:RDS、DDS和GaussDB理不清?看这一篇足够了!


下一篇:云图说|小云妹-DDS实例安全基本操作