当前位置:首页 期刊杂志

基于Proteus和8086的交通灯控制电路仿真设计

时间:2024-12-28

李 丽

(太原工业学院 计算机工程系,山西 太原 030008)



基于Proteus和8086的交通灯控制电路仿真设计

李 丽

(太原工业学院 计算机工程系,山西 太原 030008)

文章介绍了基于INTEL8086微处理器的十字路口交通信号灯控制系统,该系统在 Proteus平台下进行电路设计,利用定时计数器8253和中断控制器8259产生定时中断信号,通过中断控制并行可编程接口芯片8255A驱动十字路口交通信号灯的切换和七段数码管的倒计时显示.该系统软件设计利用EMU8086软件完成,在Proteus联合EMU8086编译环境下进行了系统仿真运行,运行效果良好.

Proteus;8086微处理器;交通灯;定时中断

0 引言

Proteus是英国Labcenter electronics公司研发的电路分析与实物仿真、印制电路板设计的多功能工具软件,它支持Windows 操作系统,是目前唯一将电路仿真、虚拟模型仿真、PCB设计三合一的EDA软件.其支持多系列处理器仿真,如8051,AVR,ARM等,Proteus 7.5以上的版本更新增了最小模式下8086微处理器及其外围芯片的仿真[1].

交通信号灯是非常重要的交通控制设施,安装在城市的各个路口,在疏导车辆通行中起着非常重要的作用.交通信号灯由红黄绿三色构成,红灯停,绿灯行,黄灯代表警示.在车辆尤其是私家车快速增多的今天,十字路口交通灯的合理设置,能有效的缓解交通堵塞情况,使车辆和行人有序通行,显著的减少交通事故的发生.目前,有各种各样的交通灯控制系统的实现方法与方案,其中,较多的采用51系列单片机AT89C51作为核心部件[2].而本文则采用INTEL8086微处理器作为核心,利用定时计数器8253和中断控制器8259产生精准的定时中断信号,控制十字路口交通信号灯的切换和七段数码管的倒计时显示.并将该设计在Proteus环境下,进行了仿真实现,运行效果良好.

1 交通灯硬件电路设计

本系统硬件电路主要由8086微处理器、端口译码电路、定时中断产生电路和8255交通信号灯驱动电路组成.电路所用元器件如表1所示.

表1 元器件清单

系统具体电路连接则如图1所示.1)系统利用最小模式下的8086CPU作为主控芯片,其译码电路由三个74273锁存器、或门以及一个4~16译码器74154构成, 8086的20根地址复用引脚通过锁存器输出,其高位地址A3~A7、A12~A15经或门连译码器的使能端,低电平有效,A8~A11连译码器的ABCD输入端,控制74154输出外围芯片的端口译码信号.由图可知、分别连接了8253A、8259和8255A的片选地址线,而低位地址与各个外围芯片偶错位连接[3].所以,生成8253A的端口地址为0100H~0106H,8259的端口地址为0200H和0202H,8255A的端口地址为0300H~0306H.2)定时中断产生电路由8253A和8259A连接构成,其中,8253A的通道0输入1MHZ的CLK信号,通过和通道1级联产生1秒的定时信号,该信号连到8259A的IR0端,使8259A每隔1秒产生一次可屏蔽中断,以该定时中断为基本的时间单位,利用中断服务程序控制8255A驱动交通信号灯按规定时间切换状态和倒计时显示.3)8255交通信号灯驱动电路由一片并行可编程接口芯片8255A、四个交通信号灯以及两个红色共阴极7段数码管构成,8255A的PA0-PA2连接南北向信号灯,PA5-PA7连接东西向,控制信号灯按时间有规律的变化,端口B 和端口C各连一位7段数码管,负责倒计时的两位数码显示.

图1 交通灯硬件电路图

该电路要完成的交通灯状态切换和倒计时显示任务如表2所示:

表2 交通灯状态和倒计时显示任务表

2 交通灯软件设计

本设计采用汇编语言编写程序,利用EMU8086完成代码的编写和编译.EMU8086是一款在Windows操作系统下运行,虚拟了80X86环境的汇编仿真软件,其集源代码编辑器、编译和反编译工具、Debug调试、虚拟设备和驱动器为一体,是一款功能强大的汇编语言编辑、编译和调试软件[4].

