A人机接口设备—LED类部件的仿真实现.doc

上传人:仙人指路1688 文档编号:2931737 上传时间:2023-03-03 格式:DOC 页数:22 大小:311KB
返回 下载 相关 举报
A人机接口设备—LED类部件的仿真实现.doc_第1页
第1页 / 共22页
A人机接口设备—LED类部件的仿真实现.doc_第2页
第2页 / 共22页
A人机接口设备—LED类部件的仿真实现.doc_第3页
第3页 / 共22页
A人机接口设备—LED类部件的仿真实现.doc_第4页
第4页 / 共22页
A人机接口设备—LED类部件的仿真实现.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《A人机接口设备—LED类部件的仿真实现.doc》由会员分享,可在线阅读,更多相关《A人机接口设备—LED类部件的仿真实现.doc(22页珍藏版)》请在三一办公上搜索。

1、人机接口设备LED类部件的仿真实现摘 要计算机仿真技术是当前应用最广泛的使用技术之一,虚拟现实已成为最热门的话题之一。随着科技的发展,计算机仿真技术被广泛运用于众多的领域之中。特别是20年代末,仿真模拟技术在高科技中所处的地位日益提高。在科学研究、工业、交通、军事、教育等领域得到大量应用。计算机仿真技术成为一种工程领域必不可少的重要设计手段,它的应用可以大大地缩短产品的开发周期和降低产品开发的成本,从而提高产品的竞争力。本文介绍的是LED类部件的设计。主要是普通LED灯和用于显示数字的“8”字灯,为了力图仿真的效果,这里加入了响应时间的因素,以达到接近真实的情况。并分别封装成DLL文件来实现各

2、LED类部件的功能并且易于更新功能。同时,还要求与另一些同学所设计与实现的“大型接口器件的功能演示的可视化设计”,“虚拟实验台的网络化改进方向”,“人机接口设备的仿真实现”等集成在一起,形成一个多功能的接口实验台模拟软件。本文的最后对设计研究工作进行了总结,指出了研究上的不足,说明了需要进一步深入讨论的内容。关键词: 计算机仿真;DLL;更新;集成Man-machine Interaction Equipment -Simulation Implementation of LED Parts AbstractThe computer simulation is one of technolog

3、y employed most widely, and virtual reality has already become one of the hottest topics. With the development of science and technology, computer simulation technology is applied in numerous fields extensively. Especially, in the end of the twenties, the position of simulation technology gets impro

4、ved in Hi-Tech day by day. It gets a large amount of application in scientific research, industry, traffic, military affairs, educating and etc. Computer simulation technology becomes an essential designing means in engineering field, and its application can shorten the development period of the pro

5、ducts and reduce the cost of product development greatly, thus improve the competitiveness of the products.The thesis introduced the design of LED parts, which is ordinary LED light and 8 word light used for displaying figure. For the better simulation result, the factor of response time is taken in

6、to accounts, and the LED functions are packaged into DLL file for updating the functions more easily. Meanwhile, it is still required to integrated with other modules to achieve a multifunctional software for interface experiments, such as visualization of functions demonstration of large-scale inte

7、rface device, network oriented improvement of virtual laboratory platform, the emulation of interface apparatus of man and machine and etc. which are designed by other students.At the end of the thesis, it summarized the research work of designing, pointed out the deficiency studied, and explained t

8、he content needed further discussing.Key words: Computer emulation; DLL; Update; Integrate目 录论文总页数:21页1引言11.1设计背景11.2项目介绍11.2.1计算机仿真技术11.2.2虚拟实验平台21.2.3预期成果21.3研究意义21.4研究方法22编程的一些基本概念32.1基类和派生类32.2入口函数32.3输出接口函数33LED的特性参数43.1LED的分类43.2LED的特性43.2.1LED的发光原理43.2.2LED的响应时间44系统的总体设计54.1要实现的功能54.2工程的建立54.

