单片机控制交通灯

2024-06-03

单片机控制交通灯(精选十篇)

单片机控制交通灯 篇1

1 设计内容与要求

设计的此单片机控制的交通灯系统,能基本模仿城市“十字”路口交通灯的功能,具体设计要求如下:

(1)该设计能控制东、西、南、北四个道口的红、黄、绿信号灯正常工作;

(2)当东西方向准行,南北方向禁行时,东西方向亮绿灯,南北方向亮红灯;

(3)当南北方向准行,东西方向禁行时,南北方向亮绿灯,东西方向亮红灯;

(4)东西方向为主干道,准行时间为20秒;南北方向为次干道,准行时间是15秒;

(5)当主干道绿灯亮15秒时,主干道黄灯同时开始亮,以警告车辆及行人,准行方向与禁行方向即将改变,亮到5秒后,主干道开始亮红灯禁行,次干道亮绿灯准行;

(6)当次干道绿灯亮10秒时,次干道黄灯同时开始亮5秒,以警告车辆及行人,准行方向与禁行方向即将改变;

(7)四个道口均用数码管显示准行或禁行的时间;

(8)K1键是紧急键,当按下K1时四个方向均亮红灯,并且关掉数码管的显示,直到按下K2键交通灯又开始正常工作;

(9)K2键是开始键,当按下K2键时,四个方向信号灯解除紧急情况,开始正常工作。

2 单片机控制交通灯的总体设计思想

为了达到上述设计要求,用89C51的P0口(P0.0-P0.6)作为数码管的段选信号;P1口(P1.0-P1.4)接5个控制开关,分别起特殊控制作用;P2口(P2.0-P2.5)分别接上垂直两道口的12盏信号灯;P3.0,P3.1作为两位数码管的位选信号,P3.2作为接紧急情况开关。两个数码管的显示用动态显示的方法实现。

3 单片机控制交通灯的硬件结构设计

该单片机控制交通灯的硬件设计原理如图1所示。K0键为复位按键。在89C51单片机上,P0口(P0.0-P0.6)分别接上数码管的A,B,C,D,E,F,G端;P1口接5个特殊功能的开关,P1.0接开关K3对绿灯设置参数起增加作用,P1.1接开关K4起绿等参数减少的作用,P1.2接开关K5起黄灯参数增加的作用,P1.3接开关K6起黄灯参数减少的作用,P1.4接开关K2取消紧急情况。P2口接线为:P2.0,P2.1,P2.2分别接东西方向的绿,黄,红共6盏信号灯;P2.3,P2.4,P2.5分别接南北方向的绿,黄,红6盏信号灯。信号灯具体接法如表1所示。P3.0,P3.1作为两个数码管的位选信号。开关和紧急情况的设置均采用中断的方式。P3.3接与非门74LS20,采用外部中断实现键盘输入参数。P3.2设为高级优先级中断,以实现在现实生活中发生紧急情况能及时处理[1]。本设计所采用的数码管显示为两片共阳极数码管,用的是三极管驱动的方法,三极管采用的是PNP型管子。

4 单片机控制交通灯的软件设计

该单片机控制交通灯的软件设计主程序流程图如图1所示。该单片机控制交通灯的软件设计是顺序执行并反复循环的方法。其中数码显示电路运用动态显示的方法[2]。

5 测试数据及结果分析

当编完程序后,用WAVE6000进行软件调试,编译通过以后,又在PROTEUS里进行硬件连接,用PROTEUS进行硬软件的仿真。一切正常并满足设计的要求。仿真成功,交通灯工作一切正常,满足编程需要,符合设计要求。开始运行时,主干道绿灯亮,次干道红灯亮,数码管显示从14开始显示,当显示到00时,主干道亮绿灯的同时,黄灯也开始亮,次干道继续亮红灯,同时数码管从5秒开始显示,当显示到01时主干道红灯亮,黄灯灭,次干道亮绿灯,数码管从10秒开始显示当显示到01时主干道继续亮红灯,次干道黄灯开始亮,当显示到01秒时,主干道开始亮路灯,显示器显示14秒,次干道亮红灯。就这样连续循环。

K0键是复位键,起上电作用;K1键是积极键但按下K1键是四个路口全亮红灯,K2键是开始键解除紧急情况,红绿灯恢复正常。当按下K3键几次主干道路灯时间就会加几秒,K4键起到绿减作用;K5键按几下主干道黄灯时间就多几秒,K6键起到黄减作用,这四个键都是对主干道绿灯和黄灯时间进行调节的。

同时也可以实现对主干道红灯时间的调节。

在PROTEUS中仿真成功后,开始焊电路板,当电路连接完毕后,为保证电路板焊接正确,使用伟福H51/S进行仿真。工作一切正常。能够实现绿黄红灯交替显示,数码管显示也一切如设计的那样:通电后,主干道绿灯亮,次干道红灯亮,数码管显示从14开始显示,当显示到00时,主干道亮绿灯的同时,黄灯也开始亮,次干道继续亮红灯,同时数码管从5秒开始显示,当显示到01时主干道红灯亮,黄灯灭,次干道亮绿灯,数码管从10秒开始显示当显示到01时主干道继续亮红灯,次干道黄灯开始亮,当显示到01秒时,主干道开始亮路灯,显示器显示14秒,次干道亮红灯。就这样一直循环下去。

仿真结束后,将写好的测试程序刷写到芯片上通电即可测试,一切正常,实现功能如预期一致。

6 总结

由于使用单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较完善,而且可以随时的更新系统,进行不同状态的组合。

但是在设计和调试的过程中,也发现了一些问题,譬如在设计过程中有显示不正常的现象,在仿真过程中有时曾经出现过有些按键失灵的情况等等,这都是在平时实践太少的缘故,以后将多实践,多锻炼,把学到的东西与实践结合起来。

参考文献

[1]李朝青.单片机原理及接口技术:修订版[M].北京:北京航空航天大学出版社,1998.

单片机交通灯控制程序 篇2

//*****define led port ********** sbit R1=P2^4;//east and west red led sbit Y1=P2^3;//east and west yellow led sbit G1=P2^2;//east and west green led sbit R2=P2^5;//south and north red led sbit Y2=P2^6;//south and north yellow led sbit G2=P2^7;//south and north green led

//*********define key************** sbit k0=P3^0;//emergency sbit k1=P3^1;//east and west pass sbit k2=P3^2;//south and north pass sbit k3=P3^3;//start and subtract 1 sbit k4=P3^4;//pause and add 1 sbit k5=P3^5;//set time

