2024年3月31日发(作者:)
基于Proteus和8086的花样流水灯电路设计与仿真
李丽
【摘 要】以8086微处理器为核心的花样流水灯控制系统,电路设计在Proteus平
台下完成,选用并行可编程接口芯片8255A驱动多个LED灯产生流水闪烁效果,利
用按钮实现多种流水灯效果切换,利用七段数码管显示状态号.系统在Proteus联合
EMU8086编译环境下,完成了仿真调试,运行效果良好.
【期刊名称】《太原师范学院学报(自然科学版)》
【年(卷),期】2018(017)003
【总页数】5页(P53-57)
【关键词】花样流水灯;Proteus;8086微处理器;8255A
【作 者】李丽
【作者单位】太原工业学院计算机工程系,山西太原030008
【正文语种】中 文
【中图分类】TP391.9
0 引 言
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花
样流水灯的电路设计与实现.经仿真调试,运行效果良好,且后期经过简单的代码修
改,亦可扩展出更多灯光效果.
1 硬件电路设计
电路主要由8086微处理器、地址译码电路、8255驱动电路、按钮输入、LED流
水灯显示电路和状态显示电路构成.电路设计框架图如图1所示.
图1 花样流水灯电路设计框架图
硬件设计思路为:在微处理器8086的控制下驱动并行接口8255实现花样流水灯效
果,其中,8255具体负责接收按钮输入、流水灯的显示和状态显示功能.当用户每
按下一次按钮就切换一种流水灯效果,并显示当前状态号.考虑到实效性,用户按钮
输入以中断请求的方式提交给CPU.
电路所需元器件列表如表1所示.
表1 元器件清单元器件名称功能说明数量 8086微处理器1 8255A并行可编程接
口芯片(24位)1 74273带清零端的8位上升沿锁存器3 NOT非门1 OR-44输入
或门1 OR-55输入或门1 741544-16译码器1 BUTTON按钮1 LED-YELLOW
黄色LED灯8 7SEG-COM-CATHODE红色7段共阴极数码管1
系统具体电路连接则如图 2 所示.
图2 花样流水灯硬件电路连接图
由图2可知,上半部分由系统主控芯片8086和地址译码电路构成.由于8086CPU
地址和数据复用,所以需三片地址锁存器引出稳定的地址信号,经由74154译码器生
成端口译码信号.下半部分由8255A芯片、按钮、8个LED灯和七段数码管构
成.其中,8255A芯片的片选线与译码电路端连接,而片内地址线A0、A1分别与系
统地址线A1,A2连接,由此可知电路中,8255A的端口地址范围为0300H-0306H.
8255A芯片共有三个端口.其中,A口与8个黄色的LED灯连接,用于控制灯的亮
灭;B口连接一个共阴极的7段数码管,用于显示与不同流水灯状态对应的状态号码,
具体灯光效果和状态号对应关系见表2;C口连接了PC3,PC6和PC7三个引脚,用
于联络应答.其中,PC6连接按钮,用于产生负脉冲响应信号,PC7用于产生输出缓存
器满信号用于产生中断请求信号,该信号与CPU的非屏蔽中断请求线NMI连
接.工作原理是:每当按钮被按下会产生负脉冲,使响应信号有效,该信号驱动输出缓
存器满信号高电平无效,在中断允许位置位(INTEA=1)的条件下,PC3会产生高电平
的中断请求信号,请求CUP响应[4],CUP响应中断则通过A口输出控制LED电路
切换显示下一流水灯状态,即每按下一次按钮就切换一种流水灯效果.这里需要注
意两点:(1)要实现上述C口信号的跳变时序,需设置8255芯片A口的工作方式为方
式1输出.而B口只负责对应状态号码的显示, B口工作方式设置为方式0输出即
可.(2)该电路中,PC3中断请求线连接了CPU的非屏蔽中断请求线NMI,没有使用
常见的中断管理器8259和可屏蔽中断请求INTR.主要原因是,由于8086模型的
问题,无法获取由可屏蔽中断控制器8259发出的中断类型号,解决此类问题,我们一
般都是通过反复发送所需中断类型号到总线上,使CPU能够获取类型号.但本系统
中,要维持流水灯持续的闪烁效果,总线上需要反复发送灯光控制字(控制程序是个死
循环),导致CUP无法获得中断类型号,但如果反复发送类型号(也是个死循环),持续
的流水灯效果又无法实现.为避免这种矛盾,本系统使用了CPU内部能自动产生中
断类型号的非屏蔽中断请求NMI,在流水灯效果持续的基础上,确保中断一定会被响
应.
表2 灯光效果与状态号对应表状态号状态 0灯全灭 1灯全亮 2单灯顺时针流水显
示 3单灯逆时针流水显示 4全灯亮灭闪烁 5灯一亮一灭间隔闪烁
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
如果需要更多流水灯效果,只需要添加相应控制子程序,并在中断服务子程序中,对计
数判断稍作修改即可.
3 Proteus仿真联调
Proteus支持多种外部编译器,如:EMU8086,MASM32,TASM等,添加相应的编
译器.加载源程序成功即可进行仿真调试,特别应该注意修改CPU的Internal
Memory Size和Program Loading Segment参数为合适大小[5],否则,调试无法
进行.系统仿真调试界面如图5所示.
图5 系统仿真调试界面图
4 结论
本系统以8086为核心,在Proteus平台联合EMU8086编译器仿真运行.设计中
利用按钮产生NMI中断请求,使CUP必响应每次中断,执行中断服务程序,驱动可编
程并行接口芯片8255A实现花样流水灯效果.仿真结果表明:系统运行效果良好,
代码可扩展性强,具有一定实用价值.将其作为《微机原理与接口技术》的典型案
例,应用于的实践教学中,亦能起到了不错的效果.
参考文献:
【相关文献】
[1] 卢清平,苏守宝.《微机原理与接口》课程的教学思考与实践[J].实验科学与技术,2012,10(2):98-
100
[2] 陈 越,顾 晖,梁惺彦.Proteus虚拟仿真在微机原理教学中的应用[J].电子技术应
用,2012,38(1):106-108
[3] 王亚亚,姬冠妮.花样流水灯的单片机设计与实现[J].黑龙江科技信息,2015(10):68
[4] 陈逸菲,孙 宁,叶彦斐,等.微机原理与接口技术实验及实践教程-基于Proteus仿真[M].北京:电
子工业出版社,2016,07
[5] 顾 晖,陈 越,粱惺彦,等.微机原理与接口技术——基于8086+Proteus仿真[M].北京:电子工业出
版社,2011
发布评论