9、3主要类和函数介绍74.3.1主要的类74.3.2主要的函数84.4普通单色LED灯功能的实现114.5用于显示数字的“8”字灯的实现124.6设计测试154.6.1普通单色LED的测试154.6.2“8”字灯的测试17结 论19参考文献19致 谢20声 明211 引言随着计算机技术的发展,利用计算机对系统进行仿真越来越受到人们的重视,对系统仿真的理论方法和应用技术的研究也逐步深入,应用的领域越来越广。1.1 设计背景近年来计算机、网络等信息技术在教育领域的广泛应用,虚拟实验正日益成为广大教师的计算机辅助教学手段。虚拟实验平台正是应这个大需求而诞生。并且随着信息技术的发展,以纯软件的形式模拟硬

10、件接口实验平台的逻辑功能,用于接口教学。在与硬件接口实验平台的实验步骤一致的情况下,连接线路,用汇编语言或者C语言等编写程序,再运行程序观看结果。软件仿真无硬件平台、器件的开销和磨损;也无实验环境的时间限制。让使用者更直观的更形象的演示实验过程和结果,更好的理解电路运行原理。随着多媒体技术和图形图像技术的不断发展,可视化技术得到广泛的重视。所谓可视化技术,一般是指软件开发阶段的可视化和对计算机图形技术和方法的应用。Visual C+是个很好的可视化编程工具,使用Visual C+环境来开发机遇Windows的应用程序大大缩短了开发时间,而且它的界面更友好。1.2 项目介绍1.2.1 计算机仿真

11、技术计算机仿真技术是以多种学科和理论为基础,以计算机及其相应的软件为工具,通过虚拟试验的方法来分析和解决问题的一门综合性技术。计算机仿真(模拟)早期称为蒙特卡罗方法,是一门利用随机数实验求解随机问题的方法。其原理可追溯到1773年法国自然学家G.L.L.Buffon为估计圆周率值所进行的物理实验。根据仿真过程中所采用计算机类型的不同,计算机仿真大致经历了模拟机仿真、模拟数字混合机仿真和数字机仿真三个大的阶段。20世纪50年代计算机仿真主要采用模拟机;60年代后串行处理数字机逐渐应用到仿真之中,但难以满足航天、化工等大规模复杂系统对仿真时限的要求;到了70年代模拟数字混合机曾一度应用于飞行仿真、

12、卫星仿真和核反应堆仿真等众多高技术研究领域;80年代后由于并行处理技术的发展,数字机才最终成为计算机仿真的主流。现在,计算机仿真技术已经在机械制造、航空航天、交通运输、船舶工程、经济管理、工程建设、军事模拟以及医疗卫生等领域得到了广泛的应用。1.2.2 虚拟实验平台计算机技术、大规模集成电路技术和通讯技术的飞速发展,为虚拟实验的发展奠定了坚实的基础。虚拟实验就是在通用计算机上加载相应的软件或硬件,使得使用者在操作这台计算机时,就像是在操作一台专用的传统实验设备一样。在虚拟实验系统中,软件是整个系统的关键,任何以个使用者都可以通过软件的相关设置来达到要实现实验的效果。虚拟实验就是利用外部输入(如

13、鼠标的点击、拖动和键盘的敲击等),将计算机上虚拟的各种仪器,按实验要求、过程,组装成一个完整的实验环境,同时在这个环境中完成实验操作,包括实验器材的添加、实验条件的改变、数据采集以及实验结果的模拟、分析。它包含了虚拟仿真技术、计算机技术、实验技术等多方面理论知识。1.2.3 预期成果本设计的预期成果是完成多功能接口实验台模拟软件的部分功能LED类部件的仿真实现,并封装成DLL文件来实现LED类部件的功能;同时,还要求与另一些同学所设计与实现的“大型接口器件的功能演示的可视化设计”,“虚拟实验台的网络化改进方向”,“人机接口设备的仿真实现”等集成在一起,形成一个多功能的接口实验台模拟软件。1.3

14、 研究意义随着信息技术在教育领域的广泛应用,虚拟实验正日益成为广大教师的计算机辅助教学手段。虚拟实验平台正是应这个大需求而诞生。并且随着信息技术的发展,以纯软件的形式模拟硬件接口实验平台的逻辑功能,用于接口教学。在与硬件接口实验平台的实验步骤一致的情况下,连接线路,用汇编语言或者C语言等编写程序,再运行程序观看结果。软件仿真无硬件平台、器件的开销和磨损;也无实验环境的时间限制。让使用者更直观的更形象的演示实验过程和结果,更好的理解电路运行原理。1.4 研究方法系统的开发要求模拟接口实验台,开发一个多功能的接口实验台模拟软件进行设计与开发。因此,本次毕业设计应首先分析接口实验台软件的相关功能,结

