您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 交通信号灯实时控制系统设计报告1
第一章设计课题要求1.1设计目的随着社会经济的发展,城市交通问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。交通灯控制系统是用于城市交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。随着城市机动车量的不断增加,许多大城市如北京、上海、南京等出现了交通超负荷运行的情况,因此,自80年代后期,这些城市纷纷修建城市高速道路,在高速道路建设完成的初期,它们也曾有效地改善了交通状况。然而,交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。而城市高速道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。所以,如何采用合适的控制方法,最大限度利用好耗费巨资修建的城市高速道路,缓解交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的问题。通过本实验:⒈掌握交通信号灯实时控制系统的设计思想与实现方法。⒉掌握定时/计时器和并行接口在实时控制系统中的应用。⒊加深对定时/计时器和并行接口芯片的工作方式和编程方法的了解。1.2设计任务设计制作一个交通信号灯实时控制系统。要求:⒈在一个十字路口的一条主干道和一条支干道上分别装一套红,黄,绿3种信号灯;用钮开关模拟十字路口的车辆检测传感器信号。⒉在一般情况下,主干道上的绿灯常亮,而支干道上总是红灯。⒊当检测到支干道上来车时(用按键开关模拟),主干道的绿灯转为黄,持续4秒后,又变成红灯,同时支干道由红灯变为绿灯。⒋支干道绿灯亮后,或者检测到主干道上来了3辆车(用3个钮子开关模拟),或者虽未来3辆车,但绿灯已持续了25秒,则支干道立即变为黄灯,4秒后转为红灯,同时主干道由红灯变为绿灯。1.3实验设备器材⒈80X86系列微机一台。⒉微机硬件实验平台。⒊定时/计时器和并行接口芯片。⒋按键开关1个(单脉冲源),钮子开关(高低电平开关)3个及红,黄,绿发光二极管(即实验平台上的三色显示灯)。第二章总体设计方案及其流程图2.1基本工作原理根据实验任务要求,在本实验系统中,微机需要检测4个开关送来的主,支干道车辆到达信号,并按一定的条件发出主,支干道6个信号灯的控制信号。显然,用一片8255A足以满足上述要求。对8255A各端口不妨作如下安排:令端口B工作于方式0的无条件数据输出方式,用以控制交通灯的亮灭;端口C工作于方式0的输入方式,一方面当支干道上有车来时(用pc1,pc2,pc3,pc4控制),控制主,支干道交通灯变换状态。另一方面pc7用来检测8253A是否已经产生了1秒的脉冲,用来控制相应的程序。有关定时/计时器的功能,可以采用8253计时/定时器结合中断服务程序计数的方法来实现。可设想用8253来产生秒时钟信号,为此可以设置8253的定时器0工作方式3(方波方式),定时器2工作于方式2(分频方式),并将定时器0的输出端接到定时器1的时钟端T4。这样,就可以做到让定时器0每隔10ms向定时器1发出一个计数脉冲,而当定时器1计满100个数时,向主机发出一次中断请求信号,于是就实现了每隔1s发出一次中断请求的功能。然后在时钟中断服务程序中对秒信号作相应的计数。(通道0接10KHZ的方波脉冲源)。对于LED灯只要给予各灯高电平就能实现各灯的正常工作(亮)。2.2硬件的总计设计2.2.1硬件电路设计各芯片主要管脚的功能如下:8255A:PB0:表示主干道红灯信号,其中1表示亮,PB1:表示支干道红灯信号,其中1表示亮PB2:表示主干道黄灯信号,其中1表示亮PB3:表示支干道黄灯信号,其中1表示亮PB4:表示主干道绿灯信号,其中1表示亮PB5:表示支干道绿灯信号,其中1表示亮PC0~PC3:用来模拟支道上车的信号PC7:做标志信号,1表示计数器已经产生了一秒的脉冲8253A:定时器0:输入接在T4,工作在方式3,计数初值为1000OUT0和PC0相与得到黄灯信号。定时器2:输入信号为OUT0,工作在方式2,计数初值为100。2.2.2所用到的芯片及其各自功能说明2.2.2.18255的功能简介8255A是Intel系列的并行接口芯片。由于它是可编程的,可以通过软件来设置芯片的工作方式,所以,用8255A连接外部设备时,通常不需要再附加外部电路,给使用到来很大的方便。8255A有三个8位数据端口,即端口A、端口B、端口C。设计人员可以用软件使它们分别作为输入端口或输出端口。8255A可以通过指令在控制端口中设置控制字来决定它的工作。控制字分为两类:1、各端口的方式选择控制字:它可以使8255A的3个数据端口工作在不同的工作方式。方式选择控制字总是将3个数据端口分为两组来设定工作方式,即端口A和端口C的高4位作为一组,端口B和端口C的低4位作为一组。(图2.1)图2.12、C端口按位置1/置0控制字:它可以使C端口中的任何一位进行置位或复位。第7位称为标识位,方式选择控制字的第7位总是1;而端口C置1/置0控制字的第7位总是0。8255A的三种工作方式:方式0:基本的输入/输出方式方式1:选通的输入/输出方式方式2:双向传输方式②端口A可以工作在3种工作方式中的任何一种,端口B只能工作在方式0或方式1,端口C则常常配合端口A和端口B工作,为这两个端口的输入/输出传输提供控制信号和状态信号。③归为同一组的两个端口可以分别工作在输入方式和输出方式,并不要求同为输入方式或同为输出方式。而一个端口具体到底作为输入端口还是输出端口,这也由方式选择控制字来决定。2.2.2.28253A的功能简介Intel8253是一种具有计数和定时的芯片,被称为可编程间隔定时器。8253内部具有3个独立的16位计数器通道(分别为通道0,1,2),通过对它进行编程,每个计数器通道均可按6种不同的方式工作,并且都可以按2进制或十进制格式进行技术,最高计数频率能达到2Mhz。8253A可以通过指令在控制端口中设置控制字来决定它的工作。(图2.2)D7D6D5D4D3D2D1D000计数器000计数器锁存读命令000方式0D0=0按二进制格式计数01计数器101只读/写低字节001方式1D0=1按BCD码格式计数10计数器210只读/写高字节*10方式211非法11先读/写低字节*11方式3,后读/写高字节100方式4101方式5SC1SC0RW1RW0M2M1M0BCD图2.28253A有6种工作方式:1.方式0:计数结束则中断当将某计数器设置成方式0后,其输出OUT变低电平,装入初值后,仍保持低电平。门控为高电平开始计数。每来一个计数脉冲CLK,计数器的值减1,当计数到达终点即计数器的值变成0时,OUT变为高电平。在计数期间可用门控信号暂停计数(即门控为低电平时,计数暂停)。出端OUT由低变高可以用来作为中断请求信号(正是由于这种作用,许多教材中称方式0为完成计数时中断),也可作为查询信号,也可直接去控制某个操作,如让某个开关动作。2.方式1:单脉冲发生器即可编程单脉冲发生器所谓单稳,是指这样的电路,它有两种状态,但只能稳定在一种状态。在一定的外界作用下,它能从这一种状态进入到另一种状态,但经过一定时间后,又自动恢复到原来的状态。3.方式2:速率波发生器方式2用来对输入脉冲(即计数脉冲CLK)N分频(N为预置的初值),在输出信号周期中低电平的时间为一个CLK周期。设置此方式后,OUT变高电平,装入初值后便自动开始计数,减到1时OUT变低电平。经过一个CLK周期,OUT恢复高电平,且计数器又自动装入初值,重新开始计数。如此循环下去。若GATE变低电平将禁止计数,并使输出为高电平。在GATE再次变高电平时,计数器将重新装入预置的初值,并开始计数。4.方式3:方波发生器方式3类似于方式2,输出是周期性的。不同的是方式3输出方波。如果预置的初值N为偶数,则输出周期中高电平和低电平的宽度相等;如果N为奇数,则输出周期中高电平比低电平多一个CLK周期的时间,当N相当大时,也可认为是方波。当然,一般采用方式3时,置初值为偶数。设置成方式3后,OUT变高电平,装入初值后便自动开始计数。如初值为偶数,每个CLK使计数器减2,计到终点改变电平。如初值为奇数,则输出为高电平时第一个CLK使计数器减1,随后每个CLK使计数器减2;输出为低电平时第一个CLK使计数器减3,随后每个CLK使计数器减2。每当计数到终点都会改变电平,初值又被重新装入,并开始计数。如此循环下去,5.方式4:软件触发方式计数设置成方式4后,OUT变高电平,写入计数值后自动开始计数(所以称之为软件触发),计数到终点输出一个CLK周期的低电平脉冲。GATE变低可暂停计数,用GATE的上升沿可重新赋初值,并开始计数。6.方式5:硬件触发方式计数设置成该方式后,OUT变高电平,写入计数值后需等待GATE上升沿的到来才开始计数(所以称之为硬件触发)。计数到终点也输出一个CLK周期的低电平脉冲。计数过程中不受GATE电平的影响。此后,用GATE的上升沿可重新赋初值,并开始计数。2.2.3硬件框图根据上面的分析可得下列硬件部分的流程框图(图2.3)2.3软件总体设计根据上面分析可得下列的软件流程图,主程序流程图如图2.4,微机扩展总线8255PBPC7PC1PC2PC3PC48253CLK0OUT0CLK2OUT2译码电路分频电路发光二极管开关状态信号T4图2.3第三章典型程序模块及典型编程技巧分析3.1计数模块为了实现本次设计要求的秒计数功能,软件编程8253A的定时器0工作方式3(方波方式),定时器1工作于方式0(分频方式),并将定时器0的输出端接到定时器1的时钟端。这样,就可以做到让定时器0每隔10ms向定时器1发出一个计数脉冲,而当定时器1计满100个数时,会产生一个高电平信号,用8255A的一个端口来检测这个信号,每隔1秒跳转到子程序实现倒计时每次减一运算,然后送显示。具体程序如下:;定时器0工作方式3(方波方式)10msmovdx,223hmoval,16h;控制字outdx,almovdx,210hmoval,64houtdx,al;定时器2工作方式2(分频方式)100个数movdx,223hmoval,54h;控制字outdx,almovdx,221hmoval,00001010boutdx,al3.2倒计时模块不管是支道还是主道上的黄灯闪烁4秒后必将变成绿灯或者是红灯,建一个DATA1存放字模,实现用数码管显示剩余时间。首先让BX指向DATA1首地址,将计数器中当前DL中的值赋给AL,通过检测8255A的pc7端口是否有高电平,检测到后进行减一然后在DATA1中找出相应的字模进行显示。第四章设计中存在的问题设计中具体出现的问题有:起初设置时将8255A的片选基地址粗心的弄错,B端口的片选基地址应为:0FF29H,C端口的片选基地址应为:0FF2AH.在设置红绿黄灯的亮灭时,实际程序是从PB0-PB7顺序来的,而我们设置时去想像成PB7,PB6…PB0来的,所以在刚开始实验时总是感觉灯的亮灭有些颠倒次序.实验中曾出现了运行到红绿灯的第2个转换状态时,此时由于有绿灯到红灯之间的切换需要调用黄灯闪的子程序,实验箱上从此处开始会一直在黄灯子程序的状态之间变换显示.刚开始我们一直在查找是不是黄灯子程序在返回跳转上有问题,但是经过反复修改还是不行,最终发现是:MOVAL,10000111BOUTDX,ALCALLDISPMOVDX,IOCPT(此处起先未设置,应设置,因为这是调用的黄灯子程序,而他是由B口控制的和红绿灯的C口不是同一个状态口,既调用黄闪子程序时DX中的值被重新写入了,所以在重新使用C端口命令时要调用这一命令语句,将C口的地址重新写入,才可正确运行下去。)MOVAL,00101101B第五章源程序CODESEGMENTASSUMECS:CODEORG11A0HSTART:CALLFORMATCALLDISPMOVDX,43HMOVAL,00110111B;写8253控制字OUTDX,ALMOVDX,40H;通道0工作
本文标题:交通信号灯实时控制系统设计报告1
链接地址:https://www.777doc.com/doc-3296725 .html