当前位置:文档之家› PROTEUS介绍

PROTEUS介绍

PROTEUS软件简介
PROTEUS软件是英国Labcenter electronics公司研发的EDA工具软件。

它是一个集模拟电路、数字电路、模/数混合电路以及多种微控制器系统为一体的系统设计和仿真平台。

是目前同类软件中最先进、最完整的电子类仿真平台之一。

它真正实现了在计算机上完成从原理图、电路分析与仿真、单片机代码调试与仿真、系统测试与功能验证到PCB板生成的完整的电子产品研发过程。

已经安装了Proteus ISIS7软件的桌面上就会有图标。

双击该图标,出现工作界面如图1所示。

界面中包括:标题栏、下拉主菜单、快捷按钮栏、标准工具栏、绘图工具箱、状态栏、选择元器件按钮、预览对象方位控制按钮、仿真操作按钮、预览窗口、电路原理图编辑窗口等。

1、电路图的绘制
运行的程序后, 进入该仿真软件的主界面。

作图步骤:
(1)绘图前, 为了便于作图, 可作一些设置。

如设置栅格、栅格捕捉精度、图形界面颜色、大小等。

(2)通过对象选择按钮P, 利用其搜索引擎, 将所需元器件加入到对象选择器窗口。

列元件清单,如
元件名称型号数量Proteus中的名称
单片机芯片AT89C51 1 AT89C51
晶振12MHz 1 CRYSTAL
电容22pF 2 CAP
电解电容22uF 1 CAP-ELEC
发光二极管 1 LED-RED
电阻220Ω8 RES
电阻1KΩ 1 RES
(3)放置元器件至图形编辑窗口, 并调整到合适位置。

(4)修改属性,如电阻, 设置电阻值
(5)放置总线至图形编辑窗口。

(6)完成元器件之间以及元器件与总线的连线。

(7)给与总线连接的导线贴标签, 以便于系统识别。

图1 proteus工作界面
2、在源文件菜单下选择添加删除源代码,选择目标处理器和代码生成工具,如图2所示。

并新建或选择源文件并编辑(注意:用汇编语言加后缀名为ASM)。

然后在同一菜单下选择“
全部编译”。

若编译通过会自动生成后缀名为HEX格式的文件。

图2
3、仿真电路模拟调试
Proteus 软件中绘制仿真电路,然后选中单片机芯片,将生成的HEX格式的文件加载,
最后按左下方的开始按钮即可运行仿真,如图3所示,查看实验效果。

图3
Proteus 与Keil 联合仿真
为了尽快排查系统的软硬件错误,使整个单片机系统实现预期功能,最直接而有效的方法是对系统进行软硬件联调,即Proteus 与Keil 联合仿真,先通过Keil C51编辑、修改、编译源程序并生成.HEX单片机能识别的文件,然后再运行Proteus将HEX文件与原理图中的单片机系统进行仿真。

keil c51程序设计资料
在KEIL uVision2中的关键字除了有ANSI C标准的32个关键字外还根据51单片机的特点扩展了相关的关键字。

在KEIL uVision2的文本编辑器中编写C程序,系统可以把保留字以不同颜色显示,缺省颜色为天蓝色。

定义一个变量的格式如下:
[存储种类] 数据类型 [存储器类型] 变量名表
在定义格式中除了数据类型和变量名表是必要的,其它都是可选项。

存储种类有四种:自动(auto),外部(extern),静态(static)和寄存器(register),缺省类型为自动(auto)。

1、表1中列出了KEIL uVision2 C51编译器所支持的数据类型。

在标准C语言中基本的数据类型为char,int,short,long,float和double,而在C51编译器中int和short相同,float和double相同
表1 KEIL uVision2 C51编译器所支持的数据类型
bit位标量
bit位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。

它的值是一个二进制位,不是0就是1,
sfr特殊功能寄存器
sfr也是一种扩充数据类型,占用一个内存单元,值域为0~255。

利用它可以访问51单片机内部的所有特殊功能寄存器。

如用sfr P1 =0x90这一句定P1为P1端口在片内的寄存器,之后在程序中可以用P1 = 255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。

sfr16 16位特殊功能寄存器
sfr16占用两个内存单元,值域为0~65535。

sfr16和sfr一样用于操作特殊功能寄存器,所不同的是它用于操作占两个字节的寄存器,如定时器T0和T1。

