课程设计(论文)-基于proteus仿真的简易信号发生器的设计.doc

上传人:夺命阿水 文档编号:1253816 上传时间:2024-04-18 格式:DOC 页数:34 大小:1.95MB
返回 下载 相关 举报
课程设计(论文)-基于proteus仿真的简易信号发生器的设计.doc_第1页
第1页 / 共34页
课程设计(论文)-基于proteus仿真的简易信号发生器的设计.doc_第2页
第2页 / 共34页
课程设计(论文)-基于proteus仿真的简易信号发生器的设计.doc_第3页
第3页 / 共34页
课程设计(论文)-基于proteus仿真的简易信号发生器的设计.doc_第4页
第4页 / 共34页
课程设计(论文)-基于proteus仿真的简易信号发生器的设计.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《课程设计(论文)-基于proteus仿真的简易信号发生器的设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)-基于proteus仿真的简易信号发生器的设计.doc(34页珍藏版)》请在课桌文档上搜索。

1、课程设计题 目 基于proteus仿真的简易信号发生器的设计学 院 管理科学与工程学院 专 业 电子信息工程 班 级 学 号 姓 名 摘 要信号发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。 本设计采用AT89C51单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、运放电路(LM324)、按键和LCD液晶显示电路。电路采用单片机和一片DAC0832数模转换器组成数字式低频信号发生器,可产生正弦波、矩形波、锯齿波和三角波四种波形。系统通过单片机产生数字信号,通过DAC0832转换为模拟信号,再通过放大器LM324就可以得到双极性的各种波形,最终由示

2、波器显示出来。通过键盘来控制四种波形的类型选择、频率变化,并通过液晶1602显示其各自的波形类型以及频率数值。本设计硬件电路简单,软件功能完善,控制系统可靠,性价比较高,具有一定的实用价值和参考价值。关键词:AT89C51 单片机; 函数信号发生器;DAC0832;LCD液晶显示AbstractSignal generator is a common signal source, widely used in electronic circuits, automatic control systems and experiments in areas such as teaching. The

3、 design using AT89C51 microcontroller as the control, external digital/analog conversion circuit (DAC0832), op-amp circuit (LM324), buttons and liquid crystal display of 1602. Circuit adopts single-chip microcomputer and a digital-to-analog converters DAC0832 consisting a low frequency signal genera

4、tor, can produce four waveform such as the sine wave, the rectangle wave, the sawtooth wave and the triangle wave. System through the microcontroller create a digital signal, through DAC0832 into analog signals, again through the amplifier LM324 can get dual polarity by various waveform, finally sho

5、wn by An oscilloscope. In this system, through the keyboard to control four waveform type selection, frequency variation, and displays those through liquid crystal display of 1602. In this design, the hardware circuits are simple, software functions are consummate, and the control system is reliable

6、, so it has some practical value and reference value.Keywords:AT89C51;function generator;DAC0832;LCD display目 录1 系统总体设计11.1 系统基本模块设计与论证11.1.1 信号发生模块11.1.2 输出显示模块11.1.3 键盘模块11.1.4 电路设计最终方案21.2 系统原理及总体结构图21.2.1 系统总体结构图21.2.2 系统工作原理22 系统硬件设计32.1 系统硬件仿真原理图32.2 系统主要单元电路设计42.2.1 主控制器AT89C5142.2.2 数/模转换电路7

7、2.2.3 电流/电压转换放大电路112.2.4 液晶显示电路132.2.5 键盘电路153 系统软件设计163.1 系统主程序流程框图163.2 信号产生子程序173.2.1 正弦波发生子程序173.2.2 矩形波发生子程序183.2.3 三角波发生子程序183.2.4 锯齿波发生子程序203.3按键处理子程序203.4液晶显示子程序213.5 INT0中断子程序214 系统调试214.1 系统调试过程224.2 调试中的问题及解决方法224.3 系统仿真结果245 结论285.1 结论28参考文献2851 系统总体设计1.1 系统基本模块设计与论证1.1.1 信号发生模块方案一:利用MAX

