交通信号灯控制系统_交通信号灯智能控制

2020-02-28 其他范文 下载本文

交通信号灯控制系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“交通信号灯智能控制”。

山西大学工程学院 第I页

摘要

随着中国城镇化速度的较快,交通事故也日趋发生,所以合理的交通控制方法能有效的缓解交通拥挤、减少尾气排放及能源消耗、缩短出行延时,改善我国独有的交通问题。而平面交叉口是城市交通的关键,它是整个城市道路的瓶颈地带,对其进行交通信号控制方法的研究具有重大意义,所以交通信号灯是维护城市交通的主要设施。

我们本次复杂的十字路口交通灯控制系统设计主要是利用AT89C51制作并仿真.并且在单片机的选择上,考虑到电路的简单和成本的削减,我们选择性价比最好的AT89C51,而且能够使程序简单。可以添加恰当的传感器,实时监控道路情况,对各种情况的处理实行紧急情况优先级最高,其次行人优先通过,最后车流量高的方向,给予更多的通过时间,采用中断的方法,由中断根据各种不同的情况选择合适的处理程序处理。通过单片机控制交通灯不仅能提高我们理论联系实际的能力,而且能够熟练掌握C语言的编程方法,掌握定时/计数器、外部中断的使用方法和简单程序的编写,最终提高逻辑抽象能力和动手能力。

关键字:AT89C51

中断

交通信号控制

山西大学工程学院 第II页

目录1 社会需求.........................................错误!未定义书签。2 设计目的.........................................错误!未定义书签。3 设计思路及框图....................................................1 3.1 交通灯设计..................................................1 3.2 交通灯定时控制..............................................2 3.3 传感器智能控制..............................................4 4 硬件电路设计......................................................4 4.1 单片机电源电路..............................................4 4.2 单片机复位电路..............................................4 4.3 交通LED灯外围驱动电路......................................5 4.4 按键控制电路................................................6 4.5 单片机主电路................................................7 4.6 整体电路图设计..............................................8 5 软件设计..........................................................9 5.1 系统程序流程图设计..........................................9 5.2 系统程序设计...............................................10 5.3 仿真显示结果...............................................17 总 结.............................................................17 参考文献...........................................................18

山西大学工程学院 第1页

1社会需求

目前在世界范围内,一个以微电子技术、计算机和通信技术为先导的,以信息技术和信息产业为中心的信息革命方兴未艾。为使我国尽快实现经济信息化,赶上发 达国家水平,必须加速发展我国的信息技术和信息产业。而计算机技术怎样与实际应用更有效的结合并有效的发挥其作用是科学界最热门的话题,也是当今计算机应 用中空前活跃的领域。本文主要从单片机的应用上来实现十字路口交通灯的管理,用以控制过往车辆的正常运作。设计目的本设计首先从定时控制着手,解决交叉口交通控制过程中存在的问题,但是定时控制信号周期固定,不能根据实际的交通流状况随时调整信号控制参数,因此造成很多不必要的时间等待和资源浪费。对左转车辆较少的单交叉口一般采用有固定左转相位的定时控制方法,此信号控制中的左转车辆通行对直行车辆影响很大。行人过街信号与上游交叉口的不协调导致车辆通过上游交叉口后遇到行人过街而再次停车。基于上述交叉口信号控制存在的问题,本设计进行了如下研究:①介绍了常用定时信号控制算法和感应信号控制的基本工作原理,分析了传统定时控制的优越性和局限性。②设计了一种自动信号控制方法,这种方法能使交叉口根据实际交通情况选择合理的定时信号配时方案,不过这个需要配备额外的感应器。

本设计将要完成红灯停,绿灯行,黄灯停3S的操作,并且如当一道有车而另一道无车是,交通灯控制系统能立即让有车的车道放行,单人行道上人数较多时,智能转换交通灯状态,行人优先通过,当有紧急车辆(如110、112、119等急救车)要求通过时,此系统应能禁止普通车辆通行,路口的信号灯全部变红,以便让紧急车辆通过。假定紧急车辆通过时间为2s,紧急车辆通过后,交通灯恢复先前状态。

