拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

单片机物联网|毕设答辩|毕业设计项目|基于51单片机的交通控制系统设计

单片机物联网|毕设答辩|毕业设计项目|基于51单片机的交通控制系统设计 标题基于51单片机的交通控制系统设计文档介绍第1章 绪论1.1研究背景与意义我国城市化进程持续加快城市人口密度骤增机动车保有量呈爆发式增长统计显示到2023年底全国机动车保有量超4.3亿辆汽车保有量达3.2亿辆。交通需求极速增长道路资源却较为受限二者之间的矛盾愈发凸显城市交通拥堵状况成为约束城市发展影响居民生活品质的关键因素交通信号控制系统属于城市交通运作的重要手段其智能化可靠程度同道路通行效率及安全紧密相连。传统交通信号控制大多采取固定配时的定时控制法不能遵照实际车流量实施动态调整常常引发绿灯空放红灯排队之类资源浪费情况所以研发一种可做到交通信号自动控制具有倒计时显示和应急处理能力的智能交通控制系统这对于改善城市交通压力提升道路通行能力有着十分重要的现实意义。单片机的交通控制系统有着诸多突出优点比如成本低可靠性强开发历时较短而且比较容易扩充非常合适中小型城市交叉口学校附近工业园区之类地方的交通经营需求本设计以STC89C51单片机作为核心控制模块并经由编程做到对四个方向红黄绿指示灯的自动化轮换控制还装有LED数码显示器来显示剩余秒数这样驾驶人员和行人才能清楚知晓信号灯亮剩多久从而提升路口的通行安全指数系统特意规划了单独的键盘输入接口可以自由设定通过时限并手动操作应急模式进而使得系统更具适应能力与应用价值。这项研究有益于加深认识单片机的原理及其应用还会为日后开发更为复杂的智能交通控制系统形成基础。1.2国内外研究现状1.2.1数字钟的意义我国交通信号控制系统的研发较晚直至20世纪80年代才开始接纳国外先进技术并执行消化吸收早期大多采取定时控制方式依照过往交通数据事先制定信号配时计划此方式虽简单可靠却难以适应交通流的动态改变步入21世纪之后伴随着电子技术和控制理论不断发展国内学者逐渐把模糊控制神经网络等智能算法应用到交通信号控制当中清华大学陆化普教授的团队提出依靠即时交通流量的自适应控制算法利用视频检测以及地磁感应获取车流量数据并据此来动态调节绿灯持续时间同济大学杨晓光教授专注于公交优先信号控制方面的研究研制出具备识别公交车并且赋予其优先通行权的信号控制系统。 当下国内一些主要交通信号控制系统厂家比如海信网络青岛亿联等已经推出具备区域协调控制功能的智能交通经营系统这个系统可以达成多条道路之间的联合控制创建绿波带不过在中小城市以及县乡道路那里仍然存在很多依靠单片机的简单交通控制系统这种系统成本低保养起来也很简单所以其应用前景十分可观。1.2.2数字电子钟的应用国外发达国家在交通信号控制方面展开研究比较早其理论体系和技术标准比较完善20世纪60年代加拿大 Toronto 市创建了世界首套城市交通信号计算机控制系统开创了交通信号集中控制之先。英国交通与道路研究所研发的 TRANSYT 系统把定时控制和改良算法融合经由创建交通模型来改良信号配合方案澳大利亚开发的 SCATS 系统做到了自适应控制它会遵照即时检测到的交通流量自动调整信号时段和绿灯时限比。 美国的 RHODES 系统更多关注即时性和预测性该系统用动态规划技术针对短期交通流实施预测并改良控制策略近年来伴随物联网大数据以及人工智能技术逐步发展起来国外的研究重点渐渐转向车路协同环境中的信号控制美国密西根大学研制出智能交叉路口系统此系统可达成车辆与信号灯之间的即时通信依靠车载终端给予驾驶员最佳通行速度建议缩减停车等候时延。 德国日本等国正在深入探究依靠深度学习的交通信号控制方法经由加强学习算法让控制系统不断试验错误来改善控制策略取得了不错的仿真成果。1.3 主要研究内容本文以STC89C51单片机为核心控制器设计并实现了一套功能完整的交通灯控制系统。主要研究内容包括以下几个方面先要剖析典型十字路口的交通流运行规律并确立信号灯状态转换的逻辑联系从而规划出契合实际需求的控制方案遵照技术文档里给出的状态转换图系统设有4种主要状态以及2个过渡状态东西向和南北向会轮流享有通行权经由黄灯来提示执行状态转换以此保障路口的安全通行。接着要开展系统硬件电路的设计工作涵盖单片机最小系统信号灯显示电路数码管显示电路键盘输入电路和驱动电路等各个模块在元器件选型的时候从性能成本和可得性这些方面予以全面考量选取STC89C51单片机当作主控芯片运用74HC245驱动芯片加强负载能力选择两体一体化共阴极数码管用于倒计时显示。 系统软件程序设计环节需采用模块化编程理念把程序分解成主程序模块定时中断模块按键处理模块和显示驱动模块经由定时器中断达成精确计时用动态扫描技术来带动数码管显示并用状态机思维做到交通状态的平滑转换完成系统硬件调试软件调试以及联调试验之后要核查各功能是否达成剖析其中的问题并给出改进方向。第2章 系统总体设计2.1 需求分析交通灯控制系统是路口交通运作的关键设施需达成安全性可靠性和实用性这三大基本要求从功能需求看该系统要可自动操控东西和南北方向红黄绿三色信号灯的亮与灭并依照预先设定好的时间规律依次循环切换遵照技术文档里所列的状态转换图系统必要做到诸多状态的循环控制其中涵盖主状态和过渡状态这样的控制形式顺应国内大半路口的通行惯例东西向与南北向的通行时延可以按实际交通量来安排。 系统需具备倒计时显示功能分别在四个路口设置 LED 数码管用来即时显示当前状态所剩时间这样就能让驾驶员和行人提前判断信号灯的变化情况。系统还要有参数设置功能经由按键就能调节各状态的持续时限从而顺应不同时段以及不同路口的交通状况从性能需求来讲系统计时要精准信号灯的切换过程应当流畅且没有颤动现象数码管显示也要清晰稳定而且不能闪烁就可靠性而言系统要有抗干扰能力在恶劣环境下仍可正常运行而且复位电路能够促使系统在上电或者出现异常时自动回归正常操作状态至于经济性方面则要采用成本比较低的元件把整体造价控制在恰当的范围之内如此一来才方便推广并投入使用。从扩展性需求来看本系统需保留紧急控制功能一旦救护车消防车等特种车辆经过时可由人工或者自动转入紧急模式两边均亮红灯以保障特种车辆得以优先通行。等到特种车辆离开之后系统会自动回到原先的工作状态而且系统还要设有违规检测接口日后可以扩充连接车辆检测传感器检测到违规变道情况时发出声光警报或者拍照记录关于人机交互部分除了最基本的按键设定之外可以考虑增设 LCD 显示屏即时显示当前工作模式及其设置参数从而提升操作的直观程度。 电源这一方面来说系统得要符合市电供电环境的要求并且也要有备用电源接口以防停电造成交通陷入混乱。针对前面提到的各种需求加以深入剖析之后就可以给后面硬件选型以及软件设计给予清晰的指引方向从而保证最终所设计出来的系统能够达到实际应用的目的。2.2 交通状态转换方案根据技术文档中提供的交通状态图和交通状态及红绿灯状态表本系统采用多状态循环控制方案。具体状态转换逻辑如下初始时东西方向信号灯显示红色南北方向则显示绿色此情形表明东西方向禁止通行南北方向可以通行而且其历时长短能够预先设定。这一时限能依照路口的实际车流量来调节在早晚高峰时段可适当地延长其时间过渡阶段表现为东西方向信号灯仍旧显示红色南北方向的绿色信号灯熄灭黄色信号灯开始亮起这个阶段起到警示南北方向的通行权限将要终止提醒驾驶员做好停车准备的作用经过了状态转变之后所处的主要状态就是东西方向信号灯显示绿色南北方向信号灯显示红色此状况显示东西方向准许通行南北方向禁止通行它的历时长短同样可以事先设定而且还可以按照主次道路之间的交通需求差别予以调整还存在一种过渡情况即东西方向出现黄色信号灯而南北方向的红色信号灯依旧处于点亮状态此情形用来告知东西方向的通行权限即将耗尽。 前面所述各种状态全部完成后便会回到最初状态从而创建起循环控制体系。这种状态转换方案针对路口通行的安全性和高效性展开设计在主状态下仅有一个方向享有通行权如此便规避交叉冲突。处于过渡状态时黄灯的亮起告知驾驶员状态即将改变黄灯时段内已跨越停止线的车辆仍可前行未跨过停止线的车辆则需准备好停车如此既能保障通行效率又能保证安全而状态持续时间的设定依照实际交通需求的差别来执行大致合乎多数路口主干道和次干道的实际交通需求差距状况要是东西向与南北向的车流量差不多那么其持续时间亦可被安排成一致技术文件里显示能够经由按键设置定时器所以实际操作起来按照现场调研得出的交通流量信息可以灵活地调节各状态下所停留的时延从而做到某种程度上的自适应调节。 本方案具备紧急模式按下紧急按键以后系统就会立刻把两个方向都转为红灯以清空路口给特种车辆让路再按一次紧急按键或者经过一定时限之后系统才会回到中断之前的状态并重新开始运行这样的设计提升了系统处理突发事件的能力。2.3 总体架构设计本系统采取模块化设计思维其整体架构包含硬件层引导层及应用层这三个层级硬件层牵涉单片机最小系统信号灯显示电路数码管显示电路键盘输入电路以及驱动电路等实际组件引导层则包含了各个硬件模块的引导程序比如 I/O 口初始化程序定时器初始化程序数码管动态扫描程序等等应用层要达成交通状态控制逻辑按键处理逻辑以及紧急模式处理逻辑这些关键功能该系统把 STC89C51 单片机当作核心控制器经由 I/O 口来控制信号灯的开关凭借独立式按键来获取用户输入并利用数码管来显示倒计时信息系统总的框图清楚地表现出各个模块之间的关联及其数据流动方向。在具体硬件结合上单片机最小系统包含STC89C51芯片晶振与电容形成起来的时钟电路还有由电容和电阻合成的按键复位电路。信号灯显示电路用发光二极管来模仿四个路口的红黄绿三种颜色的灯并利用驱动芯片提升其推动能力从而保证LED亮度充足数码管显示电路则选用的是四位一体共阴极数码管用以显示东西南北这四个方向的倒计时数字经由动态扫描技术做到显示效果凭借人眼视觉暂留的原理只要扫描频率足够高就会给人一种四个数码管一起平稳显示的感觉键盘输入电路采取独立按键设计各个按键占据一个 I/O 口用于设定时间开启紧急模式等事项。 软件架构上主程序采用前后台系统设计其中无限循环充当后台任务来处理按键扫描及状态更新事务定时器中断当作前台任务去承担精确计时和数码管刷新的任务此架构既能保障计时准确无误又能简化程序设计符合该系统功能需求。第3章 系统硬件电路设计3.1 系统硬件总体构成本系统的硬件电路包含五个主要部分它们分别是单片机最小系统信号灯显示电路数码管显示电路键盘输入电路以及驱动电路这些部分相互配合以达成交通灯自动控制的目的其中单片机最小系统起到控制的核心作用其内部含有STC89C51单片机时钟电路以及复位电路该系统需运行控制程序对输入信号执行处理并发出相应的控制指令信号灯显示电路由高亮度发光二极管形成被分为四组来模仿东西南北四个方向的红黄绿三种颜色的信号灯每组中的三个LED对应红灯黄灯和绿灯。 数码管显示电路采用四位一体且为共阴极数码管分别设置于四个路口方向随时显示当下信号状态的倒计时秒数从而让驾驶员与行人清楚认识到余下时间键盘输入电路有独立式按键这个按键可增添时间削减时间确定设置以及开启紧急模式利于现场调整并且适合应对特殊情况驱动电路用的是总线驱动器这样就能提升单片机 I/O 口的推动能力保证信号灯和数码管得到足量的工作电流使得显示既清楚又稳定。硬件电路设计依照可靠性经济性与可扩展性的原则来执行在可靠性层面所有的元器件均采用工业级产品其工作温度范围符合户外使用的条件电路板设计时充分考量到抗干扰措施电源线被加粗关键信号线实施屏蔽处理并把晶振尽量放置在靠近单片机引脚之处以减小寄生电容。从经济性角度看只要符合功能需求就在众多元器件当中挑选性价比较高的来进行选用从而有效地掌握成本至于可扩展性电路板事先就保留了一些I/O口以及扩展接口这样就能为日后添加诸如车辆检测传感器无线通讯模块之类的外部设备带来便利。 硬件总体形成较为明晰各模块环绕单片机呈星形相连此种结构便于调试及维修电源部分经由稳压器把市电整流并降压成稳定电压来向整个系统供电而且留有备用电池接口在断电时可使时钟芯片持续计时从而保障时间参数不会遗失。3.2 单片机最小系统设计3.2.1 STC89C51单片机简介STC89C51为低功耗高性能的CMOS 8位微控制器它具有Flash程序存储器RAM数据存储器双向I/O端口定时器 / 计数器中断源与中断系统以及全双工串行通信接口此芯片采用经典的MCS - 51内核其指令系统与Intel 8051完全适配开发较为便捷资源也比较丰富它的工作电压范围符合常规供电需求工作频率也能满足当前设计的需求。STC89C51具备ISP在线编程功能不用专用编程器经由串口就可以下载程序极大地便于开发调试和现场更新该芯片有两种低功耗工作模式即空闲模式和掉电模式在空闲模式里CPU停止工作但外设仍照常运行而在掉电模式下振荡器停止工作功耗降到最小这很适合由电池供电的地方。 在本设计当中STC89C51所具有的资源及其性能完全能够符合交通灯控制系统的相关需求其上众多的I/O口可直接关联LED及数码管而且定时器能够精准执行计时任务其中断系统可以针对按键操作或者紧急情况作出反应所以选取该芯片当作主控制器属于一种比较恰当的做法。3.2.2 时钟电路设计时钟电路对于单片机而言非常关键它可以给单片机赋予精准的时序信号从而影响到指令执行的速度本设计采取了内部时钟的方式在 STC89C51 的 XTAL1 和 XTAL2 引脚之间接入石英晶体振荡器以及两个电容以此形成自激振荡电路。晶振频率应选取可产生标准机器周期频率的数值如此一来才能方便定时器实施精确计时并且也能产出标准波特率以供串行通信之用两个电容可起到稳定振荡频率及利于快速起振的作用本设计采用了恰当容值的瓷片电容电路设计的时候晶振与电容应当紧挨着单片机引脚来布置以此来缩减寄生电容并规避电磁干扰而且连线最好是又短又粗。 在 PCB 布局时晶振下方不宜设置其他信号线防止发生相互干扰时钟电路所产生的振荡信号经由单片机内部电路加工之后就可得到机器周期信号这种精度足以符合交通灯控制对于计时准确性方面的需求。3.2.3 复位电路设计复位电路用来把单片机内部各个寄存器重新设置成已知状态程序从起始地址执行起来这样就能保证系统正常启动STC89C51这个型号的芯片它的RST引脚属于复位输入端只有出现高电平时才有效要是这个引脚一直维持高电平达到预定的时间长度那么单片机就会做一次复位动作。在本设计当中用到了复合型复位电路这种电路把按键手动复位和上电自动复位融合起来上电自动复位依靠电容慢慢充上电来达成目的刚打开电源的时候电容两侧的电压不可能立刻发生改变所以RST引脚显示的是高电平不过随着时间推移电容持续充着电RST引脚上的电压也就慢慢往下掉只要电压跌到某个临界值之下便标志着复位过程已经完毕。 复位时间取决于RC时间常数从而保证复位得以完成按下复位键即为手动复位通常用于调试或者系统卡顿时手动重新启动。按下复位键时电能经由按键传递给RST引脚促使单片机执行复位操作松开按键以后由于电容的放电现象RST引脚会回到低电平之后单片机能恢复正常运行设计复位电路时还要着重考虑抗干扰手段可以在RST引脚和地之间并联一个小电容以此来过滤高频干扰规避因干扰而产生的意外复位情况复位电路对于系统的稳定运行十分关键设计优良的复位电路可以有效地免除由于上电不稳以及电源波动造成的系统死机故障。3.3 信号灯显示电路设计信号灯显示电路是本系统的执行部件直接面向路口交通参与者其可靠性至关重要。本设计采用高亮度发光二极管模拟四个方向的红、黄、绿信号灯每个方向三个LED分别对应红灯、黄灯和绿灯。LED的发光颜色与功能对应红色表示禁止通行黄色意味着警戒并即将转换绿色则表示准许通行这符合国家标准的要求LED的电气特性存在特定的正向导通电压及工作电流范围。单片机I/O口的输出推动能力比较低无法直接推动LED所以要增设推动电路此设计采用总线推动器作为LED推动芯片该芯片具备较高的推动能力每路均可输出足够的电流完全可以满足LED推动的需求。 驱动芯片的引脚连接方式需合理设置这样才能让数据从单片机传递给LED并经由限流电阻连接到LED的阳极而LED的阴极则接地。限流电阻的取值按照LED的工作电流来计算应该选取合适的阻值电阻。设计电路的时候LED的布局和标识也是需要考量的方面把同方向的三个LED聚集在一起安装红色灯光位于上方或者左侧黄色灯光处于中间位置绿色灯光位于下方或者右侧这样做方便驾驶员加以辨别想要模仿真实路口信号灯的排列情况这个设计就把东西方向的信号灯装在电路板的上下两侧南北方向的信号灯则安装在左右两侧与实际路口的方向相符合。要想提升LED亮度的均匀程度即便不同颜色的LED施加的工作电流一样但它们的亮度也许还是存在差别可以经由调节限制流电阻的阻值来让各种颜色LED的亮度更为相近一些要知道LED是一种电流控制型元件所以其供电电路应当供应固定的电流而不是仅仅只是电压被选用的驱动芯片其输出特性能够很好地适应LED的驱动需求。 为了方便调试及观测可在LED旁边标明其所对应的方向与颜色亦或是采用不同颜色的LED直接予以区分。设计信号灯电路时应考虑冗余设计若某个LED出现故障其他LED仍可正常运行不至于完全丧失指示功能。3.4 数码管显示电路设计数码管显示电路用来即时显示各方向信号灯剩余的时间这对于优化系统的人性化程度十分关键本设计选用四位一体的共阴极数码管它们分别负责显示东西方向和南北方向的倒计时数字。一体数码管内部包含两个八段数码管它们共享一组段选线而且靠两个独立的位选端来分别操控两个数码管的亮灭情况所以一个一体数码管只需少量引脚比两个独立的数码管能节省I/O口资源这个系统一共要用到很多数码管总共就得许多的段选信号和位选信号I/O口数量或许不够用所以必须用动态扫描显示技术才行。 动态扫描依靠人眼的视觉暂留特性分时轮流点亮各数码管只要刷新频率足够高便好似所有数码管均处于稳定显示状态实际操作过程中把多块数码管的同名段选引脚串联起来由 I/O 口经由推动电路给予段码信号多块数码管的位选引脚则分别由其他 I/O 口经推动电路加以控制显示程序逐个选取各个位每个位的点亮历时合适其完成一轮扫描的刷新频率符合无闪烁感的需求。数码管的驱动同样需要增强I/O口驱动能力因为一个数码管点亮时电流较大。本设计采用驱动芯片分别驱动段选和位选信号一片用于驱动段选线另一片用于驱动位选线。段选信号经驱动后通过限流电阻连接到数码管的各段引脚限流电阻阻值根据数码管工作电流计算选用。位选信号直接连接到数码管的公共阴极由于单片机输出高电平时电流能力有限而位选端需要灌入较大电流因此实际接线时采用低电平点亮方式当位选信号处于低电平状态时相应的数码管公共阴极会被接地而那些其段选信号为高电平的段就会被点亮。用此种方法驱动芯片向低电平实施灌电流的能力较强所以比较适宜用于推动数码管的公共端在设计电路的时候还要留意段码与数码管引脚之间的对应联系按照数码管的型号来确定各个段应接在哪个引脚上书写段码表的时候一定要细心校对要不然显示出来的数字就会出现乱序的情况如果想要方便设备的安装及其连线工作可以将数码管加工成单独的显示模块经由排线与主控制板相接如此一来既能方便执行调试操作又利于之后的检修及替换零件事宜。3.5 键盘输入电路设计键盘输入电路属于人机交互界面用以获取操作者发出的控制指令调整通行时段切换紧急模式等事务皆由其承担本设计采取独立式键盘架构各按键对应专属I/O口彼此隔离无碍利于编程且稳定性佳。尽管独立式键盘所占I/O口量大但此系统对按键数目需求有限几个基本按键便已足够应对主要操作任务所以选择独立式键盘较为恰当按键一端连向单片机引脚另一端接至地线处于正常运行状态时经由软件设定相关I/O口为输入模式并启动内部上拉功能从而令该引脚维持高电位一旦按键被按下则引脚直接接地引发电位降至低位程序监测到这种电位变动就能识别到按键已被按动。 这种接线方法借助了单片机内部的上拉电阻不需要外加上拉电阻使得电路设计更为简便按键的功能可以按照实际需求来定义比如提升时间缩减时间进入设置模式以及启动紧急模式等。图3-1 键盘输入电路原理图在键盘电路设计当中关键之处在于考量按键抖动现象机械式按键在按下或者松开的时刻会出现短暂的抖动情况抖动之时电平会发生多次翻转。如果未予处理那么单片机大概率会被误判为多次按键按压解决抖动问题存在两种办法一是依靠硬件来达到目的比如利用触发器或者滤波电路这必然会加大成本并且让电路变得更复杂一些另一种则是软件去抖这种方法既简便又实用就是在检测到按键按下以后稍微延迟一段时间之后再去重新检测一次倘若此时还是处于低电平状态的话便可以认定这就是一个有效的按键信号本项目就采用了软件去抖这样的方案于是在有关于按键处理的那一部分程序代码里插入了专门用于产生延时效应的函数指令从而绕过了那段时间内存在的不稳定因素然后再去获取按键的真实工作状况。 要想加强按键操作的可靠性可以添加按键释放检测即只有检测到按键被松开之后才会执行相应功能防止长时间按压时出现连续触发的情况。在设计按键电路的时候还要注意防范静电放电可以在按键引脚和地之间并联一个小电容来吸收静电以此来保护单片机I/O口免受损害对于那些需要频繁操作的按键应该选择具有较长使用寿命和较好手感的按键开关这样才能保证其在长时间使用过程中维持可靠的工作性能。3.6 驱动电路设计驱动电路在单片机系统中起着承上启下的重要作用它将单片机的弱信号放大为能够驱动外部负载的强信号。本系统中需要驱动的负载包括多个LED信号灯和多位数码管段总电流需求较大而单片机I/O口的驱动能力有限因此必须增加驱动电路。本设计选用总线驱动器作为主要驱动芯片该芯片是常用的总线驱动器具有双向传输功能输出驱动能力强每路可输出足够的拉电流或灌电流。所选驱动芯片的主要特性包括其工作电压范围较广能与TTL电平相适配具备三态输出功能可轻松做到总线隔离。其传送延误时间处于合理区间利于实际应用而且功耗较低在此套系统当中采用了多片驱动芯片其中一片专门用来激发信号灯LED另有两片用以激发数码管。驱动电路设计的具体实现如下对于信号灯驱动电路来说把单片机有关的引脚同第一片驱动芯片的输入端相接该驱动芯片的输出端借助限流电阻连接到各个 LED 的阳极LED 的阴极则接地。驱动芯片的控制引脚要么接到高电平要么接到低电平这样才能保证数据传送的方向正确而且芯片一直维持在使能状态就数码管段选驱动而言把单片机 I/O 口与第二片驱动芯片的输入端相连此驱动芯片的输出端经过限流电阻之后再连接到数码管的段选引脚至于数码管位选驱动则是将单片机别的 I/O 口同第三片驱动芯片的输入端相接该驱动芯片的输出端直接同数码管的公共阴极相连。 采用低电平点亮数码管的时候位选驱动芯片输出低电平时会流入电流所以要选用灌电流能力强的芯片设计驱动电路的时候还要考虑电源滤波在每个驱动芯片的电源引脚旁边并联一个小电容来滤除高频噪声在总的电源输入端并联一个大容量的电解电容以稳定电源电压。驱动芯片应该尽可能贴近被驱动器件来布置从而减小由于长线传递而产生的干扰和压降。第4章 软件程序设计4.1 主程序流程软件程序设计对于交通灯控制系统来说非常重要其决定了系统功能如何达成以及运行效率高低本系统软件运用模块化设计思路把整个程序拆解成主程序模块定时中断模块按键处理模块以及显示激发模块这四个大致独立的部分。这些模块之间依靠全局变量和函数调用来传达信息结构较为明晰方便执行调试与后续保障工作主程序堪称整个软件的支撑框架承担系统启动持续性循环任务安排以及异常情况应对等工作职责当系统上电或者被复位时主程序会先执行一些初始化步骤比如关闭看门狗设定堆栈指针初始化 I/O 口的状态调整定时器的工作模式及初始值启动定时器中断并初始化全局变量之类的事情。 初始之后主程序就踏入无休止循环当中在此期间持续检测按键状态更新交通状况并操控信号灯亮灭还要静候定时器中断的到来主程序流程图清楚地显示出程序运行的全部过程。主程序的核心是有限状态机它可做到交通状态的循环转换定义状态变量来显示当前主状态过渡状态及其余时间。在主循环里程序持续查看余下时间是不是为零一旦某个状态的余下时间被减到零就依当前状态转到下一个状态还要设置新状态的持续时间并给出信号灯输出比如开始时计数结束程序就会把状态改成过渡状态设定好过渡状态的持续时间然后调用信号灯控制函数去关闭对应方向的绿灯并打开黄灯依靠状态机来做到这种方式逻辑很明晰便于领会和改动若要调整状态的持续时间或者增添新的状态只须要改相关的代码就行。主程序中有对按键处理函数的调用定时扫描按键状态发现有效按键便执行相应功能要保障系统具备随时响应的能力所以主循环的执行时间应当越短越好防止出现长时间的等待或者繁杂的运算那些耗时的任务可以放到中断服务程序当中去处理亦或是拆分成很多小步来逐步完成。4.2 定时中断程序定时中断程序对于本系统做到精准计时十分关键其职责在于生成标准的秒信号而且推动数码管执行动态显示该设计运用定时器处于16位定时器模式经由设置恰当的定时时延定时器初值的计算需依照晶振频率以及机器周期来完成借助相关计算即可得出应被载入定时器的初值大小。当定时器执行初始化时须要设定工作模式加载初值开启中断功能并开启定时器本身之后定时器便开始运行每次经过所定的时间间隔就会引发一次中断事件而中断服务程序会把中断发生的次数加以累加统计等到这一累计数值达到预定目标之后就把秒标志位置于“1”状态然后刷新各方向剩余时限相关的变量内容。定时中断程序还负责数码管的动态扫描显示。由于数码管需要持续刷新才能稳定显示如果在主程序中用延时循环扫描会占用大量CPU时间影响其他任务的执行。因此将数码管扫描放在定时中断中是最佳选择每进入一次中断服务程序就切换一个数码管位送出对应的段码。中断频率经过合理设置扫描完所有数码管位所需时间合适刷新频率满足无闪烁感的要求。中断服务程序的流程是首先重新设置定时器的初始值确保下一次定时精准无误其次统计中断次数判定是否已到达秒信号。再次执行数码管扫描步骤依照当下的扫描位索引从显示缓冲区获取相应数字的段码并经由 I/O 口予以输出还要把先前被点亮的位给关闭把当前的位选中最后清除中断标志回到主程序当中显示缓冲区属于一个数组该数组用来存储各个数码管想要显示的数字主程序会在状态转换或者时间被更新的时候去改变这个缓冲区的内容而中断程序则承担着把缓冲区中的内容表现出来的任务这样一种生产者 - 消费者模型很好地化解了主程序和中断程序之间存在的数据同步难题。4.3 按键处理程序按键处理程序负责识别用户按键输入并执行相应功能是人机交互的核心。由于机械按键存在抖动问题程序必须采取去抖措施。本设计的按键处理流程如下在主循环里要定期调用按键扫描函数此函数会读取按键端口的状态然后拿这个状态和上次读取到的值做对比一旦察觉到按键状态发生了改变就开启去抖动延迟去抖动延迟采取软件延迟的办法调用完延时函数之后还要重新读取按键状态要是还是跟前面检查到的那个状态相符合就可以判定这是一个有效的按键操作针对按键被按下这种情形按照对应的按键编号来执行相关功能至于按键放开的情况大多数时候不需要做些什么不过对于一些得一直按住才生效的功能来说可以凭借检测到按键放开当作结束的标志。 按键的功能如下定义加键处于设置模式时可提升当前状态持续时间每次按下增加固定时间段。减键用来缩减持续时间但不得低于最低预设值设置键用以进出设置模式在设置模式里数码管会闪烁显示出可调节的参数按下加键或者减键实施调整再按下设置键予以确认并返回。紧急键负责开启或者关闭紧急模式按下之后两个方向都会亮起红灯全部计时停止运行按下此键或者经过一定时限以后才会复原原先状况。按键处理程序会针对长按和组合键这两种情况加以考量其长按功能的达成原理在于一旦监测到按键被按下并且得到确认之后并不会马上执行一次操作而是开动一个长按定时器假定按键保持按住的状态达到了预定的时间以后便会进入到连加或者连减的模式当中也就是每隔一段固定的时间就自动地执行一次加法或者减法的操作直至按键被松开为止。而所谓的组合键则是用以完成一些特别的功能譬如说当加键和减键一同被按下时就可以做到复位回出厂设置的目的也就是把所有的相关状态历时重新设回到默认的初始设定上去想要做到这一点就得让程序去记住各个按键各自按下之时的时刻以及是否已经被处理过之类的信息此外按键处理程序还要具有一定的抗干扰能力对于那些持续时间非常短暂的脉冲信号就应该当作干扰来不予理会在处于紧急状况的时候除了紧急键以外的所有其他按键都要被关闭掉以免因误按而影响到紧急通行的流程顺畅。 按键处理程序的设计需兼顾用户操作的便捷性和系统运行的安全性使得系统既灵活又可靠。4.4 显示驱动程序显示驱动程序要把时间信息以数字形式清晰地表现到数码管上这是改善系统用户体验的关键部分本系统用的是四位一体的共阴极数码管用来显示东西方向和南北方向的倒计时秒数显示驱动程序的重点在于动态扫描技术和段码转换技术。动态扫描的原理之前已经讲过依靠人眼的视觉暂留特点来分时点亮各个数码管所谓段码转换就是把数字变成数码管各个段的亮与灭的合成共阴极数码管的段码表得按照硬件的拼接方式去决定。 比方说显示数字的时候就得点亮对应的段所以其对应的二进制以及十六进制的表现形式就要设准确鉴于采用的是低电平来点亮那么实际上输出的段码便是取反之后的值所以在真正的编程过程当中一定要按照硬件的拼接方式来确定合适的段码表才行。显示驱动程序的工作流程如下定时中断服务程序当中定时切换扫描位从显示缓冲区获取当前位对应的数字经由查表得到段码并借助I / O口予以输出而且还要关闭之前点亮的位选择当前位。显示缓冲区属于多维数组用以表现各路口方向的十位与个位主程序每隔一秒更新的时候把各个方向剩余的时间转化为十位和个位数字存入显示缓冲区如果处于设置模式为达成数码管闪烁的效果程序增添了一个闪烁标志当进入设置模式之后定时把当下正在设置的位置显示成全灭而其余位置则照常显示从而产生闪烁的视觉效果告知用户哪些参数能够被调节。 显示驱动程序具备亮度调节功能经由调整每个位点亮的时间比例可以改变数码管的整体亮度进而符合不同环境光线的要求。比如白天时可加大点亮时间来提升亮度夜晚则减小点亮时间以减小亮度并缩减功耗。第5章 系统调试5.1 硬件调试硬件调试对于系统的正常运行至关重要它包含电路检查电源检测各模块功能验证这些环节首先要做的就是电路检查参照原理图和PCB图利用万用表逐一检测线路的连通情况特别留意电源线和地线是否存在短路现象也要看看单片机各引脚的焊接是否稳固还有晶振电容电阻等元件是否安装得当且极性没有错误针对集成电路芯片还要检查其安装方向是否正确有没有出现引脚弯曲或者虚焊的情况只有确定硬件连接没有问题之后才可以执行电源检测在不接上单片机的状况下向电路板供电测量稳压器的输出电压是否稳定正常还要用示波器查看电源纹波是否处于允许的范围之内要是电源正常那么就可以接入单片机展开空载检测测量单片机各个电源引脚的电压是否正常晶振是否已经启动振荡。 接下来要做各模块的功能检测先从信号灯电路开始编写简单检测程序依次点亮各LED看亮度是否均匀颜色是否准确若某个LED不亮或者亮度异常则需检查限流电阻和连接线。接着检测数码管显示电路编写检测程序让所有数码管全部点亮并显示出指定数字查看是否存在缺段或者亮度不均的情形调整限流电阻使得各部分亮度相同最后检测按键电路编写按键检测程序按下各个按键时观察对应 I/O 口电平的变化是否正确检查是否存在按键粘连或者接触不良的问题。硬件调试是个不断重复的过程只要发现错误就及时修正直到所有的硬件功能都能正常使用为止。5.2 软件调试软件调试是在硬件平台正常的前提下验证程序逻辑正确性和功能完整性的过程。本系统软件调试采用集成开发环境通过编程软件将编译生成的程序文件下载到单片机中进行在线调试。调试步骤分为模块调试和集成调试两个阶段。模块调试阶段分别测试各个功能模块首先对定时中断模块展开检测设定断点以查看中断是否依照预定时段切入还要核查中断次数统计是否准确利用示波器测量相关引脚波形来验证定时是否精准。之后检测按键处理模块并编写按键响应函数当按下各个按键时留意数码管显示或者LED状态是否有改变以此确认按键识别去抖处理长按累加等功能是否被正确达成再检测数码管显示模块编写检测程序让数码管轮流显示数字看是否存在闪烁缺段或者显示错误等情况进而调整扫描时序以确保显示稳定。 测试状态切换模块的时候模拟时间推移要看信号灯状态是不是按照预设的顺序发生变化持续时间是否准确各个模块如果都通过了测试就要开展合成调试把所有的模块放在一起运行完整的程序检查系统的整体运作是否协调有没有资源冲突或者逻辑矛盾。比如要看看定时中断里改动过的变量在主程序里面被访问的时候是否需要关闭中断保护按键处理会不会影响定时的准确性等软件调试过程中可能出现的问题包含逻辑错误时序冲突变量越界等得要仔细剖析现象经由设置断点一步一步执行观察变量的方法找到问题并且改正。5.3 功能测试功能测试是对系统整体性能的全面检验验证是否满足设计要求。测试内容包括基本功能测试、计时准确性测试、按键功能测试和紧急模式测试。基本功能测试系统上电之后会自动进入到起始状态数码管显示出倒计时情况等待观察到倒计时结束的时候看是否会自动转到下一个状态这样一步步做完所有状态之后再回到起始状态重新来一遍多次重复这个过程以检查状态之间的转换是否稳固有没有突然改变或者迟缓的现象发生。对于计时精准度的考量可以拿秒表去测量各个状态下所持续的时间长短留意误差是否落在可接受范围当中长时间持续运行之后累积起来的误差是不是达到了预期标准至于按键功能的考察按住设置键以后数码管就会闪动并转入设置模式按加键时时间增多按减键时时间缩减留意时间数值的变化是否和对应的按键指令相符当完成设置之后再按下设置键来予以确认并退出设置模式设定好的新时间会在接下来的一段时间内开始生效。 紧急模式考查时系统处于正常运行状态按下紧急键以后两个方向指示灯均亮起红灯数码管停止倒计时或者显示特定符号再次按下紧急键系统会回到之前中断时的状态并继续执行任务而且还要考查长按加键或者减键是否能开启连续叠加或者减小的功能按住加键和减键是否能够将其复位到初始状态在考查的过程中把各项功能的表现记录下来如果出现异常就要找出原因并加以改善不断做考查和调节使得系统不论是在哪种操作环境下都能够稳定而可靠地运行从而达到实际应用的需求。第6章 总结与展望6.1 工作总结本文以STC89C51单片机为核心设计并制作了一套功能完备的交通灯控制系统该系统可自动控制十字路口四个方向红黄绿信号灯的轮流转换做到东西向与南北向的交替通行而且经由LED数码管即时显示倒计时时间从而优化了路口通行的安全性与效率在硬件设计上完成了单片机最小系统信号灯显示电路数码管显示电路键盘输入电路以及驱动电路的原理图设计和PCB布局采用驱动芯片化解了单片机I/O口驱动能力欠缺的情况。 在软件设计方面运用模块化编程理念把程序分解成主程序模块定时中断模块按键处理模块以及显示驱动模块凭借定时器中断达成精准计时用动态扫描技术来激发数码管显示靠有限状态机做到交通状态的顺畅切换。系统专门设计了独立式键盘以此来设定时间参数操控紧急模式使得系统更具灵活性实用性更强经过硬件调试软件调试和功能检测证实该系统各个功能都符合设计要求计时精准显示稳固按键反应快捷紧急模式运行可靠此设计另外增进了对单片机原理及其应用的认知也为日后开发更为复杂的智能交通控制系统汇集了珍贵经验。6.2 不足与改进本设计基本上达成了预定的功能但是在研究与调试的时候也找出一些不够的地方要在后面的工作当中去改善这个系统采取固定的配时计划即便能够经由按键来调整时间还是属于定时控制之类没法按照实际的车流量来动态调整信号配时在车流量变化很大的交叉路口也许会出现资源被闲置或者拥堵加重的情形以后可以考虑采用车辆检测传感器随时收集各个方向的车流量数据利用自适应控制算法来动态调整绿灯的持续时间做到真正意义上的智能控制。 其次本系统紧急模式靠手动按键启动在实际应用时大概会存在响应迟缓的问题日后可把无线通信技术融合进去达成同特种车辆车载终端的自动化通信只要救护车消防车接近就会自动转入紧急模式从而加强应急响应速度数码管显示在强光环境下可能不太清楚可以考虑换成高亮度LED数码管或者LCD显示屏这样就能提升在室外环境下的可读性。 系统当下缺少故障自诊断功能要是某个LED元件出了问题或者数码管显示异常时就无法立刻察觉并发出警报以后可以增添故障检测电路以及声光报警装置以此来优化系统的可维护性本设计仅仅完成了单个路口自身的控制任务并不能够与周边路口协同配合之后可以加装通信模块进而做到对多个路口区域实施协调控制创建起绿波带这样才能更为有效地改善道路通行能力。6.3 未来展望随着物联网、人工智能和车路协同技术的快速发展智能交通信号控制系统将迎来更加广阔的发展前景。未来的交通信号控制将不再局限于单个路口的独立控制而是向着区域协调、车路协同、云端智能的方向发展。基于本设计的基础可以从以下几个方面进行拓展和深化一方面利用车路协同技术达成车辆与信号灯之间随时的信息互通信号灯可获知临近路口的车辆数目速度以及种类等相关信息针对每辆车制定理想的通行计划再经由车载终端告知驾驶员车速参考意见促使车辆无需停顿便能穿过路口从而明显削减停车等待时间并缩减能源损耗。另一方面运用深度强化学习这种人工智能算法来改善信号调整时机控制系统的运行过程需和交通环境持续互动借此自行探寻出适合的控制方法以应对复杂多变的车流量情况。 建立云端交通守护平台把大量路口的信号灯连入云端做到对区域交通状况的全面感知并协同改良依靠大数据分析来推断交通堵塞趋向事先执行疏导举措开发针对弱势道路使用者的保护功能经由行人检测传感器去辨别闯入者。
返回列表