ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:702.44KB ,
资源ID:6473844      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6473844.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的DDS函数信号发生器.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的DDS函数信号发生器.docx

1、基于单片机的DDS函数信号发生器 本科毕业论文设计 基于单片机的DDS函数信号发生器题 目: 专业名称: 学生姓名: 学生学号: 指导老师: 毕业时间: 【内容摘要】信号发生器常被用来当作信号发生源,它可以产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波,并且各波形的幅度和频率可调,正是因为信号发生器可以产生各种波形的信号,因此在在电路实验和设备检测生产实践和科技领域中都有着广泛的应用。本系统主要包括四个部分,电源供电,单片机最小系统,DDS,显示。本系统主要用89C52 单片机与DDS器AD9833构成的函数信号发生器,可产生方波、三角波、正弦波,可以由程序控制改波形的周期,并可以通

2、过按钮实现不同波形切换。DDS输出信号的幅值为0-2.5V,频率步进1KHz可调,实际信号频率通过4位数码管显示。对于输出信号幅值的控制,主要是用OP07放大器对其信号放大来实现的。通过OP07放大器可以把DDS输出信号的幅值放大2倍,从而达到了输出波形幅值在0-5V变化。【关键词】:AD9833;89C52;DDS;信号发生器ABSTRACTPlacing signage at signal generator is often used as a signal, it can produce various waveform, such as triangle wave, sawtooth

3、 wave, rectangle wave (including square wave), sine wave, and the wave amplitude and frequency adjustable, it is because the signal generator can produce various waveform signal, therefore in circuit experiment and test equipment in the field of production practice and science and technology has a w

4、ide range of applications.System mainly includes four parts, power supply, single chip microcomputer minimum system, DDS conversion, display. This system mainly USES the 89 c51 and constitute of the DDS converter AD9833 function signal generator, can produce square wave, triangle wave, sine wave, ca

5、n be controlled by the program to change the cycle of the waveform, and can implement different waveform by pressing the button switch. Output signal amplitude of 0-2.5 V, step 1 KHZ frequency is adjustable, the actual signal frequency through the four digital tube display.For control output signal

6、amplitude, main is to use OP07 amplifier for signal amplification. Through the OP07 amplifier can magnify DDS output signal amplitude 2 times, so as to achieve the output waveform amplitude changes in 0 to 5 v.Keywords: AD9833;89C52;DDS converter;signal generator1绪 论1.1 课题研究背景便携式和智能化越来越成为仪器的基本要求,对传统

7、仪器的数字化,智能化,集成化也就明显得尤为重要。平时常用信号源产生正弦波,方波,三角波等常见波形作为待测系统的输入,测试系统的性能。单在某些场合,我们需要特殊波形对系统进行测试,这是传统的模拟信号发生器和数字信号发生器很难胜任的。新型数字信号发生器,利用单片机的强大功能,设计合适的人机交互界面,使用户能够通过手动的设定,设置所需波形1。 1.2 研究内容及意义本文是做基于单片机的信号发生器的设计,将采用编程的方法来实现三角波、方波、正弦波的发生。根据设计的要求,对各种波形的频率进行程序的编写,通过放大器来调幅,并将所写程序装入单片机的程序存储器中。在程序运行中,当接收到来自外界的命令,需要输出

8、某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。1 方案论证1.1单片机选择与论证一、单片机选择:方案一:采用增强型51单片机,内部自带DA方案二:采用MCS-51系列89C52单片机 二、方案论证: 我们在网上找了许多增强型的的单片机,内部自带AD及DA的,但是发现一般内部自带8位的AD及DA,但是一般频率达不到要求,考虑到频率的问题,我们放弃了方案一 方案二采用89C52单片机,89C52具有32个I/O口可以满足对IO口的需求,同时该单片机价格便宜,并且我们对此单片机比较熟悉。 综合考虑,我们选择方案二。1.2 DD

9、S选择与论证 DDS选择方案一:采用我们熟悉的8位DA,DAC0832. 方案二:采用DDS,AD9833.方案三:采用内部自带基准源的12位DA MAX531 方案论证:方案一中选择DAC0832虽符合题目的要求,但是输出精度不高,误差大, 输出的波形不圆滑,与理想的正弦波相差大,所以我们放弃方案一。方案二AD9833为DDS,输出的精度更高,同时也可通程序改进精度,其频率最高可达30M,所以该芯片适合。方案三中MAX531内部自带2.048V基准源,输出精度高,但价格太贵,且频率达不到我们的要求,我们放弃方案三。 综上所述,我们选择方案二2。图1 AD9833引脚图1.3 显示模块 方案一

