Proteus 自建元件库

合集下载

Proteus 自建元件库(TG19264A点阵式液晶显示元件)

Proteus 自建元件库(TG19264A点阵式液晶显示元件)

Proteus 自建元件库转自: 一、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(数字)――数字组件的引脚,提供检测引脚状态和创建输出事务事件的服务。

proteus常用元件库

proteus常用元件库

proteus常用元件库Proteus中元件库的中英对照及快捷键操作当你在用Proteus的时候,你是否真的清楚它们的元件库呢?如果你不清楚的话,也许这个对你有点用!!PROTEUS原理图元器件库详细说明Device.lib 包括电阻、电容、二极管、三极管和PCB的连接器符号ACTIVE.LIB 包括虚拟仪器和有源器件DIODE.LIB 包括二极管和整流桥DISPLAY.LIB 包括LCD、LEDBIPOLAR.LIB 包括三极管FET.LIB 包括场效应管ASIMMDLS.LIB 包括模拟元器件VALVES .LIB 包括电子管ANALOG.LIB 包括电源调节器、运放和数据采样ICCAPACITORS.LIB 包括电容COMS.LIB 包括 4000系列ECL.LIB 包括ECL10000系列MICRO.LIB 包括通用微处理器OPAMP.LIB 包括运算放大器RESISTORS.LIB 包括电阻FAIRCHLD .LIB 包括FAIRCHLD 半导体公司的分立器件LINTEC.LIB 包括 LINTEC公司的运算放大器NATDAC.LIB 包括国家半导体公司的数字采样器件NATOA.LIB 包括国家半导体公司的运算放大器TECOOR.LIB 包括TECOOR公司的 SCR 和TRIACTEXOAC.LIB 包括德州仪器公司的运算放大器和比较器ZETEX .LIB 包括ZETEX 公司的分立器件也许部分因版本回有所不同,这是 PROTEUS 6.7的版本。

如何删除左边元件列表中的元件点edit 中的Tidy可以删去所有你没用到的零件,但如果想只删其中指定的零件,似乎Proteus没有这个功能。

在器件箱中删除任意元件的方法:1.先在图纸中右键删除你在器件箱中指定的元件。

2.选中编辑(Edit)--整理选项(Tidy)--确定。

3.整理选项(Tidy)可以删除图纸上没有物理连接和在图纸工作区域以外的所有元件。

Proteus原理图元器件库详细说明

Proteus原理图元器件库详细说明

Proteus原理图元器件库详细说明Proteus是一款功能强大的电子设计自动化软件,它提供了原理图绘制、仿真和PCB设计等功能。

其中,原理图元器件库是Proteus中的一个重要组成部分,它包含了大量的电子元器件模型,方便用户在设计过程中快速选择和使用。

1. 元器件分类:Proteus原理图元器件库按照功能和类型进行了分类,例如,模拟电路元器件、数字电路元器件、通信电路元器件、传感器元器件等。

每个分类下都包含了相应类型的元器件模型,方便用户根据需要进行选择。

2. 元器件模型:Proteus原理图元器件库中的每个元器件都包含了详细的模型信息,包括元器件的封装形式、引脚定义、电气特性等。

用户可以通过查看元器件模型来了解元器件的详细信息,以便在设计过程中正确使用。

3. 元器件参数设置:Proteus原理图元器件库中的每个元器件都可以进行参数设置,包括电阻、电容、电感等元器件的数值设置,以及信号发生器、示波器等仪器的参数设置。

用户可以根据实际需要灵活设置元器件的参数,以满足设计需求。

5. 元器件和过滤:Proteus原理图元器件库提供了强大的和过滤功能,用户可以通过关键字需要的元器件,也可以按照分类进行过滤,以快速找到所需的元器件模型。

6. 元器件更新和扩展:Proteus原理图元器件库会不断更新和扩展,添加新的元器件模型,以适应不断发展的电子设计需求。

用户可以通过Proteus官方网站或软件界面提供的更新机制,及时获取最新的元器件模型。

总之,Proteus原理图元器件库是一个功能强大、分类清晰、模型详细的元器件库,为用户提供了丰富的选择和灵活的设置。

它是Proteus软件设计流程中不可或缺的一部分,能够极大地简化电子设计的过程,并提高设计的效率和准确性。

Protues元件库

Protues元件库

Protues元件库1。

Source库:包括电源、信号电压源、信号电流源、可控电压源、可控电流源、函数控制器件6个类。

2。

BASIC库:包含基础元件,如电阻、电容、电感、二极管、三极管、开关等;3。

Diodes:二极管库,包含普通二极管、齐纳二极管、二极管桥、变容二极管、PIN二极管、发光二极管等。

4。

Transisitor库:三极管库,包含NPN、PNP、达林顿管、IGBT、MOS管、场效应管、可控硅等;5。

Analog库:模拟器件库,包括运放、滤波器、比较器、模拟开关等模拟器件6。

