创建基于DLL的Proteus仿真模型

合集下载

Proteus软件仿真教程

Proteus软件仿真教程

Proteus软件仿真教程我的毕业论文(二):Keil软件的基本用法2007年07月02日星期一 13:11Keil μVision是Keil公司(ARM子公司)开发的一款用于MCS-51单片机开发的应用十分广泛的编译和调试软件。

该软件可以编辑、编译汇编语言、C51语言,连接定位目标文件和库文件,创建HEX文件,调试目标程序等。

Keil软件功能强大,包含很多部分,本文我们主要使用Keil μVision来开发C51项目、调试程序并生成HEX文件来用于单片机开发。

Keil μVision是一款在Windows下使用的集成开发环境,目前最新版本为V3,本文中我们为了简便选用V2.0。

下面我们就来熟悉一下Keil软件。

首先安装软件,它的安装与MedWin一样简单,我们不做过多介绍。

安装完成后,我们就可以使用软件了,打开软件,我们可以看到其界面,如下图所示:下面我们就来使用Keil软件开发我们的第一个项目。

点击“Project”(工程)菜单下面的“New Project”(新建工程),我们来新建一个工程。

软件弹出“Create New Project”(创建新工程)窗口。

如下图所示: prova mitjanes, ?per punts d'experiència. Mòdul de compressió Es de veure de deformació cohesionada terra, sorra per EO. 3, la distribució de les aigüessubterrànies: 3.1, el camp lloc tipus medi ambient classe II. Segons hidrològica geològic dos o tres capa sòl per clay llim, quatre capa de llim General subterrània enterrat, tipus d'aigua subterrània és quart porus Departament submarinisme, enquesta durant nivell estable d'aigua subterrània de llocs mesurat enterrat profundament 1.10 ~ 2.30 m, principal p er precipitació de l'atmosfera i aigües superficials de Xia infiltració subministraments, per evaporació i l'escorrentia metro per manera d'excreció principals; nivell freàtic amb temporada canvia la gamma més evident (canvis anys rang 0,50 ~ 1.50 m), ha r ecuperat Feng la temporada de l'aigua nivell pot lleugerament. 3.2, basat en laexperiència regional i resultats de prova de penetració coberta, lloc II clip llim capes de coeficients de permeabilitat franc argila per argila1x10-4cm/s, de franc interbedded amb coeficients de permeabilitat llims ? per K=6.0x10-4~1.0x10-3cm/s, permeabilitat de franc experiència negra capa valors de coeficient de 6 x 10-3 cm/s. Precipitació negre franc impacte radi és de 253.33 m, per tant, construcció ha de ser uadvantages, facing the Yangtze River Delta, Pearl River Delta, Shandong peninsula, Beijing-Tianjin-Tangshan area, targeted investment promotion several times. Industry-led unit and various town streets are developingdetailed promotion plans, the basis of what is specific to each industry, has formed a kind of scale, need to bring in the kind of projects each town street has the kind of resources, what location, focus on thedevelopment of the kind of industries. Four stroke technology and science. Determinants of technology is the County's economic development through scientific and technological innovation, improve product value-added and improve economic competitiveness, is the inevitable way to achieve leapfrog development. Talent is the city center city's first resource, is the primary industry development, and revitalization of the social protection. So, in terms of skills: to catch ... Competitive. Encouraging enterprises to actively undertake science and technology projects, strengthening research cooperation, using advanced technology to increase the added value of their products to ensure thatintroduction of transforming scientific and technological achievements during the year ... ... New research enterprises ... ... Home, creating innovative platforms ... ... Generic classifier. In: first, we must strengthen the cultivation of talent, efforts to increase vocational education and training and meet the basic demand of enterprise development. Then introduced a number of the county needed scarce education, health professionals, meet social development needs to invest more in machinery, pharmaceutical manufacturing research and development in higher education, such as the introduction of talent to meet the need. Third, we must rely on ... ... Post-doctoral workstation, ... ... Food research station platform, to the XX University to find experts我们为工程输入文件名后,点击“保存”按钮,软件将弹出“SelectDevice for Target”(选择MCU)窗口,如下图所示。