10、、采用1602液晶屏作为显示模块 方案二、采用数码管作为显示模块 方案论证: 方案一中1602可以显示2行英文字符和数字,电路连接简单,占用单片机I/0口少。缺点是显示字符小,不易看清,价格太高,程序编写复杂。图2 LCD1602实物图 方案二采用数码管至少要4位,则要占用12个I/O口,数码管显示时采用动态扫描功耗较低。显示清楚,易于辨认。程序编写简单,价格低。缺点是显示信息量较少,不能显示符号。图3 4位数码管实物图 综合考虑,我们决定选取方案二。1.4、电源模块的选取 方案一、采用开关电源模块 方案二、自己制作线性电源电路方案论证: 方案一中采用开关电源可以提高整个电流源的效率,体积也会

11、相应的减小,但是开关电源的纹波电压大,电源的纹波电流可能会过大,达不到输出精度的要求。 方案二中自己制作线性电源,线性电源具有纹波电压低的特点。电路中一共要输出两路电源,分别是+15V,+5V我们可以用常用的线性稳压器7815、7805得到稳压的电压输出。 综合上述考虑,我们选择方案二2硬件电路设计2.1硬件设计总体框图图4 硬件设计总体框图2.2 系统原理框图简介 本系统主要包括:电源,单片机最小系统,按键,数码管显示,DDS器,OP07运算放大器6个部分。系统采用5V供电,用户通过按键设定选择所要输出的波形,单片机控制DDS输出相关的波形,DDS输出的信号经过运算放大器放大信号幅值,然后输

12、出,信号的频率通过数码管显示。输出的波形类型通过LED状态灯来显示。2.3 电源电路设计图5电源电路供电电路采用的是直流线性稳压器组成。一般直流稳压电源的组成如图2-3所示图 6 直流稳压电源组成图分析: 交流电经过变压器变压得到电压UAC,根据单相桥式整流电路的特性,我们可以计算出整流以后的电压UO3。 UO是整流电路的输出端电压瞬时值在一个周期内的平均值,即 Uo= (公式一)图2-4 整流波形图 根据上图中的波形可得UO= (公式二)二极管正向平均电流:桥式整流电路 两组整流二极管交替导通,由上较长的波形图可以看出,流过每个二极管的平均电流等于输出电流的一半。即(公式三) 滤波电容和整流

13、二极管的选择,在未加滤波电容之前,整流二极管有半个周期处于导通状态,二极管的导通角=。而接入滤波电容后,二极管只在电容器充电时才导通,导通角。由于滤波后输出平均电流增大,而二极管的导通角反而减小,所以流过二极管的瞬时电流很大。这对管子的寿命极为不利。因此必须选用较大容量的整流二极管。通常应选 择其电大平均整流电流IF大于负载电流IO的2-3倍4。 整流滤波后的直流电压UI接在输入端和公共端之间,在输出端可以获得稳定的输出电压UOUT,正常工作时,输入输出电压差为2-3V。 图2-2中,若7815输出的电压接7805,则7805两端的电压差为10V,若流过7805的电流过大,则7805上的功耗就

14、会很大,发热量大时,若没有很好的散热措施,很容易将7805烧坏,所以必须加一个稳压块7809进行缓冲,这个7805两端的电压差变为4V,这样在7805上消耗的功率就会相应的变小,功率也会变小5。 图2-2中电解电容的作用是改善负载的瞬态响应,瓷片电容主要是抵消因为长线传输引起的电感效应; 用一片7815得到稳定电压+15V给集成运算放大器供电,7809输出的9V再经一片7805得到5V的输出,供给单片机和DDS等数字芯片。供给功率管的电源采用另外一个供电电路,主要是为了防止数字电路与模拟大功率器件之前的相互干扰。图 7 PCB地线布线规则同时在PCB走线时,将数字地和模拟地分开走线,最后通过一

15、个0欧电阻连在一起。最大限度的减小相互之间的干扰。2.4 单片机最小系统设计本系统主要采用AT89C52单片机,AT89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C52产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89C52为众多嵌入式控制应用系统提 供高灵活、有效的解决方案6。 2.4.1 单片机主控电路图8 单片机最小系统 图2-6中,LED1-LED4是输出波形状态

16、指示灯,P0口接的是数码管的段,P2口低4位接数码管的位选,高三位接DDS器AD9833,SW1-SW6是接按键,X1,X2是单片机时钟电路,RST是单片机复位电路。2.4.2单片机最小系统组成单片机最小系统是指单片机能工作的最基本的系统,89C52单片机的最小系统主要包括以下几个部分:4V-5.5V的数字电源,时钟,复位,此外由于我们是从单片机内部存储器读取程序,所以单片机的EA引脚必须接为高电平。电源部分是通过7805三端稳压芯片得到5V电源。在单片机的电源端必须接一个瓷片电容,主要起退耦作用,以使单片机能稳定工作。时钟电路主要是提供单片机内部时钟信号,产生单片机所必须的时钟频率,单片机的

