基于DDS信号发生器毕业设计论文_第1页
基于DDS信号发生器毕业设计论文_第2页
基于DDS信号发生器毕业设计论文_第3页
基于DDS信号发生器毕业设计论文_第4页
基于DDS信号发生器毕业设计论文_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、i目 录绪论.11 系统设计.21.1 方案论证 .21.1.1 信号模块 .21.1.2 控制模块 .31.1.3 显示模块 .41.1.4 键盘输入模块 .41.1.5 系统各模块的最终方案 .412 理论分析与计算 .51.2.1 频率精度计算 .51.2.2 dds 的理论分析.51.2.3 dds 的参数计算.62 硬件系统设计.721 硬件元器件的选用 .72.1.1 c8051f020 控制芯片简介.72.1.2 ad9954 简介.922 单元硬件电路设计 .132.2.1 矩阵(44)键盘电路 .132.2.2 电源电路 .142.2.3 电压调幅电路 .142.2.4 方波

2、电路 .142.2.5 三角波电路 .153 软件系统设计.163.1 程序流程图 .164 系统测试.194.1 仿真测试 .194.2 指标测试 .194.3 测试方法 .205 结束语.22致谢.23参考文献.24附录一 对 ad9954 编程的主要源程序清单 .25附录二 lcd 显示子程序.35ii摘 要:随着数字集成电路、微电子技术和 eda 技术的深入研究,dds 技术以其有别于其它频率合成技术的优越性能和特点,成为现代频率合成技术中的佼佼者。根据题目要求,我们以单片机 c8051f020 芯片和 ad9954 芯片为核心,辅以必要的模拟电路,设计一台信号发生器,使之能产生正弦波

3、、方波和三角波。该系统主要由控制模块、信号模块、显示模块、键盘输入模块构成。仅用单片 ad9954 就实现了直接数字频率合成技术(dds) ,产生稳幅正弦波。输出的正弦波经过比较电路来实现方波的输出,而三角波则是在方波的基础上通过接入积分电路来实现的。单片机对内部寄存器控制,ad9954 就可以产生一个频谱纯净、频率和相位都可编程控制且稳定性很好的模拟波形,整个系统结构紧凑,电路简单,功能强大,可扩展性强。通过键盘输入、lcd 显示形成人机交互界面,实现对输出信号的控制。关键词:信号发生器;c8051f020;直接数字频率合成器(dds) ;ad9954iiiabstract:as digit

4、al integrated circuits, microelectronic technology and in-depth study of eda technology, its technology is different from other dds frequency synthesizer technology and the superior performance characteristics of a modern frequency synthesis technology leader. under the title, we c8051f020 microcont

5、roller chip and ad9954 chip as the core, supplemented by the necessary circuit simulation, design a signal generator, so that it can produce sine, square and triangular wave. the system mainly by the control module, signal modules, modules, a keyboard input module. just to achieve a single-chip ad99

6、54 direct digital synthesis (dds), resulting in steady increase sine wave. the sine wave output circuit comparison to the output of square, triangle and square wave is on the basis of the access points through the circuit to achieve. scm internal control registers, the ad9954 can produce a spectrum

7、of pure, programmable frequency and phase control and stability are good simulation waveforms, the whole system compact, simple circuit, powerful, scalable and strong. the keyboard input, a lcd display interactive interface, the output signal of the control.keywords: signal generator; c8051f020; dir

8、ect digital synthesis (dds); ad99541绪论直接数字频率合成技术(direct digital synthesizer,dds)是在20世纪7o年代提出的,利用数字可控振荡器技术,直接以数字信号控制产生高精度频率信号,频率分辨率可达lhz,与传统的直接频率合成(ds)、锁相环间接频率合成(pll ),fnpll合成和psg单环路合成相比,具有频率切换时间极短、频率分辨率高、相位连续,相噪低,结构简单、体积小、成本低等优势。鉴于dds技术有如此优越的条件,现在大多数设备、系统都采用了这种技术。当然,作为通信系统中必不可少的信号发生器也越来越多地容纳了该技术,本文将

9、要介绍的是基于adi公司生产的dds芯片ad9954的信号发生器的设计方案。ad9954是采用先进的dds技术开发的高集成度dds器件。其主要特性如下:内置400msps时钟;内含l4位dac;相位、幅度可编程;有32位频率转换字;可用串行i0控制;内置超高速模拟比较器;可自动线性和非线性扫频;内部集成有102432位ram;采用18v电源供电;可420倍频;支持大多数数字输入中的5v输入电平。控制芯片选择c8051f020,通过对ad9954编程实现正弦波,该输出的正弦波能达到mhz以上,输出是波形失真率极低。用lcd和键盘作为良好的人机界面,用键盘输入要显示的频率,lcd显示频率的大小。将