8、038芯片组成的电路输出波形。MAX038是精密高频波形产生芯片,能够产生准确的三角波、方波和正弦波三种周期性波形。但此方案成本高,程序复杂度高。方案二:采用分立元件实现非稳态的多谐振振荡器,然后根据需要加入积分电路等构成正弦、矩形、三角等波形发生器。这种信号发生器输出频率范围窄,而且电路参数设定较繁琐,其频率大小的测量往往需要通过硬件电路的切换来实现,操作不方便。 方案三:采用单片机和DAC0832数模转换器生成波形。通过编程的方法来控制输入到数模转换电路的数字量,从而控制输出信号的波形和频率。它的特点是价格低、设计简单,在低频范围内稳定性好、操作方便、体积小、耗电少。经比较,方案三既可满足

9、毕业设计的基本要求又能充分发挥其优势,电路简单,易控制,性价比较高,所以采用该方案。1.1.2 输出显示模块方案一:用数码管进行显示。数码管由于显示速度快,使用简单,显示效果简洁明了而得到了广泛应用。但是由于我们计划显示输出信号波形类型和频率,内容很多。用数码管无法显示如此丰富的内容,因此我们放弃了此方案。方案二:用LCD液晶进行显示。LCD由于其显示清晰,显示内容丰富,显示信息量大,使用方便,显示快速而得到了广泛的应用。对于此系统我们选用的LCD LM016L液晶能够显示英语字母和数字,能够很好的满足显示要求,因此我们选择了此方案。1.1.3键盘模块方案一:采用独立式按键电路,每个按键单独占

10、有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。缺点为当按键较多时占用单片机的I/O口数目较多,优点为电路设计简单,且编程相对比较容易。 方案二:采用矩阵式键盘,键盘为4*4矩阵式行列扫描,优点是当按键较多时可降低占用单片机的I/O口数目。对于此系统,由于按键数目不多,故采用方案一。1.1.4 电路设计最终方案本系统包括主控模块,显示模块,信号发生模块,键盘模块,运放模块,综上各方案所述,确定最终设计方案为:采用AT89C51作为主控制系统,LCD液晶显示作为显示部分,独立式按键作为键盘模块,数模转换芯片DAC0832作为信号发生模块,LM324作为电流/电压

11、转换放大模块。1.2 系统原理及总体结构图1.2.1 系统总体结构图根据上述电路设计的最终方案,系统总体设计结构如图1所示。图1 系统总体结构图1.2.2系统工作原理数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。在本设计中,AT89C51是整个波形发生器的核心部分,外围电路包括数字/模拟转换电路、电流/电压转换放大电路、按键电路、LCD液晶显示电路和晶振电路。外接12MHz晶振电路为单片机提供工作脉冲。单片机的P1口接LCD液晶显示电路,用来显示波形类型和频率大小;P0口接数模转换芯片DAC0832的DI0DI7,为数模转换芯片提供

12、数字信号;P2.0P2.4外接独立键盘,以控制信号的类型、频率等;P3部分口作为LCD的控制信号。通过对单片机编写程序,控制从P0口输出的数字信号类型,P0口的数字信号再输入到数模转换芯片DAC0832中,从而转换为模拟信号输出。DAC0832输出的模拟信号为电流信号,所以用电流/电压运算放大器LM324将电流信号再转换成电压信号输出。用两片LM324可以得到输出波形的双极性输出,将输出的波形与示波器相连即可观察输出波形的特征。独立式键盘可以控制从P0口输出的数字信号,按下不同的键可以使此输出信号改变,从而使输出的波形实现正弦波、矩形波、锯齿波和三角波之间的转变,并能够改变波形输出频率的大小。

13、在此过程中,单片机将信号的类型和频率经过处理后,由P1口送到LCD液晶显示器上进行显示,LCD1602第一行显示信号的类型,第二行显示波形的频率。2 系统硬件设计2.1系统硬件仿真原理图硬件设计是系统设计的重点之一,选择合适的元器件尤为重要。在本设计中,根据设计的总体方案,选择AT89C51作为主控制器、DAC0832为数模转换芯片、LM324为电流/电压转换元件、LM016L为LCD液晶显示元件、5个独立式按键为按键模块元件。本设计在Proteus软件中绘制的硬件电路图如图2所示。图2 硬件仿真原理图2.2 系统主要单元电路设计2.2.1 主控制器AT89C51AT89C51是美国ATMEL