//*********define variable********* bit flag,flag_t;uchar dx_time,nb_time;uchar cnt,pass_time,cnt1,y_time;uchar k0num,k1num,k2num,k3num,k4num,k5num;

//*********define key******** void delay(uint i){ uint x,y;for(x=i;x>0;x--)

for(y=110;y>0;y--);} void timer0_init(){ TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;}

void led_display(uchar dx,nb){ uchar dx1,dx2,nb1,nb2;dx2=dx/10;dx1=dx%10;nb2=nb/10;nb1=nb%10;if(dx>99){

led_w1=1;

led_w2=1;} else {

led_w1=0;

P0=table[dx1];

delay(5);

led_w1=1;

if(dx<10&&dx>0)led_w2=1;

else

{

led_w2=0;

P0=table[dx2];

delay(5);

led_w2=1;

} } if(nb>99){

led_w3=1;

led_w4=1;} else {

led_w3=0;

P0=table[nb1];

delay(5);

led_w3=3;

if(nb<10&&nb>0)led_w4=1;

else

{

led_w4=0;

P0=table[nb2];

delay(5);

led_w4=4;

} } } //*************light work********** void circle_led(){ if(!flag){

if(pass_time>5)

{

led_display(pass_time-5,pass_time);

R1=1;Y1=1;G1=0;

//east and west pass

R2=0;Y2=1;G2=1;

//south and north stop

}

if(pass_time<=5&&pass_time>0)

{

if(cnt>=10)led_display(pass_time,pass_time);

else led_display(100,pass_time);

R1=1;G1=1;

//east and west yellow led flash

if(cnt>=10)Y1=0;

else Y1=1;

R2=0;Y2=1;G2=1;

}

if(pass_time==0)

{

pass_time=nb_time;

flag=1;

} } else {

if(pass_time>5)

{

led_display(pass_time,pass_time-5);

R1=0;Y1=1;G1=1;

//east and west stop

R2=1;Y2=1;G2=0;

//south and north pass

}

if(pass_time<=5&&pass_time>0)

{

if(cnt>=10)led_display(pass_time,pass_time);

else led_display(pass_time,100);

R1=0;Y1=1;G1=1;

R2=1;G2=1;

//south and north yellow led flash

if(cnt>=10)Y2=0;

else Y2=1;

}

if(pass_time==0)

{

pass_time=dx_time;

flag=0;

} } }

void emergency()

//east and west,south and north stop { led_display(0,0);R1=0;Y1=1;G1=1;R2=0;Y2=1;G2=1;} void dx_pass()

//east and west pass,south and north stop { led_display(100,100);if(y_time<=5&&y_time>0){

TR1=1;

R1=0;Y1=1;G1=1;

R2=1;G2=1;

//south and north yellow led flash

if(cnt1>=10)Y2=0;

else Y2=1;} if(y_time==0){

TR1=0;

R1=1;Y1=1;G1=0;

R2=0;Y2=1;G2=1;} } void nb_pass()

//south and north pass,east and west stop { led_display(100,100);if(y_time<=5&&y_time>0){

TR1=1;

R1=1;G1=1;

if(cnt1>=10)Y1=0;//east and west yellow led flash

else Y1=1;

R2=0;Y2=1;G2=1;

} if(y_time==0){

TR1=0;

R1=0;Y1=1;G1=1;

R2=1;Y2=1;G2=0;} }

//***********keyboard scan************ void keyscan(){

if(!k5num)

{

if(k0==0)//*******emergency*******

{

delay(10);

if(k0==0)

{

while(!k0);

TR0=0;

k0num=1;

}

}

if(!k1num&&!k0num)

{

if(k1==0)

{

delay(10);

if(k1==0)

{

while(!k1);

k1num=1;

k2num=0;

y_time=5;//单方向通行时,黄灯闪烁时间

TR0=0;

TR1=1;

}

}

}

if(!k2num&&!k0num)

{

if(k2==0)

{

delay(10);

if(k2==0)

{

while(!k2);

k1num=0;

k2num=1;

y_time=5;//单方向通行时,黄灯闪烁时间

TR0=0;

TR1=1;

}

}

}

if(k3==0)

{

delay(10);

if(k3==0)

{

while(!k3);

if(k1num||k2num)pass_time=dx_time;//由东西或南北通行返回时,重新开始执行。

k0num=0;

k1num=0;

k2num=0;

k4num=0;

k5num=0;

TR0=1;

TR1=0;

flag_t=0;

}

} {

} if(!k4&&!k0num)

//pause { delay(10);if(k4==0){

while(!k4);

TR0=0;

k4num=1;} }

if(k4num==1)

//暂停键按下时,才可以调整两个方向通行时间 if(k5==0){ delay(10);if(k5==0){

k5num++;

while(!k5);

switch(k5num)

