一个十字路口的交通灯控制系统设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个十字路口的交通灯控制系统
一、设计内容和要求:
利用AT89C51单片机设计一十字路口交通灯控制系统。
1:系统主要由单片机、数码管、交通灯组成。
2:具有人行道和基本的交通灯的功能。
3:具有数码管倒计时功能。
4:要求东西和南北车道的车辆交替运行,每次通行为25秒。
5:要求黄灯先亮3秒,才能变换车道,黄灯亮时要求闪亮。
6:有紧急情况的处理办法(如急救车来时)。
二、总体方案设计
本设计研究的是基于AT89C51单片机的交通灯智能控制系统。根据交通控制系统的设计原理,阐述了硬件和软件方面开发的整个过程。
主控系统采用AT89C51单片机作为控制器,控制通行倒计时及直行、行人的通行。并设计了有紧急情况(如急救车到来)时的处理办法。
三、系统的硬件设计
(1)本系统选用通过P0到P3口用做输出显示控制口。P0口用作输出南北方向LED数码管字符编码,P2口用作输出东西方向LED
数码管字符编码。P1.1—P1.4口用于位选及输出南北方向发光二
极管。P1.5和P1.6用作南北方向人行道的控制灯。P1.7和P3.7
用作东西方向人行道的控制灯。P3.0—P3.6口用于位选及输出东
西方向发光二极管。P3.2和P3.3用作外部中断。
(2)LED数码管采用动态显示方式实现倒计时读秒,并且本系统采用的是LED的共阳极接法。
(3)LED动态显示,在多位LED显示时,为了简化电路,降低成本,将段选位并联在一起,由一个八位的I/O口控制,而位选由另一个
口控制,段选码、位选码每次送入后演示1ms,而人的视觉暂留
时间为0.1s,所以在人看来数码管一直亮着,从而在应用中通过动
态扫描的方法显示。
四、设计原理分析
(1)从十字路口交通灯示意图分析可知:东西、南北方向信号灯控制是中心对称的,即无论是主干道还是支干道两侧系统对同方向的信
号灯控制是同步的。
(2)从示意图分析可知,人行道各个方向,系统对两侧的信号灯的控制也是同步的。
(3)人行道和信号灯的显示不是一致的,人应该和车一起走,但应该比车先停下来。
五、原理图(部分引脚未画)
六、流程分析图
假设交通灯交换的周期为60秒,则各个方向交通灯在时间轴上的交换情况如下表所示。
七、流程图
正常情况下交通灯的控制流程图
特殊情况下交通灯的控制流程图
八、实验程序
#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int
uchar code b[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uint a;
sbit P30=P3.0;
sbit P31=P3.1;
sbit P10=P1.0;
sbit P11=P1.1;
void main()
{uint i;
P30=1;P31=1;P10=1;P11=1;
P0=b[8];P2=b[8];P1=OX2B;P3=0XA3;
* * void delay(void)
{unsigned char e,f,g;
for(g=252;g>0;g--)
for(f=230;f>0;f--)
for(e=33;e>0;e--);
nop; //初始化,数码管显示88并延时4s
while(1)
{for(i=250;i>0;i--)
{calc();}JS();}}
void delayms(uint m)
{uchar i,j;
for(i=m;i>0;i--)
for(j=110;j>0;j--);
}
void calc()
{ P30=1;
P10=1;
P0=b[3];P2=b[3];
delayms(10);
P30=0;P31=1;
P10=0;P11=1
* * P0=b[9];P2=b[9];
delayms(10);
P1.2=1;P3.6=1;P3=0;
Delay28s;}
void JS()
{a++;
if(a==10) a=0;}
九、调试运行
1、按照硬件图接线,确保东西南北方向红黄绿灯以及数码管能够对应显示。
2、将程序拷进单片机并安装在实验板上,接上电源,打开开关,观察六个LED灯是否与交通显示情况对应,如果有偏差,则单步运行,进行调试,直至满足设计要求。
3、整体运行,观察灯显示和时间显示是否都符合要求,如果不符合,则再调试。直至满足要求。