Proteus软件使用方法.docx
《Proteus软件使用方法.docx》由会员分享,可在线阅读,更多相关《Proteus软件使用方法.docx(53页珍藏版)》请在冰点文库上搜索。
Proteus软件使用方法
Proteus软件使用方法(总60页)
Proteus软件使用方法 一
2008-11-1820:
47
Proteus软件是LabcenterElectronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。
Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。
通过Proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。
本文中由于我们主要使用Proteus软件在单片机方面的仿真功能,所以我们重点研究ISIS模块的用法,在下面的内容中,如不特别说明,我们所说的Proteus软件特指其ISIS模块。
在进行下面的操作前,我先说明一点:
我的Proteus版本是,如果你使用的是以前的版本,可能你发现在鼠标操作上会略有不同。
这主要表现在以前的版本鼠标左右键的作用与一般软件刚好相反,而以后已经完全改过。
下面我们首先来熟悉一下Proteus的界面。
Proteus是一个标准的Windows窗口程序,和大多数程序一样,没有太大区别,其启动界面如下图所示:
如图中所示,区域①为菜单及工具栏,区域②为预览区,区域③为元器件浏览区,区域④为编辑窗口,区域⑤为对象拾取区,区域⑥为元器件调整工具栏,区域⑦为运行工具条。
下面我们就以建立一个和我们在Keil简介中所讲的工程项目相配套的Proteus工程为例来详细讲述Proteus的操作方法以及注意事项。
首先点击启动界面区域③中的“P”按钮(PickDevices,拾取元器件)来打开“PickDevices”(拾取元器件)对话框从元件库中拾取所需的元器件。
对话框如下图所示:
在对话框中的“Keywords”里面输入我们要检索的元器件的关键词,比如我们要选择项目中使用的AT89C51,就可以直接输入。
输入以后我们能够在中间的“Results”结果栏里面看到我们搜索的元器件的结果。
在对话框的右侧,我们还能够看到我们选择的元器件的仿真模型、引脚以及PCB参数。
这里有一点需要注意,可能有时候我们选择的元器件并没有仿真模型,对话框将在仿真模型和引脚一栏中显示“NoSimulatorModel”(无仿真模型)。
那么我们就不能够用该元器件进行仿真了,或者我们只能做它的PCB板,或者我们选择其他的与其功能类似而且具有仿真模型的元器件。
搜索到所需的元器件以后,我们可以双击元器件名来将相应的元器件加入到我们的文档中,那么接着我们还可以用相同的方法来搜索并加入其他的元器件。
当我们已经将所需的元器件全部加入到文档中时,我们可以点击“OK”按钮来完成元器件的添加。
添加好元器件以后,下面我们所需要做的就是将元器件按照我们的需要连接成电路。
首先在元器件浏览区中点击我们需要添加到文档中的元器件,这时我们就可以在浏览区看到我们所选择的元器件的形状与方向,如果其方向不符合你的要求,你可以通过点击元器件调整工具栏中的工具来任意进行调整,调整完成之后在文档中单击并选定好需要放置的位置即可。
接着按相同的操作即可完成所有元器件的布置,接下来是连线。
事实上Proteus的自动布线功能是如此的完美以至于我们在做布线时从来都不会觉得这是一项任务,而通常像是在享受布线的乐趣。
布线时我们只需要单击选择起点,然后在需要转弯的地方单击一下,按照你所需走线的方向移动鼠标到线的终点单击即可。
本例我们布线的结果如下图所示(仿真我们在上面的Keil操作介绍中的简单例子)。
因为该工程十分简单,我们没有必要加上复位电路,所以这点在图中予以忽略,请大家注意。
除此以外,你可能还发现,单片机系统没有晶振,这一点你需注意。
事实上在Proteus中单片机的晶振可以省略,系统默认为12MHz,而且很多时候,当然也为了方便,我们只需要取默认值就可以了。
下面我们来添加电源。
先说明一点,Proteus中单片机芯片默认已经添加电源与地,所以我们可以省略。
然后在添加电源与地以前,我们先来看一下上面第一个图中区域⑤的对象拾取区,我们在这里只说明本文中可能会用得到的以及比较重要的工具。
l
:
(SelectionMode)。
选择模式,通常情况下我们都需要选中它,比如布局时和布线时。
l
:
(ComponentMode)。
组件模式,点击该按钮,能够显示出区域③中的元器件,以便我们选择。
l
:
(WireLabelMode)。
线路标签模式,选中它并单击文档区电路连线能够为连线添加标签。
经常与总线配合使用。
l
:
(TextScriptMode)。
文本模式,选中它能够为文档添加文本。
l
:
(BusesMode)。
总线模式,选中它能够在电路中画总线。
关于总线画法的详细步骤与注意事项我们在下面会进行专门讲解。
l
:
(TerminalsMode)。
终端模式,选中它能够为电路添加各种终端,比如输入、输出、电源、地等等。
l
:
(VirtualInstrumentsMode)。
虚拟仪器模式,选中它我们能够在区域③中看到很多虚拟仪器,比如示波器、电压表、电流表等等。
关于它们的用法我们会在后面的相应章节中详细讲述。
好了,下面我们就来添加电源。
首先点击
,选择终端模式,然后在元器件浏览区中点击POWER(电源)来选中电源,通过区域⑥中的元器件调整工具进行适当的调整,然后就可以在文档区中单击放置电源了。
放置并连接好线路的电路图一部分如下图:
连接好电路图以后我们还需要做一些修改。
由上图我们可以看出,图中的R1电阻值为10k,这个电阻作为限流电阻显然太大,将使发光二极管D1亮度很低或者根本就不亮,影响我们的仿真结果。
所以我们要进行修改。
修改方法如下:
首先我们双击电阻图标,这时软件将弹出“EditComponent”对话框(见下图所示的对话框),对话框中的“ComponentReferer”是组件标签之意,可以随便填写,也可以取默认,但要注意在同一文档中不能有两个组件标签相同;“Resistance”就是电阻值了,我们可以在其后的框中根据需要填入相应的电阻值。
填写时需注意其格式,如果直接填写数字,则单位默认为Ω;如果在数字后面加上K或者k,则表示kΩ之意。
这里我们填入270,表示270Ω。
修改好各组件属性以后就要将程序(HEX文件)载入单片机了。
首先双击单片机图标,系统同样会弹出“EditComponent”对话框,如下图。
在这个对话框中我们点击“Programfiles”框右侧的
,来打开选择程序代码窗口,选中相应的HEX文件后返回,这时,按钮左侧的框中就填入了相应的HEX文件,我们点击对话框的“OK”按钮,回到文档,程序文件就添加完毕了。
装载好程序,我们就可以进行仿真了。
首先来熟悉一下上面第一个图中区域⑦的运行工具条。
因为比较简单,我们只作一下介绍。
工具条从左到右依次是“Play”、“Step”、“Pause”、“Stop”按钮,即运行、步进、暂停、停止。
下面我们点击“Play”按钮来仿真运行,效果如下图所示,可以看到系统按照我们的程序在运行着,而且我们还能看到其高低电平的实时变化。
如果我们已经观察到了结果就可以点击“Stop”来停止运行。
【转】proteus软件使用方法 二
2011-02-1423:
35
转载自恋生问题
最终编辑恋生问题
计算机仿真辅助单片机指令系统学习
计算机仿真对单片机指令系统的学习的帮助主要在于帮助理解,加强记忆,适当应用。
能够在单片机指令系统学习中的软件主要是MedWin,因为其操作简单,而且可以直观地看到结果。
1.数据传送指令:
数据传送类指令主要包括:
MOV、MOVX、MOVC、PUSH、POP、XCH等。
下面我们通过一个简单的汇编程序来学习这些指令。
例1.汇编语言源文件如下图所示:
在MedWin中编辑好源文件以后,以“.asm”为后缀保存为汇编源文件。
然后进行编译、汇编并将代码装入内存进行仿真。
由于本程序对寄存器、特殊功能寄存器、内部存储器、外部数据存储器都进行了操作,所以需要首先点击“查看”菜单下的相应子菜单打开相应的窗口,即寄存器、特殊功能寄存器、数据区IData、数据区XData,并可以根据需要点击“窗口”菜单下的选项来横向或纵向平铺窗口。
因为本程序需要一步一步地详细查看相应指令执行的结果,所以我们需要在执行指令时点击“指令跟踪(F7)”或“指令单步(F8)”按钮来单步执行。
指令执行中的一个画面如下图所示:
从图中我们能够清晰地观察到每一条指令执行的每一个结果,从而加深我们对这些指令的理解与记忆。
除以上实例程序中所书写的以外,我们还可以使用其他的指令书写程序并在MedWin中仿真,比如PUSH、POP、MOVC等,相信你会得到一个很好的结果,而且MedWin肯定会提高你学习指令的兴趣。
2.算术操作类指令
算术操作类指令主要有:
ADD、ADDC、DAA、SUB、INC、DEC、MUL、DIV等。
算术操作类指令比较复杂,掌握起来比较困难,但在实际的单片机项目应用中很少涉及,尤其是MUL、DIV两条指令,在51系列单片机中更是被束之高阁,很少使用。
此处,我们不再像上节那样逐条书写并仿真课本上的程序,如果感兴趣,你可以仿照上节自己书写程序并进行仿真,观察并体会每一条指令执行的结果以及对系统的影响。
这里我们通过一个比较实用的例子来演示仿真算术类指令的操作。
例2.两个压缩BCD码求和:
将两个BCD码(每个占4位)分别放在一个字节的高4位和低4位即组成压缩BCD码。
本例中有两个压缩BCD码数字,都是四位数,第一个数的高两位放在20H,低两位放在21H中;第二个高低位分别放在30H、31H中。
要求所得结果放在40H、41H中。
汇编源程序如下图:
在MedWin中编辑好源文件后,以“.asm”为后缀将其保存为汇编文件,然后进行编译、汇编并将代码装入内存进行仿真。
你可以像上例那样步进观察其详细执行过程,分析原因;当然也可以在“ljmp$”处设置断点,然后全速运行。
需要注意程序中使用到了内部存储器,所以你需要将数据区“IData”窗口调出来进行观察。
运行的最后结果如下图所示:
从图中我们能够很清楚地看到内部存储器相应单元的内容,进而观察到程序执行的结果,即:
2097+4559=6656。
3.逻辑运算指令、控制转移类指令
逻辑运算指令,顾名思义,是用于逻辑运算的指令。
主要包括:
CLR、CPL、ANL、ORL、XRL等常用逻辑指令以及循环移位指令如:
RL、RLC、RR、RRC等。
控制转移类指令是指在程序中根据具体的条件(或者没有条件)使程序转移到相应的入口的指令。
它主要包括三类指令:
一是无条件转移指令,比如:
AJMP、SJMP、LJMP等;二是条件转移指令,比如:
JZ、CJNE、DJNZ等;三是子程序调用返回指令,比如:
ACALL、LCALL、RET、RETI等。
鉴于单独针对逻辑运算指令进行的仿真十分简单(事实上与数据传送类指令相同),可以很容易、很方便地自己针对相应的指令设计程序来观察结果,进行学习。
所以此处不再针对逻辑运算指令举例仿真。
而控制转移类指令又不可能单独使用,往往与其他指令结合使用来组成相应的程序,所以也无法单独进行仿真。
所以下面我们就将逻辑运算类指令与控制转移类指令相结合来编写仿真程序,通过一个实例同时来仿真这两类指令的应用。
例3.十六进制整数转化为BCD码整数:
4位十六进制整数高低位依次放在R3、R4中,要求转换后的BCD整数按高低位顺序放在R5、R6、R7中。
程序源文件如下图:
在MedWin中编辑好源文件以后,将其以“.asm”为后缀保存为汇编源文件,然后编译、汇编并将产生的代码装入内存进行仿真调试。
仿真前需要注意首先输入R3、R4设置十六进制初始值,具体设置方法如下。
首先调出寄存器窗口,然后在需要修改的寄存器名称或者数值上双击,这时其内容将变为可修改,我们在其中填入需要设置的数值(字母大小写均可)即可,如下图所示:
设置好初始值以后,你可以单步观察几步以便明白其原理,然后就可以设置一个断点全速运行了,最后就可以看到所得到的结果,比如我们输入8FD6,将得到结果:
R5=03,R6=68,R7=22。
4.位操作指令
位操作比较简单,我们也不再写实例进行仿真,如果你感兴趣,可以自己写一些针对相应指令的小程序来仿真之。
这里我们主要说明一下仿真位操作指令与其他指令的不同及注意事项。
位操作指令是对单片机内部存储器的位地址空间进行的相应操作,所以我们查看相应结果时应该打开相应窗口。
单片机的位地址空间可以这样来打开:
点击“查看”菜单下面的“数据区Bit”子菜单。
位地址空间窗口如下图所示:
2011-02-1423:
34
转载自恋生问题
最终编辑恋生问题
Proteus仿真辅助定时器/计数器的学习
2008年
MCS-51系列单片机内部有两个定时器/计数器T0、T1,它们都具有两种工作模式(定时器和计数器)以及四种工作方式(方式0、1、2、3)。
定时器/计数器T0由特殊功能寄存器TH0和TL0构成,T1由特殊功能寄存器TH1和TL1构成。
除此之外,与定时器/计数器有关的特殊功能寄存器还有工作方式控制寄存器TMOD和控制寄存器TCON。
关于它们的详细内容和具体应用请参阅相关参考文献,此处不做探讨。
由于定时器/计数器T0与T1用法几乎完全相同,所以下面的例子中我们将全部使用T0。
而且定时器/计数器方式0和方式3较少使用,因此我们也将主要仿真说明其方式1和2的用法,另外我们还会给出一种其计数器的用法。
例1.定时器/计数器T0工作于定时器模式方式1,在端口产生周期为100ms的方波。
首先计算计数初值:
周期为100ms,定时应为50ms(半个周期)。
一个计算公式为:
计数初值=216-t×f/12
其中t为定时时间(单位为s),f为单片机的时钟频率(单位为MHz)。
所以,计数初值为×12M/12=15536=3CB0H。
因此,TH0的初值应为3CH,TL0的初值应为B0H。
因此,此例的源代码如下图:
在MedWin中将源文件编辑完成以后,保存为汇编源文件并编译、汇编产生源代码(.HEX文件)。
下面我们在Proteus中设计电路,此例电路也比较简单,只需在AT89C51单片机的口连上一个示波器来观察产生的相应波形就可以了。
选择示波器时要注意首先在前面的文章“我的毕业论文(三):
Proteus软件的基本用法”中第一个图:
Proteus界面里面的区域⑤点击按钮
选择虚拟仪器模式,然后在区域③中选择“OSCILLOSCOPE”(示波器)。
完成的电路图如下图所示:
构建好电路图以后,下面就可以为单片机添加程序代码(.HEX文件)了。
双击单片机图标,添加上面的源文件所生成的程序代码,添加好以后,接着就可以进行下面的仿真。
点击运行按钮,系统就运行了起来,我们可以适当调整示波器面板上的按钮来使波形最有利于我们观察。
调整好以后,系统产生的波形效果如下图所示:
如果你的Proteus版本是以前的版本,那么你的示波器和波形效果可能与图中略有不同,但并不影响仿真效果;如果是最新版本,则应该完全相同。
从图中我们能够看出,波形的周期为100ms,这与我们设定的目标相一致;而其幅值则近似为5V。
例2.设计一个延时程序,延时500ms。
为了能够清晰地看到延时效果,我们设计在口连接一个LED发光二极管,使其使用该延时程序每500ms闪烁一次。
通常情况下,为了简便,人们会使用软件延时,即通过执行一段没有意义的程序来达到延时的目的。
但那样做会浪费系统资源,使得系统在延时过程中不能响应任何外部或内部事件。
所以,人们对其做了改进,而通过定时器/计数器定时来进行延时。
由于方式2定时时间过短(12MHz下最大250μs左右),所以,此处我们仍然选用方式1。
但方式1在12MHz下的最大定时时间也只有60多ms,仍然不能满足延时要求。
所以,延时程序需要软硬件协作。
即我们可以这样去做,通过硬件T0延时50ms,然后设置一个计数器,当计数器计到10时,我们延时的目标就达到了。
源程序如下图:
(计数器初值计算与上例相同)
将上面的源文件保存为汇编文件,然后进行编译/汇编,并生产源代码装入内存在MedWin中仿真运行看延时效果(可以通过指令单步执行“lcalldly500”一句观察指令执行时间,则实际执行时间就是延时时间)。
结果发现,实际执行中该延时程序比我们的要求多延时了87μs,这是因为延时程序中还插入了其他指令(比如设置T0模式等),所以我们的延时程序不是十分精确,实际应用中我们可以通过调整T0初值来稍作调整,但此处对延时要求并不精确,所以我们就不再做调整了。
下面我们可以在Proteus中构建电路来观察我们的延时效果。
电路图十分简单,如下图所示:
注意LED的阴阳极不要接反,图中的限流电阻在模拟时可以略去,但如果添加上的话,最好阻值不要设置的过大,以免LED发光太弱,影响观察效果。
设置好电路图以及各元器件的属性以后,我们就可以点击仿真按钮来观察效果了。
可以看到,LED按照大约的周期开始闪烁。
例3.定时器/计数器的计数功能。
本例使用T1对外部脉冲进行计数,每计数一次,与P1口相连的8个LED发光二极管的亮灯个数和位置就按照它们的顺序所表示的BCD码(亮灯代表1,灭灯为0)做加法。
比如开始为29(00101001),计数一次以后,对应的数字变为30(00110000)。
这里我们用按键来模拟外部脉冲,每按一次,表示产生一个脉冲。
显然,根据要求,我们可以使T1工作于计数器方式2,而且我们可以设置其初值为FF,这样,外部产生一个脉冲,T1检查到就会发生中断,然后我们在中断子程序中按要求进行处理。
其源程序如下图所示:
将上面在MedWin中编辑好的源文件保存为汇编文件,然后进行编译/汇编,并产生相应的源代码(.HEX文件)。
注意因为Proteus仿真电路的按键为理想按键,所以程序设计时并没有考虑按键的抖动,但在实际应用中应该注意,否则将可能实现不了预期目的。
另外,本例为了仿真的方便,设置T1计数器的初值为FFH,实际应用中可以灵活地根据相关要求进行改动。
然后我们根据题中要求设计电路。
设计好的电路图如下图所示:
设计电路图时要注意因为本电路图中需要较多的限流电阻(如果添加的话),所以在绘制电路图时考虑用排阻来进行代替。
图中RP1就是一个8×的排阻。
Proteus中提供了几种排阻,你可以使用关键词“respack”进行查找。
设计好电路图,我们就可以将上面汇编源文件产生的源代码装入单片机,然后进行仿真。
仿真时使用鼠标点击按键,你可以看到LED按照BCD码
【转】Proteus软件使用方法 四
2011-02-1423:
31
转载自恋生问题
最终编辑恋生问题
Proteus仿真辅助中断功能的学习
MCS-51系列单片机具有5个中断源,2个中断优先级,可以实现2级中断服务程序嵌套。
5个中断源分别为:
两个外部输入中断源INT0()和INT1(),中断请求标志分别为IE0和IE1;2个内部定时器/计数器的溢出中断源T0(计数时输入)和T1(计数时输入),中断请求标志分别为TF0和TF1;串口中断请求源,其中断请求标志为RI或TI。
中断请求标志位分布在特殊功能寄存器TCON(IE0、IE1、TF0、TF1)和SCON(RI、TI)中。
与中断有关的特殊功能寄存器除它们以外还有中断允许寄存器IE和中断优先级寄存器IP。
这些寄存器都能够进行位寻址。
此处不再对它们进行详细的探讨。
关于它们的详细情况和具体功能以及中断的其他知识请参阅相关参考文献,此处我们从略。
事实上,关于中断我们在上一篇文章中讨论定时器/计数器时已经对T0、T1的相关中断进行过较为详尽的讨论和举例。
而关于串口中断,我们会在下节讲解串口时进行相应的讨论,所以本节我们只简单讨论一下外部中断INT0和INT1,并举例分析。
例1.外部中断INT0和INT1同时存在。
和上篇文章中的例3一样,P1口连接8个LED发光二极管,两个按键分别接到外部中断INT0和INT1。
正常情况下,8个LED闪烁发光。
当INT0发生中断时,使P1口的8个LED做一个灯的左移右移两次;当INT1发生中断时,使P1口的8个LED做两个灯的左移右移两次。
此例的源程序如下图所示:
源文件编辑结束以后,将源文件保存为汇编文件,然后进行编译/汇编,并产生相应的源代码以便下面仿真使用。
下面我们在Proteus中绘制电路,此例电路图和上篇文章中最后一例的电路图大体相同,只不过将接在的按键改为接在和的INT0和INT1的中断请求输入端。
绘制好的电路图如下图所示:
电路设计好以后,我们就可以将上面生成的源代码装入单片机,然后进行仿真了。
可以看到,仿真开始时,8个LED作大约间隔的闪烁;当我们按下INT0口的按键时,LED作一个灯的左移右移两次;当我们按下INT1口的
【转】Proteus软件使用方法 五
2011-02-1423:
30
转载自恋生问题
最终编辑恋生问题
Proteus仿真辅助串口功能的学习
MCS-51系列单片机内部有一个可编程全双工串行通信接口,具有UART(UniversalAsynchronousReceiver/Transmitter,通用异步收发器)功能。
它有四种工作方式,可由软件设定;它的波特率也可由软件设置片内的定时器/计数器来进行控制。
与串口相关的特殊功能寄存器主要有串口控制寄存器SCON和电源控制寄存器PCON。
其中需要注意的是PCON不可位寻址。
51系列单片机的串口主要用来进行串口数据通信,除此以外,它还可以用来非常方便地扩展并行IO口,可以扩充输入或者输出。
本节我们主要通过实例来说明其在串行数据通信的应用及其在扩展IO口上的应用,考虑到篇幅,我们只举以下二例。
例1.两个AT89C51的双机通信。
其中一个单片机P1口外接8个按键(事实上可以用拨码开关来代替,但Proteus中没有这个器件的仿真模型),第二个单片机P2口外接8个LED灯,使用双机串口通信将第一个单片机的拨码开关的状态发送到第二个,并在第二个单片机的LED灯上显示出相应状态。
我们取两机串口都工作于方式1,由定时器T1和SMOD控制其波特率,设T1工作于定时模式方式2,SMOD取0,取波特率为4800bit/s。
则因为计算波特率公式
波特率=2SMOD/32×f/(12×(28-X))
其中,f为单片机时钟频率,X为定时器初值。
所以,我们可以得到T1计数初值为:
FAH(此处为了精确,我们取f=)。
源文件如下所示:
发送程序如下图:
接收程序如下图:
源文件编辑结束以后,将源文件保存为汇编文件,然后进行编译/汇编,并产生相应的源代码,准备用于仿真。
下面我们来设计电路。
首先在电路图中放置两片AT89C51芯片,并将它们的(RXD)和(TXD)引脚交叉相连。
然后在片一的P1口连接8个按键;片二的P2口连接上8个LED。
最终结果如下图所示:
在进行仿真以前,我们需要来再熟悉一下Proteus的按键。
如上图所示,仿真时我们可以点击键帽,但当我们松开鼠标时,按键就弹开了;我们还可以点击键帽右侧的标有上下箭头的红黑色小圆圈,此时当我们松开鼠标时,键帽不会弹开,按键一直保持着按下的状态,只有当我们再次点击小圆圈时,键帽才会弹开,按键才会改变状态。
此例我们就需要这种属性来根据要求进行我们的仿真。
设计好电路图以后,我们就可以装入相应的程序了。