引言
Proteus软件因其强大、形象的仿真功能,在单片机实训教学中得到广泛的应用。Proteus支持MCS51、ARM等多个系列的CPU芯片,集编辑、仿真调试于一体。它的界面简洁友好,利用该软件提供的数千种数字/模拟仿真元器件以及丰富的仿真设备,在程序调试、系统仿真时不仅能观察到程序执行过程中CPU寄存器和存储器等的内容变化,还可从工程的角度直观地看到外围电路的工作情况,非常接近工程应用,给予开发人员莫大便利。特别是在基于Proteus的单片机实训仿真教学中,由于成本低、操作方便,更是得到广大师生的喜爱。
由于使用者没有仔细体会Proteus开发者的良苦用心,某些关键性的属性设置往往被忽视,导致仿真结果与现实出现巨大的误会,这种情况甚至出现在权威教科书上,影响了理论教学。通过两个经典的实例,拔正MCS51系列单片机ALE、EA引脚在Proteus仿真中的思路。
1 EA引脚功能仿真
在权威的MCS51单片机教科书中,对EA引脚功能的描述是: EA为访问内/外部程序存储器控制信号。当EA为高电平时,对ROM的读操作先从内部4 KB开始,当地址范围超出4 KB时自动切换到外部进行;当EA为低电平时,对ROM的读操作限定在外部程序存储器。对于EA引脚的功能,绝大部分教师要求学生死记。因为现在的51单片机内部都有ROM,如果程序不是特别大,则不需要扩展外部程序存储器,所以基于51单片机的电路板上EA引脚一般直接接+5 V。
其实,EA引脚功能可以用Proteus仿真来加强理解。但若忽视了一些关键性设置,EA引脚的功能体现不出来,很多有关Proteus书籍中也没有介绍这一点。
下面以一个简单的点亮LED的例子来说明EA引脚功能。由于Proteus默认设置的关系,只要画出图1所示的电路并把程序的HEX文件装入单片机中,就可以点亮LED。如果要说明EA引脚功能,则需进行如下设置:在Proteus中,双击单片机,弹出的界面和设置后的结果如图2所示。
图1基于Proteus的LED控制仿真图
如果此时,把EA引脚接地,启动仿真,则会发现LED不亮。原因很简单,因为程序的起始地址是0000H,程序容量在4 KB以内,当EA引脚接地时,单片机内核对ROM的读操作限定在外部程序存储器,此时点亮LED的程序不会执行。利用这个简单的Proteus实验并进行关键性的设置,可以很轻松地理解教科书中有关EA引脚功能的说明。
2 关键性的设置说明
在图2的Advanced Properties(高级属性)中,Simulate Program Fetches(模拟程序提取)要设置为Yes,才可以真正仿真出实际单片机的工作情况。 此处Proteus默认为No,并不完全提取单片机的模型,目的是尽可能减少PC机运行Proteus的负担,提高仿真的效率。此默认条件在大型的仿真项目中很有意义。所以,在Proteus仿真中,如果不特别关注这样的引脚功能,可以采用Proteus默认设置,否则就要进行图2中的设置。单片机的ALE引脚的情况也是如此。
图2AT89C51单片机属性设置
3 ALE引脚的仿真
在权威的MCS51单片机教科书中,同样都讲到了ALE引脚的功能是:ALE为地址锁存允许输出信号。在访问外部存储器时,单片机通过P0口输出片外存储器的低8位地址,ALE用于将片外存储器的低8位地址锁存到外部地址锁存器中。在不访问外部存储器时,ALE以时钟振荡频率的1/6固定频率输出,因而它又可用作外部时钟信号以及外部定时信号。每当CPU访问外部数据存储器时,将跳过一个ALE脉冲。另外在涉及模/数转换应用时,经典的ADC0809在教科书中是这样描述的:ALE输出可直接作为ADC0809的时钟信号。但是在有关Proteus的书籍中,仿真ADC0809时,往往采用Proteus专门提供的时钟信号发生器或用单片机I/O口模拟时钟信号的方法,甚至有的资料说Proteus不能完整地仿真ALE。其实理解了图2中的关键设置,可以验证权威教科书的理论。
图3是采用ALE引脚的信号作为ADC0809(在Proteus中由ADC0808代替)的时钟信号仿真图。图4是用示波器测得的ALE引脚的波形,其周期为1 μs,频率为晶振频率的1/6(晶振频率已设置为6 MHz)。
图3 采用ALE引脚的信号作为ADC0809的时钟信号仿真图
图4 ALE引脚的波形图
如图5所示,特意设计一个简单电路和程序来观察ALE引脚的情况。图5中,利用P2.0引脚和逻辑与门把ALE引脚的两种波形分离。由于此处单片机的机器周期为2 μs,而程序中每执行一次的机器周期个数为5,所以地址锁存信号ALE的周期为10 μs。在不访问外部数据存储器时,ALE引脚的输出频率为1/6晶振频率的脉冲;在访问外部数据存储器时,跳过一个脉冲。图5中的波形完全与教科书上的内容吻合。
图5ALE引脚读外部RAM时的波形图
上述的实验中,在PC机负担较重时,会有Proteus仿真反应慢的可能。如果恢复到默认设置,仿真速度就正常了。这一点也应引起注意。
结语
基于Proteus的单片机仿真在教学中是很普遍的,如果不注意属性的设置,将会影响Proteus的功能。而注意到这一点,就可以明白Proteus软件开发者的意图。无论是使用或开发类似的仿真软件,都可以从中受到启发,更好地发挥仿真软件的优势。