{

case 1:

TR0=1;

flag_t=1;//调整时间时,pass_time值不变。

k5num=1;

break;

case 2:

k5num=2;

break;

case 3:

TR0=0;

k5num=0;

pass_time=dx_time;//重新赋值

break;

} } } if(k5num!=0){ if(k3==0){

delay(10);

if(k3==0)

{

while(!k3);

switch(k5num)

{

case 1:

dx_time--;

if(dx_time<10)

break;

case 2:

nb_time--;

if(nb_time<10)

break;

}

}

}

if(k4==0)

{

delay(10);

if(k4==0)

{

while(!k4);

switch(k5num)

{

case 1:

dx_time++;

if(dx_time>=100)

break;

case 2:

nb_time++;

if(nb_time>=100)

break;

}

}

}

} } } void main(){ timer0_init();dx_time=45;nb_time=30;

dx_time=99;nb_time=99;dx_time=10;nb_time=10;

pass_time=dx_time;while(1){ keyscan();if(k0num)emergency();else { switch(k4num){

case 0:

if(!k1num&&!k2num)

circle_led();

else

{

if(k1num)dx_pass();

if(k2num)nb_pass();

}

break;

case 1:

switch(k5num)

{

case 0:

if(!k1num&&!k2num)

circle_led();

else

{

if(k1num)dx_pass();

if(k2num)nb_pass();

}

break;

case 1:

R1=1;Y1=1;G1=1;//调整时间时,关闭所有灯

R2=1;Y2=1;G2=1;

if(cnt<=10)

led_display(100,nb_time);

else

led_display(dx_time,nb_time);

break;

case 2:

R1=1;Y1=1;G1=1;//调整时间时,关闭所有灯

R2=1;Y2=1;G2=1;

if(cnt<=10)

led_display(dx_time,100);

else

led_display(dx_time,nb_time);

break;

}

break;

}

}

} } void timer0()interrupt 1 { TH0=(65536-50000)/256;TL0=(65536-50000)%256;cnt++;if(cnt==20){

cnt=0;

if(flag_t==0)pass_time--;//调整时间时,不执行此操作

} } void timer1()interrupt 3 { TH1=(65536-50000)/256;TL1=(65536-50000)%256;cnt1++;if(cnt1==20){

cnt1=0;

y_time--;//单方向通行时,黄灯闪烁时间。

单片机控制交通灯 篇3

系统设计方框图如图1所示。图中红绿灯由3种颜色的发光二极管代替,单片机P1口输出的控制信号,驱动发光二极管亮灭。LED数码管(共阴)由两片具有译码与驱动双重功能的芯片CD4511驱动,CD4511的输入信号为来自P2口的4位BCD码。紧急切换和车辆稀少时可采用查询P0.0、P0.1和P0.2(连接拨动开关)是否为低电平的方法确定。

程序设计思路:使用单片机内部定时器1产生中断,每50ms中断一次。在中断服务程序中,对中断的次数进行计数,50ms 计数20次,就是1s。交通灯的控制信号由P2.7~P2.5和P2.3~P2.1口输出,其中,P2.7低电平对应南、北红灯,P2.6低电平对应南北绿灯,P2.5低电平对应南北黄灯,P2.3低电平对应东西红灯,P2.2低电平对应东西绿灯,P2.1低电平对应东西黄灯。

为了显示亮灯的剩余秒数,进行倒计时显示,程序中安排了十进制转换程序。剩余秒数的BCD码由P1口输出,通过2个CD4511驱动2个LED,实现动态显示。

紧急切换拨动开关1和2分别接在P0.0、P0.1上,为东西、南北两个方向的紧急切换拨动开关,某方向拨动开关按下(接地)时,该方向紧急切换为绿灯,以利于特种车辆通过。可以通过在主程序中查询这两个端口的状态来决定是否进行紧急切换,查询到为低电平时进行紧急切换处理。

拨动开关3用于当车辆稀少时按下,当查询到P0.2为低电平时,设置东西南北两个方向的交通灯均为黄灯闪烁(1s亮,1s灭)。

用单片机内部的定时器T1实现延时,首先对TMOD赋值,确定工作方式:TMOD的高4位是控制定时器/计数器T1的,当GATE=0时,通过“SETB TR1”指令即可启动定时器/计数器工作;C/T=0时,T1被设置为定时工作方式。因此,可得到定时器T1,工作在方式1,作定时器使用,并且用软件启动运行的TMOD赋值为10H。其次预置定时器初值X,将初始值写入TH1、TL1中。设单片机的晶振频率为12MHz。定时器初值得计算公式为:(最大计数值M-初始值X)×机器周期=定时时间。当晶振频率为12MHz时,机器周期则为1μs。在方式1中,定时器T1的最大计数值M为65536,现要求定时50ms,由以上公式可计算出定时器的初始值X。

(65536-X)×1μs=50ms=50000μs

所以,初始值X=65536-50000=15536D=3CB0H,在子程序DELAY_50MS中确定定时器的初值指令为:

MOVTH1,#3CH,MOVTL1,#0B0H

主程序流程如图1-2所示。

基于单片机的智能交通灯控制系统 篇4

关键词:车辆检测,超声波传感器,单片机,交通灯

随着我国现代化进程的不断加快, 城市规模不断扩大, 庞大的汽车保有量造成的交通拥堵和混乱已经成为影响我国社会经济发展的一个重要问题。路口交通灯控制系统在时间上给交通流分配通行权, 是保证城市交通秩序的关键。而我国目前采用交通灯控制系统大多红绿灯转换时间固定, 这种缺乏灵活性的时间设置经常造成道路拥堵, 通行效率严重降低。因此智能交通灯控制系统的研究就显得尤为重要。

本文提出的智能交通灯控制系统能够依据道路车流量变化情况灵活配置通行时间, 从而有效地缓解十字路口的车辆拥堵现象, 实现通行权地最优控制。智能交通灯控制系统的提出与应用, 能够更加方便人们的出行, 更好地服务于人们的生活, 更是为了尽可能的处理由于不确定因素造成的复杂的道路交通状况, 更加智能化地解决问题。

1系统总体设计

本智能交通灯控制系统由单片机系统、超声波发射/接收器、红绿灯和倒计时显示模块组成。该系统不仅具有常规的倒计时显示功能, 还具有车流量检测和通行时间调整功能。系统具体组成框图如图1所示。

系统在东西南北四个方向上分别架设两个超声波传感器, 来检测当前道路的车流量。每个方向架设的两个传感器间隔一定的距离。当超声波传感器检测到车辆时, 输出低电平。单片机通过对每个方向传感器输出电平来判定该方向的车流量情况。

南北向通行时间由南向车道与北向车道传感器采集到的数据共同决定, 经单片机处理后便可根据车流量实时分配通行时间。东西向通行时间的分配也是如此。

2硬件设计

2.1 STC89C52单片机

STC89C52单片机是一种低功耗、高性能CMOS8位微处理器, 实际工作频率可达48MHZ。片上资源包括512Byte RAM, 8K字节Flash, 32个通用I/O端口, 3个16位定时器/计数器, 通用异步串行口 (UART) 。STC89C52具有ISP (在系统可编程) /IAP (在应用可编程) 技术。

2.2传感器

2.2.1传感器的选择

方案一:感应线圈

感应线圈车辆检测器是一种基于电磁感应原理的车辆传感器, 它的传感器是一个埋在路面下, 通有一定工作电流的环形线圈。当车辆通过环形地埋线圈或停在环形地埋线圈的上方时, 由于互感作用, 在以铁制为材料的车上产生涡流, 使得环形线圈的电感量变小。车辆检测器通过检测该线圈的电感量来检测出车辆的存在。

优点:感应线圈测量精度好, 性能稳定, 不受天气的影响。缺点:由于感应线圈铺设在地下, 工程量较大, 成本高, 破坏路面的完整性。

方案二:视频检测

基于视频的交通流量检测系统, 一般采用视频方式得到实时交通图像序列, 再经过分析处理以获得各种交通参数。通过对图像的分析即可判定车辆的存在。

优点:安装方便, 不破坏路面, 检测精度高, 同时稳定度高, 故障率低。缺点:恶劣天气能见度低、夜晚光线较差时, 严重影响视频检测的正确率。

方案三:超声波检测

超声波发射器发射出超声波时开始计时, 接收器接收到回波后结束计时。这段时间差乘以声速即为所测距离的两倍。通过与预先设定的阈值比较, 即可判定车辆的存在。

优点:体积小, 重量轻, 铺设方便, 适用于短距离测量。缺点:方向性差, 精度低。

总结:从工程角度考虑, 方案一感应线圈埋设造价高, 对路面影响大;方案二视频检测在能见度较低和光线较差时, 视频对车辆存在的检测辨识度不高。因此选择超声波传感器, 造价低且易于架设。

2.2.2传感器的架设

如图2所示, 超声波传感器分别架设在东南西北四个车道上, 每个方向设置2个。

2.2.3检测思路

超声波模块将检测数据送入单片机处理, 若距离小于所设置的阈值, 即可判断车辆的存在。当检测到车辆时, 输出低电平。

系统启动后, 整个系统全部初始化 (东西方向绿灯时间10s, 黄灯时间5s, 南北方向红灯时间15s) 。当东西方向为黄灯时, 单片机系统开始循环检测南北向的传感器, 并将传感器s1数据与s3数据作“与”运算, s2数据与s4数据作“与”预算。

当结果为“11”时, 南北方向无车;结果为“01”时, 南北方向少车;结果为“00”时, 南北方向多车, 分配绿灯时间分别为10s, 20s, 30s。南北向车流量状态与绿灯时间如表1所示 (1为高电平, 0为低电平) 。

当南北方向为黄灯时, 工作流程与东西方向黄灯时相同。

2.3显示部分

显示部分由红绿灯显示模块与倒计时显示模块两个部分。红绿灯显示使用LED灯组, 单片机P1.0-P1.5端口控制灯组的亮灭。由于单片机I/O端口无法驱动灯组, 所以使用ULN2803达林顿阵列作为功率驱动, 增加控制信号的驱动能力。

倒计时显示模块使用两位八段共阴数码管, 两位八段数码管可以显示的时间为0—99s, 可以满足系统最长35s的时间显示要求。单片机P2.0-P2.5端口控制南北东西方向的红绿黄灯显示。P2.6-P2.7端口则是数码管个位和十位位选信号。当位选信号为低电平时, 表示选中该数码管。

3软件设计

在keil uvision4环境下编译并调试程序, 包括主程序、初始化程序, 传感器检测程序、数码管与LED灯组显示程序、中断服务子程序。主程序根据车流量对南北东西方向红绿灯时间进行分配以及数码管的显示。初始化程序在系统启动时对各个寄存器值进行设置。传感器检测程序主要是对每个车道车流量的判断, 在道路黄灯时传感器进行数据采集。中断服务子程序包括定时器中断与串行口中断。程序流程图如图3。

主程序的关键在于对东西南北方向车流量的判断, 从而分配通行时间, 这也是智能交通控制系统的核心所在。下面给出东西向车流量判断程序:

4改进方向

本文提出的基于单片机的智能交通灯控制系统在检测误差和精度上有许多不足, 后期可做如下改进:

(1) 超声波在空气中随着传播距离的增大, 能量逐渐衰减, 当检测较远距离时会出现很大的误差。故可通过提高超声波模块的发射功率来增加可靠的检测距离, 从而减小由于能量衰减造成的检测误差。

(2) 超声波受温度的影响会导致传播速度的变化, 这会降低测试的精确度。而在本系统中并未增加相应的修正措施。后期可以通过增加温度传感器来实时检测温度的变化, 并对声速进行修正, 提高系统的精确度。

5结语

在城市化进程中, 与日俱增的车辆数目给城市的交通带来的巨大的挑战。目前我国交通灯系统大多时间固定, 不能根据路口车辆的滞留的情况灵活地改变各方向道路的通行时间, 给人们的出行和生活带来的极大的不便, 这已经成为影响我国社会经济发展的一个重要的问题。因此如何改善城市交通, 突破传统交通灯控制系统成为当下一个热门的研究方向。智能交通灯的思想也就应运而生。

本文提出的基于单片机的智能交通灯控制系统稳定性高, 这对于交通控制至关重要。与此同时传感器架设方便, 不需破坏路面, 成本较低, 实用性较高。智能交通灯系统能够改善道路通行状况, 灵活地红绿灯时间分配能够较好地解决十字路口交通堵塞问题, 提高了通行效率, 在城市交通控制系统中会有很好的应用前景。

参考文献

[1]林凌, 韩晓斌, 丁茹, 李刚, 洪权.微型感应线圈车辆传感器[J].传感技术学报, 2006, 19 (4) :995.

[2]刘占文.基于CMOS线阵图像传感器的交通流量检测系统开发研究[D].西安:长安大学, 2009.

[3]迟新利, 染首发.PLC在城市道路交通信号控制中的应用[J].沈阳电力高等专科学校学报, 2000, 2 (3) :32-34.

[4]周力, 陈跃东, 江明.城市智能交通信号控制系统设计[J].自动化与仪器仪表, 2006 (6) :37-40.

基于单片机的交通灯控制系统设计 篇5

摘要:十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MSC-51系列单片机ATSC51和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制嚣,实现了能根据实际车流量通过8051芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮。倒计时剩5秒时黄灯闪烁警示;车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。本系统实用性强、操作简单、扩展功能强。

关键词:单片机;交通灯

单片机技术的发展对社会进步产生了巨大的影响。今天,单片机及其应用技术的发展速度、深度及其广度,在国防、科学研究、政治经济、教育文化等方面几乎无所不及。将之用于交通灯控制系统设计,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。

1、单片机涵义

一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入,输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就际=缸单片(单芯片)机,单片机即微控制器(Microniroller μC)有一些单片机中除了上述部份外,还集成了其它部份如AID,DIA,定时计数器,RTC,各种串行接口等。

2、MSC-51芯片简介

2.1 MSC-51结构

8051是MCS-51系列单片机的典型产品,8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时,计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。

2.2 8255芯片简介

8255可编程并行接口芯片有三个输入输出端口,即A口、B口和c口,对应于引脚PAT—PA0、PB7-PB0和PC7-PC0。其内部还有一个控制寄存器,即控制口。通常A口、B口作为输入输出的数据端口。c口作为控制或状态信息的端口,它在方式字的控制下,可以分成4位的端口,每个端口包含一个4位锁存器。它们分别与端口A/B配合使用,可以用作控制信号输出或作为状态信号输入。

8255有两种控制命令字;一个是方式选择控制字;另一个是c口按位置位/复位控制字。

2.3 74LS373简介

SN74LS373。SN74LS374常用的8d锁存器。常用作地址锁存和I/0输出,可以用74he373代换,74H373是高速CMOS器件,功能与74LS373相同,两者可以互换。74LS373内有8个相同的D型(三态同相)锁存器,由两个控制端(11脚c或EN;1脚OUT、CONT、OE)控制。当OE接地时,若G为高电平,741Ls373接收由PPU输出的地址信号;如果G为低电平,则将地址信号锁存。

3、系统硬件

3.1 交通管理的方案论证 东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行。绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两千道的公共停车时问。设东西道比南北道的车流量。

3.2 系统硬件设计

选用设备8031单片机一片选用设备:8031弹片机一片,8255并行通用接口芯片一片,74LS07两片,MAX692‘看门狗’一片,共阴极的七段数码管两个双向晶闸管若干,7805三端稳压电源一个,红、黄、绿交通灯各两个。开关键盘、连线若干。

4、控制器的软件设计

4.1 每秒钟的设定

延时方法可以有两种:一种是利用NCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。

4.2 计数器硬件延时

4.2.1 初值计算

定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值设定为c和计数初值设定为TC。

4.2.2 1秒的方法

我们采用在主程序中设定一个初值为20的软件计数器和使TO定时5O毫秒,这样每当TO到50毫秒时cPu就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,cPu先使软件计数器减1,然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。

4.3 计数器软件延时

MCS-51的工作频率为2-12MHZ,我们选用的8031单片机的工作频率为6MHZ。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/6M)=2us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。

4.4 时间及信号灯的显示

4.4.1 8051并行口的扩展

8051虽然有4个8位I/0端口,但真正能提供借用的只有Pl口。因为P2和P0口通常用于传送外部传送地址和数据,P3口也有它的第二功能。因此,8031通常需要扩展。由于我们用外部输入设定红绿灯倒计时初值、数码管的输出显示、红绿黄信号灯的显示都要用到一个I/0端口,显然8031的端口是不够,需要扩展。

扩展的方法有两种:(1)借用外部RAM地址来扩展I/0端口;(2)采用I/0接口新片来扩充。我们用8255并行接口信片来扩展I/0端口。

4.4.2 8255与8051的连接

用8051的PO口的pO.7连接8255的片选信号,我们用8031的地址采用全译码方式,当pO.7:0时片选有效,其他无效,pO.1用于选择8255端口。

5、结 论

本系统就是充分利用了8051和8255芯片的I/O引脚。系统统采用MSC-51系列单片机Intel8051和可编程并行I/0接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8031芯片的Pl口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA口输出,显示时间直接通过8255的PC口输出至双位数码管);车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。