TTL库:包含TTL型数字电路如7400 7404等门BJT电路。

7。

COMS库:COMS型数字电路如74HC00 74HC04等MOS管电路。

8。

MCU Model: MCU模型,Multisim的单片机模型比较少,只有8051 PIC16的少数模型和一些ROM RAM等9。

Advance Periphearls库:外围器件库,包含键盘、LCD、和一个显示终端的模型。

10。

MIXC Digital:混合数字电路库,包含DSP、CPLD、FPGA、PLD、单片机-微控制器、存储器件、一些接口电路等数字器件。

11。

Mixed:混合库,包含定时器、AC/DA转换芯片、模拟开关、震荡器等;12。

Indicators:指示器库,包含电压表、电流表、探针、蜂鸣器、灯、数码管等等显示器件。

13。

Power:电源库,包含保险丝、稳压器、电压抑制、隔离电源等14。

Misc:混合库,包含晶振、电子管、滤波器、MOS驱动、和其他一些器件等15。

RF:RF库,包含一些RF器件,如高频电容电感、高频三极管等16。

Elector Mechinical:电子机械器件库,包含传感开关、机械开关、继电器、电机等。

protues元件库

protues元件库

Proteus元件库及模式1.元件库元件分类元件子类所有分类(All Categories) 无子类模拟芯片(Analogy ICs)放大器(Amplifiers)比较器(Comparators)显示驱动器(Display Drivers)过滤器(Filters)数据选择器(Multiplexers)稳压器(Regulators)定时器(Timers)基准电压(V oltage References) 杂类(Miaxellaneous)电容(Capacitors)可动态显示充放电电容(Animated)音响专用轴线电容(AudioGarde Axial)轴线聚苯烯电容(Axoal Lead Polypropene)陶瓷圆片电容(Ceramic Disc)去耦片状电容(Decoupling Disc)普通电容(Generic)高温径线电容(High Temp Radial)高温轴线电解电容(High Temperature Axial Electrolytic)金属化聚酯电容(Meallised Polyester Film)金属化聚烯电容(Metallised Ploypropene)金属化聚烯膜电容(Metallised Ploypropene Film)小型电解电容(Miniture Electrolytic)多层金属化聚酯膜电容(Multilayer Metallised Polyester Film)聚酯膜电容(Mylar Film)镍栅电容(Nicked Bamer)无极性电容(Non Polarized)聚酯层电容(Polyester Layer)径线电解电容(Radial Electrolytic)树脂蚀刻电容(Resin Dipped)钽珠电容(Tantalum Bead)可变电容(Variable)VX轴线电解电容(VX Axial Electrolytic)连接器(Connectors) 音频接口(Audio)D型接口(D-Type)双排插座(DIL)插头(Header Blocks)PCB转接器(PCB Transfer)带线(Ribbon Cable元件分类元件子类连接器(Connectors) 单排插座(SIL)连线端子(Terminal Blocks)杂类(Miscellaneous)数据转换器(Date Converters) 模数转换器(A/D Coverters)数模转换器(D/A Coverters)采样保持器(Sample&Hold)温度传感器(Temperature Sensors)工具(Debugging Tools) 断点触发器(Breakpoint Triggers)逻辑探针(Logic Probes)逻辑激励源(Logic Stimuli)二极管(Diodes) 整流桥(Bridge Rectifiers) 普通二极管(Generic)整流管(Rectifiers)肖特基二极管(Schottky)开关管(Switching)隧道二极管(Tunnel)变容二极管(Varicap)齐纳击穿二极管(Zener)ECL 10000系列(ECL 10000 Series)各种常用集成电路机电类(Electromechanical)各类直流和步进电动机电感(Inductors) 普通电感(Generic)贴片式电感(SMT Inductors) 变压器(Transformations)拉普拉斯变换(Laplace Transformation)一阶模型(1st Order)二阶模型(2st Order)控制器(Controllers)算子(Operators)极点/零点(Poles/Zones)符号(Symbols)存储芯片(Memory ICs)动态数据存储器(Dynamic ARM)电可擦除可编程存储器(EEPROM)可擦除可编程存储器(EPROM)I2C总线存储器(I2C Memories)SPI总线存储器(SPI Memories)存储卡(Memory Cards)静态数据存储器(Static Memories)微处理器芯片(Microprocessor ICs)68000系列(68000 Family)8051系列(8051 Family)ARM系列(ARM Family)A VR系列(A VR Family)Parallax公司微处理器(BASIC Stamp Modules) HCF11 系列(HCF11 Family)微处理器芯片(Microprocessor ICs)PIC10 系列(PIC10 Family)PIC12 系列(PIC12 Family)PIC16 系列(PIC16 Family)PIC18 系列(PIC18 Family)Z80 系列(Z80 Family)CPU外设(Peripherals)杂项(Miscellaneous)含天线、ATA/IDE硬盘驱动模型、单节与多节电池、串行物理接口模型、晶振、动态与通用保险丝、模拟电压与电流符号、交通信号灯建模源(Modelling Primitives) 模拟(仿真分析)(Analogy (SPICE))数字(缓冲器与门电路)(Digital (Buffers&Gates)数字(杂类)(Digital(Miscellaneous))数字(组合电路)(Digital(Combinational))数字(时序电路)(Digital (Sequential))混合模式(Mixed Mode)可编程逻辑器件单元(PLD Elements)可时激励源(Realtime(Actuators))实时指示器(Realtime(Indictors))运算放大器(Operational Amplifiers) 单路运放(Single)二路运放(Dual)三路运放(Triple)四路运放(Quad)八路运放(Octal)理想运放(Ideal)大量使用的运放(Macromodel)光电子类器件(Operational Amplifiers) 7段数码管(7—Segment Displays)英文字符与数字符号液晶显示器(Alphanumeric LCDs)条形显示器(Bargraph Displays)点阵显示屏(Dot Matrix Displays)图形液晶(Graphical LCDs)灯泡(Lamp)液晶控制器(LCD Controllers)液晶面板显示器(LCD Panels Displyas)发光二极管(LEDs)光耦元件(Optocouplers)串行液晶(Serial LCDs)可编程逻辑电路与现场可编程门阵列(PLD&FPGA)无子类电阻(Resistors) 0.6W金属膜电阻(0.6W Metal Film) 10W 绕线电阻(10W Wirewound) 2W金属膜电阻(2W Metal Film)3W金属膜电阻(3W Metal Film)7W金属膜电阻(7W Metal Film)电阻(Resistors) 通用电阻符号(Generic)高压电阻(High V oltage)负温度系数热敏电阻(NTC)排阻(Resistor Packs)滑动变阻器(Variable)可变电阻(Varistor)仿真源(Simulator Primitives)触发器(Flip-Flops)门电路(Gates)电源(Sources)扬声器与音响设备(Speakers&Sounders)无子分类开关与继电器(Switchers &Relays)键盘(Keypads)普通继电器(Generic Relays) 专用继电器(Specific Relays)按键与拨码开关(Switchs)开关器件(Switching Devices) 双端交流开关元件(DIACs) 普通开关元件(Generic)可控硅(SCRs)三端可控硅(TRIACs)热敏极电子管(Thermionic Valves)三极真空管(Diodes)三极真空管(Triodes) 四级真空管(Tetrodes)五极真空管(Pentodes)转换器(Transducers)压力传感器(Pressure)温度传感器(Temperature)晶体管(Transistors) 双极性晶体管(Bipolar)普通晶体管(Generic)绝缘栅场效应管(IGBT/Insulated Gate Bipolar Transistors)结型场效应管(JFET)金属—氧化物半导体场效应晶体管(MOSFET)射频功率LDMOS晶体管(RF Power LDMOS)射频功率VDMOS晶体管(RF Power VDMOS)单结晶体管(Unijunction)CMOS 4000系列(CMOS 4000 series)TTL74系列(TTL 74 series)元件分类CMOS 4000系列(CMOS 4000 series)TTL74系列(TTL 74 series)TTL 74增强型低功耗肖特基系列(TTL 74ALS Series)TTL 74增强型肖特基系列(TTL 74AS Series)TTL 74 高速系列(TTL 741F Series)TTL 74HC 系列/CMOS工作电平(TTL 74HC Series)TTL 74HCT系列/TTL工作电平(TTL 74HCT Series)TTL 74低功消耗肖特基系列(TTL 74LS Series)TTL 74肖特基系列(TTL 74S Series)加法器(Adders)缓冲/驱动器(Buffers &Drivers)比较器(Comparators)计数器(Counters)子类元件解码器(Decoders)编码器(Encoders)触发器/锁存器(Flip-Flop&Latches)分频器/定时器(Frequency Dividers &Timers) 门电路/反相器(Gates&Inverters)数据选择器(Multivibrators)多谐振荡器(Multivibrators)振荡器(Oscillators)锁相环(Phrase-Locked-Loops,PLL)寄存器(Registers)信号开关(Signal Switches)收发器(Transceivers)杂类逻辑芯片(Misc-Logic)2.单片机常用的芯片①8051系列(8051 Family)中的8051和8052芯片。

proteus元件库

proteus元件库

proteus元件库模拟芯片(Analog ICs)放大器(Amplifiers)比较器(Comparators)显示驱动器(Display Drivers)过滤器(Filters)数据选择器(Multiplexers)稳压器(Regulators)定时器(Timers)基准电压(Voltage Reference)杂类(Miscellananeous)电容(Capacitors)可动态显示充放电电容(Animated)音响专用轴线电容(Audio Grade Axial)轴线聚苯烯电容(Axial Lead Polypropene)轴线聚苯烯电容(Axial Lead Polystyrene)陶瓷圆片电容(Ceramic Disc)去耦片状电容(Decoupling Disc)普通电容(Generic)高温径线电容(High Temp Radial)高温径线电解电容(High Temperature Axial Electrolytic)金属化聚酯膜电容(Metallised Polyester Film)金属化聚烯电容(Metallised Polypropene)金属化聚烯膜电容(Metallised Polypropene Film)小型电解电容(Miniture Electrolytic)多层金属化聚酯膜电容(Multilayer Metallised Polyestern Film) 聚脂膜电容(Mylar Film)镍栅电容(Nickel Barrier)无极性电容(Non Polarised)聚脂层电容(Polyester Layer)径线电解电容(Radial Electrolytic)树脂蚀刻电容(Resin Dipped)钽珠电容(Tantalum Bead)可变电容(Variable)VX轴线电解电容(VX Axial Electolytic)连接器(Connectors)音频接口(Audio)D 型接口(D-Type)双排插座(DIL)插头(Header Blocks)PCB转接器(PCB Transfer)带线(Ribbon Cable)单排插座(SIL)连线端子(T erminal Blocks)杂类(Miscellananeous)数据转换器(Data Converter)模/数转换器(A/D converters)数/模转换器(D/A converters)采样保持器(Sample & Hold)温度传感器(Temperature Sensore) 调试工具(Debugging Tools) 断点触发器(Breakpoint Triggers) 逻辑探针(Logic Probes)逻辑激励源(Logic Stimuli)二极管(Diode)整流桥(Bridge Rectifiers)普通二极管(Generic)整流管(Rectifiers)肖特基二极管(Schottky)开关管(Switching)隧道二极管(Tunnel)变容二极管(Varicap)齐纳击穿二极管(Zener)ECL 10000系列(ECL 10000 Series) 各种常用集成电路机电(Electromechanical)各种直流和步进电机电感(Inductors)普通电感(Generic)贴片式电感(SMT Inductors)变压器(Transformers)拉普拉斯变换(Laplace Primitives)一阶模型(1st Order)二阶模型(2st Order)控制器(Controllers)非线性模式(Non-Linear)算子(Operators)极点/零点(Poles/Zones)符号(Symbols)存储芯片(Memory Ics)动态数据存储器(Dynamic RAM)电可擦除可编程存储器(EEPROM)可擦除可编程存储器(EPROM)I2C总线存储器(I2C Memories)SPI总线存储器(SPI Memories)存储卡(Memory Cards)静态数据存储器(Static Memories)微处理器芯片(Microprocess ICs)6800 系列(6800 Family)8051 系列(8051 Family)ARM 系列(ARM Family)AVR 系列(AVR Family)Parallax 公司微处理器(BASIC Stamp Modules)HCF11 系列(HCF11 Family)PIC10 系列(PIC10 Family)PIC12 系列(PIC12 Family)PIC16 系列(PIC16 Family)PIC18 系列(PIC18 Family)Z80系列(Z80 Family)CPU 外设(Peripherals)杂项(Miscellaneous)含天线、ATA/IDE硬盘驱动模型、单节与多节电池、串行物理接口模型、晶振、动态与通用保险、模拟电压与电流符号、交通信号灯建模源(Modelling Primitives)模拟(仿真分析)(Analogy-SPICE)数字(缓冲器与门电路)(Digital--Buffers&Gates)数字(杂类)(Digital--Miscellaneous)数字(组合电路)(Digital--Combinational)数字(时序电路)(Digital--Sequential)混合模式(Mixed Mode)可编程逻辑器件单元(PLD Elements)实时激励源(Realtime Actuators)实时指示器(Realtime Indictors)运算放大器(Operational Amplifiers)单路运放(Single)二路运放(Dual)三路运放(Triple)四路运放(Quad)八路运放(Octal)理想运放(Ideal)大量使用的运放(Macromodel)光电子类器件(Optoelectronics)七段数码管(7-Segment Displays)英文字符与数字符号液晶显示器(Alphanumeric LCDs) 条形显示器(Bargraph Displays)点阵显示屏(Dot Matrix Display)图形液晶(Grphical LCDs)灯泡(Lamp)液晶控制器(LCD Controllers)液晶面板显示(LCD Panels Displays)发光二极管(LEDs)光耦元件(Optocouplers)串行液晶(Serial LCDs)可编程逻辑电路与现场可编程门阵列(PLD&FPGA)无子类电阻(Resistors)0.6W金属膜电阻(0.6W Metal Film)10W 绕线电阻(10W Wirewound)2W 金属膜电阻(2W Metal Film)3W 金属膜电阻(3W Metal Film)7W 金属膜电阻(7W Metal Film)通用电阻符号(Generic)高压电阻(High Voltage)负温度系数热敏电阻(NTC)排阻(Resisters Packs)滑动变阻器(Variable)可变电阻(Varistors)仿真源(Simulator Primitives)触发器(Flip-Flop)门电路(Gates)电源(Sources)扬声器与音响设备(Speaker&Sounders)无子分类开关与继电器(Switch&Relays)键盘(Keypads)普通继电器(Generic Relays)专用继电器(Specific Relays)按键与拨码(Switchs)开关器件(Switching Devices)双端交流开关元件(DIACs)普通开关元件(Generic)可控硅(SCRs)三端可控硅(TRIACs)热阴极电子管(Thermionic Valves)二极真空管(Diodes)三极真空管(Triodes)四极真空管(Tetrodes)五极真空管(Pentodes)转换器(Transducers)压力传感器(Pressures)温度传感器(Temperature)晶体管(Transistors)双极性晶体管(Bipolar)普通晶体管(Generic)绝缘栅场效应管(IGBY/Insulated Gate Bipolar Transistors 结型场效应晶体管(JFET)金属-氧化物半导体场效应晶体管(MOSFET)射频功率LDMOS晶体管(RF Power LDMOS)射频功率VDMOS晶体管(RF Power VDMOS)单结晶体管(Unijunction)CMOS 4000系列(CMOS 4000 series TTL 74系列(TTL 74 series) TTL 74增强型低功耗肖特基系列(TTL 74ALSSeries) TTL 74增强型肖特基系列(TTL 74AS Series) TTL 74高速系列(TTL 74F Series) TTL 74HC系列/CMOS 工作电平(TTL 74HC Series) TTL 74HCT系列/TTL工作电平(TTL 74HCTSeries) TTL 74低功耗肖特基系列(TTL 74LS Series) TTL 74肖特基系列(TTL 74S Series)加法器(Adders)缓冲器/驱动器(Buffers&Drivers)比较器(Comparators)计数器(Counters)解码器(Decoders)编码器(Encoders)存储器(Memory)触发器/锁存器(Flip-Flop&Latches)分频器/定时器(Frequency Dividers & Timers)门电路/反相器(Gates&Inverters)数据选择器(Multiplexers)多谐振荡器(Multivibrators)振荡器(Oscillators)锁相环(Phrase-Locked-Loop,PLL)寄存器(Registers)信号开关(Signal Switches)收发器(Tranxceivers)杂类逻辑芯片(Misc.Logic)。

PROTEUS 元件库

PROTEUS 元件库

void Move_LED() { if ((P1&0X01)==0) P0=_cror_(P0,1); else if ((P1&0X02)==0) P0=_crol_(P0,1); else if ((P1&0X04)==0) P2=_cror_(P2,1); else if ((P1&0X08)==0) P2=_crol_(P2,1); } void main() { uchar Recent_Key; P0=0xFE; P2=0xFE; P1=0xFF; Recent_Key=0xFF; while(1)
所 属 类 Microprocessor ICs Capacitors Capacitors Miscellaneous Resistors Optoelectronics Data Converters Resistors
所属子类 8051 Family Generic Generic - Generic 7-Segment Displays A/D Converters Variable
Switches and Relays 开关和继电器共有4个分类,
表2-20 Switches and Relays子类示意
Optoelectronics 光电器件共有11个分类
表2-17 Optoelectronics子类示意
K1----K4控制LED移位
#include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int void DelayMs(uint x) {uchar i; while(x--) for(i=0;i<120;i++); }

第一讲:建立自己的库

第一讲:建立自己的库

动手建立自己PROTEUS 库元件(第一讲) 第一步:建立自己的库
点击 Create libray
输入要建立的库名:
输入库元件的数量:
至此库已建立,至于追加以前库里元件,删除等不再叙述
第二步: 创建元器件:
本例旨在讲方法,可能元件原有详细功能不相符,望见谅.
1)绘制原理图器件:
至于绘图方法我也不再讲述,这是起码的功能,建立如下图
点击创建元件
输入元件名称和标号
创建元件追加封装
以上为设计pcb用我不再叙述可以直接跳过:
创建新的属性 MODFILE 填写如上图
连接帮助和数据手册此步不重要不再叙述:
选择第一步自己创建的库
建立器件的类型等
至此已完成库元件这时我们的工作已经一般了,下一讲是建立该元件 MDF 文件即 ULN2803A.MDF。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、Proteus VSM仿真模型简介在使用Proteus仿真单片机系统的过程中,经常找不到所需的元件,这就需要自己编写。

Proteus VSM的一个主要特色是使用基于DLL组件模型的可扩展性。

这些模型分为两类:电气模型(Electrical Model)和绘图模型(Graphical Model)。

电气模型实现元件的电气特性,按规定的时序接收数据和输出数据;绘图模型实现仿真时与用户的交互,例如LCD的显示。

一个元件可以只实现电气模型,也可以都实现电气和绘图模型。

Proteus为VSM模型提供了一些C++抽象类接口,用户创建元件时需要在DLL中实现相应的抽象类。

VSM模型和Proteus系统通信的原理如下图:[url=/upimg/allimg/0612/1_05124036.JPG]0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/imag e.width;}}" border="0">[/url]绘图模型接口抽象类: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++编写元件,实现电气和绘图模型,编译生成DLL。

4.搭建电路仿真测试。

三、VSM模型开发实例下面以TG19264A点阵式液晶显示元件的开发为实例详细讲解开发过程。

1.打开Proteus,选择菜单查看>>Snap 10 th,选择左边绘图工具栏的2D graphics box,绘制如图所示的三个图形。

[url=/upimg/allimg/0612/1_05133657_lit.JPG]0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/imag e.width;}}" border="0">[/url]2.选择2D graphics line,给出两条直线,设置width为36th,颜色为灰色。