14、公司生产的低电压、高性能CMOS 8位单片机,片内含4KB的可反复擦除的只读程序存储器(PEROM)和128B随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和FLASH存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合。主要性能参数:与MCS-51产品指令系统完全兼容4K字节可重擦写FLASH闪速存储器1000次擦写周期全静态操作:0HZ-24MHZ三级加密程序存储器1288字节内部RAM32个可编程I/O口线2个16位定时/计数器6个中断源可编程串行UART通道 图3 AT

15、89C51 引脚封装图AT89C51引脚封装如图3所示,其芯片引脚介绍如下:(1)主电源引脚VCC:+5 V电源 VSS:地线。(2)时钟电路引脚XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。(3)控制信号引脚 RST/VPD:复位信号。当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作;当单片机掉电时,此引脚上可接备用电源,由VPD向片内RAM提供备用电源,以保持片内RAM中的数据不丢失。 ALE/PROG:地址锁存控制信号。在系统扩展时,ALE用于控制把P0口

16、输出的低8位地址锁存起来,以实现低位地址和数据的隔离。此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。 PSEN:片外程序存储器读选通信号输出端。 EA/VPP:访问程序存储控制信号。当EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。 (4)I/O引脚P0.0 P0.7 :P0口8位双向口线;P1.0 P1.7 :P1口8位双向口线;P2.0 P2.7 :P2口8位双向口线;P3.0 P3.7 :P3口8位双向口线。 P3口线的第二功能。P3的8条口线都

17、定义有第二功能,详见表1。表1 P3口各引脚与第二功能表引脚第二功能信号名称P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2INT0外部中断0申请P3.3INT1外部中断1申请P3.4T0定时/计数器0的外部输入P3.5T1定时/计数器1的外部输入P3.6WR外部RAM写选通P3.7RD外部RAM读选通以上把8051单片机的全部信号引脚分别以第一功能和第二功能的形式列出。对于各种型号的芯片,其引脚的第一功能信号是相同的,所不同的只在引脚的第二功能信号。对于9、30和31三个引脚,由于第一功能信号与第二功能信号是单片机在不同工作方式下的信号,因此不会发生使用上的矛盾。但是P3口的情况

18、却有所不同,它的第二功能信号都是单片机的重要控制信号。因此,在实际使用时,都是先按需要选用第二功能信号,剩下的才以第一功能的身份作数据位的输入/输出使用。如图4所示,本设计中单片机资源的分配情况如下:(1)单片机使用外部电路来提供时钟脉冲。引脚XTAL1和XTAL2之间接12MHz的石英晶体,使单片机的一个机器周期为1us。(2)P0口与DAC0832的DI0-DI7数据输入口相连;P1口与LCD液晶显示数据输入口相连;P2口的P20-P24分别与5个独立按键相连;P3部分口与LCD液晶显示控制信号接口相连。图4 单片机控制模块2.2.2 数模转换电路数模转换电路是本设计的关键电路,它决定着将

19、数字信号转变为模拟信号,从而得到各种所需要的波形。1. 数模转换器的工作原理数模转换器可将数字量信号转换成与此数值成正比的模拟量信号。需要转换的数字量由一个二进制数字表示,每位二进制数字都有一定的权,在转换中,应将二进制数的每一位按照权的大小转换成相应的模拟量输出分量,然后将各个输出分量叠加,总和就是与数字量成正比的模拟量数值。上述的D/A转换,常用如图5所示的倒T形解码网络加以实现。图5 倒T形电阻网络D/A转换器电路设计如图5所示,包括由R-2R组成的电阻网络、模拟电子开关和集成运算放大器。对于电阻网络,无论从哪个R-2R节点看,等效电阻都是R,因此,从参考电压端输入的电流为: IR=VR

20、EF/R根据分流公式,各支路电流为:I7=I/21I6 =I/22I5 =I/23I4 =I/24I3 =I/25I2 =I/26I1 =I/27I0 =I/28于是,经过运算放大器输出的模拟电压VO为:VO = - RFIi= Rfb VREF/R28(D727 +D626 +D525+D424+D323+D222+D121+D020)其中VREF是进行D/A转换的系统提供的参考电压,Rfb为集成运算放大器的反馈电阻,D7 D0取值为0或1,0表示切换开关与地相连,1表示与参考电压相连。通过上述电路,即完成了二进制数字信号到模拟电压信号的转换。2数模转换器的主要技术指标(1) 分辨率分辨率指