Proteus电路仿真快速入门GDL

Proteus电路仿真快速入门GDL
二极管、开关二极管、变容二极管和稳压二极管。打开Proteus 的元件拾取对话框,选中“Category”中的“Diodes”,一般 来说选取子类“Sub-category”中的“Generic”通用器件即可。
(3)电阻
电阻的分类为“Resistors”,子类有0.6W和2W的金属膜电阻、3W、 7W和10W绕线电阻、通用电阻、热敏电阻(NTC)、排阻(Resistors Packs)、可变电阻(Variables)及家用高压系列加热电阻丝。常用电阻可直 接输入通用电阻“RES”即可,然后再修改参数。
交互式仿真实例一(模拟电路)
激励源
电压探针 虚拟示波器
仿真时的示波器窗口
交互式仿真实例二(单片机电路)
CPU运行游戏程序
游戏显示屏(LCD)
引脚逻辑状态显示
游戏手柄 (可映射到PC键盘上)
高级仿真(ASF)实例(放大电路分析)
模拟分析:用于绘制一条或多条电压或电流
随时间变化的曲线。
频率分析:用于分析电路的频率特性
仿真工具-激励源
DC:直流电压源; Sine:正弦波发生器。 Pulse:脉冲发生器。 Exp:指数脉冲发生器。 SFFM:单频率调频波信号发生器。 Pwlin:任意分段线性脉冲信号发生器。 File:File信号发生器。数据来源于
ASCII文件。 Audio:音频信号发生器。数据来源于
Proteus电路仿真快速入 门GDL
1.PROTEUS简介 2.PROTEUS ISIS的特点 3.PROTEUS电路仿真方法 4.常用元件介绍
元件库、符号库管理* 5.仿真实例
实例一:RC桥式振荡器 实例二:数字电路彩灯 实例三:单管共射放大器 实例四:差动放大器 实例五:直流稳压电源

创建Proteus原理图仿真模型的制作技术

创建Proteus原理图仿真模型的制作技术

Proteus是英国Labcenter electronics公司研发的EDA工具软件。

Proteus不仅是模拟电路、数字电路、模/数混合电路的设计与仿真平台;更是目前世界上最先进的多种型号微控制器(单片机)应用系统的设计与仿真平台。

Proteus提供了众多的信号源,使用者还可构建信号;提供了数字示波器、逻辑分析仪、I2C 调试器、SPI调试器等十几种虚拟仪器;提供了可作精确测量与分析(例傅里叶分析、噪声分析等)的Proteus高级图表仿真(ASF)。

所以,Proteus也是检测、测试与分析的平台。

正因如此,Proteus在电类教学、单片机应用产品研发、科研及测试技术中都获得了愈来愈广泛的应用。

Proteus在全世界拥有越来越多的使用者。

例如:Motorola、Philips、Sony等企业;Cambridge University(剑桥大学)、Stanford University(斯坦福大学)、香港理工大学、中山大学等高等院校。

Proteus元器件仿真模型库是应用Proteus设计与实现实时、交互、动态仿真的基础。

Proteus有6 000多个各种类型的仿真模型。

一般可将他们分为4类:原型模型(Primitive Models);原理图模型(Schematic Models);VSM模型(VSM Models);SPICE模型(SPICE Models)。

虽然Proteus仿真模型库相当丰富,但仍有不能满足应用的情况。

这就需要自己创建模型来丰富Proteus库。

本文以创建6位D/A转换器和TTL7458原理图模型实例论述创建原理图仿真模型方法,存库与调用方法。

如图1所示。

1 Proteus创建模型流程创建原理图模型同创建其他模型大致相同,其流程也大致一样。

如图1所示。

在创建模型中,若无需设计元器件封装,则可跳过与设计封装有关的步骤;若无需设计模型内电路,则可跳过与内电路有关的步骤。