3设计思路及框图 3.1交通灯设计

首先了解实际交通灯的变化情况和规律。设有一个南北(SN)向和东西(WE)向的十字路口,两方向各有两组相同交通控制信号灯,每组各有四盏信号灯,分别为直行信号灯(S)、左拐信号灯(L)、红灯(R)和黄灯(Y),交通控制信号

山西大学工程学院 第2页

灯布置如图1所示。

根据交通流量不同,交通信号灯的控制可实现手动、自动两种控制。平时使用自动控制,高峰区可使用传感器智能化控制。智能控制时,传感器通过检测道路交通情况对交通信号灯进行实时控制;自动控制时,交通信号灯控制规律用图2状态转换图来描述。

图1

红绿灯显示系统框图

3.2交通灯定时控制

图2

红绿灯系统控制流程图

山西大学工程学院 第3页

定时控制系统控制流程图如上图2,初始状态0为SN直行WE红灯,然后转状态1为SN黄灯WE红灯。过一段时间后,转状态2为SN左拐WE红灯。再转状态3,SN黄灯WE红灯。过一段时间后转状态4,SN红灯WE直行。然后状态4,SN红灯WE直行。状态5为SN红灯WE黄灯。状态6为SN红灯WE左拐。状态7为SN红灯WE黄灯。又循环至状态0,重复循环上述状态。

3.3传感器智能控制

图3 磁检测器方框图

交通灯在采用智能化控制时,采用磁感应车辆检测器.这种环形线圈检测器是传统的交通检测器,是目前世界上用量最大的一种检测设备。这些埋设在道路表面下的线圈可以检测到车辆通过时的电磁变化进而精确地算出交通流量。交通流量是交通统计和交通规划的基本数据,通过这些检测结果可以用来计算占用率(表征交通密度),在使用双线圈模式时还可以提供速度、车辆行驶方向、车型分类等数据,这些数据对于交通管理和统计是极为重要的,可通过分析这些数据,然后通过外部中断动态控制交通灯的状态,实现道路交通灯的智能化控制,让交通灯根据实际情况转换状态。原理框图如上图图3所示。

对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,所以可以用一个I/O控制相同的两灯,因此,采用单片机内部的I/O口上的P0口中的8个引脚即可来控制16个信号灯。通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。通过定时器精确延时送显,在原有的交通信号灯系统的基础上,增添其倒计时间的显示功能,实现其功能的扩展。通过添加感应器检测车流量、人行道情况通过外部中断动态调节人、山西大学工程学院 第4页

车流量,使交通更加智能,提高道路运行速率。硬件电路设计 4.1单片机电源电路

图4 电源电路

如上图图4所示是电源电路,这里开关用的双路开关,双路开关并联能更好的确保给后级提供更大电流。电容C4、C5,都是隔离断开直流的,在这里添加了一个发光二极管指示灯,在我们打开开关的时候,这个二极管会亮,下面的R12为限流电阻,给发光二极管提供合适的电流。

4.2 单片机复位电路

单片机的复位操作有上电自动复位和手动按键复位两种方式。本次设计采用手动按键复位设计,如下图5所示。

图5 按键复位电路

当这个电路处于稳态时,电容起到隔离直流的作用,隔离了+5V,而左侧的山西大学工程学院 第5页

复位按键是弹起状态,下边部分电路就没有电压差的产生,所以按键和电容 C1 以下部分的电位都是和GND 相等的。按键复位有 2 个过程,按下按键之前,RST 的电压是 0V,当按下按键后电路导通,同时电容也会在瞬间进行放电,会处于高电平复位状态。当松开按键后,先是电容充电,然后电流逐渐减小直到 RST 电压变 0V 的过程。按下按键的瞬间,电容两端的 5V 电压会被直接接通,此刻会有一个瞬间的大电流冲击,会在局部范围内产生电磁干扰,为了抑制这个大电流所引起的干扰,在电容放电回路中串入一个 18 欧的电阻来限流。