15、合本次毕业设计的相关要求写出需求分析;其次,综合运用以前所学的相关知识(包括计算机接口、数据结构、编程相关知识等),选择Visual C+ 6.0开发工具进行本毕业设计的开发;在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法。本文主要介绍的是LED类部件。而对于LED类器件,可以在Visual C+环境下设计一个器件基类,由基类派生出不同的器件类。在实验时,通过特定的接口调用这些器件的派生类。本设计的核心模块是DLL工程。DLL的主要工作读取输入信号,设置显示信息;设计LED类部件的主要功能。用Visual C+6.0来完成。主要负责调用DLL工程,演示LED类部件的功

16、能。2 编程的一些基本概念2.1 基类和派生类类是进行面向对象程序设计的基础。它能够定义数据和对数据的操作,并通过不同的访问权限,将类的接口和内部的实现分开,支持信息的封装和隐藏。面向对象程序设计的其它重要特征还包括:继承和多态。支持程序代码的复用是面向对象程序设计的主要目标之一,而支持程序代码复用的最重要的方法之一就是继承。继承能够从一个类派生出另一个类,前者称之为基类或父类,后者称之为派生类或子类。派生类能够继承基类的功能,也能改变或增加它的功能。在面向对象的程序设计中,多态的功能强大,但也较难掌握。它允许指向基类对象的指针指向派生类的对象。基类和派生类中可有名字和参数完全相同的函数,但他

17、们的功能并不相同。当程序运行时,如果用基类指针调用成员函数,能够根据该指针所指向的对象的类型自行确定是调用基类的成员函数还是调用派生类的成员函数。如果没有多态的功能,我们就不得不用条件语句,确定是调用哪一个类的成员函数。代码复用是C+最重要的性能之一,它是通过类继承机制来实现的。通过类继承,我们可以复用基类的代码,并可以在继承类中增加新代码或者覆盖基类的成员函数,为基类成员函数赋予新的意义,实现最大限度的代码复用。2.2 入口函数在Visual C+中,可以创建不用MFC而直接用C语言写的DLL程序,也可以创建基于MFC类库的DLL程序。每一个DLL必须有一个入口点,在VC+中,DllMain

18、是一个缺省的入口函数。DllMain负责初始化(Initialization)和结束(Termination)工作。利用MFC的AppWizard自动生成的DLL框架中没有显式的调用DLLMain入口函数,但是对于每个DLL来说,将自动生成一个CWinApp派生类的对象,它会在派生类的成员函数InitInstance和ExitInstance中完成必要的初始化和终止工作。2.3 输出接口函数对于使用AppWizard创建的MFC DLL,AppWizard会创建一个DEF文件的框架,并自动增加到工程中,然后在DEF文件中增加用于输出的。;DLL名字LIBRARY DLed2DLL;DLL描述D

19、ESCRIPTION DLed2DLL Windows Dynamic Link Library;输出函数及其编号EXPORTS 在此加入被调用的函数3 LED的特性参数3.1 LED的分类按发光管发光颜色分,可分成红色、橙色、绿色(又细分黄绿、标准绿和纯绿)、蓝光等。另外,有的发光二极管中包含二种或三种颜色的芯片。 本文中讨论的2种LED灯都用红色。按发光管出光面特征分圆灯、方灯、矩形、面发光管、侧向管、表面安装用微型管等。本文中讨论的普通LED灯属于圆灯,而“8”字灯是用7个矩形的小灯来表示。3.2 LED的特性3.2.1 LED的发光原理发光二极管是由-族化合物,如GaAs(砷化镓)、G

