资源描述
河南城建学院本科毕业设计(论文) 摘要摘要近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统函数信号发生器日新月异的更新。单片机能产生高精度、快速变换频率、输出波形失真小的优先选用技术。函数信号发生器是各种测试和实验过程中不可缺少的工具,在通信、测量、雷达、控制、教学等领域应用十分广泛。不论是在生产、科研还是教学上,信号发生器都是电子工程师信号仿真实验的最佳工具,而且,信号发生器的设计方法多,设计技术也越来越先进。研究函数信号发生器的设计方法,克服传统方法的缺点,以更好的方法设计出比较复杂的调频、调幅功能的信号发生器。本论文介绍的是一种用AT89C51单片机构成的波形发生器,可产生方波、三角波、正弦波、锯齿波等多种波形,波形的周期可用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、性能优越等特点。文章给出了源代码,通过仿真测试,其性能指标达到了设计要求。单片机小系统负责用户的交互和系统控制,键盘用于频率的输入与波形的选择。LED显示当前所选信号的频率调整情况,而末级放大电路则对生成的信号进行适当的放大,以提高信号的振幅和强度。关键词:单片机,DAC,信号发生器,频率调节,放大电路河南城建学院本科毕业设计(论文) AbstractAbstractIn recent years, with the computer in the social sector penetration and MCU application is continuously,while driving to the deepening traditional function signal generator on new PE updates. SCM can produce high precision, fast transform the frequency, the output waveform distortion of preferred selection technology. Function signal generator is all sorts of test and experiment process the essential tool, in communication, measuring, radar, control, teaching fields used widely. Both in production and scientific research or teaching, signal generator are electronic engineer signal simulation experiment, and the best tool, signal generator design method, design technology is becoming more and more advanced. Research function signal generator design methods, overcome shortcomings of traditional methods, in order to better designed complex FM, attenuation function signal generator.This thesis introduces a AT89C1 single-chip computers.the waveform generator, can produce square-wave, triangle wave, sine wave, sawtooth wave etc. Various waveform, waveform cycle available program change, and can choose according to need single polarity output or dual polarity output, has the line is simple, compact structure, superior performance characteristics. The article presented the source code, through the simulation test, the performance indexes meet the design requirements. : singlechip processor system is responsible for the user interaction and system control, the keyboard for frequency of input and waveform choice. LED display the current selected the signal frequency adjustment, and final amplifier circuit is generated signal proper amplifier, in order to improve the signal amplitude and strength.Keywords:microcontroller,DAC,signal generator, frequency adjustment, amplifier circuit15河南城建学院本科毕业设计(论文) 目录目录摘要 IAbstractII1.引言11.1.选题的目的及意义11.2.国内外研究与综述11.3.毕业设计所用方法22.系统硬件方案的设计32.1.方案的选择与论证32.2.系统总体设计32.3.单片机最小系统设计42.4.复位与时钟电路设计52.4.1.时钟电路设计52.4.2.复位电路设计62.5.波形产生模块设计62.6.D/A转换电路设计72.6.1.D/A转换器指标72.6.2.D/A转换的原理72.6.3.DAC0832芯片82.7.数码管显示模块93.系统软件方案的设计113.1.软件总体设计113.2.软件流程图113.3.键盘扫描及初始程序设计123.4.中断服务程序设计143.5.波形发生程序设计153.5.1.正弦波发生程序设计153.5.2.三角波发生程序设计183.5.3.方波发生程序设计183.5.4.锯齿波发生程序设计184.仿真结果与分析194.1.仿真和编译工具194.1.1.Proteus仿真软件194.1.2.KEIL编译软件194.2.仿真结果204.3.仿真分析23参考文献25致谢 26附录A:源程序27附录B:总电路图32河南城建学院本科毕业设计(论文) 引言1. 引言1.1. 选题的目的及意义信号发生器也称为函数发生器,能产生某些特定的周期性时间函数波形(正弦波、方波、三角波、锯齿波)信号,频率范围可从几个微赫到几十兆赫。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。信号发生器主要为实验用信号源,是现今各种电子实验设计中必不可少的仪器设备之一。函数发生器作为一种常见的电子仪器设备,既能够构成独立的信号源,也可以是高性能的网络分析仪,频谱仪以及自动测试装备的组成部分,函数信号发生器的关键技术是多种高性能仪器的支撑技术,因为它是能够提高质量的精密信号源及扫描源,可使相应系统的检测过程大大简化,降低检测费用并且提高检测精度。当今是科技以及仪表设备高度智能化飞速发展的信息社会,电子技术的发展进步,给人们的生活带来了根本性的转变。在现代电子领域中,单片机的应用正在不断的走向深入,这必将导致传统控制与检测技术的日益革新。单片机构成的仪器具有高可靠性,高性价比,在智能仪表系统和办公自动化中得到广泛应用,因此,基于单片机的函数信号发生器的普及是一种趋势。1.2. 国内外研究与综述信号发生器是一种常见的应用电子仪器设备,传统的信号发生器一般可以完全由硬件搭接而成,如采用555电路产生正弦波,三角波和方波便是可取的路径之一,不用依靠单片机。但是这种电路存在波形质量差,控制难,可调范围小,电路复杂,体积大的缺点。在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟等领域常常要用到低频信号源。而由硬件电路构成的低频信号其性能难以让人满意,而且由于低频信号源所需的RC很大,并且大电阻,大电容在制作上有困难,参数的精度也难以保证,体积大,漏电,损耗大更是其致命的弱点。一旦工作需求功能有增加,则电路复杂程度会大大的增加。美国安捷伦生产的33250A型函数/任意波形发生器可以产生稳定、精确和低失真的任意波形,其输出频率范围为1Hz80MHz,而输出幅度为10mVpp10Vpp;该公司生产的8648D射频信号发生器的频率覆盖范围更可高达9kHz4GHz。国产SG1060数字合成信号发生器能双通道同时输出高分辨率、高精度、高可靠性的各种波形,频率覆盖范围为1Hz60MHz;国产S1000型数字合成扫频信号发生器通过采用新技术、新器件实现高精度、宽频带的扫频源,同时应用DDS和锁相技术,使频率范围从1MHz1024MHz能精确地分辨到100Hz,它既是一台高精度的扫频源,同时也是一台高精度的标准信号发生器。目前市场上的信号发生器多种多样。他们各有各的优点,但是函数发生器总的趋势将向着宽频率覆盖、高频率精度、多功能、多用途、自动化和智能化方向发展。1.3. 毕业设计所用方法利用单片机控制脉冲的输入和输出,从而控制信号波形的频率和幅度,并根据要求输出的波形设计对应的硬件电路。在硬件电路不变的情况下,通过改变程序来实现频率的变换,用按键来控制单片机的波形和频率,通过显示电路显示频率值,利用数模转换器放大电路输出波形,并可以通过示波器观察波形与频率,其中复位电路用于系统复位重启。最后利用Proteus软件对设计的电路进行实时仿真,通过仿真的结果来观察波形的输出。河南城建学院本科毕业设计(论文) 系统硬件方案的设计2. 系统硬件方案的设计2.1. 方案的选择与论证方案一:采用单片函数信号发生器(如8038),8038可同时产生正弦波、方波等,而且方法简单易行,用D/A转换器的输出来改变调制电压,也可以产生实现数控调整频率,但产生的信号的频率稳定度不高。方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。方案三:采用单片机编程的方法来实现。该方法可以通过编程的方法来控制信号波形的频率和幅度,而且在硬件电路不变的情况下,通过改变程序来实现频率的变换。此外,由于通过编程方法产生的是数字信号,所以信号的精度可以做的很高。鉴于方案一的信号频率不够稳定和方案二的电路复杂且频率覆盖系数难以达标等缺点,所以决定采用方案三的设计方法。它不仅采用软硬件结合,软件控制硬件的方法来实现,使得信号频率的稳定性和精度的准确性得以保证,而且它使用的几种器件都是常用的元器件,容易得到,且价格便宜,使得硬件的开销达到最省。2.2. 系统总体设计经过考虑,确定方案如下:利用AT89C51单片机采用程序设计方法产生锯齿波、三角波、正弦波、方波四种波形,再通过D/A转换器将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来。通过按键来控制四种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。硬件设计的总体框图如图2-1所示。单片机控制电路数码管显示电路时钟与复位电路D/A转换电路按键电路波形输出图2-1 硬件设计总体框图2.3. 单片机最小系统设计用89C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,89C51单片机最小系统如图2-2所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。图2-2 89C51单片机最小系统其应用特点:有可供用户使用的大量I/O口线。内部存储器容量有限。应用系统开发具有特殊性。典型的MCS-51单片机芯片集成了以下几个基本组成部分:1) 一个8位的CPU2) 128B或256B单元内数据存储器(RAM)3) 4KB或8KB片内程序存储器(ROM或EPROM)4) 4个8位并行I/O接口P0P35) 两个定时/计数器6) 5个中断源的中断管理控制系统7) 一个全双工串行I/O口UART(通用异步接收、发送器)8) 一个片内振荡器和时钟产生电路2.4. 复位与时钟电路设计2.4.1. 时钟电路设计单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振),就构成了内部振荡方式。由于单片机内部有一个高增益反向放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。晶振通常选用6MHZ、12MHZ或24MHZ。内部振荡方式如图2-3所示。图中电容C1、C2起稳定振荡频率、快速起振的作用。电容值一般为530pF。内部振荡方式所得时钟信号比较稳定,实用电路中使用较多。外部振荡方式是把已有的时钟信号引入单片机内。这种方式适宜用来使单片机的时钟与外部信号保持一致。外部振荡方式电路如图2-4所示。对HMOS的单片机(8031,8031AH等),外部时钟信号由XTAL2引入;对于CHMOS的单片机(8XCXX),外部时钟信号由XTAL1引入。图2-4 外部振荡方式 图2-3 内部振荡方式 2.4.2. 复位电路设计单片机的复位是靠外电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便实现初始化状态复位。为了保证应用系统可靠地复位,通常是RST引脚保持10ms以上的高电平,根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。复位电路连接如图2-5所示。此电路仅用一个电容及一个电阻。系统上电时,在RC电路充电过程中,由于电容两端电压不能跳变,故使RESET端电平呈高电位,系统复位。经过一段时间,电容充电,使RESET端呈低电位,复位结束。89C512+5VC3R1图2-5 复位电路2.5. 波形产生模块设计由单片机采用编程方法产生三种波形、通过DA转换模块DAC0832在进过滤波放大之后输出。其电路图如图2-6所示:图2-6 波形产生电路LM324的5管脚与DAC0832的(IOUT2)12管脚相连,LM324的6管脚与DAC0832的(IOUT1)11管脚相连,LM324的7管脚与DAC0832的REF(9)管脚相连。第一级运算放大器的作用是将DAC0832输出的电流信号转化为电压信号V1,第二级运算放大器的作用是将V1通过反向放大电路放大-(R2/R1)倍。在第二个运算放大器的输出端连了一个20K的电位器。通过电位器来调节波形振幅的大小,同时在输出端接到示波器的输入端,通过示波器观察产生的波形。2.6. D/A转换电路设计2.6.1. D/A转换器指标分辨率:输出模拟电压应能区分02n-1共2n个输入数字量。表示方法:1)用输入二进制数的位数表示;如8位。2)用输出模拟电压的最小值与最大值的比值表示。指最小输出电压和最大输出电压之比。DAC0832的分辨率为1/255。精度:DAC实际输出电压与理想的输出电压的偏差。DAC0832的最大满刻度偏差为+1LSB 。线性度:DAC实际传输特性曲线与理想的传输特性曲线的偏差。DAC0832的最大误差为+0.19% 。温度灵敏度:在输入不变的情况下,输出模拟电压随温度变化产生的变化量。一般用满刻度输出条件下温度每升高1,输出电压变化的百分数作为温度系数。转换速度:用完成一次转换所需的时间建立时间Tset来衡量。建立时间:输入信号从开始变化到输出电压进入与稳态值相差1/2LSB范围以内的时间。输入信号由全0变为全1所需时间最长。当外接运放时,转换时间还应加上运放的上升(下降)时间。 (21)式中为转换时间 ,为建立时间,输出最大电压值,为运放输出转换速率。2.6.2. D/A转换的原理以倒T形电阻网络D/A转换器为例,介绍D/A转换器的原理。倒T形电阻网络D/A转换器结构如图2-7所示。图2-7 倒T形电阻网络D/A转换器图中S0S3为模拟开关,由输入数码Di控制,当Di=1时,Si接运算放大器相输入端(虚地),电流Ii流入求和电路;当Di=0时,Si将电阻2R接地。所以,无论Si处于何种位置,与Si相连的2R电阻均接“地”(地或虚地)。流过各开关支路(从右到左)的电流分别为 I/2、I/4、I/8、I/16。总电流: (22)输出电压: (23)将输入数字量扩展到n位,则有: (24)可简写为: 其中, 2.6.3. DAC0832芯片由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以本文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。但实际上,DAC0832输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。DAC0832是电流型输出,在应用时外接运放使之成为电压型输出。根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。本设计选用直通方式。CSDA:片选信号输入线(选通数据锁存器),低电平有效;WR:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存。单片机的P0口连接DAC0832的八位数据输入端,DAC0832的输出端接放大器,经过放大后输出所要的波形。DAC0832的内部结构如图2-8所示:图2-8 DAC0832内部结构图2.7. 数码管显示模块本设计是用利用4为LED数码管显示波形代号和频率,通过按键来控制输出不同的波形,在数码管上第一位字母a、b、c、d分别对应着正弦波、三角波、方波、锯齿波,后三位数码管对应信号的频率,通过按键控制频率输出,其中单片机P1口接驱动芯片74LS245用以增加P1口带负载的能力,再利用74LS138译码器芯片对其进行译码并通过数码管显示,显示模块图如图2-9所示:图2-9 显示电路模块河南城建学院本科毕业设计(论文) 系统软件方案的设计3. 系统软件方案的设计3.1. 软件总体设计应用系统中的应用软件是根据系统功能要求而设计的,能可靠地实现系统的各种功能。一个优秀的应用系统的应具有下列特点:根据软件功能要求,将系统软件分成若干个独立的部分。设计出软件的总体结构,使其结构清晰、流程合理。要树立结构化程序设计风格,各功能程序模块化、子程序化。既便于调试、链接,又便于移植、修改。建立正确的数学模型。即根据功能要求,描述各个输入和输出变量之间的数学关系,它是关系到系统好坏的重要因素。为提高软件设计的总体效率,以简明、直观法对任务进行描述,在编写应用软件之前,应绘制出程序流程图。要合理分配系统资源,包括ROM、RAM、定时/计数器、中断资源等。注意在程序的有关位置处写上功能注释,提高程序的可读性。加强软件抗干扰设计,它是提高系统应用可靠性的有利措施。本系统的软件包括以下几个程序模块:键盘处理程序;中断服务程序;正弦波发生程序及其服务程序;三角波发生程序;方波发生程序;锯齿波发生程序。3.2. 软件流程图本系统采用AT89C51单片机,用编程的方法来产生四种波形,并通过编程来切换四种波形以及波形频率的改变。具体功能有:各个波形的切换;各种参数的设定;频率增减等;数码管的显示软件调通后,通过编程器下载到AT89C51芯片中,然后插到系统中即可独立完成所有的控制。软件流程图如图3-1所示。图3-1 程序流程图3.3. 键盘扫描及初始程序设计单片机系统中,键盘扫描是CPU工作的一个主要内容之一。CPU忙于各项工作任务时,如何兼顾键盘扫描。既保证不失时机的响应键盘操作,又不过多占用CPU时间。因此,要根据应用系统中的CPU的忙、闲情况,选择好键盘的工作方式。在单片机应用系统设计中,为了节省硬件,通常采用非编码键盘,在这种键盘结构中,单片机对它的控制有三种方式:程序控制扫描方式;定时扫描工作方式;中断工作方式。1)程序控制扫描方式这种方式就是只有当单片机空闲时,才调用键盘扫描子程序,响应键盘的输入请求。2)定时扫描方式这种方式就是每隔一定的时间对键盘扫描一次。通常是利用单片机内部定时器产生1ms的定时中断,CPU响应定时器溢出中断请求,对键盘进行扫描,以响应键盘输入请求。3)中断工作方式为进一步提高CPU效率,可以采用中断扫描工作方式。即在键盘有健按下时,才执行键盘扫描,执行该键功能程序。本系统采用程序控制扫描工作方式。在该设计中的键盘的行列线连接于89C51的P2口上。键盘扫描程序自复位后就开始工作,时刻监视键盘,有无键按下。在监视键盘过程中,允许定时器中断。一旦有键按下,先延时1ms,去除键的抖动,然后关中断,不允许定时器发生中断。按键功能如表3-1所示:表3-1 按键对应功能按键功能key1键选择发波类型(1为正弦波,2为三角波,3为方波,4为方波)key2频率增加Key3频率减小按键控制源程序如下:void delay(uchar k)for(de1=0;de110;de1+) for(de2=0;de20xe8)tl=0x00;if(flag0) flag-; else flag=255;void key3(void) /键减小频率if(th0x00)tl-=0xf;if(flag255)flag+;else flag=0;void key4(void) 3.4. 中断服务程序设计采用定时器T0定时中断,根据不同的按键次数,产生不同的波形。void int1 (void) interrupt 2 /int0中断服务程序 if(P2!=0xff) delay(125);if(P2=0xff) return; if(P2=0xef) key1(); if(P2=0xdf) key2(); if(P2=0xbf) key3(); if(P2=0x7f) key4();3.5. 波形发生程序设计3.5.1. 正弦波发生程序设计其实在计算正弦波形数据的时候,并不需要算出整个02区间的每一个值,而只需计算出0中的值就行,其他区间的值都可以通过对0中的值取不同的变换。比如的值可以和0值一一对应,而2的值可以对0区间的值取反得到。计算值可以用C语言编程得到。幅度公式为Y=2.51+sin() (N=0,1,264)相应的Y值数字化后的递增量=0.0196那么每一个点相对于起一个点的递增率为A= (Y2当前的点,Y1为前一个点)所以每一个点的数字量与递增率A成一一对应关系,正弦波形数据表见表3-2。序号幅度(Y值)递增率A数字递增率数字量(十进制)12.5613530.061353313122.6226690.122669613432.6839110.183911913742.7450430.2450431214052.8060270.3060271514362.8668260.3668261814672.9274050.4274052114982.9877260.4877262415293.0477530.54775327155103.1074500.60745030158113.1667820.66678234162123.2257120.72571237165133.2842040.78420440168143.3422250.84222542170153.3997380.89973845173163.4567080.95670848176173.5131031.01310351179183.5688881.06888854182193.6240281.12402857185203.6784921.17849260188213.7322451.23224562190223.7852571.28525765193233.8374941.33749468196243.8889261.38892670198253.9395201.43952073201263.9892481.48924875203274.0380791.53807978206284.0859831.58598380208294.1329321.63293283211304.1788971.67889785213314.2238511.72385187215324.2677671.76776790218表3-2 正弦波形数据表334.3106171.81061792220344.3523781.85237894222354.3930221.89302296224364.4325261.93252698226374.4708661.970866100228384.5080192.008019102230394.5439622.043962104232404.5786742.078674106234414.6121342.112134107235424.6443212.144321109237434.6752182.175218110238444.7048032.204803112240454.7330612.233061113241464.7599732.259973115243474.7855242.285524116244484.8096992.309699117245494.8324822.332482119247504.8538602.353860120248514.8738202.373820121249524.8923512.392351122250534.9094402.409440122250544.9250782.425078123251554.9392552.439255124252564.9519632.451963125253574.9631942.463194125253584.9729412.472941126254594.9811992.481199126254604.9879622.487962126254614.9932262.493226127255624.9969892.496989127255634.9992472.499247127255645.0000002.50000012725531正弦波发生程序如下:if(fun=1) DA0832=tosinb/4*A; /正弦波 b+; 3.5.2. 三角波发生程序设计由于三角波的函数值比较容易计算,所以不必要像正弦波那样还需用表格。可直接通过如下程序段实现。else if(fun=2) /三角波 if(c128)DA0832=c*2/4*A; else DA0832=(255-c)*2/4*A; c+; 3.5.3. 方波发生程序设计方波可直接由DAC0832产生,其发生程序如下:else if(fun=3) / 方波 d+; if(d=128)DA0832=0x00; else DA0832=0xff/4*A; 3.5.4. 锯齿波发生程序设计锯齿波中的斜线用一个个小台阶来逼近,在一个周期内从最小值开始逐步递增,当达到最大值后又回到最小值,如此循环,当台阶间隔很小时,波形基本上近似于直线。适当选择循环的时间,可以得到不同周期的锯齿波。锯齿波发生原理与方波类似,只是高低两个延时的常数不同其发生程序如下:else if(fun=4) / 锯齿波 e+; DA0832=e/4*A;河南城建学院本科毕业设计(论文) 仿真结果与分析4. 仿真结果与分析4.1. 仿真和编译工具4.1.1. Proteus仿真软件有了protel、Multisim、proteus、psice等一系列的软件的存在,就此便可以以虚代实、以软代硬,独立建立一个完善的虚拟实验室。代替了在实验室和教室里的以实物进行实践的方式,可以在计算机上学习电工基础,模拟电路、数字电路、单片机应用系统等课程,并进行电路设计、仿真、调试等。因此这一系列的软件受到广大电子设计爱好者的青睐,是他们工作、学习上难得的工具软件,也因此它们在全球得到了广泛应用。其中,Proteus软件提供多达30多个元件库,元件涉及到数字和模拟、交流和直流等,有RAM、ROM、键盘、马达、LED、LCD、AD/DA、部分SPI器件、部分IC器件,编译方面支持Keil和MPLAB等编译器。它的功能强大,集电路设计、制版及仿真等多种功能于一身,不仅能够对电工、电子技术学科涉及的电路进行设计与分析,还能够对微处理器进行设计和仿真,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。它还提供多种现实存在的虚拟仪器,这些仪表有极高的输入阻抗、极低的输出阻抗,可以尽可能减少仪器对测量结果的影响。此外,Proteus软件还有图形显示功能,可以将线路上变化的信号以图形的方式实时地显示出来。对于单片机硬件电路和软件的调试,Proteus提供了两种方法:系统总体执行效果和对软件的分步调试。它还提供了比较丰富的测试信号用于电路的测试,这些测试信号包括模拟信号和数字信号。在用Proteus进行仿真和程序调试时,可以从工程的角度直接看程序运行和电路工作的过程和结果。它还提供Schematic Drawing、SPICE仿真与PCB设计功能,同时可以仿真PIC、AVR、51系列等常用的MCU,并提供周边设备的仿真,例如示波器、373、led等。4.1.2. KEIL编译软件Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果使用C语言编程,那么Keil几乎就是不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会事半功倍。Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势,与汇编相比,C语言有明显的优势,用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,是一个非常实用的编译软件。4.2. 仿真结果打开PROTEUS软件,选择所需器件连接导线,连接成功后的电路图如图4-1所示:图4-1 总体电路图打开KEIL软件,调出程序进行编译,生成HEX文件,编译窗口如图4-2所示:图4-2 编译窗口编译后没有错误就可以生成hex文件用于单片机仿真,采用PROTEUS进行单片机仿真,可以大大缩短单片机的开发周期。它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。以下为四种波形的仿真结果示例。正弦波仿真:频率分别为31HZ和260HZ。仿真结果分别如图4-3、4-4所示。图4-3 正弦波仿真输出(31HZ)图4-4 正弦波仿真输出(257HZ)三角波仿真:频率60HZ,仿真结果如图4-5所示。图4-5 三角波仿真输出方波仿真:频率86HZ,仿真结果如图4-6所示。图4-6 方波仿真输出锯齿波仿真:频率130HZ,仿真结果如图4-7所示。图4-7 锯齿波仿真输出4.3. 仿真分析本系统仿真结果,满足设计需求。实际操作灵活,使用方便。通过按键来控制输出不同的波形,在仿真输出图中可以看到,字母a、b、c、d分别对应着正弦波、三角波、方波、锯齿波,并可以利用频率增大键和减小键来控制频率的大小,同时可以通过调节电位器来控制波形的幅度。通过上述结果可以看到对应不同频率的不同波形。但是在仿真中由于DAC0832量化电平的缘故无法让该波形发生器的频率做的很高,同时频率步进的最小值为一,使得信号波形发生器的精确度有所下降,这也是本次设计中的不足之处,但总体的设计基本满足了设计的要求,顺利完成了设计主要内容。河南城建学院本科毕业设计(论文) 参考文献参考文献1 周明德.微型计算机系统原理及应用M.北京:清华大学出版社,20022 刘乐善.微型计算机接口技术及应用M.北京:航空航天大学出版社,20013 谢自美电子线路设计实验测试(第三版)M武汉:华中科技大学出版社,20064 朱清慧.张凤蕊. Proteus教程-电子线路设计制版与仿真M.北京: 清华大学 出版社5 康华光模拟电子技术基础(第五版)M北京:高等教育出版社,20066 杨翠娥.高频电子线路实验与课程设计M. 哈尔滨:哈尔滨工程大学出版社,20017 张秀国.单片机C语言程序设计M.北京:北京大学出版社,20088 钟富昭.8051单片机典型模块设计与应用M.北京:人民邮电出版社,20079 赵负图.传感器集成电路手册(第一版) M.化学工业出版社,200410 丁新民.微机原理与应用M.高等教育出版社,200811 张洪润,易涛编著.单片机应用技术教程(第二版)M.北京:清华大学出版,200312 刘坤等编著. 51单片机C语言应用开发技术大全M.人民邮电出版社,200813 潘新民,王燕芳编著.微型计算机控制技术M.北京:电子工业出版社,200414 全国大学生电子设计竞赛组委会编.第五届全国大学生电子设计竞赛获奖作品选编M.北京:北京理工大学出版社,200315 杨宁编著.单片机与控制技术M.北京:北京航空航天大学出版社,200516 Tyler, B.Digital. voltmetersJ.StudentsQuarterly Journal,1964,(138)17 Bakken, Christopher. ProteusJ. Paris Review, 2000,(157)18 Krause, P. H. The PROTEUS ProjectJ.Technological Forecasting and Social Change, 2002,(5)河南城建学院本毕业设计(论文) 致谢致谢通过本次毕业设计,我感到自己应用基础知识及专业知识解决问题的能力有了很大的提高。并且这次毕业设计的选题,是一个实际应用工程。开始的时候由于没有经验,不知如何下手,所以就去图书馆找了一些书看,尽管有许多的设计方案,可是总感觉自己还是有许多的东西弄不太清楚,于是就向老师和同学请教。经过他们的解释分析各方案之后,我决定用查表的方法来做,这样可以降低一些硬件设计的难度,初次设计应切合自己的水平。用8031需要扩展ROM,这样还要进行存储器扩展。而且现在8031实际中已经基本上不再使用,实际用的AT89S51芯片有ROM,这样把经过采样得到的数值制成表,利用查表来做就简单了。我认为程序应该不大,片内ROM应该够用的。用LED显示频率和幅值,现有集成的接口驱动芯片,波形可通过示波器进行显示,单片机接上D/A转换芯片即可,这样硬件很快就搭好了。首先,我要感谢的是我的指导老师陈英老师。陈老师在我做毕业设计的每个阶段,都给予我耐心的指导和帮助。可以说,没有陈老师的耐心指导和帮助,我是不可能顺利完成我的毕业设计的。另外,陈老师严谨的治学态度以及对待学生极端负责的精神,给我留下很深的印象,并将积极影响我今后的学习和工作。其次,我要感谢我的父母。父母为了我的成长,一直在背后默默的付出和辛勤的工作,他们的养育之恩,我将用自己的一生去回报。再次,感谢电信1班的兄弟姐妹们,是他们陪伴我度过愉快的大学四年生活!总之,感谢每一位关心过我,爱护过我的人。滴水之恩,当涌泉相报。最后,再次感谢我的指导老师陈英老师。河南城建学院本科毕业设计(论文) 附录A附录A:源程序#include #include #define uchar unsigned char#define DA0832 XBYTE0xffffuchar code tab14=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e;uchar code num 768=2,5,7,2,5,6,2,5,5,2,5,4,2,5,3,2,5,2,2,5,1,2,5,0,2,4,9,2,4,8,2,4,7,2,4,6,2,4,5,2,4,4,2,4,3,2,4,2,2,4,1,2,4,0,2,3,9,2,3,8,2,3,7,2,3,6,2,3,5,2,3,4,2,3,3,2,3,2,2,3,1,2,3,0,2,2,9,2,2,8,2,2,7,2,2,6,2,2,5,2,2,4,2,2,3,2,2,2,2,2,1,2,2,0,2,1,9,2,1,8,2,1,7,2,1,6,2,1,5,2,1,4,2,1,3,2,1,2,2,1,0,2,0,9,2,0,8,2,0,7,2,0,6,2,0,5,2,0,4,2,0,3,2,0,2,2,0,1,2,0,0,1,9,9,1,9,8,1,9,7,1,9,6,1,9,5,1,9,4,1,9,3,1,9,2,1,9,1,1,9,0,1,8,9,1,8,8,1,8,7,1,8,6,1,8,5,1,8,4,1,8,3,1,8,2,1,8,1,1,8,0,1,7,9,1,7,8,1,7,7,1,7,6,1,7,5,1,7,4,1,7,3,1,7,2,1,7,1,1,7,0,1,6,9,1,6,8,1,6,7,1,6,6,1,6,5,1,6,4,1,6,3,1,6,2,1,6,1,1,6,0,1,5,9,1,5,8,1,5,7,1,5,6,1,5,5,1,5,4,1,5,3,1,5,2,1,5,1,1,5,0,1,4,9,1,4,8,1,4,7,1,4,6,1,4,5,1,4,4,1,4,3,1,4,2,1,4,1,1,4,0,1,3,9,1,3,8,1,3,7,1,3,6,1,3,5,1,3,4,1,3,3,1,3,2,1,3,1,1,3,0,1,2,9,1,2,8,1,2,7,1,2,6,1,2,5,1,2,4,1,2,3,1,2,2,1,2,1,1,2,0,1,1,9,1,1,8,1,1,7,1,1,6,1,1,5,1,1,4,1,1,3,1,1,2,1,1,1,1,1,0,1,0,9,1,0,8,1,0,7,1,0,6,1,0,5,1,0,4,1,0,3,1,0,2,1,0,1,1,0,0,0,9,9,0,9,8,0,9,7,0,9,6,0,9,5,0,9,4,0,9,3,0,9,2,0,9,1,0,9,0,0,8,9,0,8,8,0,8,7,0,8,6,0,8,5,0,8,4,0,8,3,0,8,2,0,8,1,0,8,0,0,7,9,0,7,8,0,7,7,0,7,6,0,7,5,0,7,4,0,7,3,0,7,2,0,7,1,0,7,0,0,6,9,0,6,8,0,6,7,0,6,6,0,6,5,0,6,4,0,6,3,0,6,2,0,6,1,0,6,0,0,5,9,0,5,8,0,5,7,0,5,6,0,5,5,0,5,4,0,5,3,0,5,2,0,5,1,0,5,0,0,4,9,0,4,8,0,4,7,0,4,6,0,4,5,0,4,4,0,4,3,0,4,2,0,4,1,0,4,0,0,3,9,0,3,8,0,3,7,0,3,6,0,3,5,0,3,4,0,3,3,0,3,2,0,3,1,0,3,0,0,2,9,0,2,8,0,2,7,0,2,6,0,2,5,0,2,4,0,2,3,0,2,2,0,2,1,0,2,0,0,1,9,0,1,8,0,1,7,0,1,6,0,1,5,0,1,4,0,1,3,0,1,2,0,1,1,0,1,0,0,0,9,0,0,8,0,0,7,0,0,6,0,0,5,0,0,4,0,0,3,0,0,2,0,0,1;uchar code tosin256=0x7F,0x82,0x85,0x88,0x8B,0x8F,0x92,0x95,0x98,0x9B,0x9E,0xA1,0xA4,0xA7,0xAA,0xAD,0xB0,0xB3,0xB6,0xB8,0xBB,0xBE,0xC1,0xC3,0xC6,0xC8,0xCB,0xCD,0xD0,0xD2,0xD5,0xD7,0xD9,0xDB,0xDD,0xE0,0xE2,0xE4,0xE5,0xE7,0xE9,0xEB,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFB,0xFC,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFC,0xFB,0xFB,0xFA,0xF9,0
展开阅读全文