单片机控制的交通灯控制系统设计.docx

上传人:b****4 文档编号:6984176 上传时间:2023-05-10 格式:DOCX 页数:23 大小:201.19KB
下载 相关 举报
单片机控制的交通灯控制系统设计.docx_第1页
第1页 / 共23页
单片机控制的交通灯控制系统设计.docx_第2页
第2页 / 共23页
单片机控制的交通灯控制系统设计.docx_第3页
第3页 / 共23页
单片机控制的交通灯控制系统设计.docx_第4页
第4页 / 共23页
单片机控制的交通灯控制系统设计.docx_第5页
第5页 / 共23页
单片机控制的交通灯控制系统设计.docx_第6页
第6页 / 共23页
单片机控制的交通灯控制系统设计.docx_第7页
第7页 / 共23页
单片机控制的交通灯控制系统设计.docx_第8页
第8页 / 共23页
单片机控制的交通灯控制系统设计.docx_第9页
第9页 / 共23页
单片机控制的交通灯控制系统设计.docx_第10页
第10页 / 共23页
单片机控制的交通灯控制系统设计.docx_第11页
第11页 / 共23页
单片机控制的交通灯控制系统设计.docx_第12页
第12页 / 共23页
单片机控制的交通灯控制系统设计.docx_第13页
第13页 / 共23页
单片机控制的交通灯控制系统设计.docx_第14页
第14页 / 共23页
单片机控制的交通灯控制系统设计.docx_第15页
第15页 / 共23页
单片机控制的交通灯控制系统设计.docx_第16页
第16页 / 共23页
单片机控制的交通灯控制系统设计.docx_第17页
第17页 / 共23页
单片机控制的交通灯控制系统设计.docx_第18页
第18页 / 共23页
单片机控制的交通灯控制系统设计.docx_第19页
第19页 / 共23页
单片机控制的交通灯控制系统设计.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机控制的交通灯控制系统设计.docx

《单片机控制的交通灯控制系统设计.docx》由会员分享,可在线阅读,更多相关《单片机控制的交通灯控制系统设计.docx(23页珍藏版)》请在冰点文库上搜索。

单片机控制的交通灯控制系统设计.docx

单片机控制的交通灯控制系统设计

成都电子机械高等专科学校成教院

毕业设计(论文)

 

论文题目:

单片机控制的交通灯控制系统设计

教学点:

指导老师:

职称:

讲师

学生姓名:

学号:

专业:

机电一体化技术

 

成都电子机械高等专科学校成教院制

2012年3月20日

成都电子机械高等专科学校成教院

毕业设计(论文)任务书

 

题目:

单片机控制的交通灯控制系统设计

任务与要求:

任务:

利用单片机原理控制十字路口红绿黄交通灯交替点亮和熄灭

要求:

1)绘制交通灯控制系统的系统框图;2)采用protel完成交通灯控制系统的原理图绘制;3)采用C语言完成软件设计;

时间:

2011年11月20日至2012年3月20日共12周

教学点:

学生姓名:

学号:

专业:

机电一体化技术

指导单位或教研室:

指导教师:

职称:

讲师

成都电子机械高等专科学校成教院制

毕业设计(论文)进度计划表

日期

工作内容

执行情况

指导教师

签字

11月25日

12月16日

拟定论文题目

12月17日

12月25日

编写提纲

12月26日

01月19日

查找相关资料

单片机控制交通灯原理图

01月20日

02月10日

初步写作

02月11日

02月30日

审稿

02月31日

03月20日

定稿并上交论文电子档

教师对进度计划实施情况总评

 

                 签名

                      年月日

本表作评定学生平时成绩的依据之一。

摘要

交通控制系统是近现代社会随着物流、出行等交通发展产生的一套独特的公共管理系统。

要保证高效安全的交通秩序,除了制定一系列的交通规则,还必须通过一定的科技手段加以实现。

