基于STM32的两路/四路红路灯控制系统

一、基于STM32的四路红路灯控制系统

1、设计要求:

东西、南北两干道交于十字路口,各干道有一组红、绿、黄三个指示灯,指挥车辆和行人安全通行。南北方向为主干道,通行时间为9秒;东西方向为支干道,通行时间为15秒。通行时间最后2秒,绿灯灭,黄灯常亮,黄灯亮完变更通行车道。通行时间由数字显示器显示。

2、设计方案

运用单片机对交通灯系统进行实现,使用STM32单片机为主控核心,通过软件来控制过往车辆的正常运作。同时具有以下优点:

①、单片机体积小巧、使用灵活、成本低,易于真正产品化。组装各种智能式控制设备和仪器,能做到机电仪一体化。

②、面向控制。能有针对性地解决各种从简单到复杂的各类控制任务,因而能获得最佳的性能价格比。

③、抗干扰能力强,适应温度范围宽,在各种恶劣的环境下都能可靠的工作。这是其它微机集中无法比拟的。

④、可以方便的实现多机、分布式的集散控制,使整个控制系统的效率大大地提高。

⑤、单片机应用产品的研制周期短,所开发出来的样机就是以后批量生产的产品,可以避免不必要的二次开发过程。

3、proteus

在这里插入图片描述

4、程序设计

mian.c

int main(void)
{
    /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    HAL_Init();
    /* Configure the system clock */
    SystemClock_Config();
//	delay_init(10); //初始化延时函数
    TIM3_Init(1800-1, 18-1); // 10ms,数码管刷新用

    Key_Init(); //按键中断初始化
    Led_Init(); //指示灯的初始化
    SEG_Init(); //数码管引脚初始化

    while(1)
    {
        if(time_update > SPEED && set_mode == 0) //计时达到1秒且未进入设置模式
        {
            time_update = 0; //重置1秒钟倒计时时间
            if(mode) //mode=0,表示进入南北通行模式(南北绿灯+南北黄灯)
            {
                LED_NBR_OF();
                LED_NBY_OF();
                LED_NBG_ON(); //南北方向,亮绿灯
                LED_DXR_ON();
                LED_DXY_OF();
                LED_DXG_OF(); //东西方向,亮红灯
                if(temp_bei == 0) //南北方向,倒计时结束时
                {
                    if(temp_xi == 0) //多出来3秒的东西方向,也倒计时结束了
                    {
                        mode = 0; //进入东西方向绿灯模式
                        temp_xi  = xi_dong_time; //提前更新东西方向的倒计时时间
                        temp_bei = temp_xi + YELLOW_TIME; //更新南北方向的时间,为东西方向+3秒
                        LED_NBR_ON();
                        LED_NBY_OF();
                        LED_NBG_OF(); //南北方向,亮红灯
                        LED_DXR_OF();
                        LED_DXY_OF();
                        LED_DXG_ON(); //东西方向,亮绿灯
                    }
                    else //南北方向已经结束,但是东西方向多出来的3秒未结束(3秒黄灯时间)
                    {
                        temp_xi--; //剩余的3秒,倒计时-1秒
//						temp_bei = temp_xi;//南北方向黄灯时间
                        LED_NBR_OF();
                        LED_NBY_ON();
                        LED_NBG_OF(); //南北亮黄灯
                        LED_DXR_ON();
                        LED_DXY_OF();
                        LED_DXG_OF();	//东西亮红灯
                    }
                }
                else
                {
                    temp_bei--; //南北方向。计时为-1秒
                    temp_xi = temp_bei + YELLOW_TIME; //更新东西方向的倒计时时间
                }
            }
            else//mode=0,表示进入东西通行模式(东西绿灯+东西黄灯)
            {
                LED_NBR_ON();
                LED_NBY_OF();
                LED_NBG_OF(); //南北方向,亮红灯
                LED_DXR_OF();
                LED_DXY_OF();
                LED_DXG_ON(); //东西方向,亮绿灯
                if(temp_xi == 0) //东西方向,倒计时结束时
                {
                    if(temp_bei == 0) //多出来3秒的南北方向,也倒计时结束了
                    {
                        mode = 1; //进入南北方向绿灯模式
                        temp_bei  = bei_nan_time; //提前更新南北方向的倒计时时间
                        temp_xi = temp_bei + YELLOW_TIME; //更新东西方向的时间,为南北方向+3秒
                        LED_NBR_OF();
                        LED_NBY_OF();
                        LED_NBG_ON(); //南北方向,亮绿灯
                        LED_DXR_ON();
                        LED_DXY_OF();
                        LED_DXG_OF(); //东西方向,亮红灯
                    }
                    else //东西方向已经结束,但是南北方向多出来的3秒未结束(3秒黄灯时间)
                    {
                        temp_bei--; //南北方向,剩余的3秒,倒计时-1秒
//						temp_xi = temp_bei;
                        LED_NBR_ON();
                        LED_NBY_OF();
                        LED_NBG_OF(); //南北亮红灯
                        LED_DXR_OF();
                        LED_DXY_ON();
                        LED_DXG_OF();	//东西亮黄灯

                    }
                }
                else
                {
                    temp_xi--; //东西方向。计时为-1秒
                    temp_bei = temp_xi + YELLOW_TIME; //更新南北方向的倒计时时间
                }
            }
        }
    }
}