2 创建6位数/模转换器(本文命名DA6,原Proteus库中无此模型)2.1 绘制原理图符号在Proteus ISIS中选择2D工具绘制DA6的原理图符号,如图2所示。

Proteus8.6SP2仿真使用汇总

Proteus8.6SP2仿真使用汇总

目录:一、设置仿真环境与操作1、设置整体仿真环境2、设置模拟仿真选项3、常用操作二、图标含义与绘图1、逻辑探针图标2、逻辑状态图标3、示波器图标4、交流VSINE图标5、Probes探针图标6、电源图标7、Counter Timer图标检测频率10、修改网表和电子元件属性11、生成BOM12、总线标注三、通用电子元件1、通用电子元件列表2、以文本形式查看与修改元件属性四、交互式VSM仿真1、信号发生器1)PULSE图标产生波形 2)SFFM图标产生两个正弦波的调制波 3)PWLIN图标产生自定义波形五、图表式仿真1、图表仿真使用的信号源介绍2、图表仿真的一些操作六、单片机仿真1、Proteus作为独立的调试器1)Keil编译环境设置输出Proteus可调试文件2)Proteus中相关操作3)常用调试文件格式2、Proteus作为在路模拟器ICE(In-Circuit Emulator)1)官网下载链接程序链接Keil与Proteus 2)通过VDM51.dll链接Keil与Proteus 3)使用VDMAGDI.EXE链接Keil与Proteus3、添加hex文件到单片机七、仿真模型及其创建1、Primitive Models2、Schematic Models1)绘制图形2)创建元件3)模型的创建3、VSM Models4、SPICE Models5、元件模型的介绍八、调试跟踪九、仿真错误处理1、出现元件错误提示2、Gmin stepping failed和too many iterations without convegence(不收敛的迭代次数太多)3、置放电压探针,仿真显示“1.#QNAN”4、仿真中Digital Oscilloscope数字示波镜无显示的处理5、多谐振荡器无法起振十、仿真实例讲解1、分等级与参数化电路设计2、伺服电机控制-------------------------------------------下面的讲述基于Proteus 8.6 SP2 Professional版本WIN7/32位系统,此软件下载搜索我的百度网盘“Proteus 8.6 SP2 Professional 使用良好”。

PROTEUS仿真教程

PROTEUS仿真教程

PROTEUS仿真教程第一步:安装PROTEUS软件第二步:创建新项目在PROTEUS软件中,您可以创建新项目来开始您的电路仿真工作。

点击菜单栏中的“File”选项,选择“New Project”来创建一个新项目。

然后输入项目的名称并选择保存路径。

第三步:添加元件在PROTEUS软件中,您可以通过“Library”选项来选择各种电子元件,包括电阻、电容、电压源等。

点击“Library”选项,选择您需要的元件并将其拖动到工作区中。

连接元件之间的引脚以搭建电路。

第四步:设置仿真参数在搭建完电路后,您需要设置仿真参数。

点击菜单栏中的“Graph”选项,选择“Set Simulator Parameters”来设置仿真参数,包括仿真时间、步长等。

您还可以设置输出波形的显示格式和范围。

第五步:运行仿真设置好仿真参数后,点击菜单栏中的“Simulate”选项,选择“Run”来运行仿真。

PROTEUS将模拟您搭建的电路,并显示仿真结果。

您可以查看电压、电流等参数,并分析电路的工作情况。

第六步:调试电路在仿真过程中,您可能会发现电路存在问题,比如输出波形不符合预期,电流过大等。

您可以通过调试电路来解决这些问题。

尝试更改元件参数、连接方式等,并重新运行仿真来检查效果。

第七步:保存和导出仿真结果在完成仿真后,您可以保存仿真结果并导出到其他格式。

点击菜单栏中的“File”选项,选择“Save As”来保存仿真文件。

您还可以导出波形图、数据表等结果,以便后续分析和报告。

总结:本教程介绍了PROTEUS的基本功能和使用方法,帮助您快速上手该软件进行电路仿真工作。

通过创建新项目、添加元件、设置仿真参数、运行仿真、调试电路和保存结果,您可以轻松完成电路仿真工作。

