Proteus仿真软件在微机原理与接口技术课程实验教学中的应用

2015-12-29 00:00:00李珍香李全福
计算机教育 2015年9期

摘要:针对微机原理与接口技术课程传统实验教学中存在的问题,引入基于Proteus的虚拟仿真工具。通过4x4的16位矩阵键盘和一个7段数码管构成的输入显示实例,介绍在Proteus中仿真设计8086硬件电路原理图和软件的方法。

关键词:Proteus;EMU8086;微机原理与接口技术;仿真实验

0 引 言

微机原理与接口技术是我国高校工科电类专业的重要专业基础课,是培养学生具有微机软、硬件设计与应用能力及工程意识和工程素养的必修课,也是学生今后从事智能控制和微机开发的重要入门课程,其教学质量的好坏,直接影响学生的就业。该课程内容主要包含汇编编程和接口两大部分,理论性和实践性都很强且很抽象,特别是接口部分,不同芯片的引脚数目多,工作方式也较复杂,学生需通过亲自动手实验才能理解和掌握。目前普通高校的很多学生感觉该课程较难学习,对接口芯片缺乏感性认识,面对实验设备望而生畏,对具体的实验或项目不知如何下手。另外,由于硬件实验设备所固有的结构固定、资源有限、高成本、高损耗、低寿命等缺点,使部分学校实验设备不足。因此,如何改善实验环境,激发学生学习兴趣,提高教学效果,是该课程实验教学改革中的一个重要课题。

1 Proteus+EMU8086仿真实验平台

Proteus是英国Labcenter electronics公司研发的多功能EDA软件,由原理图编辑与仿真软件包ISIS和布线编辑软件包ARES两部分组成,是目前唯一能将电路仿真、PCB设计软件和虚拟模型仿真软件三合一的设计平台,Proteus7.5 SP3以上版本新增对8086 CPU及相关接口芯片的仿真功能;另外,Proteus还提供有示波器、交直流电压/电流表、逻辑分析仪、信号发生器、虚拟终端等很多虚拟仪器,是一个全开放性的仿真实验平台,相当于一个设备齐全的综合实验室,笔者使用的是Proteus7.8软件。

对于8086,Proteus本身未对其提供编译器,需通过外部添加,将编写好的源程序加入工程,然后编译并生成可执行程序后完成。笔者介绍的内容通过外加EMU8086编译器实现。EMU8086将文本编辑器、编译器、反编译器、真调试、虚拟设备和驱动器集成为一体,是一个可在Windows环境下运行的8086 CPU汇编真软件。

2 Proteus仿真8086 CPU性设置

8086 CPU有最大和最小两种工作模式,Proteus仿真8086仅支持最小模式,因为Proteus本身没有给8086提供编译器和内存贮器,所以需要做一些设置,如8086的时钟、内存的起始地址和大小、外部程序加载到内存的地址段等。图1是Proteus为8086 CPU设置属性的界面。

Proteus为8086设定的时钟频率默认是IMHz;要加载到模型内部存储器中的程序文件只能是扩展名为.bin或是与DOS兼容的.com或.exe文件;指定外部程序加载到内存中的起始地址为OOOOOH,程序下载到内存的起始地址为OOOOH,仿真内存储区大小为10000H,用户也可以通过编辑元件对话框对8086的这些属性进行修改。

3 Proteus仿真实例

3.1 功能描述

通过16个button构成4x4的16位矩阵键盘和一个7段数码管构成的简单输入显示系统,实现矩阵键盘的输入与数码管的显示相对应。即16(0-15)个键盘的输入对应在数码管上显示16进制数中的O-F这16个数字符号。

3.2 原理图设计

3.2.1 8086最小模式默认电路

在Protcus仿真8086最小模式电路中,RESET固定接低电平表示不复位,READY固定接高电平表示外部设备始终就绪,▅固定接高电平表示采用最小模式;其他AD[0-15]、A[16-19]、ALE、▆、▄ 、▅等信号直接引出,以用于扩展使用。

3.2.2 原理图设计

4x4键盘原理图设计主要包含CPU、键盘电路、显示电路三大模块,如图2所示,其中CPU模块由8086 CPU、两片地址锁存器74HC373逻辑和一片74HC138译码电路构成;键盘电路4x4的矩阵键盘实现按键输入,由C口的低四位和高四位分别连接4x4键盘的行、列信号线实现;显示模块由7段数码管构成,数码管采用静态共阴接法。74LS138的4个引脚El、C、B、A分别与其中一片74HC373输出的A15、A14、 A13、A12相连,8255A的CS与74LS138的Yo相连。这样,所形成的8255A的4个端口地址就分别为:8000H、8002H、8004H、8006Hn