4路——链接:https://pan.baidu.com/s/1jVyb57BMKTPNHqngoZrKCA 提取码:qab5

二、基于STM32的两路交通灯控制系统

2.1、protues

在这里插入图片描述

2.2、程序

int main(void)
{
    /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    HAL_Init();
    /* Configure the system clock */
    SystemClock_Config();
//	delay_init(10); //初始化延时函数
    TIM3_Init(1800-1, 18-1); // 10ms,数码管刷新用

    Key_Init(); //按键中断初始化
    Led_Init(); //指示灯的初始化
    SEG_Init(); //数码管引脚初始化

    while(1)
    {
        if(time_update > SPEED && set_mode == 0) //计时达到1秒且未进入设置模式
        {
            time_update = 0; //重置1秒钟倒计时时间
            if(mode) //mode=0,表示进入南北通行模式(南北绿灯+南北黄灯)
            {
                LED_NBR_OF();
                LED_NBY_OF();
                LED_NBG_ON(); //南方向,亮绿灯
                LED_DXR_ON();
                LED_DXY_OF();
                LED_DXG_OF(); //西方向,亮红灯
                if(temp_bei == 0) //南方向,倒计时结束时
                {
                    if(temp_xi == 0) //多出来3秒的东西方向,也倒计时结束了
                    {
                        mode = 0; //进入西方向绿灯模式
                        temp_xi  = xi_dong_time; //提前更新西方向的倒计时时间
                        temp_bei = temp_xi + YELLOW_TIME; //更新南方向的时间,为西方向+3秒
                        LED_NBR_ON();
                        LED_NBY_OF();
                        LED_NBG_OF(); //南方向,亮红灯
                        LED_DXR_OF();
                        LED_DXY_OF();
                        LED_DXG_ON(); //西方向,亮绿灯
                    }
                    else //南方向已经结束,但是西方向多出来的3秒未结束(3秒黄灯时间)
                    {
                        temp_xi--; //剩余的3秒,倒计时-1秒
//						temp_bei = temp_xi;//南方向黄灯时间
                        LED_NBR_OF();
                        LED_NBY_ON();
                        LED_NBG_OF(); //南亮黄灯
                        LED_DXR_ON();
                        LED_DXY_OF();
                        LED_DXG_OF();	//西亮红灯
                    }
                }
                else
                {
                    temp_bei--; //南方向。计时为-1秒
                    temp_xi = temp_bei + YELLOW_TIME; //更新西方向的倒计时时间
                }
            }
            else//mode=0,表示进入西通行模式(西绿灯+西黄灯)
            {
                LED_NBR_ON();
                LED_NBY_OF();
                LED_NBG_OF(); //南方向,亮红灯
                LED_DXR_OF();
                LED_DXY_OF();
                LED_DXG_ON(); //西方向,亮绿灯
                if(temp_xi == 0) //西方向,倒计时结束时
                {
                    if(temp_bei == 0) //多出来3秒的南北方向,也倒计时结束了
                    {
                        mode = 1; //进入南方向绿灯模式
                        temp_bei  = bei_nan_time; //提前更新南方向的倒计时时间
                        temp_xi = temp_bei + YELLOW_TIME; //更新西方向的时间,为南方向+3秒
                        LED_NBR_OF();
                        LED_NBY_OF();
                        LED_NBG_ON(); //南方向,亮绿灯
                        LED_DXR_ON();
                        LED_DXY_OF();
                        LED_DXG_OF(); //西方向,亮红灯
                    }
                    else //西方向已经结束,但是南方向多出来的3秒未结束(3秒黄灯时间)
                    {
                        temp_bei--; //南方向,剩余的3秒,倒计时-1秒
//						temp_xi = temp_bei;
                        LED_NBR_ON();
                        LED_NBY_OF();
                        LED_NBG_OF(); //南亮红灯
                        LED_DXR_OF();
                        LED_DXY_ON();
                        LED_DXG_OF();	//西亮黄灯

                    }
                }
                else
                {
                    temp_xi--; //西方向。计时为-1秒
                    temp_bei = temp_xi + YELLOW_TIME; //更新南方向的倒计时时间
                }
            }
        }
    }
}