希望本教程对您有所帮助,祝您在PROTEUS软件中取得成功!。

基于Proteus的建模技术及EasyHDL介绍主要内容26页PPT

基于Proteus的建模技术及EasyHDL介绍主要内容26页PPT
55、 为 中 华 之 崛起而 读书。 ——周 恩来
1、不要轻言放弃,否则对不起自己。
2、要冒一次险!整个生命就是一场冒险。走得最远的人,常是愿意 去做,并愿意去冒险人。“稳妥”之船,从未能从岸边走远。-戴尔.卡耐基。
梦 境
3、人生就像一杯没有加糖的咖啡,喝起来是苦涩的,回味起来却有 久久不会退去的余香。
基于Proteus的建模技术及EasyHDL介绍 4、守业的最好办法就是不断的发展。 5、当爱不能完美,我宁愿选择无悔,不管来生多么美丽,我不愿失 去今生对你的记忆,我不求天长地久的美景,我只要生生世世的轮 回里有你。 主要内容
谢谢!
51、 天 下 之 事 常成 于困约 ,而败 于奢靡 。——陆 游 52、 生 命 不 等 于是呼 吸,生 命是活 动。——卢 梭
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特

创建基于DLL的Proteus VSM仿真模型

创建基于DLL的Proteus VSM仿真模型

创建基于DLL的Proteus VSM仿真模型一、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(数字)――数字组件的引脚,提供检测引脚状态和创建输出事务事件的服务。

基于DLL技术的PID仿真器设计与实现

基于DLL技术的PID仿真器设计与实现

Absr c :L b E n t b h v h i wn p e o n n ed fa p ia in t a t a Vl W a d Mal a e t e ro rd mi a t l s o p l t .T e a n o p r t h d a t g sa d h v r a i f c o h y c n i c r o ae t e a v a e n a e moe n
优秀的面 向对象 的图形化编程语 言,具有功 能完 整 、应 用灵 活 、易于 理解 、编 程简 单 、开发 效率 高 等 优点 ,已成 为虚 拟 仪 器 开发 事 实 上 的工业 标 准 。
然 而 ,它 在 工程计 算 、图形 处理 、先 进控 制 、系 统
建模 和仿 真方 面 等远 不及 M db功能 强 大 。Maa aa db 是 Ma Wok 公 司开 发 的 “ 算 纸 ” 的 程 序 设 计 t rs h 演 式 语 言 。它 以强大 的科 学计算 功 能 、大 量稳 定可 靠 的 算法 库 ,在 数 学 计 算 工 具 方 面 已成 为 事 实 上 的标
b t ra piain ite l b x dpo rmmig h ep p rit d c sameh fu igDL e l etec mmu iainb t e n et p l t f h ywi emie rga e c o l n .T a e r u e to o sn L t rai o n o d o z h nc t ew e o
De i n a d I p e e t o D i u a o s d o sg n m lm n f PI S m l t r Ba e n DLL
PENG Yu- n nig,L U n I Pi g

仿真软件proteus基础教程-----Proteus+常见操作方法

仿真软件proteus基础教程-----Proteus+常见操作方法

仿真软件proteus基础教程-----Proteus+常见操作方法1.proteus中怎样使用模板file--〉new design:在弹出的对话框就可以选择模板了file--〉save design as template…就可以保存你的模版了打开或制作一个自己常用的电路另存为模板,即:save as template 替换默认文件夹里的Templates\Default.DTF。

