AD9834 9850波形产生程序
基于AD9834构成的DDS波形发生器实现与仿真

基于AD9834构成的DDS波形发生器实现与仿真
郑敏
【期刊名称】《鄂州大学学报》
【年(卷),期】2010(17)5
【摘要】DDS(直接数字合成)技术被视为第三代频率合成技术.该文对基于
AD9834DDS信号发生器进行分析、设计、编程.仿真实现用DDS方法产生任意波形(AWG).
【总页数】4页(P14-17)
【作者】郑敏
【作者单位】鄂州职业大学,电子电气工程系,湖北,鄂州,436000
【正文语种】中文
【中图分类】TN742.1
【相关文献】
1.一种基于DDS的新型任意波形发生器的设计与实现 [J], 邓霞
2.基于AD9834的实时可编程波形发生器的设计 [J], 高雄伟;谢秀镯
3.基于DDS技术的波形发生器设计与仿真 [J],
4.基于DDS的多路任意波形发生器的设计与实现 [J], 韦晓璐;任青莲
5.基于DDS的数字波形发生器设计与实现 [J], 张新荣
因版权原因,仅展示原文概要,查看原文内容请购买。
AD9834_中文完整资料

Σ
SIN ROM
MUX
10-BIT DAC
IOUT IOUTB
MSB 12-BIT PHASE0 REG 12-BIT PHASE1 REG MUX MUX DIVIDED BY 2
16-BIT CONTROL REGISTER SERIAL INTERFACE AND CONTROL LOGIC
MUX
AD9834提供相位调制和频率调制功能。频率寄存器为 28 位;时钟速率为75 MHz,可以实现0.28 Hz的分辨率。同 样,时钟速率为1 MHz时,AD9834可以实现0.004 Hz的分 辨率。影响频率和相位调制的方法是通过串行接口加载寄 存器,然后通过软件或 FSELECT/PSELECT引脚切换寄存 器。 AD9834通过一个三线式串行接口写入数据。该串行接口 能够以最高40 MHz的时钟速率工作,并且与DSP和微控制 器标准兼容。 该器件采用2.3 V至5.5 V电源供电。模拟和数字部分彼此独 立,可以采用不同的电源供电;例如,AVDD可以是5 V, 而DVDD可以是3 V。 AD9834具有控制休眠的引脚(SLEEP),支持从外部控制断 电模式。器件中不用的部分可以断电,以将功耗降至最 低。例如,在产生时钟输出时,可以关断DAC。 该器件采用20引脚TSSOP封装。
SIGN BIT OUTC来自MPARATORVIN
AD9834
FSYNC SCLK SDATA PSELECT SLEEP RESET
02705-001
图1
Rev. C
Information furnished by Analog Devices is believed to be accurate and reliable. However, no responsibility is assumed by Analog Devices for its use, nor for any infringements of patents or other rights of third parties that may result from its use. Speci cations subject to change without notice. No license is granted by implication or otherwise under any patent or patent rights of Analog Devices. Trademarks and registered trademarks are the property of their respective owners.
基于AD9850的信号发生器的设计

摘要本设计使用51单片机对DDS芯片进行控制,利用DDS造波的方法产生需要的正弦信号,用户可以根据需要对芯片设定一个频率值或相位值,通过单片机传输芯片控制字对芯片输出的频率和相位进行调节,达到用户所需要的信号,本设计采用模块化设计的方法,不同的模块为实现不同的功能而设计,总体由单片机控制协调工作。
利用51单片机控制DDS芯片造波,具有如下优越性:1,造价低廉,51单片机应用广泛,价格低廉,比较容易购买,DDS芯片价格较单片机稍高,但与价格成百上千的成品信号发生器相比,本设计经济优势显著,2,电路简单,本设计利用单片机进行数字化控制,外围元件较少。
3,频率控制准确高效,数字化控制的最大优点即控制准确,分辨率高,响应快。
关键词:DDS 51单片机数字控制目录摘要 (i)目录 (ii)绪论 .................................................................... - 1 -第一章工作原理.......................................................... - 2 -1.1 DDS工作原理..................................................... - 2 -第二章电路设计.......................................................... - 3 -2.1设计思路......................................................... - 3 -2.2 元件选型......................................................... - 3 -2.3 系统总体框图..................................................... - 3 -第三章元器件介绍........................................................ - 4 -3.1 STC89C52RC单片机................................................ - 4 -3.2 AD9850芯片..................................................... - 5 -3.3 液晶(LCD1602)介绍.............................................. - 7 -第四章调试.............................................................. - 8 -4.1 硬件调试......................................................... - 8 -4.2 软件调试........................................................ - 12 -绪论信号发生器使一种能产生所需要信号的一种仪器。
基于AD9834信号发生器的设计