sfr和sfr16可以直接对51单片机的特殊寄存器进行定义,定义方法如下:
sfr 特殊功能寄存器名=特殊功能寄存器地址常数;
sfr16 特殊功能寄存器名= 特殊功能寄存器地址常数;定义AT89C51的P1口
sfr P1 =0x90; //定义P1 I/O口,其地址90H
sfr关键定后面是一个要定义的名字,可任意选取,但要符合标识符的命名规则,名字最好有一定的含义如P1口可以用P1为名,这样程序会变的好读好多。

等号后面必须是常数,不允许有带运算符的表达式,而且该常数必须在特殊功能寄存器的地址范围之内(80H-FFH),具体可查看附录中的相关表。

sfr是定义8位的特殊功能寄存器而sfr16则是用来定义16位特殊功能寄存器,如8052的T2定时器,可以定义为:
sfr16 T2 =0xCC; //这里定义8052定时器2,地址为T2L=CCH,T2H=CDH
用sfr16定义16位特殊功能寄存器时,等号后面是它的低位地址,高位地址一定要位于物理低位地址之上。

sbit可寻址位
sbit是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。

如之前定义了
sfr P1 =0x90; //因P1端口的寄存器是可位寻址的,所以我们可以定义
sbit P1_1 = P1^1; //P1_1为P1中的P1.1引脚
//同样可以用P1.1的地址去写,如sbit P1_1 = 0x91;在以后的程序语句中就可以用P1_1来对P1.1引脚进行读写操作了。

sbit可定义可位寻址对象。

如访问特殊功能寄存器中的某位。

其实这样应用是经常要用的如要访问P1口中的第2个引脚P1.1。

可以照以下的方法去定义:
(1)sbit 位变量名=位地址
sbit P1_1 = Ox91;
这样是把位的绝对地址赋给位变量。

同sfr一样sbit的位地址必须位于80H-FFH之间。

(2)Sbit 位变量名=特殊功能寄存器名^位位置
sfr P1 =0x90;
sbit P1_1 =P1 ^ 1; //先定义一个特殊功能寄存器名再指定位变量名所在的位置
当可寻址位位于特殊功能寄存器中时可采用这种方法
(3)sbit 位变量名=字节地址^位位置
sbit P1_1 =0x90 ^ 1;
这种方法其实和2是一样的,只是把特殊功能寄存器的位址直接用常数表示。

通常这些可以直接使用系统提供的预处理文件,里面已定义好各特殊功能寄存器的简单名字,直接引用
2、说明了一个变量的数据类型后,还可选择说明该变量的存储器类型。

存储器类型的说明就是指定该变量在C51硬件系统中所使用的存储区域,并在编译时准确的定位。

表2中是存储器类型。

注意的是在AT89C51芯片中RAM只有低128位,
在C51存储器类型中提供有一个bdata的存储器类型,这个是指可位寻址的数据存储器,位于单片机的可位寻址区中,可以将要求可位寻址的数据定义为bdata,如:
unsigned char bdata ib; //在可位寻址区定义ucsigned char类型的变量ib
int bdata ab[2]; //在可位寻址区定义数组ab[2],这些也称为可寻址位对象
sbit ib7=ib^7 //用关键字sbit定义位变量来独立访问可寻址位对象的其中一位
sbit ab12=ab[1]^12;
操作符"^"后面的位位置的最大值取决于指定的基址类型,char0-7,int0-15,long0-31。

3、并行接口定义
(1)对于片内I/O口用关键字sfr来定义
sfr P0=Ox80;
sfr P1=Ox90;
(2)对于片外扩展I/O口,则根据其硬件译码地址,将其视为片外数据存储器的一个单元,使用define语句进行定义。

#include <absacc.h>
#define PORTA XBYTE[0x78f0];
4、C51函数的定义
一般形式:
返回值类型函数名(形式参数列表)[编译模式][reentrant][interrupt m][using n] {函数体}
当函数没有返回值时,应用关键字void明确说明返回值类型。

要明确说明形式参数的类型,对于无形参的函数,括号也要保留。

编译模式为small 、compact 或 large,用来指定函数中局部变量参数和参数所在存储器空间。

reentrant 用于定义可重入函数。

interrupt m 用于定义中断函数,m为中断号,为0-4中断。

n用于确定中断服务函数所使用的工作寄存器组,为工作寄存器组号,取值0-3。

初学者可不必设定工作寄存器,而由编译器自动选择。

相关主题