《基于Proteus的波形发生器仿真设计(共37页).doc》由会员分享,可在线阅读,更多相关《基于Proteus的波形发生器仿真设计(共37页).doc(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上基于Proteus的波形发生器仿真设计作者姓名:孙亚飞 专业班级: 指导教师:吴建平摘 要本文实现了多功能波形发生器的设计。系统采用AT89C51单片机控制,DAC0832完成模数转换,键盘控制波形的频率、幅度。发生器产生三角波、方波、正弦波等波形,波形的频率可通过键盘控制,波形清晰、频率调整十分方便、稳定性好,产生合成波形只需修改源程序,不需改装电路。单片机的输出数字信号通过DAC0832转换成模拟信号,接入示波器就可以清晰的显示出系统产生的波形。该系统由仿真软件产生波形,具有线路简单、结构紧凑、价格低廉、性能优越等特点。关键词 :波形发生器,AT89S52单片机,
2、D/ A转换专心-专注-专业Based on the simulation design Proteus waveform generatorABSTRACT:In this paper, implementing the design of multi-waveform generator. The system make use of AT89S52 micro controller, and DAC0832 complete conversion, keyboard control waveform frequency and amplitude. System produce tria
3、ngle wave, square wave, sine wave and other wave, wave frequency can be controlled through the keyboard, a clear waveform, adjust conveniently. The system stability and produce more complex waveforms simply through modify the source, without conversion circuit. The output of the microcontroller s di
4、gital signal convert to analog signals through the DAC0832, accessing to the oscilloscope can display a clear waveform what the system produce. The system is simple, compact, low cost, superior performance and so on.Key words : Waveform Generator MCU ADC 目录第1章 前 言1.1波形发生器的概述信号源有很多种,包括正弦波信号源、函数发生器、脉冲
5、发生器、扫描发生器、任意波形发生器、合成信号源等。一般来讲任意波形发生器是一种特殊的信号源,综合具有其它信号源生成能力,因而适合各种仿真实验的需要。在基础实验中设计一种电路,需要验证其性能、可靠性与稳定性,就需要给它施加理想的波形以辨别真伪。如可使用信号源的DC补偿功能对固态电路控制DC偏压电平,可对一个怀疑有故障的数字电路,利用信号源的方波输出作为数字电路的时钟,同时使用方波加DC补偿产生有效的逻辑电平模式输出,观察该电路的运行状况,而证实故障缺陷的地方,总之,利用任意波形发生器这方面的基础功能能仿真基础实验室所必须的信号1。在实际的电子环境所设计的电路在运行中,由于各种干扰和响应的存在,实
6、际电路往往存在各种信号缺陷和瞬变信号,例如过脉冲、尖峰、阻尼瞬变等(见图1-1,图1-2),这些情况的发生,如在设计之初没有考虑进去,有的将会产生灾难性的后果。例如图1-1中a处过剑峰脉冲,如果给一个抗过冲能力差的电路,将可能会导致整个设备“烧坏”。图1-1 尖峰干扰脉冲 图1-2 阻尼瞬变由于任意波形发生器特殊的功能,为了增强任意波形生成能力,它往往依赖计算机通讯输出波形数据。在计算机传输中,通过波形编辑软件生成波形,有利于扩充仪器的能力,更进一步仿真模拟实验。同时由于编辑一个任意波形有时需要花费很长的时间和精力,并且每次编辑的波形可能有所差异,一般会在任意波形发生器内配置一定数量的非易失性
7、存储器。可以把所需要的波形从计算机接口下载到任意波形发生器的存储器中。综上所述,不论是在生产还是在科研与教学上,任意波形发生器是电子工程师信号仿真实验的最佳工具。随着我国经济和科技的发展,对相应的测试仪器和测试手段也提出了更高的要求,而任意波形发生器己成为测试仪器中至关主要的一类,因此开发任意波形发生器具有重大意义。1.2国内外波形发生器的发展状况运用DDS技术是设计任意波形信号发生器的一种通用手段,DDS不仅可以产生正弦波同时也可以产生任意波,这是其他频率合成方式所没有,任意波在各个领域有着广泛的应用。通过DDS这种方法产生任意波是一种简单、低成本的方法,通过增加波形点数可以使输出达到很高的
8、精度,这都是其他方法所无法比拟的。自80年代以来各国都在研制DDS产品,并广泛的应用于各个领域。其中以AD公司的产品比较有代表性。如AD7008、AD9850、AD985l、AD9852、AD9858等。其系统时钟频率从30MHz到300MHz不等,其中的AD9858系统时钟更是达到了lGHz。这些芯片还具有调制功能。如AD7008可以产生正交调制信号,而AD9852也可以产生FSK、PSK、线性调频以及幅度调制的信号。这些芯片集成度高,内部都集成了D/A转换器,精度最高可达12bit。同时都采用了一些优化设计来提高性能。如这些芯片中大多采用了流水技术,通过流水技术的使用,提高了相位累加器的工
9、作频率,从而使得DDS芯片的输出频率可以进一步提高。通过运用流水技术在保证相位累加器工作频率的前提下,相位累加器的字长可以设计得更长,如AD9852的相位累加器达到了48位。而不是之前型号的32位,这样输出信号的频率分辨率大大提高了。同时为了抑止杂散,这些芯片大多采用了随机抖动法提高无杂散动态范围(这是由于DDS的周期性,输出杂散频谱往往表现为离散谱线,随机抖动技术使离散谱线均匀化,从而提高输出频谱的无杂散动态范围)。运用DDS技术生产的DDS任意波型信号发生器是较新的一类信号源,并且已经广泛投入使用。它不仅能产生传统函数信号发生器能产生的正弦波、方波、三角波、锯齿波,还可以产生任意编辑的波形
10、。由于DDS的自身特点,还可以很容易的产生一些数字调制信号,如FSK、PSK等。一些高端的信号发生器甚至可以产生通讯信号。同时输出波形的频率分辨率、频率精度等指标也有很大的提高。如HP公司的HP33120可以产生l0mHz15MHz的正弦波和方波。同时还可以产生l0mHz5MHz的任意波形。还具备调制功能,可以产生AM、FM、FSK、猝发、扫频等信号。HP公司的HP33250可以产生1uHz80MHz的正弦波和方波,产生1uHz到25MHz的任意波形。BK PRECISION公司的4070A型函数级任意波形发生器产生的正弦波和方波输出频率DC-215MHz,频率分辨率10mHZ。同时还具有AM
11、、FM、PM、SSB、BPSK、FSK、猝发、DTMFGeneration和DTMFDetection的功能。并且具有了和PC机良好的接口,可以通过WINDOWS界面的程序进行任意波形的编辑2。除了在仪器中的应用外,DDS在通信系统和雷达系统中也有很重要的用途。通过DDS可以比较容易的产生一些通信中常用的调制信号如:频移键控(FSK)、二进制相移键控(BPSK)和正交相移键控(QPSK)等。DDS可以产生两路相位严格正交的信号,在正交调制和解调中的到广泛应用,是一种很好的本振源。为了进一步提高DDS的输出频率,产生了很多DDS与其他技术结合的频率合成方法。如当输出信号是高频窄带信号的时候可以用
12、混频滤波的方法扩展DDS的输出,也可以利用DDS的频谱特性来产生高频信号,如利用较高的镜像频率输出。DDS和PLL相结合的方法也是一种有效的方法。这种方法兼顾了两者的优点,既有较高的频率分辨率,又有较高的频谱纯度。DDS和PLL相结合一般有两种实现方法:DDS激励PLL的锁相倍频方式和PLL内插DDS方式。在雷达中通过DDS和PLL相结合可以产生毫米波线性调频信号,DDS移相精度高、频率捷变快和发射波形可捷变等优点在雷达系统中也可以得到很好的发挥4。可见,基于DDS技术的任意波形发生器的是能实现高稳定度、高精度、高分辨率的要求,频率切换速度快,体积小、价格便宜的特点,是一种很有发展前途的信号源
13、。所以本设计采用此方案。近些年来,随着可编程逻辑器件(FPGA、CPLD等)的广泛应用,功能的不断强大,以及快速算法的不断出现。任意波形发生器也向自动化、数字化、高精度化方向发展。早期的DDS系统使用分离的数字器件搭接,随着整个电路系统运行频率的升高,采用分离器件构建的DDS电路有其自身无法克服的缺点,主要表现在电磁兼容和系统工作频率上。后来出现的专用DDS芯片极大的推动了DDS技术的发展,但专用DDS芯片价格昂贵,且无法实现任意波形输出,近来,CPLD及FPGA的发展为实现DDS提供了更好的技术手段。FPGA(Field Programmable Gate Array) 是目前广泛采用的一种
14、可编程器件,它的应用不仅使得数字电路系统的设计非常方便,并且还大大缩短了系统研制的周期,缩小了数字电路系统的体积和所用芯片的品种。而且它的时钟频率可达到几百兆赫兹,加上它的灵活性和高可靠性,非常适合用于实现波形发生器的数字电路部分。1.3研制波形发生器的目的及意义任意波形发生器是信号源的一种,它是具有信号源所具有的特点,更因它高的性能优势而倍受人们青睐。信号源主要给被测电路提供所需要的己知信号(各种波形),然后用其它仪表测量感兴趣的参数。可见信号源在各种实验应用和试验测试处理中,它不是测量仪器,而是根据使用者的要求,作为激励源,仿真各种测试信号,提供给被测电路,以满足测量或各种实际需要。目前我
15、国己经开始研制任意波形发生器,并取得了可喜的成果。但总的来说,我国任意波形发生器还没有形成真正的产业。就目前国内的成熟产品来看,多为一些PC仪器插口,独立的仪器和VX工系统的模块很少,并且我国目前在任意波形发生器的种类和性能都与国外同类产品存在较大的差距,因此加紧对这类产品的研制显得迫在眉睫。 见于这种情况下,本文实现了多功能波形发生器的设计。系统采用AT89C51单片机,DAC0832完成模数转换,键盘控制波形的频率、幅度。系统产生三角波、方波、正弦波等波形,波形的频率可通过键盘控制,波形清晰、频率调整十分方便、稳定性好,产生较复杂的波形只需修改源程序,不需改装电路。将单片机的输出数字信号通
16、过DAC0832转换成模拟信号,接入示波器就可以清晰的显示出系统产生的波形。本系统具有线路简单、结构紧凑、价格低廉、性能优越等特点。第2章 Proteus的简介与使用2.1 Proteus的简介Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有近20年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系
17、统配置的虚拟仪器如示波器、逻辑分析仪等,Proteus能够很容易的为用户建立了完备的电子设计开发环境。 Proteus 产品系列也包含了革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。不愧为一款非常优秀的单片机仿真软件。Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被电子世界在其对PCB设计系统的比较文章中评为最好产品“The Route to PCB CAD”。Proteus 产品系列也包含了我们革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件
18、一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。 其功能模块:易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真; ARES PCB设计. PROSPICE 仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘、开关、按钮、LED甚至LCD显示CPU模型. 支持许多通用的微控制器,如PIC,*R,HC11以及8051; 交互的装置模型包括:LED和LCD显示,RS232终端,通用键盘; 强大的调试工具,包括寄存器和存储器,断点和
19、单步模式; IAR C-SPY 和Keil uVision2等开发工具的源层调试; 应用特殊模型的DLL界面-提供有关元件库的全部文件。 Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。2.2 Proteus界面进入Proteus ISIS双击桌面上的ISIS 6 Professional图标
20、或者单击屏幕左下方的“开始”“程序”“Proteus 6 Professional” “ISIS 6 Professional”,出现如图2-1所示屏幕,表明进入Proteus ISIS集成环境。图2-1 启动时屏幕Proteus ISIS的工作界面是一种标准的Windows界面,如图2-2所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。图2-2 Proteus 工作界面2.3 基本操作2.3.1 图形编辑窗口在图形编辑窗口内完成电路原理图的编辑和绘制。为了方便作图坐标系统(CO-ORDI
21、NATE SYSTEM)ISIS中坐标系统的基本单位是10nm,主要是为了和Proteus ARES保持一致。但坐标系统的识别(read-out)单位被限制在1th。坐标原点默认在图形编辑区的中间,图形的坐标值能够显示在屏幕的右下角的状态栏中。点状栅格(The Dot Grid)与捕捉到栅格(Snapping to a Grid)。编辑窗口内有点状的栅格,可以通过View菜单的Grid命令在打开和关闭间切换。点与点之间的间距由当前捕捉的设置决定。捕捉的尺度可以由View菜单的Snap命令设置,或者直接使用快捷键F4、F3、F2和CTRL+F1。如图2-3所示。若键入F3或者通过View菜单的选
22、中Snap 100th。 图2-3 View菜单选项鼠标在图形编辑窗口内移动时,坐标值是以固定的步长100th变化,这称为捕捉, 如果要确切地看到捕捉位置,可以使用View菜单的X-Cursor命令,选中后将会在捕捉点显示一个小的或大的交叉十字。实时捕捉(Real Time Snap)当鼠标指针指向管脚末端或者导线时,鼠标指针将会被捕捉到这些物体,这种功能被称为实时捕捉,该功能可以使你方便的实现导线和管脚的连接。可以通过Tools菜单的Real Time Snap 命令或者是CTRL+S切换该功能。可以通过View菜单的Redraw命令来刷新显示内容,同时预览窗口中的内容也将被刷新。当执行其它
23、命令导致显示错乱时可以使用该特性恢复显示。视图的缩放与移动可以通过如下几种方式: 用鼠标左键点击预览窗口中想要显示的位置,这将使编辑窗口显示以鼠标点击处为中心的内容。 在编辑窗口内移动鼠标,按下SHIFT键,用鼠标“撞击”边框,这会使显示平移。我们把这称为Shift-Pan。 用鼠标指向编辑窗口并按 缩放键或者操作鼠标的滚动键,会以鼠标指针位置为中心重新显示。2.3.2 预览窗口该窗口通常显示整个电路图的缩略图。在预览窗口上点击鼠标左键,将会有一个矩形蓝绿框标示出在编辑窗口的中显示的区域。 其他情况下,预览窗口显示将要放置的对象的预览。这种Place Preview特性在下列情况下被激活: 当
24、一个对象在选择器中被选中; 当使用旋转或镜像按钮时; 当为一个可以设定朝向的对象选择类型图标时(例如:Component icon, Device Pin icon等等); 当放置对象或者执行其他非以上操作时,place preview会自动消除; 对象选择器(Object Selector)根据由图标决定的当前状态显示不同的内容。显示对象的类型包括:设备,终端,管脚,图形符号,标注和图形; 在某些状态下,对象选择器有一个Pick切换按钮,点击该按钮可以弹出库元件选取窗体。通过该窗体可以选择元件并置入对象选择器,在今后绘图时使用。2.3.3 图形编辑的基本操作1.对象放置(Object Pla
25、cement)放置对象的步骤如下(To place an object): 根据对象的类别在工具箱选择相应模式的图标(mode icon)。 根据对象的具体类型选择子模式图标(sub-mode icon)。 如果对象类型是元件、端点、管脚、图形、符号或标记,从选择器里(selector)选择你想要的对象的名字。对于元件、端点、管脚和符号,可能首先需要从库中调出。 如果对象是有方向的,将会在预览窗口显示出来,你可以通过预览对象方位按钮对对象进行调整。 最后,指向编辑窗口并点击鼠标左键放置对象。2.选中对象(Tagging an Object)用鼠标指向对象并点击右键可以选中该对象。该操作选中对象
26、并使其高亮显示,然后可以进行编辑。选中对象时该对象上的所有连线同时被选中。 要选中一组对象,可以通过依次在每个对象右击选中每个对象的方式。也可以通过右键拖出一个选择框的方式,但只有完全位于选择框内的对象才可以被选中。在空白处点击鼠标右键可以取消所有对象的选择。3.删除对象(Deleting an Object)用鼠标指向选中的对象并点击右键可以删除该对象,同时删除该对象的所有连线。4.拖动对象(Dragging an Object)用鼠标指向选中的对象并用左键拖曳可以拖动该对象。该方式不仅对整个对象有效,而且对对象中单独的labels也有效。如果Wire Auto Router功能被使能的话,
27、被拖动对象上所有的连线将会重新排布或者fixed up。这将花费一定的时间(10秒左右),尤其在对象有很多连线的情况下,这时鼠标指针将显示为一个沙漏。如果你误拖动一个对象,所有的连线都变成了一团糟,你可以使用Undo命令撤消操作恢复原来的状态。5.拖动对象标签(Dragging an Object Label)许多类型的对象有一个或多个属性标签附着。例如,每个元件有一个“reference”标签和一个“value”标签。可以很容易地移动这些标签使你的电路图看起来更美观。移动标签的步骤如下(To move a label): 选中对象; 用鼠标指向标签,按下鼠标左键; 拖动标签到你需要的位置。如
28、果想要定位的更精确的话,可以在拖动是改变捕捉的精度(使用F4、F3、F2、CTRL+F1键); 释放鼠标。6.调整对象大小(Resizing an Object)子电路(Sub-circuits)、图表、线、框和圆可以调整大小。当选中这些对象时,对象周围会出现黑色小方块叫做“手柄”,可以通过拖动这些“手柄”来调整对象的大小。调整对象大小的步骤如下(To resize an object): 选中对象; 如果对象可以调整大小,对象周围会出现黑色小方块,叫做“手柄”; 用鼠标左键拖动这些“手柄”到新的位置,可以改变对象的大小。在拖动的过程中手柄会消失以便不和对象的显示混叠。7.调整对象的朝向(Re
29、orienting an Object)许多类型的对象可以调整朝向为0, 90, 270 ,360或通过x轴y轴镜象。当该类型对象被选中后,“Rotation and Mirror”图标会从兰色变为红色,然后就可以来改变对象的朝向。调整对象朝向的步骤如下(To reorient an object): 选中对象; 用鼠标左键点击Rotation图标可以使对象逆时针旋转,用鼠标右键点击Rotation图标可以使对象顺时针旋转; 用鼠标左键点击Mirror图标可以使对象按x轴镜象,用鼠标右键点击Mirror图标可以使对象按y轴镜象。毫无疑问当Rotation and Mirror图标是红色时,操作
30、他们将回改变某个对象,即便你当前没有看到它,实际上,这中颜色的指示在你想对将要放置的新对象操作时是格外有用的。当图标是红色时,首先取消对象的选择,此时图标会变成兰色,说明现在可以“安全”调整新对象了。8.拷贝所有选中的对象(Copying all Tagged Objects)拷贝一整块电路的方式(To copy a section of circuitry):选中需要的对象,具体的方式参照上文的Tagging an Object部分; 用鼠标左键点击Copy图标; 把拷贝的轮廓拖到需要的位置,点击鼠标左键放置拷贝; 重复步骤3放置多个拷贝; 点击鼠标右键结束。当一组元件被拷贝后,他们的标注自
31、动重置为随机态,用来为下一步的自动标注做准备,防止出现重复的元件标注。9.移动所有选中的对象(Moving all Tagged Objects)移动一组对象的步骤是(To move a set of objects): 选中需要的对象,具体的方式参照上文的Tagging an Object部分; 把轮廓拖到需要的位置,点击鼠标左键放置。你可以使用块移动的方式来移动一组导线,而不移动任何对象。10.删除所有选中的对象(Deleting all Tagged Objects)删除一组对象的步骤是(To delete a group of objects): 选中需要的对象,具体的方式参照上文的T
32、agging an Object部分; 用鼠标左键点击Delete图标。如果错误删除了对象,可以使用Undo命令来恢复原状。2.3.4 原理图的绘制1.画导线Proteus的智能化可以在你想要画线的时候进行自动检测。当鼠标的指针靠近一个对象的连接点时,跟着鼠标的指针就会出现一个“”号,鼠标左键点击元器件的连接点,移动鼠标(不用一直按着左键)就。出现了粉红色的连接线变成了深绿色。如果你想让软件自动定出线路径,只需左击另一个连接点即可。这就是Proteus的线路自动路径功能(简称WAR),如果你只是在两个连接点用鼠标左击,WAR将选择一个合适的线径。WAR可通过使用工具栏里的“WAR”命令按钮来关
33、闭或打开,也可以在菜单栏的“Tools”下找到这个图标。如果你想自己决定走线路径,只需在想要拐点处点击鼠标左键即可。在此过程的任何时刻,你都可以按ESC或者点击鼠标的右键来放弃画线。2. 画总线为了简化原理图,我们可以用一条导线代表数条并行的导线,这就是所谓的总线。点击工具箱的总线按钮,即可在编辑窗口画总线。3. 画总线分支线点击工具的按钮,画总线分支线,它是用来连接总线和元器件管脚的。画总线的时候为了和一般的导线区分,我们一般喜欢画斜线来表示分支线,但是这时如果WAR功能打开是不行的,需要把WAR功能关闭。画好分支线我们还需要给分支线起个名字。右键点击分支线选中它,接着左键点击选中的分支线就
34、会出现分支线编辑对话框同端是连接在一起的,放置方法是用鼠标单击连线工具条中图标或者执行PlaceNet Label菜单命令,这时光标变成十字形并且将有一虚线框在工作区内移动,再按一下键盘上的Tab键,系统弹出网络标号属性对话框,在Net项定义网络标号比如PB0,单击OK,将设置好的网络标号放在第(1)步放置的短导线上(注意一定是上面),单击鼠标左键即可将之定位。4. 放置总线将各总线分支连接起来方法是单击放置工具条中图标或执行PlaceBus菜单命令,这时工作平面上将出现十字形光标,将十字光标移至要连接的总线分支处单击鼠标左键,系统弹出十字形光标并拖着一条较粗的线,然后将十字光标移至另一个总线
35、分支处,单击鼠标的左键,一条总线就画好了。5. 跳线跳线在电路板设计中经常使用,但在一般的教科书中往往没有谈及这个问题,只有靠设计者在设计中自己去摸索。跳线,简单地说就是在电路板中用一根将两焊盘连接的导线,也有人把它称为跨接线。多使用于单面板、双面板设计中,特别是单面板设计中使用得更多。在单面板的设计中,当有些铜膜线无法连接,即使Prote199SE给连通了,进行电气检查也是错的,系统会显示错误标志。通常解决的办法是使用跳线,跳线的长度应该选择如下几种:6mm、8mm和10mm。放置跳线的方法是在布线层(底层布线)用人工布线的方式放置,当遇到相交线的时候就用过孔走到背面(顶层)进行布线,跳过相
36、交线然后回到原来层面(底层)布线。值得说明的是为了便于识别,最好在顶层的印丝层(Top Overlay)做上标志,在图3中有两根跳线。在PCB板安装元件的时候,跳线就用短的导线或者就用剪下元件引脚上多余的部分安装。6. 放置线路节点如果在交叉点有电路节点,则认为两条导线在电气上是相连的,否则就认为它们在电气上是不相连的。我们发现ISIS在画导线时能够智能地判断是否要放置节点。但在两条导线交叉时是不放置节点的,这时要想两个导线电气相连,只有手工放置节点了。点击工具箱的节点放置按钮+,当把鼠标指针移到编辑窗口,指向一条导线的时候,会出现一个“”号,点击左键就能放置一个节点。第3章 基于Proteu
37、s波形发生器仿真设计3.1 单片机AT89C51概述单片机广泛应用于商业:诸如调制解调器,电动机控制系统,空调控制系统,汽车发动机和其他一些领域。这些单片机的高速处理速度和增强型外围设备集合使得它们适合于这种高速事件应用场合。然而,这些关键应用领域也要求这些单片机高度可靠。健壮的测试环境和用于验证这些无论在元部件层次还是系统级别的单片机的合适的工具环境保证了高可靠性和低市场风险。Intel 平台工程部门开发了一种面向对象的用于验证它的AT89C51 汽车单片机多线性测试环境。这种环境的目标不仅是为AT89C51 汽车单片机提供一种健壮测试环境,而且开发一种能够容易扩展并重复用来验证其他几种将来
38、的单片机。开发环境连接了AT89C51。本文讨论了这种测试环境的设计和原理,它的和各种硬件、软件环境部件的交互性,以及如何使用AT89C51。3.1.1 AT89C51单片机的功能参数8031 CPU与MCS-51 兼容 4K字节可编程FLASH存储器 全静态工作:0Hz-24KHz 三级程序存储器保密锁定 128*8位内部RAM 32条可编程I/O线 两个16位定时器/计数器 6个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 图3-1 AT89C51芯片图3.1.2 单片机管脚功能说明 Vcc:电源电压; GND:地; P0 口:P0 口是一组8 位漏极开路型双向I/
39、O 口,也即地址/数据总线复用。作为输出口用时,每位能吸收电流的方式驱动8 个TTL 逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0 口接受指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻; P1 口:P1 是一个带内部上拉电阻的8 位双向I/O 口,P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信
40、号拉低时会输出一个电流(IIL)。Flash 编程和程序校验期间,P1 接受低8 位地址; P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16 位四肢的外部数据存储器(例如执行MOVX DPTR指令)时,P2 口送出高8 位地址数据,在访问8 位地址的外部数据存储器(例如执行MOVX RI 指令)时,P2 口线上的内容(也即特殊功能寄
41、存器(SFR)区中R2 寄存器的内容),在整个访问期间不改变。Flash 编程和程序校验时,P2 也接收高位地址和其他控制信号; P3 口:P3 是一个带有内部上拉电阻的8 位双向I/O 口,P3 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号; RST:复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位; ALE/PROG:当
42、访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的1/6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是,每当访问外部数据存储器时将跳过一个ALE 脉冲。对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元D0 位置位,可禁止ALE 操作。该位置位后,只有一条MOVX 和MOVC 指令ALE 才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 无效; PSEN:程序存储允许输出是外部程序
43、存储器的读选通型号,当89C51 由外部存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN 信号不出现; EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000HFFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA 端状态。如EA 端为高电平(接Vcc 端),CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12v 的编程允许电源Vpp,当然这必须是该器件使用12v 编程电压Vpp XTAL1:振荡器反相放大器及内部时钟
44、发生器的输入端; XTAL2:振荡器反相放大器的输出端。89C51 中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1 和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图5。外接石英晶体或陶瓷谐振器及电容C1、C2 接在放大器的反馈回路中构成并联振荡电路。对电容C1、C2 虽没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性,如果使用石英晶体,我们推荐电容使用30Pf10 Pf,而如使用陶瓷谐振器建议选择40Pf10Pf。用户也可以采用外部时钟。这种
45、情况下,外部时钟脉冲接到XTAL1 端,即内部时钟发生器的输入端XTAL2 则悬空。3.2 总体设计波形发生器原理框图如下所示。波形的产生是通过AT89C51 执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。在AT89C51的P1口接3个按扭,通过软件编程来选择各种波形和频率。此方案的有点是电路原理比较简单,实现起来比较容易。缺点是,采样频率由单片机内部产生故使整个系统的频率降低。电路原理框图如3-2所示。MCU键盘DAC0832信号放大信号显示图3-2 系统原理框图3.2.1 单片机电路AT89C51功能:形成扫描码,键值识别
46、、键处理、参数设置;形成显示段码;产生定时中断;形成波形的数字编码,并输出到D/A接口电路和显示驱动电路。 AT89C51外接12M晶振作为时钟频率。并采用电源复位设计。复位电路采用上电复位,它的工作原理是,通电时,电容两端相当于短路,于是RST引脚上为高电平,然后电源通过对电容充电。RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始工作。 AT89C51的P0口做为D/A转换芯片0832的接口。用定时/计数器作为中断源。不同的频率值对应不同的定时初值,允许定时器溢出中断。定时器中断的特殊功能寄存器设置如下: 定时控制寄存器TCON20H; 工作方式选择寄存器TMOD=01H; 中断允
47、许控制寄存器IE=82H。 AT89C51单片机原理接口如图3-3:图3-3 单片机电路图3.2.2 D/A电路及接口 功能:将波形样值的编码转换成模拟值,完成双极性的波形输出。DAC0832是一个具有两个输入数据寄存器的8位DAC。目前生产的DAC芯片分为两类,一类芯片内部设置有数据寄存器,不需要外加电路就可以直接与微型计算机接口。另一类芯片内部没有数据寄存器,输出信号随数据输入线的状态变化而变化,因此不能直接与微型计算机接口,必须通过并行接口与微型计算机接口。DAC0832是具有20条引线的双列直插式CMOS器件,它内部具有两级数据寄存器,完成8位电流D/A转换,故不需要外加电路。 单片机向0832发送数字编码,产生不同的输出。先利用采样定理对各波形进行抽样,然后把各采样值进行编码,的到的数字量存入各个波形表,执行程序时通过查表方法依次取出,经过D/A转换后输出就可以得到波形。假如N个点构成波形的一个周期,则0832输出N个样值点后,样值点形成运动轨迹,即一个周期。重复输出N个点,成为第二个周期。利用单片机的晶振控制输出周期的速度,也就是控制了输出的波形的频率。这样就控制了输出的波形及其幅值和频率。D/A转换电路原理如图3-4:图3-4 D/A电路图3.3 系统软件设计3.3.
限制150内