17、一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。本系统主要采用的是12M晶振,配合2个30pF的电容构成晶体振荡电路。为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路首先是进行上电复位,复位电路旁边的1uF电容在上电瞬间给RST端一个瞬时的高电平信号,当这个电容上面的电量充满时高电平的信号将回落,即RST端的高电平信号保持的时间是由外部这个充电电容决定的。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被

18、定义的位置开始执行程序,此时会造成单片机在上电的瞬间出现不稳定的情况发生,所以为了能让单片机稳定的工作,必须提供必要的复位电路。2.5 DDS输出设计 DDS输出主要采用DDS控制芯片AD9833。AD9833是一款低功耗、可编程波形发生器,可以产生正弦波、三角波、方波。 输出频率和相位可软件编程,很容易调整,而不需要外部组件。频率寄存器是28 位的,如果是25M 的时钟源,经过编程可以得到0.1Hz 的时钟;同样如果是1M 的时钟源,可以得到0.004Hz 的时钟。 AD9833通过 3 线串口进行写操作。串口工作时钟频率高达 40M ,并与 DSP 和微处理器标准兼容。其工作电压在2.3V

19、 5.5V 之间。 AD9833 还具有休眠功能,可使没被使用的部分休眠,减少该部分的电流损耗,例如,若利用AD9833 输出作为时钟源,就可以让DAC休眠,以减小功耗,该电路采用10引脚MSOP 型表面贴片封装,体积很小。图9 AD9833引脚图2.5.1芯片简介 AD9833是ADI公司生产的一款低功耗,可编程波形发生器,能够产生正弦波、三角波、方波输出。波形发生器广泛应用于各种测量、激励和时域响应领域,AD9833无需外接元件,输出频率和相位都可通过软件编程,易于调节,频率寄存器是28位的,主频时钟为25MHz时,精度为0.1Hz,主频时钟为1MHz时,精度可以0.004Hz7。2.5.

20、2 DDS信号发生器的组成AD9833是一块完全集成的DDS(Direct Digital Frequency Synthesis)电路,仅需要1个外部参考时钟、1个低精度电阻器和一个解耦电容器就能产生高达12.5MHz的正弦波。除了产生射频信号外,该电路还广泛应外于各种调制解调方案。这些方案全都用在数字领域,采用DSP技术能够把复杂的调制解调算法简化,而且很精确9。2.5.3 DDS原理及应用AD933的核心是28位的相位累加器,它由加法器和相位寄存器组成,每来1个时钟,相位寄存器以步长增加,相位寄存器的输出与相位控制字相加后输入到正弦查询表地址中。正弦查询表包含1个周期正弦波的数字幅度信息

21、,每个地址对应正弦波中0360范围内的1个相位点。查询表把输入的地址相位信息映射成正弦波幅度的数字量信号,去DAC输出模拟量,相位寄存器每经过228/M个MCLK时钟后回到初始状态,相应地正弦查询表经过一个循环回到初始位置,这样就输出了一个正弦波。输出正弦波频率为:fOUTM(fMCLK/228) (1)其中,M为频率控制字,由外部编程给定,其范围为0M2281。VDD引脚为AD9833的模拟部分和数字部分供电,供电电压为2.3V5.5V。AD9833内部数字电路工作电压为2.5V,其板上的电压调节器可以从VDD产生2.5V稳定电压,注意:若VDD小于等于2.7V,引脚CAP/2.5V应直接连

22、接至VDD10。 2.6数码管显示电路图14 数码管显示电路2.6.1 数码管显示分析 显示电路为四位数码管,用来显示实时波形的频率。通过数码管上的显示,我们可以清楚的知道当前波形的频率,以及工作的状态。并可以通过按键来调节实时的工作频率。在实际的单片机系统中,往往需要多位显示。动态显示应用非常广泛是一种最常见的多位显示方法,。用数码管显示测得的数据,数码管有8段而每段必需占用一个单片机的IO口,所以一位数码管必须占个单片机IO口,本次设计采用4位数码管,则需要32个I/O 口,而89C52单片机的I/O 口只有32个。动态显示能够很好的解决数码管占用单片机IO口过多的问题。所有数码管的段选全

23、部连接在一起,如何能显示不同的内容呢?动态显示的原理是多位数码管,交替来进行显示,利用人的视觉暂留效果使人看到好像有多个数码管同时显示。在编程时,要用单片机控制段选和位选,所谓的位选是选中其中一个数码管,然后利用单片机输出段码,需要显示的数字就能显示在这位数码管上了,延时一段时间后,再选中另一个数码管,再输出对应的段码,高速交替。在动态显示程序中,各个位的延时时间长短是非常重要的,如果延时时间长,则会出现闪烁现象;如果延时时间太短,则会出现显示发暗且有重影。 静态驱动就是给单独每一个LED供电。这样每个LED都有足够的电流,亮度也相应的比较高。动态扫描驱动就是把本来供给一个LED灯的电流,同时

