首页 -> 2009年第1期
联合仿真在单片机教学中的应用
作者:侯继红
关键词:Proteus软件;Keil uVision3软件
目前,单片机技术在实际工程中得到了广泛应用,Proteus软件与Keil uVision3软件的联合仿真在实际的单片机系统开发中被普遍应用。为此,在单片机课程教学过程中,教师一定要结合工程实际做到软件和硬件相结合,实现理论教学与工程实践紧密结合,在传授理论知识的同时,教会学生如何使用实际工程所应用的相关软件进行单片机系统开发。
Proteus软件与Keil uVision3软件简介
Proteus软件的介绍Proteus软件是英国LabcenterElectronics公司开发的电子设计自动化(EDA)工具软件。该软件主要由实现原理图编辑及仿真的ISIS模块和实现PCB板设计及自动布线的ARES模块组成。Proteus不但具有其他EDA软件的模拟电子和数字电子仿真功能,而且还具有其他EDA软件所没有的单片机系统硬件仿真功能。它可以仿真MS51系列单片机、AVR单片机、PIC单片机和ARM7微处理器,可以直接在电路原理图上实现硬件的虚拟仿真,实现程序的调试,并提供进行测试与分析的虚拟示波器、逻辑分析仪等虚拟仪器及仿真图表。
Keil uVision3软件的介绍Keil uVision3软件是德国的嵌入式开发工具专业制造商Keil公司开发的单片机开发软件平台。首先,该软件不但可以进行软件仿真,而且还可以通过其内嵌模块Keil-Monitor-51,实现在不需要连接硬件仿真器的条件下,通过下载线连接硬件系统对项目进行实时仿真。其次,可以与Proteus单片机仿真软件联合实现虚拟硬件仿真。再次,Keil uVision3软件具有良好的调试界面,操作不复杂,具有优秀的编译效果,丰富的学习资料。目前,Keil uVision3软件的用户非常庞大,几乎所有的嵌入式开发工程师都使用该软件。
Proteus软件与Keil uVision3软件联合仿真的建立
Proteus软件与Keil uVision3软件之间可有相互独立和相互联合两种方式进行单片机系统的虚拟仿真。如用Proteus软件独立进行虚拟仿真,就是用Keil uVision3软件的编辑控制程序,在Keil uVision3软件的Option for Target “Target1”选项卡Output中选择Create HEX File选项,然后进行编译,生成*.HEX文件。然后,将该文件转到Proteus的ISIS模块中,在所仿真的电路中打开单片机的编辑对话框Edit Component,在此窗口中的Program File栏中,选择通过编译生成的*.HEX文件,并在Clock Frequency栏中设置单片机的晶振频率,点击OK完成Edit Component窗口的设置。最后,点击Proteus软件的仿真启动按钮实现电路的仿真。
Proteus软件与Keil uVision3软件之间的联合虚拟仿真,指Keil uVision3软件将Proteus软件打开的单片机系统看成一个虚拟的硬件电路,使用Keil uVision3软件对程序进行编译、调试时自动连接Proteus软件中的虚拟单片机系统,虚拟单片机系统的状态随Keil uVision3软件对程序调试实时变化。这样,可实现用Proteus软件与Keil uVision3软件联合虚拟硬件仿真。要实现联合虚拟硬件仿真就必须对Proteus软件与Keil uVision3软件进行如下设置:
1.安装好Proteus软件和Keil uVision3软件后,安装压缩包中的vdmagdi.exe文件,此时在路径为Keil\c51\bin的文件夹里有VDM51.DLL文件。
2.将压缩包中的Prospice.dll文件复制到Proteus6.9根目录的BIN文件夹中,并将原来的文件覆盖。
3.在Proteus软件中打开要仿真的单片机系统原理图,并在Debug菜单中选择Use remote debug monitor。
4.在Keil uVision3软件中打开要进行联合仿真的项目和程序,点击Project并在Option for Target“Target1”选项卡Debug中选择Use Proteus VSM Simulator。然后,点击Setting按钮进入Host IP和端口Port的设置,如果在同一台计算机上进行联合仿真,则Host IP地址为127.0.0.1,端口设置为8000。如果两台计算机通过互联网进行联合仿真,则Host IP地址为这台计算机的网上IP地址,端口也为8000,这样,就可以实现一台计算机的Keil uVision3软件平台通过互联网去连接远程的另一台计算机,并远程控制另一台计算机的Proteus软件实现虚拟仿真。
按上述的步骤进行设置后,Proteus软件和Keil uVision3软件之间即可进行联合仿真。
Proteus软件与Keil uVision3软件联合仿真实例
下面通过一个实例来进一步说明用Proteus软件与Keil uVision3软件联合仿真来调试程序的过程。该实例是用一个8×8的LED点阵块来显示字符。启动Proteus软件的ISIS模块设计如图所示的仿真电路原理图。
用单片机的串行口输出显示数据,用74HC595芯片将单片机发出的串行数据转换成并行数据,并送给LED显示屏;单片机的P1.0~P1.2管脚输出LED显示屏的行选编码,并通过74HC138芯片译码产生行选信号,实现LED显示屏行扫描显示。用设计好的仿真电路原理图实现显示字符“↑”。根据电路实现的功能要求用Keil uVision3编辑软件编写如下源程序:
ORG 0000H
MOV SCON,#00H;串行口工作方式0
START:MOVR1,#00H
MOVR2,#00H
MOVR3,#8
MOVDPTR,#TABLE;显示字符的数据表首地址送DPTR
E1:MOVA,R1;查表索引值送R1
MOVCA,@A+DPTR;查字符数据表
MOVSBUF,A;串行发送
JNBTI,$;一帧发送完毕吗?
0CLRTI
SETBP2.1;关闭显示器,消隐
MOVA,R2
MOVP1,A;送行选信号
CLRP2.0;产生74HC595的数据锁存信号(上升沿)
NOP;保证数据锁存信号有一定的脉冲宽度
NOP
SETBP2.0
CLRP2.1;74HC595数据输出给显示器
INCR1;准备读取字符的下一行数据
INCR2;准备扫描下一行
MOVR4,#250;每行的显示时间
DJNZR4,$;
DJNZR3,E1
AJMPSTART
TABLE:DB 10H,20H,40H,0FFH,40H,20H,10H,00H;
[2]