NI Multisim下如何进行SPICE模型和8051 MCU的协同仿真

发布者:lcn18560863680最新更新时间:2012-01-20 关键字:Multisim下  SPICE模型 手机看文章 扫描二维码
随时随地手机看文章

Multisim是基于SPICE的电路仿真软件,SPICE(Simulation Program with Intergrated Circuit Emphasis)是“侧重于集成电路的模拟程序”的简称,在1975年由加利福尼亚大学伯克莱分校开发。在Multisim9中,需要另安装MultiMCU进行单片机仿真。NI(National Instruments) Multisim10 将MuitiMCU称为MCU Module,不需要单独安装,可以与Multisim中的SPICE模型电路协同仿真,支持Intel/Atmel的8051/8052 和 Microchip的 PIC16F84a,典型的外设有RAM和ROM,键盘,图形和文字LCD,并有完整的调试功能,包括设置断点,查看寄存器,改写内存等。支持C语言,可以编写头文件和使用库,还可以将加载的外部二进制文件反汇编。


这里我们通过一个简单的带有复位功能的计数器的例子来说明在NI Multisim10中如何进行单片机开发以及如何与SPICE模型电路协同仿真。

MCU(Microcontroller Unit)即单片机是大家都比较熟悉并常用的电子器件,由于其广泛的应用,所以用单片机设计电路是电子技术人员必备的技能。对于初学者,可以先从软件仿真入手。我们知道利用Proteus软件可以进行单片机的软件仿真,Multisim同样也可以。

如果你对Multisim比较熟悉,那一定对里面的安捷伦(Agilent)54622D混合信号示波器等仪器印象很深刻吧,因为它与真实的仪器面板和操作几乎完全一样。Multisim里象这种模仿实际仪器的还有安捷伦的33120A任意波形函数发生器和34401A万用表,泰克(Tektronix)的TDS2024四通道示波器。充分利用这些仪器,就好比拥有了一个真实的实验室,你可以用33120A任意波形函数发生器给单片机提供输入信号,用54622D或TDS2024示波器观看模拟信号,或用54622D的逻辑分析仪功能查看单片机多个管脚数字信号的输出。在下面的例子里我们将用54622D来观察复位信号。

搭建电路设置MCU

 

建好的电路图如图1所示,各器件的名称等信息如附表所示。需要说明的是电路图中的单片机不用连接晶振也可以进行仿真,时钟频率(速度)的设置见下文。
 
图1 带复位功能的简单计数器的电路图
 
附表  

搭建电路时,当将单片机U1放入电路图中时,会出现MCU向导,如图2所示。第一步,分别输入工作区路径和工作区名称。工作区名称任意,这里输入MCUCosimWS。第二步,如图3所示,在项目类型(Project type)下拉框有两个选项:标准(Standard)和加载外部Hex文件(Load External Hex File),你可以在Keil等环境下编写汇编和C源程序,然后生成Hex文件,再通过“加载外部Hex文件”导入。限于篇幅这里选标准(Standard),接着在“编程语言”(Programming language)下拉框里会有两个选项:C和汇编(Assembly),如果选择C,则在汇编器/编译器工具(Assembler/Compiler tool)下拉框会出现Hi-Tech C51-Lite compiler,我们这里选择汇编(Assembly),则出现8051/8052 Metalink assembler。接下来在项目名称(Project name)里输入名称,如CosimProject。第三步,如图4所示,对话框里有两个选项:创建空项目(Create empty project)和添加源文件(Add source file)。选择添加源文件,点击完成。保存文件,键入M10Cosim作为文件名,然后查看“设计工具箱”(Design Toolbox),应如图5所示。

 
 
 
你可能更愿意用C来编写程序,而不是汇编,或两个都用,或还想引入外部Hex文件,这都可以通过用“MCU代码管理器”添加MCU项目来解决。在设计工具箱里右键单击MCUCosimWS,选择“MCU代码管理器”(MCU Code Manager),点击“新MCU项目”(New MCU Project)按钮,选择“项目类型”(Project Type),可以是标准(Standard)或加载外部Hex文件(Load External Hex File),这里选“标准”,接着输入名称,如Cosim_C_Project,确定后就可以在MCU代码管理器对话框里进行下一步设置了,可以创建新文件,设置汇编器/编译器等等。如图6所示,这时已经多了一个Cosim_C_Project项目(未添加C代码源文件),前面图标空心的方框说明它不是“当前使用的项目”(Active MCU Project)。
 
