立即注册 登录
返回首页

uid:214632的个人空间

日志

今天做了一个课设

已有 418 次阅读2017-6-26 09:56

单片机的交通灯系统设计

                                                                                                          

摘要:基于一款单片机为核心元件,实现了通过信号灯对路面状况的智能控制,从一定程度上解决了交通路口堵塞,车辆停车等待时间不合理,急车抢过等等问题.本设计由单片机软硬件系统结合,使用两位8段数码管、LED灯显示系统、复位电路、电源模块等组成,以模拟十字路口交通控制。

关键词:交通灯 单片机


0引言

随着生活的发展,车流量的增加给交通带来了极大的压力,也使得交通安全日益严峻。而交通灯则成为疏通车辆,缓解交通压力,减少交通事故,维护交通安全,制定交通规则最常见和最有效的手段。十字路口是生活中常见的交通路线,而十字路口也是车流量较多,导致车辆堵塞教为严重的交通路口,因此,十字路口交通灯成了交通路线上最常见的交通设备。红灯停绿灯行成了每个人口熟能详的交通规则。在很久以前,交通灯仅仅只是通过简单的时序电路控制红绿灯的切换,这导致了人们对时间把握的不准确,如行人和司机不能正确的把握交通灯的变换,从而出现不必要的交通事故。由单片机控制的十字路口交通灯具有时间倒计时显示、绿灯闪烁警示、黄灯示意减速停车等功能,完善了交通灯功能,减少交通事故,做到了更好的改善交通环境,维护人们生命和财产安全,为创造美好城市交通形象发挥了不可替代的作用。

本设计是交通信号灯控制系统,随着社会的不断的进步,社会的不断发展。交通也日渐复杂,交通的自动化也不断更新,交通的一些指挥系统光靠人来完成是远远不够的,这就需要设计各种交通指挥自动化系统来完成这些复杂的工作。从而使交通指挥系统更加有秩序,更加安全。至此本人设计了交通信号灯控制系统,来指挥十字路口车辆的停通,使红绿灯指挥系统实现自动化,无人化。该交通灯控制系统控制的是东西和南北两个方向上的车辆通行,系统核心元件为单片机AT89C51单片机)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用高密度非易失存储器制造技术制造,与工业标准的MCS-51令集和输出管脚相兼容。由于将多功能CPU和闪烁存储器组合在单个芯片中,AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。对其编写相关程序来控制交通信号灯和数码管的时间显示,并采用外部中断来控制紧急情况。此设计的硬件电路不是很复杂,关键在于软件的设计,即程序的编写。本设计采用的程序编写语言为现在流行的C语言,简单又便于阅读。编写程序的原则是:满足设计的要求。尽量采用最好,最有效的算法。编写时应尽量用最简洁的语言。编写好源程序后,采用keil软件对其进行编译,使其生成单片机可以识别的.hex文件,再把此文件导入单片机中即可。

1系统总体设计

1.1 总设计思路

利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯。如图上图所示。设东西向为主干道,南北为支干道。硬件原理图如下图所示:

            1硬件原理图

1.2 性能指标

1)处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。
2)干道均有车时,两者交替允许通行,主干道每次放行60秒,支干道每次放行40秒,设立60秒、40秒计时、显示电路。
3)绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡。黄灯亮时,原红灯按1Hz的频率闪烁。
4)支干道通行时间及黄灯亮的时间均可在099秒内任意设置

 

1.3任务分析

模拟交通灯控制器就是使用单片机来控制一些LED 和数码管,模拟真实交通灯的功能。红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等。南北向和东西向各采用2个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。键盘系统可以根据系统的需要设置不同的键的个数,可以选择线式键盘或矩阵式键盘,若单片机的IO口不够用时,可以考虑扩展82558155满足系统的要求。

1.4 方案设计

利用单片机完成交通信号灯设计,该交通信号灯控制器由一条支干道汇合成十字,每个路口设置成红绿黄三灯,红灯禁止通行,绿灯亮行,黄灯则给行驶中的车辆在禁行线外,由红绿黄作为信号灯,如下图所示

2模拟十字路口图

3总体设计图

此图为该系统的总体设计思路,由键盘控制单片机,由单片机控制LED的显示。

 

2部分电路

2.1时钟电路与复位电路 

时钟电路与复位电路由电容以及晶振组成,晶振两端接XTTAL1XTAL2;复位电路使用手动复位,整个电路一端接电源,另一端接在芯片RST引脚上。

4时钟电路与复位电路

 

 

 

 

 

2.2LED显示模块

LED显示模块使用12LED指示灯,东西南北各三个,分别是红黄绿三种颜色。

5LED显示图

2.3数码管显示模块

