波形发生器设计报告.doc_第1页
波形发生器设计报告.doc_第2页
波形发生器设计报告.doc_第3页
波形发生器设计报告.doc_第4页
波形发生器设计报告.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

波形发生器设计报告摘要波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。函数信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。通过对函数波形发生器的原理以及构成分析,可设计一个能变换出三角波、正弦波、方波的函数波形发生器。目前使用的信号发生器大部分是函数信号发生器,且特殊波形发生器的价格昂贵。所以本设计使用的是DAC0832、ICL8038构成的发生器,可产生方波、正弦波等多种特殊波形和任意波形,波形的频率可用程序控制改变。在单片机上加外围器件独立式键盘,通过键盘控制波形频率的增减、波形幅度的大小以及波形的选择,并用了LCD显示频率大小、波形的种类。在单片机的输出端口接DAC0832进行D/A转换,通过运放进行波形调整,再通过ICL8038函数发生器,最后输出波形。本设计具有线路简单、结构紧凑、价格低廉、性能优越等优点。本设计制作的波形发生器是基于STC89C54RD+单片机可调频发生器,可以输出多种不同频率方波、正弦波,输出的波形的频率、幅度均可调,且操作方便。关键词:波形发生器;DAC0832;IC8038;单片机一、方案论证41.1设计要求41.2方案论证4二、硬件系统的设计52.1整体框架图52.2电源模块设计52.2.1 电源原理52.2.2 芯片介绍62.3输入模块设计72.3.1按键控制模块72.3.2时钟复位电路72.4 输出模块设计102.4.1 LCD显示模块原理102.4.1 LCD1602芯片介绍102.5 DA转换模块设计112.5.1 DA转换模块原理112.5.2 DAC0832芯片介绍122.6 ICL8038函数信号发生模块设计132.6.1 ICL8038函数信号发生模块原理132.6.2 ICL8038芯片介绍14三、软件设计163.1输入模块编程163.2 输出模块编程173.3 DA转化模块编程17四、仿真与调试194.1硬件调试194.1.1电气调试194.1.2 波形调试194.1.3波形频率范围调试204.1.4 波形幅度范围调试204.1.5 失真度调试204.2 软件调试21五、心得体会22附录一:23一、方案论证1.1设计要求1)信号发生器能产生正弦波、方波;2)输出的频率在100HZ-100KHZ的范围内可调;3)在1000欧负载的条件下,输出正弦波信号的电压峰-峰值Vopp在0-5V的范围可调;4)输出信号的波形无明显失真;5)可实时显示输出信、幅度、频率和频率步进值;1.2方案论证信号发生器的实现方法通常有以下几种:方案一:用分立元件组成的函数发生器,通常是单函数发生器且频率不高,其工作不很稳定,不易调试。方案二:可以由晶体管、运放IC等通用数字元器件制作,更多的则是用专门的函数信号发生器IC产生。早期的函数信号发生器IC,如L8038、BA205、XR2207/2209等,它们的功能较少,精度不高,频率上限只有300kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。方案三:利用专用直接数字合成DDS芯片的函数发生器,能产生任意波形并达到很高的频率。但成本较高。方案四:采用STC89C54RD+单片机和DAC0832芯片、ICL8038芯片,直接连接键盘和显示。该种方案主要对STC89C54RD+单片机的各个I/O口充分利用。 P3口是连接键盘,P0口接LCD显示电路,P1口连接DAC0832输出波形。这样总体来说,能对单片机各个接口都利用上,而不再多用其它芯片,从而减小了系统的成本。也对按照系统便携式低频信号发生器的要求所完成。占用空间小,使用芯片少,低功耗。综合考虑,方案四各项性能和指标都优于其他几种方案,能使输出频率有较好的稳定性,充分体现了模块化设计的要求,而且这些芯片及器件均为通用器件,在市场上较常见,价格也低廉,样品制作成功的可能性比较大,所以本设计采用方案四。二、硬件系统的设计2.1整体框架图设计框架如图1所示:图1 设计框架由按键控制MCU控制输出不同的数字量,经过DA转换模块和ICL8038输出不同波形,由LCD显示是波形的种类和频率、幅度的大小。2.2电源模块设计2.2.1 电源原理降压整流滤波稳压输出图2 电源框架图该电路通过变压器将220v的交流电变成21v的交流电,通过桥式整流变成直流电。经滤波稳压后获得稳定的直流电,实际电路如图3所示:图3 实际电路本系统中单片机系统要用到5V电源,函数信号发生器要用到15V电源,所以设计电源电路要考虑电源可以通过LM317稳压芯片对电压进行调整。可输出15V直流电压,因为STC89C54RD+工作电压是5V,所以又经过7805稳压芯片获得5V稳定直流电给MCU进行供电。2.2.2 芯片介绍LM317是美国国家半导体公司的三端可调正稳压器集成电路。我国和世界各大集成电路生产商均有同类产品可供选用,是使用极为广泛的一类串联集成稳压器。LM317 的输出电压范围是1.2V 至37V,负载电流最大为1.5A。它的使用非常简单,仅需两个外接电阻来设置输出电压。此外它的线性调整率和负载调整率也比标准的固定稳压器好,图4是LM317的引脚图:图4 LM317的引脚图7805是一种三端正电源稳压电路。它固定输出5V电压,能提供最大输出1.5A的电流,有过载和过短保护,图5是7805的引脚图:图5 7805的引脚图2.3输入模块设计2.3.1按键控制模块按键输入模块如图6所示:图6 按键输入模块按键控制部分主要是来控制MCU输出的波形的种类和频率、幅度的大小。这个波形切换的按键主要是控制输出正弦波和方波,这里使用外部中断0,能让它随时就可以转换波形。调频按键是用来改变输出波形的频率,这里使用外部中断1,可以随时改变输出波形的频率。介于51单片机只有两个外部中断,所以调幅按键只能用扫描的方式来改变幅度。2.3.2时钟复位电路时钟复位电路原理图如图7:图7 时钟复位电路该时钟方式采用片内时钟振荡方式,外接石英晶体和振荡电容。EA(30脚)接高电平时,单片机读取内部程序存储器,接低电平时直接读取外部数据。单片机STC89C54RD+引脚功能图如图8:图8 单片机引脚CPU结构(一)单片机内部结构1)运算器 运算器以完成二进制的算术/逻辑运算部件ALU为核心。它可以对半字节、单字节等数据进行操作。例如,能完成加、减、乘、除、加1、减1、BCD码十进制调整、比较等算术运算,完成与、或、异或、求反、循环等逻操作,操作结果的状态信息送至状态寄存器。运算器还包含有一个布尔处理器,用以处理位操作。它以进位标志位C为累加器,可执行置位、复位、取反、位判断转移,可在进位标志位与其他可位寻址的位之间进行位数据传诵等操作,还可以完成进位标志位与其他可位寻址的位之间进行逻辑与、或操作。程序计数器PC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kB,PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。指令寄存器用于存放指令代码。CPU执行指令时,由程序存储器中读取的指令代码送如指令寄存器,经指令译码器译码后由定时有控制电路发出相应的控制信号,完成指令功能。2)存储器和特殊功能寄存器存储器是计算机系统中的记忆设备,用来存放程序和数据。计算机中的全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。特殊功能寄存器的地址范围为80HFFH。在MCS51中,除程序计数器PC和四个工作寄存器区外,其余21个特殊功能寄存器都在这SFR块中。其中5个是双字节寄存器,它们共占用了26个字节。各特殊功能寄存器的符号和地址见附表2。其中带号的可位寻址。特殊功能寄存器反映了8051的状态,实际上是8051的状态字及控制字寄存器。用于CPU PSW便是典型一例。这些特殊功能寄存器大体上分为两类,一类与芯片的引脚有关,另一类作片内功能的控制用。与芯片引脚有关的特殊功能寄存器是P0P3,它们实际上是4个八位锁存器(每个I/O口一个),每个锁存器附加有相应的输出驱动器和输入缓冲器就构成了一个并行口。MCS51共有P0P3四个这样的并行口,可提供32根I/O线,每根线都是双向的,并且大都有第二功能。其余用于芯片控制的寄存器中,累加器A、标志寄存器PSW、数据指针DPTR等的功能前已提及。(二)引脚功能P0口功能:P0口具有两种功能:第一,P0口可以作为通用I/O接口使用,P0.7P0.0用于传送CPU的输入/输出数据。输出数据时可以得到锁存,不需外接专用锁存器,输入数据可以得到缓冲。第二,P0.7P0.0在CPU访问片外存储器时用于传送片外存储器de低8位地址,然后传送CPU对片外存储器的读写P1口 功能:P1口的功能和P0口de第一功能相同,仅用于传递I/O输入/输出数据。 P2口的功能:2口的第一功能和上述两组引脚的第一功能相同,即它可以作为通用I/O使用。它的第二功能和P0口引脚的第二功能相配合,作为地址总线用于输出片外存储器的高8位地址。 P3口功能:P3口有两个功能:第一功能与其余三个端口的第一功能相同;第二功能作控制用,每个引脚都不同。 P3.0RXD串行数据接收口 P3.1TXD串行数据发送口 P3.2INT0外中断0输入 P3.3INT1外中断1输入 P3.4T0计数器0计数输入 P3.5T1计数器1计数输入 P3.6WR外部RAM写选通信号 P3.7RD外部RAM读选通信号 2.4 输出模块设计2.4.1 LCD显示模块原理图9 LCD显示LCD显示能灵活的显示不同的字符,所以用LCD1602显示所要显示的设计要求。从而更加明了的表达输出信号的种类和频率、幅度的大小以及步进值,让使用更方便。2.4.1 LCD1602芯片介绍(一)LCD1602内部结构1)基本操作时序读状态(输入):RS=0, R/W=1,E=1,输出:D0D7 状态字。读数据(输入):RS=1, R/W=1,E=1,输出:无。写指令(输入):RS=0, R/W=0,E=1,输出:D0D7 数据。写数据(输入):RS=1, R/W=1, E=1,输出:无。2)1602液晶模块内部的控制器共有11 条控制指令,屏幕和光标的操作都是通过指令编程来实现的。 指令1:清显示,指令码 01H,光标复位到地址00H 位置。 指令2:光标复位,光标返回到地址00H 。指令3:光标和显示位置设置I/D,光标移动方向,高电平右移,低电平左移。指令4:显示开关控制。 指令 5:光标或显示移位S/C :高电平时显示移动的文字,低电平时移动光标。指令 6:功能设置命令DL:高电平时为 4 位总线,低电平时为 8 位总线。指令 7:字符发生器 RAM地址设置。 指令 8:DDRAM 地址设置。 指令 9:读忙信号和光标地址 BF:忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙。(二) LCD1602引脚功能LCD1602引脚功能图如图10:图10 LCD1602的引脚图VSS:地电源VDD:接5V正电源VEE:为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。RS:为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。RW:为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。E:端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。D0D7:为8位双向数据线。2.5 DA转换模块设计2.5.1 DA转换模块原理DA转换模块如图11:图11 DA转换模块这是波形发生器的核心部分,主要是将MCU的数据转换成模拟量。从而产生波形,然后通过运放将其放大。2.5.2 DAC0832芯片介绍 (一)DAC0832内部结构DAC0832内部结构图如图12:图12 DAC0832内部结构图芯片内有两级输入寄存器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。D/A转换结果采用电流形式输出。要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。运放的反馈电阻可通过RFB端引用片内固有电阻,还可以外接。(二)DAC0832引脚功能DAC0832引脚图如图13:图13 DAC0832引脚图DAC0832引脚功能说明:DI0DI7:数据输入线,TLL电平。ILE:数据锁存允许控制信号输入线,高电平有效。CS:片选信号输入线,低电平有效。WR1:为输入寄存器的写选通信号。XFER:数据传送控制信号输入线,低电平有效。WR2:为DAC寄存器写选通输入线。Iout1:电流输出线。当输入全为1时Iout1最大。Iout2: 电流输出线。其值与Iout1之和为一常数。Rfb:反馈信号输入线,芯片内部有反馈电阻。Vcc:电源输入线(+5v+15v)。Vref:基准电压输入线(-10v+10v)。AGND:模拟地,摸拟信号和基准电源的参考地。DGND:数字地,两种地线在基准电源处共地比较好。2.6 ICL8038函数信号发生模块设计2.6.1 ICL8038函数信号发生模块原理函数发生器模块如图14:图14 函数发生器模块2.6.2 ICL8038芯片介绍(一) ICL8038 的主要特点: 1) 可同时输出任意的三角波、矩形波和正弦波等。 2) 频率范围: 0.001HZ300kHz 3) 占空比范围: 2% 98% 4) 低失真正弦波: 1% 5) 低温度漂移: 50ppm/ 6) 三角波输出线性度: 0.1% 7) 工作电源: 5V 12V 或者+ 12V + 25V(二)ICL8038引脚功能ICL8038引脚图15:图15 ICL8038引脚图THD1:正弦波线性调节。OUT(s):正弦波输出。Ra:恒流源调节。Rb:恒流源调节。IN:调频控制输入端。OUT(Q):方波输出端。三、软件设计3.1输入模块编程按键输入模块用到了外部中断0和外部中断1,外部中断0是控制波形切换,外部中断1调频,51单片机只有两个外部中断,所以调幅按键只能用扫描的方式来改变幅度。下面是中断的寄存器的对应设置及扫描语句: IE寄存器D7D6D5D4D3D2D1D0EAEX2ET2ESET1EX1ET0EX0TCON寄存器D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0本设计中对这两个寄存器的设置为:EA=1; IE=0X83;IT0=1; IT1=1;波形切换的典型代码:wave_change=wave_change;if(wave_change) TR0=0; TR1=1; else TR1=0;TR0=1; 调频的典型代码:if(wave_change) TR1=0;is_stop=1;else TR0=0;is_stop=1; T_WAVE_INIT_code_num=T_WAVE_INIT_code_num-1;if(T_WAVE_INIT_code_num=0)T_WAVE_INIT_code_num=29;T_WAVE_INIT=T_WAVE_INIT_codeT_WAVE_INIT_code_num;th=(65536-T_WAVE_INIT)/256; tl=(65536-T_WAVE_INIT)%256; temp=f_codeT_WAVE_INIT_code_num; 调幅的典型代码:real_VPP_num=255.0/10*VPP_num; 3.2 输出模块编程LCD用来显示波形的种类、频率、幅度、步进值,它需要实时显示信号的变量。它的典型代码如下:Display_Buffer10 = temp/100+0; Display_Buffer11 = temp/10%10+0;Display_Buffer12 = temp%10+0;LCD_Write_Command(0xC0); Write_LCD_Data(Display_Buffer10);Write_LCD_Data(Display_Buffer11);Write_LCD_Data(Display_Buffer12);Write_LCD_Data(Display_Buffer13);3.3 DA转化模块编程DA转换模块用T0、T1定时器来控制输出,通过改变定时器的初值来改变波的频率。T0、T1要进行设置TMOD、IE、TCON寄存器。定时/计数器的控制寄存器TCON:位D7D6D5D4D3D2D1D0含义TF1TR1TF0TR0IE1IT1IE0IT0定时/计数器的工作模式寄存器TMOD:位D7D6D5D4D3D2D1D0含义GATEC/TM1M0GATEC/TM1M0T0是用来输出方波,T0中断的典型代码如下:static bit d; TH0=th; TL0=tl; d=d; if(d) DA0832=0x00; else DA0832=real_VPP_num; T1是用来输出正弦波,T1中断的典型代码如下:static uchar b;TH1=th; TL1=tl; DA0832=tosinb;b+;四、仿真与调试4.1硬件调试4.1.1电气调试焊完之后,第一次通电后,发现LCD不显示。然后我就怀疑是不是有些接地和接电的线没有接。我就开始仔细的用万用表去检查各个芯片的接地线,发现STC89C54RD接地的没有和其他的地线连在一起。我第二次通电测试,LCD显示屏还是没有显示,我又继续检查没有检查完的那些接地和接电引脚,又发现LM358接电脚接成了5V的,我就把LM358接电源引脚接到15V的接电引脚,又开始通电,发现还是没有用,我又继续检查没有检查完的接电和接地引脚,仍然没有发现任何问题。我又猜想是不是晶振没有起作用,我又开始检查晶振,发现晶振和电容的位子接反了,我就把原来的晶振和电容焊下来,重新焊过一个新的晶振和电容,并把位子换过来,然后又开始通电测试,发现还是没有显示。我又猜想是不是LCD显示屏的引脚没有接对,又开始检查LCD显示屏的各个引脚有没有接对,最后还是没有发现任何到不对。我又猜想STC89C54RD有没有工作,我又开始检查STC89C54R的主要引脚的工作电压,发现电压比实际的小 !就开始检查STC89C54R的各个引脚,发现EA引脚接触不良,我又把它焊好。又通电测试,发现还是没有用。这时,我想是不是LCD显示屏那个调亮度的滑动变阻器没有调好,我又开始调滑动变阻器,发现LCD显示屏越来越暗,我又开始往相反的方向调,调着调着,我突然发现LCD显示屏有点字迹样子,我调的越来越快啦,最后发现LCD显示屏有显示,我仔细一看,只显示了一半内容。我又开始猜想是不是杜邦线没有插好。我又开始检查各个杜邦线有没有插好,开始重新插过一变,插完后。又开始通电,发现LCD显示屏终于完全可以显示啦!我又开始试试按键,都有用。这时,我心里无比的高兴。这时,我就开始用示波器检查LM358的1号输出脚的波形图,发现输出的矩形波有点失真。我想是不是ICL8038的10号脚接的电容太小啦,我又开始把电容改大一些,发现没有多大的区别,我又想是不是太大,我又开始改小一些,这时,突然发现失真度变得很微小。现在,我又满怀激情的去检测ICL8038的2号脚输出的正弦波,发现失真度也是很大,我想是不是和ICL8038的4、5号脚接的电阻有关,我就开始改变那两个电阻,改小了一些,没有反应,我就开始改大一些试试,发现,效果不错。失真度明显下降。4.1.2 波形调试波形振荡部分调试ICL8038可以产生三种不同的波形, 调试时只需要测芯片不同输出信号的对

温馨提示

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

评论

0/150

提交评论