8086CPU的外部数据总线为16条,其中数据总线的低8位总对应一个偶地址,高8位总埘应一个奇地址。在8255A和8086 CPU相连时,若将8255A的数据线D7~Do接到8086CPU数据总线低8位上时,从CPU角度看,要求8255A的端口地址应为偶地址,这样才能保讧E对8255A的端口读/写能在一个总线周期内完成;故将8255A的A1和Ao分别与8086数据总线的A2和A1对应相连,而将8086地址总线的A0总设为0。Proteus也遵从这样的规定,所以,所形成的8255A的端口地址为4个相邻的偶地址。

3.3 软件设计

8255A的初始化方式控制字为88H(A口方式0输出,PCO-PC3方式O输出,PC4-PC7方式0输入)。

程序整体上采用查询传送方式,通过不断扫描键盘、读取键码、换算键值,最终通过显示模块读出结果,如果读出的键码非法,则重新扫描。在源程序中,行号存放于BX中,按键扫描时,若BX=O,表示扫描第一行,第一行输出低电平(PCo置0);行值存放于AL的低四位,列值存放于AL的高四位,读出列值后若都为高电平,则表明无键按下;若其中有低电平时,再比较判断其为AL的高四位(用3、2、1、0值代替)中的哪一位,判断出是哪一位后,再将AL置为对应位的值(即为列号);将BX+I后的结果值回送BX,继续扫描下一行,依此类推,扫描16个按键。

源程序中的键值定义如下:

TABLE DB OCOH,OF9H,OA4H,OBOH,99H,92H,82H,OF8H,80H,90H,88H,83H,OC6H

OAIH,86H,8EH……;0-F间的16个16进制数字

TABLE变量的偏移地址存放于DI中,通过行列号计算得出键值。键值的计算方法为:键值=行号(在BL中)×4+列号(在AL中)。最后将键值送给BL,将[DI]所指向的内容与BL内容相加后的值赋给寄存器AL,然后通过8255A的A口输出在数码管上对应显示键值。

3.4 仿真调试与运行

在Proteus中通过“Build ALL”汇编、连接生成可执行文件后,再点击窗口左下角的运行按钮,系统进入仿真状态。当按下某一按键时,7段数码管显示其对应的16进制形式的按键值。图3和图4为分别按下“0”键和“F”键时的对应显示结果仿真图。

4 教学实践经验与体会

通过教学实践,在微机原理与接口技术课程中引入Proteus仿真实验可带来以下好处。

(1) Proteus操作简单,使用和调试都很方便。在Proteus中设计的原理图可以自由分配接口芯片的端口地址,这能很好地克服实物实验箱结构固定、资源有限的缺点,让学生真正有做硬件的感觉,同时,所提供的示波器、逻辑分析仪、信号发生器等虚拟仪器可用于课程的相关应用中,便于开发一些实用系统。

(2)Proteus台节节约成本,开放性好。Proteus不仅避免了实物实验箱价格昂贵、易损坏等缺点,而且还克服了由于实物实验箱是成品,学生很难参与其中的细节设计和扩展设计不足问题,学生可以不受任何时间和空间的限制,充分发挥自己的想象和思维,自己搭建硬件和编写程序,进行综合创新性设计。

(3) Proteus能提高教学效果并增强学生的实验能力。通过Proteus,教师一方面可以在课堂上边讲解理论知识,边进行实例演示,并针对性地展示各基本模块的硬件连线和软件控制方法,做到理论与实践相结合,给学生以直观的认知,启发了学生的思维;另一方面,通过教学研究,可对知识点进行拆分和综合,可以设计出基于Proteus仿真的实验项目和综合实训课题。这些都能大大激发学生的学习热情并加深对课程知识点的理解,还能容纳一些新知识和内容,给教学实践带来很多新思路和方法,大大增强教学效果。

我们还应该认识到,Proteus毕竟是一个仿真软件,通过其仿真实验与在实物实验箱上实现还是有差别的。实际电路运行时表现出的各种电气特征由芯片、元器件、电路连线、运行环境等多种因素共同决定,而Proteus是通过软件模拟这些电路特性的,其运行结果取决于仿真软件的设计和PC机本身的运算速度等因素,而且,有一些芯片功能还不完善(譬如8259A中断接口芯片)。因此,在Proteus环境下能正常运行的仿真系统,其电路设计在实际应用中未必能成功进行。在实际教学中,最好能将实物实验与Proteus仿真实验结合起来使用。