参考文献:

[1]张毅刚,新编MCS-51单片机应用系统设计[M]哈尔滨:哈尔滨工业大学出版社,2006

[2]王义军,单片机原理及应用习题与实验指导书[M],北京:中国电力出版社,2006

单片机控制交通灯 篇6

东西、南北两干道交于一个十字路口。各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间,根据主干道车流量的多少设置指示灯点亮的时间。下面假设,在正常情况下,90s后信号灯由“红灯”转“黄灯”,经过2s的过度后“黄灯”转“绿灯。另外在东西方向、南北方向各设紧急开关各一个,利用外部中断实现中断,紧急开关闭合时相应切换成“绿灯”,以方便特种车辆通过。

2 系统硬件设计

电路主要由AT89S51单片机、上拉电阻和两片7407、红、黄、绿交通灯各两个以及按钮开关组成,如图1所示。在设计中采用6个发光二极管来模拟2个路口的黄红绿灯,通过单片机P1口实现对交通灯的控制,控制连线的对应关系如表1所示。

主程序执行对P1口各使用位的控制,并调用相应的延时子程序实现。有中断产生时,则转入相应的中断服务子程序,使相应方向切换成“绿灯”,另外方向切换成“红灯”。系统各组成部分说明如下。

(1)MCU采用AT89S51,该单片机是一个低功耗,高性能CMOS 8位单片机,片内含4k Flash存储器,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位,具有较高的性价比。

