交通信号灯系统设计(附Proteus仿真+C程序+论文+原理图及PCB文件+元器件清单等全套资料)

获取全套设计资源,请见后文说明…

设计要求
(1)利用51单片机设计一个交通灯控制系统,来实现行人与车流的分流的目的。该系统主要应用在十字路口,纵向为主干道,横向为支干道;
(2)主、支干道交替通行,两个干道上的交通灯工作方式同时进行,主干道每次绿灯放行15秒,支干道每次放行10秒,放行时间可通过按键更改;
(3)每次绿灯变红之前,黄灯先闪烁3秒,此时,另一干道上仍保持红灯;
(4)通过按键实现对十字路口交通管制功能;
(5)给出整个系统的结构图、软硬件流程图;

设计概述
东西主干道和南北支干道各由一组三色交通灯来控制,分别是主干道方向的红、黄、绿以及支干道方向的红、黄、绿。

逻辑分析可知,当主干道为绿灯通行时,支干道必须为红灯禁行;绿灯结束后,主干道进入黄灯闪烁等待状态,支干道红灯;黄灯结束后,主干道变为红灯禁行,支干道变为绿灯通行;支干道绿灯结束后,支干道进入黄灯闪烁等待状态,主干道红灯,如此循环。

从这个过程中可以看出,交通灯控制共分4个状态,分别为:S1状态,主干道方向为绿灯,支干道方向为红灯;S2状态,主干道方向为黄灯闪烁,支干道红灯;S3状态,主干道方向为红灯,支干道方向为绿灯;S4状态,支干道方向为黄灯闪烁,主干道红灯。这四个状态不断循环。由此我们可以列出4个状态的列表和做出4个状态的流程图。


交通灯状态表.png
系统结构图.png

系统设置有4个按键,分别为设置键,加键,减键和交通管制键。设置键是对设置的启动和确认,加键和减键是对通行时间做调整,交通管制键是对红绿灯系统进行强制设置。

当系统上电或手动复位之后,默认模式下会按照断电前程序里记录的参数运行。若此时设置键按下,则进入通行时间设置状态,数码管上显示原本记录的时间并闪烁,可通过加键或减键键对东西、南北干道等待时间进行修改,修改完成后,按下设置键将新参数保存。

交通管制键,用于对十字路口进行交通管制。有五种模式:东西、南北干道红灯;东西红灯,南北绿灯;东西绿灯,南北红灯;东西绿灯,南北绿灯;东西黄灯,南北黄灯。

仿真电路图

仿真全图.png

操作说明.jpg

原理图及PCB

系统原理图.png

pcb.png

洞洞板实物图
实物.jpg

仿真结果分析
在交通灯实物中,是竖着操作,纵向为南北;在仿真电路图中,从正视看纵向为东西,从左边斜着看和实物是一样的。因此,实物和仿真是一一对应的!

加载“基于毕业51单片机的交通灯设计.hex”文件到单片机,点击运行,交通灯开始工作(二极管显示红、黄、绿三色灯,LED显示倒计时)。

在程序里我们设置,东西主干道绿灯通行时间为15S,南北支干道通行时间为10S。系统自动进入状态S1:东西主干道绿灯亮,南北支干道红灯亮。


交通灯S1状态.jpg

可以看出,东西主干道绿灯通行时间为15S,南北支干道红灯等待时间为15S。东西、南北干道LED倒计时12S后,系统进入S2状态:东西主干道黄灯闪烁3S,南北支干道红灯。


交通灯S2状态.jpg

3S后,系统进入S3状态:东西主干道红灯,南北绿干道绿灯,通行时间为10S。仿真结果如下所示。

交通灯S3状态.jpg

7S后,系统进入S4状态:南北干道黄灯闪烁3S,东西干道仍为红灯。然后进入S1状态,不断循环。


交通灯S4状态.jpg

按下“设置”键后,系统进入设置模式,通过“加”键和“减”键设置东西干道绿灯通行时间。再次按下“设置”键,可以设置南北干道通行时间。通行时间设置完成后,再次按下“设置”键,系统回到运行状态。


交通灯按键.jpg

设置东西干道时间.jpg

从上图看出,东西主干道通行时间由原来的15S设置为16S。可以通过“交通管制”键,对交通灯系统进行管制。


5种管制模式.png

另一套交通灯设计
为给大家多点设计思路,现提供另外一套交通灯设计。该设计非原创。其仿真效果、C程序、论文和原理图如下所示。

另一套交通灯设计.png

附赠资源.png

部分C代码