24、分给了N个灯,所以它的亮度会有所降低。当然在同时供给两个led灯电流时不是平均的分配电流,而是led间扫描期间电流不断地交替,扫描的频率依据单片机的速度决定,也就是说各位的数码管上的电流在扫描频率内是供个其中一个led,在下一个扫描频率内是供给了另一个led12。若我们想让这个4位数码管的每段工作时的电流为8mA.Uled为正常工作时的电压取1.7V。所以我们选取100欧的限流电阻。这样每个LED工作时的电流约为8mA.在保证LED能亮的同时不会被烧坏。2.7 按键电路 图2-14为键盘接口电路的原理图,图中按键在未按下时,通过一个电阻接到高电平,当按下时,按键导通。连接单片机的IO口接地变成

25、低电平。当单片机检测到按键变为低电平时,进行频率的切换。图15 按键电路3 软件设计3.1软件设计总流程图图16 软件流程图D9833有一个标准串行接口,可以与一些微处理器直接连接,用外部串行时钟来往自身写数据和控制信息,串行时钟频率最高可达40MHz,在写操作的过程中可能是连续的,也可能一直保持高电平或低电平。如果有数据/控制信息写入AD9833,FSYNC在16位信息写进AD9833的过程中一直保持低电平。FSYNC信号显示16位信息被写入AD9833。 3.2 波形输出软件设计 当数据传输要到AD9833时,P3.3置低电平。80C51/80L51 8-bit字节形式传输数据,所以每次传

26、输只需要SCLK下降沿。为把数据写入AD9833,第个8-bit数据传输完毕以后P3.3依然要保持低电平,接着初始化下一个字节的的写操作。结束后,P3.3被置高电平。在两次写操作的过程中,SCLK必须一直保80C51/80L51本来是以LSB 在前的格式输出串行数据的。但是AD9833首先接受的是MSB(目标寄存器写时,首先4个MSB是控制信息,接下来4个是地址,8个LSB才是数据)。因此,80C51/80L51的传输例程必须考虑到这点,重新安排位序,让MSB先输出3.2.1 方波产生软件设计 frequency_fun(500000,0x4000);/设定reg0为500k frequenc

27、y_fun(100000,0x8000);/设定reg1为100k write_ad9833_d16(0x2002);/调用reg0频率数据,输出三角波 display_data3=10;display_data2=5;display_data1=0;display_data0=0; delay10s(); write_ad9833_d16(0x2802);/reg1 display_data3=10;display_data2=1;display_data1=0;display_data0=0; delay10s(); frequency_fun(50000,0x4000);/50k,reg

28、0 frequency_fun(20000,0x8000);/20k,reg1 write_ad9833_d16(0x2002);/reg0 display_data3=10;display_data2=10;display_data1=5;display_data0=0; delay10s(); write_ad9833_d16(0x2802);/reg1 display_data3=10;display_data2=10;display_data1=2;display_data0=0; delay10s(); frequency_fun(10000,0x4000);/10k,reg0 fr

29、equency_fun(5000,0x8000);/5k,reg1 write_ad9833_d16(0x2002);/reg0 display_data3=10;display_data2=10;display_data1=1;display_data0=0; delay10s(); write_ad9833_d16(0x2802);/reg1 display_data3=10;display_data2=10;display_data1=10;display_data0=5; delay10s(); frequency_fun(2000,0x4000);/2k,reg0 frequency

30、_fun(1000,0x8000);/1k,reg1 write_ad9833_d16(0x2002);/reg0 display_data3=10;display_data2=10;display_data1=10;display_data0=2; delay10s(); write_ad9833_d16(0x2802);/reg1 display_data3=10;display_data2=10;display_data1=10;display_data0=1; delay10s(); /输出方波波形 frequency_fun(1000000,0x4000);/500k,reg0 fr

31、equency_fun(200000,0x8000);/100k,reg1 write_ad9833_d16(0x2020);/reg0 display_data3=10;display_data2=5;display_data1=0;display_data0=0; delay10s(); write_ad9833_d16(0x2820);/reg1 display_data3=10;display_data2=1;display_data1=0;display_data0=0; delay10s(); frequency_fun(100000,0x4000);/50k,reg0 frequency_fun(40000,0x8000);/20k,reg1 write_ad9833_d16(0x2020);/reg0 display_data3=10;display_data2=10;display_data1=5

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1