基于51单片机的交通控制系统模拟设计.docx
《基于51单片机的交通控制系统模拟设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的交通控制系统模拟设计.docx(24页珍藏版)》请在冰豆网上搜索。
基于51单片机的交通控制系统模拟设计
基于51单片机得交通控制系统模拟设计
学院:
电气与控制工程学院
专业:
自动化
姓名:
1、 设计思路2
2、2显示界面方案ﻩ2
2、3 输入方案:
ﻩ2
3单片机交通控制系统总体设计2
3、1单片机交通控制系统得通行方案设计ﻩ2
3、2单片机交通控制系统得功能要求ﻩ4
4、2系统硬件电路构成ﻩ5
5 系统软件程序得设计7
参考文献……………………………………………………………………………………………、、17
设计心得体会………………………………………………………………………………………、、、18
附录……………………………………………………………………………………………………19
基于单片机得交通控制系统模拟设计
1、 设计思路
(1)分析目前交通路口得基本控制技术以及各种通行方案,并以此为基础提出自己得交通控制得初步方案。
(2)确定系统交通控制得总体设计,包括,十字路口具体得通行禁行方案设计以及系统应拥有得各项功能,在这里,本设计除了有信号灯状态控制能实现基本得交通功能,还增加了倒计时显示提示,基于实际情况,又增加了紧急状况处理与通行时间可调这两项特特殊功能。
(3)进行显示电路,灯状态电路,按键电路得设计与对各器件得选择及连接,大体分配各个器件及模块得基本功能要求.
(4)进行软件系统得设计,对于本系统,采用单片机C语言编写,对单片机内部结构与工作情况做了充足得研究,了解定时器,中断以及延时原理,总体上完成了软件得编写。
2、单片机交通控制系统方案得比较、设计与论证
2、1 电源提供方案
采用单片机控制模块提供电源。
改方案得优点就是系统简明扼要,
节约成本;缺点就是输出功率不高。
2、2显示界面方案
采用数码管显示.这种方案只显示有限得符号与数码字符,简单,方便。
2、3输入方案:
由于该系统对于交通灯及数码管得控制,只用单片机本身得I/O 口就可实现,且本身得计数器及RAM已经够用,故选择方案二.
3 单片机交通控制系统总体设计
3、1单片机交通控制系统得通行方案设计
设在十字路口,分为东西向与南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂得过渡时间,将通行禁行方向对换。
其具体状态如下所示。
交通状态从状态1开始变换,直至状态6然后循环至状态1,周而复始。
通过具体得路口交通灯状态得演示分析我们可以把这四个状态归纳如下:
◆南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时30秒。
此状态下,东西向禁止通行,南北向允许通行.
◆南北方向绿灯灭,东西方向红灯灭,同时黄灯亮,倒计时3秒。
此状态下,除了已经正在通行中得其她所以车辆都需等待状态转换。
◆黄灯灭,同时南北方向红灯亮,东西方向绿灯亮,倒计时30秒。
此状态下,东西向允许通行,南北向禁止通行。
◆东西方向绿灯灭,南北方向红灯灭,同时黄灯亮,倒计时3秒.此状态下,除了已经正在通行中得其她所以车辆都需等待状态转换.
下面我们可以用图表表示灯状态与行止状态得关系如下:
表1交通状态及红绿灯状态
状态1
状态2
状态3
状态4
东西向
禁行
等待变换
通行
等待变换
南北向
通行
等待变换
禁行
等待变换
东西红灯
1
0
0
0
东西黄灯
0
1
0
1
东西绿灯
0
0
1
0
南北红灯
0
0
1
0
南北绿灯
1
0
0
1
南北黄灯
0
1
0
0
东西南北四个路口均有红绿黄3灯,在任一个路口,遇红灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。
状态及红绿灯状态如表1所示。
说明:
0表示灭,1表示亮。
3、2单片机交通控制系统得功能要求
本设计能模拟基本得交通控制系统,用红绿黄灯表示禁行,通行与等待得
信号发生,还能进行倒计时显示.
(1)倒计时显示
倒计时显示可以提醒驾驶员在信号灯灯色发生改变得时间、在“停止”与“通过”两者间作出合适得选择。
驾驶员与行人普遍都愿意选择有倒计时显示得信号控制方式,并且认为有倒计时显示得路口更安全。
倒计时显示就是用来减少驾驶员在信号灯色改变得关键时刻做出复杂判断得1种方法,它可以提醒驾驶员灯色发生改变得时间,帮助驾驶员在“停止”与“通过”两者间作出合适得选择。
3、3单片机交通控制系统得基本构成及原理
单片机设计交通灯控制系统,可用单片机直接控制信号灯得状态变化,基本上可以指挥交通得具体通行,当然,接入LED数码管就可以显示倒计时以提醒行使者,更具人性化。
本系统在此基础上,加入了紧急情况处理与时间调整功能。
图2系统得总体框图
据此,本设计系统以单片机为控制核心,连接成最小系统,由按键设置模块产生输入,信号灯状态模块,LED倒计时模块模块接受输出。
系统得总体框图如上所示。
单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED数码管上实时显示。
在此过程中随时调用急停按键.
4智能交通灯控制系统得硬件设计
4、1系统硬件总电路构成及原理
实现本设计要求得具体功能,可以选用AT89C51单片机及外围器件构成最小控制系统,12个发光二极管分成4组红绿黄三色灯构成信号灯指示模块,1个LED构成倒计时显示模块,若干按键组成紧急按钮.
4、2系统硬件电路构成
本系统以单片机为核心,系统硬件电路由状态灯,LED显示,按键,组成.其具体得硬件电路总图如图3、1所示。
其中P0用于送显两片LED数码管,P1用于控制红绿黄发光二极管,XTAL1与XTAL2接入晶振时钟电路,REST引脚接上复位电路,P2、6与P2、7对数码管进行片选,P3、2即INT0紧急情况处理按键,P3、3即INT1接时间调整中断按键。
4、3系统工作原理
系统上电或手动复位之后,系统先显示状态灯及LED数码管,将状态码值送显P1口,将要显示得时间值得个位与十位分别送显P0口,在此同时用软件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。
时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态得相应状态码值以及时间值,
基于单片机得交通灯控制系统电路图
LED连接图
信号灯得连接
5 系统软件程序得设计
5、1程序主体设计流程
全部控制程序实际上分为若干模块:
键盘设置处理程序,状态灯控制程序,LED显示程序紧停程序,中断服务子程序等。
整个软件程序方面主要分两大部分:
主程序部分与中断处理程序。
流程图如图9所示。
系统总流程图
设计说明:
该智能交通灯控制系统得软件设计采用得就是顺序执行并反复循环得方法。
智能交通灯控制系统在正常工作得情况下,每30s循环变化一次。
每个循环周期在还剩3s时,正在通行路口得黄灯同时点亮并开始闪烁,以提醒路人上得行人及车辆,交通灯即将发生变化.在此期间若中断按键按下则转入中断服务子程序进行相关操作。
设计心得体会
吴震
在焊接过程中,我们学会应先合理得布局,并认真检查每个元器件,确保无误后再焊接。
还有,不能急于求成,要焊接一个模块,检查一个模块,免得整个版子焊完后再在一大堆线中检查,这样不仅效率低且耗时。
自然,我们也学会如何去发现问题与解决问题得一些方法。
至于软件设计与调试,我觉得它主要考验您得思维逻辑能力及您对指令得熟悉程度。
可以说再整个软件设计过程中,我不仅学会了延时得两种方法,即软件延时与硬件延时,还掌握数码管得两种显示方式(即动态显示与静态显示)及其如何选择。
当然,通过几次反复调试过程,使得我对汇编指令有了更深刻得理解。
在整个课程设计过程我还掌握了一下几点:
(1)掌握了电子系统设计得流程,熟悉了各种硬件电路以及软件编程方法。
(2)理解了最单片机得各部分组成及特性。
(3)熟练使用了各种计算机辅助设计工具完成设计,充分掌握了这些工具得使用.
通过本次得课程设计,充分意识到自己所学得东西还就是非常有限得,不过通过设计,还就是学到了一些书本上没有学到得东西,为自己以后得学习起了很大得帮助。
就我个人而言,很深刻地体会到一点,那就就是我们在设计过程中一定要有一个整体得清晰得思路,知道自己得设计得对象得基本功能与核心器件得适用及其作用,只要把握住这些主要方面,一些小问题都将围绕着这些主要问题而逐步得到解决。
同时我也懂得,在整个设计过程中,生活中也一样,一定要意志坚定,克服自己得畏难情绪,这样才能将事情做好,才能干出一番成就。
设计心得体会
赵玉峰
我觉得类似这种课程设计得实践真得不错,通过这些项目练习,我自学能力,解决实际问题得能力得到提高,可以说就是对综合素质全面提升,我想这也就是我们上大学应真正学到得。
在这次课程设计中,我最大得感受之一就就是“知识欠缺”.通过这次课程设计,我知道了自己得缺陷。
因为在平日里得学习中,只讲究完成作业与考试,对知识得实用性不就是太重视.通过本次课程设计我明白了学以致用得得重要性。
我得另一个感受就就是“团队意识”。
从开始得确定方向题目,到最后得完成制作,我们小组成员始终坚守在一起,各尽所能,各施所长,互相鼓励,互相学习,一起克服了重重困难。
我想,不管我们得艰辛能否换来我们期待得结果,我们都将无怨无悔。
设计心得体会
文毅
作为一名自动化专业得大三学生,我觉得做单片机课程设计就是十分有意义得,而且就是十分必要得。
在已度过得大学时间里,我们大多数接触得就是专业课。
我们在课堂上掌握得仅仅就是专业课得理论知识,如何去锻炼我们得实践能力?
如何把我们所学得专业基础课理论知识运用到实践中去呢?
我想做类似得课程设计就为我们提供了良好得实践平台。
通过这次设计,我懂得了学习得重要性,了解到理论知识与实践相结合得重要意义,学会了坚持、耐心与努力,这将为自己今后得学习与工作做出了最好得榜样。
我觉得作为一名自动化专业得学生,单片机得课程设计就是很有意义得。
更重要得就是如何把自己平时所学得东西应用到实际中。
附录
附录一:
系统总体原理图
附录二:
系统程序清单
#include〈reg52、h〉
#defineuint unsignedint
#defineuchar unsignedchar
ucharnum;
uint a;
ucharcodetable[]={
0x90,0x80,0xf8,0x82,0x92 ,0x99,0xb0,0xa4,0xf9 ,0xc0
};
voiddelay(uint z);
aa();
bb();
void Outside_Init(void)
{
EX0=1;//开外部中断0
EX1 = 1;//开外部中断1
ﻩIT0=1; //负边沿触发
IT1=1;//负边沿触发
}ﻩ
void main()
{Outside_Init();
EA=1;
ﻩwhile
(1)
{{ﻩP1=0xf3;
aa();
ﻩ }
ﻩfor(num=6;num<9;num++)
ﻩﻩ{P1=0xed;
ﻩfor(a=0;a<=50;a++)
{P2=0xfd;
P0=0xc0;
ﻩ delay(10);
P2=0xfb;P0= table[num];
ﻩ delay(10);}}
ﻩﻩﻩ{P1=0xde;
aa();
}
for(num=6;num〈9;num++)
ﻩﻩ{ﻩP1=0xed;
ﻩfor(a=0;a〈=50;a++)
{P2=0xfd;
P0=0xc0;
ﻩ delay(10);
P2=0xfb;P0= table[num];
ﻩ delay(10);
ﻩ }ﻩ
ﻩ }}}
void Outside_Int1(void)interrupt1using1
{if(p3^2==0)
{P1=0xb3;
bb();}
}
voidOutside_Int2(void)interrupt2ﻩusing1
{if(p3^3==0)
{P1=0x9e;
bb();}
}
aa()
ﻩ {
for(a=0;a<=50;a++)
{
P2=0xfd;
P0=0xb0;
delay(10);
ﻩP2=0xfb;P0=0xc0;
delay(10)ﻩ;
}ﻩ
ﻩﻩﻩ//30
for(a=0;a<=50;a++)ﻩ
{
P2=0xfd;
P0=0xa4;
ﻩdelay(10);
ﻩ P2=0xfb;P0=0x90;
delay(10)ﻩ;
ﻩ}ﻩ//29
for(a=0;a<=50;a++)ﻩ
{
P2=0xfd;
P0=0xa4;
delay(10);
ﻩ P2=0xfb;P0=0x80;
ﻩdelay(10);
}ﻩ//28
for(a=0;a〈=50;a++)ﻩ
{
P2=0xfd;
P0=0xa4;
ﻩdelay(10);
ﻩP2=0xfb;P0=0xf8;
ﻩ delay(10);
ﻩ} //27
for(a=0;a<=50;a++)ﻩ
{
P2=0xfd;
P0=0xa4;
ﻩdelay(10);
ﻩ P2=0xfb;P0=0x82;
delay(10)ﻩ;
ﻩ}ﻩ//26
ﻩ for(a=0;a〈=50;a++)
{
P2=0xfd;
P0=0xa4;
delay(10);
P2=0xfb;P0=0x92;
delay(10);
ﻩ }ﻩ//25
for(a=0;a〈=50;a++)ﻩ
{
P2=0xfd;
P0=0xa4;
delay(10);
P2=0xfb;P0=0x99;
delay(10)ﻩ;
}ﻩ//24
ﻩfor(a=0;a<=50;a++)
{
P2=0xfd;
P0=0xa4;
delay(10);
P2=0xfb;P0=0xb0;
delay(10);
ﻩ }ﻩﻩ//23
ﻩfor(a=0;a<=50;a++)
{
P2=0xfd;
P0=0xa4;
ﻩ delay(10);
P2=0xfb;P0=0xa4;
ﻩ delay(10)ﻩ;
ﻩ}//22
ﻩ for(a=0;a<=50;a++)
{
P2=0xfd;
P0=0xa4;
ﻩdelay(10);
P2=0xfb;P0=0xf9;
delay(10);
ﻩ}//21
ﻩfor(a=0;a〈=50;a++)
{
P2=0xfd;
P0=0xa4;
delay(10);
P2=0xfb;P0=0xc0;
delay(10)ﻩ;
ﻩ}ﻩﻩ//20
ﻩ ﻩfor(a=0;a〈=50;a++)
{
P2=0xfd;
P0=0xf9;
delay(10);
P2=0xfb;P0=0x90;
delay(10)ﻩ;
ﻩ }ﻩ//19
ﻩfor(a=0;a〈=50;a++)ﻩ
{
P2=0xfd;
P0=0xf9;
ﻩ delay(10);
ﻩP2=0xfb;P0=0x80;
ﻩdelay(10);
ﻩ}ﻩ//18
ﻩﻩfor(a=0;a〈=50;a++)ﻩ
{
P2=0xfd;
P0=0xf9;
ﻩdelay(10);
P2=0xfb;P0=0xf8;
delay(10);
}ﻩ//17
ﻩfor(a=0;a〈=50;a++)ﻩ
{
P2=0xfd;
P0=0xf9;
delay(10);
ﻩP2=0xfb;P0=0x82;
delay(10)ﻩ;
}ﻩﻩ//16
for(a=0;a<=50;a++)ﻩ
{
P2=0xfd;
P0=0xf9;
ﻩdelay(10);
ﻩP2=0xfb;P0=0x92;
ﻩ delay(10);
}ﻩ//15
ﻩﻩfor(a=0;a〈=50;a++)
{
P2=0xfd;
P0=0xf9;
delay(10);
ﻩP2=0xfb;P0=0x99;
delay(10)ﻩ;
ﻩ }ﻩﻩ//14
ﻩﻩfor(a=0;a〈=50;a++)
{
P2=0xfd;
P0=0xf9;
delay(10);
P2=0xfb;P0=0xb0;
ﻩdelay(10);
ﻩ}//13
for(a=0;a〈=50;a++)
{
P2=0xfd;
P0=0xf9;
delay(10);
P2=0xfb;P0=0xa4;
ﻩdelay(10);
ﻩ}ﻩ//12
for(a=0;a〈=50;a++)
{
P2=0xfd;
P0=0xf9;
ﻩdelay(10);
P2=0xfb;P0=0xf9;
delay(10);
}//11
for(a=0;a<=50;a++)
{
P2=0xfd;
P0=0xf9;
ﻩdelay(10);
ﻩP2=0xfb;P0=0xc0;
delay(10);
ﻩ }ﻩﻩ//10
ﻩﻩfor(a=0;a<=50;a++)
{
P2=0xfd;
P0=0xc0;
delay(10);
P2=0xfb;P0=0x90;
ﻩ delay(10)ﻩ;
ﻩ }ﻩ//09
ﻩfor(a=0;a<=50;a++)
{
P2=0xfd;
P0=0xc0;
ﻩdelay(10);
P2=0xfb;P0=0x80;
ﻩdelay(10);
ﻩ }ﻩﻩ//08
ﻩ ﻩfor(a=0;a〈=50;a++)ﻩ
{
P2=0xfd;
P0=0xc0;
delay(10);
P2=0xfb;P0=0xf8;
ﻩdelay(10)ﻩ;
}ﻩ//07
for(a=0;a〈=50;a++)
{
P2=0xfd;
P0=0xc0;
delay(10);
P2=0xfb;P0=0x82;
ﻩdelay(10);
}//06
for(a=0;a<=50;a++)ﻩ
{
P2=0xfd;
P0=0xc0;
delay(10);
ﻩ P2=0xfb;P0=0x92;
delay(10)ﻩ;
}ﻩ//05
for(a=0;a<=50;a++)
{
P2=0xfd;
P0=0xc0;
delay(10);
P2=0xfb;P0=0x99;
ﻩdelay(10);
ﻩ}ﻩ//04
ﻩ for(a=0;a<=50;a++)ﻩ
{
P2=0xfd;
P0=0xc0;
ﻩdelay(10);
P2=0xfb;P0=0xb0;
ﻩ delay(10);
}//03
ﻩﻩfor(a=0;a<=50;a++)
{
P2=0xfd;
P0=0xc0;
delay(10);
P2=0xfb;P0=0xa4;
delay(10)ﻩ;
ﻩ }ﻩﻩ//02
ﻩfor(a=0;a〈=50;a++)
{
P2=0xfd;
P0=0xc0;
ﻩ delay(10);
P2=0xfb;P0=0xf9;
ﻩ delay(10)ﻩ;
ﻩ }//01
ﻩfor(a=0;a<=50;a++)ﻩ
{
P2=0xfd;
P0=0xc0;
ﻩdelay(10);
ﻩP2=0xfb;P0=0xc0;
delay(10)ﻩ;
ﻩ}//00
ﻩ}
bb()
ﻩ{
ﻩﻩfor(a=0;a<=50;a++)
{
P2=0xfd;
P0=0xf9;
delay(10);
P2=0xfb;P0=0xc0;
ﻩdelay(10);
ﻩ}ﻩ//10
for(a=0;a〈=50;a++)
{
P2=0xfd;
P0=0xc0;
ﻩdelay(10);
P2=0xfb;P0=0x90;
delay(10);
ﻩ}ﻩﻩ//09
for(a=0;a〈=50;a++)ﻩ
{
P2=0xfd;
P0=0xc0;
delay(10);
P2=0xfb;P0=0x80;
ﻩdelay(10)ﻩ;
}ﻩﻩ//08
ﻩﻩfor(a=0;a<=50;a++)ﻩ
{
P2=0xfd;
P0=0xc0;
delay(10);
ﻩ P2=0xfb;P0=0xf8;
ﻩdelay(10);
}ﻩﻩ//07
ﻩﻩ for(a=0;a<=50;a++)ﻩ
{
P2=0xfd;
P0=0xc0;
ﻩdelay(10);
P2=0xfb;P0=0x82;
delay(10);
ﻩ}//06
ﻩfor(a=0;a<=50;a++)ﻩ
{
P2=0xfd;
P0=0xc0;
ﻩ delay(10);
ﻩP2=0xfb;P0=0x92;
ﻩ delay(10);
}ﻩ//05
ﻩﻩfor(a=0;a〈=50;a++)ﻩ
{
P2=0xfd;
P0=0xc0;
ﻩdelay(10);
P2=0xfb;P0=0x99;
delay(10);
ﻩ}ﻩﻩ//04
for(a=0;a<=50;a++)ﻩ
{
P2=0xfd;
P0=0xc0;
delay(10);
P2=0xfb;P0=0xb0;
ﻩdelay(10)ﻩ;
ﻩ}ﻩ//03
ﻩﻩfor(a=0;a〈=50;a++)ﻩ
{
P2=0xfd;
P0=0xc0;
ﻩdelay(10);
ﻩP2=0xfb;P0=0xa4;
ﻩ delay(10)ﻩ;
ﻩ}ﻩﻩ//02
ﻩ for(a=0;a〈=50;a++)
{
P2=0xfd;
P0=0xc0;
ﻩdelay(10);
ﻩP2=0xfb;P0=0xf9;
ﻩdelay(10)ﻩ;
}ﻩﻩ//01
ﻩ for(a=0;a<=50;a++)
{
P2=0xfd;
P0=0xc0;
ﻩ delay(10);
ﻩP2=0xfb;P0=0xc0;
delay(10);
}ﻩ//00
ﻩ}
voiddelay(uint z