基于STM32的两路/四路红路灯控制系统
目录
- 一、基于STM32的四路红路灯控制系统
- 1、设计要求:
- 3、proteus
- 4、程序设计
- 二、基于STM32的两路交通灯控制系统
- 2.1、protues
- 2.2、程序
一、基于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
基于STM32的两路/四路红路灯控制系统相关推荐
- 基于STM32的四路红路灯控制系统(仿真+程序+论文)
基于STM32的四路红路灯控制系统 mian.c int main(void) {/* Reset of all peripherals, Initializes the Flash interfac ...
- 基于stm32的两路正弦波相位差测量
利用stm32测量两路正弦波相位差,有四种主要思路: 1. 两路直接捕获信号直接得到时间差 即将正弦波过比较器变成方波(stm32直接测量正弦波也可以的,频率较大时误差基本上在忍受范围的),开启两路捕 ...
- 基于stm32的两轮自平衡小车4(软件调试篇)
本篇是软件调试篇,接上一篇硬件篇:基于stm32的两轮自平衡小车3(硬件篇),本篇内容是对硬件部分的软件实现,具体模块详见目录.这里先上效果:转B站 目录 定时器PWM驱动程序 定时器编码器模式驱动程 ...
- 基于stm32的两轮自平衡小车3(硬件篇)
此篇为硬件篇,接上一篇"基于stm32的两轮自平衡小车2(原理篇)".包含自行设计电路板原理图与PCB电路图的过程.详见目录. 目录 stm32管脚分配 硬件原理图 PCB电路图 ...
- STM32控制两路直流电机_2
在上一篇博客中讲述了怎样使用STM32输出两路PWM波控制电机转动和使用定时器的编码器模块功能读取电机编码器的信息以获得电机的实时转速. 本篇博客内容包括:控制电机的转向,读取编码器数值,以及速度PI ...
- 基于stm32的两轮自平衡小车1(模块选型篇)
有一段时间没有更新博客了,最近一段时间都在忙毕业和实习,闲暇的时候也在学习怎么写公众号推文,实在惭愧.毕业设计做的是平衡小车,这几天某宝买的器件还不知所踪,新的PCB电路板又不想画,所以在想要不把做过 ...
- 基于STM32+OneNet设计的物联网智慧路灯
一.前言 近年来,构筑智慧城市.推动城镇发展被国家列入重要工作范畴.发布的<超级智慧城市报告>显示,全球已启动或在建的智慧城市有1000多个,中国在建500个,远超排名第二的欧洲(90个) ...
- 基于STM32单片机的智能家居窗户窗帘控制系统红外遥控proteus仿真原理图PCB
功能: 0.本系统采用STM32F103RCT6作为单片机 1.LCD1602液晶实时显示当前时间/窗帘状态/光照强度 2.支持手动按键/定时/光强检测三种模式控制窗帘 3.'设置'键进入设置界面 4 ...
- 毕业设计 基于STM32单片机的汽车防撞与控制系统
文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 4.1 HC-SR04超声波模块 4.2 ESP-01S WIFI模块 4.3 光照传感器 5 部分核心代码 5 最后 0 前言
最新文章
- 在apache中使用 memcache 来作 session 存储
- 常见网站各种类型页面的缓存时间及涉及的http头
- python正则表达式提取数字比较好_python正则表达式从字符串中提取数字的思路详解...
- 【大数据】大数据思维的十大核心原理
- python http协议获取对方的ip地址_http协议(一)基础知识
- numpy创建zeros数组时报错TypeError: Cannot interpret ‘8‘ as a data type
- Mac 下使用 homebrew 切换不同版本 php
- 【资源下载】921页《用Python3带你从小白入门机器学习实战》教程手册
- 用户不在sudoers文件中,此事将被报告
- 四、Python-元组
- 多精度数带余除法_算法笔记 (一) 高精度
- nodeJS 视频教程
- uefi模式安装win7出现winload.efi和oxc0000428错误的另类解决办法
- processon画图软件
- EXCEL中所有函数的使用
- 2345浏览器兼容模式怎么设置
- 《富爸爸穷爸爸》读书笔记 - 为什么要教授财务知识
- Win10家庭中文版( 连接远程桌面要求的函数不受支持、这可能是由于 CredSSP 加密 Oracle 修正 )
- Access数据库的.ldb文件
- 实现 | 朴素贝叶斯模型算法研究与实例分析
热门文章
- Disruptor(二)Sequencer
- CAD教程:CAD软件中怎么画任意梯段?
- 计算机科学文化节心得体会,计算机学院获评“创新杯”科学文化节优秀组织单位...
- 「镁客早报」美国初创公司Rocket Lab完成发射一箭六星商业任务;工信部表示:6G概念研究将于今年启动...
- linux桌面开启垂直同步刷新,关于Linux下AMD显卡关闭垂直同步的方法
- unity烘培单个物体_unity3d 5.6烘焙教程
- ua获取手机型号_前端通过js获取手机型号
- 向下整取(Floor)和向上整取(Ceiling)
- 【论文阅读】Query Graph Generation for Answering Multi-hop Complex Questions from Knowledge Bases
- 双馈风力发电机模型研究与仿真(DFIG)控制策略Simulink,给定风速变化,电流电压等波形好用