zhaofeng2008 发表于 2010-12-28 11:44:23

39元的ad9850模块驱动起来了。

测试驱动如下,m16,icc编译。。。
看起来频谱很干净。波形很漂亮呵呵。
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_607603KB5MO7.jpg
(原文件名:无标题1.jpg)

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_607604OI96ZT.jpg
(原文件名:无标题2.jpg)

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_607605MK9F6A.jpg
(原文件名:无标题3.jpg)

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_607606RMZ4SZ.jpg
(原文件名:无标题4.jpg)

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_607607SVILTY.jpg
(原文件名:无标题5.jpg)

点击此处下载 ourdev_607608VZF8PC.pdf(文件大小:62K) (原文件名:原理图.pdf)


/************************************************************
串行驱动 AD9850
FRUD -- B0
REST -- B1
WCLK -- B2
d7------B3
数据接口 D7 -- A7(注意:串行方式时D0,D1接高电平,D2接地)
ADout 定义输出频率

****************************************************************/

#include <iom16v.h>
#include <macros.h>
#include <delay.h>
#include <avr_bit.h>

#define uint unsigned int
#define uchar unsigned char

#define SET_1(a,b) a|=(1<<b)
#define CLE_0(a,b) a&=~(1<<b)

#define FRUD_1 PORTB_0=1
#define FRUD_0 PORTB_0=0
#define REST_1 PORTB_1=1
#define REST_0 PORTB_1=0
#define WCLK_1 PORTB_2=1
#define WCLK_0 PORTB_2=0

#define ADout 10000000 // 定义 输出 频率 ADout
#define IO9850 PORTA
#define IO_1 PORTB_3=1
#define IO_0 PORTB_3=0


void initIO(void)
{
DDRA = 0xff;
DDRB = 0xff;
}


void init9850(void)
{
WCLK_0;
FRUD_0;
REST_1;
REST_0;

}

void UPDATE(void)
{
FRUD_1;
FRUD_0;
}

void sentcom(void)
{
sendword(0);
sendword(0);
sendword(1);
sendword(0);
sendword(0);
sendword(0);
sendword(0);
}

void sendword(uchar dat)
{
if(dat)
IO_1;
else
IO_0;

WCLK_1;
WCLK_0;
}



void startAD(void)
{ long unsigned int dat;
unsigned char i = 0;
UPDATE();
dat =(long int) ADout * 42.949672;
dat=dat>>1;
for(;i<32;i++)
{
sendword((uchar) (dat&1));
dat=dat>>1;
}

sentcom();
UPDATE();

}


int main(void)
{ initIO();
init9850();
startAD();
while(1)
{

NOP();
}
}

piaotianxia 发表于 2010-12-28 11:59:47

请问楼主,你的模块输出波形的幅值是否稳定啊,当输出频率升高时,幅值是否降低了啊???

ibmx311 发表于 2010-12-28 12:00:25

1.对于这种频谱仪,跟踪源不用的时候一定要关掉,我都帮人修过2支了(如果你改用5011)
2.至少要设法把谐波压到50
3.无论如何先接一个至少10db的衰减器在仪器上,9850需要搁置再进频谱仪,不然频谱仪可能随时烧掉里面的主混频器
4.最好不要用示波器的表笔插到频谱仪上
5.DDS是毒药,如果你钻,水很深,但掌握后也没什么用,所以希望可以适可而止
6.9850可以稳定超频到150MHz,这样频率可以出的高点,好点

ibmx311 发表于 2010-12-28 12:01:40

这个程序极简易,没有频率修正,算出来的频率偏差较大

zhaofeng2008 发表于 2010-12-28 12:24:59

幅度随频率升高会降低
我的破频谱没有跟踪源,
现在谐波抑制40db。
一般频谱上的衰减都调到-30
这个频谱到我手上时就没有附件。
玩玩而已呵呵
的确很简易,测试用而已

zhaofeng2008 发表于 2010-12-28 12:26:07

回复【3楼】ibmx311
-----------------------------------------------------------------------

频率偏差是挺大的。正在琢磨。。。。

naturc 发表于 2010-12-28 12:30:45

mark

yangjinke1118 发表于 2011-3-3 15:57:25

mark

AAVVRR 发表于 2011-3-3 18:00:47

用查表法好些吧

loveit 发表于 2011-5-4 14:44:31

顶楼主,正准备玩玩DDS。。。

cunlingwang 发表于 2011-5-11 00:33:41

哈哈 我也开始玩了

zhangxin0804 发表于 2011-5-21 17:26:04

想问下楼主,你这个AD9850的模块。。最高能到多少M呢?输出波形怎么样呢?

8s209 发表于 2011-6-22 15:00:35

mark

10192201 发表于 2011-7-14 22:04:32

我也准备玩玩dds,呵呵

zjczm 发表于 2011-7-14 22:58:32

不错.支持.我想要做很久了,一直拖着.最近打算弄起来

6008202030 发表于 2011-8-2 00:24:15

mark

ray 发表于 2012-7-7 14:14:44

问下 出来的正弦波是正负对称的?我的板子调了好久了不见效果啊
页: [1]
查看完整版本: 39元的ad9850模块驱动起来了。