长安大学交通控制课程设计报告三相位交通信号灯设计课设项目:三相位交叉口交通信号灯设计学院:信息工程学院专业:计算机科学与技术(交通信息工程)班级:24020804学生姓名:王豪荣吴涛陈亮星学号:2402080406 240080409 2402080417 指导老师:崔建明目录交通控制与管理课程设计报告 (1)一、引言 (3)1.1背景与现状 (3)1.2开发设计的目的 (3)1.3课程设计的内容 (3)二、系统概要设计 (3)2.1设计模块的分工 (4)2.2丁字路口三相位设计 (4)2.3整体设计 (5)2.4模拟硬件部分设计 (6)三.核心算法描述: (8)3.1延时函数算法 (8)3.28段LED显示器控制函数算法 (8)3.3信号灯控制函数算法 (9)四、实验结果与分析 (10)五、结束语 (11)参考文献 (12)附录: (12)一、引言1.1 背景与现状当今社会经济高速发展,人们的交通问题也越来越引起关注。
人,车,路三者关系的协调,已成为交通管理部门急需解决的重要问题之一。
城市交通控制系统是用于城市交通数据监测,交通信号灯控制与交通疏导的计算机综合管理系统,它是现在城市交通监控指挥系统中最重要的组成部分。
随着城市机动车的不断增加,许多大城市如北京,上海,南京等出现了了交通超负荷运行的状况,然后就是这些城市纷纷修建城市高速道路。
初期确实改善了交通状况。
然而,随着交通量的快速增长,以及缺乏对这些道路的系统研究和控制,城市的交通问题又出现了,而且有着愈演愈烈的趋势,所以我们必须对在有限的道路资源怎样进行交通疏导进行深入的研究。
1.2 开发设计的目的通过对丁字路口的三相位设计,深刻理解相位的概念,掌握三相位的设计,并学会在proteux软件上模拟用三相位完成丁字路口信号灯的设计与控制,以达到交通疏导的目的。
1.3 课程设计的内容本次课程设计运用到proteux软件和keil软件模拟交通信号灯的控制,然后设计一个丁字路口的三相位的交通信号灯的控制,每个进口道必须有红、黄、绿三色交通信号灯,在绿灯变绿灯期间黄灯亮,并要求每秒闪亮一次。
二、系统概要设计2.1 设计模块的分工本次课程设计过程中,组长为吴涛,首先是王豪荣,吴涛,陈亮星三人共同完成丁字路口三相位相位图的设计,然后是王豪荣与吴涛共同完成电路图的设计,吴涛与陈亮星完成代码的实现,最后是课程设计报告部分,王豪荣负责课程设计报告的设计背景,设计目的与要求,吴涛完成系统设计概要设计,陈亮星完成实验结果的分析以及其他部分。
2.2丁字路口三相位设计本次课程设计需要根据实际情况的交通道路情况来模拟控制丁字交叉路口的交通信号灯从而来提高交通流量,减少延误。
但由于没有实际监测数据,所以按照道路的基本情况设计一个丁字路口的三相位来进行设计和控制交通灯。
相位图分别如下:图2-1 相位一图2-2 相位二图2-3 相位32.3整体设计Proteux软件电路图的设计,包括AT89C51单片机的控制,LED显示灯和8段LED显示器的显示:图2-4 整体框架图2.4模拟硬件部分设计通过三种颜色的LED显示灯和8段LED显示器对电路的运行进行显示。
图2-5 LED显示灯图2-6 LED显示器通过利用AT89C51单片机作为主终端,其他的一些电路硬件都要连接到AT89C51上。
它是此次模拟的最核心以及最重要部分。
图2-7 AT89C51单片机用LED-GREEN作为绿灯,LED-RED作为红灯,LED-YELLOW作为黄灯显示,用来表明显示车辆的通行与禁止情况。
然后用数码显示器显示车辆通行与禁止信号灯的控制时间。
图2-8 进口一显示灯三.核心算法描述:3.1延时函数算法void DelayMS(uint x){uint t;while(x--){for(t=120;t>0;t--);}}3.2 8段LED显示器控制函数算法void Displ ay(int y){int i,j,a,b;//环境变量for(j=y;j>=0;j--) //for循环控制时间{if(j>3) //判断是否是最后三秒{a=j/10; //取时间十位数b=j%10; //取时间个位数for(i=0;i<8;i++) //for循环在8段l ed显示器上显示时间{P3=0x40; //选中十位P1=~Disp_Tab[a]; //进行显示Del ayMS(30); //调用延时P3=0x80; //选中各位P1=~Disp_Tab[b]; //进行显示Del ayMS(30); //调用延时}}El se //是最后三秒启动黄灯闪烁{a=j/10;b=j%10;for(i=0;i<8;i++){if(i%3==0){switch(y) //只用了一个8段显示器,需要判断显示那个路口的黄色灯{case 12:YELLOW_E=~YELLOW_E;break;case 13:YELLOW_W=~YELLOW_W;break;case 14:YELLOW_N=~YELLOW_N;break;}}if(i%2==0) //8段显示器上数字闪烁{P3=0x40;P1=~Disp_Tab[a];Del ayMS(30);P3=0x80;P1=~Disp_Tab[b];Del ayMS(30);}el se{P3=0x00;Del ayMS(60);}}}}}3.3信号灯控制函数算法void Traffic_lignt(){switch(Operation_Type) //switch条件分支语句进行相位控制{case 1: //第一相位P0=0x73;P2=0x59;Displ ay(12); //调用8段显示器函数同时控制相位时间Operation_Type = 2;break;case 2: //第二相位P0=0xd6;P2=0x4e;Displ ay(13);Operation_Type = 3;break;case 3: //第三相位P0=0x6b;P2=0x2e;Displ ay(14);Operation_Type = 1;break;default:break;}}四、实验结果与分析通过在proteux软件上运行程序,显示结果如下:图4-1运行结果与设计的预期相吻合。
五、结束语通过这次课程设计,我们三个人共同协作,相互交流,学到了很多东西,比如学会了使用proteus和keil软件,对交通设计的概念有了一定的理解。
同时对proteux软件的器件有了一定的熟悉,最终完成了电路图的设计,然后就是通过keil软件编写程序实现电路的运行,对keil编程有了进一步的了解。
通过实际的操作的同时也巩固了以往的知识,并且使我认识到最初构想思路的重要性。
还有这周内感谢崔老师的精心指导。
参考文献[1]吴兵、李晔.交通管理与控制(第四版)[M].人民交通出版社,2010.[2] 张树升. 交通管理与控制(第一版)[M].人民交通出版社,2009.[3]袁振洲. 道路交通管理与控制(第一版)[M].人民交通出版社,2009附录:#include<reg52.h>#define uchar unsigned char#define uint unsigned intunsigned char cod e Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit YELLOW_W=P0^1;sbit YELLOW_E=P0^6;sbit YELLOW_N=P2^3;uchar Operation_Type = 1;void Del ayMS(uint x){uint t;whil e(x--){for(t=120;t>0;t--);}}void Displ ay(int y){int i,j,a,b;for(j=y;j>=0;j--){if(j>3){a=j/10;b=j%10;for(i=0;i<8;i++){P3=0x40;P1=~Disp_Tab[a];Del ayMS(30);P3=0x80;P1=~Disp_Tab[b];Del ayMS(30);}}el se{a=j/10;b=j%10;for(i=0;i<8;i++){if(i%3==0){switch(y){case 12:YELLOW_E=~YELLOW_E;break;case 13:YELLOW_W=~YELLOW_W;break;case 14:YELLOW_N=~YELLOW_N;break;}}if(i%2==0){P3=0x40;P1=~Disp_Tab[a];Del ayMS(30);P3=0x80;P1=~Disp_Tab[b];Del ayMS(30);}el se{P3=0x00;Del ayMS(60);}}}}}void Traffic_lignt(){switch(Operation_Type){case 1:P0=0x73;P2=0x59;Displ ay(12);Operation_Type = 2;break;case 2:P0=0xd6;P2=0x4e;Displ ay(13);Operation_Type = 3;break;case 3:P0=0x6b;P2=0x2e;Displ ay(14);Operation_Type = 1;break;default:break;}}void main(){whil e(1){Traffic_lignt();}}。