本文在对目前交通控制进行深入分析的基础上,运用检测传感、实时调整智能化控制的实现技术,将传感器监测、实时调整车辆通行时间的算法与单片机控制作用相结合,提出了基于单片机的交通控制系统设计方案。

8051单片机的交通灯控制系统由8051单片机、交通灯显示、LED倒计时、车流量检测及调整、违规检测、紧急处理、时间模式手动设置等模块组成。

系统除基本交通灯功能外,还具有通行时间手动设置、可倒计时显示、急车强行通过、车流量检测及调整、交通异常状况判别及处理等相关功能。

理论证明该系统能够简单、经济、有效地疏导交通,提高交通路口的通行能力。

本设计主要做了如下几方面的工作:

一是确定系统交通控制的总体设计,包括,十字路口具体的通行禁行方案设计以及系统应拥有的各项功能,二是进行传感器的硬件电路、显示电路等的设计和基本功能要求。

 

关键词:

交通控制、传感检测、AT89S51、倒计时显示

 

Abstract

Trafficcontrolsystemisamodernsocietywithlogistics,traveletcoftrafficdevelopmentauniquesetofpublicmanagementsystem.Toensuretheeffectivesafetytraffic,exceptforaseriesoftrafficrules,stillmustthroughcertaintechnologicalmeanstoachieve.Basedonanalysisoftrafficcontrol,basedonreal-timedetectionsensor,adjusttheimplementationtechnologyofintelligentcontrol,real-timemonitoring,sensoradjustvehiclestimealgorithmandsingle-chipmicrocomputercontrolfunctionisproposed,whichcombinesthetrafficcontrolsystembasedonsinglechipdesignscheme.

The8051microcontrollercontrolsystemconsistsofthetrafficlightsdisplay,8051monolithicintegratedcircuits,andLEDthecountdown,trafficviolationdetection,emergencyadjustment,manualmode,timeasmodules.Inadditiontothebasictrafficfunctionoutside,stillhavetimetomanuallyset,canpassthecountdown,carthatforcedthroughtraffic,inspectionandadjustment,transportationandprocessingabnormaldiscriminantfunctions.Theoryshowsthatthesystemcansimple,economicandeffectiverelievestraffic,improvethecrossroadscapacity.

Thisdesignmainlydothefollowingaspects:

oneistheworkofthetrafficcontrolsystemdesign,includingthecrossroads,specificdesignandsystemshouldberestrictedwitheachfunction,twoisthatthesensor,thehardwarecircuitdesignofthecircuitandthebasicfunctionandrequirement.

Keywords:

trafficcontrol,sensingdetection,displayandcountdown,AT89S5

 

目录

第一章单片机认识-2-

第二章系统总体方案及硬件设计-3-

第一节交通管理的方案-3-

第二节总体硬件设计-3-

第三节系统复位电路-4-

第四节数码管显示电路-4-

第五节路灯指示电路-5-

第六节按键电路设计-6-

第三章软件系统设计-7-

第一节设计思路及关键技术-7-

第二节 交通灯的设计程序说明-7-

第三节延时函数-8-

第四节延时函数-8-

第五节显示函数-9-

第六节定时器0中断函数-9-

第七节源程序代码-10-

第四章Proteus软件仿真16

第一节Proteus软件仿真16

第二节南北路灯切换时仿真16

第三节紧急情况下的仿真17

第四节东西紧急情况下的仿真17

第五节交通灯控制系统的原理图18

结束语19

谢辞20

参考文献21

第一章单片机认识

MCS-51单片机是Intel公司在1980年继MCS-48系列8位单片机之后推出的高档8位单片机。

MCS-51单片机在性能和片内功能方面大大优于MCS-48系列单片机。

MCS-51的典型产品有:

8051、8031、8751、80C51、80C31、87C51等,8051内部有4kBROM,8751内部有4kBEPROM,8031片内无ROM。

除此之外,三者的内部结构及引脚完全相同。