DDS是直接数字合成(Direct Digital Synthesis)的英文缩写。
2.2.1
利用专用直接数字合成DDS芯片的函数发生器:能产生任意波形并达到很高的频率。但成本较高。
产生所需参数的电测试信号仪器。按其信号波形分为四大类:1.正弦信号发生器。主要用于测量电路和系统的频率特性、非线性失真、增益及灵敏度等。按其不同性能和用途还可细分为低频(20赫至10兆赫)信号发生器、高频(100千赫至300兆赫)信号发生器、微波信号发生器、扫频和程控信号发生器、频率合成式信号发生器等。2.函数(波形)信号发生器。能产生某些特定的周期性时间函数波形(正弦波、方波、三角波、锯齿波和脉冲波等)信号,频率范围可从几个微赫到几十兆赫。除供通信、仪表和自动控制系统测试用外,还广泛用于其他非电测量领域。3.脉冲信号发生器。能产生宽度、幅度和重复频率可调的矩形脉冲的发生器,可用以测试线性系统的瞬态响应,或用作模拟信号来测试雷达、多路通信和其他脉冲数字系统的性能。4.随机信号发生器。通常又分为噪声信号发生器和伪随机信号发生器两类。噪声信号发生器主要用途为:在待测系统中引入一个随机信号,以模拟实际工作条件中的噪声而测定系统性能;外加一个已知噪声信号与系统内部噪声比较以测定噪声系数;用随机信号代替正弦或脉冲信号,以测定系统动态特性等。当用噪声信号进行相关函数测量时,若平均测量时间不够长,会出现统计性误差,可用伪随机信号来解决。
在70年代后,微处理器的出现,可以利用处理器、D/A转换器和A/D转换器,硬件和软件使信号发生器的功能扩大,产生更加复杂的波形,这个时期的信号发生器多以软件为主,实质上是采用微处理器对数/模转换器的程序控制,就可以得到各种简单的波形。
在80年代以后,数字技术日益成熟,信号发生器绝大部分不再使用机械驱动而采用数字电路,从一个频率基准由数字合成电路产生可变频率信号。自从80年代以来各国都在研制DDS产品,并应用于信号发生器的设计。后来出现的专用DDS芯片极大的推动了DDS技术的发展,但专用DDS芯片价格昂贵,而且无法实现我们所需要哦的各种波形输出。
基于AD9834的波形发生器的设计讲解