以后这就是你的模板啦3.第三方软件是如何用?把你的第三方库安装好,然后启动proteus,选择菜单system-->set path,分别增加model和library.4. 电源和地的运用总结1.在proteus防真画图过程中有正电源(VDD/VCC)负电源(VEE)地(VSS)引脚的元器件(好象这些元器件的这些脚没有在图中显示)软件会自动把其电源底脚定义为相应的电压所以在这些元器件上的电源地脚上不接电源地也是正确的(单片机也不用接晶振在设置选项中输入晶振的频率即可。

2.如果要用到确定的直流电压就可以用工具栏(默认是第八个)中的POWER和GROUND 象放置元器件一样来放置电源和地电源的默认值是+5V 地默认为0V 如果需要10V的电压则可在电源的设置选项卡的string里输入 +10V 就可以了不过要注意前面的“+”号一定要加上否则不能防真。

电压默认的单位为V 就是说输入+10 电压也是+10V,我试了一下输入+10mV和输入+10MV 其电压是一样的都是10的7次方, 虽然地的默认值是0V 但如果象设置POWER一样在其string选项里写入电压值其电压就是你设置的大小而不是0V了也就是说地也可以做电源用, 对于负电源负号大家都会加上的就不说了.5.电流探针(probe)电压探针(probe)表运用总结首先,在实际生活中中测电压电流,电压电流表都有两个端子,而在探针中,只有一个端子, 电压表是并入的电压探针一端接入要测的那点(可以引出线。

protues 仿真简单步骤

protues  仿真简单步骤

Protues 仿真简单步骤一:编程仿真的首先要有自己的程序,根据你的程序以及你要达到的目的才可以选择硬件,进行protues仿真,每个人的课题不一样,程序就自己搞定(你懂得)。

老师要求是汇编语言,如果你的程序是c语言的,请致电魏钦玉,他会教你如何用keil 软件生成所需源文件,电话自己找。

二:软件安装你的电脑里一定有protues软件吧,如果没有的话在我们班级群里说一下,我们班很多人都会给你的,软件安装自己百度就可以了,有一定的步骤,一步一步来就可以了。

软件安装好之后是英文版的,如果你想汉化也可以,百度安装步骤里有说明,找我们班同学也可以,建议使用英语版的,与国际接轨。

三:线路图A:打开ISIS 7 Professional,找到自己需要的所有原件在软件左侧有一个工具栏,第一个黑色的箭头是selection mode,是选泽模式,第二个箭头是component mode,是组件模式,就是我们选择元器件的工具,点击之后,你会看见两个字母P 和L,单机字母P 会弹出一个窗口,keyword是搜索用找到自己的元器件后,单机可以在右侧看见元器件的具体信息,点击ok或者双击元器件即可添加,找出自己的所有元器件即可做下一步(温馨提示:里面的有些元器件比较难区分,选择的时候谨慎一些,比如选择显示器,共阴极和共阳极比较容易混淆)另外:power和ground是在左侧的工具栏里选择的,左侧工具栏里有一个terminals mode 工具,点击之后会出现如图所示页面,同选择元器件一样选择power或者ground即可B:元器件的布置元器件如何布置就要看个人喜好了,这里讲一下相关的一些工具应用首先是你选择元器件的字母P 左侧有几个旋转按钮,点击元器件后课看见元器件是如何放置的,竖直或者水平,按旋转按钮可改变状态,点击元器件之后,在软件主页面上单击左键可以预览,再次点击左键可以确定位置,左键单击软件主页面上的元器件,再双击右键可以删除,或者单击右键再选择delete 。

Protues软件介绍

Protues软件介绍

Protues简介(什么是Protues)Proteus 是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD 系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。

目前支持的单片机类型有:ARM7(LPC21xx)、8051/52系列、A VR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。

③提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2、MPLAB等软件。

④具有强大的原理图绘制功能。

总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

proteus6.5是目前最好的模拟单片机外围器件的工具,真的很不错。

可以仿真51系列、A VR,PIC等常用的MCU及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI 器件,部分IIC器件,...)其实proteus 与multisim比较类似,只不过它可以仿真MCU!当然,软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型,用开发板和仿真器当然是最好选择,可是估计初学者有的可能性比较小吧?如果你在学51单片机,如果你想自己动手做做LCD,LED,AD/DA,直流马达,SPI,IIC,键盘,...的小实验的话,试一下吧,不会让你失望的!用51不管你是用汇编或是C编程当然要用keil啦(那个medwin实在不怎么样~),uvisoin3有不少新特性呢!使用keil c51 v7.20 + proteus 6.5 可以像使用仿真器一样调试程序,一般而言,微机实验中用万利仿真器+电工系自己做的实验板的实验都可以做得到吧!具体设置可参考这里当然,硬件实践还是必不可少的!!!本方案只是在没有硬件的情况下让你能像pspice 仿真模拟/数字电路那样仿真MCU及外围电路。

proteus安装与联机仿真

proteus安装与联机仿真

软硬件联合仿真系统由一个硬件执行环境和一个软件执行环境组成,通常软件环境和硬件环境都有自己的除错和控制界面,Keil与Proteus的整合调试可以实现系统的总调,在该系统中,Keil作为软件调试界面,Proteus作为硬件仿真和调试界面,下面说一下如何在keil中调用proteus进行MCU外围器件的仿真。

(1)、安装keil 与 proteus。

(2)、把安装proteus\ MODELS目录下 VDM51.dll文件复制到Keil安装目录的 \C51\BIN目录中。

(3)、修改keil安装目录下 Tools.ini文件,在C51字段加入TDRV5=BIN\VDM51.DLL ("Proteus VSM Monitor-51 Driver"),保存。

注意:不一定要用TDRV5,根据原来字段选用一个不重复的数值就可以了。

引号内的名字随意。

4、打开proteus,画出相应电路,在proteus的debug菜单中选中use remote debug monitor5、在keil中编写MCU的程序6、进入KEIL的project菜单option for target '工程名'。

在DEBUG选项中右栏上部的下拉菜单选中 Proteus VSM Monitor-51 Driver。

在进入seting,如果同一台机IP 名为127.0.0.1,如不是同一台机则填另一台的IP地址。

端口号一定为8000注意:可以在一台机器上运行keil,另一台中运行proteus进行远程仿真。

7、在keil中进行debug吧,同时在proteus中查看直观的结果(如LCD显示…)这样就可以像使用仿真器一样调试程序四、教学实例一个实际例子:把"C:\Program Files\Labcenter Electronics\Proteus 6 Professional\SAMPLES"的"8051 LCD Driver”文件夹复制到新建的Proteus文件夹下。

Proteus 自建仿真元件库

Proteus 自建仿真元件库

Proteus 自建元件库发布时间:2008-01-07 20:42:06一、Proteus VSM仿真模型简介在使用Proteus仿真单片机系统的过程中,经常找不到所需的元件,这就需要自己编写。

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

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

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

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

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

VSM模型和Proteus系统通信的原理如下图:0 && image.height>0){if(im age.width>=510){this.width=510;this.height=image.height*510/image.width;}}" border="0">绘图模型接口抽象类:ICOMPONENT――ISIS内部一个活动组件对象,为VSM模型提供在原理图上绘图和用户交互的服务。