89S51是一种低功耗、高性能CMOS8位微控制器,具有4K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,AT89S51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

单片机是应工业测控需要而产生的,最能反映其功能及形态的名称是在一个应用系统中,Single-chipMicro-controller。

按照测控系统的特点和要求,单片机的应用可分为单机应用和多机应用两大类。

我们这次要完成的单片机课程设计就是它的单机应用,下面在介绍一下单片机在单机应用领域内的主要内容。

(1)智能产品

单片机与传统机械产品相结合,使传统机械产品结构简化,控制智能化,购成新一代机电一体化产品。

目前,利用单片机构成的智能产品已广泛应用于家用电器、办公设备、数控机床、纺织机械、工业设备等行业。

(2)智能仪表

目前,各种传感器、变送器、控制仪表已普遍采用单片机应用系统。

它集测量、处理、控制功能于一体,具有各种智能化功能,如存储、数据处理、查找、判断、联网和语音等功能。

单片机构成的智能仪表,能使仪表具有数字化、智能化、多功能化、综合化、柔性化等优点,赋予测量仪表以崭新的面貌,使传统的仪器、仪表发生根本性的变革,它代表了仪器仪表的发展趋势。

(3)测控技术

用单片机构成的各种工业控制系统中的数据采集系统具有工作稳定可靠、抗干扰能力强的优点,如炉温恒温控制系统、电镀生产自动控制系统等。

(4)智能接口

在计算机系统,特别是较大型的工业测控系统中,除通用外部设备外,还由许多外部通信、采集、多路分配管理、驱动控制等接口。

第二章系统总体方案及硬件设计

第一节交通管理的方案

一、A道和B道上均有车辆要求通过时,A,B道轮流放行。

A道放行5分钟(调试时改为5秒钟),B道放行4分钟(调试时改为4秒钟)。

二、一道有车而另一道无车(实验时用开关K0和K1控制),交通灯控制系统能立即让有车道放行。

三、有紧急车辆要求通过时,系统要能禁止普通车辆通行,A,B道均为红灯,紧急车由K2开关模拟。

四、绿灯转为红灯时,黄灯亮1秒A、B两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。

红灯亮禁止通行,绿灯亮允许通行。

黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为A、B两干道的公共停车时间。

设A道比B道的车流量大,指示灯燃亮的方案如下。

表2-1所示为红黄绿灯的点亮情况

1

4

1

5

1

4

……

A道

黄灯亮

红灯亮

黄灯亮

绿灯亮

黄灯亮

红灯亮

……

B道

黄灯亮

绿灯亮

黄灯亮

红灯亮

黄灯亮

绿灯亮

……

说明:

(1)当为黄灯时A、B两道同时为黄灯;以提示行人或车辆下一个灯色即将到来时间1秒。

(2)当A到为红灯,A道车辆禁止通行,A道行人可通过;B道为绿灯,B道车辆通过,行人禁止通行。

时间为4秒。

(3)当A道绿灯,A道车辆通行;B道为红灯,B道车辆禁止通过,行人通行。

时间为5秒。

A道车流大通行时间长