目录前言 (2)第1章绪论 (3)第1.1节研究的背景和意义 (3)第1.2节波形发生器的发展状况 (3)第2章系统方案设计 (5)第2.1节单片机主控模块 (5)第2.2节液晶模块 (9)第2.3节 DDS模块 (11)第3章硬件电路的设计 (14)第3.1节单片机主控电路及液晶显示电路 (14)第3.2节 AD9834电路设计 (14)第3.3节按键电路 (15)第3.4节增益可控电路 (15)第4章系统软件设计 (17)第4.1节 Keil软件的介绍 (17)第4.2节系统软件的整体设计 (17)第4.3节程序设计原理 (18)第4.4节信号产生的程序 (19)第5章系统调试 (20)第5.1节硬件调试 (20)第5.2节软件调试 (20)第5.3节调试结果 (20)结论 (24)参考文献 (25)致谢 (26)附录 (27)附录1:实物照片说明 (27)附录2:系统原理图 (27)附录3:部分源程序 (28)【摘要】:本设计核心问题是设计信号发生器,使之输出不同频率的正弦波、三角波和方波,并通过按键切换输出的波形,也可以改变频率和输出的幅度。
本方案选择了AD9834作为核心芯片,并与单片机STC89C52结合,设计一款简易的高精度频率信号发生器,具有体积小功耗低等优点。
AD9834是ADI公司生产的一款采用DDS技术、低功耗、可编程波形发生器。
本文介绍了用AD9834设计信号发生器的基本框架,详细阐述了该芯片的基本性能和使用方法,分析了它与单片机结合产生波形的具体措施。
并且对DDS 这一技术做了比较详细的分析,也展望它的发展前景。
此外,本文还介绍了单片机STC89C52,它是一种低功耗、高性能CMOS8位微控制器,一种带8K字节闪烁可编程可擦除只读存储器,并且也详细地阐述了单片机的内部结构、各个引脚的说明以及此芯片的特点。
【关键词】:STC89C52; AD9834;DDS[Abstract] : This design is a core problem design signal generator, the output of different frequency sine wave, triangular wave and square wave, and through the key switch output waveform, also can change the frequency and amplitude of the output. This scheme selection AD9834 as the core chip, and single chip microcomputer and STC89C52 combination, design one simple high precision frequency signal generator, has small power consumption advantages. AD9834 ADI company is the production of one using DDS technology, low power consumption, programmable waveform generator. This paper introduces the design of signal generator with AD9834 the basic framework, elaborated on the chip of the basic performance and usage, it analyses the single chip microcomputer and combined with the concrete measures of produce waveform. And the DDS this technology made comparatively detailed analysis, and prospects the development prospect.In addition, this paper also introduces the STC89C52 MCU, it is a kind of low power consumption, high performance CMOS8 a micro controller, a zone 8 k bytes scintillation programmable read only memory can be erased. And also in detail the internal structure of the single chip microcomputer, each pin and the description of the characteristics of the chip.[Key words]: STC89C52;AD9834;DDS前言单片机是一种集成在电路芯片,它是采用超大规模集成电路技术,把具有数据处理能力的中央处理器CPU、只读存储器ROM、随机存储器RAM、多种I/O接口和中断系统、定时器/计时器等功能(可能还包括驱动显示电路、模拟多路转换器、脉宽调制电路、A/D 转换等电路)集成到一块硅片上,从而构成一个小而完善的计算机系统。
基于AD9850的信号发生器设计说明

基于AD9850的信号发生器设计摘要介绍ADI 公司出品的AD9850 芯片,给出芯片的引脚图和功能。
并以单片机AT89S52 为控制核心设计了一个串行控制方式的正弦信号发生器的可行性方案,给出了单片机AT89S52 与AD9850 连接电路图和调试通过的源程序以供参考。
直接数字合成(DDS)是一种重要的频率合成技术,具有分辨率高、频率变换快等优点,在雷达及通讯等领域有着广泛的应用前景。
系统采用AD9850为频率合成器,以单片机为进程控制和任务调度的核心,设计了一个信号发生器。
实现了输出频率在10Hz~1MHz围可调,输出信号频率稳定度优于10-3的正弦波、方波和三角波信号。
正弦波信号的电压峰峰值Vopp能在0~5V围步进调节,步进间隔达0.1v,所有输出信号无明显失真,且带负载能力强。
该电路设计方案正确可行,频率容易控制,操作简单灵活,且具有广阔的应用前景。
关键词:信号发生器;直接数字频率合成;AD9850芯片;AT89S52单片机AbstractOn the basis of direct digital synthesis(DDS)principle, a signal generator was designed , using AT89S52 single chip machine as control device and adopting AD9850 type DDS device .Hardware design parameters were given .The system can output sine wave ,square wave with wide frequency stability and good waveform .The signal generator has stronger market competitiveness , with wide development prospect ,in frequency modulation technology and radio communication technology fields.Key words: signal generator ;direct digital synthsis;AD9850;AT89S52目录第一章绪论 (1)1.1背景 (1)1.2问题的提出 (2)1.3论证方案 (2)1.4总体设计框图 (3)第二章 DDS技术产生信号的基本原理 (5)2.1DDS简介 (5)2.2频率预置与调节电路 (5)2.3累加器 (6)2.4控制相位的加法器 (6)2.5控制波形的加法器 (6)2.6波形存储器 (6)2.7D/A转换器 (7)2.8低通滤波器 (7)2.9数字波形合成的理论分析 (8)第三章芯片的简介 (9)3.1AD9850结构与性能 (9)3.2AD9850的控制字与控制时序 (11)3.3 AT89S52结构与性能 (12)3.4 24C02结构与性能 (15)3.5MAX232的结构与性能 (16)3.6RT1602结构与性能 (17)第四章主要硬件的总体设计 (19)4.1AD9850与单片机的接口电路 (19)4.2 LCD与单片机的连接 (20)第五章软件部分设计 (21)第六章用到的数学原理 (24)6.1数学原理 (24)6.2算法比较和选择 (26)6.2.1采样回放法 (26)6.2.2查表法 (27)6.2.3泰勒级数展开法 (27)6.2.4数字正弦振荡器法 (27)6.2.5递推数列法 (28)第七章电路原理图的绘制 (31)7.1一般步骤 (31)7.2原理图的绘制 (31)结束语 (32)致 (33)第一章绪论1.1背景在电子技术领域中,也就是所谓的信号源号源有很多种,包括正弦波信号源、函数发生器、脉冲发生器、扫描发生器、任意波形发生器、合成的信号源等,经常要用一些信号作为测量基准信号或输入信号。
基于AD9858的雷达信号波形产生器设计