10、输出的正弦波经比较器电路来实现方波的输出,经实验发现输出的方波能达到100khz以上且输出的波形失真率小,波形纯真。输出的方波再经过积分电路便得到三角波,经实验观察可以看到,输出的波形正常,能达到khz以上,输出的波形失真率低。1 系统设计21.1 方案论证1.1.1 信号模块方案一:采用专用信号发生器。max038 是美信公司的低失真单片信号发 生器集成电路,内部电路完善。使用该芯片,设计简单,可以生成同一频率信号的各种波形信号,但频率精确度和稳定度都难以达到要求。方案二:采用传统的直接频率合成法直接合成。利用混频器、倍频器、分频器和带通滤波器完成对频率的算术运算。由于采用大量的倍频、分频、

11、混频和滤波环节,导致直接频率合成器的结构复杂,体积庞大,成本高,而且容易产生过多的杂散分量,难以达到较高的频谱纯度。方案三:采用锁相环间接频率合成(ppl)。虽然具有工作频率高、宽带、频谱质量好的优点,但由于锁相环本身是一个惰性环节,锁定时间较长,故频率转换时间较长。另外,由模拟方法合成的正弦波的参数(如幅度、频率和相位等)都很难控制,不易实现。方案四:采用直接数字合成(direct digital frequency synthesizer,简称 dds 或 ddfs) 。用随机读/写存储器 ram 存储所需波形的量化数据,按照不同频率要求,以频率控制字 k 为步进对相位增量进行累加,以累加

12、相位值作为地址码读取存在存储器内的波形数据,经 d/a 转换和幅度控制,再滤波即可得所需波形。由于 dds 具有相对带宽很宽,频率转换时间极短(可小于 20 微妙),频率分辨率高,全数字化结构便于集成以及输出相位连续,频率、相位和幅度均可实现程控,因此,可以完全满足本题目的要求。dds 的原理框图如图 1 所示:图 1 dds 原理框图dds 技术频率分辨率高、转换速度快、信号纯度高、相位可控、输出信号无电流脉冲叠加、输出可平稳过渡且相位可保持连续变化。3方案论证:从题目要求来看,上述三种方案都可以满足题目合成频率范围的要求,但信号发生器产生的频率稳定度、精确度都不如 dds 合成的频率;另一

13、方面,dds 比信号发生器更容易精确控制,所以我们选择 dds 方案进行频率合成。1.1.2 控制模块方案一:采用 89c51 芯片单片机,现在市场很多成品都在用它,但 89c51最大的缺陷在于不支持 isp(在线更新程序)功能, 。对于短短几天的比赛时间,用编程器对它进行烧写程序,是非常浪费时间和精力的,如果将来要对产品进行升级的话也是非常困难的。因此不考虑用 80c51 作控制模块的主芯片。方案二:采用 89c2051 开发制造产品,因为 2051 看起来体积比较小,功能也较全面.但是 2051 不是标准的 51 内核,所以 89c2051 的程序不能直接移植到51 上。由于 2051 是

14、精简型,所以 p 口变得很少,这样一来可利用资源比较紧张,只能做一些简单的产品。因此,对于本设计来说是不想适应的。方案三:采用 sst 系列单片机,sst 单片机是在 at89c 系列单片机的基础上改进而成的,提高了工作频率,可采用串口进行在线编程调试,增加了内存的容量和 pac 可编程计数器等功能。从基本功能的改进上与 89s52 系列基本上相同。并且这种单片机的价格高于其它同类产品,并且很多的功能用不上,故不考虑用这个方案。方案四:c8051f020 是 cygnal 出的一种混合信号系统级单片机(片上系统soc) ,片内含 cip51 的 cpu 内核,它的指令系统与 mcs51 完全兼

15、容;其中的 c8051f020 单片机含有 64kb 片内 flash 程序存储器、4352b(256b+4kb)的ram;8 个 io 端口共 64 根 io 口线;一个 12 位 ad 转换器和一个 8 位ad 转换器以及一个双 12 位 da 转换器;2 个比较器、5 个 16 位通用定时器、5 个捕捉比较模块的可编程计数定时器阵列、看门狗定时器、vdd 监视器和温度传感器等部分;c8051f020 单片机支持双时钟,其工作电压范围为2.73.6v(端口 i/o,rst 和 jtag 引脚的耐压为 5v) 。综合上述,根据我们题目的要求,用低端产品,如 89c51,不能很好的达到题目指标

