《微型计算机技术》课程设计报告题目:交通信号灯控制系统专业名称:电子信息工程班级:092班学号:000000000l姓名:xxx2011年12月交通信号灯控制系统XXX(电子信息工程学系)摘要:本文介绍了以8086微处理器为核心.利用可编程并行接口芯片8255A的软硬件功能,实现对交通灯控制,主要是模拟十字路口的红绿灯,介绍了交通灯控制器的原理以及电路接线。在设计中所用到的编程语言是汇编语言,延时采用的是软件延时(即通过汇编指令)。关键词:8086微处理器;交通灯;8255A一、课程设计任务1.1设计目标利用ZY15MicInt12BB微机原理及接口实验箱上的8086微处理器模块、并行接口8255A模块,地址译码单元以及0—1LED灯显示等模块,根据所学的微机原理知识,按照实际交通情况设定一种交通灯规则,设计一个简单的交通信号灯控制系统。1.2设计要求在一个十字路口,东西方向和南北方向各有两组交通指示灯,每组有红、黄绿三个灯。东西方向同色灯连在一起,南北方向同色灯连在一起。对各组的交通灯进行控制,以保证车辆在各道上通畅运行。两组组的交通灯工作过程为:1.南北方向亮绿灯允许通行,东西方向亮红灯禁止通行2.当延时25秒后,南北方向的黄灯同时变亮,且延时5秒。3.延时后,东西方向转为绿灯,南北方向转为红灯,且延时25秒。4.25秒后,转为东西方向黄灯亮,延时5秒后,回到第一步,以次重复进行,不断循环。5.当遇到道路障通,或紧急情况时,A、B道全为红灯。二、原理说明与硬件设计2.1原理说明在本次课程设计当中,采用的是以8086微处理器为核心,以8255A芯片作为接口芯片,运用软件定时(即通过汇编指令)控制LDE灯(即交通灯)按照设定的交通规则显示。2.28086简介8086微处理器是Intel系列的第三代微处理器,拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器,其主频为5MHz/10MHz,地址总线宽度为20位,可寻址的内存空间打1MB。8086微处理器的内部功能结构由两个独立的工作部件——执行部件EU(ExecutionUnit)和总线接口部件BIU(BusInterfaceUnit)构成。其中,(1)BIU和EU可以并行工作,提高CPU效率。BIU监视着指令队列。当指令队列中有2个空字节时,就自动把指令取到队列中。(2)EU执行指令时,从指令队列头部取指令,然后执行。如需访问存储器,则EU向BIU发出请求,由BIU访问存储器。(3)在执行转移、调用、返回指令时,需改变队列中的指令,要等新指令装入队列中后,EU才继续执行指令。8086CPU的内部功能结构框图如图2-1所示。图2-18086CPU的内部功能结构框图8086微处理器采用40引脚的DIP封装,其引脚图如图2-2所示。8086CPU到底可以工作在最大模式或最小模式两种工作模式下,这完全由硬件决定。处于不同工作模式时,其部分引脚的功能是不同的。图2-28086的引脚(1)两种工作方式下功能相同的引脚MM/MX:最小/最大模式输入控制信号。引脚用来设置8086CPU的工作模式。当为高电平(接+5V)时,CPU工作在最小模式;当为低电平(接地)时,CPU工作在最大模式。AD15~AD0:地址/数据总线,双向,三态。这是一组采用分时的方法传送地址或数据的复用引脚。根据不同时钟周期的要求,决定当前是传送要访问的存储单元或I/O端口的低16位地址,还是传送16位数据,或是处于高阻状态。A19/S6~A16/S3:地址/状态信号,输出,三态。这是采用分时的方法传送地址或状态的复用引脚。BHE(低)/S7:允许总线高8位数据传送/状态信号,输出,三态。为总线高8位数据允许信号,当低电平有效时,表明在高8位数据总线D15~D8上传送1个字节的数据。S7为设备的状态信号。RD,WR:读信号和写信号,输出,三态,低电平有效。READY:准备就绪信号,输入,高电平有效。READY信号用来实现CPU与存储器或I/O端口之间的时序匹配。TEST:等待测试控制信号,输入,低电平有效。信号用来支持构成多处理器系统,实现8086CPU与协处理器之间同步协调的功能,只有当CPU执行WAIT指令时才使用。NMI:非屏蔽中断请求信号,输入,高电平有效。当NMI引脚上有一个上升沿有效的触发信号时,表明CPU内部或I/O设备提出了非屏蔽的中断请求,CPU会在结束当前所执行的指令后,立即响应中断请求。RESET:复位信号,输入,高电平有效。CLK:时钟信号,输入。VCC,GND:电源输入引脚和接地引脚。8086CPU采用单一+5V电源供电。(2)CPU工作于最小模式时使用的引脚信号当MM/MX引脚接高电平时,CPU工作于最小模式。此时,引脚信号24~31的含义及其功能如下。M/IO:存储器、I/O端口选择控制信号。信号指明当前CPU是选择访问存储器还是访问I/O端口。为高电平时,访问存储器,表示当前要进行CPU与存储器之间的数据传送。为低电平时,访问I/O端口,表示当前要进行CPU与I/O端口之间的数据传送。INTR:可屏蔽中断响应信号,输出,低电平有效。CPU通过信号对外设提出的可屏蔽中断请求做出响应。为低电平时,表示CPU已经响应外设的中断请求,即将执行中断服务程序。ALE:地址锁存允许信号,输出,高电平有效。CPU利用ALE信号可以把AD15~AD0地址/数据、A19/S6~A16/S3地址/状态线上的地址信息锁存在地址锁存器中。DT/R:数据发送/接收信号,输出,三态。DT/信号用来控制数据传送的方向。DT/为高电平时,CPU发送数据到存储器或I/O端口;DT/为低电平时,CPU接收来自存储器或I/O端口的数据。DEN:数据允许控制信号,输出,三态,低电平有效。信号用作总线收发器的选通控制信号。当为低电平时,表明CPU进行数据的读/写操作。HOLD:总线保持请求信号,输入,高电平有效。HLDA:总线保持响应信号,输出,高电平有效。2.38255A简介本次设计灯的亮与灭以及闪烁是用8255的A口和B口控制的,工作在方式0,A口和B口均为输出。并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图2-3所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2-4所示。图2-38255的内部结构及引脚图2-48255工作方式控制字和C口按位置位/复位控制字格式三、流程图及电路接线图1、软件流程图如下:图3-1软件流程图2、电路接线图如下:图3-2电路接线图3系统汇编源程序系统采用汇编程序,利用延时子程序实现定时,具体程序见附录。四、程序运行结果调试:调试结果如图所示:图4-1南北绿灯东西红灯图4-2南北黄灯东西红灯图4-3南北红灯东西绿灯图4-4南北红灯东西黄灯说明:(1)图4-1表示南北方向亮绿灯允许通行,东西方向亮红灯禁止通行(2)图4-2表示南北方向绿灯25秒时间到,绿灯转黄灯提示此方向上交通灯即将转红,东西方向仍然亮红灯禁止通行。(3)图4-3表示5秒时间到,南北方向黄灯转红灯禁止通行,东西方向转亮绿灯允许通行。(4)图4-3表示东西方向绿灯25秒时间到,绿灯转黄灯提示此方向上交通灯即将转红,南北方向仍然亮红灯禁止通行。(5)5秒时间到,系统又回到初始状态即南北方向亮绿灯允许通行,东西方向亮红灯禁止通行如图8所示。依此循环,一个循环周期为60秒,从而实现了交通灯的工作功能。五、总结通过此次课程设计,结合所学的《微机原理与接口技术》这门课程的知识,对其应用之一——交通灯控制器进行设计与实现。总体感觉收获比较多,因为可以将书本上的知识应用到实践当中。刚开始的时候,翻阅了一些资料,还是没有什么头绪,后来在几个同学的帮助下,经过多次的上机练习和调试终于找到了入口点,接下来的事情就相对的容易一些了。首先,把握整个的设计的大概的流程,然后再对每一个分快进行设计,最后进行调试。在设计的过程中,很重要的一点是要熟悉可编程并行通信接口芯片8255A的初始化及其端口的使用。此次课程设计感觉收获很多,比如,翻阅资料提高了自学能力,和同学一起讨论汲取别人的长处。希望老师能够引导学生应该如何去把握、分析课程设计的主题,找出突破点,让学生积极主动进行课程设计,以使学生更好地提高自学的能力。参考文献:[1]洪永泉.微机原理与接口技术[M].北京:科学出版社,2009[2]徐泽明.利用微机控制交通指示灯[J].软件导刊,2007(5)[3]项新建.微机交通灯控制系统[J].ASPT来源刊,1997(09)附录:PORT_AEQU2A0H;声明8255A口地址PORT_BEQU2A1H;声明8255B口地址PORT_CEQU2A2H;声明8255C口地址CMD_PORTEQU2A3H;声明8255A控制字寄存器端口地址PORT_CSEQU2A3HCODESEGMENTASSUMECS:CODESTART:MOVAL,10000001B;方式控制字:B口为输出MOVDX,2A3HOUTDX,AL;写方式控制字到8255A控制字寄存器端口SHOW:NLDH:MOVDX,PORT_BMOVAL,00101000B;状态1:南北方向亮绿灯东西方向亮红灯OUTDX,ALMOVBL,0;BL清0YS1:CALLDELAY;延时25秒INCBL;(BL)++CMPBL,500;比较JNGYS1;(BL)=500,转移到l1NHDH:MOVDX,PORT_BMOVAL,00011000B;状态2:南北方向亮黄灯东西方向亮红灯OUTDX,AL;MOVBL,0YS2:CALLDELAY;延时5秒INCBLCMPBL,100JNGYS2NHDL:MOVDX,PORT_BMOVAL,01000100B;状态3:南北方向亮红灯东西方向绿灯OUTDX,ALMOVBL,0YS3:CALLDELAY;延时25秒INCBLCMPBL,500JNGYS3NHDH:MOVDX,PORT_BMOVAL,01000010B;状态4:南北方向亮红灯东西方向黄灯OUTDX,ALMOVBL,0YS4:CALLDELAY;延时5秒INCBLCMPBL,100JNGYS4JMPSHOWDELAYPROC;50ms延时子程序PUSHBX;保护现场PUSHCXMOVBL,5NEXT:MOVCX,2801;内循环次数(实现延时10ms)W10MS:LOOPW10MS;DECBL;修改外循环计数值JNZNEXT;BX不等于0则进行外循环POPCX;恢复现场POPBXRET;退出子程序,返回主程序DELAYENDP;结束过程CODEENDSENDSTART