(2)LED模拟灯组采用红、绿、黄发光二极管实时模拟被控制的路口交通灯。其亮灭及闪烁方式与路口的红绿灯同步,方便技术人员直观地调试或检查系统的运行。

(3)达林顿管ULN2003芯片用来做功率驱动.提高控制信号的驱动能力,驱动机械式继电器队列以及LED模拟灯组。

3 控制器的软件设计

根据交通灯的工作过程和电路连接情况,交通灯的工作状况如表2所示。正常工作时交通灯在前4个状态间运行,出现紧急情况进入状态5,紧急情况结束后,恢复原状态。其工作过程控制关系如表2所示。

3.1 软件设计思路

本程序由主程序、延时子程序和外部中断子程序组成。主程序主要负责系统初始化和等待中断。延时子程序主要负责数码管显示刷新和红绿黄灯各种状态切换。外部中断子程序负责紧急情况处理和处理完恢复。

主程序负责系统的初始化,然后数码管数据输出显示,同时检测按键,有按键就进入中断程序。主程序的流程图如图2所示。

系统初始化包括中断向量初始化以及设置交通灯工作的初始状态。

3.2 程序代码

4 结束语

介绍了基于AT89S51单片机的智能交通灯控系统硬件体系结构及软件设计的部分细节,应用单片机实现智能交通红绿灯控制系统具有很强的实用性,系统硬件具有外围器件少、电路简单、成本低等优点,整个系统作为独立化的模块,还可以进一步扩展,具有良好的应用前景,同时对学习单片机系统设计是一个较好案例。

参考文献

[1]俞国亮.MCS-51单片机原理与应用[M].北京:清华大学出版社,2008.

[2]朱勇.单片机原理与应用技术[M].北京:清华大学出版社,2006.

基于51单片机的交通灯设计 篇7

一、交通灯的设计要求

双向交通灯红、黄、绿灯对应相同, 红灯5s, 黄灯1s, 绿灯5s。当有急救车到达时, 双向交通信号为全红, 以便让急救车通过。假定急救车通过路口时间为10s, 急救车通过后, 交通灯恢复中断前状态。

二、AT89C51单片机的中断系统介绍

计算机系统中止当前的正常工作, 转入处理突发事件, 等到突发事件处理完毕之后, 再回到原来被中断的地方, 继续原来的工作, 这样的整个过程称为中断。能够实现这种功能的部件称为中断系统。产生中断请求的事件称为中断源。其中AT89C51单片机具有5个中断源, 在本次设计中我们采用的是外部事情中断请求源0, 以及T1计数溢出事情中断请求这两个中断源。

三、AT89C51单片机的定时/计数器介绍

在单片机中, 通常计数器和定时器设计成一个部件——计数器, 当计数脉冲的周期一定时, 计数器就作为定时器, 定时时间就是计数器计数次数和计数脉冲周期的乘积。在此我们采用的就是计数器的这个定时功能。