16、;用高端产品,如 sst 系列,它有很多的功能用不上和“内存”太大,等于大材小用,并且成本增加。与以前的 51 系列单片机相比,c8051f020 增添4了许多功能,同时其可靠性和速度也有了很大提高,且 c8051f020 的种种特点和所能达到的指标,对我们这个题目非常合适,因此最终采用 c8051f020 作为主控制芯片我们自制了单片机最小系统。1.1.3 显示模块方案一:采用 led 数码管显示。虽然功率低,控制简单,但却只能显示数字和一些简单的字符,没有较好的人机界面。方案二:采用 lcd 液晶显示,可以显示所有字符及自定义字符,并能同时显示多组数据汉字,字符清晰。由于自身具有控制器,不

17、但可以减轻主单片机的负担,而且可以实现菜单驱动方式的显示结果,实现编辑模块全屏幕编辑的功能,达到友好的人机界面。用 lcd 显示,能解决 led 只能显示数字等几个简单字符的缺点,接口电路简单,性能好,效果多,控制方便,显示的方式多。比较上述两种方案,采用方案二。1.1.4 键盘输入模块方案一:采用传统的独立式按键。这种方式占用系统的资源较多,而且效率低,程序的编写量大而复杂。方案二:为了提高单片机的资源利用率,按键部分使用矩阵(44)键盘。这种方法在开关数量多的情况下可以节省很多的接口,并且提高系统接口的利用率。故:确定选择采用方案二。1.1.5 系统各模块的最终方案经过仔细的分析与论证,决

18、定系统各模块的最终方案如下:信号模块:采用 ad9954;控制模块:采用 c8051f020 控制;显示模块:采用 lcd 显示;键盘输入模块:采用矩阵(44)键盘;单片机 c8051f020 用于控制系统中 lcd 显示、键盘的输入的确认及控制信号的输出。系统基本框图如图 2:5图 2 系统基本框图12 理论分析与计算1.2.1 频率精度计算 采用美国 ad 公司先进的 dds 直接数字频率合成技术生产的高集成度产品ad9954 芯片。ad9954 内部时钟最大为 400msps,内置 14 位高速高精度dac,1.8v 低功耗工作,自带频率设置,幅度设置,相位设置,psk,fsk,扫频等功

19、能,并有 10244 字节的 ram。其频率字为 32 位,故频率绝对精度为hz(系统时钟为 400m),当频率高于 1khz 时,相对精度为3240000000020.09。40.9 101.2.2 dds 的理论分析dds 的基本原理是,在高速存储器中放入正弦函数相位数据表格,经过查表操作,将读出的数据送到高速 dac 产生正弦波。可编程 dds 系统原理如图三:图 3 可编程 dds 系统原理n:相位累加器位数; m:相位累加器实际对 rom 寻址的位数s:rom 输出正弦信号(离散化)的位数位数:相位累加器舍去的位数,满足位数=n-m6dds 系统由频率控制字、相位累加器、正弦查询表、

20、数/模转换器和低通滤波器组成。参考时钟为高稳定度的晶体振荡器,其输出用于同步 dds 各组成部分的工作。dds 系统的核心是相位累加器,它由 n 位加法器与 n 位相位寄存器构成,类似于一个简单的计算器。每来一个时间脉冲,相位寄存器的输出就增加一个步长的相位增量值,加法器将频率控制数据与累加寄存器输出的累加相位数据相加,把相加结果送至累加寄存器的数据输入端。相位累加器进入线性相位累加,累加至满量程时产生一次计数溢出,这个溢出频率即为 dds 的输出频率。正弦查询表是一个可编程只读存储器(prom),存储的是以相位为地址的一个周期正弦信号的采样编码值,包含一个周期正弦波的数字幅度信息,每个地址对

21、应于正弦波中 0360范围的一个相位点。将相位寄存器的输出与相位控制字相加,得到的数据作为一个地址对正弦查询表进行寻址,查询表把输入的地址相位信息映射成正弦波幅度信号,驱动 dac,输出模拟信号。低通滤波器平滑并滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。1.2.3 dds 的参数计算对于计数容量为 2n相位累加器和具有 m 个相位取样点的正弦波波形存储器,若频率控制字为 k,输出信号频率为 f o,参考时钟频率为 f c,则 dds 系统输出信号的频率为 f o=kfc/2n输出信号频率的频率分辨率为f min=fc/2n由奈奎斯特采样定理可知,dds 输出的最大频率为f max=f