21、输入给D/A转换器的单位数字量引起的模拟量输出的变化,通常定义为输出满刻度值与2n之比(n为D/A转换器的二进制位数)。显然,二进制位数越多,分辨率越高,即D/A转换器对输入量变化的敏感程度越高。例如,8位的D/A转换器,若满量程输出为10V,根据分辨率定义,则分辨率为10V/2n,分辨率为10V/256=39.1mV,即输入的二进制最低位的变化可引起输出的模拟电压变化39.1mV,该值占满量程的0.391%,常用1LSB表示。使用时,应根据对D/A转换器分辨率的需要来选定D/A转换器的位数。(2) 相对精度相对精度是指在满刻度已经校准的前提下,在整个刻度范围内,对应于任一数码的模拟量输出与它

22、的理论值之差。通常用偏差几个LSB来表示。(3) 建立时间建立时间是描述D/A转换器转换快慢的一个参数,用于表明转换时间或转换速度。其值为从输入数字量到输出达到总值误差(1/2)LSB(最低有效位)时所需的时间。电流输出的转换时间较短,而电压输出的转换器,由于要加上完成I-V转换的运算放大器的延迟时间,因此转换时间要长一些。快速D/A转换器的转换时间可控制在1us以下。(4) 线性度通常用非线性误差的大小表示D/A转换器的线性度,输入输出特性的偏差与满刻度输出之比的百分数表示非线性误差。一定温度下的最大非线性误差一般为0.01%0.03%。3. DAC0832数模转换芯片主要特性与结构DAC0

23、832系列为美国国家半导体公司生产的具有2个数据寄存器的8位分辨率的D/A转换芯片。此芯片与微处理器完全兼容,并且价格低廉,接口简单,转换控制容易,在单片机应用系统中得到了广泛的应用。1DAC0832的主要特性l 分辨率为8位;l 转换时间为1us;l 可单缓冲、双缓冲或者直接数字转换;l 只需在满量程下调整其线性度;l 逻辑电平输入与TTL兼容;l 单一电源供电(+5V+15V);l 基准电压的范围为10V。2DAC0832的内部结构DAC0832的内部结构框图如图6所示。它由8位输入锁存器、8位DAC寄存器、8位D/A转换器及转换控制电路构成,通过两个输入寄存器构成两级数据输入锁存。图 6

24、 DAC0832内部逻辑框图使用时,数据输入可以采用两级锁存(双锁存)、单级锁存(一级锁存,一级直通方式)或直接输入(两级直通)形式。上图中,2个与门电路组成寄存器输出控制逻辑电路,该逻辑电路的功能是进行数据锁存控制。3DAC0832的引脚功能DI0DI7:8位数据输入线。CS():片选信号输入,低电平有效。ILE:数据锁存允许控制信号,高电平有效。WR()1:输入寄存器写选通输入信号,低平有效。 图 7 DAC0832的引脚 WR()2:DAC寄存器写选通输入信号,低电平有效。XFER() :数据传送控制信号,低电平有效。上述两个信号控制DAC寄存器是否为数据直通方式。当WR()2=0和XF

25、ER()=0时,为DAC寄存器直通方式;当WR()2=1或XFER()=1时,为DAC寄存器锁存方式。IOUT1、IOUT2:电流输出,IOUT1+IOUT2=常数。Rfb:反馈电阻输入端。内部接反馈电阻,外部通过该引脚接运放输出端。为了取得电压输出,需要在输出端接运算放大器,Rfb即为运算放大器的反馈电阻端。Vref:基准电压,其值为-10V+10V。AGND:模拟信号地。DGND:数字信号地,为工作电源地和数字逻辑地,可在基准电源处进行单点共地。VCC:电源输入端,其值为+5V+15V。 4DAC0832芯片与单片机的接口DAC0832根据控制信号的接法可分为三种工作方式:直通方式、单缓冲

26、方式、双缓冲方式。1 单缓冲方式此时输入锁存器和DAC寄存器相应的控制信号引脚分别连在一起,使数据直接写入DAC寄存器,立即进行D/A转换(这种情况下,输入锁存器不起锁存作用)。此方式适用于只有一路模拟量输出,或有几路模拟量输出但是并不要求同步的系统。2. 双缓冲方式对于多路D/A转换输出,如果要求同步进行,可以采用双缓冲同步方式。DAC0832工作于双缓冲工作方式时,数字量的输入锁存和D/A转换是分两步完成的。首先CPU的数据总线分时向各路D/A转换器输入要转换的数字量,并将其锁存在各自的输入锁存器中,然后CPU对所有的DAC发出控制信号,使各个DAC输入锁存器中的数据打入DAC寄存器,实现