4.3 交通LED灯及外围驱动电路

图6交通LED灯电路

将NS道上的两个同色灯连在一起,WS道上的同色灯也彼此相连(此处用发光二极管模拟实际的交通灯,各发光二极管的阳极通过保护电阻接到+5v的电源上,发光二极管的阴极接到单片机的P0口)用AT89C51单片机的P0.0—P0.7共8根输出线控制各色交通灯的点亮与熄灭;为了更加直观的显示红绿灯的情况,用了共阳极数码管显示倒计时,数码管显示有动态扫描和静态显示,由于静态显示需要占用过多的IO口,这里用动态扫描,用P1控制数码管的断选信号端,P2.6、P2.7控制数码管的位选信号端,可以显示出每个灯的倒计时。紧急车辆通过时,采用外部触发按键实时中断方式进行处理。根据该系统的功能要求及所用元器件,设计硬件电路,电路原理图如图6所示。

由于单片机的输出电流有限,需要用到芯片驱动LED,使LED可以正常使用,这里使用74LS245,74LS245是一个双向缓冲器,引脚AB是方向引脚,这

山西大学工程学院 第6页

个引脚为高电平的时候,右侧所有的电压都等于左侧对应编号的电压,所以这里AB引脚接的+5V电源,即高电平。图中还有排阻RP1做为上拉电阻。引脚OE为输出使能端,低电平有效。在74LS245输出端有R3~R10的限流电阻,给LED灯提供恰当的电流。

在LED的阳极接有PNP三极管,可以通过单片的P2.5控制所有的LED的通断,只有P2.5端电平为高时LED才能正常工作,通过单片机的P0口控制LED的状态。数码管的显示也需要大电流,这里外接上拉电阻可以提供足够的电流,原理图中用了排阻RP2,可以使数码管正常工作。交通LED灯驱动电路如图7所示。

图7 交通LED灯驱动电路

4.4 按键控制电路

图8 按键控制LED电路图

山西大学工程学院 第7页

智能化控制中使用到传感器,传感器采集到的数据通过系统分析,然后反馈到单片机外部中断,通过中断程序选择合适的处理程序。

整个交通灯控制系统通过按键模拟控制LED的状态,SW1控制LED是定时循环还是智能控制,SW2控制LED灯是顺序切换状态还是手动选择LED状态。SW1按下触发外部中断0进去中断程序,在中断程序中可以通过查询方式判断P3.7是否按下,如果检测到P3.7为低电平则SW2按键按下,系统进入只能控制LED状态模式,单片机通过检测P2.0~P2.3的电平状况确定LED灯要显示的状态,例如:若单片机检测到端口P2.0电平为低,则要求交通灯要WE方向左拐,系统调用左拐子程序,使单片机控制LED灯先NS黄灯闪3下,然后NS红灯亮,WE左拐指示灯变绿。如果系统监测到P3.7为高电平则SW2弹起,系统进入只能顺序切换模式,单片机检测P2.4的电平情况,检测到一次说明按键按下一次,交通的按照定时方式的顺序变换状态,使交通灯稳定顺次执行。

如果遇到十字路口发生交通事故,可以触发紧急逼停按键,这样四个方向都为红绿灯,等突发情况处理完毕后,然后根据实际情况选择合适的处理程序。这样可以根据实际的车、人流量动态调节交通灯,智能解决各种突发情况,按键控制电路如图8所示。

按键消抖有两种方式:硬件消抖和软件消抖,硬件消抖需要引进RS触发器或者单稳态电路,这需要额外的硬件开支,而软件消抖只需要用延时函数就可以完成,因此这里选择软件消抖。