22、c/2频率控制字可由以上公式推出:k=f o2n/fc当外部参考时钟频率为 50mhz,输出频率需要为 1mhz 时,系统时钟经过 6倍频,使得 f c 变为 300mhz,这样就可利用以上公式计算出 dds 的需要设定的控制频率字 k=248/30072 硬件系统设计21 硬件元器件的选用2.1.1 c8051f020 控制芯片简介(1) c8051f020 的功能c8051f020 是 cygnal 出的一种混合信号系统级单片机(片上系统 soc) ,片内含 cip51 的 cpu 内核,它的指令系统与 mcs51 完全兼容;其中的c8051f020 单片机含有 64kb 片内 flash

23、 程序存储器、4352b(256b+4kb)的ram;8 个 io 端口共 64 根 io 口线大量减少了外部连线和器件扩展;一个12 位 ad 转换器和一个 8 位 ad 转换器以及一个双 12 位 da 转换器;2 个比较器、5 个 16 位通用定时器、5 个捕捉比较模块的可编程计数定时器阵列、看门狗定时器、vdd 监视器和温度传感器等部分;c8051f020 单片机支持双时钟,其工作电压范围为 2.73.6v(端口 i/o,rst 和 jtag 引脚的耐压为 5v) 。c8051f020 功能图如图 4。c8051f020 功能图a.运行速度c8051f020 的指令运行速度是一般 80

24、c51 系列单片机的 10 倍以上。因为其8cip-51 中采用了流水线处理结构,已经没有了机器周期时序,指令执行的最小时序单位为系统时钟,大部分指令只要 12 个系统周期即可完成。又由于其时钟系统比 80c51 的更加完善,有多个时钟源,且时钟源可编程,时钟频率范围为 025 mhz,当 cip-5l 工作在最大系统时钟频率 25 mhz 时,它的峰值速度可以达到 25 mis,c8051f020 已进入了 8 位高速单片机行列。b.io 端口的配置方式c8051f020 拥有 8 个 8 位的 io 端口,大量减少了外部连线和器件扩展,有利于提高可靠性和抗干扰能力。其中低 4 个 io 端

25、口除可作为一般的通用io 端口外,还可作为其他功能模块的输入或输出引脚,它是通过交叉开关配置寄存器 xbr0、xbr1、xbr2(各位名称及格式如表 1 所示)选择并控制的,它们控制优先权译码选择开关电路如图 1 所示,可将片内的计数器定时器、串行总线、硬件中断、比较器输出及其它的数字信号配置为在端口 io 引脚出现,这样用户可以根据自己的特定需要选择所需的数字资源和通用 io 口。数字交叉开关是一个比较大的数字开关网路,这在所有 80c51 系列单片机上是一个空白。另外 p1mdin 用于选择 p1 的输入方式是模拟输入还是数字输入,复位值为11111111b,即默认为数字输入方式。而 80

26、c51 单片机的 io 引脚是固定分配的,即占用引脚多,配置又不够灵活。c.交叉开关c8051f020 通过优先权交叉开关译码器控制数字开关网路,端口引脚的分配顺序是从 p0.0 开始一直到 p3.7。当交叉开关配置寄存器 xbr0、xbr1 和 xbr2中外设的对应使能位被设置为逻辑“1”时,交叉开关将端口引脚分配给外设,例如,如果 uartoen 位(xbr0.2)被设置为逻辑“1” ,则 tx0 和 rx0 引脚将分别被分配到 p0.0 和 p0.1。因为 uart0 有最高优先权,所以当 uartoen 位被设置为逻辑“1”时其引脚将总是被分配到 p0.0 和 p0.1。未被设置的交叉

27、开关分配端口可作为通用 io 口。注意:当选择了串行通信外设(即 smbus、spi 或 uart)时,交叉开关将为所有相关功能分配引脚。例如,不能为 uart0 功能只分配 tx0 引脚而不分配 rx0 引脚。交叉开关寄存器被正确配置后,通过将 xbare(xbr2.6)设置为逻辑“1”来使能交叉开关。 在 c8051f020 软件编程中须首先设置看门狗定时器的工作状态;9其次,要由内部振荡器控制寄存器 oscicn 设置采用内部时钟还是外部时钟工作,若选择外部时钟可通过外部振荡器控制寄存器 oscxcn 来选择适当的频率,上题目采用内部时钟,并通过时钟控制寄存器 ckcon 选择使用系统时

28、钟的 12 分频。再次,若选择的 io 口是低四个端口 p0p3 作为工作口,需要设定寄存器xbr0、xbr1、xbr2(复位值为 0),在本设计中未用到数字资源,故 xbr0、xbr1的值为复位值,只需设定 xbr2 的值为 40h 允许功能选择开关即可,若本设计中的 p1.2 换为 p4.2,则无需设定寄存器 xbr0、xbr1、xbr2,因为高端口 p4p7与交叉开关无关。最后还要选择所用 io 口的输出方式,p0、p1、p2、p3 口分别由 pomdout、p1md-out、p2mdout、p3mdout 端口输出方式寄存器来选择,寄存器中的某位置 0 为漏极开路输出方式,置 1 则为