四、交通灯的硬件电路搭建

本次设计的硬件电路搭建如图1。两路交通灯的6个灯依次接在51单片机P1口的P1.0到P1.5, 另外在单片机的P3.2口接一个按压式开关作为救护车到来时的中断源。

五、交通灯的软件编程设计

中断部分的程序设计。首先, 应将51单片机中中断允许寄存器IE的EA位设为1, 这代表允许中断源向CPU申请中断, 即CPU开放中断。同时将IE的EX0位设为1, 这代表允许外中断0向CPU申请中断。这样的话, 当救护车来的时候, 可以借此发出中断请求。接下来, 应将定时器控制寄存器TCON的IT0位设为1, 这代表外部中断0的触发方式选择为边沿触发方式。由于笔者采用了按压式的开关作为中断的发出方式, 这样会产生一个脉冲, 因此应当选择边沿触发方式。定时部分的程序设计。首先, 应将控制寄存器TCON的TR1位置1, 启动定时器T1计数。接下来, 应将方式寄存器TMOD的值设为0x01, 使得定时器T1工作在方式1, 即16位定时/计数方式。然后, 由于计时器的定时周期是1s, 笔者使用定时/计数器T1精确定时50ms, 则20次50ms中断时, 定时时间就是1s。在定时器中断部分, 笔者采用的是查询方式, 即CPU不断查询TF1的状态, 当TF1为1时, 表示50ms定时已到, 在主程序中判断是否20次50ms定时已到, 如是, 则时间恰好为1s。同时TF1位软件清0。根据公式, 当定时时间为50ms时, 计数初值应为15536, 换算成十六进制是3CB0H, 即计数器T1中TL1的初值为B0H;TH0的初值为3CH。当救护车到来时, 双向交通灯置红, 即将双向交通灯的红灯所对应的P1口位置1, 其他位清0即可。时间长短的设置方法同上。最后, 由于双向交通灯红灯5s, 黄灯1s, 绿灯5s, 共11个状态, 我们利用switch语句为这11个状态分别设置相应P1口的值, 再利用一个循环即可。

六、结语

在机动车数量激增的今天, 车辆拥堵、交通崩溃的现象还是时有发生的。其原因多半是交通灯时长设置的不合理, 抑或无法根据一天之内不同时间的车流状况, 对交通灯的状态进行调整。因此, 合理地设计交通系统, 同时对于交通灯的适当调试无疑将会派上很大用场。

摘要:交通灯在日常生活中扮演着重要角色, 本文基于Atmel公司生产的型号为AT89C51的单片机, 利用uvision的编译环境进行编程, 同时在Proteus的环境中进行仿真, 对交通信号灯进行设计, 使交通灯具有应急状况处理的功能。

基于51单片机交通灯电路的研究 篇8

近年来, 随着农业人口城镇化的迅速发展, 人们的收入不断增高, 私家车辆也在不断的增多, 公共车辆投入也在增加, 道路的扩充远远低于车辆增长的速度, 所以交通拥挤和阻塞现成为当今社会迫切需要解决的社会问题。而传统交通已经不能满足社会发展的需求, 这要求在现有道路条件下, 合理使用现有交通设施, 采用先进的技术, 提高交通控制和管理水平, 提高道路的利用率, 解决交通问题。

1 系统硬件电路设计

基于51单片机交通灯电路设计以51单片机为核心, 以LED数码管作为倒计时显示, 实现实时显示系统各种状态, 51单片机中, 核心部件是中央处理器 (CPU) , 负责协调整个系统的工作。LED数码管, 是输出的显示信号的, 使路况指示灯亮或灭。在进行整个单片机的交通灯电路总体设计时, 采用了几大电路组成, 这几大电路有:电源模块, 电源模块为模块提供可靠稳定电源, 使模块能够稳定工作。时钟电路:实现定时、计数功能, 配合软件延时实现到计时。复位电路:实现将电路恢复到起始状态, 重新可进行计算。按键控制电路:通过按键控制电路可实现东西、南北方向常绿灯、紧急通行功能。信号灯控制电路:对红、黄、绿三个状态灯的电路控制, 通过编程实现。提供的框图如下图所示。

2 各模块电路介绍

(1) 电源模块。本设计所用电源采用自制的单相整流滤波稳压电路实现, 采用三端稳压集成电路LM7805输出+5V的电源。

(2) 时钟电路。时钟电路是产生像时钟一样准确的振荡电路, 在51单片机片内集成了反相放大器, 它的输入端为XTAL1, 输出端为XTAL2, 两端跨接晶体或陶瓷振荡, 晶体振荡器的振荡信号从XTAL2端送入内部时钟电路, 供单片机使用。

(3) 复位电路。51单片机复位电路设计的好坏, 直接影响到整个交通灯系统工作的可靠性, 在上电或复位过程中, 控制CPU的复位状态, 防止CPU发出错误的指令, 采用上电加按钮电平复位方式, 当手动按下按钮时, 在复位输入端RST加上高电平, RST管脚高电平被触发。为保证复位可靠, RST高电平信号必须需要足够长的时间。

(4) LED显示电路。本设计采用两位共阴数码管显示, 采用74LS245驱动数码管显示。

(5) 信号灯控制电路。信号灯控制电路由东西南北四个方向各三个LED灯组成, 这些LED灯分别显示灯的三种状态红、黄、绿。制作过程中采用仿真:通过仿真来观察二极管的亮灭, 模拟红黄蓝3个LED的发光情况, 查看电路是否异常, 调试电路的设计。由仿真再到实际制作, 这样减少了部分弯路。在信号灯控制电路设计时涉及多方面知识, 如电路原理, 电压、电流, 交流电压直流电压转换, 振荡器、触发器, 振荡电路多谐振荡, 时序逻辑, 门控制电路等。最后通过软件编程, 可实现:南北方向和东西方向两条交叉道路上的车辆交替运行。

(6) 按键控制电路。按键控制电路中, 设置了7开关控制, 这些开关连接到单片机, 对单片机上的每个控制按钮进行编码, 再通过软件编程, 可以实现东西和南北方向的切换、数码管显示时间的增减、确认、东西方向常绿灯、南北方向常绿灯、紧急通行功能。

3 单片机及其它芯片简介

AT89S52是一种低功耗、高性能CMOS8位微控制器。该单片机拥有很多优点, 如灵活方法, 亦适于常规编程器。鉴于以上的优点本系统采用AT89S52作为主控芯片, 实现对整个系统的控制。

