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

下载本文档

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

文档简介

陕西理工学院毕业论文(设计)虚拟波形发生器设计摘要 本文提出了一种基于Visual Basic实现虚拟波形发生器软件的设计方案。简单介绍了虚拟仪器的发展历程和利用VB语言对该软件的设计意义,详细的叙述了软件的设计思路、软件的设计过程。本软件包含了正弦波、方波、三角波和锯齿波等波形的发生,波形的保存和打印,以及两种以上波形的比较等功能。经过实际测试表明,该软件能够实现对波形参数的调节及上述功能,达到了预期的设计目的。关键词 可视化语言; 波形; 虚拟; 波形比较Design of Virtual Waveform Generator Abstract: This paper suggests the design proposal of software of Visual Basic-based virtual Waveform Generator. A brief introduction of the development of virtual instrument and the significance of design the software bases on VB have discussed. Then describe the design idea and process of the software in detail. The software can create lots kind of wave, such as sine wave, square-wave, triangular wave, saw-tooth wave and so on. It also can preserve and print the waveform. Another function is comparing more than two waveforms. After the actual tests, it has shown that this software can realize to the waveform parameter adjustable and the functions mentioned above. In a word, it has achieved the anticipated design goal.Key words: Visual language; waveform; Virtual; waveform comparing目录引言1第一章 概述21.1 本课题的研究意义21.2国内外的研究现状及发展趋势21.3 Visual Basic语言简介31.4 本设计的研究思路4第二章 虚拟波形发生器的设计方案论证42.1 通用信号发生器的原理42.2波形发生器的基本原理52.3设计方案比较72.3.1软件的比较72.3.2设计方案的比较82.3.3最后方案的确定8第三章 虚拟波形发生器的设计过程93.1 用户界面对象的建立93.2 属性的设置93.3 所需控件简单介绍93.4 建立的界面103.5 对象事件过程的建立及编程123.5.1初始化界面的代码编辑123.5.2波形发生界面的代码编辑133.5.3波形比较界面的代码编辑193.6 程序设计中用到的几个关键的循环语句203.7静态变量223.8 绘图223.9 保存和打印23第四章 系统软件的测试与运行结果分析254.1 软件测试的目的254.2 软件测试的方法254.3软件的运行结果254.4 生成.exe可执行文件304.5 结果分析304.6 后记与展望31总结32致谢33参考文献34附录A35附录B38附录C43引言目前,虚拟电子设计平台在电子设计技术中的应用越来越广泛,它与传统的电子设计技术的显著差别是借助于计算机及相关的电子设计与仿真软件来进行的,其中引入了一个很重要的概念虚拟仪器,借助于虚拟仪器,设计人员可以很方便的在虚拟实验平台上设计各种电子电路,并通过仿真及时验证电路设计的正确与否,利用这种方式可以提高电子设计的效率,缩短电子电路的开发周期。本文主要介绍了虚拟波形发生器的设计,在具体的设计过程中我们考虑到了Visual Basic语言的强大功能,从而利用Visual Basic 6.0软件来完成这个设计。在课题的设计过程中涉及到了我们在本科四年学过的几门专业课知识。随着电子技术和计算机技术的飞速发展,电子电路及其应用系统设计手段也越来也越先进。传统的电子电路与系统设计方法,周期长、耗材多、效率低,难以满足电子技术飞速发展的要求。虚拟仪器是指以计算机(主要是Pc机)为核心,将计算机和测量系统融合于一体,用计算机软件代替传统仪器的某些硬件的功能,用计算机的显示器代替传统仪器物理面板的测量仪器。“虚拟”可以从两个方而来理解:其一,传统仪器中的部分硬件被软件所代替,但功能依然存在;其二,改变软件即可改变仪器功能,从而用同一套硬件系统可实现多种传统仪器的功能。因此,虚拟仪器能最大限度的满足各种测量系统的需要,可以很方便地通过修改软件来修改或增减仪器的功能,从而真正体现了“软件就是仪器”这一新概念。虚拟仪器的出现,彻底改变了传统仪器的结构固定、功能单一、价格昂贵、可扩展性差等不足,以其所具有的灵活方便的功能扩展、美观友好的人机界面、得心应手的操作、优良的性能价格比和用户可自行定义仪器功能等一系列优点,在短短几年时间内迅速受到广泛关注。我们这次所设计的虚拟波形发生器主要应用Visual Basic编程来实现,软件实现的主要过程就是编程。一个完整的虚拟波形发生器包含三个部分,硬件驭动程序部分;虚拟面板部分;信号的后期处理部分。由于我们时间和技术的有限就只实现了波形的发生。虚拟波形发生器是一种可以同时产生方波、三角波和正弦波的专用波形发生软件。虚拟波形发生器的功能是产生具有指定特征,例如频率、幅度、形状以及占空比的波形,有时会通过适当的控制信号,将这些特征设计成可在外部编程的。一般来说,模拟信号发生器是利用某些反馈形式以及像电容那样用其特征与事件有关的器件仪器来实现。而软件是通过编程来实现这一功能。毕业设计是对我们四年来所学知识的全面回顾和考察,为了把我们的设计能更为清晰明确的展现出来,我们以书面的形式将其写下来。在下面的文章中我主要介绍了此课题的设计方案、设计过程以及所遇到的问题的解决,最终得出的结论和经验。第一章 概述随着信息时代的到来,越来越多的高新技术应用到社会的各个领域中来,而作为信息技术发展重要驱动力的“虚拟现实”技术也越来越多地应用到规划领域中来。虚拟现实(VirtualReality,简称VR),是一种基于可计算信息的沉浸式交互环境,具体地说,就是采用以计算机技术为核心的现代高科技生成逼真的视、听、触觉一体化的特定范围的虚拟环境,用户借助必要的设备以自然的方式与虚拟环境中的对象进行交互作用、相互影响,从而产生亲临等同真实环境的感受和体验。虚拟现实技术的核心是模拟和仿真。本文着重论述了虚拟技术在电子信息领域的应用。1.1 本课题的研究意义随着电子技术的发展,波形发生器已经广泛的应用在通信、控制、测量等各个领域。同时,波形发生器在电子测量、测试仪器中都有广泛的应用,在科研和工业生产中起着重要的作用。传统的电子电路与系统设计方法,周期长、耗材多、效率低,难以满足电子技术飞速发展的要求。在计算机飞速发展的今天,虚拟波形发生器应运而生。所谓虚拟波形发生器就是采用计算机的虚拟技术,模拟常用波形发生器的操作和功能。具体来讲,虚拟波形发生器是使用个人计算机及其信号采集接口电路来捕捉信号波形,并通过图形用户界面来模拟波形发生器的操作面板,对信号完成测量、测试、并可实现工业过程自动控制。虚拟仪器的出现,彻底改变了传统仪器的结构固定、功能单一、价格昂贵、可扩展性差等不足,以及所具有的灵活方便的功能扩展、美观友好的人机界而、得心应手的操作、优良的性能价格比和用户可自行定义仪器功能等一系列优点. 本课题是基于Visual Basic 6.0纯软件设计,完成波形发生器的基本功能,如:幅度、周期等参数的可调,波形的打印、保存,以及波形之间的比较等功能。在设计中我们选用Visual Basic的自带控件进行图像的绘制和显示,主要应用的是图形操作方面的知识。Visual Basic具有丰富的图形功能,不仅可以通过图形控件进行图形和绘制操作。还可以通过图形方法在窗体或图形框上输入文字和图形。VB的图形方法还可以作用于打印机对象。可以通过图形绘制实现波形的产生,是基于虚拟仪器技术的一种全新方法,与传统的方法比较有明显的优点,其构成简单、适用范围广、实用性强、具有广阔的市场应用前景。产生的波形可以保存在磁盘中或从打印机打印出来备份,稳定、无闪烁。具有很高的研究价值。1.2国内外的研究现状及发展趋势在我国,清华大学、北京航空航天大学、哈尔滨工业大学等科研教学单位也已经开展了虚拟领域的研究工作。当前我国虚拟技术应用的重点研究方向是基于我国国情,进行产品的三维虚拟设计、加工过程仿真和产品装配仿真,主要是研究如何生成可信度高的产品虚拟样品,在产品设计阶段能够以较高的置信度预测所设计产品的最终性能和可制造性。在对产品性能具有高科技含量要求的行业中,如航空航天、军事、精密机床、微电子等领域,随着研究的不断深入和相关技术的发展,虚拟技术必将得到日益广泛的应用。此外,国内己有几家企业在研制PC虚拟仪器,哈工大仪器王电子有限责任公司就是其中之一,它的产品已达到一定的批量。其主要产品有数字存储示波器系列、任意波形发生器及频率计系列、多通道大容量波形记录仪系列。国内专家预测:未来的几年内,我国将有50%的仪器为虚拟仪器。国内将有大批企业使用虚拟仪器系统对生产设备的运行状况进行实时监测。随着微型计算机的发展,虚拟仪器将会逐步取代传统的测试仪器而成为测试仪器的主流。虚拟仪器技术的提出与发展,标志看二十一世纪自动测试与电子测量仪器领域技术发展的一个重要方向。虚拟仪器技术在工业发达国家,如美国、德国、日本等已得到了不同程度的研究和应用。这一领域,以美国国家仪器公司(NI)为代表的一批厂商在市场上推出了基于虚拟仪器技术而设计的商品化仪器产品。在美国虚拟仪器系统及其图形编程语言,已作为各大学理工科学生的一门必修课程。美国的斯坦福大学的电子系要求三、四年级学生在实验时应用虚拟仪器进行数据采集和试验控制。近年来,计算机的软硬件获得较大的发展,如成本日益降低,速度快,软件开发平台也日益趋于专门化。在这一新形势下,将个人计算机应用于测试、诊断和人工智能将是一个良好的时机。世界各国的虚拟仪器公司开发了不少的虚拟仪器开发平台软件,以便使用者利用这些公司提供的开发平台软件组建自己的虚拟仪器或测试系统,并编制测试软件。最早和最具有影响力的开发软件是美国NI公司开发的虚拟仪器系列产品LabVIEW和LabWindows/CVI开发软件。LabVIEW采用图形化编程方案,是非常实用的开发软件。LabWindows/CVI是位熟悉C语言的开发人员准备的,在Windows环境下的标准ANSIC开发环境。除了上述的优秀开发软件之外,如Tek公司的2465A、美国HP公司的HP-VEE和HPTIG开发平台和Philps公司的PM3263型示波器等,也是世界上公认的优秀虚拟仪器开发软件。虚拟仪器的开发厂家,为扩大虚拟仪器的功能,在测量结果的数据处理、表达模式及其变换方面也做了许多工作,发布了各种软件,建立了数据处理的高级分析库和开发工具库,即如测量结果的谱分析、快速傅立叶变换、各种数字滤波器、卷积处理和相关函数处理、微积分、峰值和阀值检测、波形发生噪声发生、回归分析、数值运算、时域和频域分析等),使虚拟仪器发展成为可以组建极为复杂自动测试系统的仪器系统。虚拟仪器正在继续迅速发展。它可以取代测量技术在传统领域的各类仪器。虚拟仪器在组成和改变仪器的功能和技术性能方面具有灵活性与经济性,因而特别适应于当代科学技术迅速发展和科学研究不断深化所提出的更高更新的测量课题和测量需求。“没有测量就没有鉴别,科学技术就不能前进”。虚拟仪器将会在科学技术的各个领域得到广泛应用。图形化编程平台的进一步发展与完善是虚拟仪器发展的一个重要方向。1.3 Visual Basic语言简介Microsoft公司推出Windows以后,立即以其新颖的图形用户界面、卓越的多任务操作系统性能、高层次的软件开发平台而风靡全球。尤其Windows环境下Office的使用软件的方便使用,使不少熟悉DOS软件开发的用户想到自己动手设计Windows用户界面,以满足各种应用程序的需要。然而即使对有经验的程序员来说,其工作难度也相当大。为了编写Windows环境下运行的程序,必须建立相应得窗口、菜单、对话框等各种“控件”,程序的编制也变得越来越复杂。有人甚至认为,Windows的出现预示着业余程序员的末日。1991年Microsoft公司推出的Windows应用程序开发工具-Visual Basic,使这种情况有了根本的改变。Visual意为“可视话的”,指的是一种开发图形用户界面(GUI)的方法,所以Visual Basic是基于Basic的可视化的程序设计语言。在Visual Bisic中,既继承了其先辈Basic所具有的程序设计语言简单易用的特点,其编程系统又采用了面向对象、事件驱动的编程机制,用一种巧妙的方法把Windows的编程复杂性封装起来,提供了一种所见即所得的可视界面设计方法,给广大非计算机专业人员学习、使用、研究和开发Windows环境下的应用程序带来了福音。Visual Basic是最早是由Microsoft公司在1991年推出的,刚推出的Visual Basic也有缺陷,功能也相对少了一些。经过Microsoft公司的不断努力,1993年退出的VB3.0已初具规模,进入实用阶段,利用VB可快速地创建多媒体、图形界面等应用程序。1995年、1997年和1998年相继推出的VB4.0、 VB5.0 和VB6.0在开发环境、功能上进一步完善和扩充,尤其在数据库管理、网络应用方面更胜一筹,使得VB成为许多程序员首选的编程工具。本课题应用的是VB6.0。VB6.0包括三个版本,分别为学习版、专业版、和企业版。VB主要功能特点:1、具有面向对象的可视化设计工具;2、事件驱动的编程机制;3、提供了易学易用的应用程序集成开发环境;4、结构化的程序设计语言;5、支持多种数据库系统的访问;6、OLE技术;7、Active技术;8、完备的Help联机帮助功能。VB6.0新功能特点:1、 新增控件;2、语言新功能;3、数据库功能的增强;4、增强网络功能;5、新增了多个应用程序向导。1.4 本设计的研究思路虚拟波形发生器是基于微型计算机的信号仪器,它是虚拟仪器的一种。虚拟仪器是具有虚拟仪器面板的个人计算机测试仪器,也称个人仪器。它由通用微型计算机(PC机)、模块化功能硬件和控制软件组成。操作人员通过显示屏上的虚拟仪器面板,来控制测试仪器的工作,完成对各种被测信号的采集与控制、分析与处理、显示与输出。波形发生器是电子测量行业最常用的测试仪器之一。 虚拟波形发生器采用计算机的虚拟技术,模拟常用波形发生器的操作和功能。本课题是基于Visual Basic 6.0的纯软件设计,完成波形发生器的基本功能,如:幅度、周期等参数的可调,波形的打印、保存,以及波形之间的比较等功能。 在设计中我们选用Visual Basic的自带控件进行图像的绘制和显示,主要应用的是图形操作方面的知识。Visual Basic具有丰富的图形功能,不仅可以通过图形控件进行图形和绘制操作。还可以通过图形方法在窗体或图形框上输入文字和图形。VB的图形方法还可以作用于打印机对象。第二章 虚拟波形发生器的设计方案论证2.1 通用信号发生器的原理2.2波形发生器的基本原理2.3设计方案比较2.3.1软件的比较2.3.2设计方案的比较2.3.3最后方案的确定第三章 虚拟波形发生器的设计过程3.1 用户界面对象的建立Visual Basic语言的用户界面对象的建立,首先要明确这个应用程序执行后窗口上显示的形式,如有哪些控件、对控件进行操作发生的哪些事件、控件间的关系等。然后进行新工程的建立,可以通过“文件”菜单的“新建工程”命令来建立一个新的工程,在新的窗体上进行用户界面的设计。本软件的设计界面分为五个界面,如前所述,分别是登录界面、初始化欢迎界面、波形发生界面、波形比较界面和说明界面。由于在两个界面中要用到打印和保存功能,涉及到添加CommonDialog控件,利用在部件选项卡中选定Microsoft Common Dialog Control 6.0。3.2 属性的设置对象建立好之后,就要为其设置属性值。属性是对象特征的表示,各类对象中都有默认的属性值,设置对象的属性是为了使对象符合应用程序的需要。属性的设置可以通过两种方法实现。通常,对于反映对象的外观特征的一些不变的属性应在设计阶段完成,而一些内在的可变的属性则在编程中实现。这里,简单的介绍在设计阶段进行属性设置的步骤和方法。(1) 单击待设置属性的对象(可以是窗体或控件),出现一个属性窗口;(2) 在该窗口选中要修改的属性,在属性值栏中输入或选择所需的属性值。3.3 所需控件简单介绍 在这个软件的设计过程中主要的波形发生窗口应用了PictureBox控件,同时应用到的有:Command控件、CommonDialog控件、Label控件、VScorllBar控件、TextBox控件和Frame等控件。为了在应用程序中创作图形效果,Visual Basic包含4个控件以简化与图形有关的操作。他们是PictureBox控件、Image控件、Shape控件和Line控件。每一个控件适用于一个特定的目的。Image、Shape和Line控件需要较少的系统资源,且包含PictureBox中可用的属性、方法和事件的子集,因此,比PictureBox控件显示得快。图形控件的优点是,创建图形所用的代码比图形方法用的要少。VB提供的图形框和图像框可以显示位图、图标、图元文件中的图形。也可以处理GIF和JPEG格式的图形文件。PictureBox控件的主要作用是为用户显示图片,也可以作为其他控件的容器。实际显示的图片由Picture属性决定。Picture属性可设置被显示的图片文件名。在程序运行时可以使用LoadPicture()在图形框中装入图形。其格式为: 图形框对象. Picture=LoadPicture(“图形文件名”)为了在运行时从图形框中删除一个图形,可用LoadPicture(),将一个空白图形装入图形框的Picture属性。PictureBox控件不提供滚动条,也不能伸展被装入的图形以适应尺寸,但可以用图形框的Autosize属性调整图形框大小以适应图形尺寸,当Autosize属性设置为Ture时,图形框能自动调整大小与显示的图形匹配。如果将Autosize属性设置为False时,则图形框不能自动改变大小来适应其中的图形,加载到图形框的图形保持其原始的尺寸,这意味着如果图形比控件大,则超过的部分将被剪裁掉。PictureBox控件也可以用作其他控件的容器。像Frame控件一样,也可以在PictureBox控件上面加上其他控件。这些控件随PictureBox移动而移动,其Top和Left属性是相对PictureBox而言,而与窗体无关。当PictureBox大小改变时,这些控件在PictureBox控件中的相对位置保持不变。 3.4 建立的界面根据我们的需求建立的五个界面分别如下:1、登录界面图3.1 登录界面 此界面可以保证系统的安全性,因为只有设计者本人根据用户名和密码才可以登录该界面。2、初始化欢迎界面 图 3.2初始化界面图中文字项的加入都是通过Label控件来实现的。3、波形发生界面图 3.3 波形发生界面这个界面是本次设计的主界面,它实现了各种波形的发生,以及周期、幅度的可调,同时完成波形的保存和打印。这里要提到的是下面的各个波形发生的按钮,他们最后通过控件数组来完成的,所以我们在建立了他们的第一个元素Command1之后,选中该控件,进行Copy和Paste操作,系统会提示“已有了命令的控件,是否要建立一个控件数组”,单击Yes按钮后,就建立了一个控件数组元素Command1,进行三次Paste操作,就建立所需个数的控件数组元素。波形的发生是在PictureBox控件中来实现的,在点击每个波形的控制按钮之后,在PictureBox窗口中出现我们所要的波形。同时通过右边的波形参数设置来改变正在发生波形的幅度、周期。保存和打印是两个独立的对话框来完成的。点击“退出”按钮调用到最后一个设计说明界面,在需要波形的比较时单击“波形比较”按钮进入到下一个波形比较界面。4、波形比较界面图 3.4 波形比较界面波形比较界面是本软件的设计时的另一个主要界面,在此界面实现两种以上波形的比较。这也是本次设计的一个难点所在,在同一个PictureBox控件中同时调用两种以上的波形,而且他们的各个参数的设置也应该是独立的。各个波形发生控件的添加如上一界面所述,都应用了控件数组。5、波形说明界面图 3.5说明界面这个界面时对本软件的一个说明版面,所用到的控件和第一个初始化界面基本相同。3.5 对象事件过程的建立及编程建立了用户界面并为每个对象设置属性后,就要考虑用什么事件来激发对象执行所需的操作。这涉及到对象的事件和编写事件过程代码。编程总是在代码窗口进行的。进入代码窗口有以下三种方法:(1) 在Form窗口双击控件对象;(2) 在“工程”窗口单击“查看代码”按钮;(3) 在“视图”菜单中选择“代码窗口”命令。“代码”窗口的左边“对象列表框”列出了该窗体的所有对象(包括窗体),右边的“国成列表框”列出了与选中对象相关的所有事件。在VB程序设计中,许多功能已经封装在对象内部,例如文本框本身就具有各种文本编辑的功能,列表框具有列出当前目录下的文件的功能。因此,在VB程序设计时,只要编写少量的代码来满足某些功能的要求。VB的编程过程比较方便,单击对象列表框右边的下拉按钮,列出该窗体包含的所有对象,选择我们要编写的对象进行程序的设计。3.5.1登录界面的代码编辑3.5.2初始化界面的代码编辑正如前面所述,这一个界面的设计需要编辑代码实现的只有一个对象的调用过程,在这一个界面的代码窗口中,我们找到Frame控件相关的事件,选择它的单击程序代码编辑段,编写的程序如下:Private Sub Frame1_Click() ;单击Frame1控件Unload Me ;停止本窗体Form2.Show ;调用Form2End Sub3.5.3波形发生界面的代码编辑 这一个界面的设计主要实现的是波形的发生和它的一些辅助功能。基本的编辑代码方法如上所述。1.首先要对波形发生窗口进行变量的定义,定义的语句如下:Const pi = 3.14159 ;为pi附值3.14159Dim M ;定义变量MOption Explicit Private dX As Long ;定义dX,dY,cuX,cuY的类型 Private dy As LongPrivate cuX As LongPrivate cuCopyX As LongPrivate picHeigth As IntegerPrivate picWidthPrivate isGrap As IntegerSub setValue() ;设置Pic控件的属性Dim dl&Form1.ScaleMode = vbPixelsPicture1.ScaleMode = vbPixelsPicture1.AutoRedraw = True ;已有的输出不被清除dX = picWidth ;dX的长度等于图形控件的宽cuCopyX = 0End Sub上面的代码定义了pi的值,一些变量的类型以及对窗口的属性的设置。2.其次是对网格的编写,其代码如下:Picture1.ForeColor = vbRed ;设置网格颜色为红色Picture1.Cls ;清除图像框 Dim HLINESNUM As Integer ;定义变量类型 Dim WLINESNUM As Integer Dim XX As Integer Dim i As Integer Dim J As Integer Dim YY As Integer HLINESNUM = 10 WLINESNUM = 25 Picture1.Refresh ;刷新图片框 Picture1.AutoRedraw = True XX = Int(Picture1.ScaleWidth / WLINESNUM) ;设置网格的单位很坐标长度 YY = Int(Picture1.ScaleHeight / HLINESNUM) ;设置网格的单位纵坐标长度 For i = 1 To HLINESNUM + 20 ;变量i的值 Picture1.Line (XX * i, 0)-(XX * i, Picture1.Height - 1) ;绘制网格的横线 Picture1.Line (0, YY * i)-(Picture1.Width - 1, YY * i) ;绘制网格的纵线Next 网格的绘制是根据产生时的容器大小联系在一起的,起始坐标选择在了PictureBox控件的左上角。我们采用了10*15的网格。网格的绘制应用的是画线工具Line控件。3.再次就是编写各种波形的发生代码,波形的发生有三角波、锯齿波、正弦波和方波。具体的程序代码如下所示:正弦波代码:Private Sub sinWave()M = 2 ;定义波形序列数为2Dim t, f As IntegerPicture1.ClsDim a t = Text3.Text ;设置文本框的附值f = Text2.TextPicture1.ScaleMode = 0 ;定义绘图的起始坐标Picture1.ScaleMode = 3Picture1.Scale (-10, 10)-(10, -10)Picture1.DrawWidth = 1 ;设置文字项的字体线宽Picture1.DrawWidth = 2 ;设置波形曲线的线宽For a = -t * pi To t * pi Step pi / 6000 ;半径a的附值Picture1.PSet (a, Sin(a - 3.1) * f), vbBlack ;绘制sin曲线NextPicture1.CurrentX = pi / 2 ;定义文字项的坐标 Picture1.CurrentY = -7Picture1.ForeColor = vbBlack ;设置文字的颜色 Picture1.Print 正弦波示意图End Sub正弦波的绘制是引用实时绘图的方法来绘制的,波形的颜色选择了红色。波形的发生坐标都是以Pic控件的坐标原点为起点的。锯齿波的发生代码:Private Sub TriWave()M = 1 ;设置波形序列号为1Dim t, f As Integer ;定义变量的类型Picture1.Cls ;清除图形框 t = Text3.Textf = Text2.TextPicture1.ScaleMode = 0Picture1.ScaleMode = 3Picture1.Scale (-10, 10)-(10, -10)Picture1.DrawWidth = 1 ;设置文字项的字体线宽Picture1.DrawWidth = 2 ;设置波形线线宽Dim x As Single, y As Single, a As SingleSelect Case tCase 1 ;根据变量t的值来调用不同的曲线For a = -3 To 3 Step 0.01 ;设置单位周期长度 x = ay = f * a / 3 ;设置直线方程 Picture1.PSet (x, y), vbBlack ;绘制直线 Next a ;循环执行a = 3For y = -f To f Step 0.01Picture1.PSet (a, y), vbBlackNext yCase 2 ;设置周期2的波形For a = -6 To 0 Step 0.01x = ay = f * (a + 3) / 3Picture1.PSet (x, y), vbBlackNext aFor a = 0 To 6 Step 0.01 x = a y = (a - 3) * f / 3 Picture1.PSet (x, y), vbBlack Next a a = 0 For y = -f To f Step 0.01 Picture1.PSet (a, y), vbBlack Next y a = 6 For y = -f To f Step 0.01 Picture1.PSet (a, y), vbBlack Next y Case 3 ;设置周期3的波形 For a = -3 To 3 Step 0.01 x = a y = f * a / 3 Picture1.PSet (x, y), vbBlack Next a For a = -9 To -3 Step 0.01 x = a y = (a + 6) * f / 3 Picture1.PSet (x, y), vbBlack Next a For a = 3 To 9 Step 0.01 x = a y = (a - 6) * f / 3 Picture1.PSet (x, y), vbBlack Next a a = 9 For y = -f To f Step 0.01 Picture1.PSet (a, y), vbBlack Next y a = 3 For y = -f To f Step 0.01 Picture1.PSet (a, y), vbBlack Next y a = -3 For y = -f To f Step 0.01 Picture1.PSet (a, y), vbBlack Next yEnd Select Picture1.PSet (x, y), vbBlack ;画出波形并设置波形颜色 Picture1.CurrentX = pi / 2Picture1.CurrentY = -7Picture1.ForeColor = vbBlack ;设置字体颜色Picture1.Print 锯齿波示意图End Sub上面讲述了锯齿波形的实现程序代码,它是利用绘制直线,然后循环调用来实现的。这样的在程序的调用上简单明了。三角波和方波的程序代码设计同上面的锯齿波的发生原理是相同的,都是基于直线绘制后的循环而实现的。详细的程序代码见附录。4.控件数组调用的代码:Private Sub cmdSquare_Click(Index As Integer) ;建立控件数组setValueDoSelect Case Index Case 0 Call TriWave ;索引码为0时调用锯齿波 Case 1 Call sinWave ;索引码为1时调用正弦波 Case 2 Call SquareWave ;索引码为2时调用方波 Case 3 Call sjWave ;索引码为3时调用三角波 End Select DoEventsExit Do LoopEnd Sub控件数组是由一组相同类型的控件组成。他们共用一个控件名cmdSquare,具有相同的属性。控件数组的调用,通过的是索引号(Index)的下标值来调用的,第一个下标值设置为0。5.滚动条与文本框的事件代码:Private Sub Form_Load()VScroll1.Max = 1 ;最大值附值VScroll1.Min = 10 ;最小值附值VScroll1.LargeChange = 1 ;最大变动值VScroll1.SmallChange = 1 ;最小变动值VScroll2.Max = 1 VScroll2.Min = 3VScroll2.LargeChange = 1VScroll2.SmallChange = 1Height = 6800: Width = 10500 ;定义窗体的大小 Move (Screen.Width - Width) 2, (Screen.Height - Height) 2 setValueEnd SubPrivate Sub VScroll1_Change()Text2.Text = VScroll1.Value ;文本框的附值对应滚动条的值Select Case M ;根据波形序列号判断改变那一波形参数 Case 1 Call TriWave Case 2 Call sinWave Case 3 Call SquareWave Case 4 Call sjWave End Select End Sub后面调用Case语句是为了在改变滚动条的同时,波形产生动态的变化。由于VB语言提供的垂直滚动条VScroll的属性是由上向下移动,代表的值随之递增,到达最下面为最大值Max,这与我们的习惯正好相反,所以在设置它们的最大值和最小值时就使得我们将最大值附给Min,而将最小值附给Max。6.最后就是保存和打印代码的编写保存:Private Sub cmdSaveas_Click() CommonDialog1.FileName = default.bmp ;设置缺省文件名 CommonDialog1.DefaultExt = bmp ;设置缺省扩展名 CommonDialog1.Action = 2 ;打开另存对话框 Open CommonDialog1.FileName For Output As #1 ;打开文件供写入数据SavePicture Picture1.Image, CommonDialog1.FileName ;设置保存文件的路径 Close #1 ;关闭文件End Sub打印:Private Sub cmdprint_Click()Dim i, txtnoteedit CommonDialog1.Action = 5 ;打开打印机对话框 For i = 1 To CommonDialog1.Copies Printer.Print txtnoteedit.Picture1 ;打印Picture1中的内容 Next i Printer.EndDoc ;结束文档打印End Sub打印和保存的编辑将在后面讲到。3.5.4波形比较界面的代码编辑波形比较界面的编辑和波形发生界面的程序代码有很多方面是相同的,不同的只是加入了一些对波形发生和调用属性改变的语句。例如在同一个控件上面产生两种以上的波形,在这里我们采用的是循环调用的方法进行。具体的原理是在调用了第一个波形之后,改变它的参数,然后再重新给定一个参数值来调用第二个波形。主要用到的语句是:Picture1.ClsPicture1.AutoRedraw = True通过这两个语句,来实现在调用第二个波形的时候清除与不清除波形框中原有的图形图象。Private Sub VScroll1_Change() ;根据幅值参数的改变来调用已经发生的波形Text1.Text = VScroll1.ValueSelect Case M ;通过波形序列号来调用波形 Case 1 ;M的值为1调用锯齿波函数 Call TrWave Case 2 ;M的值为2用正弦波函数 Call siWave Case 3 ;M的值为3用方波函数 Call SqWave Case 4 ;M的值为4用三角波函数 Call sWave End SelectEnd SubPrivate Sub VScroll2_Change()Text2.Text = VScroll2.ValueSelect Case M Case 1 Call TrWave Case 2 Call siWave Case 3 Call SqWave Case 4 Call sWave End SelectEnd SubPrivate Sub Comma

温馨提示

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

评论

0/150

提交评论