4.5 单片机主电路

采用这款芯片及克服了采用8031需要添加外部外部程序存储器导致电路复杂的缺点,又克服了采用8751导致电路制作成本高的缺点,AT89C51单片机芯片具有以下特性:

1)指令集合芯片引脚与Intel公司的8051兼容; 2)4KB片内在系统可编程FLASH程序存储器; 3)时钟频率为0~33MHZ;

4)128字节片内随机读写存储器(RAM); 5)6个中断源,2级优先级; 6)2个16位定时/记数器;

山西大学工程学院 第8页

图9 单片机引脚结构图

4.6 整体电路图设计

图10 AT89C21单片机交通灯控制电路

本次设计采用AT89C51单片机,其中P0.0—P0.8共8根输出线控制各色交通灯的点亮与熄灭,通过外部中断0控制交通灯的切换方式,端口P3.7控制在山西大学工程学院 第9页

智能模式下是顺次转换状态还是动态选择,在顺序转换模式下P2.4控制交通灯的状态转换。在动态模式下,根据传感器分析数据结果,通过P2.0~P2.3控制交通的的各种状态。P1和P2.7、P2.6控制数码管的显示,可以直观的看到交通灯的状态。在传感器检测某一方向车流量过多,或者人行道上滞留行人过多,或有紧急车辆通过时,采用外部触发中断实时中断方式进行处理,这时可按下SW1、SW2两按键,然后智能选择交通灯的状态,选择合适的交通灯,让滞留过多的方向通过时间长点,让道路更加通畅。上图10为整个交通灯控制系统的整体电路图。软件设计

5.1 系统程序流程图设计

开始各变量、端口初始化主程序显示子程序N中断信号Y中断子程序

图11 交通控制系统程序流程图

根据硬件电路原理图,并按系统的功能画出程序流程图。由于此系统较为简单,故采用自上而下的设计方法,进行程序设计;对传感器分析的数据处理,采用中断的方法,由中断选择合适的处理程序处理,在传感器不工作的时候,可以返回主程序执行。程序流程如下图11所示。

设计中断处理程序时,最主要的地方是如何保护进入中断前的状态(信号灯、P

山西大学工程学院 第10页

口、单片机寄存器的状态),使得中断程序执行完毕后能问到交通灯中断前的状态。除了保护累加器ACC、标志寄存器PSW外,还要注意主程序中的延时程序和中断处理程序中的延时程序不能混用。

5.2 系统程序设计

如下所示为整个系统控制程序:

#include unsigned int count=0;unsigned int count1=0;unsigned char count2=0;unsigned char count3=0;

//延时计数

//按键次数计数

//数码管显示数值

//定时1秒计数

unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x7f};//共阳极数码管显示编码

unsigned char disdata[4];sbit NSL=P0^0;sbit NSS=P0^1;

//NS左拐指示灯 //NS直行指示灯 //NS红灯指示灯 //NS黄灯指示灯 //WE黄灯指示灯 //WE红灯指示灯 //WE直行指示灯 //WE左拐指示灯 //控制所有LED的灭 //数码管位选端 //数码管位选端 sbit NSR=P0^2;sbit NSY=P0^3;sbit WEY=P0^4;sbit WER=P0^5;sbit WES=P0^6;sbit WEL=P0^7;sbit P2_5=P2^5;sbit P2_6=P2^6;sbit P2_7=P2^7;sbit Key_1=P2^4;sbit Key_2=P2^3;sbit Key_3=P2^2;sbit Key_4=P2^1;sbit Key_5=P2^0;sbit Key_6=P3^7;

//手动切换LED灯状态

//选择NS直行

//选择WE直行

//选择NS左拐

//选择WE左拐

//选择顺序、随机切换

sbit Key_7=P3^6;

//突发情况,四个方向全部红灯 void Time0_Int()

