论坛风格切换切换到宽版
  • 36649阅读
  • 19回复

DDS AD9851和PLL的详细应用(包括单片机的初始化) [复制链接]

上一主题 下一主题
离线bd2ev
 
发帖
459
只看楼主 倒序阅读 0楼 发表于: 2006-03-07
直接数字频率合成

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
;====================


图纸和本资料见附件
附件: dds9851.doc (0 K) 下载次数:14677
离线bd7rf
发帖
10148
只看该作者 1楼 发表于: 2006-03-07
我所看到的最详细的东西
离线BG4UVR
发帖
11201
只看该作者 2楼 发表于: 2006-03-07
好帖,要顶
离线bg5cvc
发帖
1106
只看该作者 3楼 发表于: 2006-03-07
真够详细的!喜欢!!
我得好好学习学习!
谢谢!!!
离线ding
发帖
3484
只看该作者 4楼 发表于: 2006-03-07
也跟着顶。。。。
离线BG7IOI
发帖
4142
只看该作者 5楼 发表于: 2006-03-07
记号
离线BD0AAI
发帖
3050
只看该作者 6楼 发表于: 2006-03-07
好文章,就是图不够清楚, 收藏、感谢!!!
离线bd2ev
发帖
459
只看该作者 7楼 发表于: 2006-03-07
好东西大家分享,以后找到接着发.嘿嘿
离线bd2ev
发帖
459
只看该作者 8楼 发表于: 2006-03-08
起来!
离线sun
发帖
134
只看该作者 9楼 发表于: 2006-03-08
我来帮顶,好东西.收藏了
离线BG6HV
发帖
355
只看该作者 10楼 发表于: 2006-03-08
好东西,支持!
离线BG7YDO
发帖
3654
只看该作者 11楼 发表于: 2006-03-08
不顶对不起黑牛,good!
离线bd4mm
发帖
710
只看该作者 12楼 发表于: 2006-03-08
'
我所看到的最详细的东西 [表情]
'
同感!
离线bd2ev
发帖
459
只看该作者 13楼 发表于: 2006-03-09
起来,希望大家多开发出更好的diy作品!
离线BD7RC
发帖
3283
只看该作者 14楼 发表于: 2006-03-10
广西师范大学第六届“创新杯”大学生课外学术科技和创业计划竞赛结果公示
发明制作类
一等奖 (1项)
《dds短波信号发生器》
作者:磨荣祥 物信学院
指导老师:梁维刚 苏检德 李健昌

.....................
离线bd2fw
发帖
12901
只看该作者 15楼 发表于: 2006-03-10
这么好的帖子,得顶!
离线bd2ev
发帖
459
只看该作者 16楼 发表于: 2006-03-12
起来123456789
离线hmgyl
发帖
15
只看该作者 17楼 发表于: 2006-03-12
好帖,希望多点这样的好帖,呵呵~~最好有有关ad9951的资料哦~~
离线BG7TCM
发帖
173
只看该作者 18楼 发表于: 2006-03-13
里面有不少错漏的地方的。
离线bd5cvb
发帖
48
只看该作者 19楼 发表于: 2006-03-28
认真学习。谢谢楼主。