IACTIVEMODEL――用户实现的VSM绘图模型要继承此类,并实现相应的绘图和键盘鼠标事件处理。

电气模型接口抽象类:IINSTANCE――一个PROSPICE仿真原始模型,为VSM模型提供访问属性、模拟节点和数据引脚的服务,还允许模型通过仿真日志发出警告和错误信息。

ISPICECKT(模拟)――SPICE拥有的模拟元件,提供的服务:访问、创建和删除节点,在稀疏矩阵上分配空间,同时还允许模型在给定时刻强制仿真时刻点的发生和挂起仿真。

ISPICEMODEL(模拟)――用户实现的VSM模拟元件要继承此类,并实现相应的载入数据,在完成的时间点处理数据等。

Proteus仿真软件使用方法

Proteus仿真软件使用方法

实验八Proteus仿真软件使用方法1.实验目的:(1)了解Proteus仿真软件的使用方法。

(2)了解51单片机编程器Keil与Proteus仿真软件的联用方法。

2.实验要求:通过讲授和操作练习,学会正确使用Proteus仿真软件及Keil编程及其联合调试。

3.实验容:(1)Proteus 仿真软件介绍Proteus 软件是由英国LabCenter Electronics 公司开发的EDA工具软件,由ISIS和ARES 两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,ARES是一款高级的布线编辑软件。

