智能交通灯设计与实现.docx
《智能交通灯设计与实现.docx》由会员分享,可在线阅读,更多相关《智能交通灯设计与实现.docx(16页珍藏版)》请在冰豆网上搜索。
智能交通灯设计与实现
Companynumber:
【WTUT-WT88Y-W8BBGB-BWYTT-19998】
智能交通灯设计与实现
辽宁工程技术大学
集成电路EDA技术课程设计报告
题目:
智能交通灯设计与实现
指导教师:
李淑艳
院(系、部):
电子与信息工程学院
专业班级:
电子09—2
学号:
姓名:
穆加林
日期:
智能交通灯设计与实现
摘要:
智能的交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题。
在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行;黄灯亮,表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行;绿灯亮,表示该条道路允许通行。
交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化。
本文为了实现交通道路的管理,力求交通管理先进性、科学化。
分析应用了单片机实现智能交通灯管制的控制系统,以及该系统软、硬件设计方法,实验证明该系统实现简单、经济,能够有效地疏导交通,提高交通路口的通行能力。
关键词:
交通信号灯单片机
一.技术指标
1)设计一个十字路口的交通灯控制电路,要求南北方向和东西方向两个交叉路口的车辆交替运行。
2)每次绿灯变红灯时,要求黄灯先亮5S,才能变换运行车辆。
3)东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用数码管显示器进行显示(采用倒计时的方法)。
4)同步设置人行横道红、绿灯指示。
5)考虑到特殊车辆情况,设置紧急转换开头。
二.智能交通灯的方案选择
1)智能交通灯的研究现状
其实,用红黄绿三色来作交通讯号和人的视觉机能结构和心理反应有关。
我们的视网膜含有杆状和三种锥状感光细胞。
杆状细胞对黄色的光特别敏感,三种锥状细胞则分别对红光、绿光及蓝光最敏感。
由于这种视觉结构,人最容易分辨红色与绿色。
虽然黄色与蓝色也容易分辨,但因为眼球,对蓝光敏感的感光细胞较少,所以分辨颜色,还是以红、绿色为佳。
颜色也有活动的含意,要表达热或剧烈的话,最强是红色,其次是黄色。
绿色则有较冷及平静的含意。
因此,人们常以红色代表危险,黄色代表警觉,绿色代表安全。
而且,由于红光的穿透力最强,其他颜色的光很容易被散射,在雾天里就不容易看见,而红光最不容易被散射,即使空气能见度比较低,也容易被看见,不会发生事故。
所以我们用红色表示禁止。
2)智能交通灯的设计方案
针对道路交通拥挤,交叉路口经常出现拥堵的情况。
利用单片机控制技术提出了软件和硬件
由于AT89S51单片机自单带有2计数器,6个中断源,能满足系统的设计要求。
用单片机设计不但设计简单,而且成本低,用其设计的交通灯也满足了要求,所以本文采用单片机设计交通灯,系统构图如图1所示:
图1系统结构框图
三.智能交通灯方案的实现
根据设计任务和要求,可画出该控制器的原理框图,为确保十字路口的交通安全,往往都采用交通灯自动控制系统来控制交通信号。
其中红灯亮,表示禁止通行;黄灯亮表示暂停;绿灯亮表示允许通行。
1)控制器的系统框图如图2所示
图2交通灯控制器系统框图
2)电路图
智能交通灯电路图如图3所示。
3)智能交通灯系统的组成
交通灯系统由四部分组成:
车检测电路,信号灯电路,时间显示电路,紧急转换开关。
4)工作原理
十字路口的红绿灯指挥着行人和各种车辆的安全通行。
有一个主干道和一个支干道的十字路口如图3-1所示。
每边都设置了红、绿、黄色信号灯。
红灯亮表示禁止通行,绿灯亮表示可以通行,在绿灯变红灯时先要求黄灯亮几秒钟,以便让停车线以外的车辆停止运行。
Ⅰ、信号灯电路
信号灯用来显示车辆通行状况,下面以一个十字路口为例,说明一个交通灯的四种状态见图5。
每个路口的信号的的转换顺序为:
绿——>黄——>红,绿灯表示允许通行,黄灯表示禁止通行,但已经驶过安全线的车辆可以继续通行,是绿灯过渡到红灯提示灯。
红灯表示禁止通行,绿灯的时间为20秒,红红最短时间为25秒,黄灯时间为5秒。
Ⅱ、时间显示电路
在交通信号灯的正上方安装一个可以显示绿灯通行时间,红灯等待时间的显示电路,采用数码管显示电路是一种很好的方法。
由于东往西方向和西往东方向显示的时间相同,南往北方向和北往南方向显示的时间也相同,所以只需要考虑四位数码管显示电路,其中东西方向两位,南北方向两位,两位数码管可以时间的时间为0-99秒完全可以满足系统的要求。
四.智能交通灯方案的仿真图
五.结束语:
1、能实现的功能
交通灯的状态转换和计时时间的显示,基本能实现甲、乙道路直行和转弯灯的显示功能。
2、不足之处
设计过程中用的芯片太多。
传统的定时交通灯控制还是起到了一定的作用,但随着社会的高速发展,城市化日益完善,车的数量必然增多,给交通的压力也增大,这是传统的交通控制等已经无法满足现在的通行状况,功能还不够完善。
交通灯红、黄、绿时间还不能按交通紧松完成手控调整,软件编写实现功能还不能很好控制硬件。
通过这次设计,掌握了对Proteus的基本使用方法,掌握了一些单片机的使用及构造知识,对单片机有进一步的认识。
设计中遇到的问题也可以通过自己的查询和同学的帮助解决,锻炼了自己的独立思维能力和动手动脑能力。
要有一个明确的目标和一颗团结合作的心,还要保持一个良好的心态,才能把设计做得更好!
参考文献:
1、陈大钦主编《电子技术基础实验》高等教育出版社2004年
2、陈梓城主编《电子技术实训》机械工业出版社2003年
3、吴黎明主编《单片机原理及应用技术》科学出版社2003年
4、李学海主编《标准80C51单片机基础教程》北京航空航天大学出版社2006年
5、刘乐善主编《微型计算机接口技术及应用》华中科技大学出版社2004年
附录:
附智能交通灯控制程序:
ORG0000H
A_BITEQU20H;用于存放南北十位数
B_BITEQU21H;用于存放南北十位数
C_BITEQU22H;用于存放东西十位数
D_BITEQU23H;用于存放东西位数
TEMP1EQU24H;用于存放第一二南北状态要显示的时间
TEMP2EQU25H;用于存放第一二东西状态要显示的时间
TEMP3EQU26H;用于存放第三第四南北状态要显示的时间
TEMP4EQU27H;用于存放第三第四南北状态要显示的时间
LJMPMAIN
CLR
CLR;南北通行,东西禁止通行
CLR
CLR
MOVP1,#0FFH;清除先前状态
MOVP2,#0FFH
CLR
CLR
CLR;东西通行,南北禁止通行
CLR
ORG0100H;初始情况
MOVP1,#0FFH
MOVP2,#0FFH;灭所有灯
MOVTMOD,#55H;计数方式方式1
MOVTEMP1,#20;
MOVTEMP2,#25
MOVTEMP3,#25
STAR:
MOVP1,#0FFH
MOVP2,#0FFH;灭所有灯
MOVA,24H;将显示时间送A
CJNEA,#20,T40T;判断时间,选初始值
T20T:
;南北通行要显示的时间为20的计数器初始值
CLRTF0;清TF0
CLRTF1;清TF1
MOVTH1,#0FFH;送20秒时的初始值
MOVTH0,#0FFH
MOVTL0,#0FCH
LJMPTEMP20;跳到20秒
TEMP20:
;TEMP1=20情况
SETBTR0;开始计数
SETBTR1
CLR
CLR;南北通行,东西禁止通行
CLR
CLR
MOVTEMP1,#20;南北要显示的时间,
MOVTEMP2,#25;东西要显示的时间
STLOP:
ACALLDISPLAY1;调用显示
DECTEMP1;时间够一秒显示时间减1
DECTEMP2
MOVA,TEMP1
CJNEA,#0,NEXT;若显示时间不为0保持现在状态
LJMPSTAR2;若显示时间为0跳到第二状态
NEXT:
LJMPSTLOP
STAR2:
;状态1
SETB
CLR;南北黄灯,东西禁止通行
SETB
CLR
MOVTEMP1,#05;南北要显示的时间,
MOVTEMP2,#05;东西要显示的时间,
STLOP2:
ACALLDISPLAY1;调用显示
DECTEMP1;时间够一秒显示时间减1
DECTEMP2
CJNEA,#0,NEXT2;若显示时间不为0保持现在状态
JBTF1,T40;判断南北是否多车
JBTF0,T40;判断北南是否多车
MOVTEMP1,#20;少车下次显示时间为20秒
LJMPSTAR3;若显示时间为0跳到第三状态
NEXT2:
LJMPSTLOP2
SETBTR0;开始计数
SETBTR1
CLR
CLR;南北通行,东西禁止通行
CLR
CLR
MOVTEMP1,#20;南北要显示的时间,
MOVTEMP2,#25;东西要显示的时间
STLOP11:
ACALLDISPLAY1;调用显示
DECTEMP1;时间够一秒显示时间减1
DECTEMP2
MOVA,TEMP1
CJNEA,#0,NEXT11;若显示时间不为0保持现在状态
LJMPSTAR22;若显示时间为0跳到第二状态
NEXT11:
LJMPSTLOP11
STAR22:
;状态1
SETB
CLR;南北黄灯,东西禁止通行
SETB
CLR
MOVTEMP1,#05;南北要显示的时间,
MOVTEMP2,#05;东西要显示的时间,
STLOP22:
ACALLDISPLAY1;调用显示
DECTEMP1;时间够一秒显示时间减1
DECTEMP2
MOVA,TEMP1
CJNEA,#0,NEXT22;若显示时间不为0保持现在状态
LJMPSTAR3;若显示时间为0跳到第三状态
NEXT22:
LJMPSTLOP22
STAR3:
MOVA,26H
CJNEA,#25,T40T1;判断时间,选初始值
T20T1:
;南北通行要显示的时间为20的计数器初始值
CLRTF0;清溢出位
CLRTF1
MOVTH1,#0FFH;给初值
MOVTL1,#0FCH
MOVTH0,#0FFH
MOVTL0,#0FCH
LJMPTEMP320
CLRTF0;
CLRTF1
MOVTH1,#0FFH;给初值
MOVTL1,#0F8H
MOVTH0,#0FFH
MOVTL0,#0F8H
LJMPTEMP340
TEMP320:
;状态三
SETBTR1;南北停止计数
SETBTR0;东西开始计数
SETB;东西通行,南北禁止通行
CLR
SETB
CLR
SETB
CLR
SETB
CLR
MOVTEMP3,#25;南北要显示的时间,
MOVTEMP4,#20;东西要显示的时间,
STLOP33:
ACALLDISPLAY;调用显示
DECTEMP3;时间够一秒显示时间减1
DECTEMP4
MOVA,TEMP4
CJNEA,#0,NEXT33;若显示时间不为0保持现在状态
LJMPSTAR34;若显示时间为0跳到第四状态
NEXT33:
LJMPSTLOP33
STAR34:
;状态四
SETB
CLR
SETB;东西黄灯,南北禁止通行
CLR
MOVTEMP3,#05;南北要显示的时间,
MOVTEMP4,#05;东西要显示的时间,
STLOP34:
ACALLDISPLAY;调用显示
DECTEMP3;时间够一秒显示时间减1
DECTEMP4
MOVA,TEMP4
CJNEA,#0,NEXT34;若显示时间不为0保持现在状态
JBTF1,T402
JBTF0,T402
MOVTEMP3,#25
NEXT34:
LJMPSTLOP34
TEMP340:
SETBTR1;南北停止计数
SETBTR0;东西开始计数
SETB;东西通行,南北禁止通行
CLR
SETB
CLR
SETB
CLR
SETB
CLR
MOVTEMP3,#25;南北要显示的时间,
MOVTEMP4,#20;东西要显示的时间,
STLOP43:
ACALLDISPLAY;调用显示
DECTEMP3;时间够一秒显示时间减1
DECTEMP4
MOVA,TEMP4
CJNEA,#0,NEXT43;若显示时间不为0保持现在状态
LJMPSTAR44;若显示时间为0跳到第四状态
NEXT43:
LJMPSTLOP43
STAR44:
;状态四
SETB
CLR
SETB;东西黄灯,南北禁止通行
CLR
MOVTEMP3,#05;南北要显示的时间,
MOVTEMP4,#05;东西要显示的时间,
STLOP44:
ACALLDISPLAY;调用显示
DECTEMP3;时间够一秒显示时间减1
DECTEMP4
MOVA,TEMP3
CJNEA,#0,NEXT44;若显示时间不为0保持现在状态
JBTF1,T403
JBTF0,T403
MOVTEMP3,#25
LJMPSTAR
T403:
MOVTEMP3,#25
LJMPSTAR
NEXT44:
LJMPSTLOP44
;显示
DISPLAY1:
MOVA,TEMP1;将南北要显示的数存放到A
MOVB,#10;B=10
DIVAB;A除以B商存A,余数B
MOVB_BIT,A;将A放到20H
MOVA_BIT,B;将B放到21H
MOVA,TEMP2;将东西要显示的数存放到A
MOVB,#10;B=10
DIVAB;A除以B商存A,余数B
MOVC_BIT,A;将A放到22H
MOVD_BIT,B;将B放到23H
MOVDPTR,#NUMT;
MOVR0,#2;R0=2
DPL11:
MOVR1,#250;R1=250
DPLOP1:
MOVA,A_BIT;将南北要显示的10位数送A
MOVCA,@A+DPTR;查表
MOVP0,A;显示南北10位数
CLR
ACALLD1MS;延时1MS
SETB;灭南北10位数
MOVA,B_BIT;将南北要显示的个位数送A
MOVCA,@A+DPTR;查表
MOVP0,A;显示南北个位数
CLR
ACALLD1MS;延时1MS
SETB;灭南北个位数
MOVA,C_BIT;将东西要显示的10位数送A
MOVCA,@A+DPTR;查表
MOVP0,A;显示东西10位数
CLR
ACALLD1MS;延时1MS
SETB;灭东西10位数
MOVA,D_BIT;将东西要显示的个位数送A
MOVCA,@A+DPTR;查表
MOVP0,A;显示东西东西位数
CLR
ACALLD1MS;延时1MS
SETB;灭东西个位数
DJNZR1,DPLOP;循环扫描
DJNZR0,DPL1
RET;等待1秒返回
;显示
DISPLAY:
MOVA,TEMP3;将南北要显示的数存放到A
MOVB,#10;B=10
DIVAB;A除以B商存A,余数B
MOVB_BIT,A;将A放到20H
MOVA_BIT,B;将B放到21H
MOVA,TEMP4;将东西要显示的数存放到A
MOVB,#10;B=10
DIVAB;A除以B商存A,余数B
MOVC_BIT,A;将A放到22H
MOVD_BIT,B;将B放到23H
MOVDPTR,#NUMT;
MOVR0,#2;R0=2
DPL1:
MOVR1,#250;R1=250
DPLOP:
MOVA,A_BIT;将南北要显示的10位数送A
MOVCA,@A+DPTR;查表
MOVP0,A;显示南北10位数
CLR
ACALLD1MS;延时1MS
SETB;灭南北10位数
MOVA,B_BIT;将南北要显示的个位数送A
MOVCA,@A+DPTR;查表
MOVP0,A;显示南北个位数
CLR
ACALLD1MS;延时1MS
SETB;灭南北个位数
MOVA,C_BIT;将东西要显示的10位数送A
MOVCA,@A+DPTR;查表
MOVP0,A;显示东西10位数
CLR
ACALLD1MS;延时1MS
SETB;灭东西10位数
MOVA,D_BIT;将东西要显示的个位数送A
MOVCA,@A+DPTR;查表
MOVP0,A;显示东西东西位数
CLR
ACALLD1MS;延时1MS
SETB;灭东西个位数
DJNZR1,DPLOP;循环扫描
DJNZR0,DPL1
RET;等待1秒返回
D1MS:
MOVR7,#250;1MS延时程序
DJNZR7,$
RET;