基于AD9858的雷达信号波形产生器设计1 引言近年来,随着雷达技术的高速发展对雷达信号源的要求也越来越高。
宽工作频段、高输出功率、复杂多变的信号调制形式和信号的稳定度已成为衡量雷达信号源性能的重要指标。
ad9858是业界首款具有1 gs/s直接数字合成器(dds),10位d/a转换器,快速频率跳跃和精细调谐分辨率功能的单片解决方案,ad9858优良的性能使其适用于军事以及航空雷达的信号源设计。
2 雷达信号波形产生器雷达信号波形产生器在有源雷达整体结构中占有重要地位,能在低功率电平上产生雷达信号的基本波形,因而易于得到脉冲压缩和相参系统等所要求的复杂波形。
基本波形经过功率放大器后即可送至天线作为雷达输出信号。
图1所示为采用功率放大发射机和超外差接收机雷达的简化框图。
雷达系统普遍采用的发射信号大敛分为:单频脉冲、线性调频信号及编码调制信号。
为了增大探测距离,优化距离分辨率、速度分辨率等技术指标,通常可将这些信号组合来形成波形。
采用高速dds器件ad9858形成的波形信号具有高精度、高扫描率、抗干扰性好、截获率低等特性,而且硬件电路结构简单,有助于设备的小型化和集成化。
3 dds工作原理3.1 dds基本原理直接数字频率合成(dds)采用全数字结构,具有精确的频率分辨率、快速的频率转换时间以及可灵活产生多种信号等特点。
因此,dds已逐渐取代模拟方式。
dds由相位累加器、波形存储器和数模转换器等组成。
其原理:向dds写入频率控制字,经过相位累加器转换成瞬时相位,在外部参考时钟作用下,每个时钟周期相位累加器累加相位步进一次,然后对应到波形存储器中所存储的正弦函数查询表,不同的瞬时相位码输出不同的幅值编码,再将该幅值编码输出给数模转换器(d/a),把数字量转换为模拟量输出给低通滤波器,最后输出所需的信号。
3.2 ad9858简介与其他高速dds器件相比,ad9858内部集成有10位数模转换器,其频率分辨率为32位,最高输出频率可达400 mhz。
基于AD9834的波形发生器的设计