数码管显示模块由一个共阳极数码管显示倒计时,其端口abcdefg依次接芯片的脚P2^0P2^7引脚。

6数码管显示模块

2.4定时器0中断流程图

定时器0中断流程首先计数器初值计算,定时器工作时必须给计数器送计数器初值,这个值是送到THTL中的。我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC 可得到如下计算通式: TC=M-C。程序如下:

    TMOD=0x01;

    TH0=(65536-50000)/256;

    TL0=(65536-50000)%256;

其次通过按键对红绿黄灯时间的设置,我是通过统计第一个按键按的次数,用第二个按键来调节时间,就是按一下按键一,然后通过按键二来调红灯;按二下安检一,然后通过按键二来调黄灯;按三下安键一,然后通过按键二来调绿灯。程序如:

if(l1==0)

      {  delay(10);

        if(l1==0)

        { while(!l1);

        bb++;

        if(bb==4)

         {TR0=1;bb=0;}}

       }

     if(l2==0)

     {delay(10);

       if(l2==0)

       { while(!l2);

         if(bb==1)

         {red++;a=red;}

         if(bb==2)

         {yellow++;b=yellow;}

         if(bb==3)

         {green++;b=green;}

          }

     }

 

 

7结构框图

3结果显示

对每格路口(主干道、次干道)的红灯时间,绿灯时间,及黄灯时间的设定。设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现),紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。

 

 

 

 

4实验过程中遇到的问题及解决方法

(1) 计数器初值计算,定时器工作时必须给计数器送计数器初值,这个值是送到THTL中的。我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC 可得到如下计算通式: TC=M-C。程序如下:

    TMOD=0x01;

    TH0=(65536-50000)/256;

    TL0=(65536-50000)%256;

 

(2) 通过按键对红绿黄灯时间的设置,我是通过统计第一个按键按的次数,用第二个按键来调节时间,就是按一下按键一,然后通过按键二来调红灯;按二下安检一,然后通过按键二来调黄灯;按三下安键一,然后通过按键二来调绿灯。程序如:

if(l1==0)

      {  delay(10);

        if(l1==0)

        { while(!l1);

        bb++;

        if(bb==4)

         {TR0=1;bb=0;}}

       }

     if(l2==0)

     {delay(10);

       if(l2==0)

       { while(!l2);

         if(bb==1)

         {red++;a=red;}

         if(bb==2)

         {yellow++;b=yellow;}

         if(bb==3)

         {green++;b=green;}

          }

     }

 

(3) 刚开始编好程序下到板子后,键盘总没用,检查程序也没错误该开始我写的键盘函数程序如下void keyscan()

{ uint bb=0,cc=0;

  if(l1==0)

      {  delay(10);

        if(l1==0)

        { while(!l1);

        bb++;

        if(bb==4)

         {TR0=1;bb=0;}}

       }后来我把“uint bb=0,cc=0;”放到键盘函数外面,再验证发现按键就可以用了。

 

 

(4) 紧急按键功能的设置,该开始设置时,数码管时钟显示总不能保存,经检查后发现是定时器没有及时关和开,应用如下程序:

if(l3==0)

    {delay(10);

     if(l3==0)

       { while(!l3);cc++;}

       }

    if(cc==1)

       {P2=0xdb;TR0=0;

        P3=0x1b;}

    if(cc==2)

       {TR0=1;cc=0;

        P2=LED1[c+d];P3=LED2[c+d];}

 

 

 

 

 

 

 

5体会与心得

在设计过程中,经常会遇到这样那样的情况,就是心里想老着这样的接法可以行得通,但实际接上电路,总是实现不了,因此耗费在这上面的时间用去很多。我深得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。比如一些芯片的功能,平时看课本,这次看了,下次就忘了,通过动手实践让我们对各个元件映象深刻。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准
   
在调程序时,发现细心耐心,恒心一定要有才能做好事情, 过程曲折可谓一语难尽。在此期间我们也失落过,也曾一度热情高涨。从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长。
   
生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过实习,我才真正领略到艰苦奋斗这一词的真正含义,我才意识到老一辈电子设计为我们的社会付出。我们不断的反问自己。也许有人不喜欢这类的工作,也许有人认为设计的工作有些枯燥,但我们认为无论干什么,只要人生活的有意义就可。社会需要我们,我们也可以为社会而工作。既然如此,那还有什么必要失落呢?于是我们决定沿着自己的路,执着的走下去.
   
对我而言,知识上的收获重要,精神上的丰收更加可喜。挫折是一份财富,经历是一份拥有。这次实习必将成为我人生旅途上一个非常美好的回忆!
   
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在同学们的帮助下,终于游逆而解。同时,在这个过程中也学到很多实用的知识,在次表示感谢!
   
此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。

 

 

评论 (0 个评论)

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部