29、推拉输出方式。另外,由于 c8051f020 的专用寄存器比一般 51 单片机多,而 8051 指令不能识别它增加的专用寄存器,公司提供了所有的专用寄存器及相应位的地址定义文件,用户只需加一条 include (c8051f020.inc)指令即可。c8051f020 引脚图如图 5:c8051f020 引脚图2.1.2 ad9954 简介(1) ad9954 的概念及内部特征10ad9954 是采用先进的 dds 技术开发的高集成度 dds 器件。它内置高速、高性能 d/a 转换器及超高速比较器,可用为数字编程控制的频率合成器,能产生200mhz 的模拟正弦波。ad9954 内含 10243

30、2 静态 ram,利用该 ram 可实现高速调制,并支持几种扫频模式。ad9954 可提供自定义的线性扫频操作模式,通过 ad9954 的串行 i/o 口输入控制字可实现快速变频且具有良好的频率分辨率。其应用范围包括灵敏频率合成器、可编程时钟发生器、雷达和扫描系统的 fm 调制源以及测试和测量装置等。ad9954 的内部结构主要特性:1.内置 400msps 时钟;2.内含 14 位 dac;3.相位、幅度可编程;4.有 32 位频率转换字;5.可用串行 i/o 控制;6.内置超高速模拟比较器;7.可自动线性和非线性扫频;8.内部集成有 102432 位 ram;9.采用 1.8v 电源供电;

31、10.可 420 倍倍频;11.支持大多数数字输入中的 5v 输入电平;12.可实现多片同步。 (2) ad9954 的引脚说明 ad9954 采用 48 脚 tqfp/ep 封装,各引脚定义如下:i/o update:在该引脚的上升沿可把内部缓冲存储器中的内容送到 i/o寄存器中。引脚电平的建立和保持与 sync-clk 输出信号有关;dgnd 和 agnd:数字地与模拟地;osc/refclk 和 osc/refclk:参考时钟或振荡输入端:cyrstal out:振荡器输出端;clkmodeselect:振荡器控制端,为 1 时使能振荡器,为 0 时不使能振荡器;loop_filter:

32、该引脚应与 avdd 间串联一个 1k 电阻和一个 0.1f 电容;iout 和 iout:dac 输出端,使用时应接一个上接电阻;dacbp:dac 去耦端,使用时应接一个 0.01f 的旁路电容;dac_rset:dac 复位端,使用时应通过一个 3.92k 的电阻接至 agnd端;comp_out:比较器输出端,可以输出方波或脉冲信号;comp_in 和 comp_in:比较器输入端;pwrdwnctl:外部电源掉电控制输入引脚; 11reset:芯片复位端; iosync:异步串行端口控制复位引脚;为 1 时,当前 i/o 操作立即停止;为 0 时开始新的 i/o 操作;不用时,此引脚

33、必须接地;sdo:采用 3 线串口操作时,sdo 为串行数据输出端。采用 2 线串口操作时,sdo 不用,可以不连;cs:片选端,低电平有效,允许多芯片共用 i/o 总线;sclk:i/o 操作的串行数据时钟输入端;sdio:采用 3 线串口操作时,sdo 为串行数据输入端,采用 2 线操作时,sdo 为双向串行数据端。dvdd_i/o;i/o 电源,可以是 1.8v 或 3.3v;sync_in:同步多片 ad9954 输入信号,使用时与主 ad9954 的 sync_clk的输出相连;sync_clk:时钟输出脚,为内部时钟的 1/4,可用作外围硬件同步;osk:在编程操作时可用该脚来控制

34、幅度与时间斜率,与 sync_clk 同步;当 osk 不能被编程时,此脚接 dgnd;ps1 和 ps0:可用来选择 4 个 ram 段控制字区中的一个。(3) ad9954 电路部分ad9954 为电流输出型芯片,自带滤波功能,故其外围电路主要为数据控制线的引出和电流转换为电压输出电路,ad9954 的外围电路如图 6:12图 6 ad9954 的外围电路(4) ad9954 总体外围电路由 c8051f020 输出控制信号控制 ad9954,ad9954 产生波形,ad9954 总体外围电路如图 7:13 图 7 ad9954 总体外围电路 22 单元硬件电路设计2.2.1 矩阵(44)