选择2D graphics circle,给四个角绘制安装孔。

选择Markers for component origin,给三个图形分别绘图符号原点(图中红色部分)。

[url=/upimg/allimg/0612/1_05133821_lit.JPG]0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/imag e.width;}}" border="0">[/url]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。

[url=/upimg/allimg/0612/1_05133914_lit.JPG]0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/imag e.width;}}" border="0">[/url]4.右键拖出选择框选择第一个符号,选择菜单库>>制作符号,命名为LCD19264A_C,确定。

同理,第二和第三个分别命名为LCD19264A_1 和LCD19264A_0。

当用户调用drawsymbol (-1),将绘制LCD19264A_C,调用drawsymbol (1),将绘制LCD19264A_1,调用drawsymbol (0),将绘制LCD19264A_0。

[url=/upimg/allimg/0612/1_05134000_lit.JPG]0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/imag e.width;}}" border="0">[/url]5.右键拖出选择框选择符号LCD19264A_C,选择菜单库>>制作元件,Device Properties 设置如图,[url=/upimg/allimg/0612/1_05134213.JPG]0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/imag e.width;}}" border="0">[/url]点击Next>。

跳过封装设置,点击Next>。

组件属性设置如图,[url=/upimg/allimg/0612/1_05134248.JPG]0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/imag e.width;}}" border="0">[/url][url=/upimg/allimg/0612/1_05134322.JPG]0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/imag e.width;}}" border="0">[/url]点击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 of blank#define SYM_LINEWIDTH 28 //the width of symbol line//LCD命令掩码#define CMD_MASK 0xc0//LCD命令#define DISP_ONOFF 0x00 //开关背光#define SET_STARTLINE 0xc0 //设置起始行#define SET_XADDRESS 0x80 //设置X地址#define SET_YADDRESS 0x40 //设置Y地址//延时常量#define DELAY_1s 1000000000000#define DELAY_1ms 1000000000#define DELAY_1us 1000000#define DELAY_1ns 1000#define DELAY_1ps 1/*LCD元件既有数字电气特性,也有绘图特性,所以要继承IACTIVEMODEL和IDSIMMODEL */class LCD19264A : public IACTIVEMODEL,public IDSIMMODEL{public:/* 电气模型成员函数*///数字电路总是返回TRUEINT isdigital (CHAR *pinname);//当创建模型实例时被调用,做初始化工作VOID setup (IINSTANCE *inst, IDSIMCKT *dsim);//仿真运行模式控制,交互仿真中每帧开始时被调用VOID runctrl (RUNMODES mode);//交互仿真时用户改变按键等的状态时被调用VOID actuate (REALTIME time, ACTIVESTATE newstate);//交互仿真时每帧结束时被调用,通过传递ACTIVEDATA数据与绘图模型通信,从而调用animate()进行绘图BOOL indicate (REALTIME time, ACTIVEDATA *data);//当引脚状态变化时被调用,主要用来处理数据输入和输出VOID simulate (ABSTIME time, DSIMMODES mode);//可通过setcallback()设置在给定时间调用的回调函数VOID callback (ABSTIME time, EVENTID eventid);/* 绘图模型成员函数*///当创建模型实例时被调用,做初始化工作VOID initialize (ICOMPONENT *cpt);//被PROSPICE调用,返回模拟电气模型ISPICEMODEL *getspicemodel (CHAR *device);//被PROSPICE调用,返回数字电气模型IDSIMMODEL *getdsimmodel (CHAR *device);//当原理图需要重绘时被调用VOID plot (ACTIVESTATE state);//当相应的电气模型产生活动事件时被调用,常用来更新图形VOID animate (INT element, ACTIVEDATA *newstate);//用来处理键盘和鼠标事件BOOL actuate (WORD key, INT x, INT y, DWORD flags);private:IINSTANCE *instance; //PROSPICE仿真原始模型IDSIMCKT *ckt; //DSIM的数字元件ICOMPONENT *component; //ISIS内部一个活动组件对象//引脚定义IDSIMPIN *di; //D/IIDSIMPIN *rw; //R/WIDSIMPIN *en; //EIDSIMPIN *cs1; //CS1IDSIMPIN *cs2; //CS2IDSIMPIN *cs3; //CS3IDSIMPIN *d[8]; //D0~D7IBUSPIN *databus; //D[0..7]//LCD参数BYTE x_addr; //X地址(见手册)BYTE y_addr; //Y地址(见手册)BYTE status; //状态(见手册)BYTE cur_blk; //当前块号(总共分3块,见手册)BYTE DDRAM[LCD_BLK_NUM][LCD_BLK_LEN*LCD_WIDTH/8]; //LCD显示RAM BOOL new_flag; //新数据到达标志//显示参数BOX lcdarea; //LCD显示区域float pix_width, pix_height; //每象素对应矩形的宽和高};CODE:/****************************************************************** 文件:LCD19264A.CPP* 说明:不支持以下特性* (1) 不支持显示开关控制* (2) 不支持设置显示起始行*****************************************************************/#i nclude#i nclude "LCD19264A.h"//----------------------------------------------------------------------------//电气模型的实现//构造数字电气模型实例extern "C" IDSIMMODEL __declspec(dllexport) * createdsimmodel (CHAR *device,ILICENCESERVER *ils){//授权认证ils->authorize(0x88888888, 0x69); //版本为6.9return new LCD19264A; //创建模型实例}//析构数字电气模型实例extern "C" VOID __declspec(dllexport) deletedsimmodel (IDSIMMODEL *model) {delete (LCD19264A *)model; //删除模型实例}//数字电路总是返回TRUEINT LCD19264A::isdigital (CHAR *pinname){return 1;}//当创建模型实例时被调用,做初始化工作VOID LCD19264A::setup (IINSTANCE *inst, IDSIMCKT *dsim){instance = inst; //PROSPICE仿真原始模型ckt = dsim; //DSIM的数字元件//获取引脚di = instance->getdsimpin("D/I,d/i", true);di->setstate(FLT); //FLOATrw = instance->getdsimpin("R/W,r/w", true);rw->setstate(FLT);en = instance->getdsimpin("E,e", true);en->setstate(FLT);cs1 = instance->getdsimpin("CS1,cs1", true);cs1->setstate(FLT);cs2 = instance->getdsimpin("CS2,cs2", true);cs2->setstate(FLT);cs3 = instance->getdsimpin("CS3,cs3", true);cs3->setstate(FLT);d[0] = instance->getdsimpin("D0,d0", true);d[0]->setstate(FLT);d[1] = instance->getdsimpin("D1,d1", true);d[1]->setstate(FLT);d[2] = instance->getdsimpin("D2,d2", true);d[2]->setstate(FLT);d[3] = instance->getdsimpin("D3,d3", true);d[3]->setstate(FLT);d[4] = instance->getdsimpin("D4,d4", true);d[4]->setstate(FLT);d[5] = instance->getdsimpin("D5,d5", true);d[5]->setstate(FLT);d[6] = instance->getdsimpin("D6,d6", true);d[6]->setstate(FLT);d[7] = instance->getdsimpin("D7,d7", true);d[7]->setstate(FLT);//为方便操作,将D0~D7映射为8位总线databus = instance->getbuspin("LCD_DBUS", d, 8);databus->settiming(100,100,100); //设置时间延迟databus->setstates(SHI,SLO,FLT); //设置总线逻辑为[1,0,三态]时的驱动状态//lcd modelx_addr = 0; //X地址(见手册)y_addr = 0; //Y地址(见手册)status = 0; //状态(见手册)new_flag = TRUE; //新数据到达标志}//仿真运行模式控制,交互仿真中每帧开始时被调用VOID LCD19264A::runctrl (RUNMODES mode){}//交互仿真时用户改变按键等的状态时被调用VOID LCD19264A::actuate (REALTIME time, ACTIVESTATE newstate){}//交互仿真时每帧结束时被调用,通过传递ACTIVEDATA数据与绘图模型通信,从而调用animate()进行绘图BOOL LCD19264A::indicate (REALTIME time, ACTIVEDATA *data){if(new_flag){ //有新数据到达data->type = ADT_REAL; //call back animate() to refresh lcddata->realval = (float)time*DSIMTICK;}return TRUE;}//当引脚状态变化时被调用,主要用来处理数据输入和输出VOID LCD19264A::simulate (ABSTIME time, DSIMMODES mode){BYTE data;if(en->isnegedge()){ //E的下降沿到达if((rw->istate()==SLO)||(rw->istate()==WLO)){ //R/W为低表示写//读块选择if((cs1->istate()==SLO)||(cs1->istate()==WLO))cur_blk = 0;else if((cs2->istate()==SLO)||(cs2->istate()==WLO))cur_blk = 1;else if((cs3->istate()==SLO)||(cs3->istate()==WLO))cur_blk = 2;elsereturn; //not select blockdata = (BYTE)databus->getbusvalue(); //读数据if((di->istate()==SHI)||(di->istate()==WHI)){ //D/I为高表示数据DDRAM[cur_blk][x_addr*LCD_BLK_LEN+y_addr] = data; //写入数据new_flag = TRUE; //新数据到达标志y_addr = ((y_addr+1)%LCD_BLK_LEN); //y地址自动加1if(y_addr==0)x_addr = ((x_addr+1)%LCD_LINE_NUM); //自动换行}else{ //D/I为低表示命令switch(data&CMD_MASK){case DISP_ONOFF: //开关背光break;case SET_STARTLINE: //设置起始行break;case SET_XADDRESS: //设置X地址x_addr = (data&0x07); //bit2~bit0break;case SET_YADDRESS: //设置Y地址y_addr = (data&0x3f); //bit5~bit0break;default:break;}}}else{ //E的下降沿到达,R/W为高表示读结束databus->drivetristate(time); //驱动总线为三态}}else if(en->isposedge() //E的上升沿到达&& ((rw->istate()==SHI)||(rw->istate()==WHI))){ //R/W为高表示读if((di->istate()==SHI)||(di->istate()==WHI)){ //D/I为高表示数据//读块选择if((cs1->istate()==SLO)||(cs1->istate()==WLO))cur_blk = 0;else if((cs2->istate()==SLO)||(cs2->istate()==WLO))cur_blk = 1;else if((cs3->istate()==SLO)||(cs3->istate()==WLO))cur_blk = 2;elsereturn; //not select blockdata = DDRAM[cur_blk][x_addr*LCD_BLK_LEN+y_addr];databus->drivebusvalue(time, data); //输出数据y_addr = ((y_addr+1)%LCD_BLK_LEN); //y地址自动加1if(y_addr==0)x_addr = ((x_addr+1)%LCD_LINE_NUM); //自动换行}else{ //D/I为低表示命令databus->drivebusvalue(time, status); //输出状态}}}//可通过setcallback()设置在给定时间调用的回调函数VOID LCD19264A::callback (ABSTIME time, EVENTID eventid){}//----------------------------------------------------------------------------//绘图模型的实现// Exported constructor for active component models.extern "C" IACTIVEMODEL __declspec(dllexport) * createactivemodel (CHAR *device, ILICENCESERVER *ils){ils->authorize (0x88888888,0x69); //6.9return new LCD19264A;}// Exported destructor for active component models.extern "C" VOID __declspec(dllexport) deleteactivemodel (IACTIVEMODEL *model) {delete (LCD19264A *)model;}//当创建模型实例时被调用,做初始化工作VOID LCD19264A::initialize (ICOMPONENT *cpt){//获取ICOMPONENT接口和初始化component = cpt;component->setpenwidth(0);component->setpencolour(BLACK);component->setbrushcolour(BLACK);//获取显示区域component->getsymbolarea(0,&lcdarea);//计算每象素对应矩形的宽和高pix_width = (float)(lcdarea.x2-lcdarea.x1-BLANK_WIDTH*2-SYM_LINEWIDTH*2)/LCD_LENGTH;pix_height = (float)(lcdarea.y2-lcdarea.y1-BLANK_WIDTH*2-SYM_LINEWIDTH*2)/LCD_WIDTH;//被PROSPICE调用,返回模拟电气模型ISPICEMODEL *LCD19264A::getspicemodel (CHAR *){return NULL;}//被PROSPICE调用,返回数字电气模型IDSIMMODEL *LCD19264A::getdsimmodel (CHAR *){return this;}//当原理图需要重绘时被调用VOID LCD19264A::plot (ACTIVESTATE state){//绘制LCD19264A_C元件基本图形component->drawsymbol(-1);//刷新LCD数据显示new_flag = TRUE;animate (0, NULL);}//当相应的电气模型产生活动事件时被调用,常用来更新图形VOID LCD19264A::animate (INT element, ACTIVEDATA *data){BOX pix;BYTE dat,block,line,byte_off,bit_off;if(new_flag){ //当有新数据到达new_flag = FALSE;component->begincache (lcdarea); //打开缓冲component->drawsymbol(1); //显示LCD19264_1符号//显示各点数据for(block=0; block<LCD_BLK_NUM; blockfor(line=0; line<LCD_LINE_NUM; linefor(byte_off=0; byte_off<LCD_BLK_LEN; offdat = DDRAM[block][line*LCD_BLK_LEN+byte_off]; //get byte datafor(bit_off=0; bit_off<8; bit_off++){if(dat&(1<<BIT_OFF)){ bit="1pix.x1 = (int)(BLANK_WIDTH+(block*LCD_BLK_LEN+byte_off)*pix_width+0.5);pix.y1 = -(int)(BLANK_WIDTH+(line*8+bit_off)*pix_height+0.5);pix.x2 = pix.x1 + (int)(pix_width+0.5);pix.y2 = pix.y1 - (int)(pix_height+0.5);component->drawbox(pix); //绘制1个象素点}}}}component->endcache(); //结束缓冲,显示数据}}//用来处理键盘和鼠标事件BOOL LCD19264A::actuate (WORD key, INT x, INT y, DWORD flags) {return FALSE;}7.搭建电路如下电路,新建Keil C工程,编写代码测试元件。

相关文档
最新文档