您当前的位置:首页 > 计算机论文>应用电子技术论文

基于Multisim10的单片机动态显示仿真技术

2015-12-14 14:12 来源:学术参考网 作者:未知

摘 要:本文阐述了在单片机动态显示的原理方法,以8051为中心给出了其硬件电路的构成,并着重阐述了在Multisim10中进行单片机动态显示仿真设计的具体方法。   

关键词:Multisim10;单片机;8051;仿真;编译

  Multisim10是 美国国家仪器公司(NI,National Instruments)推出的计算机电子仿真软件。Multisim10实现计算机仿真时设计和实验用的元器件和测试仪器和仪表齐全,可以完成各种类型的电路设计与实验;可以方便地对电路参数进行测试和分析;设计与实验可以同步进行,可以边设计边实验,修改调试方便;可直接打印输出实验数据、测试参数、曲线和电路原理图;实验中不消耗实际的元器件,实验所需的元器件和数和数量不受限制,实验成本低,实验速度快,效率高;设计和实验成功的电路可以直接在产品中使用。
  Multisim10版本可用于单片机和可编程逻辑器件的仿真分析,为单片机系统的仿真设计提供了较好的解决方案。multisim10提供了805x、PIC、RAM和ROM等4个系列的单片机芯片和可编程逻辑器件,使得该软件的实际应用得到了大大的增强。本文使用Multisim10为辅助设计工具,做以单片机8051为中心的单片机动态显示电路的仿真设计。
  1.设计要求和分析
  显示单元是单片机常见的控制功能,凡是遇到显示输出时都会用到显示单元,如数字管的显示,点阵的显示等。为了提高单片机输入输出端口的效率,一般显示单元都使用动态显示技术。所谓动态显示方式,就是一位一位地轮流点亮各个数码管(动态扫描方式)。对于每一位数码管来说,每隔一定时间点亮一次,当扫描的时间间隔足够小时,利用人的视觉暂留特性,观察者就不会感到数码管的闪烁,看到的现象是所有的数码管一起发光,就如同看电影的道理一样。
  如果要做4个数码显示管的动态显示时,其实现方法是将所有的数码管的a......g连接在一起,接在单片机的某个输出端口上,各个数码管的公共端作为片选信号接在单片机的另一个输出端口上,这样做可以大大地节省了硬件资源。
  2.硬件电路的设计

  单片机模块8051的工作电源电压为5V; Multisim10中的8051模块内部已经具备了12MHz,所以仿真外围电路可以省略晶振;故其最小系统需要加一只电容和一只电阻,实现单片机的上电复位功能。
  如图1所示是根据这一思路做的4位共阳数码管动态显示的电路原理图。图中四个数码管的a......g共同连接到了8051的P0.7-P0.1,4个数码显示管的公共端分别接到P1.0-P1.3,电阻器R1和电容器C1构成了简单的上电复位电路。
    在动态扫描显示方式中,数码管的亮度同 LED点亮导通时的电流大小,每一位点亮的时间和扫描间隔时间三个因素有关。
  3.Multisim10中绘制仿真电路原理图
  3.1放置单片机模块8051
  (1)单击"元件"工具栏上的"Place  MCU"按钮,在弹出的"选择元件"对话框的"系列"栏中选择"805x",在"元件"栏中选择"8051"。
  (2)鼠标处出现一个"8051",在绘图区单击鼠标,便放置了一个"8051",同时打开MCU向导对话框。在其中输入工作区的路径和名称,单击"下一步"。
  (3)弹出MCU向导第二步,在"Progranning language"栏中选择编程语言,可以选择汇编或C语言。若选择C语言时,"Assembler/conplier tool"栏中会出现"Hi-Tech C51-Lite complier";若选择了汇编语言(Assenbly)时,"Assembler/conplier tool"栏中会出现"8051/8052 Metalink assenbler"。在"项目名称"栏中输入项目名称,单击"下一步"按钮。
  (4) 弹出MCU向导第三步,可以选择Creat empty project(建立空项目)或Add Source file(添加源文件),当选择了Add Source file时,可在其下面的文本框中输入源文件名,默认为"main.asm"。点击"完成"按钮结束放置。
  3.2放置其他元件,这里略去。
  3.3连线,完成原理图的绘制。
  4.编写MCU源程序
  4.1如图2所示,打开设计工具箱,展开8051及其项目,双击"main.asm",打开汇编源程序窗口,窗口中出现以下代码,在第一行和最后一行插入源程序。
   

 4.2输入源程序
  $MOD51 ; This includes 8051 definitions for the metalink assembler
  START:
  MOV P1, #0FFH    ;关闭所有的LED
  MOV P0, #9FH     ;送"1"的字形码
  MOV P1, #0FEH    ;打开第1个LED
  ACALL  DELAY     ;延时
  MOV P1, #0FFH    ;关闭所有的LED,否则显示混乱
  MOV P0, #27H     ;送"2"的字形码
  MOV P1, #0FDH    ;打开第2个LED
  ACALL  DELAY    
  MOV P1, #0FFH   
  MOV P0, #0DH     ;送"3"的字形码
  MOV P1, #0FBH    ;打开第3个LED
  ACALL  DELAY    
  MOV P1, #0FFH   
  MOV P0, #99H     ;送"4"的字形码
  MOV P1, #0F7H    ;打开第4个LED
  ACALL  DELAY    
  AJMP START
  DELAY:MOV R6,#2   ;延时1ms
  TEMP:MOV R5,#0FFH
  DJNZ R5,$
  DJNZ R6,TEMP
  RET
  END
  5.编译与仿真
  单击仿真按钮,若程序还未经编译则会弹出编译提示消息框,点击"是"进行编程的编译。若程序正确,编译通过,则在电路中显示仿真结果;若未通过,则要修改程序,直至编译通过。编译后会形成一系列的目标文件。
   在multisim10中可直接对汇编程序或C语言程序进行编译,不需要其他编译软件,使得仿真操作变得简单,这一点是它优于其他单片机仿真软件的地方。如Protues也是目前比较流行的单片机仿真软件,其优点是单片机芯片类型多,结果直观,但它只能执行已编译好的二进制和十六进制的目标文件,需要其他的程序编译软件进行编译。但multisim10提供的单片机芯片种类少,也限制了它的应用。相信比multisim10高的版本会提供更多的单片机芯片种类,使之也能成为单片机仿真的利器。


参考文献:
[1]覃奈新主编,单片机应用技术,电子工业出版社,2008
[2]李良荣主编,现代电子设计技术,机械工业出版社,2005 

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页