
proteus自制元件实例.doc
23页自制元件例一 - CSI24WC02CSI24WC02是串行E2PROM,兼容400 kHz I2C 总线控制一个元件可以只实现绘图模型或电气模型,也可以电气和绘图模型都实现该例子我们只实现绘图模型详细信息见帮助的Styles :Component creation或Styes: Component creation部分管脚描述 CSI24WCXX系列E2PROM提供标准的8脚DIP封装和8脚表面安装的SOIC封装 其管脚功能描述如下:l SCL 串行时钟这是一个输入管脚用于产生器件所有数据发送或接收的时钟 l SDA 串行数据/地址 这是一个双向传输端用于传送地址和所有数据的发送或接收它是一个漏极开路端因此要求接一个上拉电到Vcc 端典型值为100KHz 是为10K 400KHz 时为1K 对于一般的数据传输仅在SCL为低期间SDA才允许变化在SCL为高期间变化留给指示START开始和STOP停止条件 l A0 A1 A2 器件地址输入端 这些输入端用于多个器件级联时设置器件地址当这些脚悬空时默认值为0 CSI24WC01 除外 l WP 写保护 如果WP管脚连接到Vcc所有的内容都被写保护只能读当WP 管脚连接到Vss或悬空允许器件进行正常的读/写操作绘制元件l 单击2D Graphics Box Mode > COMPONENT,画一个框。
l 单击Device Pins Mode > DEFAULT,画管脚l 右击引脚 > Edit Properties,输入管脚名称,例如A0;输入默认管脚号,例如1,确定l 选择所设计的图形(翻红)> Library > Make Device…,在Device Name中输入器件名,例如CSI24WC02;在Reference Prefix中输入引用前缀(放置器件时的默认名称),例如U ,其他保持不变,Next>l 单击ADD/Edit添加封装l 选择一个封装,例如DIL08,单击Assign Package(s),指派封装l Nextl 组件属性与定义,保持默认,Next>l 器件数据手册和帮助文件定义,没有手册和帮助,略过,Next>l 索引和库选择,单击New,输入器件目录,例如My Device,OK,OK现在就可以使用该元件了,从Pick Devices的目录My Device中也可以找到该元件自制元件例二 – 7段数码管我们也可以通过改造原有器件来创建新器件,这样我们就不必从头开始创建一个新器件下面我们以7段共阳绿色数码管7SER-COM-AN-GRN为例创建一个新器件。
这个数码管原来不带封装,我们通过改造给它加上封装,并重新命名为新器件l 在设计图纸上防置一个7SER-COM-AN-GRNl 右击该器件 > Decompose,分解该器件下面是分解后的器件l 选择所设计的图形(翻红)> Library > Make Device…,保持Device Name中的器件名;在Reference Prefix中输入引用前缀(放置器件时的默认名称),例如D,其他保持不变,Next>l 单击ADD/Edit添加封装1) 先在Packabe Device对话框中的A列中随意输入管脚编号,例如1、2、3…(原来没有管脚编号)2) 单击Add,选择一个封装,例如7SEG.3+A3) 依据封装重新输入管脚编号4) 单击Assign Package(s),指派封装l 组件属性与定义,指定默认封装为7SEG.3+A,Next>l 器件数据手册和帮助文件定义,没有手册和帮助,略过,Next>l 索引和库选择,单击New,输入器件目录,例如My Device,OK,OK现在就可以使用该元件了,从Pick Devices的目录My Device中也可以找到该元件l 如果以前图上有该器件,更新图中该器件的实例,OK。
l 将以前器件的PCB Package属性改为7SEG.3+A,并添加组件引用名,例如:D1注意:器件必须有引用名才能在ARES中布局一、Proteus VSM仿真模型简介 在使用Proteus仿真单片机系统的过程中,经常找不到所需的元件,这就需要自己编写Proteus VSM的一个主要特色是使用基于DLL组件模型的可扩展性这些模型分为两类:电气模型(Electrical Model)和绘图模型(Graphical Model)电气模型实现元件的电气特性,按规定的时序接收数据和输出数据;绘图模型实现仿真时与用户的交互,例如LCD的显示一个元件可以只实现电气模型,也可以都实现电气和绘图模型Proteus为VSM模型提供了一些C++抽象类接口,用户创建元件时需要在DLL中实现相应的抽象类VSM模型和Proteus系统通信的原理如下图: 绘图模型接口抽象类:ICOMPONENT――ISIS内部一个活动组件对象,为VSM模型提供在原理图上绘图和用户交互的服务IACTIVEMODEL――用户实现的VSM绘图模型要继承此类,并实现相应的绘图和键盘鼠标事件处理电气模型接口抽象类:IINSTANCE――一个PROSPICE仿真原始模型,为VSM模型提供访问属性、模拟节点和数据引脚的服务,还允许模型通过仿真日志发出警告和错误信息。
ISPICECKT(模拟)――SPICE拥有的模拟元件,提供的服务:访问、创建和删除节点,在稀疏矩阵上分配空间,同时还允许模型在给定时刻强制仿真时刻点的发生和挂起仿真ISPICEMODEL(模拟)――用户实现的VSM模拟元件要继承此类,并实现相应的载入数据,在完成的时间点处理数据等IDSIMCKT(数字)――DSIM拥有的数字元件,提供的服务:访问数字系统的变量,创建回调函数和挂起仿真IDSIMMODEL(数字)――用户实现的VSM数字元件要继承此类,并实现相应的引脚状态变化的判断和回调事件的处理IDSIMPIN(数字)――数字组件的引脚,提供检测引脚状态和创建输出事务事件的服务IDBUSPIN(数字)――数字组件的数据或地址总线,提供检测总线状态和创建总线输出事务事件的服务IMIXEDMODEL(混合)――同时继承了ISPICEMODEL 和 IDSIMMODEL,元件既有模拟特性,又有数字特性 为了让Proteus访问用户模型中的成员函数,必须创建用户模型的一个实例这不能通过类的接口来实现,只能通过从DLL中导出几个C函数来实现,在用户模型中必须实现这些C函数,达到构造和析构用户模型实例的效果。
1)构造和析构绘图模型实例:IACTIVEMODEL *createactivemodel (CHAR *device, ILICENCESERVER *ils)VOID deleteactivemodel (IACTIVEMODEL *model)(2)构造和析构模拟电气模型实例:ISPICEMODEL *createspicemodel (CHAR *device, ILICENCESERVER *ils)VOID deletespicemodel (ISPICEMODEL *model)(3)构造和析构数字电气模型实例:IDSIMMODEL *createdsimmodel (CHAR *device, ILICENCESERVER *ils)VOID deletedsimmodel (IDSIMMODEL *model)(4)构造和析构混合电气模型实例:IMIXEDMODEL *createmixedmodel (CHAR *device, ILICENCESERVER *ils)VOID deletemixedmodel (IDSIMMODEL *model)二、Proteus VSM仿真模型开发流程1.绘制元件图形、引脚和相关符号。
2.制作元件,设置元件属性3.用C++编写元件,实现电气和绘图模型,编译生成DLL4.搭建电路仿真测试三、VSM模型开发实例下面以TG19264A点阵式液晶显示元件的开发为实例详细讲解开发过程1.打开Proteus,选择菜单 查看>>Snap 10 th,选择左边绘图工具栏的2D graphics box,绘制如图所示的三个图形 2.选择2D graphics line,给出两条直线,设置width为36th,颜色为灰色选择2D graphics circle,给四个角绘制安装孔选择Markers for component origin,给三个图形分别绘图符号原点(图中红色部分) 3.选择Device pin,顺时针旋转90度,放置20个引脚,如图所示GND、VCC、V0、Vee、LED+的电气类型选择PP-Power Pin,D/I、R/W、E、CS1、RET、CS2、CS3的电气类型选择IP-Input,D0~D7的电气类型选择IO- Bidirectional 4.右键拖出选择框选择第一个符号,选择菜单库>>制作符号,命名为LCD19264A_C,确定同理,第二和第三个分别命名为LCD19264A_1 和LCD19264A_0。
当用户调用drawsymbol (-1),将绘制LCD19264A_C,调用drawsymbol (1),将绘制LCD19264A_1,调用drawsymbol (0),将绘制LCD19264A_0 5.右键拖出选择框选择符号LCD19264A_C,选择菜单库>>制作元件,Device Properties设置如图, 点击Next>跳过封装设置,点击Next>组件属性设置如图, 点击Next>选择数据手册(可选),点击Next>选择器件库,点击OK 6.打开VC,新建工程,选择Win32 Dynamic-Link Library,给工程命名,建立空的DLL工程从Proteus安装目录的INCLUDE文件夹中将VSM.HPP复制到当前工程目录,新建文件 LCD19264A.H和LCD19264A.CPP,编写如下代码CODE:/****************************************************************** 文件:LCD19264A.H* 说明:不支持以下特性* (1) 不支持显示开关控制* (2) 不支持设置显示起始行*****************************************************************/#i nclude "vsm.hpp"//LCD常量#define LCD_BLK_NUM 3 //lcd block number#define LCD_BLK_LEN 64 //lcd block length#define LCD_LINE_NUM 8 //lcd line number#define LCD_LENGTH (LCD_BLK_LEN*LCD_BLK_NUM) //lcd length#define LCD_WIDTH 64 //lcd width#define BLANK_WIDTH 50 //the width 。












