基于ATmega328的交通灯控制系统设计
邬嘉麒+许国良
摘要:文章以ATmega328单片机为控制核心,设计交通灯控制系统,实现了交通信号灯的定时切换和倒计时显示功能,系统可根据环境光强自动切换白天与夜间运行模式,并在紧急情况下提供应急控制功能。用户可通过液晶屏幕和按键操作获取系统运行状态、调整设置参数。文章实现的控制系统具有运行稳定、调节灵活、操作简便的优点,可为智能化交通控制系统的研究和设计提供参考。
关键词:交通灯控制系统;ATmega328;模数转换;单片机应用设计
1 交通灯控制系统研究背景
交通灯控制系统作为常见的城市道路交通的电子管理设备,具有维持交通秩序、控制车流、疏导行人的重要作用,除了常规的倒计时显示和信号灯指示功能外[1],还应当具备环境适应能力和紧急情况下的应急控制功能[2],以适应交通管理的实际需要。
本文以ATMEL公司的ATmega328为控制核心,设计交通灯控制系统,实现十字路口4个方向交通灯的定时切换和倒计时显示。系统可根据环境光强自动切换运行状态,并通过液晶屏幕提供运行状态和参数信息的实时显示和调整。
2 总体设计
2.1 功能介绍
本文设计的交通灯控制系统可在白天模式、夜间模式、紧急模式共3种工作模式下运行,通过LCD液晶显示屏实时显示系统当前的运行状态。系统将根据运行环境的光线强度,自动完成白天模式和夜间模式之间的切换。用户设置更改在下一循环周期内加载生效,保证状态切换期间交通灯放行信号的自然过渡。
控制系统提供“设置/确定”键、“向上/增加”键、“向下/减小”键、“紧急状态”键共4个按键。其中,“设置/确定”键用于调整LCD显示屏的光标状态;“向上/增加”键与“向下/减小”键可用于移动光标位置或增减当前设置项的数值。在任何状态下,当用户按下“紧急状态”键,都会使系统立即进入或退出紧急状态。进入紧急模式后,系统各方向信号灯的倒计时循环停止,所有方向均显示红灯,用户可根据实际交通情况独立调整4个方向的信号灯状态,放行指定方向的车流。
2.2 整体构架
本文以ATmega328单片机为控制核心,构建了以5V直流稳压电源供电的交通灯控制系统。系统结构框架如图1所示,系统由交通灯显示、倒计时显示、液晶屏显示3个输出模块,以及按键模块、光感模块2个输入模块组成。
本文选用的ATmega328芯片是ATMEL公司推出的8位高性能、低功耗、精简指令集(ReducedInstructionSet,RIS)单片机[3],在20MHz工作频率下指令执行速度可达20MIPS,片内带有32kB的FLASH程序编程存储器、1KB的EEPROM和2kB的SRAM,可通过SPI串行口在线编程,可满足交通灯控制系统实现的性能需求。
3 硬件设计
3.1 倒计时显示与交通灯驱动模块
根据路面实际交通情况,在东、南、西、北4个方向分别用红、黄、绿3种颜色的信号灯展示交通信号(共计12盏)。由于单片机的I/O口资源有限,ATmega328仅提供23个I/O端口,若将各信号灯控制开关与单片机I/O口直接相连需要占用大量端口资源,不利于后续功能的实现。因此本文采用两片74HC595级联的方式,利用3个单片机I/O端口分别提供串行输入信号(DIN)、移位时钟脉冲(Shift_CLK)、锁存时钟脉冲(Latch_CLK),将串行逻辑控制信号转换为并行信号,经过驱动芯片或电力电子开关控制12盏交通信号灯的亮灭。
为了节省单片机10端口资源,本文在信号灯驱动模块中采用两片74HC595级联的方式,实现倒计时数码管的动态刷新[4]。其中,低位芯片的8位输出用于控制数码管段码,高位芯片的低四位输出通过PNP三极管向数码管输出位码信号。74HC595在4.5V供电的条件下最高时钟频率为,可满足数码管动态刷新的频率要求。
3.2 光感模块
光线强度感应功能一般可使用模数转换器(Analog-DigitalConverter,ADC)、模拟比较器(AnalogComparator,AC)设计测量电路。根据光敏电阻CdS5506电导率随着光线增强而显著增大的特性,本文将光敏电阻CdS5506与10kQ电阻串联组成分压电路,将电阻阻值变化转化为节点电平变化,通过ATmega328片内自带的模数转换器实时获取节点电压信号,从而向单片机间接提供了环境光照信息。
ATmega328片上帶有6路10位逐次逼近型ADC,最多可对PC0.5端口的6路模拟输入电压进行采样[5]。光强检测模块使用单片机的ADC通道4,通过软件设定将PC4设置为不带上拉电阻的输入端口,以免内部上拉电阻影响模数转换结果。
3.3 液晶屏显示模块
本设计采用带ST7920驱动芯片的LCD12864显示屏[6],用作工作状态和设置菜单的显示设备。LCD12864可由3?5.5V直流电源供电,利用驱动芯片的光标显隐、字体闪烁、反白显示等功能实现菜单操作界面。
硬件电路中使用单片机3个I/O端口送出RS,R/W,EN控制信号,并使用PD0.7口作为LCD并行数据输入口,用于向ST7920控制器传输绘字指令。此外还需要为LCD提供工作电源和背光电源,并向PSB端口和RST端口送入高电平信号,分别用于设置并行输入方式和禁止复位。
3.4 整体外观
为方便调试,根据上文所述的设计方案设计印刷电路板,并使用红、黄、绿3色发光二极管(LED)代替实际系统中的驱动芯片或电力电子开关,以便测试系统的工作流程和控制功能。控制电路板采用20cmX15cm覆铜板制作,受电路板尺寸限制,4个方向的倒计时信息仅用2组数码管显示,控制电路板的外观如图2所示。
4 软件设计
4.1 模块划分
本文使用ICCAVR7.22平台编译单片机C语言程序。为了降低程序复杂度,提高代码的重用性,在编写程序前首先依据设计目标和功能设定,将软件程序划分为交通灯控制模块、倒计时控制模块、液晶屏显示模块、闪烁控制模块、设置读写模块、光强检测模块、按键响应模块以及核心流程控制模块共8个软件模块,并遵循自底向上的设计思路,逐一实现各软件模块的功能设计,分别进行模块测试,最后组合成完整的系统程序。各软件模块之间的关系如图3所示。
4.2 工作流程
为了描述交通灯主要循环流程,本文根据实际路口交通灯切换规律,设计出绿灯闪烁暂态、黄灯暂态、红绿稳态、全红稳态、全黄暂态、黄灯闪烁稳态共6种状态。“暂态”和“稳态”是依据状态的设计功能进行划分的,“稳态”用于表示较长时间内的交通放行信号,“暂态”用于表示状态切换过程中的信号过渡过程。控制系统的工作流程必须经由“暂态”完成模式切换,以避免控制系统在光线强度处于临界范围时交通灯运行状态发生突然改变。
通过考察分析十字路口交通灯的显示规律,绘制的状态转移如图4所示,并根据图中揭示的狀态转移规律编写程序。图中每个状态记录了系统在一定条件下的运行情况,在程序中通过定时器中断或外部中断触发状态切换,经过过渡状态在下一循环周期转入新的状态。限于篇幅,本文不再就各软件模块的工作流程和实现原理展开具体论述。
5 结语
本文以ATmega328为核心设计交通灯控制系统,实现了4个方向交通信号灯的定时切换和倒计时显示功能,系统可根据环境光强自行切换运行状态,并向用户提供LCD菜单操作界面,用于调整系统设置参数。经过软件设计和硬件调试,本文实现的控制系统具有运行稳定、调节灵活、操作简便的优点,可为智能化交通控制系统的研宄和设计提供参考。
[参考文献]
[1]宋依青,张润.自适应交通灯控制系统的设计与实现[J].计算机测量与控制,2008(4):497-499.
[2]王瑾,袁战军,李小斌.交通灯控制系统的设计与仿真[J].海南大学学报(自然科学版),2014(4):334-339.
[3]王姝,郭昱,武丽云.基于ATmega328P_PU智能开关灯控制器的设计[J].机电工程技术,2016(12):15-18,57.
[4]吴振羞,刘孝赵.74HC595在单片机控制多位数码管中的应用[J].科技广场,2013(5):174-176.
[5]叶军.基于AVR单片机的数据采集系统的设计[J].大众科技,2013(9)..15-16,3.
[6]沈建良,赵文宏,贾玉坤ATmegal28单片机入门与提高[M].北京:北京航空航天大学出版社,2009.