基于AD9834的波形发生器设计_第1页
基于AD9834的波形发生器设计_第2页
基于AD9834的波形发生器设计_第3页
基于AD9834的波形发生器设计_第4页
基于AD9834的波形发生器设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、基于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第

2、5.3节 调试结果20结论24参考文献25致谢26附录27附录1:实物照片说明27附录2:系统原理图27附录3:部分源程序28基于ad9834的波形发生器的设计【摘要】:本设计核心问题是设计信号发生器,使之输出不同频率的正弦波、三角波和方波,并通过按键切换输出的波形,也可以改变频率和输出的幅度。本方案选择了ad9834作为核心芯片,并与单片机stc89c52结合,设计一款简易的高精度频率信号发生器,具有体积小功耗低等优点。ad9834是adi公司生产的一款采用dds技术、低功耗、可编程波形发生器。本文介绍了用ad9834设计信号发生器的基本框架,详细阐述了该芯片的基本性能和使用方法,分析了它与

3、单片机结合产生波形的具体措施。并且对dds这一技术做了比较详细的分析,也展望它的发展前景。 此外,本文还介绍了单片机stc89c52,它是一种低功耗、高性能cmos8位微控制器,一种带8k字节闪烁可编程可擦除只读存储器,并且也详细地阐述了单片机的内部结构、各个引脚的说明以及此芯片的特点。【关键词】:stc89c52; ad9834;dds abstractthis design is a core problem design signal generator, the output of different frequency sine wave, triangular wave and s

4、quare 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 consu

5、mption 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 th

6、e 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 per

7、formance 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前 言单片机是一种集成在电路芯片,它

8、是采用超大规模集成电路技术,把具有数据处理能力的中央处理器cpu、只读存储器rom、随机存储器ram、多种i/o接口和中断系统、定时器/计时器等功能(可能还包括驱动显示电路、模拟多路转换器、脉宽调制电路、a/d转换等电路)集成到一块硅片上,从而构成一个小而完善的计算机系统。波形发生器是一种数据信号发生器,在调试硬件时常常需要加入一些信号,以观察电路工作是否正常。而一般的信号发生器,不但笨重,而且只发生一些简单的波形,不能满足需要。例如用户要调试串口通信程序时,必须先在计算机上写好一段程序,之后再用数据线连接计算机和实验板,如果不能正常使用,不知道是数据线还是程序出现问题。用e2000/l的波形

9、发生器功能,可以定义串口数据。通过逻辑探勾输出,调试起来简单快捷。直接数字频率合成(dds)技术是继1971年问世以来1,由于它低成本、低功耗、高分辨率、频率切换时间短、相位连续、结构简单、体积小等诸多优点,在电信和电子仪器领域得到了越来越广泛的应用。ad9834是adi公司生产的一款采用dds技术、低功耗、可编程波形发生器,器件采用msop封装,非常小巧,外围电路简单,通过spi接口和单片机相连,编程可生成方波、三角波、正弦波,输出频率和相位都可通过软件编程,易于调节。本设计主要是基于ad9834的一款简易信号发生器2,由stc89c52单片机通过3个spi接口控制dds芯片ad9834产生

10、各种频率的正弦波、三角波、方波,经放大整形电路后输出,并通过独立的按键切换输出的波形,也可改变频率和输出幅度。该系统以简易为出发点,用熟悉的单片机stc89c52作为主控芯片,选用低功耗芯片ad9834为信号产生芯片。且使用dds器件,具有体积很小,电路简单的优点,整个系统可以做得很小,甚至可以作为手持设备使用,这就正好满足了当前技术的需要。这也是这次设计的两个创新点。第1章 绪论第1.1节 研究的背景和意义波形发生器亦称函数发生器,作为实验时使用的信号源,是当代各种电子电路实验设计应用中必不或缺的仪器设备之一。目前,市场上常见的波形发生器大多数是纯硬件的搭接而成,且波形的种类有限的,多为方波

