智能交通灯的设计(内附网盘分享:代码(标准库)与仿真 )
摘要:本文设计了一种基于STM32F103C8T6微控制器的十字路口交通灯控制系统。系统控制4组红绿黄LED交通灯,并通过4个两位数码管实时显示倒计时。采用状态机实现4种交通状态的自动切换:南北绿灯12秒/东西红灯15秒、南北黄灯闪烁3秒、东西绿灯9秒/南北红灯12秒、东西黄灯闪烁3秒。硬件设计包括LED驱动电路和数码管动态扫描电路,软件采用1ms定时中断实现精确时序控制。测试结果表明,系统各状态
1. 设计要求
设计十字路口交通灯的控制电路,根据交通规则控制4组红、绿、黄共12个LED指示灯的显示,并通过4个两位数码管实时显示各方向倒计时。系统实现完整的交通灯状态循环控制,包括:
状态1:南北方向绿灯通行12秒,东西红灯禁止通行15秒;
状态2:南北方向黄灯闪烁提醒3秒,东西继续红灯倒计时;
状态3:东西方向绿灯通行9秒,南北方向禁止通行12秒;
状态4:东西方向黄灯闪烁提醒3秒,南北继续红灯倒计时;
状态5:执行状态1,反复循环。
2. 硬件设计
2.1 系统架构
本设计使用STM32F103系列的STM32F103C8T6芯片作为主控制器,系统的硬件框架构图如图1所示。

图1 系统的电路原理图
2.2 主要元器件及参数
主控制器:
STM32F103C8T6:内核:ARM Cortex-M3;工作频率:72MHz;GPIO数量:37个;
工作电压:2.0-3.6V
显示器件:.
交通指示灯:型号:LED;数量:12个(4组×3色);
驱动方式:STM32 GPIO直接驱动;限流电阻:220Ω
倒计时显示器:型号:7SEG-MPX2-CA-BLUE(两位共阳数码管);数量:4个;
显示方式:动态扫描;段选电阻:220Ω
其他元件:
晶振:8MHz;复位电路:10k上拉电阻;电源:+3.3V(MCU)、+5V(数码管)
2.3 系统工作原理
系统基于STM32F103C8T6微控制器,通过GPIO端口控制12个LED交通灯和4个两位数码管。系统采用SysTick定时器产生1ms中断,实现精确的时间控制。交通灯状态机根据预设时间自动切换,数码管动态显示各方向剩余时间。
引脚分配:
PA0-PA11:12个交通灯控制;
PB0-PB7:数码管段选信号;
PB8-PB15:数码管位选信号。
3. 软件设计
3.1 主程序设计
主程序负责系统初始化、模块协调和主循环调度,工作过程:
系统启动后首先初始化系统时钟,设置处理器运行频率;
初始化GPIO端口,配置交通灯和数码管引脚为推挽输出模式;
配置SysTick定时器,产生1ms中断用于时间基准;
进入主循环,不断执行以下操作:
调用数码管扫描函数,实现动态显示;
调用交通灯状态处理函数,更新灯状态和倒计时;

图2 主程序流程图
3.2 交通灯状态控制子程序设计
交通灯状态控制子程序实现四状态自动切换,状态控制工作过程:
状态1处理(0-12秒):
设置南北方向为绿灯,东西方向为红灯;
南北倒计时从12开始递减,东西倒计时从15开始递减;
12秒后自动切换到状态2;
状态2处理(12-15秒):
南北黄灯以500ms周期闪烁,东西保持红灯;
南北和东西倒计时均从3开始递减;
3秒后自动切换到状态3;
状态3处理(15-24秒):
设置南北方向为红灯,东西方向为绿灯;
南北倒计时从12开始递减,东西倒计时从9开始递减;
9秒后自动切换到状态4;
状态4处理(24-27秒):
南北保持红灯,东西黄灯以500ms周期闪烁;
南北和东西倒计时均从3开始递减;
3秒后自动切换回状态1,完成循环。

图3 交通灯状态控制子程序流程图
3.3 LED控制子程序设计
LED控制子程序负责12个交通灯的直接控制,实现灯状态的精确设置,控制过程:
初始化过程:
使能GPIOA端口时钟;
配置PA0-PA11为推挽输出模式,速度50MHz;
设置所有引脚输出高电平,确保所有LED初始状态为熄灭;
控制过程:
LED_SetNS()函数控制南北方向的两组交通灯;
LED_SetEW()函数控制东西方向的两组交通灯;
每个函数接收三个参数分别控制红、黄、绿灯的状态;
参数为1时点亮对应LED,为0时熄灭;
两组同方向的交通灯保持同步显示。

图4 LED控制子程序流程图
3.4 数码管显示子程序设计
数码管显示子程序实现4个两位数码管的动态扫描显示,数码管显示工作过程:
采用动态扫描技术,快速轮流显示8个数字位(4个数码管×2位);
每次只点亮1个数码管位,利用人眼视觉暂留效应实现稳定显示;
扫描频率约为125Hz(每8ms完成一轮扫描),确保无闪烁;
显示缓冲区存储各方向的十位和个位数字;
根据段选编码表将数字转换为7段显示码 ;

图5数码管显示子程序流程图
3.5 定时中断服务子程序设计
SysTick中断服务程序负责时间基准和黄灯闪烁控制,中断服务工作过程:
每1ms产生一次中断,timerCount计数器加1;
每500ms翻转一次yellowBlinkFlag,实现黄灯闪烁;
为状态切换提供精确的时间基准。

图6 定时中断服务子程序流程图
4. 系统测试与结果
通过仿真验证,各状态时序完全符合设计要求:
状态1时序:
持续时间:12.000秒;
南北方向:绿灯亮,倒计时12→0;
东西方向:红灯亮,倒计时15→3;

状态2时序:
持续时间:3.000秒;
南北方向:黄灯闪烁,倒计时3→0;
东西方向:红灯亮,倒计时3→0;

状态3时序:
持续时间:9.000秒;
南北方向:红灯亮,倒计时12→3;
东西方向:绿灯亮,倒计时9→0;

状态4时序:
持续时间:3.000秒;
南北方向:红灯亮,倒计时3→0;
东西方向:黄灯闪烁,倒计时3→0;

5. 总结
本设计成功实现基于STM32F103C8T6的十字路口交通灯控制系统,具有以下特点:
功能实现:12个LED交通灯的四状态循环控制;
4个两位数码管的实时倒计时显示;
精确的时间控制和状态切换;
模块架构:清晰的模块划分,便于维护和扩展;
独立的LED控制、数码管显示、状态机模块;
标准化的接口设计;
资源优化:合理利用STM32的GPIO资源;
动态扫描技术节省IO口;
中断资源的有效利用;
定时精度:SysTick定时器提供1ms时间基准;
精确的状态切换时间控制;
稳定的黄灯闪烁频率;
显示优化:动态扫描显示,节省硬件资源;
无闪烁的稳定显示效果;
灵活的显示内容更新机制;
本交通灯控制系统设计合理、功能完善、性能稳定,为智能交通控制系统的开发提供了可靠的技术基础和实用的参考价值。
网盘分享:内附代码(标准库)与仿真
通过网盘分享的文件:智能交通灯
链接: https://pan.baidu.com/s/1Sgp6wERIR0YPOD0ew-430w?pwd=u52k 提取码: u52k
更多推荐
所有评论(0)