两路——链接:https://pan.baidu.com/s/1QwmgxT_wf6yQq3piCBq2Kg 提取码:bofl

  • 17
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 基于STM32F103的交通灯控制系统可以实现对交通灯的状态进行控制和调度,确保交通流量的合理分配和道路安全。该系统主要有以下几个模块组成: 1. STM32F103微控制器:作为整个系统的核心控制器,负责接收外界的信号输入、进行计算和判断,然后控制交通灯的状态和时序。 2. 交通灯状态显示模块:通过LED灯或其他合适的显示设备,将交通灯的状态以不同颜色进行显示,如色代表停止、绿色代表行驶、黄色代表准备停止等。 3. 交通流量监测模块:通过传感器或摄像头等设备,对道路上的车流量进行监测和收集,将收集到的数据传送至STM32F103微控制器进行分析和决策。 4. 控制算法模块:在STM32F103中实现各种交通灯的控制算法,根据交通流量数据、道路情况和优先级等因素,动态调整各路口的交通灯状态和时序,降低交通拥堵和事故的发生。 5. 人机交互界面模块:通过液晶显示屏或其他人机交互设备,向用户展示交通灯的状态和时序,并提供一些功能,如手动切换交通灯状态或调整交通灯时序的功能。 基于STM32F103的交通灯控制系统能够有效提升道路交通的安全性和效率,通过智能的调度和控制手段,减少交通事故的发生,提高道路交通流量的运行效率。同时,该系统也可以与其他交通设施结合,如传感器、摄像头、行车记录仪等,共同构建智能化的交通管理系统,实现交通流量的精确控制和数据的实时监测。 ### 回答2: 基于stm32f103的交通灯控制系统是一种利用stm32f103单片机作为核心控制器的智能交通灯控制系统。该系统主要用于道路交通,能够根据交通流量和优先级自动控制交通灯的信号灯显示。 该系统的主要组成部分包括stm32f103单片机、LED灯模块、按键模块、外传感器模块以及电源模块等。 在该系统中,stm32f103单片机作为控制中心,通过与各个模块的通信,实时感知交通流量和监控道路情况。当检测到交通流量较大时,系统会自动控制信号灯显示给予交通流量较大方向的优先权,以保证交通的顺畅和安全。 按键模块用于手动控制交通信号灯,可以由交警或工作人员手动干预交通流量。外传感器模块用于检测道路上的车辆情况,通过外线辐射和反射来感知交通流量和车辆通过情况。 系统通过在stm32f103单片机中编写相应的程序逻辑和算法,根据交通流量和优先级来自动控制信号灯的切换。通过对LED灯模块的控制,系统能够实现不同方向的信号灯颜色变化,以指示车辆和行人的前进或停止。 基于stm32f103的交通灯控制系统具有响应速度快、稳定性好、可靠性高、扩展性强等优点。同时,该系统能够自动适应道路交通情况,提高交通效率和道路安全性,为城市交通管理提供了一种智能化的解决方案。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Kevin的学习站

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

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

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

打赏作者

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

抵扣说明:

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

余额充值