11、、正弦波、锯齿波、三角波等波形。信号发生器作为一种常见的应用电子仪器设备,传统的信号发生器可以完全由硬件电路搭接而成,如采用555振荡电路发生方波、正弦波和三角波的电路便是可取的路经之一,不用依靠单片机。但是这种电路存在波形质量差,难以控制,可调节的范围小,电路过于复杂和体积大等缺点。在科学研究和生产实践中,如工业过程控制,地震模拟机械振动,生物医学等领域常常需要用低频信号源。但是由硬件电路构成的低频信号其性能难以令人满意,而且由于低频信号源所需的rc很大,电阻大,电容大在制作上有困难,参数的精度也难以保证;体积大、漏电和损耗大更是致命的弱点。一旦工作需求功能有增加,则电路复杂程度会大大增加。

12、现代电子领域中,单片机的应用正在不断地走向深入,这必将导致传统控制于检测技术的日益更新。单片机构成的仪器具有高可靠性、高性价比,在智能仪表系统和办公自动化等诸多领域得以极为广泛的应用,并走入家庭,从洗衣机、微波炉到音响和汽车,处处可见其应用。因此,单片机技术开发和应用水平已逐步成为一个国家工业发展水平的标志之一。一块单片机芯片就是一台计算机,由于单片机这种特殊的结构形式,在某些应用领域中,它承担了大中型计算机和通用微型计算机无法完成的一些工作,使其具有很多显著的优点和特点,因此在各个领域中都得到了迅猛的发展。第1.2节 波形发生器的发展状况波形发生器是能够产生大量的标准信号和用户定义信号的,并

13、可以保证高稳定性、高精度、易操作性和可重复性的电子仪器。波形发生器具有频率稳定性和连续的相位变换等优点,它不仅可以模拟各种复杂的信号,还可对波形、频率、相移、幅值进行动态、及时的控制,它还可以与其它仪器通讯组成自动测试系统,因此它被广泛用在震动激励、自动控制系统、通讯和仪器仪表等领域。在 70 年代以前,信号发生器主要有两类:脉冲波和正弦波,而波形发生器介于两类之间,能够提供正弦波、方波、三角波等几种常用标准波形,如果产生其它波形时,则需要采用较复杂的电路和机电结合的方法。这个时期的波形发生器多采用模拟电子技术,而且模拟器件构成的电路存在着价格贵、功耗大、尺寸大等缺点,并且要产生较为复杂的信号

14、波形,则电路结构十分复杂。同时,主要体现在两个较为突出的问题上,一是通过电位器的调节来实现输出频率的调节,因此很难将频率调到某一个固定值;二是脉冲的占空比不可调节。在 70 年代以后,微处理器的出现,可以通过用处理器、d/a和 a/d,硬件和软件使波形发生器的功能变大,从而产生更加复杂的波形。这个时期的波形发生器大多数以软件为主,它的实质就是采用微处理器对 dac的程序控制,就能够得到各种简单的波形。90 年代末,出现几种真正高价格、高性能的波形发生器、但是hp公司推出了型号为 hp770s的信号模拟装置系统,它是由 hp1776a波形发生软件和hp8770a任意波形数字化组成。实际上hp87

15、70a也仅可以产生8 种波形,而且价格十分昂贵。不久以后,lecroy 公司生产的型号为9100 的任意波形发生器,analogic公司推出了型号为 data-2020的多波形合成器等。 到了二十一世纪,随着集成电路技术的高速发展,出现了很多种工作频率可以超过 ghz 的dds 芯片,同时也推动了函数波形发生器的发展,在2003 年,agilent的产品 33220a就能够产生 17 种波形,最高频率可达到 20m,在2005 年,产品n6030a 已经能够产生高达 500mhz 的频率,采样的频率可以达到 1.25ghz。第2章 系统方案设计本系统以stc89c52单片机为控制核心,对系统进

16、行初始化,主要完成对键盘的响应、液晶的显示、ad9834频率和波形的设定等功能的控制,起到总控和协调各模块之间工作的作用。图2-1系统结构框图本系统结构如图2-1所示,本设计可分为以下模块:单片机主控模块、键盘模块、dds模块、液晶模块、增益可控模块。下面对各个模块的设计方案逐一进行论证分析。第2.1节 单片机主控模块stc89c52是一种带8k字节闪烁可编程可擦除只读存储器(fperom-flash programmable and erasable read only memory )的低电压,高性能cmos 8位微处理器,俗称单片机。在单芯片上,拥有灵巧的8 位cpu 和在系统可编程fl