35、键盘电路在开关数量多的情况下,采用矩阵(44)键盘可以节省很多的接口,并且提高系统接口的利用率。矩阵(44)键盘电路如图 8: 图 8 矩阵(44)键盘电路142.2.2 电源电路电源模块提供+5v、-5v 电压。电源电路如图 9:图 9 电源电路2.2.3 电压调幅电路采用放大电路调节正弦波信号的电压峰-峰值,使 v opp 在 05v 可调。放大电路如图 10。图 10 调幅电路2.2.4 方波电路输入正弦波信号外接比较电路产生方波信号。比较电路如图 11:15图 11 方波电路2.2.5 三角波电路输入方波信号外接积分电路产三角波波信号。积分电路如图 1163 软件系统设计3.1 程序流

36、程图 (1)题目要求信号发生器产生正弦波、方波和三角波三种周期性波形,我们对 dds 模块编程实现正弦波的输出,在产生正弦波的基础上外接比较电路产生方波,再通过积分电路实现三角波的输出。主程序根据键盘设定正弦波的频率,按确定键后则输出所需的正弦波。主流程图如图 13 所示。主要程序见附录a。图 13 主流程图(2)lcd 显示的流程如图 14 所示:17图 14 lcd 显示流程图(3)键盘扫描秒子程序如图 15 所示18图 15:键盘扫描流程图194 系统测试4.1 仿真测试在对软件进行仿真测试时,使用 keil 进行模拟测试。测试目的:(1) 键盘的键位是否正确。(2) lcd 的显示是否

37、正常。(3) 信号发生器是否能产生我们所需要的波形。4.2 指标测试4.2.1 误差分析频率误差来源:测试仪表数字示波器本身在测量上存在误差幅值误差来源:由于通用电路板本身机构的限制,影响了整个电路的布局和走线,从而引入了一定的噪声和干扰。相位误差:由于波形是通过一系列有限的离散采样点表示,不可避免引入相位量误差,增加采样点数可以减小误差。4.2.2 测试仪器示波器:yb5400 系列数字存储示波器4.2.3 输出波形频率范围测试测试数据如表一、表二、表三:表一 第 1 组测试数据输出频率/hz预置频率/hz正弦波方波三角波100100.02100.02100.02200200.05200.0

38、5200.0510001000.21000.21000.220002000.52000.52000.5100001000210002100022000020005200052000550000500105001050010100000100020100020100020表二 第 2 组测试数据输出频率/hz预置频率/hz正弦波方波三角波100100.02100.02100.02200200.04200.05200.052010001000.21000.181000.220002000.52000.52000.610000100021000210002.120000200052000520005

39、50000500105001050010.5100000100020100019100021表三 第 3 组测试数据输出频率/hz预置频率/hz正弦波方波三角波100100.02100.02100.02200200.05200.05200.0610001000.21000.21000.220002000.52000.482000.6100001000210001.8100022000020005200052000550000500105001050010100000100020100020100020由表中的数据可以看出,在输出频率稳定度方面,正弦波、方波、三角波均十分稳定。4.3 测试方法4

40、.3.1 测试正弦波输出频率(1)连接电路(电源电路、c8051f020 芯片、ad9954 芯片、显示模块、键盘输入模块)。(2)打开示波器电源。(3)运用键盘输入设定频率,按确定键。(4)观察示波器的显示频率、周期和峰-峰值。(5)记录正弦波的输出频率(6)关闭电源4.3.2 测试方波输出频率(1)连接电路(电源电路、c8051f020 芯片、ad9954 芯片、显示模块、键盘输入模块、比较器)。(2)打开示波器电源。(3)运用键盘输入设定频率,按确定键。(4)调节电位器,观察示波器的显示频率、周期和峰-峰值。21(5)记录方波的输出频率(6)关闭电源4.3.3 测试三角波输出频率(1)连

41、接电路(电源电路、c8051f020 芯片、ad9954 芯片、显示模块、键盘输入模块、比较电路、积分电路)。(2)打开示波器电源。(3)运用键盘输入设定频率,按确定键。(4)调节电位器,观察示波器的显示频率、周期和峰-峰值。(5)记录三角波的输出频率。(6)关闭电源。225 结束语 设计基本实现了信号发生器的基本要求,能输出正弦波、方波、三角波,输出的频率也能达到基本要求100hz100khz,输出的正弦波在1000欧的负载下,能实现峰峰值在05v可调。输出的波形纯真,失真率低。可以作为一般的信号发生器使用。但由于知识水平的有限,该信号发生器不能实现在50欧负载的情况下,正弦波峰峰值在05v

