社区
单片机/工控
帖子详情
DDS频率发生器 通过单片机如何控制
liuxiufang555
2010-03-20 09:18:46
我想用AD9851DDS芯片产生10M到20M联系可调的方波 目前不知道单片机怎样和AD9851 连接 怎么控制过程?谢谢大家啊 急用 谢谢 如果能有程序的话最好 我可以先学学 再改进
...全文
1589
10
打赏
收藏
DDS频率发生器 通过单片机如何控制
我想用AD9851DDS芯片产生10M到20M联系可调的方波 目前不知道单片机怎样和AD9851 连接 怎么控制过程?谢谢大家啊 急用 谢谢 如果能有程序的话最好 我可以先学学 再改进
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shiypj
2011-08-25
打赏
举报
回复
按照网上的电路图进行画图,然后向DDS芯片送入频率控制字(FTW)就好了
guangmingdeshenju
2011-08-25
打赏
举报
回复
按芯片的接口接在单片机上就行(查芯片手册)。然后编程 传递控制字,就可以实现
mcgradyyc
2011-08-24
打赏
举报
回复
一楼说的很详细了,百度一下找些程序应该没问题!
顽皮的希望
2011-08-21
打赏
举报
回复
HAHA 这个挺好
qq297021227
2011-08-20
打赏
举报
回复
上网搜一下关于AD9851的外围电路,前些天就是按照那个图连接的,现在可以用了,产生的是正弦波,还需要买个晶振,根据你要产生的频率而定。关于程序百度文库有,你自己可以找找。我就是用那个参考程序,改一下,就能用了。如果实在不行,就去淘宝买个已经封装好的,用跳线和单片机连接就成
小跑
2011-08-15
打赏
举报
回复
我这有现成的程序,要用可以找我要
yxp058
2010-06-06
打赏
举报
回复
楼上的转载的那片论文可行性没有考证,,,程序不一定能用
我今年的毕业设计论文就是用9851产生正弦波波形,目前由于用的是椭圆滤波器最后输出正弦波波形最大到10M,不过从9851输出口可以在示波器上看到72M的波形,,,,这不知道怎么贴图 可以贴图证明
至于单片机和9851的连接 我采用的1.0 1.1 1.2 分别连接9851的数据串行端口 时钟端口 时能信号端口 程序用的是C语言 也比较简单 最终达到了不同频率的扫描 由于示波器没有自动换挡功能 因此高频时示波器无法同时看到,,,只能不断调整示波器可以看到清晰的波形
tcdzyq
2010-03-22
打赏
举报
回复
楼上给的就可以了。
kyzf
2010-03-22
打赏
举报
回复
1楼的兄弟 说得很很详细啦。
其实楼主可以百度或GOOGLE下,
单片机控制DDS的原理图或源代码,网上已有很很多,
JAZZLAM
2010-03-20
打赏
举报
回复
这个问题比较宽泛,建议找下无线电09年的全期,记的里面有介绍MCU做的DDS。或是去www.hellocq.net的QRP—DIY版块,那里都是玩无线电的高人,做DDS的人很多!我帮你贴一个上来,希望有点参考:
直接数字频率合成
AD9851的原理
AD9851可以产生一个频谱纯净、频率和相位都可编程控制且稳定性很好的模拟正弦波,这个正弦波能够直接作为基准信号源,或通过其内部高速比较器转换成标准方波输出,作为灵敏时钟发生器来使用。
AD9851的各引脚功能如下,引脚排列,如图5:
D0~D7:8位数据输入口,可给内部寄存器装入40位控制数据。
PGND:6倍参考时钟倍乘器地。
PVCC:6倍参考时钟倍乘器电源。
W-CLK:字装入信号,上升沿有效。
FQ-UD:频率更新控制信号,时钟上升沿确认输入数据有效。
FREFCLOCK:外部参考时钟输入。
CMOS/TTL脉冲序列可直接或间接地加到6倍参考时钟倍乘器上。在直接方式中,输入频率即是系统时钟;在6倍参考时钟倍乘器方式,系统时钟为倍乘器输出。
AGND:模拟地。
AVDD:模拟电源(+5V)。
DGND:数字地。 图5
DVDD:数字电源(+5V)。
RSET、DAC:外部复位连接端。
VOUTN:内部比较器负向输出端。
VOUTP:内部比较器正向输出端。
VINN:内部比较器的负向输入端。
VINP:内部比较器的正向输入端。
DACBP:DAC旁路连接端。
IOUTB:“互补”DAC输出。
IOUT:内部DAC输出端。
RESET:复位端。低电平清除DDS累加器和相位延迟器为0Hz和0 相位,同时置数据输入为串行模式以及禁止6倍参考时钟倍乘器工作。
AD9851在信号源中的应用
为了能够完成调频、调幅、调相的各种功能,要向AD9851输入频率/相位控制字,这是通过AD9851和微处理器相连接来实现。可以和AD9851的数据线直接相连接的单片机类型很多,本文中选用的是Atmel公司生产的单片机AT89S51,如图6所示,为AT89S51和AD9851的硬件串行接口框图。当然也可以选用AT89S52、MCS51、AD9851、AD9850等。
AD9851在本系统的应用电路
由于AD9851是贴片式的体积非常小,引脚排列比较密,焊接时必须小心,还要防静电,焊接不好就很容易把芯片给烧坏。还有在使用中数据线、电源等接反或接错都很容易损坏芯片。所以在AD9851外围采用了电源、输入、输出、数据线的保护电路。为了不受外界干扰,添加了不少的滤波电路,显得整个电路完美。
图6
低通滤波器(LPF)
为了使输出的频率不受高频斜波的干扰,所以选用了两级的π型LC低通滤波器,其动态范围宽0~83MHZ,增益高83MHZ时刚衰减1.4DB,波形图如图8。输入、输出阻抗为50Ω。原理图如图7。
图7
图8
锁相环频率合成
由于DDS的准确度决定于它的基准信号,所以采用准确度、稳定度比较高的锁相环频率合成为DDS芯片提供基准信号。MC145151是MOTOROLA公司生产的大规模集成电路,它是一块采用半行码输入方式置定、由14根并行输入数据编程的双模CMOS-LSI锁相环频率合成器,其内部组成框图如图9。
图9
RA0、RA1、RA2(5、6、7端):参考分频地址码输入端。14×8ROM参考(基准)译码器通过地址码的控制对14位÷R分频器进行编程,使得R分频比有8种选择。本电路中选用的是第二种分频比128,分频模式为:RA0 1,RA1 0,RA2 0。地址码与分频的关系如表1:
表1
锁相环频率合成MC145151在本电路中的应用
为了使锁相环频率合成能够锁定在30MHz,本电路(图10)的基准选用12.8MHz的高精度、高稳定度的温度补偿晶体振荡器,分频比为128,所以根据公式,它的步进为100KHz。它的N应该为300,化为二进制为100101100。把N送到MC145151就能准确的把频率锁定在30MHz 的稳定频率。
图10
压控振荡器(VCO)
本电路(图11)选用了电容三点式分立元件的压控振荡器(VCO),它与MC145151芯片构成锁相环,为了使AD9851能够经6倍频后输出最高频率,VCO必须控制在30MHz。
图11
缓冲放大器
由于压控振荡器(VCO)起振产生的频率的电压幅度远达不到DDS的基准5V所要的要求。为了使压控振荡产生的频率更加稳定,所以先加了一级电流缓冲,后再放大,正好满足DDS的基准的要求。详细电路如下图12:
图12
单片机控制的整体电路
本系统的微处理控制器选用的是AT89S51,它是美国Atmel公司生产新一代的51芯片,Atmel公司对89S51/2在工艺上进行了改进,采用0.35新工艺,成本降低,而且将功能提升,增加了竞争力。89CXX与89SXX可以兼容。更重要的是AT89SXX支持在线编程,非常方便。
存储芯片采用I2C总线标准的是容量是2K的普通外部存储芯片24C02,它也是美国ATMEL公司的低功耗CMOS串行EEPROM,它是内含256×8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。
系统中的 DM-162带有背光的液晶模块,它是字符型液晶模块,是5x7点阵图形显示字符的液晶显示器,它显示的容量为2行16个字,具有简单而功能较强的指令集,可实现字符移动/闪烁等功能。与MCU的传输可采用8位并行传输或4位并行传输两种方式。其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在仪表、仪器和低功耗应用系统中得到越来越广泛的应用。整体电路如图案13。
图13
功率放大
根据设计要求,选择能够满足功率增益10dB,输出1W,频率领域1M~50MHz条件的晶体管。在此,使用2SCl970。输入电路可以将阻抗做50Ω---12.5Ω之变换。频带为1MHz~50MHz之宽带,因此,使用变压器L1做为阻抗变换。T2直接使用了RFC(高频扼流圈),使其在1MHz~50MHz时的阻抗值比50Ω大。详细电路如图14。
图14
本系统的软件设计
本系统在显示平台上采用了2行16个字的显示界面,操作平台上是3X4的键盘,所以在软件设计上采用了菜单的形式进行显示。使得整个平台更加美观、简洁操作起来方便、易懂更能显示出电子科技现代化的味道。整体的大概程序流程图如下:
(1)DDS(AD9851)启动和数据传送
AD9851时序图:
时间规格表:
;**********************************************************
根据上面的时序图,AD9851启动、送数的子程序如下:
;初始化DDS
;DDS启动、设置
;**************************************************************
;初始化DDS
;================================================
;------------------------------------------------
SETUP_AD9851:
CLR W_CLK ;初始化信号脚
CLR FQ_UD
SETB W_CLK ;设置为串行输入
CLR W_CLK
SETB FQ_UD
CLR FQ_UD
RET
;-------------------------------------------------
;=================================================
;发送数据到DDS
;=================================================
;-------------------------------------------------
W_AD9851: CLR FQ_UD
MOV A,R0
LCALL SEND_PLLRDATA
MOV A,R1
LCALL SEND_PLLRDATA
MOV A,R2
LCALL SEND_PLLRDATA
MOV A,R3
LCALL SEND_PLLRDATA
MOV A,#001B ;000B关倍频,001B是开倍频
LCALL SEND_PLLRDATA
SETB FQ_UD
CLR FQ_UD
RET
;--------------------------------------------------
;==================================================
;==================================================
;--------------------------------------------------
SEND_PLLRDATA:
MOV C,ACC.0
MOV DATA7,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.1
MOV DATA7,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.2
MOV DATA7,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.3
MOV DATA7,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.4
MOV DATA7,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.5
MOV DATA7,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.6
MOV DATA7,C
SETB W_CLK
CLR W_CLK
MOV C,ACC.7
MOV DATA7,C
SETB W_CLK
CLR W_CLK
RET
;-------------------------------------
;=====================================
;**********************************************************
(2)LCD与单片机连接
DM-162采用标准的14脚接口,其中VSS为地电源,VDD接5V正电源,V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。D0~D7为8位双向数据线。
DM-162液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”
DM-162液晶模块内部的控制器共有11条控制指令,如表2所示,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平) 指令1:清显示,指令码01H,光标复位到地址00H位置 指令2:光标复位,光标返回到地址00H 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符
表2
指令7:字符发生器RAM地址设置 指令8:DDRAM地址设置 指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据 指令11:读数据
DM-162液晶显示模块可以和单片机AT89C51直接接口,电路如图15所示。
图15
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表3是DM-162的内部显示地址.
表3
比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)
以下程序显示“S”
START:
ACALL LCDSTART
MOV A,#01H;清屏
LCALL WRTC
MOV A,#'S' ;'S'
LCALL WRTS
AJMP $
;**********************************************************
;LCD子程序
;**********************************************************
;==============================================
LCDSTART:
MOV A,#101000B;4位总线
LCALL WRTC
MOV A,#10B
LCALL WRTC
MOV A,#01H;清屏
LCALL WRTC
MOV A,#1111B;显示开,光标开,闪烁开
LCALL WRTC
MOV A,#110B;光标自动右移,显示文字不动
LCALL WRTC
MOV A,#10000000B;设置显示地址00h
LCALL WRTC
;MOV A,#11000000B;设置显示地址00h
;LCALL WRTC
RET
;==================
READBUSY:
SETB DB7
CLR RS
SETB RW
WAIT: SETB E
MOV C,DB7
JC WAIT
RET
;==================
WRTC: ;送指令
LCALL READBUSY
CLR RS
CLR RW
SETB E
MOV C,ACC.7
MOV DB7,C
MOV C,ACC.6
MOV DB6,C
MOV C,ACC.5
MOV DB5,C
MOV C,ACC.4
MOV DB4,C
CLR E
SETB E
MOV C,ACC.3
MOV DB7,C
MOV C,ACC.2
MOV DB6,C
MOV C,ACC.1
MOV DB5,C
MOV C,ACC.0
MOV DB4,C
CLR E
RET
;===================
WRTS: ;送数据
LCALL READBUSY
SETB RS
CLR RW
SETB E
MOV C,ACC.7
MOV DB7,C
MOV C,ACC.6
MOV DB6,C
MOV C,ACC.5
MOV DB5,C
MOV C,ACC.4
MOV DB4,C
CLR E
SETB E
MOV C,ACC.3
MOV DB7,C
MOV C,ACC.2
MOV DB6,C
MOV C,ACC.1
MOV DB5,C
MOV C,ACC.0
MOV DB4,C
CLR E
RET
;====================
基于FPGA+
单片机
的波形
发生器
DDS
数字信号
发生器
.rar
本设计是信号
发生器
系统的设计和制作过程,介绍了一种基于直接
频率
合成(
DDS
)技术,利用FPGA+DAC的硬件平台,设计并实现了一种输出
频率
和幅度可调的信号
发生器
。该信号
发生器
通过
单片机
与FPGA进行通信,实现
频率
和幅度的
控制
。可生成正弦波,三角波,矩形波四种波形。设计结构简单,容易实现。波形的
频率
可以通过按键进行调节,并通过 LCD 显示当前波形种类和
频率
。并通过实际测试,验证了其性能特性符合设计需求。
基于
单片机
和
DDS
的信号
发生器
设计
基于
单片机
和
DDS
的信号
发生器
设计基于
单片机
和
DDS
的信号
发生器
设计基于
单片机
和
DDS
的信号
发生器
设计基于
单片机
和
DDS
的信号
发生器
设计基于
单片机
和
DDS
的信号
发生器
设计
基于DDS信号
发生器
设计报告
随着数字集成电路、微电子技术和EDA技术的深入研究,
DDS
技术以其有别于其它
频率
合成技术的优越性能和特点,成为现代
频率
合成技术中的佼佼者。根据题目要求,我们以
单片机
C8051F020芯片和AD9954芯片为核心,辅以必要的模拟电路,设计一台信号
发生器
,使之能产生正弦波、方波和三角波。该系统主要由
控制
模块、信号模块、显示模块、键盘输入模块构成。仅用单片AD9954就实现了直接数字
频率
合成技术(
DDS
),产生稳幅正弦波。输出的正弦波经过比较电路来实现方波的输出,而三角波则是在方波的基础上通过接入积分电路来实现的。
单片机
对内部寄存器
控制
,AD9954就可以产生一个频谱纯净、
频率
和相位都可编程
控制
且稳定性很好的模拟波形,整个系统结构紧凑,电路简单,功能强大,可扩展性强。通过键盘输入、LCD显示形成人机交互界面,实现对输出信号的
控制
。
基于
DDS
芯片ADC9850
控制
的函数信号
发生器
\A组基于
DDS
芯片ADC9850
控制
的函数信号
发生器
直接数字合成(
DDS
)是一种重要的
频率
合成技术,具有分辨率高、
频率
变换快等优点,在通信等领域有着广泛的应用前景。本系统采用直接
频率
信号合成器(
DDS
)AD9850与STC89S52
单片机
相结合的方法,以AD9850为
频率
合成器,以
单片机
为进程
控制
和任务调度的核心,设计了一个信号
发生器
。实现了输出
频率
在10HZ~20MHZ范围可调,输出信号
频率
稳定度优于10-3的正弦波、方波和三角波信号,输出信号无明显失真。本文给出了AD9850芯片和STC89S52
单片机
的硬件组成原理框图、单元电路分析及软件流程,并通过严格的实测数据分析圆满完成了本设计任务。
单片机
+
DDS
-AD9834信号
发生器
,涉及到函数信号
发生器
、AT89S52、
DDS
、AD9834
本文设计是基于
单片机
的
DDS
函数信号
发生器
。它的基本原理是通过
单片机
控制
DDS
芯片产生不同类型、不同
频率
以及不同幅值的波形信号,这种方法具有精度高、性能稳定的特点,得到了广泛的应用。涉及到函数信号
发生器
、AT89S52、
DDS
、AD9834等。该设计以AT89S52为主控芯片,通过
控制
高性能
DDS
(直接数字
频率
合成)芯片AD9834产生不同
频率
的信号,经过6阶巴特沃兹低通滤波电路,连接数字电位器的运算放大电路,输出信号。可以输出不同
频率
的正弦波、三角波和方波。正弦波
频率
范围为1Hz-10MHz,三角波和方波
频率
范围均为1Hz-5MHz,并通过
单片机
控制
按键,切换输出的波形,通过一个位选按键和一个数字按键可设置输出任意
频率
值,也可以通过调幅按键改变输出波形的幅值,幅值范围为0-3.6V,使用LCD1602液晶显示屏实时显示输出波形的类型、
频率
和幅值等信息,具有分辨率高、响应速度快、信号稳定等特点。
单片机/工控
27,383
社区成员
28,770
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章