用AVR单片机制作DDS信号源.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用AVR单片机制作DDS信号源 近年来,DDS(Direct Digital Frequency Synthesis直接数字频率合成器)技术日趋成熟,DDS芯片以其较高的性价比而被广泛采用:DDS相对带宽较宽、频率转换时间短、频率分辨率高、输出相位连续,可产生宽带正交信号及其它多种调制信号,有全数字化、控制灵活方便的优点,已广泛应用于通讯、导航、雷达、遥控遥测、电子对抗以及现代化的仪器仪表工业等领域。本文以AD9851为例介绍了一种常用DDS芯片(AD985X系列)的控制方法,并配合AVR单片机ADC和PWM接口完成一定频率范围内的AGC(自动增益控制)功能,还可模拟FM调制,采用LCM1602作为显示器件,操作直观简便,性能稳定。 DDS简介: DDS的基本原理是利用采样定理,通过查表法产生波形。DDS的结构有很多种,其基本的电路原理可用图1来表示。 图1 相位累加器由N位加法器与N位累加寄存器级联构成。每来一个时钟脉冲fs,加法器将频率控制字K与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此可以看出,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS输出的信号频率。 用相位累加器输出的数据作为波形存储器(ROM)的相位取样地址,这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号。最后用低通滤波器滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。 工作原理: 电路原理如图2所示,可分为四个部分:以IC1为核心的DDS;以IC2为核心的键盘、显示及控制电路;以IC3为核心的AGC电路;以IC4为核心的检波电路。上电后,ATmega16复位,之后对AD9851初始化并使其输出最后一次设置的频率,AD9851输出的信号经C6~C10及L1、L2组成的滤波网络送入AD603。这里采用了AD603的典型接法,1脚和2脚的电压差决定了AD603的增益,如果1脚的电压大于2脚的电压,则AD603处于放大状态,差值越大增益越高;反之1脚的电压小于2脚的电压AD603将会衰减输入信号,增益控制灵敏度为25mV/dB。AD603的输出信号的一路由D1、R12、R13、C17组成的电路检波后经LM358直流放大送入ATmega16的模/数转换通道0,即ADC0,其中R10、R11、D2组成钳位电路使D1刚好导通,稳压二极管DW用于保护ADC0,防止对其输入过高电压。ATmega16将从ADC0采样到LM358的输出电压与内部预先设置好的数值进行比较,如果比设置值大,说明AD603增益过高,则ATmega16的PD5脚输出的PWM脉宽变宽,经三极管V构成的滤波电路后输出的直流电压降低,即AD603的1脚与2脚电压差减小,AD603的增益下降,输出信号的幅度减小,然后ATmega16再对其采样,直到与设置值相等PWM脉宽就不再变化。 图2 软件设计: 编译环境选用CodeVesionAVR,它有丰富的库函数可以调用,使源代码简化。 控制AD9851 AD9851的控制字共40位W0-W4,其中低32位Freq-b0~Freq-b31为频率控制字,用于控制DDS的输出频率。AD9851的串行模式下,第一个写入的位是Freq-b0,最后一个写入的位是Phase-b4。 下面程序中,“dds”和“freq”都是长整形变量,“freq” 是想要设置的 dds=23.860929422*freq; 频率值,“dds”是将要写入AD9851的值。这是因为DataSheet指出(=十进制32位频率控制字,表示系统时钟,这里是30MHz6=180MHz),因此。如果您对计算结果不放心,可登陆AD公司官方网http://designtools.analog.co m/dtDDSWeb/dtDDSMain.aspx?part=AD9851模拟验证,验证前务必正确设置参数。 以下是将预置频率写入AD9851的参考程序: void write_dds(unsigned long dds) { unsigned char i; load=0; //准备输入数据 clk=0; for(i=0;i40;i++) { clk=0; //模拟同步时钟 delay_us(2); //延时,这个时间

文档评论(0)

新起点 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档