27、同步转换输出。3. 直通工作方式当DAC0832芯片的片选信号CS()、写信号WR()1、WR()2及传送控制信号XFER()的引脚全部接地,允许输入锁存信号ILE引脚+5V时,DAC0832芯片就处于直通工作方式,数字量一旦输入,就直接进入DAC寄存器,进行D/A转换,从输出端得到转换的模拟量。本设计中,为了降低数模转换建立的时间,数模转换芯片DAC0832采用直通的工作方式。2.2.3 电流/电压转换放大电路由于从DAC0832转换出来的模拟信号为电流信号,为了方便观测输出信号的特征,特将DAC0832输出的信号经过电流/电压转换放大电路转变为电压信号。本设计中使用的运放为LM324。LM

28、324运算放大器是价格便宜的带差动输入功能的四运算放大器。其引脚图如图8所示。 LM324的特点:1.短路保护输出2.真差动输入级3.可单电源工作:3V-32V4.低偏置电流:最大100nA(LM324A)5.每封装含四个运算放大器。6.具有内部补偿的功能。7.共模范围扩展到负电源8.行业标准的引脚排列9.输入端具有静电保护功能 图8 LM324引脚 DAC0832输出信号经运放电路转变为电压后有两种输出方式。一种为单极性输出方式。此方式中,DAC0832通过使用一片LM324运算放大器将从单片机输入的数字量Din转换为电压输出,其输出电压为Uout=Din/28 *(-VREF)。当VREF

29、=5V时,Uout的输出范围为-5V0V。另一种为双极性输出方式。本设计中采用双极性输出方式,如图9所示。其双极性输出原理为:因为U1为-5V0V,根据电流环路定理有即:Uout=-VREF-2U1所以当VREF=5V,而U1为-5V 0V输出时,Uout的输出为-5+5V,即实现了双极性输出。图9 DAC0832和两片LM324实现双极性输出3.2.4 液晶显示电路显示模块主要是用来显示输出信号的波形类型和频率大小,本设计中以LM016L作为显示器件。LM016L智能型显示模块是一种低功耗、低价值、低损耗的显示器件,它不但可以显示各式各样的字符、汉字和图形,同时具有可编程能力,且与单片机接口

30、方便。 1引脚功能说明LCD LM016L采用标准的14脚接口,各引脚接口说明如下:第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端

31、由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。2基本操作时序表读写操作时序如图10和图11所示。图10 读操作时序图11 写操作时序3LCD LM016L的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图12是016的内部显示地址。图12 1602LCD内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒

32、定为高电平1,所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。016液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图13所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等。每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”

33、。图13 字符代码与图形对应图4液晶LM016L显示电路图本设计中,液晶显示电路与单片机的连接如图14所示。图14 液晶显示电路 2.2.5键盘电路该子系统是5个独立键盘和一个2输入与门组成,其中与门输出端连接单片机的P3.2口以便形成外部中断。5个按键分别连接单片机的P2.0P2.4口。2输入与门一引脚与K1按键相连,另一引脚接高电平。当K1按下时,INT0为低电平,可知外部中断到了,系统执行中断程序。当K2K5按键某一个按下时,对应的P2.1P2.4口中某个为低电平,系统可以感知此按键按下,从而执行相应的程序。每个按键的功能如表2所示。表2 按键功能表按键功能属性K1波形选择自动复位K2频

34、率升高自动复位K3频率降低自动复位K4占空比升高自动复位K5占空比降低自动复位按键电路的电路图如图15所示。 图15 按键电路图3 系统软件设计系统软件主要是用来控制信号发生器系统按照设计的逻辑进行运行。在软件设计上,根据功能分成了多个模块编程,主要包括:主程序模块、四种不同的波形产生模块、按键处理模块、外部中断模块、液晶显示模块等。3.1 系统主程序流程框图系统主程序流程图如图16所示,源程序见附件。图16 系统主程序流程图3.2 信号产生子程序本系统采用编程的方法,来输出四种不同的波形即正弦波、矩形波、三角波、锯齿波。各种波形的产生方法如下。3.2.1 正弦波发生子程序正弦波的产生比较特殊

