作为一个信号发生器,必须可以输出不同频率的三种波形,上边的图片都是在时钟频率的6Mhz 的前提下输出1Khz 的
信号。做出来一个再加一些按键调节程序,通过按键来调节输入的时钟频率和输出的信号频率是完全可行的输入时钟
频率似乎没那么重要。所以我们将AD9833芯片的时钟频率设为一个定值,只需要更改控制寄存器,频率寄存器,就可
以输出不同频率的波形了
另外值得一提的就是可调
AD9833为可编程控制的信号发生器。。。通过单片机来控制。(至于原理,大家可以看AD9833的说明书)
来实现控制的程序结构也相当简单。。。格式是一定的,不同的只是里面的数据
eg://---------------------------------------------------//
//向AD9833写16位数据 X 即为要写入的数据。。。
//---------------------------------------------------//
void write_ad9833_d16(unsigned int x)
{
int i,w;
ad9833_sclk=1;
ad9833_fsync=1;
ad9833_fsync=0;
//写16位数据
w=x;
for(i=0;i<16;i++)
{
ad9833_sdata=w&0x8000;
ad9833_sclk=0;
ad9833_sclk=1;
w=w<<1;
}
ad9833_fsync=1;
ad9833_sclk=0;
}
下面是AD9833的工作程序
eg:以下数据仅供参考,可以根据其工作机制进行修改
CLK_DIV=0x80; /*** 系统工作频率=时钟频率,P5.4输出频率=时钟频率***/
write_ad9833_d16(0x0100); //复位AD9833
write_ad9833_d16(0x2100); //选择数据一次写入
write_ad9833_d16(0x6ec3); //L14
write_ad9833_d16(0x4002); //H14 频率寄存器0为1KHz
这样写了以后芯片就可以输出1Khz的波形了,至于数据怎么来的?就需要大家去自己算咯
不过寄存器频率数据的设定可以在AD官网上找相应的计算工具,中文网页的好用
designtools.analog.com/dtDDSWeb/dtDDSMain.aspx
至于按键控制的程序,我就不写了。。。按键控制作为单片机的基础知识,结合实际程序写
出来应该没问题
这次做东西的时候,是一个新手进行主要操作的,出现的问题也不少,最重要的是,AD9833
寄存器不能一直擦写,在数据不变的情况下,也要停止对寄存器的擦写,否则会产生乱码现象哦!
亲们 还有什么问题,及时通知我,我会详细跟帖的