{

//定时器0初始化

TMOD=0x01;TR0=1;EA=1;

山西大学工程学院 第11页

} ET0=1;IT0 = 0;EX0 = 1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;

//延时 m 毫秒 void Delay(unsigned int m){

} void NS_stra(){

} void NS_turn(){

} void NS_stop(){

} void WE_stra(){

} void WE_turn(){

} void WE_stop(){

unsigned int i,j;for(i=m;i>0;i--)for(j=110;j>0;j--);

//NS直行,WE红灯

NSL=1;NSS=0;NSR=1;NSY=1;WEL=1;WES=1;WER=0;WEY=1;

//NS左拐,WE红灯

NSL=0;NSS=1;NSR=1;NSY=1;WEL=1;WES=1;WER=0;WEY=1;

//NS黄灯,WE红灯

NSL=1;NSS=1;NSR=1;NSY=0;WEL=1;WES=1;WER=0;WEY=1;

//WE直行,NS红灯

NSL=1;NSS=1;NSR=0;NSY=1;WEL=1;WES=0;WER=1;WEY=1;

//WE左拐,NS红灯

NSL=1;NSS=1;NSR=0;NSY=1;WEL=0;WES=1;WER=1;WEY=1;

//WE黄灯,NS红灯

山西大学工程学院 第12页

NSL=1;NSS=1;NSR=0;NSY=1;WEL=1;WES=1;WER=1;WEY=0;} void Opera_NS_stra()

{ if(Key_2==0){

Delay(10);

if(Key_2==0)

{

WE_stop();

Delay(3000);

NS_stra();

}

while(Key_2==0);} } void Opera_WE_stra()

{ if(Key_3==0){

Delay(10);

if(Key_3==0)

{

NS_stop();

Delay(3000);

WE_stra();

}

while(Key_3==0);} } void Opera_NS_turn()

{ if(Key_4==0){

Delay(10);

if(Key_4==0){

//手动选择NS直行

//手动选择WE直行

//手动选择NS左拐

山西大学工程学院 第13页

}

}

} WE_stop();Delay(3000);NS_turn();while(Key_4==0);void Opera_WE_turn(){

}

void Opera_Red(){

}

void Choose(){

//手动选择WE左拐

if(Key_5==0){

}

//手动选择WE左拐 Delay(10);if(Key_5==0){

}

while(Key_5==0);NS_stop();Delay(3000);WE_turn();if(Key_7==0){

} Delay(10);if(Key_7==0){

}

while(Key_7==0);NSY=0;WEY=0;Delay(3000);WER=0;NSR=0;

//数码管显示初值判断程序

山西大学工程学院 第14页

if(count==10||count==470||count==930||count==1390){ } if(count==410||count==870||count==1330||count==1790)count2=20;

//判断为绿灯,数码管倒计时初值为20秒

{

count2=3;

} if(count3==20)

{

count2--;

count3=0;} }

void Ledshow()

{

disdata[0]=(count2%10);

disdata[1]=(count2/10);

P2_6=0;P2_7=1;P1=0x00;

P1=table[disdata[0]];

Delay(10);

P2_7=0;P2_6=1;P1=0x00;

P1=table[disdata[1]];

Delay(10);} void Auto()