42、可调。不能在10100khz之间实现10hz的步进和100khz1mhz实现1000hz的步进。这是一大遗憾。单片机控制ad9954产生正弦信号电路及其滤波放大输出电路是该信号发生器设计的核心部分,由于器件对于带宽的要求比较高,因此在器件的选择和滤波器的设计上有较高的要求。23致谢本文是在导师凌老师的悉心指导下完成的,在大专的三年时间里,导师严谨的治学态度、渊博的知识、活跃的学术思想、执着的科研精神及高尚的做人原则,都给我留下了终生难忘的印象。所有这一切都将成为我受益终生的宝贵财富!在此,学生谨向导师表示衷心的感谢! 真诚地感谢凌老师。通过他们的精心指导与有益讨论,我在研究思想方法上得到了许多

43、启发,并感谢李茂清-李老师的支持与帮助,在他们的帮助下使我完成论文。 感谢我的父亲、母亲对我的理解、支持和帮助。尽管与他们为我付出的一切相比,所有的语言都显得苍白无力,我仍要真诚地说声:谢谢!24参考文献1黄志伟.全国大学生电子设计竞赛系统设计.北京:北京航空航天大学出版社,2006.2全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品汇编.北京:北京理工大学出版社,20043潘琢金译.c8051f020/1/2/3 混合信号 isp flash 微控器数据手册.沈阳:沈阳新华电子有限公司,20024谢自美电子线路设计.实验.测试(第三版) 武汉:华中科技大学出版社。2000年 7

44、月 5杨帮文新型集成器件家用电路北京:电子工业出版社,2002.8 6第二届全国大学生电子设计竞赛组委会。全国大学生电子设计竞赛获奖作品选编。北京:北京理工大学出版社,1997. 7李炎清毕业论文写作与范例厦门:厦门大学出版社。2006.10 8潭博学、苗江静集成电路原理及应用北京:电子工业出版社。2003.9 9陈梓城家用电子电路设计与调试北京:中国电力出版社。200625附录一 对对 ad9954ad9954 编程的主要源程序清单编程的主要源程序清单/对 ad9954 编程的主要源程序清单#include c8051f020.h#include intrins.h/ad9954 初始化ex

45、tern void ad9954_init(void);/写一个字节extern void ad9954_writebyte_m(unsigned char dat);/读一个字节extern unsigned char ad9954_readbyte_m(void);/向 9954 寄存器写数据extern void ad9954_write_reg(unsigned char address,unsigned char *pointer);/从 9954 寄存器读数据extern void ad9954_read_reg(unsigned char address,unsigned cha

46、r *pointer);/从 io 缓冲到寄存器extern void ad9954_io_updata();/用 9954 产生正弦波,输入参数为频率,单位 hzextern void ad9954_gener_cos(double freq);/使能正弦输出extern void ad9954_en_cos_o();/参考时钟频率调节extern void ad9954_ref_clk(unsigned char t);/ad9954 满幅输出extern void ad9954_amp_full(void);unsigned char getkey();void dds_ctrl(uns

47、igned char key);void ad9954_phase();void ad9954_add(void);/*lcd 有关*/26void lcd_delay(void);unsigned char lcdbusywait();void writelcd_data(unsigned char data);void writelcd_command(unsigned char command);unsigned char changeaddress(unsigned char startaddress);void writelcd(unsigned char startaddress,

48、unsigned char size,unsigned char charactors);void writelcd_number(unsigned char address,unsigned char number);void writelcd_number_3bit(unsigned char address,unsigned char number);void writelcd_number_4bit(unsigned char address_4bit,unsigned int number4bit);void dispinitial();#include ad9954.hvoid s

49、ysclk_init (void) int i; / delay counter oscxcn = 0 x67; / start external oscillator with 22.1184mhz crystal for (i=0; i 1ms) while (!(oscxcn & 0 x80) ; / wait for crystal osc. to settle oscicn = 0 x88; / select external oscillator as sysclk / source and enable missing clock / detector/-/ port_init

50、/-27/ configure the crossbar and gpio portsvoid port_init (void) xbr0 = 0 x00; / xbr1 = 0 x00; xbr2 = 0 x40; / enable crossbar and weak pull-ups p0mdout |= 0 xf8; / 将有下拉的引脚配置为推挽方式 p74out=0x13; /set p4 as push-pull outputdouble f0ctrl_word=10000000;bit ddsf0_enter=1;main()char xdata i_buf110=0,0,0,0,

51、0,0,;unsigned char key=0,temp=0 xff;unsigned int i; wdtcn = 0 xde; / disable watchdog timer wdtcn = 0 xad;sysclk_init();/启动外部振荡器port_init();dispinitial();ad9954_init(); /9954 初始化ad9954_en_cos_o(); /使能输出ad9954_ref_clk(4); /时钟 4 倍频ad9954_gener_cos(10000000); /输出 10m hz 正弦波ad9954_amp_full(); /满幅输出while

52、(1) key=getkey(); for(i=0;i65535;i+);for(i=0;i=0)&(key=9) ) if(ddsf0_enter)29 f0ctrl_word=0; ddsf0_enter=0; writelcd(0 x8b,0,输入状态); if(f0ctrl_word9999999) f0ctrl_word=10*f0ctrl_word+key; writelcd_number_4bit(0 x91,(long)f0ctrl_word/10000); /h_4bit writelcd_number_4bit(0 x93,(long)f0ctrl_word%10000);