20、aP(磷化镓)、GaAsP(磷砷化镓)等半导体制成的,其核心是PN结。因此它具有一般P-N结的I-N特性,即正向导通,反向截止、击穿特性。此外,在一定条件下,它还具有发光特性。在正向电压下,电子由N区注入P区,空穴由P区注入N区。进入对方区域的少数载流子(少子)一部分与多数载流子(多子)复合而发光。3.2.2 LED的响应时间LED的点亮时并不是管脚输入高电平后立刻就达到正常的亮度的,它需要一定的响应时间,虽然只是纳秒级的时间差,肉眼无法观察的到的,同样熄灭时也是一样的。响应时间从使用角度来看,就是LED点亮与熄灭所延迟的时间。即图1中tr 、tf 。图中t0值很小,可忽略。LED的点亮时间上

21、升时间tr是指接通电源使发光亮度达到正常的10%开始,一直到发光亮度达到正常值的90%所经历的时间。LED 的熄灭时间下降时间tf是指正常发光减弱至原来的10%所经历的时间。响应时间主要取决于载流子寿命、器件的结电容及电路阻抗,所以不同材料制得的LED响应时间各不相同。如GaAs、GaAsP、GaAlAs其响应时间10-9S,GaP为10-7 S。图1 LED的响应时间4 系统的总体设计4.1 要实现的功能LED类部件的功能说起来比较简单,就是从信号输入管脚输入一个或一组信号,将这个或这一组信号直观的用亮灭来表现出来。为了力图仿真的效果,这里加入了响应时间的因素,以达到接近真实的情况。如图1,

22、可以看出LED类部件不是一下就达到正常亮度,也不是一下就完全熄灭的,其亮度是经过了中间无数个状态才达到正常亮度或熄灭的,这样仿真的解决方法是在点亮和熄灭的过程加入几个中间色作为过度,以达到对真实情况的模拟。4.2 工程的建立打开Visual C+6.0操作界面,建立工程类型为MFC AppWizarddll的对话框文档的新工程,系统自动为用户创建CDLed2DLLApp这个类。创建过程如图2-图4所示(这里以普通单色LED工程的建立为例)。图2 DLL工程的建立1图3 DLL工程的建立2工程建立完成后把VisualexDoc、DComponent和line两个类及他们各自的头文件Visuale

23、xDoc.h、DComponent.h和line.h拷贝到DLed2DLL当中,然后在FileView中在Source Files文件夹点击右键选择“Add File to Folder.”一项,将VisualexDoc.cpp、DComponent.cpp和line.cpp填加到文件夹中,并在Header Files文件夹点击右键选择“Add File to Folder.”一项,将VisualexDoc.h、DComponent.h和line.h填加到文件夹中,这样就把以前有的器件基类、VisualexDoc类和Cline类填加到工程中了。然后再建立一个DLed2类。方法如下:菜单栏中选择

24、“Insert”“New Class .”,就会出现如下的对话框,“Class type”中选择Generic Class 名称为DLed2,然后点击确定就会出现DLed2类和他的的头文件DLed2.h了。图4 类的建立这样工程就已经建立了,用来编写代码以实现LED的功能。4.3 主要类和函数介绍4.3.1 主要的类DComponent类,是器件类的基类,所有器件都是由它派生出来的。VisualexDoc类,用于实现可视化功能。line类,用于对电路图中的线进行操作,如在不同器件的管脚间连线等。Dled2类,从基类中派生的普通单色LED灯的类。Dled8类,从基类中派生的“8”字灯的类。4.3

25、.2 主要的函数ReadInfo(FILE* file,CVisualexDoc* pDoc):是负责读取保存在文本文档中器件的状态的,例如器件信息(名称,位置,大小,引脚数等),引脚信息(引脚号,位置,名称等)等描述器件状态的。属于器件类的成员函数。DrawObject(CDC* pDC):是负责画器件的,就是根据ReadInfo函数所读取的信息,将这些信息具体的在平面图中展示出来,实验时能让人们清晰的看清楚它是什么样子的,每个位置都是什么样子的。DrawObject(CDC* pDC)函数部分主要代码(以普通单色LED为例)如下:DrawObject(CDC* pDC):if(lc=0)c