系统控制程序由数据段DATA、主控程序MAIN、中断服务程序INTPROC和倒计时显示子程序(DISP15或DISP2)四部分组成.1)数据段定义了秒数的计数变量NUM、5种交通灯状态S0~S4、共阴极7段数码管0~9的字形码表LEDDISP以及倒计时时间参数D15和D2.2)主控程序MAIN主要负责修改中断向量表并对8253A,8259,8255A芯片进行初始化.其设计流程如图2、图3所示.

图2 主控程序流程图 图3 中断服务程序流程图

其中,8259相关控制字的值为:ICW1=13H、ICW2=80H、ICW4=01H、OCW1=FEH开放IR0中断源、OCW2=60H;当8253A完成初始化后即开始计时,主程序进入循环等待状态,1 s后OUT1产生的定时信号触发IR0产生中断,在可屏蔽中断允许的条件下,类型号为80H的中断服务程序INTPROC被调用.3)中断服务程序INTPROC负责计时和驱动8255控制十字路口交通信号灯状态的切换与倒计时显示,该程序流程如图3所示.4)倒计时显示子程序可控制两位数码管实现15 s(DISP15)或2 s(DISP2)的倒计时显示,由中断服务程序INTPROC调用.

3 Proteus仿真调试

在Proteus环境下,通过Source→Define Code Generation Tools,即可添加外部编译器,EMU8086、MASM32、TASM等工具都是不错的选择.注意修改CPU的Internal Memory Size和Program Loading Segment为合适的大小,添加源程序,Build All成功,点击界面左下角运行按钮,系统即进入运行调试状态.在调试过程中, 本系统遇到两个主要问题:1)由于8086模型的问题,无法获取由8259发出的中断类型号,使中断服务程序无法运行.解决的办法是将中断类型号发送到总线上使CPU能够获取,所以主程序循环等待过程中添加了如下语句:

L1: MOV DX,IO2;IO2为8259的地址 MOV AL,80h;80H为中断类型号 OUT DX,AL JMP L1

2)由于Proteus中,利用8253A表示的时间要比真实时间长很多.为了能在仿真运行中看到与实际相符的交通灯切换状态,本应是1 s的定时时间需在源程序中缩短为0.5 s,即修改8253A的级联初值1 000 000为500 000,这样运行起来更贴近实际[4].系统仿真运行效果如图4所示.

图4 系统仿真效果图

4 结论

本设计以8086CPU为核心,在Proteus环境下,实现了8253和8259硬件定时产生中断,并利用中断服务程序控制8255A实现十字路口交通信号灯的规律状态切换以及七段数码管的倒计时显示.仿真结果表明:系统运行效果良好,为交通信号灯控制系统的设计提供了另一种可行性方案.另外,将该设计作为典型案例,应用于《微机原理与接口技术》的实践教学中,也能起到了非常好的教学效果.

[1] 顾 晖,陈 越,粱惺彦,等.微机原理与接口技术/基于8086+Proteus仿真[M].北京:电子工业出版社,2011

[2] 陈 红,李 玮.交通灯控制系统在Proteus软件中的设计与仿真[J].科教文汇,2009,(21):271

[3] 吴殿红.基于8086的交通灯控制系统设计[J].信息通信,2014(133):67-68

[4] 李珍香,李永华.基于Proteus的智能交通灯设计与仿真实现[J].教育教学论坛,2015,(17):50-52

Traffic Lights Control Circuit Simulation Design Based on Proteus and 8086

LI Li

(Taiyuan Institute of Technology Computer Engineering Department,Taiyuan 030008, China)

To introduce the intersection traffic signal control system based on microprocessor INTEL8086,the system in the Protews platform for circuit design, using the timer counter 8253 and interrupt controller 8259 produce the timer interrupt signal, through the interrupt control programmable parallel interface chip 8255A drive intersection traffic signal lamp switch and seven segment digital tube of the countdown display. The system software design using EMU8086 software to complete, under the environment of Protews joint EMU8086 compile the simulation run, run the effect is good.

Proteus; 8086 microprocessor; traffic lights; timer interrupt

2016-06-17

李 丽(1978-),女,山西太原人,硕士,太原工业学院讲师. 主要从事计算机应用与嵌入式研究.

1672-2027(2016)03-0048-04

TP391.9

A

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!