发 帖  
原厂入驻New
[文章]

【DIY信号发生器】 AD9833+51单片机方案

2014-7-1 18:26:42  8253
分享
0
由于喜欢便来参与...『DIY信号发生器』
     我的方案是 用AD9833+STC 51系列单片机来实现信号发生器。(偏向硬件方面




               方案说明:

                             1、器件简介(查看完全资料的话问度娘
                                        AD9833:是一款低功耗、可编程波形发生器,能够产生正弦
                                                         波、三角波和方波输出。各种类型的检测、信号激励和时
                                                         域反射(TDR)应用都需要波形发生器。输出频率和相位可
                                                         通过软件进行编程,调整简单。无需外部元件

                                        单片机:大家都应该知道...

                            2、方案阐述(欢迎网友给予指点
                                         AD9833作为一个可编程波形发生器件,作为一个编程初学者我就把
                                         这个器件大材小用来实现信号发生功能。AD9833的控制和数据信息
                                         就由51单片机提供,再加上运放电路形成一个能实现功能的电路...
                                         现在只是简单阐述,希望网友给一点意见,让我的方案逐渐丰满。




                    求支持,求建议,在这先谢谢大神了
   
呆子 2014-7-1 18:27:47
同校队友@eaom2012
回复

举报

陈晨 2014-7-7 09:35:50
偏硬件方面的话可以和版主@164908060 沟通交流的哈!高手之间的交流最能擦出火花
回复

举报

vampire_wanght 2014-7-7 13:44:35
{:1:}{:1:}{:1:}{:1:}{:1:}{:1:}
回复

举报

var 2014-7-9 00:03:48
我刚做出来,,是不是可以参赛
回复

举报

呆子 2014-7-27 10:44:46

  来发更新贴啦!!!
      断断续续忙了好几天。。。
      是一个新手做的。。。
                                                    本次实验用的是开发板,使用的是15F2K61S2的开发板
                                                       AD9833芯片的电路是自己做的
                      WIN_20140727_103931.JPG WIN_20140727_103953.JPG
                                                                   WIN_20140727_104000.JPG
                                    做的真是不是很容易。。。。。
       终于把整出来了。。。
      效果图      这是正弦信号。。。               

                    这是三角波信号。。。              

                    这是方波信号。。。                   方波


                  作为一个信号发生器,必须可以输出不同频率的三种波形,上边的图片都是在时钟频率的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
                             寄存器不能一直擦写,在数据不变的情况下,也要停止对寄存器的擦写,否则会产生乱码现象哦!



                               亲们 还有什么问题,及时通知我,我会详细跟帖的



正弦波

正弦波

三角波

三角波
回复

举报

张永涛 2014-7-27 15:21:03
值得借鉴 学习 在学习    力求 把声波感应 和 车辆机械规避相结合 做出 智能机车 就像广告上说的 你遛狗,我遛车!!!
回复

举报

佩佩猪 2014-8-14 15:02:12
谢谢分享
回复

举报

于建平 2015-11-28 00:31:20
DIANPINGWENTINIZENMOJIEJUEDE--TTL电平问题你怎么解决的
回复

举报

jlm600 2016-4-28 21:38:32


irundream 发表于 2014-7-27 10:44
来发更新贴啦!!!
      断断续续忙了好几天。。。
      是一个新手做的。。。



哥,我最近也在最AD9833。但是我在频率计算上出现问题。比如输出1kHz的信号,analog网站给出00029f1,这才7位数啊。而代码中要2个14位数。
回复

举报

张博闻 2017-7-18 21:16:26
不知道老哥还在不,我想问一下AD9833在时钟为6MHz的情况下可以输出多高频率的方波而不畸变?
回复

举报

韦胜钊 2018-4-6 21:48:57
有没有AD9833芯片的仿真库
回复

举报

厉凡 2020-2-22 16:05:52
我毕业设计就想做这个方向
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发文章
快速回复 返回顶部 返回列表