17、ash,使得stc89c52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。stc89c52有40个引脚,4个8位并行i/o口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。stc89c52的存储器系统由4k的程序存储器(掩膜rom),和128b的数据存储器(ram)组成。它的内部结构如图2-2所示:图2-2 单片机内部结构框图stc89c52具有以下标准功能: 8k字节flash,512字节ram, 32 位i/o 口线,看门狗定时器,内置4kb eeprom,max810复位电路,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口。另外

18、stc89052 可以降到0hz 静态逻辑操作,它支持2种软件也可以选择节电模式。在空闲模式下,cpu 停止工作,允许ram、串口、定时器/计数器、中断继续工作。2.1.1. stc89c52单片机主要特性1、 一个8 位的微处理器(cpu)。2、片内程序存储器rom(4kb),用以存放一些原始数据、程序和表格。但也有一些单片机内部不带rom/eprom,如8031,8032,80c31 等。3、片内数据存储器ram(128b),用以存放可以读写的数据,如运算的中间结果、最终结果以及显示的数据等,sst89 系列单片机最多提供1k 的ram。目前单片机的发展趋势是将ram 和rom 都集成在单

19、片机里面,这样既方便了用户进行设计又提高了系统的抗干扰性。sst 公司推出的89 系列单片机分别集成了16k、32k、64k flash 存储器,可供用户根据需要选用。4、两个定时器计数器,每个定时器计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。为方便设计串行通信,目前的52 系列单片机都会提供3个16 位定时器/计数器。5、四个8 位并行io 接口p0p3,每个接口既可以用作输入,也可以用作输出。6、一个全双工uart(通用异步接收发送器)的串行io 口,用于实现单片机之间或单机与微机之间的串行通信。7、片内振荡器和时钟产