它集成了高级原理布线图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完整的电子设计。

通过Proteus ISIS软件的VSM(虚拟仿真技术), 用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。

图8-1是Proteus ISIS的编辑窗口:图8-1 ISIS的编辑界面图中最顶端一栏是“标题栏”,其下的“File View Edit ……”是“菜单栏”,再下面的一栏是“命令工具栏”,最左边的一栏是“模式选择工具栏”;左上角的小方框是“预览窗口”,其下的长方框是“对象选择窗口”,其右侧的大方框是“原理图编辑窗口”。

选择左侧“模式选择工具栏”中的图标,并选择“对象选择窗口”中的P按钮,就会出现如图8-2的元器件选择界面:图8-2 元器件库选择界面在元器件列表框中点击你需要的器件类型(例如:电阻-Resistors,单片机芯片-MicroprocessorICs, LED-Optoelectronics)或在左上角的关键字(Keywords)框中输入你需要的器件名称的关键字(如:信号源- Clock, 运放- CA3140等),就会在图8-2中间的大空白框列出你所需的一系列相关的元件。

此时,你可用鼠标选中你要的元件,则图8-2右上角的预览框会显示你所要元件的示意图,若就是你要的元器件,则点击OK按钮,该元器件的名称就会列入位于图8-1左侧的“对象选择窗口”中(参见图1左侧下方框)。

基于Proteus的建模技术及EasyHDL介绍主要内容

基于Proteus的建模技术及EasyHDL介绍主要内容

• 3. VSM 模型的创建
举 例
Proteus建模技术
• 3. VSM 模型的创建
1、设计原理图部件 2、设置VSM模型属性
3、仿真验证
• 十进制计数器VSM模型属性定义
–{PRIMITIVE=DIGITAL,DLL} –{MODБайду номын сангаасLL=COUNTER.DLL}


Proteus建模技术
• 4. 模型改造
举 例
Proteus建模技术
• 游戏手柄模型应用:
电路图
EasyHDL介绍 • Proteus专有的脚本编程语言 • 基于BASIC编程语言,添加了一些应用特性 • 比通用的硬件描述语言(VHDL,Verilog等) 更简单易用 • 用于生成复杂的测试信号,包括数字信号和 模拟信号 • 可以用一个脚本为多个信号源对象生成复杂 的测试向量
– DSIM(Digital System Interface Model)
• 事件驱动仿真(Event Driven Simulation) • 高级抽象、只关注逻辑状态
Proteus模型分类
• 按创建模型的方法分类
– 1、SPICE Models
• 基于器件SPICE参数构建的模型,主要用于模拟器 件的创建。
KA431电压基准电路的SPICE文件
Proteus建模技术
1、设计原理图部件
2、设置器件的SPICE属性
3、Make Device创建器件, 仿真测试
Proteus建模技术
• KA431 SPICE模型属性定义:
–{PRIMITIVE=ANALOG,SUBCKT} –{SPICEFILE=KA431.CKT} –{SPICEMODEL=KA431} –{SPICEPINS=Ref,A,K}

proteus仿真实验【精选】

proteus仿真实验【精选】

Proteus仿真实验一、实验目的1、通过实例熟悉proteus软件使用方法。

2、掌握具体电路proteus和keil仿真二、实验要求1、独立完成。

2、设计步骤符合标准规范。

三、实验设备计算机,proteus软件四、内容及步骤一)、实验内容:根据下图所示的电路图使用805l控制共阳七段显示器的显示:先搭建一个“8051基本IO实验”的仿真电路,使用8051的Port 1连接到一个共阳的七段显示器,然后让8051轮流显示0~9。

当您连接好电路,并且完成程序之后,您将看到七段显示器依次显示0~9二)、实习步骤:1、在Protues中,绘制电路图,并调试。

2、编写程序并调试(在Keil c 或实验箱编译系统下均可)。

