单片机Proteus仿真实验指导书目录1、Proteus软件使用方法 (3)2、实验一LED闪烁电路实验 (8)3、实验二数码管静态显示实验 (11)4、实验三数码管动态显示实验 (13)5、实验四外部中断实验 (15)6、实验五T0波形发生器实验 (17)7、实验六计数器实验 (19)8、实验七串口通信实验 (22)9、实验八I2C读写实验 (25)10、实验九AD转换实验 (30)Proteus软件使用方法Proteus软件是Labcenter Electronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。
Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。
通过Proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。
本文中由于我们主要使用Proteus软件在单片机方面的仿真功能,所以我们重点研究ISIS模块的用法,在下面的内容中,如不特别说明,我们所说的Proteus软件特指其ISIS 模块。
在进行下面的操作前,我先说明一点:我的Proteus版本是7.1,如果你使用的是6.9以前的版本,可能你发现在鼠标操作上会略有不同。
这主要表现在6.9以前的版本鼠标左右键的作用与一般软件刚好相反,而7.0以后已经完全改过。
下面我们首先来熟悉一下Proteus的界面。
Proteus是一个标准的Windows窗口程序,和大多数程序一样,没有太大区别,其启动界面如下图所示:如图中所示,区域①为菜单及工具栏,区域②为预览区,区域③为元器件浏览区,区域④为编辑窗口,区域⑤为对象拾取区,区域⑥为元器件调整工具栏,区域⑦为运行工具条。
下面我们就以建立一个和我们在Keil简介中所讲的工程项目相配套的Proteus工程为例来详细讲述Proteus的操作方法以及注意事项。
首先点击启动界面区域③中的“P”按钮(Pick Devices,拾取元器件)来打开“Pick Devices”(拾取元器件)对话框从元件库中拾取所需的元器件。
对话框如下图所示:在对话框中的“Keywords”里面输入我们要检索的元器件的关键词,比如我们要选择项目中使用的AT89C51,就可以直接输入。
输入以后我们能够在中间的“Results”结果栏里面看到我们搜索的元器件的结果。
在对话框的右侧,我们还能够看到我们选择的元器件的仿真模型、引脚以及PCB参数。
这里有一点需要注意,可能有时候我们选择的元器件并没有仿真模型,对话框将在仿真模型和引脚一栏中显示“No Simulator Model”(无仿真模型)。
那么我们就不能够用该元器件进行仿真了,或者我们只能做它的PCB板,或者我们选择其他的与其功能类似而且具有仿真模型的元器件。
搜索到所需的元器件以后,我们可以双击元器件名来将相应的元器件加入到我们的文档中,那么接着我们还可以用相同的方法来搜索并加入其他的元器件。
当我们已经将所需的元器件全部加入到文档中时,我们可以点击“OK”按钮来完成元器件的添加。
添加好元器件以后,下面我们所需要做的就是将元器件按照我们的需要连接成电路。
首先在元器件浏览区中点击我们需要添加到文档中的元器件,这时我们就可以在浏览区看到我们所选择的元器件的形状与方向,如果其方向不符合你的要求,你可以通过点击元器件调整工具栏中的工具来任意进行调整,调整完成之后在文档中单击并选定好需要放置的位置即可。
接着按相同的操作即可完成所有元器件的布置,接下来是连线。
事实上Proteus的自动布线功能是如此的完美以至于我们在做布线时从来都不会觉得这是一项任务,而通常像是在享受布线的乐趣。
布线时我们只需要单击选择起点,然后在需要转弯的地方单击一下,按照你所需走线的方向移动鼠标到线的终点单击即可。
本例我们布线的结果如下图所示(仿真我们在上面的Keil操作介绍中的简单例子)。
因为该工程十分简单,我们没有必要加上复位电路,所以这点在图中予以忽略,请大家注意。
除此以外,你可能还发现,单片机系统没有晶振,这一点你需注意。
事实上在Proteus 中单片机的晶振可以省略,系统默认为12MHz,而且很多时候,当然也为了方便,我们只需要取默认值就可以了。
下面我们来添加电源。
先说明一点,Proteus中单片机芯片默认已经添加电源与地,所以我们可以省略。
然后在添加电源与地以前,我们先来看一下上面第一个图中区域⑤的对象拾取区,我们在这里只说明本文中可能会用得到的以及比较重要的工具。
:(Selection Mode)。
选择模式,通常情况下我们都需要选中它,比如布局时和布线时。
:(Component Mode)。
组件模式,点击该按钮,能够显示出区域③中的元器件,以便我们选择。
:(Wire Label Mode)。
线路标签模式,选中它并单击文档区电路连线能够为连线添加标签。
经常与总线配合使用。
:(Text Script Mode)。
文本模式,选中它能够为文档添加文本。
:(Buses Mode)。
总线模式,选中它能够在电路中画总线。
关于总线画法的详细步骤与注意事项我们在下面会进行专门讲解。
:(Terminals Mode)。
终端模式,选中它能够为电路添加各种终端,比如输入、输出、电源、地等等。
:(Virtual Instruments Mode)。
虚拟仪器模式,选中它我们能够在区域③中看到很多虚拟仪器,比如示波器、电压表、电流表等等。
关于它们的用法我们会在后面的相应章节中详细讲述。
好了,下面我们就来添加电源。
首先点击,选择终端模式,然后在元器件浏览区中点击POWER(电源)来选中电源,通过区域⑥中的元器件调整工具进行适当的调整,然后就可以在文档区中单击放置电源了。
放置并连接好线路的电路图一部分如下图:连接好电路图以后我们还需要做一些修改。
由上图我们可以看出,图中的R1电阻值为10k,这个电阻作为限流电阻显然太大,将使发光二极管D1亮度很低或者根本就不亮,影响我们的仿真结果。
所以我们要进行修改。
修改方法如下:首先我们双击电阻图标,这时软件将弹出“Edit Component”对话框(见下图所示的对话框),对话框中的“Component Referer”是组件标签之意,可以随便填写,也可以取默认,但要注意在同一文档中不能有两个组件标签相同;“Resistance”就是电阻值了,我们可以在其后的框中根据需要填入相应的电阻值。
填写时需注意其格式,如果直接填写数字,则单位默认为Ω;如果在数字后面加上K或者k,则表示kΩ之意。
这里我们填入270,表示270Ω。
修改好各组件属性以后就要将程序(HEX文件)载入单片机了。
首先双击单片机图标,系统同样会弹出“Edit Component”对话框,如下图。
在这个对话框中我们点击“Program files”框右侧的,来打开选择程序代码窗口,选中相应的HEX文件后返回,这时,按钮左侧的框中就填入了相应的HEX文件,我们点击对话框的“OK”按钮,回到文档,程序文件就添加完毕了。
装载好程序,我们就可以进行仿真了。
首先来熟悉一下上面第一个图中区域⑦的运行工具条。
因为比较简单,我们只作一下介绍。
工具条从左到右依次是“Play”、“Step”、“Pause”、“Stop”按钮,即运行、步进、暂停、停止。
下面我们点击“Play”按钮来仿真运行,效果如下图所示,可以看到系统按照我们的程序在运行着,而且我们还能看到其高低电平的实时变化。
如果我们已经观察到了结果就可以点击“Stop”来停止运行。
仿真实验一、led闪烁实验1.实验任务如图1所示:在P1.0端口上接一个发光二极管D1,使D1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。
图12.程序设计内容(1).延时程序的设计方法作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:如图1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒MOV R6,#20 1个 1 D1: MOV R7,#248 1个 1DJNZ R7,$ 2个2×248=496DJNZ R6,D1 2个2总时间:1+(1+496+2)×20=9981μs因此,上面的延时程序时间约为10.0ms。
由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。
如本实验要求0.2秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下:DELAY: MOV R5,#20D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RET(2)输出控制如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。
3.程序框图如图2所示图24.汇编源程序ORG 0START: CLR P1.0LCALL DELAYSETB P1.0LCALL DELAYLJMP STARTDELAY: MOV R5,#20 ;延时子程序,延时0.2秒D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND5. C语言源程序#include <reg51.h>sbit L1=P1^0;void delay02s(void) //延时0.2秒子程序{unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}void main(void){while(1){L1=0;delay02s();L1=1;delay02s();}}6、实验步骤(一)、硬件设计A、在proteus中新建文件file →newdesign→选中default模版→ok,然后另存为*.DSN 文件B、选取元器件并添加到对象选择器中本实验中采用的元器件有:单片机AT89C51、发关二极管LED-RED、磁片电容CAP、点解电容CAP-ELEC,电阻RES、晶振CRYSTAL单击“P”按钮,弹出选取元器件对话框,在其左上角keywords栏中输入元器件名称比如AT89C51,则出现与关键字匹配的元器件列表,选中AT89C51所在行,单击ok边将该器件加入到isis对象选择器中C、画原理图首先,放置元器件,单击isis对象选择器的元器件名,鼠标指针移动到编辑区恰当位置单击然后,放置电源和地,单击选择工具栏中终端按钮,在isis对象选择器中单击power和ground分别在恰当位置放置D、再下一步就是电路图连线,系统支持自动捕捉和自动布线,只要用鼠标点击要连线的两端接下来要修改元器件属性,右键单击要修改属性的元器件,打开属性窗口,修改其值最后做电气检测,单击电气检测按钮,或Tools→electrial rule check(二)、软件设计A、单击source→add/REMOVE source files在对话框中选择代码生成工具ASM51,如果没有源程序,就单击新建,输入文件名单击source→新建文件的文件名,在编辑窗口编辑程序,然后存盘。