基于单片机制作高频DDS信号发生器_第1页
基于单片机制作高频DDS信号发生器_第2页
基于单片机制作高频DDS信号发生器_第3页
基于单片机制作高频DDS信号发生器_第4页
基于单片机制作高频DDS信号发生器_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录1DDS技术的根本原理12.1DDS结构12.2DDS数学原理52总体设计方案73.1系统设计原理73.2总体设计框图83系统的硬件设计83.2DDS芯片的选择及与单片机之间的通信83.3单片机〔AT89S52〕控制电路113.4液晶显示模块143.5低通滤波器的设计164信号发生器的软件设计174.1程序流程图174.2键盘扫描流程图194.3LCD的显示215局部系统的仿真和调试216系统的程序代码257设计心的及体会328参考文献331DDS技术的根本原理2.1DDS结构1971年,美国学者J.Tierney等人撰写的“ADigitalFrequencySynthesizer〞-文首次提出了以全数字技术,从相位概念出发直接合成所需波形的一种新组成原理。限于当时的技术和器件产,它的性能指标尚不能与已有的技术相比,故没受到重视。近几年间,随着微电子技术的迅速开展,直接数字频率合成器〔DirectDigitalFrequencySynthesis简称DDS或DDFS〕得到了飞速的开展,它以有别于其它频率合成方法的优越性能和特点成为现代频率合成技术中的佼佼者。具体表达在相对带宽、频率转换时间短、频率分辨率高、输出相位连续、可产生宽带正交信号及其他多种调制信号、可编程和全数字化、控制灵活方便等方面,并具有极高的性价比。DDS是直接数字式频率合成器〔DirectDigitalSynthesizer〕的英文缩写。与传统的频率合成器相比,DDS具有低本钱、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。直接数字频率合成器〔DirectDigitalSynthesizer〕是从相位概念出发直接合成所需波形的一种频率合成技术。一个直接数字频率合成器由相位累加器、加法器、波形存储ROM、D/A转换器和低通滤波器〔LPF〕构成。DDS的原理框图如下所示:StSnN位波形控制字WStSnN位波形控制字WN位频率控制字K相位控制字P其中K为频率控制字、P为相位控制字、W为波形控制字、fc为参考时钟频率,N为相位累加器的字长,D为ROM数据位及D/A转换器的字长。相位累加器在时钟fc的控制下以步长K作累加,输出的N位二进制码与相位控制字P、波形控制字W相加后作为波形ROM的地址,对波形ROM进行寻址,波形ROM输出D位的幅度码S(n)经D/A转换器变成阶梯波S(t),再经过低通滤波器平滑后就可以得到合成的信号波形。合成的信号波形形状取决于波形ROM中存放的幅度码,因此用DDS可以产生任意波形。这里我们用DDS实现正弦波的合成作为说明介绍。频率预置与调节电路K被称为频率控制字,也叫相位增量。DDS方程为:f0=fCLK/2n,f0为输出频率,fc为时钟频率。当K=1时,DDS输出最低频率〔也即频率分辨率〕,为fc/2n,而DDS的最大输出频率由Nyquist采样定理决定,即fc/2,也就是说K的最大值为2N-1。因此,只要N足够大,DDS可以得到很细的频率间隔。要改变DDS的输出频率,只要改变控制字K即可。累加器fcfc频率控制字相位量化序列图2.2累加器框图相位累加器由N位加法器与N位存放器级联构成。每来一个时钟脉冲fc,加法器将频率控制字K与存放器输出的累加相位数据相加,再把相加后的结果送至存放器的数据输入端。存放器将加法器在上一个时钟作用下继续与频率控制字进行相加。这样,相位累加器在时钟的作用下,进行相位累加。当相位累加器累加满时就会产生一次溢出,完成一个周期性的动作。控制相位的加法器通过改变相位控制字P可以控制输出信号的相位参数。令相位加法器的字长为N,当相位控制字由0跃变到P〔P≠0〕时,波形存储器的输入为相位累加器的输出与相位控制字P之和,因而其输出的幅度编码相位会增加P/2N,从而使最后输出的信号产生相移。控制波形的加法器通过改变波形控制字W可以控制输出信号的波形。由于波形存储器中的不同波形是分块存储的,所以当波形控制字改变时,波形存储器的输入为改变相位后的地址与波形控制字W〔波形地址〕之和,从而使最后输出的信号产和相移。波形存储器用相位累加器输出的数据作为波形存储器的取样地址,进行波形的相位一幅值转换,即可在给定的时间上确定输出的波形的抽样幅值。N位的寻址ROM相当于把0°~360°的正弦信号离散成具有2N个采样值的序列,假设波形ROM有D位数据位,那么2N个样值的幅值D位二进制数值固化在ROM中,按照地址的不同可以输出相应相位的正弦信号的幅值。相位—幅度变换原理图如下列图所示:地址地址相位量化序列波形幅度量化序列〔数据〕图2.3相位—幅度变换原理图D/A转换器D/A转换器的作用是把合成的正弦波数字量转换成模拟量。正弦幅度量化序列S(n)经D/A转换后变成了包络为正弦波的阶梯波S(t)。需要注意的是,频率合成器对D/A转换器的分辨率有一定的要求,D/A转换器的分辨率越高,合成的正弦波S(t)台阶数就越多,输出的波形的精度也就越高。低通滤波器对D/A输出的阶梯波S(t)进行频谱分析,可知S(t)中除主频fo外,还存在分布在fc,2fc等等的两边±fo处的非谐波分量,幅值包络为辛格函数。因此,为了取出主频f0,必须在D/A转换器的输出端接入截止频率为fc/2的低通滤波器。2.2DDS数学原理设有一频率为的余弦信号:现在以采样频率对进行采样,得到的离散序列为:其中为采样周期。对应的相位序列为从上式可以看出相位序列呈线性,即相邻的样值之间的相位增量是一个常数,而且这个常数仅与信号的频率有关,相位增量为:因为信号频率与采样频率之间有以下关系:其中与为两个正整数,所以相位的增量也可以完成:由上式可知,假设将的相位均匀的分为等份,那么频率为的余弦信号以频率采样后,它的量化序列的样品之间的量化相位增量为一个不变值。 根据上述原理可以构造一个不变量为量化相位增量的量化序列:然后完成从到另一个序列的映射,由构造序列:公式〔2—1〕公式〔2-1〕是连续信号经采样频率为采样后的离散时间序列,根据采样定理,当时,经过低通滤波器平滑后,可唯一恢复出。可见,通过上述变换不变量将唯一确实定一个单频率模拟余弦信号:该信号的频率为:公式〔2—2〕公式〔2—2〕就是直接数字频率合成〔DDS〕的方程式,在实际的DDS中,一般取,于是DDS方程就可以写成:公式〔2—3〕根据公式〔2—3〕可知,要得到不同的频率只要通过改变的具体数值就可以了,而且还可以得到DDS的最小频率分辨率〔最小频率间隔〕为当时的输出频率:可见当参考频率始终一定是,其分辨率由相位累加器的位数决定,假设取,,那么,即分辨率可以到达,这也是最低的合成频率,输出频率的高精度DDS的一大优点。由奈奎斯特准那么可知,允许输出的最高频率,即,但实际上在应用中受到低通滤波器的限制,通常,以便于滤波镜像频率,一般:由此可见DDS的工作频率带较宽,可以合成从直流到的频率信号,同时它的输出相位连续,频率稳定度高。2总体设计方案3.1系统设计原理本文提出的采用DDS作为信号发生核心器件的全数控函数信号发生器设计方案,根据输出信号波形类型可设置、输出信号幅度和频率可数控、输出频率宽等要求,选用了美国A/D公司的AD9850芯片,并通过单片机程序控制和处理AD9850的32位频率控制字,再经放大后加至以数字电位器为核心的数字衰减网络,从而实现了信号幅度、频率、类型以及输出等选项的全数字控制。本系统主要由单片机、DDS直接频率信号合成器、数字衰减电路、真有效值转换模块、A/D转换模块、数字积分选择电路等局部组成。单片机AT89S52是整个系统关键局部,通过对键盘进行扫描读入相位信息,经转换后输出到芯片AD9850,输出波形。键盘输入的数字信息经AT89S52控制的LCD1602显示3.2总体设计框图系统构成如下列图3.1所示。LCD1602LCD1602键盘单片机AD9850低通滤波器信号输出图3.1系统框图3系统的硬件设计因为本课题的功能电路与相关部件较多,为了便于研制期间的调试与最终成品的产业化,所以系统的最后实现采用了模块化的思想,即先把各个相关的电路与部件做成相互独立的别离模块,而系统的功能那么是通过各模块间的级联来完成的。下面将分别表达各功能模块及其中所用到的器件、电路以及在系统设计、调试过程中应该注意的问题。3.2DDS芯片的选择及与单片机之间的通信信号的产生与控制局部电路由DDS片AD9851与单片机AT89S52组成,用户通过键盘输入的信号要求被AT89S52接收,并经其处理后将计算出的控制字传送给AD9851,由AD9851产生频率幅度可控的信号。下面以AD9851芯片为中心加以讨论。DDS芯片选择及引脚图本系统采用了美国模拟器件公司生产的高集成度产品AD9851芯片。AD9851是在AD9850的根底上,做了一些改良以后生成的具有新功能的DDS芯片。AD9851相对于AD9850的内部结构,只是多了一个6倍参考时钟倍乘器,当系统时钟为180MHz时,在参考时钟输入端,只需输入30MHz的参考时钟即可。AD9851是由数据输入存放器、频率/相位存放器、具有6倍参考时钟倍乘器的DDS芯片、10位的模/数转换器、内部高速比拟器这几个局部组成。其中具有6倍参考时钟倍乘器的DDS芯片是由32位相位累加器、正弦函数功能查找表、D/A变换器以及低通滤波器集成到一起。这个高速DDS芯片时钟频率可达180MHz,输出频率可达70MHz,分辨率为0.04Hz。AD9851采用28引脚的SSOP外表封装,其引脚排列如图3-5所示,各引脚定义如下:D0~D7:8位数据输入口,可给内部存放器装入40位控制数据。PGND:6倍参考时钟倍乘器地。PVCC:6倍参考时钟倍乘器电源。W-CLK:字装入信号,上升沿有效。FQ-UD:频率更新控制信号,时钟上升沿确认输入数据有效。FREFCLOCK:外部参考时钟输入。CMOS/TTL脉冲序列可直接或间接地加到6倍参考时钟倍乘器上。在直接方式中,输入频率即是系统时钟;在6倍参考时钟倍乘器方式,系统时钟为倍乘器输出。AGND:模拟地。AVDD:模拟电源(+5V)。DGND:数字地。DVDD:数字电源(+5V)。RSET、DAC:外部复位连接端。VOUTN:内部比拟器负向输出端。VOUTP:内部比拟器正向输出端。VINN:内部比拟器的负向输入端。图3-5AD9851管脚示意图VINP:内部比拟器的正向输入端。DACBP:DAC旁路连接端。IOUTB:“互补〞DAC输出。IOUT:内部DAC输出端。RESET:复位端。低电平去除DDS累加器和相位延迟器为0Hz和0相位,同时置数据输入为串行模式以及禁止6倍参考时钟倍乘器工作。3.2.2AD9851的串、并行通信AD9851的串行操作有两种数据传送方式,即从最高位开始传送和从最低位开始传送,这是由控制存放器1的第8位来决定的。默认状态为低电平,此时先传送最高位,假设为高电平那么先传送最低位。串行操作的时序如图3-6所示。图3-6控制字串行输入时序图在串行输入方式,W-CLK上升沿把25引脚的一位数据串行移入,当移动40位后,用一个FQ_UD脉冲即可更新输出频率和相位。图3-7是相应的控制字串行输入的控制时序图。AD9851的复位(RESET)信号为高电平有效,且脉冲宽度不小于5个参考时钟周期。AD9851的参考时钟频率一般远高于单片机的时钟频率,因此AD9851的复位(RESET)端可与单片机的复位端直接相连。图3-7控制字并行输入的时序图在并行装入方式中,通过8位总线D0-D7将可数据输入到存放器,在重复5次之后再在FQ-UD上升沿把40位数据从输入存放器装入到频率/相位数据存放器(更新DDS输出频率和相位),同时把地址指针复位到第一个输入存放器。接着在W-CLK的上升沿装入8位数据,并把指针指向下一个输入存放器,连续5个W-CLK上升沿后,W-CLK的边沿就不再起作用,直到复位信号或FQ-UD上升沿把地址指针复位到第一个存放器。3.3单片机〔AT89S52〕控制电路AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。AT89S52具有以下标准功能:8k字节Flash、256字节RAM、32位I/O口线、看门狗定时器、2个数据指针、三个16位定时器/计数器、一个6向量2级中断结构、全双工串行口、片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。一般单片机需外接一个时钟电路和一个复位电路,其设计为下:时钟电路图3-8时钟电路XTAL1是片内振荡器的反相放大器输入端,XTAL2那么是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右。AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反应元件的片外石英晶体或者陶瓷谐振器一起构成自激振荡器。片外石英晶体或者陶瓷谐振器及电容C1、C2接在放大器的反应回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的上下、振荡器工作的稳定性、起振的难易程序及温度稳定性,这里采用电容30pF,晶振采用11.0592MHz。复位电路AT89C52的外部复位电路有上电自动复位和手动按键复位。上电复位电容充电来实现。手动按键复位又分为按键电平复位和按键脉冲复位。按键电平复位电路是在普通RC复位电路的根底上接一个有下拉电阻100K、上拉电容10μf接VCC,电源由开关接至复位脚〔和上拉电容并联〕,上拉电容支路负责在“上电〞瞬间实施复位;开关通过100K下拉电阻分压器,保证对单片机实施按键电平复位。电路图如下列图所示:图3-9复位电路单片机控制电路图图3-10单片机控制电路原理图P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入〔P1.0/T2〕和时器/计数器2的触发输入〔P1.1/T2EX〕,在flash编程和校验时,P1口接收低8位地址字节。P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器。能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。在访问外部程序存储器或用16位地址读取外部数据存储器〔例如执行MOVX@DPTR〕时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址〔如MOVX@RI〕访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。单片机与AD9851的接口单片机与AD9851的接口既可采用并行方式,也可采用串行方式,但为了充分发挥芯片的高速性能,应在单片机资源允许的情况下尽可能选择并行方式,本文重点介绍其并行方式的接口。P3.1I/O方式并行接口I/O方式的并行接口电路比拟简单,但占用单片机资源相对较多,图3-11是I/O方式并行接口的电路图,AD9851的数据线D0~D7与P1口相连,FQ_UD和W_CLK分别与P2.3(10引脚)和P2.4(11引脚)相连,所有的时序关系均可通过软件控制实现。图3.11AT89S52与AD9851的电路连接图3.4液晶显示模块LCD1602的主要性能1602型LCD可以显示2行16个字符,有8位数据总线D0~D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符比照度调节和背光功能[6]。1602型LCD的接口信号说明,如表3.1所示:表3.1LCD1602接口说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2DataI/O2VDD电源正极10D3DataI/O3VL液晶显示偏压信号11D4DataI/O4RS数据/命令选择端〔H/L〕12D5DataI/O5R/W读写选择端〔H/L〕13D6DataI/O6E使能信号14D7DataI/O7D0DataI/O15BLA背光源正极8D1DataI/O16BLK背光源负极读状态:输入:RS=L,RW=H,E=H 输出:D0~D7=状态字读数据:输入:RS=H,RW=H,E=H 输出:无写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:D0~D7=数据写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲输出:无LCD与单片机的连接图3-12LCD与单片机的接口电路在实际的接线中,1602的DB0—DB7与89S52的P0口相接,RS与P3.5相接,R/W与P3.6相接,E与P3.7相接。VL与地之间接一个10K的滑动变阻器来到1602初始显示的调节。3.5低通滤波器的设计为了使输出的频率不受外界和一些杂波的干扰,需用一个低通滤波器(LPF)滤除高次谐波。常用的滤波器的频率响应有三种:巴特沃斯型〔Butterworth〕,切比雪夫型(Chebyshev)和椭圆型(Cauer)。其中巴特沃斯滤波器通带最平坦,它的通带内没有纹波,在靠近零频处,有最平坦通带,趋向阻带时衰减单调增大,缺点是从通带到阻带的过渡带最宽,对于带外干扰信号的衰减作用最弱,过渡带不够陡峭,因此它适用于对通带要求较高,而去除的频率离通带较远的情况;切比雪夫滤波器在通带内衰减在零值和一个上限值之间做等起伏变化,阻带内衰减单调增大,带内有起伏,但过渡带比拟陡峭;椭圆滤波器不仅通带内有起伏,阻带内也有起伏,而且过渡带陡峭。比拟起来,椭圆滤波器性能更好,本设计中采的是椭圆滤波器。具体电路图如图3-13所示。图3-13滤波电路4信号发生器的软件设计在应用系统中,系统软件的设计是建立在具体硬件电路根底之上,根据系统功能要求可靠地实现系统的各种功能。好的软件设计能够充分发挥微控制器的运算和逻辑控制功能,从而提高仪器的精度和使用的方便性。4.1程序流程图通过程序预置频率,并实现对频率步进的控制,处理用户由键盘键入的频率值,判断是否超出范围,生成频率控制字,经并行方式送入DDS,合成用户所需的频率,并通过程序实现频率的显示。程序流程图如下:结束AT89C52初始化H结束AT89C52初始化HAD9851初始化键盘扫描正弦波LCD1602初始化开始NY4.2键盘扫描流程图键盘扫描键盘扫描按键s1是否按下选中千位按键s1是否按下选中百位按键s1是否按下选中十位按键s1是否按下选中个位否是是否否是否是图4-2按键1扫描流程图如下图,键盘初始化后扫描键盘,依次扫描3个按键,每个按键都编有延时去抖的程序,如果s1键按每按下一次下,那么通过LCD中看出选中千位、百位、十位和各位中的哪一位,并通过s2和s3来改变相应的数值。键盘扫描键盘扫描按键s2是否按下频率加一否是键盘扫描按键s3是否按下频率减一否是图4-3按键2、3的扫描流程图键盘扫描键盘扫描按键s4是否按下相位加32否是图4-3按键4的扫描流程图如果s2键按下,频率加一。如果s3键按下,那么频率减一。如果s4键按下,那么相位增加32。4.3LCD的显示图4-41602的显示流程图本系统采用的1602的液晶显示,可显示两行数据,每行16个数据。首先根据其指令编码对其进行初始化。但要注意,1602是一个慢显示,所以对其读写数据需要一定的延时,以待其完全接收。在显示时,首先根据其地址分配,设定第一行的起始位置,再显示第一行的内容。第二行显示同理。5局部系统的仿真和调试在仿真过程中,由于在proteus元件库中没有AD9851芯片,也没有其他的DDS芯片可以代替,所以在仿真过程中,我只做了LCD的显示模块的仿真,其仿真结果如下:开始仿真,LCD上第一行会显示P:第二行会显示f:图5-1仿真结果1当按键s1第一次按下时,再通过按键s2和s3调节千位数值,并会LED上显示一个频率的千位数值。图5-2仿真结果2当按键s1第二次按下时,再通过按键s2和s3调节千位数值,并会LED上显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论