2.2 基类和派生类 http://www.paper51.com 类是进行面向对象程序设计的基础。它能够定义数据和对数据的操作,并通过不同的访问权限,将类的接口和内部的实现分开,支持信息的封装和隐藏。面向对象程序设计的其它重要特征还包括:继承和多态。支持程序代码的复用是面向对象程序设计的主要目标之一,而支持程序代码复用的最重要的方法之一就是继承。继承能够从一个类派生出另一个类,前者称之为基类或父类,后者称之为派生类或子类。派生类能够继承基类的功能,也能改变或增加它的功能。在面向对象的程序设计中,多态的功能强大,但也较难掌握。它允许指向基类对象的指针指向派生类的对象。基类和派生类中可有名字和参数完全相同的函数,但他们的功能并不相同。当程序运行时,如果用基类指针调用成员函数,能够根据该指针所指向的对象的类型自行确定是调用基类的成员函数还是调用派生类的成员函数。如果没有多态的功能,我们就不得不用条件语句,确定是调用哪一个类的成员函数。代码复用是C++最重要的性能之一,它是通过类继承机制来实现的。通过类继承,我们可以复用基类的代码,并可以在继承类中增加新代码或者覆盖基类的成员函数,为基类成员函数赋予新的意义,实现最大限度的代码复用。 内容来自www.paper51.com 3 开关类部件的仿真方案设计3.1 开发工具的选择 copyright paper51.com
根据不同的工程选择不同的开发工具,可以有效地提高工作效率。不同的开发工具各有各的优点同时又各有各的不足,在开发中要扬长避短。 copyright paper51.com VisualC++自诞生以来,一直是Windows环境下最主要的应用开发系统之一。Visual C++不仅是C++语言的集成开发环境,而且与Win32紧密相连,利用Visual C++开发系统,可以完成各种各样的应用程序开发,从底层软件直到上层直接面向用户的软件。而且,Visual C++强大的调试功能也为大型复杂软件的开发提供了有效的排错手段。 paper51.com 随着多媒体技术和图形图象技术的不断发展,可视化(Visual)技术得到广泛的重视,越来越多的计算机专业人员都开始研究并应用可视化技术。VisualC++是一个很好的可视化编程工具,使用Visual C++环境来开发基于Windows的应用程序大大缩短了开发时间,而且它的界面更友好,便于程序员操作。 内容来自论文无忧网 www.paper51.com 因此,根据实际情况在本设计中选用的是Visual C++6.0作为开发工具。 copyright paper51.com
3.2 模块的划分原则 paper51.com 模块划分是系统分析中非常重要的一部分,下面是模块划分时的基本原则。 内容来自论文无忧网 www.paper51.com 1独立性:让模块直接内的关系减到最少。理想的状态就是模块之间没有关系,但这种情况不符合现实。既然是同一个工程,模块之间自然都会存在一定的联系,只要想办法让模块之间的关系尽量简单就可以了。 内容来自论文无忧网 www.paper51.com 2接口简单化:让模块之间的接口尽量单纯、简单、易用。即让公用函数和公用变量尽量地少。 http://www.paper51.com
3分层处理:吸取Windows操作系统对模块做分层处理的经验。建立一些中间模块,让两端的模块来完成相互调用的透明化。 copyright paper51.com 4容易合并:容易将划分的模块进行合并。例如将一个工程的各个功能模块分别设计成可执行文件,然后用一个总模块将这些模块关联起来组成一个工程。这种情况下,对模块独立性要求较高,模块之间几乎没有任何关系。 内容来自论文无忧网 www.paper51.com 5可测试性:尽量使每个模块都可以单独进行测试。 copyright paper51.com 上面的5条是参考原则。既然是参考原则就不会完全执行。完全按照一个教条去执行真的很困难。只要在做模块划分的时候能经常记起这些原则,然后稍加注意就OK了。另外,在这5条原则中,第一条是根本,能把这一条做好,下面的一些就容易实现了。在做模块划分时一定要始终贯穿独立性的思想。 copyright paper51.com 3.3 模块的划分 内容来自论文无忧网 www.paper51.com 本设计中在大体上分为两种模块:DLL功能模块和EXE功能测试模块。根据开关的种类将每个种类写成独立的DLL模块,在此分成2个DLL模块——单刀单掷模块、单刀双掷模块。DLL模块主要负责设计输入、输出接口、开关功能及瞬态响应特点,以便在实验时,通过特定的接口调用这些器件功能,将这些全部封装在DLL工程中。根据写好的DLL功能模块,通过编写的测试程序分别测试每个DLL模块的实现情况,直观的显示开关类部件的仿真实现。 paper51.com 3.4 开关的种类及特性 copyright paper51.com
3.4.1 开关的种类 http://www.paper51.com 开关可以根据其结构特点、极数、位数、用途等进行分类。 paper51.com 1按照开关按结构特点分类:按钮开关、拨动开关、薄膜开关、水银开关、杠杆式开关、微动开关、行程开关等。 内容来自论文无忧网 www.paper51.com 2按照开关按极数、位数分类:单极单位开关、双极双位开关、单极多位开关、多极单位开关和多极多位开关等。 copyright paper51.com 3按照开关按用途分类:电源开关、录放开关、波段开关、预选开关、限位开关、脚踏开关 转换开关、控制开关等。 http://www.paper51.com
在本设计中主要研究的是机械类开关,笔者大体将其归纳为三类: http://www.paper51.com 分为单刀单掷开关,单刀双掷开关,键盘开关,由于技术上还存在一些问题,因此在本次设计中没有成功设计出相应的键盘类开关的功能模块,还有待将来的研究和改进。 http://www.paper51.com 3.4.2 开关的主要参数 copyright paper51.com 开关的主要参数有额定电压、额定电流、接触电阻、绝缘电阻及寿命等。 http://www.paper51.com 1最大额定电压:是指在正常工作状态下开关能容许施加的最大电压。若是交流电源开关,通常用交流电压作此参数。 2最大额定电流:是指在正常工作状态下开关能容许通过的最大电流。若电压标注为交流(AC),则电源也指交流。 3接触电阻:开关接通时,“接触对”(两触点)导体间的电阻值叫做接触电阻。该值要求越小越好,一般开关多在20mΩ(即0.02Ω)以下,某些开关及使用久的开关则在0.1~0.8Ω。 4绝缘电阻:指定的不相接触的开关导体之间的电阻称为绝缘电阻。此值越大越好,一般开关多在100MΩ以上。 5耐压:也叫抗电强度,其含义是指定的不相接触的开关导体之间所能承受的电压。一般开关至少大于100V;电源(市电)开关要求大于500V(交流,50Hz)。 6寿命:是指开关在正常条件下能工作的有效时间(使用次数)。通常为5000~10000次,要求较高的开关为50000~500000次。 对一般电子制作实验来讲,选用及掉换开关时,除了型号或外形等需要考虑外,参数方面只要注意额定电压、额定电流和接触电阻三项便可以了。 paper51.com 3.4.3 瞬态响应特点 http://www.paper51.com 当开关由断开状态变到闭合状态或由闭合状态到断开状态时,并不是在瞬间就改变状态的,需要一定的响应时间,虽然只是毫级的时间差,肉眼无法观察的到的. 下面根据图1来说明开关的响应时间: paper51.com
copyright paper51.com 图1开关时间响应说明图 http://www.paper51.com 当开关在收到电平信号,要求闭合时(或要求断开时),并不是瞬间就闭合(或断开)的,就是说不是从图中t1处直接变到t6处的(或从t6处直接变到t11处的),而是需要经过一定的状态变化,最后才由t1处的状态变到t6状态的(或从t6处的状态变到t11处的状态的).而其中的状态变化形成的原因可能是由于电流,电压,或其他的原因(不同情况原因不同)导致开关在这一瞬间形成不稳定的状态,在闭合与断开两种状态多次随即的变化,这种变化是我们用肉眼看不到的,我们看到的只能是状态由t1变到t6,再由t6变到t11这个过程。 copyright paper51.com 响应时间从使用角度来看,就是开关从闭合到断开或从断开到闭合过程中所延迟的时间.响应时间主要取决于其寿命、绝缘电阻及接触电阻,所以不同材料制得的开关响应时间各不相同。 内容来自论文无忧网 www.paper51.com 4 开关类部件的仿真实现 copyright paper51.com 4.1 程序主要功能介绍 内容来自www.paper51.com 在Visual C++环境下分别建立关于单刀单掷开关和单刀双掷的DLL工程,工程中封装了开关类器件被外界平台调用的输出接口函数,获得信号的输入函数,还有单刀单掷开关、单刀双掷开关在鼠标控制下状态的改变,管脚信息的改变和开关在断开与闭合或在闭合与断开的瞬间产生的时间响应。 http://www.paper51.com 4.2 程序设计结构介绍 内容来自论文无忧网 www.paper51.com
4.2.1 开关类器件实现功能框图 paper51.com copyright paper51.com 图2开关类器件实现功能框图左部分 内容来自论文无忧网 www.paper51.com 内容来自论文无忧网 www.paper51.com 图3开关类器件实现功能框图右部分 内容来自www.paper51.com
系统的整个功能框图如图2和图3所示。其中的上层程序可以是器件功能测试程序,也可以整个仿真实验平台程序。器件DLL的设计与实现为本毕业设计的主要内容。 copyright paper51.com 4.2.2 入口函数 内容来自www.paper51.com
利用MFC的AppWizard自动生成的DLL框架中没有显式的调用DLLMain入口函数,但是对于每个DLL来说,将自动生成一个CWinApp派生类的对象,它会在派生类的成员函数InitInstance和ExitInstance中完成必要的初始化和终止工作。 paper51.com 4.2.3 输出接口函数 copyright paper51.com
对于使用AppWizard创建的MFC DLL,AppWizard会创建一个DEF文件的框架,并自动增加到工程中,然后在DEF文件中增加用于输出的。 copyright paper51.com ;DLL名字 paper51.com
LIBRARY "DSwitchDLL" http://www.paper51.com
|