首页 理论教育Proteus仿真软件应用,助力单片机原理与C语言应用

Proteus仿真软件应用,助力单片机原理与C语言应用

【摘要】:Proteus是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。如果找到Proteus支持的编译器,Proteus 将自动进行配置并在Proteus 中调用这些编译器编译源代码。图2-40 仿真控制面板2.3.4 Proteus8.0与Keil连接调试Keil 是德国Keil 公司开发的 8051单片机软件开发平台,经过不断升级,现已经成为一个重要的单片机开发平台。

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和 DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和 MATLAB等多种编译器。

2.3.1 Proteus简介

Proteus软件是英国Lab Center Electronics公司出版的EDA工具。它不仅具有其他EDA工具的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具,目前已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

Proteus可以用于模拟电路与数字电路的教学实验、单片机与嵌入式系统的教学实验、微控制器系统的综合实验、创新实验与毕业设计等。

在Proteus家族里,Proteus8.0是目前较新的版本,如果计算机上正确安装了Proteus软件,在桌面上会出现其快捷图标,双击它就可以启动Proteus8.0。启动后的界面如图2-29所示。

在图2-29所示的界面上单击“IsIs”图标,启动Proteus电路原理图设计,弹出的界面如图2-30所示。

图2-29 Proteus 8.0

图2-30 Proteus电路原理图设计

2.3.2 Proteus8.0的使用过程

打开Proteus 8 Professional软件,首先需要新建一个工程,由于本书是与PCB绘制教程相关联的,所以此时的工程是一个带有原理图、PCB和源代码编译部分的工程。

点击“File”,选择“New Project”,将出现新建工程向导部分,如图2-31所示。在此可以设置文件名(Name)和保存路径(Path),点击“Next”,在下一页的顶部选项卡中,选择“从选中的模板中创建原理图”(Create a Schematic from the selected template),在此可选择默认(DFAULT)。如果不需要绘制原理图,可直接选择“Do not create a schematic”,如图2-32所示。

图2-31 新建工程向导(一)

图2-32 新建工程向导(二)

继续点击“Next”,选择“从选择的模板中创建PCB设计”(Create a PCB layout from the selected template),在此可继续选择默认(DFAULT)。如果不需要进行PCB设计,可直接选择“Do not create a PCB layout”,如图2-33所示。

图2-33 新建工程向导(三)

由于本书需要仿真,所以继续点击“Next”,在仿真页面选择“Create Firmware Project”,并设置Family(系列)为8051,Contoller(控制器)为AT89C52,Compiler(编译器)为Keil for 8051,即在此设计外部代码编译器。如果不需要进行仿真,则可直接选择“No Firmware Project”即可,如图2-34所示。

图2-34 新建工程向导(四)

点击“Next”,出现Summary信息(见图2-35),点击“Finish”,新工程便创建完毕。此时的新工程包含原理图设计部分(见图2-36)、PCB 绘制部分(见图2-37)和源代码部分(见图2-38)。

图2-35 新建工程向导(五)

图2-36 原理图设计部分

图2-37 PCB绘制部分

2.3.3 在Proteus 中进行C语言代码的调试

Proteus8.0版本自身支持汇编语言、Keil for 51等,本书主要以Keil for 51为主,故先以Keil for 51语言为例。

Proteus8.0或以上版本自带源代码编辑、编译器,所以不再需要外部文本编辑器,具体操作界面如图2-38所示,在指定位置(Write your code here)进行编码。

图2-38 源代码部分

此时,编译器、原理图、源代码都已准备好,点击“Build”,选择“Build”下的“Build Project”或者“Rebuild Project”编译固件。

如果代码错误,系统会自动提示哪行代码出现错误,这和Keil软件是一样的。

同时,Proteus 8.0或以上版本支持C51语言的编译和调试,这需要计算机本身已经安装Keil或者IAR 等可以编译C51语言的软件。Proteus 自带汇编语言的编译器,如果想编译C51,则需要找到计算机中安装的编译环境,也可以到网上下载。

点击“Config”,在下拉菜单中选择“Compilers Configuration”,自动弹出如图2-39所示的界面。

图2-39 编译器配置

该对话框列出了所有支持的编译器,并指示是否被安装和配置。按下对话框底部的检查全部按钮(Check all),Proteus 将扫描计算机,检查安装好的编译器。如果找到Proteus支持的编译器,Proteus 将自动进行配置并在Proteus 中调用这些编译器编译源代码。其余的编译器,Proteus自动给出下载(Download)或者下载链接(Goto Website),读者可根据自身要求选择下载。值得注意的是,其中有些编译器的下载是需要收费的。

编译成功后,如果想观察代码的单步运行,则需要进行如下操作:

首先要确定Proteus 没有运行仿真,处于停止状态。然后通过“仿真控制面板”(见图2-40)暂停按钮启动仿真或暂停。

