1生物医学工程学院(医学信息专业)信息技术设计2报告课程设计名称十字路口交通灯控制系统设计摘要2十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受人为因素的影响,例如在救护车以及警车开过的情况下,交通灯应当为其开辟“绿色通道”,使其畅通无阻。本系统采用8253定时器计数,8255并口控制,的交通灯演示系统。设计一个用于十字路口的交通灯管理系统,分东、西、南、北四个通行方向,东西和南北方向各有一组红、绿灯用于指挥交通;红、绿的持续时间分别为20s,周而复始。因为南北向和东西向交通灯是对称的,所以我们从南北向和东西向各取一个交通灯来进行控制。关键词:8086CPU红绿灯控制系统82558253目录31.系统方案选择与论证..............................................................41.1任务..................................................................................41.2要求..................................................................................41.3系统基本方案..................................................................41.3.1各种方案选择及论证..............................................41.3.2系统的最终方案...................................................52.系统硬件设计...........................................................................62.1电路原理与电路图,实验系统接线图.........................62.2主要芯片工作原理.........................................................72.21.8255芯片的内部结构及引脚..............................73.系统软件设计.....................................................................103.1系统主程序的设计.......................................................103.2延时子程序的设计.......................................................113.3检测开关是否打开子程序...........................................124.调试与分析.............................................................................125.收获与体会.............................................................................136参考资料.................................................................................14附录1(硬件电路原理图):..................................................14附录2(主要程序):..............................................................1541.系统方案选择与论证1.1任务设计并制作一个十字路口红绿灯控制系统。交通信号灯的控制:(1)通过8255并口来控制LED发光二极管的亮灭。(2)输出为0则亮,输出为1则灭。(3)利用8253定时来控制变换时间。1.2要求该系统是某十字路口交通灯控制系统,分东、西、南、北四个通行方向,东西和南北方向各有一组红、绿灯用于指挥交通,红、绿的持续时间分别为20s,周而复始。利用8255,8253,等接口电路。红、绿灯可使用试验箱上的发光二极管进行模拟。系统设计时,利用8253芯片的一个计数器分别作为东西和南北计时器,当计时20s时引起绿、红灯的变化。1.3系统基本方案1.3.1各种方案选择及论证1、方案选择根据题目要求可知,东西方向的绿灯与南北方向的红灯工作状态相同,而东西方向的红灯与南北方向的绿灯工作状态相同。两种工作状态之间切换的时间间隔为20秒。因此,正确设置两种工作状态之间的延时是解决问题的关键。而红绿灯的控制,可以简单的按照题目要求,由8255芯片的输出驱动LED灯即可实现。至于延时方法,存在两种实现方案可以选择。一种是使用软件延时,另一种是接入8253芯片,由8253芯片的计数器提供延时。第一种方案,使用硬件延时,利用的是8253芯片的计数功能。通过8253芯片计数器的级联,可以方便的得出多种不同的延时值。由于是硬件延时,即使是移植到其他芯片,只需要保证接入8253芯片的时钟周期不变,程序几乎无需改动就可以改动。如果要更改延时时间,也可以很轻易地计算出新的计数值。5第二种方案,使用软件延时,用汇编语言写一个不断循环的子程序。然后通过控制循环次数和循环时间来控制延时时间。这种方法的优点是不需要使用额外的硬件,再连线上比较简单。但是,如果使用软件延时,前提是必须知道系统的时钟周期,然后通过计算得出空指令执行的次数。因此软件延时需要依赖CPU芯片,程序移植到不同的芯片上或者延时时间改变都需要重新计算空指令执行的次数,不便于实际使用,而且延时不够准确。其次,使用8253芯片也可以有几种不同的具体实现方案。方案1,使用方式3输出周期为20秒的方波,然后利用8253芯片的锁存功能将计数值锁存,然后通过不断查询的方法读取计数值,判断8253是否计数完毕。这个方案简单,但是由于实验箱上的提供的时钟周期都比较大,只用一个计数器无法实现,需要用两个计数器进行级联。在硬件上的连线比较复杂。方案2,使用方式3输出周期为40秒的方波,将计数器的输出连接到8255芯片,通过不断读取计数器的输出,一旦前后两次读取到的电平相反,则表明定时20秒时间到达。这个方案与方案1类似,需要用两个计数器进行级联。但是它比方案1简单之处在于判定方式比较简单。而且也比方案1准确。方案3,循环使用方式0,将计数器的输入连接到8255芯片,由于8253芯片的计数器工作在方式0时输出一个负脉冲,即只有在计数时才输出低电平,因此可以通过检测计数器的输出知道计数是否结束。假设每一次循环计数器输出一个0.1秒的负脉冲,则每次检测到高电平,即计数结束后,重新对8253的计数器赋予初值,使其重新计数,循环200次的话,就可以得到200次*0.1秒/次=20秒的延时。方案4,方式3和方式0级联使用。首先令8253的计数器0工作在方式3,输出一个0.1秒的方波。将计数器0的输出方波连接到计数器1的CLK端,作为计数器1的时钟脉冲信号。然后令计数器1工作在方式0下,计数值为200,即可在计数器1的输出端得到一个20秒的负脉冲。将计数器1的输出端与8255芯片的端口相连,只要检测到计数器1输出高电平,则表示20秒延时到达。通过上述的分析,结合题目的要求和硬件的实际情况,决定使用8253芯片,而且选择方案3来实现20S的延时。1.3.2系统的最终方案通过并行接口芯片8255和8086计算机的硬件连接,以及通过8254延时的方法,来实现十字路口交通灯的模拟控制。南北向和东西向红绿灯接在8255的A口,PC0控制开关,PC7判断是否已经延时20s了。8086工作在最小模式,8253用计数器0来计数,第0个通道的门控端接+5V,CLOCK0接实验箱上的CLK4(375KHz),8086通过检测PC7是否有高6电平来判断是否20S定时到。定时时间到了后,就对LED灯的状态进行翻转,东西方向亮红灯,南北方向亮绿灯。2.系统硬件设计2.1电路原理与电路图,实验系统接线图设计思路框图:(PAPBPC)L+5V接口8255CPU外设L1-L8发光二机管外设KK1-KK8开关72.2主要芯片工作原理2.21.8255芯片的内部结构及引脚8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种工作方式下工作:方式0—基本输入/输出方式方式1—选通输入/输出方式方式2—双向选通输入/输出方式8255引脚图如图3.2示,各引脚功能如下。D7~D0——与CPU侧连接的八条双向数据线;WR(低电平有效)——写输入信号;RD(低电平有效)——读输入信号;CS(低电平有效)——片选输入信号;A0、A1——片内寄存器选择输入信号;PA7~PA0——A口外设双向数据线;PB7~PB0——B口外设双向数据线;PC7~PC0——C口外设双向数据线;RESET——复位输入信号8255工作方式控制字和C口按位置位/复位控制字格式如上图所示:图2.18255引脚图88253的基本功能(1)3个独立的16位计数器,最大计数范围为0~65535;(2)每个计数器均可以按二进制或二—十进制计数;(3)计数器速率可达2MHz;(4)可编程6种不同的工作方式;(5)所有输入和输出都与TTL兼容。8253具有较好的通用性和使用灵活性,几乎适合于任何一种微处理器组成的系统。8253的内部结构图8253的工作方式(1)、方式0——计数结束中断方式(2)、方式1——可编程的单稳态触发器图7.18253的内部结构示意图CW=10LSB=4WRCLKGATEOUT43210FFa.方式0正常计数CW=10LSB=4WRCLKGATEOUT43210FFa.方式0正常计数9(3)、方式2——比率发生器、分频器(4)、方式3——方波发生器(5)、方式4——软件触发选通方式(6)、方式5——硬件触发选通方式8253的控制字图7.6(a)方式2正常计数图7.7(a)方式3计数值为偶数时的波形图7.9(a)方式5正常计数CW=14LSB=3WRCLKGATEOUT3213213a.方式2正常计数CW=14LSB=3WRCLKGATEOUT3213213a.方式2正常计数32143CW=16LSB=4WRCLKGATEOUT42143a.方式3计数值为偶数时的波形32143CW=16LSB=4WRCLKGATEOUT42143a.方式3计数值为偶数时的波形CW=18LSB=3WRCLKGATEOUT3210FFa.方式4正常计数CW=18LSB=3WRCLKGATEOUT3210FFa.方式4正常计数103.系统软件设计3.1系统主程序的设计主程序中主要是通过初始化8255,然后将PA口设置成为输出口,将PA口与LED灯连接起来。首先判断开关是否有打开,当开关没有打开的时候就在不停地等待开关打开。当开关打开后,就立刻进入赋值状态。即将PA口的输出为10100101B。通过延时子程序,使这个状态保持20S,然后灯自动变成另外一个状态,即PA口的输出变成01011010B。然后这样子不断地重复,使灯的状态在不停地变化。113.2延时子程序的设计为了追求定时的准确性,本程序放弃了软件延时的方法,改用8253定时。这样,就能够使定时更为准确,出现错误的机会也会更小