芯片74LS245在51单片机交通灯电路设计中用来驱动led设备, 这是我们在设计基本单片机系统时常常采用的一组芯片, 该芯片可双向传输数据。当19脚E为H时, A、B为高阻。E为L时, DIR为L时, 数据由B传向A;DIR为H时, 由A传向B。

4 软件系统设计

单片机交通灯电路设计中软件设计占有重要的地位, 没有软件的良好的设计无法完成各部件的控制与协调, 软件就是系统实现的灵魂, 单片机交通灯电路设计中软件设计采用模块化设计思想, 这样软件相对独立性, 使程序易于调试, 也可实现跨系列产品间的模块的通用。模块化的设计也可减小软件故障率和提高软件的可靠性。交通灯电路设计中C语言编写, 对红绿灯显示系统和按键系统都采用Keil软件调试程序。

5 结论

基于51单片机交通灯电路设计以51单片机为核心, 以LED数码管作为倒计时显示, 本设计融合了单片机技术, 通信技术, 数字电路、模拟电路技术及软件编程技术等, 很好的完成了设计的各项要求, 能够实现在南北方向和东西方向两条交叉道路上的车辆交替运行, 每次通行时间都设30秒, 时间可设置修改。能够实现在红绿灯转换时, 黄灯先亮5秒钟的要求。遇到交通管制的时候, 可以允许南北或者东西方向的车辆通行。遇到有救护车、消防车等紧急车辆要求通过时, 系统要能禁止东西和南北两条路上所有的车辆通行。

摘要:交通灯在我们日常生活中随处可见, 并且在交通系统中处于至关重要的位置。交通灯的使用可以使车辆行人有序通行, 有效减少交通事故, 在现有道路的路状下, 有效提高道路的利用率, 给行人和车辆提供一个安全的交通环境, 人们的生命和财产安全有了保障。本设计旨在模拟十字路口的交通灯, 以AT89S52单片机为基础, 结合按键和数码管等元器件设计出一个基于51单片机的交通灯控制系统。本系统除具有基本交通灯功能外, 还具有显示倒计时功能、设置时间功能、在特殊情况下可以做出特殊的处理功能。随着社会积极的发展, 城市交通问题越来越引起人们关注, 更是当今现代城市不可缺少的管理监控系统之一。

关键词:交通灯,AT89S52,单片机

参考文献

[1]陆彬.21天学通51单片机开发[J].电子工业出版社出版社, 2011年.

单片机控制交通灯 篇9

1交通灯的功能设计

结合显示状况, 交通灯能够分成四种状态, 首先, 对每种状态的时间进行定时控制;其次, 通过每间隔1S就在LED数码管里输入一个数, 定时的使得剩余时间显示出来;再次, 假如发生中断, 就会相应的进到处理程序当中, 对当前的显示状态进行保留后, 再结合实际情况对处理中的状态进行显示, 当紧急状况结束后就返回到之前保留的状态当中。从系统设计上来看, 主要包括状态显示系统、紧急状况终端系统、LED数码显示系统以及复位电路等, 除了交通等具有的基本作用外, 还有紧急状况进行处理和倒计时的作用, 能偶对十字路口可能出现的状况进行模拟实现。

2交通信号灯硬件系统设计

2.1控制流程分析

根据图1的交流流向循环图能偶看出,

(1) 从交通灯的控制上来看, 南北方向与东西方向是关于中心对称的, 就是指不管是主干道, 亦或是支干道, 其两旁的系统对于方向相同的信号灯是进行同步控制的。

(2) 根据图1能够了解到:不管是人行道的东西, 还是南北方向, 系统对两旁的四个信号灯也是进行同步控制的, 同时人行道的红绿灯变化应该与行车道的红绿灯的变相同。

(3) 根据上述的思路能够看出, 通过对单片机P2口和P0口、显示译码芯片以及锁存芯片之间的配合来达到对LED灯和数码管进行控制的目的。利用锁存芯片能够单片机口的分时复用得以实现, 且操作简单、方便, 有助于对数据快速及时的进行交换, 同时充分的利用单片机资源。

2.2基于89C51单片机的现代交通灯系统的硬件设计

2.2.1交通灯的电路设计

通过选取二极管对交通信号灯的红绿进行模拟, 所采用LED模拟灯组采用模拟交通红绿灯的显示, 同时从闪烁的方式以及亮灭的方式上也和路口的红绿信号灯保持同步。从数码管的选用上, 要选取共阳极数码管, 因为其是通过动态的方式进行显示的, 并通过倒计时来对其进行。仅从单片机Pl端口来看, 其管控六个发光二极管, 对路口的红黄绿等信号灯来模拟路口的红黄绿灯;P0端口以及P1.6、P1.7端口, 显示出控制的数码管。根据表1, 从正常的工作状态来看, 交通灯系统中共包括四个报警器和检测器, 分别为南北和东西四个方向, 对通道中当红灯亮时是否有依然存在车辆违规的问题进行监。当红灯开始进行倒计时, 则选用的是P2.4~P2.7独立按键将模拟违规信号向单片机进行传送, 而发光二极管与单片机控制蜂鸣器则会进行声光报警, 除非报警键被消键, 否组就不会停止。

2.2.2当出现紧急通行和遇忙状况时的处理设计

在出现紧急通行或者遇忙的状况时, 可以将INT0的外部进行中断用, 而对这些情况进行控制。通过74HC21双四输入和门的采用, 将集成多路至INT0端口的申请信号进行中断, 利用将INT0的服务进行外部中断的方式, 对红绿信号灯进行控制, 进而达到相应车道能够畅通, 同时另一排车道被禁行的目的, 确保所有的数码管都一起熄灭, 开启声音提醒模块。为促进交通灯指示灵活性的提升, 交通流通效率的提高, 可以结合交警的实际经验和车流量的状况来对交通灯燃亮的时间进行设置。为使处理比较简单。根据南北、东西路段遇忙的状况, 对交通灯进行设计。如果南北信号灯出现忙碌的状况, 系统就可以通过INT0外部中断与系统进行响应。根据南北和东西车道的实际状况, 将其分别设置30s和50s的燃亮时间, 进而进入到下一个循环。

3基于89C51单片机现代交通灯软件程序设计

在对系统的程序进行设计通常包括三个部分的使用, 分别是定时器的使用、对I/O端口进行控制、以及对外部中断的应用。从I/O端口来看, 主要是用来控制交通信号灯和数码管的显示;从定时器来看, 主要是对倒计时进行控制;从外部中断来看, 主要是在紧急通行或是遇忙状况时进行处理响应。从程序模块来看, 能够分成五个部分的相应处理, 分别为主程序、对倒计时进行的应用, 以及数码管的显示、信号灯状态出现的改变和中断的响应处理等等。