20、生电路,但石英晶体和微调电容需要外接。最高允许振荡频率为12mhz。sst89v58rd 最高允许振荡频率达40mhz,因而大大的提高了指令的执行速度。8、五个中断源的中断控制系统。现在新推出的单片机都不只5个中断源,例如sst89e58rd 就有9个中断源。2.1.2. stc89c52的引脚图如图2-3所示:图2-3 stc89c52的引脚图stc89c52部分引脚说明:时钟电路引脚xtal1 和xtal2:xtal1(19 脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。xtal2(18 脚):接外部晶体和微调电容的一端;在80

21、51 片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时钟电路时,该引脚输入外部时钟脉冲。要检查8051/8031 的振荡电路是否正常工作,可用示波器查看xtal2 端是否有脉冲信号输出。控制信号引脚rst,psen,ale 和ea:rst/vpd(9 脚):rst 是复位信号输入端,高电平有效。当此输入保持备用电源的输入端。当主电源vcc 发生故障,降低到低电平规定值时,将5v 电源自动两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。rst 引脚的第二功能是vpd,即接入rst 端,为ram 提供备用电源,以保证存储在ram 中的信息不丢失,

22、从而合复位后能继续正常运行。psen(29 脚):程序存储允许输出信号端。在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。此引脚接eprom 的oe 端。psen 端有效,即允许读出epromrom 中的指令码。psen 端同样可驱动8个ls 型ttl 负载。要检查一个8051/8031 小系统上电后cpu 能否正常到epromrom 中读取指令码,也可用示波器看psen 端有无脉冲输出。如有则说明基本上工作正常。ale/prog(30 脚):地址锁存允许信号端。当8051上电正常工作后,ale 引脚不断向外输出正脉冲信号,此频率为振荡器频率f的1/6。cpu 访问片外存

23、储器时,ale 输出信号作为锁存低8 位地址的控制信号。平时不访问片外存储器时,ale 端也以振荡频率的1/6 固定输出正脉冲,因而ale 信号可以用作对外输出时钟或定时信号。如果想确定8051/8031 芯片的好坏,可用示波器查看ale端是否有脉冲信号输出。如有脉冲信号输出,则8051/8031 基本上是好的。ale 端的负载驱动能力为8个ls 型ttl(低功耗甚高速ttl)负载。此引脚的第二功能prog 在对片内带有4kb eprom 的8751 编程写入(固化程序)时,作为编程脉冲输入端。ea/vpp(31 脚):外部程序存储器地址允许输入端/固化编程电压输入端。当ea 引脚接高电平时,

24、cpu只访问片内eprom/rom并执行内部程序存储器中的指令,但当pc(程序计数器)的值超过0fffh(对8751/8051 为4k)时,将自动转去执行片外程序存储器内的程序。当输入信号ea 引脚接低电平(接地)时,cpu 只访问外部eprom/rom 并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无片内rom 的8031 或8032,需外扩eprom,此时必须将ea 引脚接地。此引脚的第二功能是vpp是对8751 片内eprom固化编程时,作为施加较高编程电压(一般12v21v)的输入端。输入/输出端口p0/p1/p2/p3:p0口(p0.0p0.7,3932 脚):p0口

25、是一个漏极开路的8 位准双向i/o口。作为漏极开路的输出端口,每位能驱动8个ls 型ttl 负载。当p0 口作为输入口使用时,应先向口锁存器(地址80h)写入全1,此时p0 口的全部引脚浮空,可作为高阻抗输入。作输入口使用时要先写1,这就是准双向口的含义。在cpu 访问片外存储器时,p0口分时提供低8 位地址和8 位数据的复用总线。在此期间,p0口内部上拉电阻有效。p1口(p1.0p1.7,18 脚):p1口是一个带内部上拉电阻的8 位准双向i/o口。p1口每位能驱动4个ls 型ttl 负载。在p1口作为输入口使用时,应先向p1口锁存地址(90h)写入全1,此时p1口引脚由内部上拉电阻拉成高电

26、平。p2口(p2.0p2.7,2128 脚):p2口是一个带内部上拉电阻的8 位准双向i/o口。p口每位能驱动4个ls 型ttl 负载。在访问片外eprom/ram 时,它输出高8 位地址。p3口(p3.0p3.7,1017 脚):p3口是一个带内部上拉电阻的8 位准双向i/o口。p3口每位能驱动4个ls型ttl负载。p3口与其它i/o 端口有很大的区别,它的每个引脚都有第二功能,如下:p3.0:(rxd)串行数据接收p3.1:(rxd)串行数据发送p3.2:(int0#)外部中断0输入p3.3:(int1#)外部中断1输入p3.4:(t0)定时/计数器0的外部计数输入p3.5:(t1)定时/

27、计数器1的外部计数输入p3.6:(wr#)外部数据存储器写选通p3.7:(rd#)外部数据存储器读选通2.1.3. stc89c52单片机的中断系统stc89c52系列单片机的中断系统有5个中断源,2个优先级,可以实现二级中断服务嵌套。由片内特殊功能寄存器中的中断允许寄存器ie控制cpu是否响应中断请求;由中断优先级寄存器ip安排各中断源的优先级;同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。2.1.4. stc89c52单片机的定时/计数器在单片机应用系统中,常常会有定时控制需求,如定时输出、定时检测、定时扫描等;也经常要对外部事件进行计数。89c52单片机内集成有两

28、个可编程的定时/计数器:t0和t1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,此外,t1还可以作为串行口的波特率发生器。第2.2节 液晶模块液晶显示器(lcd)英文全称为liquid crystal display,它一种是采用了液晶控制透光度技术来实现色彩的显示器。和crt显示器相比,lcd的优点是很明显的。由于通过控制是否透光来控制亮和暗,当色彩不变时,液晶也保持不变,这样就无须考虑刷新率的问题。显示接口用来显示系统的状态,命令或采集的电压数据。本系统显示部分用的是lcd液晶模块,采用一个161的字符型液晶显示模块。lcd1602液晶模块采用hd44780控制器,hd4478

29、0具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,lm016l与单片机mcu通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(ir)和数据寄存器(dr)忙标志(bf),显示数ram(ddram),字符发生器rom(cgorom)字符发生器ram(cgram),地址计数器ram(ac)。ir用于寄存指令码,只能写入不能读出,dr用于寄存数据,数据由内部操作自动写入ddram和cgram,或者暂存从ddram和cgram读出的数据,bf为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,ddtam用来存储显示的字符,能存储80个字符码,cgr

30、om由8位字符码生成5*7点阵字符160中和5*10点阵字符32种. lcd1602液晶模块的引脚图如图2-4所示:图2-4 lcd1602引脚图lcd1602引脚介绍:vss(1脚):一般接地。vdd(2脚):接电源。vee(3脚):液晶显示器对比度调整端,接电源时对比度最弱,接地时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10k的电位器调整对比度)。rs(4脚):rs为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。r/w(5脚):r/w为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。e(6脚):e(或en)端为使能(enable)端,下降

31、沿使能。db0(7脚):低4位三态、 双向数据总线 0位(最低位)db1(8脚):低4位三态、 双向数据总线 1位db2(9脚):低4位三态、 双向数据总线 2位db3(10脚):低4位三态、 双向数据总线 3位db4(11脚):高4位三态、 双向数据总线 4位db5(12脚):高4位三态、 双向数据总线 5位db6(13脚):高4位三态、 双向数据总线 6位db7(14脚):高4位三态、 双向数据总线 7位(最高位)寄存器选择控制如表2-1:表2-1 寄存器选择控制rsr/w操作说明00写入指令寄存器(清除屏等)01读busy flag(db7)以及读取位地址计数器(db0db6)值10写入

32、数据寄存器(显示各字型等)11从数据寄存器读取数据第2.3节 dds模块2.3.1. dds技术简介直接数字合成技术是美国学者于1971年提出的,即以全数字技术,从相位概念出发直接合成所需波形的一中新的频率合成原理,称之为直接数字频率合成器(direct digital synthesis)。它的基本原理就是利用采样原理,通过查表法产生波形。但是限于当时微电子技术和数字信号处理技术的限制,dds并没有被足够的重视,随着现代超大规模集成电路的高速发展,使数字频率合成技术得到了质的飞跃,它在频率转换时间、相位连续性、相对带宽、高分辨率、正交输出以及集成化等一系列性能指标方面,已经远超过了传统的频率

33、合成技术所能达到的水平。但是由于dds数字化实现的固有特点,决定了其输出频谱杂散较大。从20世纪80年代末,通过深入的研究认识了dds杂散的原因及其分布规律后,对dds相位累加器进行了改进,rom数据进行了压缩,使用了抖动注入技术以及对dds系统结构和工艺结构进行了改进。dds技术建立在采样定理的基础上,它首先对需要产生的信号波形进行采样和量化,然后存入存储器作为待产生信号波形的数据表。输出信号波形时,电路在一个高稳定时钟控制下从数据表中依次读出信号波形的数据,产生过数字化的信号,这个信号再通过dac转换成所需的模拟信号波形。具体原理框图如图2-5所示。它的核心是相位累加器,由n位加法器与n位

34、相位寄存器构成,类似一个简单的计数器。加法器将频率控制字与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此可以看出,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是dds输出的信号频率。将相位寄存器的输出与相位控制字相加得到的数据作为一个地址对正弦查询表进行寻址,查询表把输入的地址相位信息映射成正弦波幅度信号,通过d/a变换器把数字量变成模拟量,再经过低通滤波器平滑并滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。在参考频率为s的情况下,dds系统输出信号的频率0为: (2-1)

35、输出信号的频率分辨率0为: (2-2) 图2-5 dds技术的原理框图2.3.2. ad9834的简介ad9834是一款能产生高质量正弦波和三角波的低功耗dds芯片。它内部载有比较器能产生方波用来产生脉冲信号。ad9834在3v时只有20mw的功耗,对功耗要求高的来说是一个较好的选择。提供了相位调制和脉冲调制的功能。有28位的频率寄存器;75mhz的时钟频率,分辨率为0.28hz,1mhz时为0.004hz。频率和相位调制由存储寄存器决定,可以通过软件或是通过fselect和pselect两个管脚操作串行口或修改存储器。ad9834用三个串口写入数据。串口的操作时钟频率最高达到40mhz,并且

36、有dsp和微控制器标准兼容。其引脚图2-6如下:图2-6 ad9834引脚图ad9834各个引脚定义及功能说明:fs adjust(1脚):全面调控。在此脚与agnd有个电阻rset。这决定了整个da转换的电流的幅度。电流和rset的关系:ioutfullscale=18*fsadjust/rsetfsadjust=1.15v(额定),rest=6.8 k(典型值)refout(2脚):输出参考电压。芯片内已有一个1.2v的电压参考值comp(3脚):da转换偏压。用来耦合偏置电压avdd(4脚):模拟部分正极电源。范围2.3v5.5v,在avdd和agnd之间应加一个0.1uf的去耦电容。d

37、vdd(5脚):数字部分正极电源。cap/2.5v(6脚):数字电路运行在2.5v下。此电源产生于dvdd,用的是板上调节器。这个调节器需要一个100nf的去耦电容,接在此脚和dgnd间,如果dvdd=2.7v,那么此引脚应与dvdd短接。dgnd(7脚):数字的接地。mclk(8脚):数字时钟输入端。dds输出地频率表述为主时钟频率的二进制小数形式。此输出地频率精确度和相位噪声由这个时钟决定。fselect(9脚):频率选择输入端。fselect控制频率寄存器,freq0、freq1,这用在相位累加器。要用的频率寄存器可以由fselect或fsel位来选择。当fsel位选择频率寄存器时,则f

38、select接于coms 的高或低。pselect(10脚):相位选择输入端,pselect控制相位寄存器,phase0/phase1,增加到相位累加器的输出,要用相位寄存器时可由fselect脚或psel位来选择,当由fsel位控制时,fselect脚应接在cmos的高或低。reset(11脚):激活高数字输入端。此引脚复位相应的内部寄存器置0,这相当于部分模拟输出。reset不会影响地址存储器。sleep(12脚):激活高位数字输入端,当此引脚置高,da转换关闭。此引脚一样有控制sleep12位的功能。sdata(13脚):数据串口输入端。16位数据由此输入。sclk(14脚):串行时钟输

39、入。sclk的每个下降沿就将一位输入ad9834。fsync(15脚):激活地位控制输入端。此为输入数据的帧同步信号。当fsync拉低,内部逻辑电路就会告知芯片一位新的字节进入了。sign bit out(16脚):逻辑输出。此引脚可以输出比较器的输出,也可输出来自nco的msb,在寄存器置位popbiten可以使能此脚,dign/pib为决定是比较器输出还是来自nco的msb输出。vin(17脚):比较器输入端。比较器能够由正弦波da转换的输出产生方波。在接入比较器之前da的输出应适当滤波以减小抖动。当置位opbiten和sign/pib寄存器以置1,比较器输入接vinagnd(18脚):模

40、拟的接地。iout(19脚),ioutb(20脚):电流输出。这是一个高阻抗电流源。像200电阻接于iout和agnd之间。ioutb应该在agnd之间接200的外部电阻,也可直接接agnd,建议在agnd间接一个20pf电容防止时钟馈通。第3章 硬件电路的设计硬件电路主要包括单片机主控电路,液晶显示电路,ad9834电路,按键电路,增益可控电路。第3.1节 单片机主控电路及液晶显示电路用stc89c52的p2口作为数据线,用p3.2、p3.1、p3.0分别作为lcd的e、r/w、rs。其中e是下降沿触发的片选信号,r/w是读写信号,rs是寄存器选择信号本模块设计要点如下:显示模块初始化:首先

41、清屏,再设置接口数据位为8位,显示行数为1行,字型为57点阵,然后设置为整体显示,取消光标和字体闪烁,最后设置为正向增量方式且不移位。向lcd的显示缓冲区中送字符,程序中采用2个字符数组,一个显示字符,另一个显示电压数据,要显示的字符或数据被送到相应的数组中,完成后再统一显示.首先取一个要显示的字符或数据送到lcd的显示缓冲区,程序延时2.5ms,判断是否够显示的个数,不够则地址加一取下一个要显示的字符或数据。lcd1602与stc89c52的接口电路图如下图3-1所示:图3-1 lcd1602与stc89c52的接口电路图第3.2节 ad9834电路ad9834电路设计的时候要注意好,以便模

42、拟和数字部分能分离固定在板子的确定部分,这可以使接地面便利的分离开。最小的刻板技术一般对接地面很好,因为它给接地面很好的防护。数字信号和模拟信号的地只需接在一个地方。如果ad9834是单个设备需要agnd和dgnd连接,板上的地面应该在ad9834的agnd和dgnd脚连接如果ad9834在一个系统中复杂的设备要agnd和dgnd连接,连接应该在一个点上,尽可能在ad9834附近建立一个中性点。ad9834电路设计图如图3-2所示:图3-2 ad9834电路的电路图第3.3节 按键电路图3-3按键电路的电路图按键电路设计图如上图3-3所示。把单片机的p2.0p2.7端口通过8联拨动拨码开关连接

43、到“4*4行列式键盘”,其中p2.0-p2.3作为列线,p2.4-p2.7作为行线,系统首先通过cpu对全部键盘进行扫描,即把第一根行线置为“0”状态,其余行线置于“1”状态,读入输入缓冲器的状态,若其状态全为“1”表明该行无键按下,再将第二根行线置为“0”状态,同样读入输入缓冲器的状态,如其状态也全为“1”,则置第一根行线置为“0”状态,以此类推。如读入输入缓冲器的状态不全为“1”,确定哪一根列线为“0”状态,当某个键的行线和列线都为“0”状态时,表明该键按下。第3.4节 增益可控电路由于要使输出幅度可调,因为在dds的输出端加上了一个增益可变的放大器,由于使用的是单电源进行供电,因此需要把

44、信号先耦合到电源的中心点,设计中通过一个电位器改变运放反向端到地的阻抗从而改变增益,电路图如图3-4所示:图3-4 增益可控模块的电路图第4章 系统软件设计第4.1节 keil软件的介绍keil c51是美国keil software公司出品的51系列兼容单片机c语言软件开发系统,与汇编相比,c语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。keil提供了包括c编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uvision)将这些部分组合在一起。运行keil软件需要win98、nt、win2000、winxp等操作系统。如

45、果使用c语言编程,那么keil几乎就是不二之选了,即使不使用c语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。keil c51软件提供丰富的库函数和功能强大的集成开发调试工具,全windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到keil c51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。c51工具包的整体结构,uvision与ishell分别是c51 for windows和for dos的集成开发环境(ide),可以完成编辑、编译、连接、调试、仿真等整个开发流程。

46、开发人员可用ide本身或其它编辑器编辑c或汇编源文件。然后分别由c51及c51编译器编译生成目标文件(.obj)。目标文件可由lib51创建生成库文件,也可以与库文件一起经l51连接定位生成绝对目标文件(.abs)。abs文件由oh51转换成标准的hex文件,以供调试器dscope51或tscope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如eprom中。keil c51软件的优点有以下两点: 1.keil c51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 与汇编相比,c语言在功能上

47、、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用c来开发,体会更加深刻。keil c51软件提供丰富的库函数和功能强大的集成开发调试工具,全windows界面。第4.2节 系统软件的整体设计系统软件由主程序和产生波形的子程序组成,软件设计主要是产生各种波形的子程序的编程,通过编程可得到各种波形。周期的改变可采用插入延时子程序的方法来实现。主程序流程图如图4-1所示:图4-1 主程序流程图第4.3节 程序设计原理软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了。软件任务分析环节是为软件设计做一个

48、总体的规划。从软件的功能来看可分为两大类:一类是执行软件,它能完成各种实质性的功能,如测量、显示、计算、打印、通信和输出控制等,另一类是监控软件,它是专门用来协调各执行模块与操作者之间的关系的,在系统软件中充当组织调度角色。这两类软件的设计方法各有特色,执行软件的设计偏重算法效率,与硬件关系密切,千变万化。软件任务分析时,应先将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义(输入输出定义)。在各执行模块进行定义时,将要牵扯到的数据结构和数据类型问题也一并规划好。各执行模块规划好后,就可以监控程序了。首先根据系统功能和键盘设置选择一种最适合的监控程序结构。相对来讲,执行模块任务明确

49、单纯,比较容易编程,而监控程序较易出问题。这如同当一名操作工人比较容易,而当一个厂长就比较难了。软件任务分析的另一个内容是如何安排各个执行模块和监控软件。整个系统软件可分为前台程序和后台程序(背景程序)。前台程序安排一些实时性要求较高的内容,如定时系统和外部中断(如掉电中断);而后台程序指主程序及其调用的子程序,这类程序对实时性要求不是太高,延误几十ms甚至几百ms也没关系,所以通常将监控程序(键盘解释程序),打印程序和显示程序等,与操作者打交道的程序放在后台程序中执行。不过也可以将全部程序均安排在前台,后台程序为“使系统进入睡眠状态”,以利于系统节电和抗干扰。第4.4节 信号产生的程序ad9

50、834通过时序控制产生信号,产生波形的程序如下:void ad9834(unsigned char type,unsigned long freq,unsigned int phase)unsigned int phaseword;unsigned long freqword=(unsigned long)(freq * 3.57913941333 + 0.5); /228/75000000=5.36870912unsigned int lsb = (freqword % 0x4000) + 0x4000; /低14位 unsigned int msb = (freqword / 0x4000

51、) + 0x4000; /高14位 switch(type) case 0: writedat(0x2038); /正弦波 break; case 1: writedat(0x2002); /三角波 break; case 2: writedat(0x2020); /方波,0x2080输出msb,0x2020输出msb/2 break; writedat(lsb); /写freq0 reg 的lsb writedat(msb); /写freq0 reg 的msb phaseword = (unsigned int)(phase % 360 * 2048 / 3.1415926 + 0.5);w

52、ritedat(0xc000 + phaseword);#ifndef _ad9834_h_#define _ad9834_h_#includesbit ad9834_sync=p25; sbit ad9834_sclk=p26; sbit ad9834_din=p27; void ad9834(unsigned char type,unsigned long freq,unsigned int phase);#endif第5章 系统调试第5.1节 硬件调试信号发生器系统的电路较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出现一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于

53、各种锋利的引脚要注意处理,否则会刺破带有包皮的导线,则会对电路造成短路现象。在本波形发生器的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:最开始的时候ad9834编写程序驱动后没有输出波形解决:经过查找相关资料,知道ad9834最大支持的时钟频率是75mhz,而我使用的是100mhz的晶振,后来换成75mhz便成功输出。第5.2节 软件调试信号发生器是多功能的数字型系统,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:1烧入程序

54、后,lcd液晶显示闪动,而且亮度不均匀。解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品是使用动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在返回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。2当用户按下按键的时候,单片机读取的数值跟设定的数值不对。解决:重新检查矩阵键盘电路的连接,重新建立一个新的对应关系。第5.3节 调试结果在测试中遇到lcd液晶为不显示时,首先使用试测仪对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏. 经过一系列的问题查找后系统最终能正常工作,并完成了波形发生

55、器的基本功能。不同频率时产生的波形如下图所示。频率为10hz时的方波波形如图5-1所示:图5-1 频率为10hz时的方波波形频率为10hz时的三角波波形如图5-2所示:图5-2 频率为10hz时的三角波波形频率为10hz时的正弦波波形如图5-3所示:图5-3 频率为10hz时的正弦波波形频率为1khz时的方波波形如图5-4所示:图5-4 频率为1khz时的方波波形频率为1khz时的三角波波形如图5-5所示:图5-5 频率为1khz时的三角波波形频率为500khz时的正弦波波形如图5-6所示:图5-6 频率为1khz时的正弦波波形频率为1mhz时的方波波形如图5-7所示:图5-7 频率为1mhz

56、时的方波波形频率为1mhz时的三角波波形如图5-8所示:图5-8 频率为1mhz时的三角波波形频率为1mhz时的正弦波波形如图5-9所示:图5-9 频率为1mhz时的正弦波波形结论通过这次毕业设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。经过我长时间的设计及调试,本系统基本能实现波形发生器的所有功能。不足之处有:1.硬件的稳定性有待进一步提高2.系统人性化还不足。我的综合设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件开发能力都获得了提高。首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。基本掌握了protel99se原理图的方法,并设计了一个单片机最小系统。通过开发板的设计和硬件搭建的过程,使我对51系单片机的接口有了更深层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法,如lcd液晶,键盘等。并且我学会了分析问题解决问题的能力,加深了对所学理论知识的理解和

温馨提示

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

评论

0/150

提交评论