图2-40 仿真控制面板

2.3.4 Proteus8.0与Keil连接调试

Keil 是德国Keil 公司(现已被ARM公司收购)开发的 8051单片机软件开发平台,经过不断升级,现已经成为一个重要的单片机开发平台。Keil界面不复杂,操作也不困难,很多优秀程序都是在Keil的平台上编写出来的。Keil是一个重要的单片机语言开发软件平台,用户群极为庞大。

(1)Keil的uVision4可进行纯粹的软件仿真(仿真软件程序,不接硬件电路);也可以利用硬件仿真器,搭接上单片机硬件系统,在仿真器中载入项目程序后进行实时仿真;还可以使用uVision4的内嵌模块Keil Monitor-51,在不需要额外的硬件仿真器的条件下,搭接单片机硬件系统对项目程序进行实时仿真。

(2)uVision4调试器具备所有常规源代码级调试、符号调试特性及历史跟踪、代码覆盖、复杂断点等功能。Keil uVision4可以编辑、编译汇编语言、C51语言,连接定位目标文件和库文件,创建.hex文件,调试目标程序等。

在Proteus下完成原理图设计文件后,再在keil uVision4下编写C51程序,经过调试、编译最终生成.hex文件后,在Proteus下把.hex 文件载入虚拟单片机中,然后进行系统联调。如果要修改程序,需再回到keil uVision4界面下修改,再经过调试、编译,重新生成.hex文件,重复上述过程,直至系统正常运行为止。但是对于较为复杂的程序,如果没有达到预期效果,这时可能需要Proteus与Keil uVision4进行联合调试,联合调试的设置过程相对简单,读者可参考相关资料自行设置。

用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力。在单片机课程设计和全国大学生电子设计竞赛中,使用Proteus 开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。实践证明,在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统的设计效率

2.3.5 简单实例掌握Proteus ISIS的用法

Proteus 8.0版本在新建项目时,默认是打开“原理图设计ISIS”“PCB布板ARES”和“源程序设计”的。对初学者来说,开始只学习“原理图设计ISIS”,在后期才学习“PCB布板ARES”,所以下面以完成任务2.1为例来学习Proteus ISIS的用法。

Proteus是一种集单片机仿真和SPICE分析于一身的仿真软件。其功能非常强大,不仅能仿真模拟电路、数字电路及模拟数字混合电路,更重要的是可以仿真51系列、AVR、PIC等常用主流单片机。

Protues提供了丰富的资源:

(1)Proteus拥有的元器件资源:Proteus可提供30多种元件库,超过8000种模拟、数字元器件。

(2)Proteus可提供的仿真仪表资源 :仿真仪器仪表的数量、类型和质量是衡量仿真实验室是否合格的一个关键因素。Proteus可提供常用的示波器(本文的实例中示波器被用来观察产生的波形)、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表

以下简要介绍Proteus中常用元器件和仿真仪表中英文对照表,见表2-1,使用时可通过查表快速输入元器件关键字来找到所需器件。

表2-1 proteus中常用元器件和仿真仪表中英文对照表

续表

(1)启动Proteus 8.0主页面,如图2-41所示。

图2-41 Proteus 8.0主页面(www.chuimin.cn)

(2)点击图2-41中的“ISIS”按钮,启动原理图绘制模式,如图2-42所示。

图2-42中,区域①为菜单栏,区域②为工具栏,区域③为对象选择器窗口和元器件预览区,区域④为编辑窗口,区域⑤为绘图工具栏,区域⑥为仿真运行工具条。

图2-42 Proteus原理图绘制主界面

(3)在图2-42 Proteus原理图绘制主界面中单击“保存(S)”按钮,弹出图2-43所示的“保存Proteus工程”对话框,在文件名称框内输入“2位信号灯交替闪烁控制电路原理图”,再单击保存,Proteus 8.0 ISIS的后缀名为.pdsprj。

图2-43 保存ISIS工程文件

(4)选取元器件。此简单实例需要下列元器件:

单片机:AT89C51。

发光二极管:LED-RED。

瓷片电容:CAP*。

电阻:RES*。

晶振:CRYSTAL。

按钮:BUTTON。

单击图2-42中的“P”按钮,弹出如图2-44所示的选取元器件对话框,在此对话框左上角“keywords(关键词)”一栏中输入元器件名称,如“AT89C51”,系统在对象库中进行搜索查找,并将与关键词匹配的元器件显示在“结果(Results)”中。在“结果(Results)”栏中的列表项中,双击“AT89C51”,则可将“AT89C51”添加至对象选择器窗口。按照此方法完成其他元器件的选取,如果忘记关键词的完整写法,可以用“*”代替,如“CRY*”可以找到晶振。被选取的元器件都加入ISIS对象选择器中,如图2-45所示。对一些常用器件,如果忘记关键词,还可以对照表2-1进行查阅。

