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

这篇具有很好参考价值的文章主要介绍了基于STM32的两路/四路红路灯控制系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

1、设计要求:

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

2、设计方案

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

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

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

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

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

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

3、proteus

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

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

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

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 文章来源地址https://www.toymoban.com/news/detail-506420.html

到了这里,关于基于STM32的两路/四路红路灯控制系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于单片机的智能路灯控制系统人体感应灯光控制系统的设计与实现

           功能介绍 以51单片机作为主控系统; LCD1602液晶显示当前时间、年月日、时分秒; 按键看看有设置自动手动模式; 3路红外探头用来感应当前3个区域是否有人; 按键可以设置当前时间、开启和关闭教室灯光时间; 在手动模式下,可以通过按键直接控制灯的开关;

    2024年02月13日
    浏览(33)
  • 基于STM32楼梯层控制系统

    项目目标意义: 随着社会的发展、 科技的进步以及人们生活水平的逐步提高, 各种方便于生活的遥控系统开始进入了人们的生活。 电梯的发展是由于需要从山坡上运输包括煤和材在内的原材料而引发的,而到了今日,电梯的已经遍布于各种写字楼,住宅,工厂,医院等。其

    2024年02月02日
    浏览(31)
  • 基于STM32的温度控制系统

    提示:记录毕设 基于STM32的温度控制系统,主控使用STM32F103ZET6,在正点原子的精英板上开发(本人也在野火板子上测试成功)。 1.1设计(研究)目标: 我们研究一种基于STM32的智能温度控制系统。该系统以STM32F103作为主控芯片﹐配备了PTC加热器、测温模块﹑等一系列模块。本文

    2024年02月03日
    浏览(42)
  • 基于stm32的无人机控制系统设计

        在我国航空电子技术和通信技术的高速发展下,无人机应运而生[1]。对于人类来说,无人机无疑是一个伟大发明,它通过人工智能、信号处理以及自主驾驶等先进技术手段,实现了灵活的起降,低空循迹的自由飞翔等功能,同时具备了体积小、无人驾驶以及航程远等优点

    2023年04月08日
    浏览(81)
  • 基于 STM32 的温度测量与控制系统设计

    本文介绍了如何基于 STM32 微控制器设计一款温度测量与控制系统。首先,我们将简要介绍 STM32 微控制器的特点和能力。 接下来,我们将详细讨论温度传感器的选择与接口。然后,我们将介绍如何使用 STM32 提供的开发工具和相关库来进行温度测量和控制的代码设计和实现。最

    2024年02月02日
    浏览(34)
  • 基于STM32闭环步进电机控制系统设计

    ** 单片机设计介绍,1654基于STM32闭环步进电机控制系统设计(仿真,程序,说明)   基于STM32的闭环步进电机控制系统设计是一种利用STM32微控制器开发的系统,用于实现对步进电机的精确控制。以下是该系统的一般设计概述: STM32微控制器:作为主控芯片,STM32具备高性能

    2024年02月08日
    浏览(32)
  • 基于STM32智能家居控制系统软件设计及实现

    智能家居控制系统的软件设计主要使用Keil uVision5进行STM32主烧录程序的编写,主程序完成的功能主要为接收并判断语音识别模块传过来的信息,然后根据满足条件的不同进行对应的操作。例如,当语音模块传过来的信息为“打开电视”时,STM32单片将使给8550一个低电平,这样

    2024年02月02日
    浏览(36)
  • 基于STM32的自由度云台运动姿态控制系统

    目录 设计报告撰写内容 2 一、设计要求 2 1、掌握 MEMS 传感器 MPU6050 的应用方法; 2 3、二自由度云台运动姿态控制系统设计。 2 二、设计方案(要求给出详细的设计思路及其必要的论证) 2 1、硬件设计 3 1)电源系统 3 2)数字控制器 4 3)角度测量传感器 4 4)执行机构 5 5)系

    2024年02月15日
    浏览(34)
  • 基于STM32的智能交通信号灯控制系统设计

    通过分析交通规则和交通灯的工作原理,给出智能交通信号灯控制系统的设计方法。基于STM32F103芯片开发满足需求的外围电路,并绘制电路原理图。基于MDK keil软件编写交通信号灯控制程序,利用LabVIEW搭建交通信号灯场景,LabVIEW可以控制红绿灯时长。分别完成硬件、软件调试

    2024年02月03日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包