1 系统功能介绍
本设计题目为 基于51单片机智能化交通红绿灯堵车流量红外设计,主要用于十字路口交通信号智能控制,通过红外避障检测车流量,自动调节红绿灯时间,缓解拥堵。该系统由单片机、LED灯、红外避障传感器、LCD1602液晶显示、电源等模块组成,实现智能化、实时化的交通管理功能。
系统的主要功能如下:
-
十字路口红绿灯控制
- 道路方向为东西南北,每条道路配备 2 套红绿灯(红、黄、绿);
- 系统在正常模式下依次控制红灯亮 10 秒、黄灯亮 3 秒、绿灯亮 10 秒,循环运行;
- 每套红绿灯同时只有一个灯亮,保证交通安全。
-
红外避障检测与绿灯延时
- 在南北方向设置红外传感器,检测车辆数量;
- 当南北绿灯情况下检测到车辆超过 5 辆,绿灯延长 10 秒,同时东西方向红灯延长 10 秒;
- 在东西方向同样设置红外传感器,达到车流量阈值时,东西绿灯延长 10 秒,南北红灯延长 10 秒;
- 每次绿灯延时只允许一次,避免影响另一方向车道运行。
-
LCD1602显示功能
- 实时显示东西南北方向红绿灯状态;
- 显示南北、东西方向的车流量信息。
-
智能化调节逻辑
- 根据红外传感器采集的车流量,自动调整绿灯时间,保证高峰期通车效率;
- 系统具备循环运行能力,实现全天候智能化控制。
通过以上功能,系统不仅完成基本的红绿灯控制,还具备智能交通管理能力,对缓解交通拥堵具有重要意义。
2 系统电路设计
本系统硬件电路由 STC89C52 单片机核心电路、LED灯指示电路、红外避障传感器电路、LCD1602 液晶显示电路、电源电路 等组成。下面详细介绍每个模块。
2.1 单片机核心电路
系统采用 STC89C52 单片机作为主控芯片,特点如下:
- 内置 8KB Flash 和 256B RAM,满足红绿灯控制及车流量处理需求;
- 多路 I/O 端口,可同时控制 LED 灯、红外传感器及 LCD 显示;
- 支持定时器和中断,便于实现循环定时与车流量检测逻辑;
- 工作电压 +5V,兼容低功耗设计。
单片机在系统中主要负责:
- 红绿灯的定时切换与控制;
- 采集红外传感器数据,实现车流量检测;
- 控制 LCD1602 显示灯状态及车流量参数;
- 判断是否需要绿灯延时,并处理延时逻辑。
2.2 LED灯指示电路
每条道路配备 2 套 LED 红绿灯,每套包含红、黄、绿三个 LED,单片机通过 I/O 端口控制其亮灭:
- 红灯亮时,禁止车辆通行;
- 绿灯亮时,允许车辆通行;
- 黄灯作为过渡灯,提示车辆准备停止。
LED 电路通过限流电阻连接单片机 I/O 口,保证 LED 发光稳定,并防止 I/O 口损坏。
2.3 红外避障传感器电路
为了实现智能化绿灯延时,系统在南北和东西方向分别设置红外避障传感器:
- 红外传感器通过检测车辆红外反射信号判断车辆数量;
- 当绿灯状态下车流量达到设定阈值(5 辆),单片机接收传感器信号后延长绿灯时间;
- 红外传感器输出信号为高低电平,单片机通过 I/O 口采集并计数。
2.4 LCD1602 液晶显示电路
LCD1602 用于实时显示交通状态和车流量信息:
- 显示东西南北灯的当前状态(红、黄、绿);
- 显示南北、东西方向当前车流量;
- 通过 4 位数据接口与单片机通信,节省 I/O 资源;
- 提供清晰、直观的显示界面,便于管理人员观察路口状态。
2.5 电源电路
系统采用 +5V 稳压电源供电,电源部分设计包括:
- 稳压芯片(如 7805)提供稳定 5V 电源;
- 电容滤波器保证电压平稳,避免干扰单片机运行;
- 红外传感器与 LED 灯电源分开,保证信号采集和显示稳定性。
3 程序设计
程序设计基于 C 语言,在 Keil 开发环境下完成,通过 STC-ISP 下载到单片机。程序主要包括:
- 主程序:初始化硬件、循环执行红绿灯控制及车流量检测;
- 红绿灯控制程序:实现红黄绿灯的定时切换及延时逻辑;
- 红外传感器采集程序:计数车流量,判断是否需要延时绿灯;
- LCD显示程序:实时显示红绿灯状态与车流量参数;
- 延时控制程序:实现绿灯延时一次的逻辑。
3.1 主程序框架
#include <reg52.h>
#include "lcd1602.h"
#include "delay.h"sbit Red_NS = P1^0;
sbit Yellow_NS = P1^1;
sbit Green_NS = P1^2;sbit Red_EW = P1^3;
sbit Yellow_EW = P1^4;
sbit Green_EW = P1^5;sbit Infra_NS = P3^0;
sbit Infra_EW = P3^1;unsigned char count_NS = 0;
unsigned char count_EW = 0;
bit NS_delay_flag = 0;
bit EW_delay_flag = 0;void main()
{LCD_Init();while(1){Traffic_Control_NS();Traffic_Control_EW();LCD_Update();}
}
3.2 南北方向红绿灯控制
void Traffic_Control_NS(void)
{Red_NS = 1; Yellow_NS = 1; Green_NS = 0; // 绿灯亮count_NS = 0; NS_delay_flag = 0;for(int i=0;i<20;i++) // 每次循环约0.5s,总计10s{if(Infra_NS == 1) count_NS++;Delay_ms(500);}if(count_NS >= 5 && NS_delay_flag == 0) // 达到阈值延时一次{for(int j=0;j<20;j++) Delay_ms(500); // 延长10sNS_delay_flag = 1;}Green_NS = 1; Yellow_NS = 0; Red_NS = 1; // 黄灯亮3秒Delay_ms(3000);Red_NS = 0; Yellow_NS = 0; Green_NS = 1; // 红灯亮10秒Delay_ms(10000);
}
3.3 东西方向红绿灯控制
void Traffic_Control_EW(void)
{Red_EW = 0; Yellow_EW = 0; Green_EW = 1; // 红灯亮count_EW = 0; EW_delay_flag = 0;for(int i=0;i<20;i++){if(Infra_EW == 1) count_EW++;Delay_ms(500);}if(count_EW >= 5 && EW_delay_flag == 0){for(int j=0;j<20;j++) Delay_ms(500); // 延长10sEW_delay_flag = 1;}Green_EW = 0; Yellow_EW = 1; Red_EW = 1; // 黄灯亮3秒Delay_ms(3000);Red_EW = 1; Yellow_EW = 0; Green_EW = 0; // 绿灯亮10秒Delay_ms(10000);
}
3.4 LCD1602显示程序
void LCD_Update(void)
{LCD_Clear();LCD_SetCursor(0,0);LCD_PrintString("NS:");LCD_PrintChar(Green_NS?'G':(Yellow_NS?'Y':'R'));LCD_PrintString(" EW:");LCD_PrintChar(Green_EW?'G':(Yellow_EW?'Y':'R'));LCD_SetCursor(1,0);LCD_PrintString("Count NS:");LCD_PrintNumber(count_NS);LCD_PrintString(" EW:");LCD_PrintNumber(count_EW);
}
4 总结
本设计通过 STC89C52 单片机控制十字路口红绿灯,实现基本的红绿灯循环切换,并通过红外避障传感器实时检测车流量,实现绿灯延时逻辑。LCD1602 显示当前灯状态及车流量,便于管理人员监控路口状况。
系统特点包括:
- 智能交通控制:根据车流量动态调整绿灯时间,缓解拥堵;
- 多方向红绿灯管理:东西南北四个方向同时控制,保证路口通行效率;
- LCD显示直观:显示灯状态和车流量,管理人员可直观了解路口情况;
- 延时逻辑合理:每次绿灯延时仅允许一次,避免对另一方向造成影响;
- 可扩展性强:可增加无线通信模块,实现远程监控和数据记录。
本设计不仅适用于十字路口红绿灯控制,也可拓展到城市智能交通系统、停车场出口管理、工业园区道路管理等场景,具有较高的实用性和推广价值。