1 引言
由于单片机具有功能强、使用灵活、可靠性高、成本低、体积小、面向控制、具有智能化功能等优点,其应用极为广泛,已渗入到工业、军事、生活等各个领域。现代产品如汽车、机床、家电等的更新换代大多是电子技术特别是单片机技术在各类产品上的应用带来的。单片机技术已成为科技、工程领域的重要内容。
单片机作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和控制程序设计两个方面,其调试过程一般分为软件调试、硬件测试、系统调试三个过程。软件调试一般比较容易进行,但如果要进行硬件电路测试和系统调试则比较麻烦,因为要进行这两个过程必须在电路板制作完成、元器件焊接完毕后进行。而电路板的制作、元器件的安装、焊接是费时费力的,如果采用作为单片机系统的仿真工具Proteus软件,则不用制作具体的电路板也能够完成以上工作。毫无疑问,在使用仿真软件Proteus进行系统虚拟开发成功后,再进行实际制作,必然可以提高开发效率、降低成本、提高开发速度,而这些因素对于工程开发人员来讲是非常有益的。
2 Proteus仿真软件介绍
Proteus是由英国Labcenter electrmucs公司开发的电路分析与实物仿真软件,是一种EDA工具软件。Proteus安装以后,主要由两个程序组成:ARES和ISIS。前者主要用于PCB自动或人工布线及其电路仿真,后者主要采用原理布图的方法绘制电路并进行相应的仿真。Proteus最大的功能在于其电路仿真是互动的,针对微处理器的应用,可以直接在基于原理图的虚拟原型上编程,并实现软件代码的调试,还可以直接实时动态地模拟按钮、键盘的输入和LED、液晶显示的输出,同时配合虚拟工具如示波器、逻辑分析仪等进行相应的测量和观测。
作为一款EDA仿真软件,Proteus与同类软件有着许多的相似之处。相比之下,其主要特点有两个:一是对动态元件的实时仿真,它对“人机对话”的模拟增强了系统的真实性;二是虚拟工具箱的功能,它能与仿真同时进行,测量方便而准确。
与多数EDA仿真软件相似,Proteus有着数量庞大的元件库。在丰富的库元件的支持下,原理布图时只要进行相应的调用和布线,通过对每个元件的属性设置完成绘图,然后即可进行仿真和虚拟测量。与其它EDA仿真软件的一大不同,在于Proteus支持微处理器的仿真。它可以仿真51系列、AVR、PIC、ARM等常用的微处理器。对动态外设的支持是Proteus区别于其它EDA仿真软件最直接的地方。Proteus为用户提供了一个实时交互的环境,在仿真的过程中操作者可以用鼠标去点击开关和按钮,微处理器根据输入的信号做出相应的中断响应,同时输出运算的结果到显示终端。整个过程与真实的硬件调试极其相似,在动态外设支持下的实时输入和输出为实验者呈现了一个最接近现实的调试环境。
Proteus的虚拟工具箱提供了电路测试中的常用工具和仪器,主要用于在实时仿真的同时观测电路参数与状态,测量结果随仿真动态变化并显示,可以满足精度要求不是很高的测量分析,对于电路特性的定性分析可以起到好的效果,大大节约了测试时间和开发成本。
3 Proteus的仿真应用
下面以80C51为控制芯片的红外计数电路为例,介绍怎样利用Proteus软件实现电路的硬件设计、软件调试与系统仿真,实现单片机控制电路的功能要求,完成对控制方案的验证。
3.1 电路原理图设计
运行Proteus的ISIS程序后,进入仿真软件的主界面。单击元件列表区的P命令即弹出元器件选择(Pick Devices)对话框,调入所需元件仿真库。将电路中的所用元件从元器件库中调出来,放到绘图区,布局并设置好参数,然后连接导线,绘制完成的红外脉冲计数仿真电路如图1所示。图中红外脉冲用信号发生器产生的脉冲信号承担,也即用脉冲信号模拟红外信号输入,脉冲信号的幅度、频率均可调。脉冲信号通过光耦实现隔离、整形,进而实现有效计数。电路中开关SW1表示计数开始和继续计数,开关SW2表示计数暂停和停止计数。当计数到达设定值或暂停时,发光二极管LED1亮。因为电路计数显示部分只有两位LED,所以本电路计数最大数为99,如需要增大计数单元,可增加显示位数,电路原理相似。
图1 红外计数电路图
3.2 软件编程
程序的流程图如图2所示,具体完成程序代码的方法如下。
图2 红外计数程序流程图
通过菜单“Source→Add/Remove Source files“新建源程序文件:红外计数.ASM;通过菜单“Source红外计数.ASM”,打开Proteus提供的文本编辑器Source Editor,在其中编辑如下源程序:
程序编辑好后,存入文件“红外计数.ASM”中。再通过菜单“Source→Build All”编译汇编源程序,生成目标代码文件。若编译失败,可对程序进行修改调试直至编译汇编成功,产生“红外计数.HEX”文件。
3.3 系统仿真
在Proteus中,可以直接与Keil编程软件进行联调,进而实现对所设计电路的验证。本文主要采用Proteus自带编泽系统进行仿真调试,具体步骤为:鼠标指针在单片机器件80C51上,双击该器件,在“Program File”栏中单击打开按钮,出现文件浏览对话框,找到“红外计数.HEX”,添加文件。从弹出的属性编辑对话框,在“Clock Frequency”栏中把频率设定为6MHz。单击按钮,全速启动仿真,仿真运行结果如图3所示。
图3 红外计数仿真电路运行结果图
4 结束语
Proteus仿真软件不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其他电路的工作情况。在程序调试、系统仿真时,不仅能观察到程序执行时单片机寄存器和存储器等内容变化,而且从工程的角度直观地看到了外围电路工作情况,非常接近实际工程应用。
通过实例看出,基于Proteus仿真软件开发单片机控制系统,是一种将仿真软件和具体的工程实践相结合的新方法。采用仿真软件虚拟实验,使开发者在系统设计上能将软件开发与硬件配置同时进行,在此基础上试制电路板也节省了时间。另外,这种方法在经济方面具有优势,用Proteus元件库中提供的元件搭建电路,而且该软件也提供了丰富的仪器,节省了对仪表、信号发生装置等硬件的投入与维护,提高了效率,又降低了产品开发成本,值得单片机产品开发者借鉴使用。