首页 -> 2009年第1期

基于Proteus的单片机设计仿真

作者:许洪龙




   [摘 要]近年来,EDA技术的成熟极大地方便了电子工程师对电子产品的研发,极大地提高了设计效率,缩短了研发周期。Proteus就是这样一款功能强大的电子电路仿真软件,在单片机的电路仿真方面,其表现尤其出色。本文通过单片机串口通讯系统的设计,描述了使用Proteus进行电路仿真的全过程。
   [关键词]Proteus 单片机 仿真 串口通讯
  
  一、Proteus的功能描述
  
  Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件,它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。该软件实现了单片机仿真和SPICE电路仿真的结合,具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。该软件支持主流单片机系统的仿真。目前,支持的单片机类型有68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。此外,它还提供了软件的调试功能,在仿真系统中具有全速、单步、设置断点等调试功能,同时,还可以观察各个变量、寄存器等的当前状态,并支持第三方的软件编译和调试环境,如Keil uVision等。该软件还具有强大的原理图绘制和PCB板设计功能。
  下面以单片机串口通讯电路的设计为例,介绍使用Proteus软件进行仿真的全过程。
  
  二、单片机串口的工作方式
  
  单片机串口通讯有四种方式,分别是串行工作方式0、串行工作方式1、串行工作方式2、串行工作方式3,通过设置串行控制寄存器SCON来控制单片机的工作方式。这里只对“工作方式0”的设计仿真进行说明。
  在方式0下,把串行口作为同步移位寄存器来使用,这时,以RXD(P3.0)端作为数据移位的入口和出口,由TXD(P3.1)端提供移位时钟脉冲。移位数据的发送和接受以8位为一组,低位在前,高位在后。其格式为:
  
  使用方式0来实现数据的移位输入、输出时,实际上是把串行口变为了并行口来使用。串行口作为并行输出口使用时,要有“串入并出”的移位寄存器配合,如cd4094、74ls164、74hc164等其电路连接如图1所示。
  数据预先写入串行口数据缓冲寄存器,然后从串行口RXD端在移位时钟脉冲(TXD)的控制下,逐位移入cd4094。当8位数据全部移出后,SCON寄存器的发送中断标志T1被自动置“1”。其后,主程序就可以中断查询的方法,通过设置STB状态的控制,把CD4094的内容并行输出。
  如果把能够实现“并入串出”的移位寄存器(如CD4014、74ls165、74HC165等)与串口配合使用,就可以把串行口变为并行口使用,如图2所示。CD4014移出的串行数据同样经RXD端串行输入,TXD端提供移位时钟脉冲。8位数据串行接收时需要有允许接收的控制,具体由SCON寄存器的REN位实现。REN=0,禁止接收;REN=1,允许接收。当软件置位REN时,即开始从RXD端输入数据(低位在前),当接收到8位数据时,置位接受中断标志RI。
  
  三、使用Proteus设计单片机串口通讯实例
  
  利用单片机的串口和CD4094的串入并出功能设计,实现8支发光二极管从上向下依次点亮,并反复循环。其中,发光二极管采用共阴极连接。
  在windows下安装Proteus ISIS后,可以在桌面上找到ISIS6 Professional图标,双击打开进入Proteus的工作页面。Proteus ISIS的工作界面是一种标准的Windows界面,如图1所示,它包括标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口等。
  
  1.绘制电路图。单击对象选择器按钮 ,如图2所示。
  
  弹出“Pick Devices”页面,在“Keywords”输入AT89C51,系统在对象库中进行搜索、查找,并将搜索结果显示在“Results”中,如图3所示:
  
  在“Results”的列表项中,双击“AT89C51”,则可将“AT89C51”添加至对象选择器的窗口中。用同样的方法将“CD4094”和“led-bargraph-red”添加至对象选择器窗口,单击“OK”按钮,结束对象选择。
  经过以上操作,在对象选择器窗口中,已有了CD4094、AT89C51、led-bargraph-red这三个元器件对象。在对象选择器的窗口中,选中CD4094,将鼠标置于图形编辑窗口该对象的欲放位置、单击鼠标左键,从而完成放置。同理,将AT89C51和led-bargraph-red放置到图形编辑窗口中。
  接下来,用导线连接各接点:Proteus的智能化可以在你想要画线的时候进行自动检测。当鼠标的指针靠近元件的连接点时,跟着鼠标的指针就会出现一个“×”号,表明找到了连接点;单击鼠标左键,移动鼠标(不用拖动),将鼠标的指针靠近另一个元件的连接点时,接着鼠标的指针就会又出现一个“×”号,表明找到了该元件的连接点,同时屏幕上出现了粉红色的连接,单击鼠标左键,粉红色的连接线就变成了深绿色,该条连线绘制完成。再用同样的方法绘制其他连接线,电路原理图的编辑就完成了。如图4所示。
  
  2.程序的编写与编译。由89C51“串口工作方式0”的相关协议,把89C51串行口8位状态码穿行移位输出后,SCON寄存器的TI位置“1”,把TI作为状态查询标志,则使用查询方法完成的源程序如下:
  org 00h ;
  start:jmpmain;
  org30h ;
  main: movscon,#00h ;串行口方式0工作
   clr es;禁止串行中断
   mova,#01h ;发光二极管从上端亮起
  delr: clrP1.0 ;关闭并行输出
  mov sbuf, a;串行输出
  jnb TI, $;状态查询
  setb P1.0 ;开启并行输出
  acalldelay ;状态维持
  clrTI ;清发送中断标志
  rr a;发光组合下移
  ajmpdelr;循环
  dalay: mov r3, #0ffh;延时子程序
  del2:mov r4,#0ffh
  del1:nop
  djnz r4, del1
  djnz r3, del2
  ret;子程序返回
  end ;程序结束
  将程序保存为“80c51.asm”,然后使用keil等编译工具生成“80c51.hex”。
  3.Proteus的设置和仿真。在图形编辑窗口内将鼠标置于单片机上,单击鼠标右键,选中该对象,单击鼠标左键,进入AT89C51属性编辑页面。在“Program File”中,通过打开按钮,添加刚才生成的程序文件“80c51.hex”,点击“ok”按钮,退出AT89C51属性的编辑页面。接下来,点击图1中仿真进程控制按钮,开始仿真,我们能清楚地观察到每一个引脚的电平变化,红色代表高电平,蓝色代表低电平。同时,还能看到发光二极管从上到下循环点亮。点击按钮,可以结束仿真。
  
  四、结束语
  
  从以上实例中可以看出,用Proteus对设计的电路进行仿真,其过程非常接近实际操作的效果,而且具有元器件选择范围广、参数修改方便、电路调试便捷、经济实用等优点,用户几乎不受手中元器件等客观条件的限制,不用担心设计实验失败的风险,从而极大地发挥了他们的主观能动性和创造性,并最大限度地节省了研发成本,加快了产品的开发进程。无论是对刚入门的电子爱好者,还是对电子工程师来说,都有着极大的推广学习和应用价值。
  
  参考文献:
  [1]李广弟.单片机基础[M].北京:北京航天航空出版社,2001.