53、 /l_4bit if(key=16) ad9954_gener_cos(f0ctrl_word); ddsf0_enter=1; writelcd(0 x8b,0,请输入 ); #include ad9954.h#definead9954_crl p0sbitad9954_fud = ad9954_crl3; /有下拉sbitad9954_ps1 = ad9954_crl7; /有下拉sbitad9954_ps0 = ad9954_crl6; /有下拉sbitad9954_syn = ad9954_crl4; /有下拉sbitad9954_rst = ad9954_crl5; /有下拉sbi

54、tad9954_clk=ad9954_crl0;sbit ad9954_sio=ad9954_crl2; /双向口#define freq_coff 10.73741824static unsigned char _ref_clk_t=1;char code reg_length11=4,3,2,1,4,2,4,5,5,5,5;/寄存器长度表,用于查询ad9954 控制寄存器的长度30char xdata o_buf10=0 xaa,0 xaa,0 xaa,1,1,1;char xdata i_buf10=0,0,0,0,0,0,;void delay_u(long v) long i; fo

55、r(i=0;iv;i+) _nop_(); nop_();_nop_();_nop_();_nop_();_nop_(); void ad9954_init(void) ad9954_crl=0 x00;ad9954_rst=1;delay_u(10000);ad9954_rst=0;ad9954_clk=0;ad9954_sio=0; void ad9954_writebyte_m(unsigned char dat) char i,t;ad9954_clk=0;ad9954_sio=1;p0mdout |= 0 x01; for(i=0;i(7-i);ad9954_sio=t&0 x01;

56、31delay_u(10);ad9954_clk=1;delay_u(10);ad9954_clk=0;ad9954_clk=0;ad9954_sio=1; /9954 data out when falling edgeunsigned char ad9954_readbyte_m(void) char t,dat,i;ad9954_clk=0; p0mdout |= 0 x01; / enable tx0 as a push-pull outputad9954_sio=1;for(i=0;i8;i+)delay_u(10);dat=dat1;t=ad9954_sio;dat=dat|t;a

57、d9954_clk=1;delay_u(10);ad9954_clk=0;ad9954_clk=0;ad9954_sio=1; return dat; 32void ad9954_write_reg(unsigned char address,unsigned char *pointer) unsigned char i,l;ad9954_syn = 1;delay_u(10);ad9954_syn = 0;l=reg_lengthaddress;ad9954_writebyte_m(address);for(i=0;il;i+)ad9954_writebyte_m(*(pointer+i);

58、 void ad9954_read_reg(unsigned char address,unsigned char *pointer)unsigned char i,l;ad9954_syn = 1;delay_u(100);ad9954_syn = 0;l=reg_lengthaddress;ad9954_writebyte_m(address+0 x80);for(i=0;il;i+)*(pointer+i)=ad9954_readbyte_m();void ad9954_io_updata() ad9954_fud=0;delay_u(10);ad9954_fud=1;33delay_u

59、(10);ad9954_fud=0; void ad9954_gener_cos(double freq) double temp0,temp1;unsigned long temp3;unsigned char *char_p;temp0=freq*freq_coff; /10.7374; temp3=(unsigned long)temp0; char_p=(unsigned char *)(&temp3);o_buf0=char_p0;o_buf1=char_p1; o_buf2=char_p2;o_buf3=char_p3;ad9954_write_reg(4,o_buf);ad995

60、4_io_updata(); void ad9954_en_cos_o() o_buf0=0 x00;o_buf1=0 x00;o_buf2=0 x10;o_buf3=0 x00;ad9954_write_reg(0,o_buf);ad9954_io_updata(); /输入参数为几倍频/4=t=19void ad9954_ref_clk(unsigned char t)34 o_buf0=0 x00;o_buf1=0 x00;o_buf2=t=4)o_buf2|=0 x04;ad9954_write_reg(1,o_buf);ad9954_io_updata();_ref_clk_t=t;

温馨提示

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

评论

0/150

提交评论