proteus自建元件.doc
在使用Proteus仿真单片机系统的过程中,经常找不到所需的元件,这就需要自己编写。Proteus VSM的一个主要特色是使用基于DLL组件模型的可扩展性。这些模型分为两类:电气模型(Electrical Model)和绘图模型(Graphical Model)。电气模型实现元件的电气特性,按规定的时序接收数据和输出数据;绘图模型实现仿真时与用户的交互,例如LCD的显示…… 在电子设计领域,Proteus 是一款广泛应用的电路仿真软件,尤其在单片机系统的设计与验证中。本文将深入探讨如何在 Proteus 中自建元件,包括理解 Proteus VSM(Virtual System Modeling)仿真模型的工作原理以及开发自定义元件的具体步骤。 Proteus VSM 的核心特点是其可扩展性,基于 DLL(动态链接库)组件模型,允许用户创建自定义的电气和绘图模型。电气模型负责元件的电气特性,按照规定的时序接收和输出数据,而绘图模型则用于仿真过程中与用户的交互,比如LCD的显示效果。 对于电气模型,Proteus 提供了一些 C++抽象类接口,如 IINSTANCE(代表一个PROSPICE仿真原始模型)和 ISPICECKT/ISPICEMODEL(模拟元件),这些接口允许模型访问属性、模拟节点和数据引脚,同时还能通过仿真日志发送警告和错误信息。另外,IDSIMCKT/IDSIMMODEL(数字元件)则服务于数字系统,管理变量、回调函数和仿真暂停。对于同时包含模拟和数字特性的元件,IMIXEDMODEL 类则提供了混合功能。 为了使 Proteus 能够访问用户创建的模型,我们需要在 DLL 中实现特定的构造和析构函数,例如 createactivemodel/deleteactivemodel 对于绘图模型,以及 createspicemodel/deletespicemodel、createdsimmodel/deletedsimmodel 和 createmixedmodel/deletemixedmodel 对于不同类型的电气模型。 开发自定义 Proteus 元件的流程大致分为以下四步: 1. **绘制元件图形和引脚**:在 Proteus 中利用绘图工具绘制元件的外观,包括引脚位置和相关符号。 2. **设置元件属性**:配置元件的参数,如名称、类别、电气特性等。 3. **编写元件模型**:使用 C++ 编写元件的电气和绘图模型,实现抽象类接口的功能,编译生成 DLL 文件。 4. **测试仿真**:将自建元件导入 Proteus,构建电路进行仿真测试,确保元件工作正常。 以 TG19264A 点阵式液晶显示元件为例,开发过程包括: 1. 使用 Proteus 绘图工具绘制 LCD 的外形,包括点阵区域、引脚和标记原点。 2. 设置引脚类型和排列,如 GND、VCC、V0、Vee、LED 等。 3. 编写 C++代码,实现 LCD 的电气特性(如驱动电压、电流控制)和交互模型(如显示数据处理)。 4. 将编译好的 DLL 导入 Proteus,构建包含该 LCD 的电路并进行仿真验证其功能是否符合预期。 通过以上步骤,用户可以根据实际需求创建各种自定义元件,大大增强了 Proteus 的应用范围,使得在单片机系统设计中能更加灵活地进行硬件验证。自建元件不仅能够解决标准元件库中缺少特定元件的问题,还能提高设计的精确性和真实性,从而优化设计流程。
剩余14页未读,继续阅读
- zsc152050301002012-11-08很抱歉,现在才有空评价,资源不错,可惜后面换一种型号,就没自建元件了
- 粉丝: 7
- 资源: 32
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- RuntimeException.md
- NSException解决办法.md
- TypeError如何解决.md
- NullPointerException.md
- NSRangeException解决办法.md
- ReferenceError如何解决.md
- NSInvalidArgumentException解决办法.md
- SyntaxError如何解决.md
- BufferError(解决方案).md
- ArrayIndexOutOfBoundsException.md
- LookupError(解决方案).md
- NSInternalInconsistencyException解决办法.md
- IndexOutOfBoundsException.md
- NSUnimplementedFunctionException解决办法.md
- RangeError如何解决.md
- EvalError如何解决.md