u8 Key_Scan()
{    
    static u8 key_up=1;//按键按松开标志
    if(key_up&&(Key1==0||Key2==0||Key3==0||Key4==0))
    {
        delay_1ms(10);//去抖动 
        key_up=0;
        if(Key1==0)         return 1;
        else if(Key2==0)return 2;
        else if(Key3==0)return 3;
        else if(Key4==0)return 4;
    }
    else if(Key1==1&&Key2==1&&Key3==1&&Key4==1)
        key_up=1;       
    return 0;// 无按键按下
}


uchar flag_s;
uchar menu_1;//纵横加减标示


/********************设置函数*****************/
void key_with()
{
    if(key_can == 4)   //交通管制按键
    {
        flag_jdgz ++;
        if(flag_jdgz > 5)
            flag_jdgz = 0;  
        if(flag_jdgz == 1)   //  全部亮红灯 
        {
            dx_red    = 0;  //亮 
            nb_red    = 0;  //亮 
            dx_green  = 1;  //灭
            dx_yellow = 1;  //灭
            nb_green  = 1;  //灭
            nb_yellow = 1;  //灭         
        }
        if(flag_jdgz == 2)   //  东西绿灯  南北红灯
        {
            dx_red    = 0;  //亮 
            nb_green  = 0;  //亮
            dx_green  = 1;  //灭
            dx_yellow = 1;  //灭
            nb_red    = 1;  //灭 
            nb_yellow = 1;  //灭         
        }
        if(flag_jdgz == 3)   //  南北绿灯  东西红灯
        {
            dx_green  = 0;  //亮
            nb_red    = 0;  //亮 
            dx_red    = 1;  //灭 
            dx_yellow = 1;  //灭
            nb_green  = 1;  //灭
            nb_yellow = 1;  //灭         
        }
        if(flag_jdgz == 4)   //  南北绿灯  东西绿灯
        {
            dx_green  = 0;  //亮
            nb_green  = 0;  //亮
            dx_red    = 1;  //灭 
            dx_yellow = 1;  //灭
            nb_red    = 1;  //灭 
            nb_yellow = 1;  //灭         
        }
        if(flag_jdgz == 5)   //  南北黄灯  东西黄灯
        {
            dx_red    = 1;  //灭 
            dx_green  = 1;  //灭
            nb_red    = 1;  //灭 
            nb_green  = 1;  //灭
            nb_yellow = 0;  //亮         
            dx_yellow = 0;  //亮
        }
    }
    if(key_can == 1)      //设置键
    {
        menu_1 ++;
        if(menu_1 >= 3)
        {
            menu_1  = 0;
        }
    }

    if(menu_1 == 1)    //设置东西的时间
    {
        if(key_can == 2)
        {
            dx_time ++ ;        //加1
            if(dx_time > 99)//时间最大值为99s
                dx_time = 99;
        }
        if(key_can == 3)
        {
            dx_time -- ;        //减1
            if(dx_time <= 5)//时间最小值为5s
                dx_time = 5;
        }
        dis_smg[0] = DisplayOther[2] ;  //显示为B
        dis_smg[1] = DisplayOther[2] ;  //显示为B
        dis_smg[2] = smg_du[(dx_time-1) % 10] ;     //显示东西设置的时候
        dis_smg[3] = smg_du[(dx_time-1) / 10] ; 
    }

    if(menu_1 == 2)    //设置南北的时间
    {
        if(key_can == 2)
        {
            nb_time ++ ;        //加1
            if(nb_time > 99)    //时间最大值为99s
                nb_time = 99;
        }
        if(key_can == 3)
        {
            nb_time -- ;        //减1
            if(nb_time <= 5)//时间最小值为5s
                nb_time = 5;
        }
        dis_smg[0] = smg_du[(nb_time-1) % 10] ; //显示为A
        dis_smg[1] = smg_du[(nb_time-1) / 10] ; //显示为A
        dis_smg[2] = DisplayOther[2] ;      //显示东西设置的时候
        dis_smg[3] = DisplayOther[2] ;  
    }   

}

分享的资源有
(1)基于51单片机的交通灯系统毕业设计论文完整版;
(2)Proteus仿真文件;
(3)Keil C程序文件;
(4)参考资料;
(5)Visio流程图;
(6)PCB文件及原理图;
(7)元器件介绍及清单;
(8)参考设计1:基于单片机的交通灯设计(另一套交通灯设计)

资源截图如下

资源1.png

资源2.png
资源3.png

资源4.png
资源5.png
资源6.png

获取交通灯系统设计论文、Proteus仿真、C程序、PCB及原理图、Visio流程图、元器件清单等全套资料。请搜索关注我的公众号:交院小智

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342