李 丽
(太原工业学院 计算机工程系,山西 太原 030008)
Proteus是英国Labcenter electronics公司研发的用于电路分析与实物仿真、印制电路板设计的软件,它支持Windows 操作系统,是目前世界上唯一将电路仿真、虚拟模型仿真、PCB设计合为一体的EDA软件[1].Proteus提供了很多种虚拟仿真模型,例如: VSM for ARM7/LPC2000、VSM for 805l、 VSM for AVR等.2009年推出的Proteus 7.5版本更增加了VSM for 8086仿真模型,使8086/8088微处理器、并行接口芯片8255A、定时计数器8253、中断控制器8259、串行接口8251等芯片的仿真运行得以实现[2].一直以来,Proteus都以其强大的功能、方便的操作,备受广大电子设计者的青睐.
随着科技的进步和城市建设的发展,人们对城市亮化的要求也越来越高,单一的路灯照亮,已经不能满足人们的需要,人们希望有绚丽多彩的城市夜景,遇到喜事也喜欢“张灯结彩”.所以我们的周围有各种各样的装饰彩灯,那些炫目的灯光效果,实际上都是在微控制器的控制下实现的多样流水灯效果[3].本文就介绍了在Proteus仿真环境下,以INTEL8086微处理器为核心,利用并行接口芯片8255控制LED花样流水灯的电路设计与实现.经仿真调试,运行效果良好,且后期经过简单的代码修改,亦可扩展出更多灯光效果.
电路主要由8086微处理器、地址译码电路、8255驱动电路、按钮输入、LED流水灯显示电路和状态显示电路构成.电路设计框架图如图1所示.
图1 花样流水灯电路设计框架图
硬件设计思路为:在微处理器8086的控制下驱动并行接口8255实现花样流水灯效果,其中,8255具体负责接收按钮输入、流水灯的显示和状态显示功能.当用户每按下一次按钮就切换一种流水灯效果,并显示当前状态号.考虑到实效性,用户按钮输入以中断请求的方式提交给CPU.
电路所需元器件列表如表1所示.
表1 元器件清单
系统具体电路连接则如图 2 所示.
图2 花样流水灯硬件电路连接图
表2 灯光效果与状态号对应表
软件设计部分利用EMU8086仿真系统实现汇编语言程序的编写和编译.
系统控制程序采用程序段CODE和数据段DATA两段结构.数据段定义了按钮计数变量NUM,五种灯光效果的初始状态变量S0(0),S1(FFH),S2(01H),S3(80H),S4(55H)以及7段数码管0-9的字形码表DIGITALDISP.程序段包括MAIN主程序、INTPROC中断服务子程序、多个流水灯控制子程序(MODE2-MODE5)、DIGITALDISP数码管显示子程序和DELAY延时子程序.主程序控制流程如图3所示.
图3 主程序流程图
图4 中断服务子程序流程图
主程序的主要任务是完成中断类型号的设置和初始化8255A,然后循环等待即可.如果用户点击了按钮,即触发了不可屏蔽中断,CPU执行中断服务子程序,该程序流程如图4所示.服务子程序对按键次数计数,并根据按键值转入数码管显示子程序和不同的灯光控制子程序,控制实现不同的流水灯效果.程序中共给出了6种灯光控制,当按键值大于5时,清零重新开始循环判断.数码管显示子程序较简单,按照按键值查字形码表B口输出即可.多个灯光控制子程序结构相似,但灯光控制不同,以单灯顺时针流水显示为例,其实现代码如下:
MODE2 PROC NEAR
MOV AL,S2;对8255A的A口送状态2
MOV DX,IO3
NEXT2: OUT DX,AL
CALL DELAY; 软件延时0.5秒
ROL AL,1
CMP NUM,2
JZ NEXT2
RET
MODE2 ENDP
如果需要更多流水灯效果,只需要添加相应控制子程序,并在中断服务子程序中,对计数判断稍作修改即可.
Proteus支持多种外部编译器,如:EMU8086,MASM32,TASM等,添加相应的编译器.加载源程序成功即可进行仿真调试,特别应该注意修改CPU的Internal Memory Size和Program Loading Segment参数为合适大小[5],否则,调试无法进行.系统仿真调试界面如图5所示.
图5 系统仿真调试界面图
本系统以8086为核心,在Proteus平台联合EMU8086编译器仿真运行.设计中利用按钮产生NMI中断请求,使CUP必响应每次中断,执行中断服务程序,驱动可编程并行接口芯片8255A实现花样流水灯效果.仿真结果表明:系统运行效果良好,代码可扩展性强,具有一定实用价值.将其作为《微机原理与接口技术》的典型案例,应用于的实践教学中,亦能起到了不错的效果.