图6用MCU代码管理器添加的新项目  [page]

编写并编译MCU源程序  

双击CosimProject下的main.asm输入程序,程序清单及注释如下:
 
由于汇编器是Metalink assembler,详细的宏命令等可以参考其用户手册。编写好程序后,选择菜单MCU→MCU 8051 U1→Build,这里的下拉子菜单可能是“MCU 8051 U2”或“U3”,主要对应电路图中单片机的符号名称,Build的结果会输出到Spreadsheet View中。

运行程序并用示波器观察复位过程

汇编程序编译通过后,就可以回到电路图窗口,点击工具栏的运行按钮,这时在七段数码管上就应该循环显示0到9,如果显示过快或过慢,可以调整源程序中的COUNT_NUM,改变延时时间,或双击U1,在805x对话框的Value标签里设置“时钟速度”(Clock Speed)。

电路中为SPICE模型的C1和R1的作用是延长复位引脚保持高电平的时间,避免因复位电压持续时间过短而引起复位失败。双击示波器XSC1,按示波器面板上的POWER键,打开示波器,点击工具栏的运行按钮,这时调整示波器的电压和时间刻度,得到图7所示的复位引脚电压的变化,每个刻度是100μs,高电平持续了大概一个刻度,可见在加电时,单片机没有立刻运行,有一段延迟,延迟的时间应该足以使其内部电压和振荡都处于稳态。按下复位键S1时的波形如图8所示,这时每个刻度是50μs,波形平顶的部分是按键按下的时间,大概20μs,之后电压逐渐降低,当降到约3V时,7段数码管开始计数,说明单片机开始工作,由图8可知复位时间被延长到大概100μs。
 
其原理是加电瞬间或按键按下到松开之间,电容无电荷,两端电压为0V,单片机的RST引脚的电压瞬间被提升到VCC(5V)。加电之后或按键松开,电容开始充电,两端电压逐渐增加,电阻的电压(RST引脚电压)由5V逐渐降低,因而延长了复位引脚保持高电平的时间。实际器件对复位持续时间的要求一般在两个机器周期,所以100微秒的复位时间要求51单片机的晶振频率不低于0.24MHz。当然一般情况下是根据晶振频率确定C1和R1的值,这可以根据求解一阶微分方程得到其充放电时间,或参考单片机的用户手册。

调试程序

选择菜单MCU→MCU 8051 U1→Debug View,可以看到文本区上面有下拉菜单并有两种选择,对应反汇编(disassembly)和列表汇编(listing assembly),简单的说,前者是由ROM的内容得到,后者是源文件编译后的结果。双击“设计工具箱”的main.asm,在源文件编辑窗口右键单击语句为“MOVC A,@A+DPTR”的一行,选择“设置/清除断点”(Toggle Breakpoint),在左侧会出现一个实心圆,点击“运行”,程序将停在该行,只不过是在“调试视图”(Debug View)的列表汇编窗口下,同时在实心圆上多出了一个黄色箭头。点击MCU-> MCU 8051 U1->Memory View,打开MCU存储器视图,在该视图可以查看特殊函数寄存器(SFR),内部RAM(IRAM),内部ROM(IROM),外部RAM(XRAM)。在SFR表格内观察ACC的值,此时应该为“00”,在IRAM里观察地址为21H的值,因为“MOV SP,#20H”语句将21H作为堆栈的第一个存储字节的地址,断点的前一处语句“PUSH ACC”使该字节存储ACC的值,此时也为“00”。再点“运行”,程序第二次停在断点处,观察SFR中的ACC和IRAM中的21H,如图9所示应,两个单元格里的值都应为“01”,你还可以双击该单元格进行修改,该值也正是七段数码管即将显示的下一个数。点击MCU菜单,可以看到除了设置断点以外还可单步进入(Step into),遇到函数时进入函数内部;跳过(Step over),即不进入函数;跳出(Step out),即跳出函数到调用函数的下一条语句。    
 