35、,它不能由单片机直接产生,只能由如图17所示的阶梯波来向正弦波逼近。很显然,在一个周期内阶梯波的阶梯数目越多,单片机输出的波形也就越接近正弦波。图17 正弦波信号的产生先假定正弦波的振幅是2.56 V,则波谷对应的数字量为最小值00H,波峰对应的数字量为最大值FFH。将正弦波的第一个周期的波形按角度均分为若干等份,并计算出各点对应的电压值,电压值计算方法:Vx=2.5(1+sin),因为00HFFH对应的数字量为0255,所以根据算出的电压就可直接写出各点所对应的数字量。单片机将一个周期的数字量存入一定的存储区域中,然后依次循环取出这些数字量,并送D/A电路转换成阶梯波,即近似的正弦波输出。图

36、18为正弦波产生的流程图。图18 正弦波产生的流程图3.2.2 矩形波发生子程序如图19所示,矩形波的实现比较简单。首先定义一个无符号字符型变量i=0,使自变量i不断的自动加1,若i的值小于squa_num,将P0口赋值为0xFF;若i的值大于squa_num,则将P0口赋值为0x00。当i自加到256后又自动变为0,以此循环,即可得到矩形波。当squa_num=128时,此时输出的为方波。调节squa_num的大小,即可实现矩形波占空比的调节;调节延时时间的大小,即可实现矩形波频率的改变。图19 矩形波产生流程图3.2.3 三角波发生子程序三角波中的斜线用一个个小台阶来逼近,当台阶间隔很小时

37、,波形基本上近似一直线。首先定义一个无符号字符型变量i=0,使自变量i不断的自动加1,若i的值小于128,将P0口赋值为i;若i的值大于128,则将P0口赋值为256-i。当i自加到256后又自动变为0,以此循环,从而P0口实现了周期性的数字量变换,在经过数模转换后转变成模拟信号,经运算放大电路后就得到了周期性的三角波。三角波产生流程图如图20所示。图20 三角波发生流程图3.2.4 锯齿波发生子程序锯齿波的实现过程与三角波类似,也是定义一个变量i=0,并使P0=i,自变量i不断的自动加1,直到加到255,然后i又可以自动归为0,再不断的重复上过程。在此过程中,P0口的值也随着i一样变化,经数

38、模转换DAC0832后,周期性逐一变化的数字量就转换为锯齿波输出了。通过调节P0口每相邻两个值之间的延迟时间,就可以改变锯齿波的频率。图21为锯齿波发生流程图。图21 锯齿波发生流程图3.3按键处理子程序在本设计中,主要是通过按键来调节输出波形的类型、频率的大小及矩形波的占空比,采用程序控制扫描方式,时刻监视着有无按键按下。为了能够更准确的判断按键的情况,一旦有按键按下时,先延时去除按键的抖动,再判断是哪个按键按下,从而单片机对应的执行相应的程序。图22为按键处理流程图。图22 按键处理流程图3.4液晶显示子程序LCD LM016L的显示函数很简单,只要严格按照其时序图操作,并结合其相关指令集

39、,写好LCD的初始化程序,清屏程序,写指令程序,写数据程序,读数据程序等一系列驱动程序,即可完成LCD的所有显示需要。在本设计中,由于需要显示的内容比较多,且有些需要重复显示,有些只要显示一次,故只画出液晶显示的基本流程,如图23所示。图23 液晶显示流程图3.5 INT0中断子程序中断子程序是用来控制输出波形的选择及将输出波形的类型在LCD液晶显示屏上显示出来。当波形选择按键K1按下时,进入中断程序中,此时波形选择标识WaveChoice加1,LCD液晶显示屏上显示出相应的波形类型。中断结束后,主程序中根据WaveChoice的值输出相应的波形。图24为INT0中断流程图。图24 INT0中

40、断流程图4 系统调试4.1 系统调试过程1编译、连接项目,形成目标文件打开Keil新建工程文件,然后添加源程序文件,保存时把文件后缀名改成“.c”,再直接导入新建的工程中。把源程序全部录入后,先粗略的检查一遍,主要改正明显的各种错误,这样可以减少之后的修改工作量。接着Options for Target “Target 1” ,点击Output ,勾选Create Hex 那个选项,生成可执行的文件。然后点击Project菜单下的Built Target命令然后再进行编译、连接,形成目标文件。编译、连接用Project菜单下的Built Target命令(或快捷键F7),也可以直接点击工具栏中