附录一Keil Vison2使用入门Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,该软件提供丰富的库函数和功能强大的集成开发调试工具。

按下面的步骤建立第一个项目:1、点击Project--- New Project,在“文件名”中输入一个C程序项目名称。

“保存”后的文件扩展名为uv2,这是KEIL uVision2 项目文件扩展名,以后可以直接点击此文件以打开先前做的项目。

2、选择所要的单片机,这里选择常用的Ateml公司的A T89C51。

完成上面步骤后,就可以进行程序的编写了。

3、首先要在项目中创建新的程序文件或加入旧程序文件。

点击File—New按钮,或快捷键Ctrl+N。

出现一个新的文字编辑窗口,4、保存源文件,扩展名为.C。

并将该文件加入到刚才建立的项目中。

5、编译源文件。

点击Build target或Rebuild all target files,查看编译结果是否有错,若有错,则修改源程序。

否则,则可以进行调试。

6、进入调试模式如图2,调试程序。

点击Debug---Start/stop Debug session,进入调试模式。

创建Proteus动态器件仿真模型的技术

创建Proteus动态器件仿真模型的技术

创建Proteus动态器件仿真模型的技术作者:周灵彬,张靖武来源:《现代电子技术》2009年第12期摘要:Proteus动态仿真性能依赖于动态仿真模型。

但有些实用的动态元器件,库中没有相应的仿真模型,必须自己创建。

通过创建拨码盘动态仿真模型,论述在Proteus中创建单片机交互式动态器件仿真模型的技术。

拨码盘仿真运行状态与实际元器件表现一致,验证了所建模型的正确性。

展示了Proteus 动态模型在单片机应用系统的实时交互式仿真中的作用。

关键词:Proteus;动态仿真模型;建模;单片机中图分类号:TP368.1文献标识码:A文章编号:1004-373X(2009)12-152-04Technology ofDynamic Simulation Model for ProteusZHOU Lingbin,ZHANG Jingwu(Shaoxing TOP Vocational Institute of Information and Technology,Shaoxing,312000,China)Abstract:Dynamic simulation performance of Proteus depends on the dynamic simulation model.Creating dynamic simulation model for some practical dynamic components where has no corresponding simulation model in the library,modeling techniques of dynamic and interactive components simulation model in the environment of Proteus by the example of creating code wheel model are discussed.Its simulation states are in conformity with the actual performance,which verified the model is correct.It shows the effect of dynamic model in real-time interactive simulation of single chip computer application system.Keywords:Proteus;dynamic simulation model;modeling;single chip computer0 引言Proteus是英国Labcenter electronics公司研发的EDA。

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

创建基于DLL的Proteus VSM仿真模型作者:silingsong一、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++编写元件,实现电气和绘图模型,编译生成DLL。

4.搭建电路仿真测试。

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

TG19264A的pdf手册下载:TG19264A使用说明书.pdf1.打开Proteus,选择菜单查看>>Snap 10th,选择左边绘图工具栏的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,编写如下代码。

/****************************************************************** 文件:LCD19264A.H* 说明:不支持以下特性* (1) 不支持显示开关控制* (2) 不支持设置显示起始行*****************************************************************/#include "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, ACTIVESTA TE newstate);//交互仿真时每帧结束时被调用,通过传递ACTIVEDA TA数据与绘图模型通信,从而调用animate()进行绘图BOOL indicate (REALTIME time, ACTIVEDA TA *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; //每象素对应矩形的宽和高};/****************************************************************** 文件:LCD19264A.CPP* 说明:不支持以下特性* (1) 不支持显示开关控制* (2) 不支持设置显示起始行*****************************************************************/#include <string.h>#include "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){}//交互仿真时每帧结束时被调用,通过传递ACTIVEDA TA数据与绘图模型通信,从而调用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_Y ADDRESS: //设置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; block++){ //blockfor(line=0; line<LCD_LINE_NUM; line++){ //linefor(byte_off=0; byte_off<LCD_BLK_LEN; byte_off++){ //line 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工程,编写代码测试元件。

相关文档
最新文档