图9 MCU存储器视图

结束语

本文以一个简单的电路介绍了在NI Multisim下如何进行SPICE模型(这里主要指C1和R1)和8051 MCU的协同仿真。NI Multisim10不但有多种编译和调试功能,还提供了RAM,ROM,键盘,液晶屏等外设,是初学单片机的理想工具。掌握了基本的硬件结构,汇编指令和调试方法后,读者可以利用Multisim开发更复杂的系统并仿真,为下一步设计实际的硬件电路做准备。

说明:因为单片机的电流是有限制的,不能太大,否则会烧毁单片机的。所以应在数码管的CA端和VCC端之间接一个限流电阻(100欧姆);或者在单片机与数码管之间接入一个排阻(7个)也可以,这样仿真时就不会烧毁单片机了。

 

关键字:Multisim下  SPICE模型 引用地址:NI Multisim下如何进行SPICE模型和8051 MCU的协同仿真

上一篇:基于8250的多机通信设计
下一篇:运用89C2051设计的电冰箱保护节电器原理介绍

推荐阅读最新更新时间:2024-03-16 12:51

8051单片机教程第三课:几个基本概念
数的本质和物理现象。 我们知道,计算机可以进行数学运算,这可令我们非常的难以理解,计算机吗,我们虽不了解它的组成,但它总只是一些电子元器件,怎么可以进行数学运算呢?我们做数学题如37+45是这样做的,先在纸上写37,然后在下面写45,然后大脑运算,最后写出结果,运算的原材料:37、45和结果:82都是写在纸上的,计算机中又是放在什么地方呢?为了解决这个问题,先让我们做一个实验:这里有一盏灯,我们知道灯要么亮,要么不亮,就有两种状态,我们可以用’0’和’1’来代替这两种状态,规定亮为’1’,不亮为’0’。现在放上两盏灯,一共有几种状态呢?我们列表来看一下: 请大家自已写上3盏灯的情况000001010011100101110
[单片机]
<font color='red'>8051</font>单片机教程第三课:几个基本概念
基于C8051F040单片机的CAN总线系统设计
摘要:本设计是基于带有CAN控制器的C8031F040单片机的CAN总线的数据控制系统,通过USB口,实现了两个CAN节点与上位机之间的数据传输。CAN节点是基于C8051F040单片机设计而成的温度采集系统并且可以接收上位机传来的数据。上位机软件是基于VB语言设计而成的与CAN节点交互的接口,主要实现了接收温度数据并通过图表实时显示,与发送数据到CAN节点的功能。本设计对于研究扣了解CAN多节点间的通信争控制的应用有着重要的意义。 关键词:CAN总线;CAN-USB;设计 0 引言 随着20世纪80年代初期德国Bosch公司提出CAN(Controller Area Network)总线,即控制器局域网方案以解决汽车控制装置
[单片机]
基于C<font color='red'>8051</font>F040单片机的CAN总线系统设计
C8051F单片机使用注意事项
每个I/O 拉电流50mA 灌电流100mA 总电流800mA 一、电源和地线方面的处理 1、模拟电源和数字电源要分别供电,可以使用两个稳压源分别供电,但是两个电源之间的电压差必须满足数据手册中的规定( 0.5V,小于0.3V是比较理想的)。实际应用中模拟电源和数字电源可以来自同一个稳压器的输出,只在AV+与VDD之间接简单的滤波器也是很有效的。这里要加一个小电感,也可以用低阻值的电阻(通常2欧姆,电阻要有足够的寄生电感。) 这种方式既能降低成本又能减少体积。(关于这一点可以参考C8051F各种目标板的原理图的电源部分)。 2、在地线方面,模拟地和数字地要分开布线,然后在一点通过磁珠连接,在实际应用中也可以使用0欧姆绕线电阻连接的
[单片机]
基于C8051F020的智能气动泵控制系统的设计
1. C8051F020单片机功能简介   C8051F020器件是完全集成的混合信号系统级MCU芯片,具有64个数字I/O引脚。其主要特性:1)高速、流水线结构的8051兼容的CIP-51内核(可达25MIPS);2)全速、非侵入式的在系统调试接口(片内);3)真正12位、100ks/s的8通道ADC,带PGA和模拟多路开关;4)真正8位500ks/s的ADC,带PGA和8通道模拟多路开关;5)两个12位DAC,具有可编程数据更新方式;6)64KB可在系统编程的FLASH存储器;7)4352(4096+256)B的片内RAM;8)可寻址64KB地址空间的外部数据存储器接口;9)硬件实现的SPI、SMBus/I2C和两个UART串
[工业控制]
基于C<font color='red'>8051</font>F020的智能气动泵控制系统的设计
C8051F020在液晶显示控制系统中的应用
在单片机系统设计中,LCM(液晶显示模块)人机交互界面的设计往往是很重要的一个环节。LCM可以用于智能仪器上的显示设定参数、状态提示符、检测结果和待输入参数等功能。本文结合电解质分析仪的设计要求,采用深圳市烨新达实业有限公司生产的YXD—12864A2LCM,研究并实现了以C8051F020为基础的液晶显示的接口电路和程序设计,添加了按键系统,从而达到方便用户使用的目的。 1 电解质分析仪简介 本系统所设计的电解质分析仪(Electrolyte Analyzer)是一种具有高分辨率和高精度的仪器,可以与多种离子选择电极配套使用,可用自动方法测定样品中钾、钠、氯、钙离子的浓度和pH值。其结构方框图如图1所示。仪器采用单片机C80
[电源管理]
C<font color='red'>8051</font>F020在液晶显示控制系统中的应用
8051中断定时器及串行口初始化
中断系统初始化: 1、 设定IE,开相应的中断源的中断; 2、 设定IP,设定所用中断源的中断优先级; 3、 若为外部中断,则设定TCON,规定低电平还是负边沿的中断触发。 定时器/计数器初始化: 1、 设定TMOD,选择定时器/计数器的相应的工作方式; 2、 设定TH、TL,赋定时器/计数器的初值; 3、 设定IE,开相应定时器/计数器中断; 4、 设定IP,选择定时器/计数器中断优先级; 5、 设定TR(TCON),启动或禁止定时器/计数器的运行。 串行口初始化: 1、 设定TMOD,选择定时器/计数器的相应的工作方式;
[单片机]
8051单片机的控制总线的作用介绍
控制线一共有6条: (1)ALE/ (/PROG):地址锁存允许/编程线,配合P0口引脚的第二功能使用。在访问片外存储器时,8051CPU在P0.7~P0.0引脚上输出片外存储器低8位地址的同时在ALE/ (/PROG)上输出一个高电位脉冲,用于把这个片外存储器低8位地址锁存到外部专用地址锁存器,以便空出P0.7~P0.0引脚线去传送随后而来的片外存储器读写数据。在不访问片外存储器时,8051自动在ALE/ (/PROG)上输出频率为fosc/6的脉冲序列。该脉冲序列可用作外部时钟源或作为定时脉冲源使用 (2)(/EA)/Vpp:允许访问片外存储器/编程电源线,可以控制8051使用片内ROM还是使用片外ROM。若 (/EA)=0,
[单片机]
GPS与电子罗盘组合,用C8051设计高精度的导航定位系统
  引言   当前,卫星导航成为导航技术发展的主要方向,自助式导航继续发展,组合导航系统已经成为主要的导航方式。针对电子罗盘经启动后要较长时间才能稳定,而陀螺球转速高、磨损大、寿命短等问题[1],本文做了载体姿态和位置测量的研究。就测姿定位问题,本文基于单片机最小系统,设计了基于GPS/电子罗盘的测姿定位系统,将GPS与电子罗盘组合,利用多种信息源相互补充,构成了一种有多余度和高精度的导航定位系统。它具有高精度、稳定、小型化、易操作等特点,为最终组合导航的实现奠定了基础。   1 系统总体设计方案   基于GPS/电子罗盘的测姿定位系统结构框图如图1所示。   RXD0为GPS接收机发送到单片机的数据;RXD1为电子罗盘发送到
[单片机]
GPS与电子罗盘组合,用C<font color='red'>8051</font>设计高精度的导航定位系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved