【单片机毕业设计】【mcuclub-fz-032】基于单片机的智能交通红绿灯控制系统的设计分析

  最近设计了一个项目基于单片机的智能交通红绿灯控制系统的设计分析,与大家分享一下:

一、基本介绍

项目名:红绿灯
项目编号:mcuclub-fz-032
单片机类型:STC89C52
具体功能:
1、有东西南北四个方向,每个方向都有一个两位数码管和三个LED灯(红绿黄)
2、可以按键设置各方向上的总时间
3、可以按键控制某个方向常绿,以达到疏通救火车消防车道路
4、通过4对分离式红外对射管测四个方向上的车流量,从而自动调整绿灯时间
东西方向:23s绿灯3s黄灯18s红灯
南北方向:26s红灯15s绿灯3s黄灯
主要是分别显示,原先的设计师绿灯时间和黄灯时间是一起的,现在需要分开

二、仿真图

三、原理图

软件版本:AD2013

电路连线方式:网络标号连线方式

注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

 四、系统框图

本设计以STC89C52单片机为核心控制器,加上其他的模块一起组成交通灯的整个系统,其中包含中控部分、输入部分和输出部分。中控部分采用了STC89C52单片机,其主要作用是获取输入的部分数据,经过内部处理,控制输出部分。输入由六部分组成,第一部分是北红外对射管,检测北方是否有车俩通过;第二部分是南红外对射管,检测北南方是否有车俩通过,第三部分是西红外对射管,检测西方是否有车俩通过,第四部分是东红外对射管,检测东方是否有车俩通过;第三部分是独立按键按键,通过按键切换界面,控制南北或者东西方向常绿,设置南北时间或者设置东西绿灯时间;第四部分是供电模块,通过该模块可给整个系统进行供电。输出由二部分组成,第一部分数码管显示时间,第二部分是指示灯,指示该方向的是否可以通行。

 五、软件设计流程

六、部分程序展示

软件版本:keil5

逻辑程序和驱动程序分开,分布于main.c和其他.c文件

*******处理函数
*****/
void Manage_function(void)
{
    if(flag_display == 0)                                    //测量界面
    {
        if(flag_mode_NS == 0 && flag_mode_WE == 0)        //不是常绿模式,正常运行,时间低于3s,黄灯亮
        {
            if(flag_exchange == 0)            //南北方向绿灯
            {
                if(time_all > 3)
                    LED = 0xEB;
                else
                    LED = 0xE9;                     //黄灯
            }
            else
            {                                 //东西方向绿灯
                if(time_all > 3)
                    LED = 0xBE;
                else
                    LED = 0x9E;                    //黄灯
            }
        }
        
        if(IR_N == 1)                                                //北方向红外对射管触发一次,北方向车辆数+1
        {
            car_N++;
            while(IR_N == 1);
        }
        else if(IR_S == 1)                                    //南方向红外对射管触发一次,南方向车辆数+1
        {
            car_S++;
            while(IR_S == 1);
        }
        else if(IR_W == 1)                                    //西方向红外对射管触发一次,西方向车辆数+1
        {
            car_W++;
            while(IR_W == 1);
        }
        else if(IR_E == 1)                                    //东方向红外对射管触发一次,东方向车辆数+1
        {
            car_E++;
            while(IR_E == 1);
        }
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机俱乐部--官方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值