26、ol=60;else if(lc=1)col=200;CBrush brush2,*oldbrush2; brush2.CreateSolidBrush(RGB(col,0,0); oldbrush2 = pDC-SelectObject(&brush2);pDC-Ellipse(Position.x,Position.y,Position.x+cx, Position.y + cy); pDC-SelectObject(oldbrush2); pDC-FillPath(); /delete brush;pDC-SelectObject(oldFont);pDC-SelectObject(ol

27、dBrush);DispMsg(CString s):负责显示当前状态,在特定的文本框中输出文本信息,显示现在在执行的动作。属于VisualexDoc的成员函数。 OutSig(int iPinNo,int iSigval):外部通过OutSig给器件某引脚一个信号值,并将引脚号和信号值传给SetPin函数。是器件类的成员函数。SetPin(int iPinNo,int iSigVal):根据引脚号和信号值来判断下一步的工作。是器件类的成员函数。Dled2:JudDet(int iSigVal):根据参数的信号值与上次显示的信号值是否相等来判断会不会产生响应时间。Dled8:JudDet(in

28、t LedsNum ,int Value):参数为“8”字灯7个小灯的编号,和该小灯将显示的状态,根据判断该小灯状态是否会变化来判断会不会有响应时间。Dled8:SigProc(int PinVcc):信号处理函数,首先判断引脚PinVcc是否为高电平,否则返回,是就把4跟数据引脚上的数据转换成要显示的10进制的数,并根据这个数字来判断“8”字灯中各小灯的状态,并调用7次Dled8:JudDet(int LedsNum ,int Value)函数来判断各小灯的是否回有响应时间。Dled8:SigProc(int PinVcc)函数部分主要代码(以普通单色LED为例)如下:Dled8:SigPr

29、oc(int PinVcc):for (int i=0;iDispMsg(msg); OnTimer(CDC *pDC):由加载DLL文件的应用程序(测试程序)每隔一定时间调用该函数,用来实现延迟过程(中间色的变化)。OnTimer(CDC *pDC)函数部分主要代码(以普通单色LED为例)如下:OnTimer(CDC *pDC):if(lc = 3 )col += 20;if(col = 200)lc -= 2 ;pParent-DispMsg(点亮延迟结束);DrawObject(pDC) ;else if(lc = 2)col -= 10;if(col DispMsg(熄灭延迟结束);D

30、rawObject(pDC) ;Dled2:Detention(int iSigVal):响应时间产生函数,当LED状态发生变化后,在很短的时间里,LED的亮度是经过了中间无数个状态才达到正常亮度或熄灭的,根据信号值判断产生了那种响应时间,并通过OnTimer函数来实现中间色的转换。并返回一个状态值(3为点亮延迟,2为熄灭延迟)。4.4 普通单色LED灯功能的实现普通单色LED灯只有2根信号输入脚(数据输入脚和LED开关VCC),分亮灭2种状态,功能比较简单,从信号输入脚读入信号值,并判断VCC是否为1(即LED处于工作状态)。和前一次读的值做比较(初始状态值为0,即熄灭状态),如果相同则直接

31、显示,若不相同说明灯的状态发生了改变,需要有响应时间,再根据当前读入的信号值来判断产生了哪种响应时间(点亮延迟还是熄灭延迟,即图1中的tr 、tf)。基本流程图如图5所示。与上次是否相等结束直接显示点亮延迟读管脚状态读入状态=1熄灭延迟否否是是开始VCC=1否是图5 普通LED功能实现基本流程4.5 用于显示数字的“8”字灯的实现“8”字灯有5根信号输入脚,其中4根为数据线,用于向“8”字灯输入4位数据,另一根为电源线,若电源线信号为0表示“8”字灯未接入电源,只有VCC信号为1时才读入数据,“8”字灯管脚示意图见图6。图6 “8”字灯的5个输入管脚和小灯编号“8”字灯的实现相对来说复杂了些,

32、由于外加的信号是一次只加一根信号线的信号,而“8”字灯是要求对一组4根数据线上的数据做显示,所以用VCC这样一根控制线,以便一次读入4根数据线的值(LedLDS3为高位,LedLDS0为低位)。读入数据之后调用类中定义的信号处理函数,将4位数据转换成将要显示的0-9的10进制数(并设置了错误代码,若输入值为10-15,返回错误信息)。并根据转换后的数来决定“8”字灯中的7盏灯有哪几盏需要亮。这7盏灯的编号见图5。表1 “8”字灯的输出与7盏小灯关“8”字灯输出Leds0Leds1Leds2Leds3Leds4Leds5Leds6011111011001100020110111300111114

33、10110105100111161101111700111008111111191011111因为有响应时间的因素,所以在每种显示的情况下对每盏小灯进行延迟判断(每种显示情况都需要7次判断),判断方法是根据当前小灯的编号,和将要显示的情况与其当前显示情况做比较,若不同则有响应时间,再根据将要显示情况来判断将产生哪种延迟。基本流程图见图7。开始结束输入信号线信号VCC=1读4根数据线数据数据转换转换后9确定每盏灯的状态与将显示状态相同返回ERROR信息将显示状态=1直接显示状态点亮延迟熄灭延迟是否是否是否是否图7 “8”字灯实现基本流程4.6 设计测试利用程俊同学做的器件测试程序进行功能测试,在

34、显示平台上显示LED的功能。4.6.1 普通单色LED的测试根据ReadInfo(FILE* file,CVisualexDoc* pDoc)函数定义的格式建立一个名为aLed2_1.txt的文本文档来存放器件信息,内容如下:“Unit普通红色LED示意120,20 /器件位置200,200 /器件大小1:0,100;-50,100;(PinLD2) /管脚位置名称2:200,100;250,100;(PinVcc) /VCC”并将一些相关文件(DLed2Dll.dll和后缀为pdb、exp、ilk、lib的文件)拷贝到应用程序所在的文件夹中,打开测试程序,并在DLL库文件中输入DLed2,器

35、件信息文件库中输入aLed2_1.txt,依次点击装载DLL,读器件信息,显示器件,之后就会将最初状态的器件画出来,如图8:图8:普通单色LED测试1其中2号脚为VCC,我们测试,不管VCC,先给1号脚加入高电平,则LED无反映,文本框输出“VCC为低电平,LED未工作”,再将VCC变为高电平,则LED一点点的亮起,文本框中输出“LED点亮”,当LED完全亮了后文本框中输出“点亮延迟结束”。如图9:图9:普通单色LED测试2将1号管脚加入低电平,则灯一点点的暗下来,但是变的比点亮时要慢,这也是这次仿真中所期望到的,因为熄灭的延迟肉眼可以很容易的观察到。若当LED还处于点亮时把VCC变为0的话,

36、LED还是回一点点的暗下来,如图10:图10:普通单色LED测试34.6.2 “8”字灯的测试测试过程同普通单色LED测试方法类似,这里就不详细介绍了,贴几张截图来说明一下测试效果。图11:“8”字灯测试1图12:“8”字灯测试2图13:“8”字灯测试3图14:“8”字灯测试4结 论本次课题的研究,弥补了原虚拟实验平台在外设方面的不足,增加LED类部件的模拟仿真实现功能,使原有的实验平台功能更强大,让使用者更直观的更形象的演示实验过程和结果,更好的理解电路运行原理。提高了系统的模块程度,为系统的进一步扩展提供了良好的基础。在LED类的仿真设计实现的过程中,仔细总结LED类器件的物理电气特性,力

37、求做到仿真实现与真实器件具有相同的物理特性,近似的演示效果。经测试,与真实器件有很高的一致性。但在LED器件的亮灭延时方面,尽管做了很多工作,但还可以做进一步的改进。参考文献1 刘瑞叶等.计算机仿真技术基础M.北京:电子工业出版社,2004.4。2 Walter Savitch(美).C+面向对象程序设计M.周靖译.北京:清华大学出版社,2003.11。3 李明柱.单肃.赵光启.Visual C+最新编程实践与技巧M.北京:北京航空航天大学出版社,2000.12。4 韦有双等.虚拟实现与系统仿真M.北京:国防工业出版社,2004.1。5 郭云芳,欧阳玲,刘继美.计算机仿真技术M.北京:北京航空航天大学出版社,1991。6 吴旭光,杨惠珍,王新民.计算机仿真技术M.北京:化学工业出版社,2005.8。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号