41、相对应的图标。编译、连接时,如果程序存在语法有错,则不会通过编译,并在下面的信息窗口给出相应的出错提示信息,其中错误是一定得改正的,警告可以忽略。双击下面显示错误信息的那一行,可以直接定位错误所在的行,用户可以方便的对程序进行修改。修改后再编译、连接,继续进行调试,这个过程可能会重复多次。如果没有任何语法上的错误,则编译、连接成功,并且信息窗口给出提示信息。2运行调试在Proteus软件中先从元件库中加载要使用的那些元件,然后把元件放在图纸上一个一个的接线,尽量不让线交错,便于查看、分析,有必要时,使用接线标号法。完成所有元器件的接线后,在单片机上右击选Edit Properties,在Pro

42、gram file 那一行右侧点击,然后选择前面生成的以“.hex”为后缀名的文件,为单片机AT89C51添加可执行文件。然后点击左下角的相关按键,开始进行仿真。4.2 调试中的问题及解决方法在设计方案确定后,为了更好的调试,可以先分别对不同模块进行调试,最后在进行整体调试。在整个调试的过程中,遇到了不少的问题,经自己查阅资料,并向老师、同学请教后,这些问题基本已解决。调试中遇到的问题及解决方法如下:(1) 在调试LCD显示过程中,当波形选择按键变化时,对应的LCD上显示的波形类型也跟着变化,达到设计的目的。但由于不同波形类型的显示字符长度不一样,由字符长的向字符短的跳转时,字符长的多余的几位

43、还在显示,使显示结果出现错误。解决方法:将四种需要显示的波形类型的字符串长度设定为一样,字母不足的用空格来补充,这样就达到了显示所需效果。(2) 在调试波形产生过程中,波形选择按键按下时,没有波形输出或只输出一种波形。解决方法:若无波形输出,则要先检查硬件原理图是否连接好,再检查程序是否出现问题。若仅有一种波形输出,则要检查程序中是否出现了死循环,还应检查按键控制程序是否符合逻辑要求。(3) 当个个模块的功能都可以实现时,就可以进行总体的调试。在总体的调试中,发现波形选择按键按下时,液晶显示波形类型变化和输出波形的变化并不能同时实现。解决方法:当波形选择按键按下时,液晶上的显示只要做一次就可以

44、,而信号波形的输出则是连续着的。所以使用外部中断INT0,当有按键按下时,先响应中断程序,显示输出波形的类型,然后再回到主程序中,输出对应的波形。(4) 系统使用的是控制延时的方法来改变输出信号的频率,故频率值的大小不好计算。解决方法:设定不同的延时时间,从示波器显示的输出波形来计算其对应的频率,并记录下来。再根据每条指令大约的执行时间,来粗略的估计出输出信号的频率与延时时间的函数关系。当然,这种方法所测得的频率与实际频率的误差还是很大的,此问题并没得到完美的解决。4.3 系统仿真结果经以上调试,确认程序没有问题时,加载到Proteus软件中进行仿真,所得仿真结果如下。(1)刚开始运行程序,没

45、有按键操作时,仿真结果如图25所示。图25 仿真初始化结果(2)当K1键按下进行波形四种波形选择时,每种波形的仿真结果如下。图26 正弦波图27 方波图28 三角波图29 锯齿波(3)波形为正弦波,K2键按下时,输出波形的频率增大仿真如图30 所示。图30 正弦波频率增加仿真(4)当波形为矩形波且K4键按下后,矩形波的占空比增加。其仿真结果如图31所示。图31 矩形波占空比增加仿真5 结论经过两个月的努力,终于完成了信号发生器的设计,总结两个月以来的工作,主要有以下几个方面:(1)通过查阅大量资料使自己对信号发生器的研究现状、原理、工作方式等的基本概念及技术发展有了更好的理解。(2)针对设计的任务和要求,确定信号发生器的设计方案,并逐步来实现。(3)本系统使用了单片机作为主控制器,直接由软件产生不同波形信号的输出,因此在如何编写程序方面下了很大的功夫,也收获了很多知识。(4)在Keil中编写仿真程序,在Proteus中绘制硬件仿真图,并实现联调仿真。从仿真的结果来看,基本完成了设计的要求。在这两个

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号