基于AD9834的波形发生器的设计一、引言波形发生器广泛应用于电子测量、通信、医疗等领域,可以产生不同频率和形状的电信号。
AD9834是一款数字控制的波形发生器芯片,具有高精度、高稳定性和低功耗的特点。
本文将基于AD9834芯片设计一个简单的波形发生器。
二、设计方案1.系统框图设计的波形发生器主要由AD9834芯片、时钟源、控制电路和输出电路组成。
其中,AD9834芯片负责产生不同频率和形状的电信号,时钟源提供时钟信号使AD9834工作,控制电路负责设置AD9834的参数,输出电路将AD9834产生的信号输出。
2.AD9834芯片AD9834芯片是一款数字控制的波形发生器,具有12位分辨率的DAC 和32位频率控制寄存器。
通过控制寄存器中的频率和相位信息,可以生成正弦、方波和锯齿波等不同形状的信号。
3.时钟源时钟源提供高精度的时钟信号供AD9834芯片使用。
可以选用晶振作为时钟源,也可以选择其他高精度的时钟源供电。
4.控制电路控制电路负责设置AD9834芯片的频率和相位信息。
可以使用单片机或外部控制器来实现控制电路,通过SPI接口与AD9834芯片进行通信,设置相应的参数。
5.输出电路输出电路将AD9834产生的信号输出。
可以采用运放电路来放大输出信号,以满足不同应用的需求。
三、设计步骤1.选择合适的时钟源,并提供给AD9834芯片。
2.设计控制电路,通过SPI接口与AD9834芯片进行通信,设置频率和相位信息。
3.设计输出电路,将AD9834产生的信号经过必要的放大处理,并输出到使用端。
四、性能指标1.输出频率范围:AD9834芯片支持从0Hz到12.5MHz的输出频率范围。
2.分辨率:AD9834芯片的DAC具有12位分辨率,可以实现较高的频率精度。
3.输出信号形状:AD9834芯片支持输出正弦波、方波和锯齿波等不同形状的信号。
4.输出电平:根据实际需求,设计合适的输出电路来满足输出电平要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*****************************************************AD9834波形产生程序*****************************************************/#include#include#includesbit FSYNC_1=P1^0;sbit SDATA_1=P1^1;sbit SCLK_1=P1^2;sbit FSYNC_2=P1^3;sbit SDATA_2=P1^4;sbit SCLK_2=P1^5;#define FCLK 50#define uchar unsigned char#define uint unsigned int#define ulong unsigned long/**************************发送控制字**************************/void Send_Con(uint Con_word){uchar i;FSYNC_1=0;for(i=0;i<16;i++){SDATA_1=Con_word&0x8000;Con_word<<=1;SCLK_1=0;SCLK_1=1;}FSYNC_1=1;}/******************************************************************** ***************初始化函数:------------------------------------------------------------------- 功能:软件位控制,IOUT正弦波,SIGNBITOUT方波,写FREQREG0,写PHASE0 Send_Con(0x2038) 一次性写FREQREG0Send_Con(0x0038) 单独改写FREQREG0的LSBSend_Con(0x1038) 单独改写FREQREG0的MSB------------------------------------------------------------------- 功能:软件位控制,IOUT三角波写FREQREG0,写PHASE0Send_Con(0x2002) 一次性写FREQREG0Send_Con(0x0002) 单独改写FREQREG0的LSBSend_Con(0x1008) 单独改写FREQREG0的MSB**************************** ********************************************************//****************************发送频率字****************************/void Send_Freq(uint Freq_word){uchar i;FSYNC_1=0;for(i=0;i<16;i++){SDATA_1=Freq_word&0x8000;Freq_word<<=1;SCLK_1=0;SCLK_1=1;}FSYNC_1=1;}/*****************************发送相位字注:根据情况可设定入口参数,设置相位*****************************/void Send_Phase(){Send_Con(0xC000); //设置初相位为0}/*******************************************************设置频率值 Freq_value(value)=Freq_data(data)*FCLK/2^282^28=268435456=0x10000000*******************************************************/void main(ulong Freq_value){ulong value1,value2;uint LSB_D,MSB_D;SCLK_1=1;FSYNC_1=1;value1=Freq_value;value2=Freq_value;LSB_D=(value1/0x4000)+0x4000; //写FREQ0 REG 的LSBMSB_D=(value2%0x4000)+0x4000; //写FREQ0 REG 的MSBSend_Con(0x2038); //DDS初始化设置,IOUT正弦波,SIGNBITOUT方波,一次性写FREQREG0Send_Freq(LSB_D);Send_Freq(MSB_D);}#include#includefloat l,m,n,q,z;double k;//-----------------------定义管脚--------------------------------------------------------#define data_OUT P1sbit FQ_UD=P3^0; //AD9850信号更新申请sbit W_CLK=P3^1;sbit FESET="P3"^2; //写控制字时钟unsigned char CON_word[5];//Word data[7] data[6] data[5] data[4] data[3] data[2] data[1] data[0] //W0 Phase b Phase b3 Phase b2 Phase b1 Phase b0 Power Down Con trol Control//W1 Freq-b31 Freq-b30 Freq-b29 Freq-b28 Freq-b27 Freq-b26 Freq-b25 Freq-b24//W2 Freq-b23 Freq-b22 Freq-b21 Freq-b20 Freq-b19 Freq-b18 Freq-b17 F req-b16//W3 Freq-b15 Freq-b14 Freq-b13 Freq-b12 Freq-b11 Freq-b10 Freq-b9 Freq-b8//W4 Freq-b7 Freq-b6 Freq-b5 Freq-b4 Freq-b3 Freq -b2//--------------------------------------------------------------------------------------------------// 函数名称: delay// 入口参数: N// 函数功能:延时子程序,实现(16*N+24)us的延时// 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动//--------------------------------------------------------------------------------------------------// void delay(unsigned int N)// {// int i;//for(i=0;i<N;I++);// }//--------------------------------------------------------------------------------------------------//--------------------------------------------------------------------------------------------------/*******************************************************/void Freq_Adjust(long value_Freq){unsigned int i;long f;unsigned char L4,L3,L2,L1,L0;FQ_UD=0;f="value"_Freq*86;L0=0x28;L4= f&0x000000ff;L3=(f>>8)&0x000000ff;L2=(f>>16)&0x000000ff;L1=(f>>24)&0x000000ff;CON_word[0]=L0;CON_word[4]=L4;CON_word[3]=L3;CON_word[2]=L2;CON_word[1]=L1;FQ_UD=0;W_CLK=0;//delay(0);_nop_(); _nop_(); _nop_(); _nop_(); _nop_();CON_word[0]=CON_word[0]&0xFC; //置工作方式选择位为00for(i=0;i<5;i++){FESET="1";W_CLK=0;data_OUT=CON_word[i]; //送控制字// delay(0);_nop_(); _nop_(); _nop_(); _nop_();_nop_();FESET="0";W_CLK=1; //上升延//delay(0);_nop_(); _nop_(); _nop_();_nop_();_nop_();}FQ_UD=1;}//--------------------------------------------------------------------------------------------------// 函数名称:main// 用户主函数// 函数功能:主函数//--------------------------------------------------------------------------------------------------main(){BEGAIN:LCD_Initial();P2=0XF0;GotoXY(0,0);Print("Please Input :");GotoXY(0,1);Print(" ");m=0;k=0;l=0;//q=5;FQ_UD=0;Freq_Adjust(50000);while(1){while(1){m="keynum"();if(m>=0&&m<=9||m==15||m==14){z="m";Delay1ms(150);break;}}if(m>=0&&m<=9){l++;}if(z==14){goto BEGAIN;}if(z==15){GotoXY(0,1);Print(&TempBuffer[0]); GotoXY(9,1);Print("OK!!");Delay1ms(1000);break;}if(l==1){k=z;}if(l==2){k="k"*10+z;}if(l==3){k="k"*10+z;}if(l==4){k="k"*10+z;}if(l==5){k="k"*10+z;}if(l==6){k="k"*10+z;}if(l==7){k="k"*10+z;}if(l==8){k="k"*10+z;}if(l>8||k>25000000){GotoXY(0,1);Print(" ERROR!! "); Delay1ms(500);goto BEGAIN;}IntToStr(k,&TempBuffer[0],0);GotoXY(0,1);Print(&TempBuffer[0]);P2=0XF0;Delay1ms(150);}FQ_UD=0;Freq_Adjust(k);while(1){GotoXY(0,0);Print("THE PL DISPLAY");IntToStr(k,&TempBuffer[0],0);GotoXY(0,1);Print(&TempBuffer[0]);m="keynum"();if(m==10){ Delay1ms(300) ;if(k>=30000000){k=30000000;}else{ k="k"+1000;}}if(m==11){Delay1ms(300) ;if(k<=0){k=0;}else{k=k-1000;}}if(m==14){goto BEGAIN;}} }。