在通常状况下, 基于89C51的交通灯当在处在中断的状况下, 交通灯按照A绿灯、B红灯延时55S——A绿灯闪烁3次——A黄灯、B红灯延时2S——A红灯、B绿灯延时55S——B绿灯闪烁3次——A红灯、B黄灯延时2S的流程进行循环;当服务程序流程出现中断时, 则按照紧急情况和特殊情况的不同, 采取不同的流程。当处于紧急状况时, 根据中断响应——保护现场——A红灯、B红灯延时10S——恢复现场的流程执行;当处于特殊状况时, 则按照中断响应——关闭中断——保护现场——开启中断——A绿灯、B红灯延时55S——关闭中断——恢复现场——开启中断的流程执行。在特殊状况下, 通过将外部进行中断的1方式进到和其适应的中断服务程序, 对中断设置成低优先级;而当出现有紧急车辆要通行时, 则利用对外部进行中断的0方式进到和其有关的中断服务程序, 并将其中断设置成高优先级中断, 从而完成中断嵌套的目的。如果是在特殊状况下所出现的中断服务程序, 第一要对现场进行保护。根据需要要对P2口和函数进行延时, 要通过P2和全局延时对需要保护的变化进行控制。当对现场进行保护时, 要关闭中断, 避免由于高优先级, 例如紧急车辆要求通过而发生申请中断而造成程序出现混乱。之后再将中断开启, 相应的执行服务, A道试行5S放行后再将中断关闭, 对现场进行恢复。在中断函数回复到之前后再将中断开启, 返回到主程序。如果发生紧急车辆要通行时, 要对服务程序中断时也要对现场进行保护, 然而由于处在高优级中断, 则不用将中断关闭。之后再相应的执行服务, 双方向的红灯都呈10S显示, 保证紧急车辆可以顺利的在交叉路口通行。最后, 对现场进行恢复后回到主程序。

4结语

通过将89C51单片机当成控制的核心进行设计, 进而使得现代交通灯控制系统实现运行平稳, 在对其进行设计时要做到考虑充分, 该设计中的按键控制台是系统中的最大优势, 能够在室内完成交警对交通状况进行实时监视的目的。其控制方式具有灵活性, 物理结构的优化、功能的丰富等都是本系统的优点。但是还应该看到, 基于89C51单片机的现代交通灯其在控制系统上仍存在一些不足之处, 比如在对外界电噪声所造成的干扰问题上仍需要深入进行探讨。总之, 在城市交通等进行设计时, 应该利用单片机控制系统达成对典型时间顺序进行控制, 这不仅巧妙且十分的简单。且因为自动化控制技术不断的提升, 单片机技术的性价比和开发手段定会在市场中具有更为广阔的前景。

参考文献

单片机控制交通灯 篇10

关键词:单片机,C语言,5S递进,虚拟实验室

随着城市的快速发展, 车辆日益增多, 交通灯的设置非常必要。交通灯不仅可以保证车辆的顺利通行, 最重要的是能够有效保护人民的安全。交通灯可以用PLC控制, 也可以用硬件电路控制, 但PLC价格昂贵, 硬件电路一旦确定控制信号便无法更改, 鉴于此, 本文采用单片机控制的方式设计交通灯[1]。

本文设计的交通灯主要有以下功能: (1) 默认设置是直行40S, 拐弯20S, 可以根据车流量信息以5S递增或递减, 灵活调; (2) 整通行时间, 有效减少车辆滞留; (3) 倒计时显示, 通行的最后3S用黄灯闪烁的方式起到警示作用; (4) 紧急车辆优先通行; (5) 若遇交通繁忙则发送拥堵信号, 提醒其他司机师傅及时绕。

1 系统硬件设计

本设计主要由单片机主控模块, LED倒计时显示模块, 交通灯显示模块, 时间参数调整模块, 特殊情况处理模块等组成。其中单片机采用AT89C52, LED采用共阳极接法, 动态扫描方式显示时间以保证亮度, 具体的单片机口资源分配如下:

P0口控制2位8段LED数码管, 用以倒计时显示;P1.0控制东拐北, 西拐南方向的绿灯, P1.1控制东西方向的绿灯, P1.2控制东西方向的黄灯, P1.3控制东西方向的红灯, P1.4控制北拐西, 南拐东方向的绿灯, P1.5控制南北方向绿灯, P1.6控制南北方向黄灯, P1.7控制南北方向红灯。P3.3时间递增按键, P3.4时间递减按键, P3.6繁忙信号按键, 按下此键, P2.7控制的红灯亮, 告知其他车辆本路段拥堵, 提醒广大司机师傅绕行;为保证有效性, P3.3, P3.4, P3.6共同连接至P3.2引脚, P3.2是外部中断引脚, 单片机会及时响应中断请求信号。

2 系统软件设计

单片机可用汇编语言或C语言编程, KEIL软件对此两种语言都支持。鉴于汇编语言的可读性差, 开发周期长, 本次设计采用可移植性好的C语言来编程实现交通灯的所有功能。

该程序包括主程序和子程序。主程序主要完成初始化设置, 如中断的开关和触发方式选择, 定时计数器的方式选择等问题, 用到的寄存器主要有IE, TCON, TMOD。

子程序主要有按键扫描子程序, 按键去抖动子程序, 中断子程序, 1S定时子程序和显示子程序[2]。本设计中的按键有时间递增键, 时间递减键, 繁忙信号按键, 紧急车辆按键。首先要扫描出是哪个按键按下, 转去处理相应的程序。显示子程序采用动态扫描显示的方式, 7段LED数码管采用共阳极接法, 0-9对应的字形码如表1所示。采用定时计数器T0完成50ms的定时, 中断20次即可实现1S的定时。

3 系统仿真调试

先在keil软件中输入程序, 编译无误后仿真运行, 生成“jtd.hex”文件。在proteus软件中绘制电路原理图, 双击单片机找到“jtd.hex”文件, 将其添加到电路原理图中, 两者联合建立的虚拟实验室很直观的显示了交通灯的运行情况, 验证了本设计的正确性。调试结果如图一、图二所示。

4 结论

与传统的交通灯相比, 本设计具有明显优势:时间参数可调, 繁忙信号通知, 紧急车辆优先通行等, 减少了车辆滞留, 提高了车辆通行效率。虚拟实验室的仿真验证了本设计的可行性。

参考文献

[1]袁涛.单片机C高级语言程序设计及其应用[M].北京:清华大学出版社, 2001.

上一篇:老年肥胖和骨质疏松下一篇:上海制造业上市公司