图2-44 选取元器件

图2-45 选取的元器件均加入ISIS对象选择器中

(5)放置元器件至图形编辑窗口。

在对象选择器窗口中,选中“AT89C51”,将鼠标置于图形编辑窗口该对象欲放置的位置,单击鼠标左键,该对象被完成放置。同理,将BUTTON、RES等放置到图形编辑窗口中,如图2-46所示。

若元器件方向需要调整,先在ISIS对象选择器窗口中单击选中该元器件,再单击工具栏上相应的转向按钮,把元器件旋转到合适的方向后再将其放置于图形编辑窗口。

若对象位置需要移动,将鼠标移到该对象上,单击鼠标右键,此时我们已经注意到,该对象的颜色已变至红色,表明该对象已被选中,按下鼠标左键,拖动鼠标,将对象移至新位置后,松开鼠标,完成移动操作。

通过一系列的移动、旋转、放置等操作,将元器件放在ISIS编辑窗口中合适的位置,如图2-46所示。

图2-46 各元器件放在ISIS编辑窗口中合适的位置

(6)放置终端(电源、地)。

放置电源操作:单击工具栏中的终端按钮,在对象选择器窗口中选择“POWER”,再在编辑区中要放电源的位置单击完成。放置地(GROUND)的操作与此类似,如图2-47所示。

图2-47 放置终端符号

(7)元器件之间的连线。

Proteus的智能化可以在想要画线的时候进行自动检测。下面,我们来操作将电阻R1的右端连接到LED1显示器的左端,如图2-48所示。当鼠标的指针靠近R1右端的连接点时,跟着鼠标的指针就会出现一个符号,表明找到了R1的连接点,单击鼠标左键,移动鼠标(不用拖动鼠标),将鼠标的指针靠近LED1的左端的连接点时,跟着鼠标的指针就会出现一个符号,表明找到了LED1显示器的连接点,单击鼠标左键完成电阻R1和LED1的连线。

图2-48 元器件之间连线

Proteus具有线路自动路径功能(WAR),当选中两个连接点后,WAR将选择一个合适的路径连线。WAR可通过使用标准工具栏里的“WAR”命令按钮来关闭或打开,也可以在菜单栏的“Tools”下找到这个图标。

同理,我们可以完成其他连线。在此过程的任何时刻,都可以按Esc键或者单击鼠标的右键来放弃画线。

(8)修改、设置元器件的属性。

Proteus库中的元器件都有相应的属性,要设置修改元器件的属性,只需要双击ISIS编辑区中的该元器件。例如,发光二极管的限流电阻R1,双击它将弹出如图2-49所示的属性窗口,在窗口中已经将电阻的阻值修改为330 Ω。图2-50是编辑完成的“简单实例”的电路。

图2-49 设置限流电阻为330Ω

图2-50 完成的实例电路图

(9)源程序设计与生成目标代码。

在Keil uVision中,我们已经学习了如何建立一个工程,并生成了.HEX文件,这个文件就是单片机仿真和实际下载所需要的文件。在这个案例中,要实现两个LED灯的闪烁控制,要在一个LED灯控制基础上进行修改,这样可以不断复习旧知识,学习新知识,在现有认知的基础上学习比从陌生基础上学习要容易得多。

另外,编写程序要从学习画程序流程图开始,从简单程序流程图开始画起,画得多了,慢慢就会编程了。

① 程序流程图(见图2-51)。

图2-51 2位LED灯闪烁控制流程图

② 源程序设计。

建立“flash2led.uvproj”项目,选择单片机型号,输入源程序(见任务 2.1),编译调试,生成.HEX文件,最终调试结果如图2-52所示。

图2-52 2位LED灯闪烁控制程序调试结果

(10)Proteus仿真。

① 加载目标代码文件。

在Proteus ISIS编辑窗口中,双击编辑窗口的“AT89C52”器件,在弹出的如图2-53所示的属性编辑对话框Program File一栏中单击打开按钮,出现文件浏览对话框,找到flash2 led.hex文件,单击“打开”按钮,完成添加文件。在“Clock frequency”栏中把频率设置为12 MHz,仿真系统则以12 MHz的时钟频率运行。因为单片机运行的时钟频率以属性设置中的“Clock frequency”为准,所以在编辑区设计MCS-51系列单片机系统电路时,可以略去单片机振荡电路,并且复位电路也可以略去。因此,后续项目开始就将振荡电路和复位电路省略。

图2-53 加载目标代码文件

② 仿真。

单击按钮,启动仿真,仿真运行片段如图2-54所示。发光二极管间隔500 ms闪烁。

图2-54 仿真运行片段

查看彩图:仿真运行片段

图中红色方块代表低电平,蓝色方块代表高电平,灰色方块代表不确定电平。