基于单片机的低频信号发生器毕业设计论文(32页).doc
-基于单片机的低频信号发生器毕业设计论文-第 26 页淮 阴 工 学 院毕业设计说明书(论文)作 者:王永方学 号:1111205119学 院:电子与电气工程学院专 业:电子信息工程题 目:基于单片机的低频信号发生器讲师张月红指导者: (姓 名) (专业技术职务)评阅者: (姓 名) (专业技术职务)年月毕业设计说明书(论文)中文摘要本文设计的目的是利用AT89S51单片机和数模转换元件DAC0832产生所需不同信号的低频信号源,即采用AT89C51 单片机作为控制中心,而在外围采用数字/模拟转换电路(DAC0832)、运放电路(LM358)、按键电路和LC D液晶显示电路等,通过按键可控制产生方波、锯齿波、三角波、正弦波,调整频率的大小,同时用LCD液晶显示对应的波形输出。本文中简要介绍了单片机AT89S51的基础理论,DAC0832数模转换器的结构原理和使用方法,以及与电路设计有关的各种芯片,并着重详细介绍了利用单片机控制D/A转换器产生上述信号的硬件电路和软件编程设计。本文所设计的系统简单、性能良好、性价比高,可用于多种需要低频信号源的场所,可应用到相关的生活中去。关键词 单片机,信号发生器,低频, D/A转换电路, 运算放大电路毕业设计说明书(论文)外文摘要Title Microcontroller Based on the low-frequency signal generator AbstractThe purpose of this design is the use of single-chip AT89S51 DAC0832 digital to analog conversion element different signals to produce the desired low-frequency signal source, which uses AT89C51 microcontroller as the control center and in the periphery using digital / analog conversion circuit (DAC0832), op-amp circuit (LM358 ), key circuit and LC D LCD circuits, etc., can be controlled by buttons produces a square wave, sawtooth, triangle wave, sine wave, adjust the frequency of the size, and with LCD display the corresponding waveform output. This article briefly describes the basic theory of SCM AT89S51, structure principle and use DAC0832 digital-, as well as a variety of chip and circuit design related, and focus describes the use of SCM D / A converter generates the signal hardware circuit design and software programming. This article is designed system is simple, good performance, cost-effective, can be used for various needs of the low-frequency signal source place, it can be applied to the relevant life.Key words Microcontroller, signal generator, low frequency, D / A converter circuit, an operational amplifier目 录1 绪论11.1 信号发生器综述11.2信号发生器的发展历史12 硬件设计22.1总体设计框图22.2单片机最小系统22.3 数模转换模块72.4运算放大模块82.5 键盘电路设计模块92.6显示电路设计模块93 软件设计113.1 主程序流程图113.2 子程序流程图124 系统调试174.1软件调试174.2生成hex文件174.3 Protues硬件电路仿真调试18结论21致谢23参考文献24附录25附录A 电路原理图.仿真图25附录B 程序清单271 绪论 1.1 信号发生器综述 现在市场上有许多种信号发生器,一般分为以下几种: 超高频:频率范围 1MHz 以上,可达几十兆赫兹。 高频:几百千赫兹到几兆赫兹。 低频:频率范围为几十赫兹到几百千赫。 超低频:频率范围在零点几赫兹以下。 超高频信号发生器:产生波形一般用 LC 振荡电路,频率在零点几赫兹以下。1.2 信号发生器的发展历史在20世纪初随着电子行业的兴起,信号发生器就出现在人们生活中了。伴随着时间的推移,科学的发展,到了四十年代,人们在这个时期设计的信号发生器的结构复杂,多依靠硬件电路拼接,比较死板,并且消耗的功率比较大,浪费能源。在1964年第一台有全部晶体管制作的信号发生器诞生了。随着技术的不断进步,在此之后,信号发生器的市场需求变大,因此信号发生器得到很好的发展机遇,这个时候人们开始使用模拟电子以及集成电路技术1 2,虽然这时候信号发生器得到很大的改善,但是仍存在着频率稳定性不够好,材料不够便宜等缺点。令人兴奋的是在70年代微处理器、模数转换器、数模转换器的发明,增强了使用硬件以及软件使构成的信号发生器的功能,可以制造出比较繁杂的波形。伴随着电子技术,数字信号技术以及计算机科学技术的飞快发展,模拟信号走下历史舞台,而数字信号登上历史舞台,它克服了模拟信号的诸多缺点,例如改善了信号的精确度以及转换效率。如今能够通过可视化编程语言编写发生器的操作界面,这样人们可以做到直接用手输入想要的波形,来做到波形的输入。 1.3 信号发生器主要研究内容 信号发生器又被叫做函数信号发生器,可测试被测电路所需的生成的设备特定值。该装置是一个研究,教学,制造业最常见的通用设备,传统的信号发生器是没有信源装置的控制的单一芯片,如 可由555振荡电路构成,可产生正弦波信号,矩形信号和三角波信号,但常会引起波形畸变,且难以控制,频率范围小,结构冗杂等缺点。在实践中以及科学技术研究如工业,农业,通信,生物医学经常需要使用低频信号发生器。然而从一个硬件电路组装成一个低频信号源,因为它需要使用难以控制准确度的电阻和电容组装而成,这很难保证参数的准确性。并且由于它体积大,功耗大,泄漏以及许多其他的缺陷,在实际应用过程中的存在将大大增加电路的复杂性,性能通常不令人满意。低频信号源可选择利用单片机产生设计方案,频率稳定性都能够可以得到很好的改变3 4。采用软硬件结合的途径,在硬件不变的情况下只需要改变软件,就可以实现频率大小转换,并且具有稳定的频率,不会被其他信号所串扰等优点。2 硬件设计2.1 总体设计框图波形指示按键单片机数模转换电流、电压转换输出电源图2-1 基于单片机的低频信号发生器系统框图 该低频信号发生器的设计系统包含有单片机,数模转换电路,电压转化电路,波形指示模块以及按键模块组成。其主要目的是通过按键来控制正弦波,方波,锯齿波,三角波的对应显示,以及频率的调整,并且有相应的指示灯进行指示工作。2.2 单片机最小系统2.2.1 单片机选择方案一:AT89C51只可以同时载入,并且要有VPP烧写高压才可以。而AT89C51系列在大于4.8V和小于5.4V的时候则可以常工作,否则不能正常工作。AT89C51的频率规模最高只能够达到24M,超过同样不能正常工作。方案二:AT89S51则支持ISP在线可编译写入手艺。串行载入效率更加高、稳定性相对越来越好,载入电压只要4至5V就可以达到要求。AT89S51标称的1000次,现实中使用次数是1000次至10000次,这更有益初学者不断的练习烧写,降低实验实践的成本。方案三:AVR单片机最大的优点是可以提前读取命令,在单片机工作时,AVR可以在执行之前一条指令命令的同时提取下一条命令。AVR单片机中含有32个寄存器,属于多累加器型,所以它的读写速度很快。中断响应速度快。AVR单片机具有许多中端口,所以在发出终端指令时能够迅速做出相应。AVR单片机耗能低。方案选择:AT89S51兼容AT89C51。AT89C51在生活生产中已经全部停产,所以价钱方面,现有的AT89C51的批发价是AT89S51一倍。虽然AVR单片机有许多优点但是AVR价格很高,指令集也过于简单,同时AVR支持的位操作也不多。所以本设计选择方案二。2.2.2 单片机介绍AT89S51单片机简介:AT89S51单片机性能优良,他不仅消耗功率少,性能也比较全面。在单片机的内部构造里面,AT89S51单片机中含有8位CPU和可编程Flash存储器(8k),这样在面对各种复杂的开发环境时AT89S51单片机就能够更快速更好的应用。在功能上,AT89S51单片机中包含了许多基础功能,如存储程序、计数/定时、复位、数据的输入输出、开关中断以及串行口,这些与其他的单片机并没有多大的区别。此外AT89S51单片机在0Hz时有两种节电模式选择:一种是空闲模式,这种模式下除CPU不再工作外其他部分可以继续运行;另一种是掉电保护模式,这种模式下在保存完RAM内容后,单片机内各模块全部停止工作,一直到下个命令或复位后才开始工作。由于AT89S51芯片被广泛的应用于各种开发实践,所以采用AT89S51进行开发时有很多经验可以借鉴。AT89S51的端口如下图3-1所示图2-2-1 AT89S51 引脚图管脚说明56P0端口:P0口用作通用的输入/输出口,当需要外部总线扩展(在单片机芯片的外部扩展存储器芯片或其他接口芯片)时,P0口用做分时复用的低8位地址,数据总线。只有P0口可直接读写外部存储器控制。由于当需要外部总线扩展时是分时输出,所以应该将地址数据锁存在外部通过加上锁存器,用ALE作为信号。P1端口:P1口是唯一的单一功能的端口,只能作为一般的数据输入/输出口,专门为用户使用的I/O端口。P2端口:P2口用作通用I/O口时,从体系扩大时作高8位地址线用,属于准双向端口。当外部存储器不延伸时,P2口作为地址总线也是准双向口。P3口(P3.0P3.7):如下表表2-2-2 P3串口详细表P3口是双功能口,除具有数据输入/输出功能外,每一口线还具有特殊的第二功能。RST:引导内部复位程序或电路引脚。只需要RST保持高电平一段时间,通常上电RC电路,或专用电源监控芯片,即可完成复位了。EAVPP:/EA=0时,执行外部存储器;/EA=1时,先执行内部存储器再执行外部存储器。VCC:电源电压,接+5V。2.2.3 晶振电路的介绍晶振电路简介:AT89S51有一个内部振荡器被用于组成一个高增益反相放大器,该芯片的引脚XTAL1是放大器的输入端,XTAL2放大器的输出端。该放大器的反馈,石英或陶瓷谐振器元件芯片关共同构成如图3-5所示时钟振荡电路。在单片机能够正常工作时都需要有相对应的时钟脉冲。向AT89S51提供时钟脉冲两种方法分别是:一是外部时钟方式,二是内部时钟方式。7 8本设计采用第二种:即使用晶振由AT89C51内部电路产生时钟脉冲,其电路图见图2-2-2。图2-2-3 AT89S51的时钟脉冲X1为晶体振荡器,一般为石英晶体,其系统的需要以及器件可以确定它的频率大小,陶瓷滤波器一般可用于其频率稳定度不高的情况下。12M是比较常用的晶振,51单片机是12分频的,如果选用12M晶振,并且是单指令周期的语句,刚好是1us,其他语句正好是1us的整数倍。很容易的机算出每个语句耗用的时间。正常情况下,用石英晶体振荡器,C1=33 pF C2=33pF。使用陶瓷滤波器时,C1=46pF,C2=46pF。2.2.4 复位电路简介复位电路,我们是用它使得电路还原到刚开始状态。如清除计算器按钮的作用一样,当你完成计算的话题肯定是要被清除,或者,你犯了一个错误,在操作应进行时出现一个误判,想要恢复到起始的状态,那么就需要重新计算。计算器清除,并启动复位电路意味着不同的按钮。首先,当电源接通时立马对电路进行复位操作;第二个在调试系统或者认为需要时候可以手动复位,第三个在程序中设计自动地进行复位操作。AT89S51复位:它的主要目的是将PC改为0000H,所以单片机将重新从0000H地址运行。有时候系统运行会出现未知错误,人为的操作不当或死锁情况出现,想要走出困境,还需要按复位按钮重新启动。除了使PC为零,复位动作也波及到许多其它特殊用途寄存器,它们的初始化后的状态如下表所示:表2-2-4 内部寄存器复位后情况表此外,复位操作还对单片机的某些端口会产生影响,例如会让ALE和/PSEN变为无失效状况,ALE=0,/PSEN=1。当RST变为低电平情况下,不再出现复位,CPU此时便可从初始化重新开始运行9。AT89S51复位操作的三种形式分别为上电复位、上电按钮复位以及系统本身复位。上电复位电路如下图2-2-4所示。因为RST引脚中有拉低电阻,故电阻R可以不再外接。在单片机通上电的时刻,开始对RC电路进行充电,这时RST端口产生正向脉冲,RST端只需要保持在高电平两个机器周期后,便能够使得单片机进行复位。为12MHz晶体振荡器RC正常值CF,R = 8.2k欧姆。我们能够经常遇到早简便的复位电路中,复位端经常会被串扰信号滋扰,容易导致复位操作失误,该时候在RST端口上接上一去耦电容就能够解决问题。由于系统的需要,系统中需要设计一个手动的复位按钮开关,只要复位电路并联一个常开按钮开关来达到目的,在短时间内按下开关按钮就能使RST引脚端口变为高电平,然后让单片机复位10。如下图2-2-5所示图2-2-5 按钮复位电路图2.3 数模转换模块 在单片机将数字信号输出过程中,我们需要将输出的内容转化为模拟信号。8位分辨率的DAC0832是一个D / A转换器集成芯片,与AT89S51单片机很好地兼容。该DA芯片以其成本低,操纵简洁的界面,易于转换节制等,普遍用于单片机利用体系。在这里,采用了DAC0832元器件。 此变换器包括八个输入锁存器,八DAC寄存器,八D / A转换电路和开关控制电路。 D/A转换输出电流形式。若是必要一个响应的模拟电压发生信号,经由过程线性运算放大器的高输入阻抗。1、分辨率为8位;2、电流稳定时间1us; 3、单缓冲、双缓冲或直接数字输入;4、只需在满量程下调剂其线性度;5、单一电源供电(+5V+15V);6、低功耗,20mW。DAC0832的管脚功能11 12 :IOUT2:电流输出端2,其值与IOUT1值之和为一常数;Rfb:反馈信号输入引脚;VCC:电源输入,电压范围+5 +15;VREF: 参考电压输入端,范围 -10V +10V;AGND:模拟信号地;DGND:数字信号地。AT89C51对DAC0832执行写操作一次就是将一个数据载入数据锁存器的相同时刻也直接载入到DAC寄存器中,模拟量输出便会伴随产生变动。数字量与模拟量的转换相关公式为:Vout1=-Vref×(数字码/256)D/A转换结果采用电流形式输出。能够通过连接一个高输入阻抗变来满足相对需要的模拟电压信号。运放的反馈电阻可以通过两种方法获得,第一种可以利用RFb端获得运放内部自带的电阻,第二种可以外接一电阻。因而,DAC0832一般常常要外接一个运算放大器,进行电流电压转换,这样才可以获得到模拟输出电压。2.4 运算放大模块在经过数模转换模块,我们可以得到转换后的模拟信号,但是这些模拟信号相对比较微弱,不足以驱动紧接下来连接的设备,因此我们需要连接一个运算放大器来放大我们的模拟信号。在本设计中我们需要计算信号被放大的倍数,那么放大倍数可根据反馈电阻除以输入电阻得到。起初在设计的过程中,我采用了一级放大器,出现了饱和失真。由下图可以知道是由本设计的放大倍数不足导致饱和失真。图2-4-1 饱和失真电路仿真图因此需要增加运算放大器的倍数,在选择运算放大器中,为将信号放到足够大的程度,我们可以采用LM358双运算放大器。LM358包括两对运算放大器,其可用于宽电压范围单电源供电,并且也适用于双电源,电流与电压无关必须要在满足合适的工作情况下。LM358还具有以下特点:表2-4-2 LM358特点情况表因此,在本设计中我选择了用LM358双运算放大器。双LM358双运算放大器是由两个LM358运算放大器组成,在电路中,我们通过在运算放大器中串联一个下拉电阻R4,通过接地使得该端口平时的电平为低电平。同时我们为使得波形在放大的时候不失真接上一电位器,通过调节电位器来使得波形不失真。下图为运算放大器的设计电路仿真图:图2-4-3 运算放大电路仿真图 同时值得注意的是在运算放大倍数过大的时候会导致图形的截止失真。2.5 键盘电路设计模块在单片机体系中为了控制整体状况,和向体系输入数据,利用体系中设有按键或键盘,实现简略的人机会话。一组开关的组合就是一个比较简单的键盘,键一般为断开按钮开关,闭合开关时它们才导通。从键盘的结构的分类,键盘可以分为独立式和矩阵式两类,每个都根据其键盘识别方法可以分为两种编码和非编码的。专用的硬件解码器实现键盘上的按键闭合,并产生编号或编码称为键盘键作为调用的软件来辨别非编码键盘。在单片机应用系统中经常需要使用几个简单的键完成数据,输入命令,在这种情况下,结构可以单独使用键盘。该接口电路的工作原理很简单,当有键被按下,每个输入线为高电平;相应的输入线为低电平则有键按下,单片机查询该端口的状态就知道哪个键关闭。使用一键一线的方法,增加键的数量,会增加的输入的数量,为了减少占用输入线,可以是一个键盘矩阵结构。由于本系统所需要的按键并不多,用4个按钮开关就能控制波形,因而可采用独立式未编码键盘结构。键盘电路图如图2-5-2所示。图2-5-2 键盘电路图按键介绍K1:是步进值调节按钮K2:在选定波形情况下,增加频率。在选定步进值情况,增加步进值大小。K3:在选定波形情况下,减小频率。在选定步进值情况下,减小步进值大小。K4:波形的选择按钮,每按一次会切换到不同的波形。2.6 显示电路设计模块显示电路设计一般为数码管显示和液晶显示,液晶显示器有许多优点,例如:功耗低、微体积、显示内容多等,在小仪表和低功耗应用系统中得到更加广泛的应用。本设计采用字符LCD模块为液晶显示器,与5×7点阵展示字符,这取决于容量显示屏上可以被划分成一行的16个字符,2行的16个字符,2行的20个字符等等。液晶显示器是一个运行比较慢的显示器件,因而在运行一条条指令时候首先要知道模块的忙标记位为低电平,示意不忙,不然此指令作废。想要实现显示字符功能时要提前输入显示字符的地址,意思是指挥模块应该怎样将字符显示出来。表2-6-1是DM-162的内部显示地址。表2-6-11602的内部显示地址12345678910111213141516序号000102030405060708090A0B0C0D0E0F第一行404142434445464748494A4B4C4D4E4F第二行字符产生存储器(反转片)内1602 LCD模块储存了160个不一样点的字符模形,这些字符是:英文字母、通常使用的符号和日语假名等,每一个字符具有固定的代码。 在软件中设置温度的代码是:30.0(00110011B,00110000B,00101110B, 00110000B,01000011B);37.0(00110011B,00110111B,00101110B,00110000B, 01000011B);60(00110110B,00110000B,01000011B)。在液显电路的衔接上,LCD1602液晶显示模块直接单片AT89S51相连,然后以驱动NMOS上拉电流负载,需求接一个上拉电阻,來使得这个位置拥有有效的高电平。所以接10K电阻来保证拥有有效的高电平,以确定显示高度点,是否要显示。VEE因为终端电源连接到正电源,对比度就会相对较弱,然而接地电源的时候产生的对比度就会变得相对过高,将有一个“鬼影”,对比度过低会使屏幕模糊。对比度的调节需要一10k的电位器。LCD1602的RS寄存器选择连接端口P2.5单片机的口,通过软件程序设置此引脚,以确定所选择的寄存器。读写端口的LCD液晶显示器直接连接到微控制器P2.6口,在高电平时候输入的对数字信号进行读数。配置E端终止单片机的 P2.7端口,使能端由高电平命令执行到一个较低的水平时候,显示读数。LCD显示电路图如图2-6-2:图2-6-2 LCD显示电路原理图 此外,为了控制LCD液晶显示的亮度,已经将本设计灰度固定。如想调节液晶显示器的亮度可以接一滑动变阻器,可通过滑动变阻器来调节液晶显示屏的亮度大小。3 软件设计系统软件设计分为主程序和子程序设计。其重点是产生各类波形的编程例程,并进行编程来产生各种波形。其中,所述频率变化的各种波形可以通过使用延迟的常规方法来实现插入。显示模块是通过使用DAC0832的8位性质,将波形与之对应的模拟数据以8位的数据模式写入到单片机中去,只须按下键就能显示相对应的波形。3.1 主程序流程图如图3-1所示:开始Key1按下了吗?输出对应波形加频率减频率调节频率步进值Key2按下了吗?Key3按下了吗?Key4按下了吗?YYYYNNNN图3-1 主程序流程图该软件程序设计的目的主要实现是通过按钮来控制不一样波形的显示,在初始的时候,我们在通电瞬间系统就开始工作,本设计将默认初始化为发出正弦波工作信号。当按钮1闭合时,函数发生器就会切换到下一个波形;若再次按下按钮1就会继续切换到下一个波形,本设计共有四种波形,按下按钮1会依次循环出现。当按钮2按下时,函数发生器自动怎么加频率;当按钮3闭合时,函数发生器就会减少频率的输出;当按钮4闭合时,函数发生器就进入步进值调节的软件控制程序。3.2 子程序流程图如下图锯齿波流程3-2所示。A=00HA送到0832输出A=A+1开始YNA=FFH?图3-2 -1锯齿波流程图锯齿波产生把数值00H放入寄存器A里面,D/A转换器输出A中的数值,若A里面的数值和FFH相等则返回开始,若A中的数值不等于FFH时,那么A中的内容不断累加,从而输出波形。如下图三角波流程3-2-2所示开始A=00HA送到0832输出A=A+1A=A-1A送到0832输出NYYNA=FFH?A=00H?图3-2-2 三角波流程图三角波是一个数值的上升,当加入到一个0的内容。一个数值每降低,从而可以获得一个三角波周期。产生三角波程序:uchar code sanjiao64=0,7,14,21,28,35,42,49,56,63,70,77,84,91,98,105,112,119,126,133,140,147,154,161,168,175,182,189,196,203,210,217,224,217,210,203,196,189,182,175,168,161,154,147,140,133,126,119,112,105,98,91,84,77,70,63,56,49,42,35,28,21,14,7,0如下图正弦波程序流程3-2-3所示开始A=00HDPTR1=DPTR1+1A=正弦函数表数据A送到0832输出YNA=129?图3-2-3 正弦波程序流程图正弦波波形设计指令可通过查表获得。uchar code sin64=135,145,158,167,176,188,199,209,218,226,234,240,245,249,252,254,254,253,251,247,243,237,230,222,213,204,193,182,170,158,146,133,121,108,96,84,72,61,50,41,32,24,17,11,7,3,1,0,0,2,5,9,14,20,28,36,45,55,66,78,90,102,114,128如下图方波程序流程3-2-4所示开始A=00HA送到0832输出延时A=FFHA送到0832输出延时 图3-2-4方波程序流程图产生一个方波是当A值等于零,相应的模拟输出,和延迟时间,当一个值等于0FFH,对应于相同的模拟输出,然后延迟时间。产生方波的程序: uchar code juxing64=255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0延时子程序流程图如图3-2-5所示 开始R6赋初值R7赋初值R7减1,R7是否为0?R6减1,R6是否为0?返回NYYN图3-2-5 延时子程序流程图延时程序如下:void delay(uint xms) int a,b;for(a=xms;a>0;a-)for(b=110;b>0;b-);4 系统调试在确定软件的编程思想,程序和各部分的程序进行编译,然后接下来就是对所设计的硬件电路和系统软件进行整体的测试了。本人采用软件仿真的软件是Keil51,单片机应用开发软件中软件运用最多的就是本软件,清晰明了,容易编写且操作方便。通过Keil51软件中调试程序完毕后,将会自动生成一个.hex文件,接着用编程器载入到STC89S51单片机中,再然后加载到Protues软件电路中进行按部就班的仿真,就可以获得调试的最终结果啦。系统调试将分部进行,第一部分是软件的程序的编译调试。第二部分是硬件电路的调试。4.1 软件调试Keil Vision是一个基于C语言的软件逻辑可编程软件,该软件通过将C语言编译成机器语言,然后将机器语言烧入单片机中,便可通过硬件调控来控制整个系统的运行。4.2 生成hex文件1.打开keil uVision4软件2.在projiect中新建一个new uVision project,选择AT89S51单片机加载文件中3.新建file,编写软件,然后进行编译,然后以.C格式重新命名保存到文件中4.选择AT89S51单片机加载文件中5.将上一步骤.C格式源文件加载进入6.设置output选中生产hex文件7. 生hex文件如下图成功生成hex文件图4-2 成功生成hex文件4.3 Protues硬件电路仿真调试Protues软件是一个非常强大的软件,它可以仿真单片机等多种元器件,在这个软件上,你可以将画出模拟硬件电路连接图,并且可以瞬间切换到PCB上,这个软件可以帮助我们,减少实践过程中由于设计不当或者认为操作原因导致元器件的算坏,在Protues中我们可以用模拟元器件布置电路,进行连接仿真、调试。待达到我们设计的目的和要求的时候,我们可以依据仿真电路图进行实际的电路组装与焊接。双击仿真单片机元器件,将生成的hex文件写入单片机中,点击运行按钮,进行仿真调试。当通电时,波形默认为正弦波,灯1亮。图4-3-1 正弦波仿真图(左)和实物图(右)当第一次按下K1,波形为方波, 灯2亮。 图4-3-2 方波仿真图(左)和实物图(右)当第二次按下K1,波形为三角波,灯3亮。图4-3-3 三角波仿真图(左)和实物图(右) 当第三次按下K1,波形为锯齿波,灯4亮。图4-3-4 锯齿波仿真图(左)和实物图(右)结论本毕业设计是考察我们大学所学单片机知识的系统运用,利用已学到的知识去完成一个基于单片机实践系统设计的操作。在这个过程中我们运用我们学过的单片机知识,从书本到实践,整个过程让我对单片机知识能够更加深入的了解,不再是纸上谈兵。这种硬件设计比较简单,主要是由两个STC89C51单片机与DAC0832芯片的配置,连接也比较简单。其中最繁琐的程序正弦波,因为它是由该表产生读取指令,所以一个表,该表列出了包含多个字符。但总的结果是程序能满足设计要求的中规中矩的设计,硬件和软件两方面,并且具有电路简单,易于控制,成本较高等优点。论文设计的过程中我主要用到keil uVision 和Protues两个软件。在使用该软件的过程中,我发现了自己许多的不足之处,有时候自己会忘记操作的顺序,常常生产不了hex文件,产生许多废弃的文件。混乱的文件放置要让自己多花费好多时间去整理,自己得到了一个教训,做事需要有调理。在Protues软件运用中同样如果自己之前没有有条理的去放置元器件就会导致放置的混乱,连线就会更加麻烦无形的给自己增加工作量。当然,这样的设计还是有一些不足之处,比如如何编程设计优化程序结构,以达到更高的质量,显示电路和键盘电路有待进一步提高。 致谢岁月如梭,时光荏苒,四年大学马上就要结束了,当毕业季来临,一切都是那么的不舍,四年时间我们在这学习、成长。现在我们即将毕业,当然我们毕业前都需要自己动手做一个毕业设计,对自己大学四年所学知识的一个见证。首先我要感谢我的毕业设计指导老师张月红老师。本毕业论文的选题、定题、开题报告以及论文的修改都是经过我的指导老师张老师的精心指导下完成的。每当我遇到问题不能解决的时候,就向张老师请教,张老师就会放心手头事情,帮助我解答所有的疑问,并且常常为我拓展相关的知识。没有张老师的精心点拔、热诚鼓励我不可能那么轻松的完成本毕业设计。在每一次的修改论文中,老师都会为我讲明为何去改,让我能够理解其中道理,让我学会如何将论文取其精华加以修饰,使得论文能焕然一新。感谢在论文写作过程中给予我航标的张老师! 同时我要感谢我的同学,感谢他们给我莫大的鼓励。大学四年生活中,每次遇到困难总有热心的同学会帮助我走出困难,相遇即是缘分,我永远不会忘记这段刻骨铭心的大学生活,在这里我要感谢大家在我本论文写作中为我提出的宝贵意见及建议,使的本论文不断的得到完善,最终完成了整个论文写作与修改。谢谢!参考文献1 孙育才,孙华芳,王荣兴.单片机原理及应用M.北京:电子工业出版社,2003: 2 李鸿.单片机原理及应用M.湖南:湖南大学出版社,2004:3 杨恢先,黄辉先.单片机原理及应用M.人民邮电出版社,2006.4 曾一江.单片机微机原理与接口技术M.科学出版社,2006.5 胡汉才.单片机原理及接口技术M. 北京:清华大学出版社,1996:66-78. 6 刘守义.单片机应用技术.西安:西安电子科技大学出版社,2002:7 孙俊逸,盛秋林,张铮.单片机原理及应用M.北京:清华大学出版社,2001: 8 陆子明,徐长根.单片机设计与应用基础教程.北京:国防工业出版社,2005:9 蒋智勇,等.单片微型计算机原理及应用M.沈阳辽宁科学技术出版社10 范立南.单片微机接口与控制技术M.沈阳:辽宁大学出版社,1996: 11 杜华.任意波形发生器及应用J.国外电子测量技术,2005,12(1):38-40. 12 张永瑞.电子测量技术基础M.西安:西安电子科技大学出版社,2006附录附录A 电路原理图附录B 仿真图附录C 程序清单#include<reg52.h> /包含头文件#include<intrins.h>#define uchar unsigned char /宏定义#define uint unsigned intsbit s1=P35; /定义按键的接口sbit s2=P36;sbit s3=P37;sbit s4=P34;sbit led0=P30;sbit led1=P31;sbit led2=P32;sbit led3=P33;sbit lcdrs=P27; /液晶控制位sbit lcden=P26;char num,boxing,u; /定义全局变量int pinlv=100,bujin=1,bujin1=1;uchar code table="0123456789"/定义显示的数组uchar code table1="Fout= Wave form:"unsigned long int m;int a,b,h,num1;/自定义字符uchar code zifu=0x0e,0x11,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x11,0x0e,0x00, /正弦波 0 10x00,0x07,0x04,0x04,0x04,0x04,0x1c,0x00,0x00,0x1c,0x04,0x04,0x04,0x04,0x07,0x00, /矩形波 2 30x00,0x01,0x02,0x04,0x08,0x1