{ if(count>10&&count

{

NS_stra();Ledshow();} if(count>410&&count

NS_stop();Ledshow();} if(count>470&&count

//判断为黄灯,数码管倒计时初值为3秒

//定时1秒,每隔一秒倒计时减一

//数码管显示程序

//十位显示的数值

//个位显示的数值

//自动转换LED灯状态,绿灯20秒,黄灯3秒

//NS直行指示灯显示20秒,数码管倒计时显示

//NS黄色指示灯显示 3秒,数码管倒计时显示 //NS左拐指示灯显示20秒,数码管倒计时显示

山西大学工程学院 第15页

} NS_turn();Ledshow();if(count>870&&count

//NS黄色指示灯显示 3秒,数码管倒计时显示

{

NS_stop();Ledshow();} if(count>930&&count

WE_stra();Ledshow();} if(count>1330&&count

WE_stop();Ledshow();} if(count>1390&&count

WE_turn();Ledshow();} if(count>1790&&count

WE_stop();Ledshow();} if(count>1850){

count=0;} } void main()

{ Time0_Int();P2_5=1;while(1){ Auto();Choose();

} }

//WE直行指示灯显示20秒,数码管倒计时显示

//WE黄色指示灯显示 3秒,数码管倒计时显示 //WE左拐指示灯显示20秒,数码管倒计时显示 //WE黄色指示灯显示 3秒,数码管倒计时显示

//主函数

山西大学工程学院 第16页

void Time0()interrupt 1 {

}

//定时50ms TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;count++;count3++;void Interrput0()interrupt 0

//外部中断0,用按键手动切换LED灯状态 {

while(Key_6==0){

} P2_7=0;P2_6=0;if(Key_1==0){

} switch(count1){

case 1 :NS_stra();break;case 2 :NS_stop();break;case 3 :NS_turn();break;case 4 :NS_stop();break;

//根据按下的次数选择显示状态 Delay(10);if(Key_1==0){ } while(Key_1==0);count1++;

//检测按键按下次数 Delay(10);while(Key_6==0){

} Opera_NS_stra();Opera_WE_stra();Opera_NS_turn();Opera_WE_turn();

//判断是顺序,随机显示

Opera_Red();

山西大学工程学院 第17页

}

} case 5 :WE_stra();break;case 6 :WE_stop();break;case 7 :count1=1;break;default: break;

5.3 仿真结果显示

NS直行

NS左拐 NS黄灯

WE直行 WE左拐 WE黄灯

通过Protues对整个电路和程序仿真,仿真结果如上图,启动电源后,交通灯先按照定时方式按照变换程序依次变换,同时数码管显示倒计时。在传感器检测道路情况后并分析,把结果传给单片机,通过外部中断切换交通灯的变换状态,这里用按键模拟传感器检测到的结果,可以实现根据检测到的流量情况不同,对交通灯实时变换,按照行人优先、高流量方向长时间放行设计,基本上达到了设计要求。

通过本次课程设计,我们在收获知识的同时,还收获了阅历,收获了成熟.。在此过程中,我们通过查找资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑

山西大学工程学院 第18页

战,只有不断的学习、实践,再学习、再实践。使用Protues和Keil作为我们的设计工具,很好地锻炼自己的语言编程能力和软件仿真能力,养成良好的语言编程风格和模拟操作方式。不管怎样,这些都是一种锻炼,一种知识的积累,能力的提高。完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。当然,我们还存在着很多不足,设计中有很多还完善的地方,期望以后可以做得更好

参考文献

【1】《手把手教你学 51 单片机-C 语言版》--金沙滩工作室宋雪松编著,清华大学出版社。

【2】《单片机原理与应用及C51程序设计》—杨家国、谢维成,清华大学出版社。

【3】肖洪兵.跟我学用单片机[M].北京:北京航空航天大学出版社,2002.8. 【4】徐惠民、安德宁. 单片微型计算机原理接口与应用[M].第1版.北京:北京邮电大学出版社,1996.【5】于凤明.单片机原理及接口技术[M].北京:中国轻工业出版社.1998. 【6】陈伟人.单片微型计算机原理与应用[M].北京:清华大学出版社, 2006.5.【7】赵晓安.MCS-51单片机原理及应用[M].天津:天津大学出版社,2001.3. 【8】《单片机原理与接口技术》--牛昱光、李晓林等编著,电子工业出版社

《交通信号灯控制系统.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
交通信号灯控制系统
点击下载文档
相关专题 交通信号灯智能控制 交通 控制系统 信号灯 交通信号灯智能控制 交通 控制系统 信号灯
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文