(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。

(5)此表可根据车流量动态设定

在没有特殊情况下,即在两道均有车辆要求通过时,交通灯按常规运行。

通过控制开关可以输入要模拟的其它状态,交通灯将按照其输入状态的情况进行运行。

第二节总体硬件设计

交通灯控制系统的结构框图,总体设计方案共有五个部分组成,分别是:

单片机AT89C51、红、绿、黄灯显示电路、LED数显时间电路、晶振及复位控制电路、控制与调时开关电路。

在进行仿真调试过程中,程序运行正确,五个部分就同时工作,从而实现了交通灯的基本功能及调时功能。

图2-2所示为硬件设计方案图

第三节系统复位电路

复位电路我采用上电+按钮复位的方式。

当开关打开时,RST通过电阻接地,当有开关闭合时由于电容的作用使电源VCC通过电阻施加在单片机复位端RST上,实现单片机复位。

只是可惜,在进行仿真器调试过程中,该复位电路是不起作用的。

 

图2-3所示为系统复位电路图

第四节数码管显示电路

数码管工作原理这里我们介绍8段数码管的工作原理。

8段数码管又称为8字型数码管,分为8段:

A、B、C、D、E、F、G、DP。

其中,DP为小数点。

数码管常用的有10根管脚,每一段有一根管脚,另外两根管脚为一个数码管的公共段,两根之间相互连通。

发光二极管的发光原理,我们已经介绍过了,同理,8段LED数码管,则是在一定形状的绝缘材料上,利用不同形状点划的发光二极管组合,排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示0-9的数字。

从电路上,按数码管的接法不同又分为共阴和共阳两种。

共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。

在设计时,为了系统图的美观,我采用了6个数码管组成的数码管组,采用共阴极接法。

图2-4所示为系统数码管电路图

第五节路灯指示电路

在设计路灯时,采用了发光二极管代替路灯。

先介绍一下二极管,二极管工作原理是单向导通,即只有正极电压高于负极电压某特定值时才会导通,而负极电压高于正极电压是不导通的。

图2-5所示为发光二极管示意图

发光二极管是一种特殊的二极管,导通时会发光(发光二极管导通压降一般为1.7V~1.9V)。

此外,工作电流要满足该二极管的工作电流。

发光二极管的正负极可以用万用表进行判断,把万用表拨至二极管档或电阻挡,用两个表笔分别接触二极管的两个引出脚。

若发光二极管被点亮,则与红表笔相接的引出脚为正极。

从外观上看,发光二极管的正极引脚的长度也比较长。

一般发光二极管与I/O端口之间都会再连接一个电阻,其作用在于限制通过二极管的电流,从而达到减少功耗或者满足端口对最大电流的限制。

一般发光二极管的点亮电流为5mA至10mA。

路灯设计时我采用了红、黄、绿三种发光二级管。

第六节按键电路设计

按键工作方式可以是中断方式也可以是扫描方式,对扫描方式来说,扫描是一直调用按键扫描程序,也可以用定时调用按键扫描程序,不管哪一种,都需要占用系统宝贵的时间资源,中断键盘只有在有按键按下时才去执行键盘程序,在没有按键按下的情况下,可以处理其他的事务,使资源得到充分的利用,故中断键盘有占用资源少,响应速度快的优点,但在有按键按下时有数码管闪烁的缺点,这是因为处理中断时,数码管停止了扫描,对显示要求不高的场合下,这也是完全可以满足要求的。

但实际应用中,为了保证安全查询键值和响应,通常还要进行按键去抖和等待键释放的动作。

 

图2-6所示为按键工作方式图

 

第三章软件系统设计

第一节设计思路及关键技术

一个完整的交通灯相当于一个简单的单片机系统,该系统有交通灯设置电路、单片机、显示电路等构成。

单片机是集成的IC芯片,只需根据实际设计要求选型。

其他部分都需要根据应用要求和性能指标自行设计。

首先了解实际交通灯的变化规律。

假设一个十字路口为东西南北走向。

初始状态0为东西红灯,南北红灯。

然后转状态1南北绿灯通车,东西红灯。

过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。

再转状态3,东西绿灯通车,南北红灯。

过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。

最后循环至状态1。

第二节 交通灯的设计程序说明

这部分中定义了一些全局变量的数组和变量以及位标志,只是些定义的东西不需要画流程图了。

这部分程序如下:

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitnom=P3^7;

ucharcodeled_table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示数码表

ucharcodelight_state[]={0x21,0x12,0x0c,0x12};//交通灯状态存储表

ucharcodeem_state[3]={0x24,0x21,0x0c};//紧急灯状态显示表

ucharlight_time[][2]={{0,4},{0,1},{0,5},{0,1}};//显示时间存储表

ucharstatebef,time1s=100,state=0;//存储紧急灯状态,定时基数,状态基数

uinttime;//显示时间变量

bitmd_flag,state_flag=1,red;//显示时间更改状态,状态切换标志位,红绿切换标志位

第三节延时函数

延时程序如下:

/*--------------------------------

延时函数

------------------------*/

voiddelay(void)

{

uchari,j;

for(i=100;i>0;i--)

{for(j=100;j>0;j--);//循环10000次}

}

第四节延时函数

图3-1所示为读状态函数的流程图

读状态函数如下:

/*--------------------------

读状态函数:

判断是否有紧急灯状况出现

---------------------*/

ucharrd_emstate(void)

{

ucharvalue;

value=P3;

value>>=4;

value&=0x07;

if(value!

=statebef){statebef=value;return1;}//判断是否有紧急灯状况发生,//保存按键值,置返回标志为1

elsereturn0;

}

第五节显示函数

显示函数如下:

voiddisplay(void)

{

if(md_flag==1)//显示更改时间状态

{if(1==red){//南北方向红灯时间显示

P2=0xf6;P0=led_table[light_time[0][0]];delay();//分钟

P2=0xed;P0=led_table[light_time[0][1]/10];delay();//秒的十位

P2=0xdb;P0=led_table[light_time[0][1]%10];delay();//秒的个位

}

……

else//正常状态,显示时

{

P2=0xf6;P0=led_table[time/100];delay();//分钟

P2=0xed;P0=led_table[time/10%10];delay();//秒的十位

P2=0xdb;P0=led_table[time%10];delay();//秒的个位

}

}

第六节定时器0中断函数

定时器0中断函数如下:

voidTime0int(void)interrupt1

{EA=0;

TH0=-10000/256;

TL0=-10000%256;

time1s--;

if(time1s==0){//一秒中到,重新置数

time1s=100;

time--;//显示时间自减

if(time==0){//显示时间减到0时切换显示时间状态

state++;//四个状态轮流切换

if(state==4)state=0;

state_flag=1;//置状态切换标志位

}

}

EA=1;

}

第七节源程序代码

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitnom=P3^7;

ucharcodeled_table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示数码表

ucharcodelight_state[]={0x21,0x12,0x0c,0x12};//交通灯状态存储表

ucharcodeem_state[3]={0x24,0x21,0x0c};//紧急灯状态显示表

ucharlight_time[][2]={{0,4},{0,1},{0,5},{0,1}};//显示时间存储表

ucharstatebef,time1s=100,state=0;//存储紧急灯状态,定时基数,状态基数

uinttime;//显示时间变量

bitmd_flag,state_flag=1,red;//显示时间更改状态,状态切换标志位,红绿切换标志位

/*--------------------------------

延时函数

------------------------*/

voiddelay(void)

{

uchari,j;

for(i=100;i>0;i--)

{

for(j=100;j>0;j--);

}

}

/*--------------------------

读状态函数:

判断是否有紧急灯状况出现

---------------------*/

ucharrd_emstate(void)

{

ucharvalue;

value=P3;

value>>=4;

value&=0x07;

if(value!

=statebef){statebef=value;return1;}//判断是否有紧急灯状况发生,保存按键值,置返回标志为1

elsereturn0;

}

/*------------------------

显示函数

----------------------*/

voiddisplay(void)

{

if(md_flag==1)//显示更改时间状态

{if(1==red){//南北方向红灯时间显示

P2=0xf6;P0=led_table[light_time[0][0]];delay();//分钟

P2=0xed;P0=led_table[light_time[0][1]/10];delay();//秒的十位

P2=0xdb;P0=led_table[light_time[0][1]%10];delay();//秒的个位

}

else{//南北绿灯东西红灯亮时间显示

P2=0xf6;P0=led_table[light_time[2][0]];delay();//分钟

P2=0xed;P0=led_table[light_time[2][1]/10];delay();//秒的十位

P2=0xdb;P0=led_table

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2