基于51单片机的交通控制系统设计|毕业设计项目|毕设项目|单片机项目|物联网专业|毕业设计
2026/9/15 16:34:48 网站建设 项目流程

一、項目介绍

摘 要
城市化持续推进之际,城市交通堵塞现象越发严重,智能交通信号控制系统的意义不言而喻,它可提升道路通行效率,本文以STC89C51单片机作为核心,规划并且达成了一套较为完善的交通灯控制方案。
系统依照十字路口交通运行规律制定了东西向和南北向红,黄,绿信号灯的自动循环控制方案,而且经由LED数码管及时显现倒计时时间,方便驾驶员和行人清楚掌握信号灯剩余时间,硬件设计包含单片机最小系统,信号灯显示电路,数码管显示电路,键盘输入电路以及驱动电路,利用74HC245推动芯片提升 I / O 口推动能力,保证负载稳定运行。软件设计采取模块化编程理念,划分出主程序模块,定时中断模块,按键处理模块以及显示推动模块,凭借定时器中断达成精准计时,用动态扫描技术来推动数码管显示,经由有限状态机做到交通状态的平滑转换,系统还特意设计了独立式键盘,可以用于设置时间参数和控制紧急模式,从而提升了系统的灵活性与实用性。
经调试及检测可知,该系统运行稳定且可靠,计时精准,显示清楚,按键反应敏捷,可满足十字路口交通控制的基本需求,此系统成本低,操作简便,扩展能力佳,适合用于中小城市的路口,学校附近,工业园区等地的交通经营项目。

关键词:单片机;STC89C51;交通灯;倒计时显示;状态机

主要研究内容
本文以STC89C51单片机为核心控制器,设计并实现了一套功能完整的交通灯控制系统。主要研究内容包括以下几个方面:先要剖析典型十字路口的交通流运行规律,并确立信号灯状态转换的逻辑联系,从而规划出契合实际需求的控制方案,遵照技术文档里给出的状态转换图,系统设有4种主要状态以及2个过渡状态,东西向和南北向会轮流享有通行权,经由黄灯来提示执行状态转换,以此保障路口的安全通行。接着要开展系统硬件电路的设计工作,涵盖单片机最小系统,信号灯显示电路,数码管显示电路,键盘输入电路和驱动电路等各个模块,在元器件选型的时候,从性能,成本和可得性这些方面予以全面考量,选取STC89C51单片机当作主控芯片,运用74HC245驱动芯片加强负载能力,选择两体一体化共阴极数码管用于倒计时显示。 系统软件程序设计环节需采用模块化编程理念,把程序分解成主程序模块,定时中断模块,按键处理模块和显示驱动模块,经由定时器中断达成精确计时,用动态扫描技术来带动数码管显示,并用状态机思维做到交通状态的平滑转换,完成系统硬件调试,软件调试以及联调试验之后,要核查各功能是否达成,剖析其中的问题并给出改进方向。

需求分析
交通灯控制系统是路口交通运作的关键设施,需达成安全性,可靠性和实用性这三大基本要求,从功能需求看,该系统要可自动操控东西和南北方向红,黄,绿三色信号灯的亮与灭,并依照预先设定好的时间规律依次循环切换,遵照技术文档里所列的状态转换图,系统必要做到诸多状态的循环控制,其中涵盖主状态和过渡状态,这样的控制形式顺应国内大半路口的通行惯例,东西向与南北向的通行时延可以按实际交通量来安排。 系统需具备倒计时显示功能,分别在四个路口设置 LED 数码管,用来即时显示当前状态所剩时间,这样就能让驾驶员和行人提前判断信号灯的变化情况。系统还要有参数设置功能,经由按键就能调节各状态的持续时限,从而顺应不同时段以及不同路口的交通状况,从性能需求来讲,系统计时要精准,信号灯的切换过程应当流畅且没有颤动现象,数码管显示也要清晰稳定而且不能闪烁,就可靠性而言,系统要有抗干扰能力,在恶劣环境下仍可正常运行,而且复位电路能够促使系统在上电或者出现异常时自动回归正常操作状态,至于经济性方面,则要采用成本比较低的元件,把整体造价控制在恰当的范围之内,如此一来才方便推广并投入使用。
从扩展性需求来看,本系统需保留紧急控制功能,一旦救护车,消防车等特种车辆经过时,可由人工或者自动转入紧急模式,两边均亮红灯,以保障特种车辆得以优先通行。等到特种车辆离开之后,系统会自动回到原先的工作状态,而且,系统还要设有违规检测接口,日后可以扩充连接车辆检测传感器,检测到违规变道情况时发出声光警报或者拍照记录,关于人机交互部分,除了最基本的按键设定之外,可以考虑增设 LCD 显示屏即时显示当前工作模式及其设置参数,从而提升操作的直观程度。 电源这一方面来说,系统得要符合市电供电环境的要求,并且也要有备用电源接口,以防停电造成交通陷入混乱。针对前面提到的各种需求加以深入剖析之后,就可以给后面硬件选型以及软件设计给予清晰的指引方向,从而保证最终所设计出来的系统能够达到实际应用的目的。

交通状态转换方案
根据技术文档中提供的交通状态图和交通状态及红绿灯状态表,本系统采用多状态循环控制方案。具体状态转换逻辑如下:初始时,东西方向信号灯显示红色,南北方向则显示绿色,此情形表明东西方向禁止通行,南北方向可以通行,而且其历时长短能够预先设定。这一时限能依照路口的实际车流量来调节,在早晚高峰时段可适当地延长其时间,过渡阶段表现为东西方向信号灯仍旧显示红色,南北方向的绿色信号灯熄灭,黄色信号灯开始亮起,这个阶段起到警示南北方向的通行权限将要终止,提醒驾驶员做好停车准备的作用,经过了状态转变之后所处的主要状态就是东西方向信号灯显示绿色,南北方向信号灯显示红色,此状况显示东西方向准许通行,南北方向禁止通行,它的历时长短同样可以事先设定,而且还可以按照主次道路之间的交通需求差别予以调整,还存在一种过渡情况,即东西方向出现黄色信号灯,而南北方向的红色信号灯依旧处于点亮状态,此情形用来告知东西方向的通行权限即将耗尽。 前面所述各种状态全部完成后便会回到最初状态,从而创建起循环控制体系。
这种状态转换方案针对路口通行的安全性和高效性展开设计,在主状态下,仅有一个方向享有通行权,如此便规避交叉冲突。处于过渡状态时,黄灯的亮起告知驾驶员状态即将改变,黄灯时段内已跨越停止线的车辆仍可前行,未跨过停止线的车辆则需准备好停车,如此既能保障通行效率,又能保证安全,而状态持续时间的设定依照实际交通需求的差别来执行,大致合乎多数路口主干道和次干道的实际交通需求差距状况,要是东西向与南北向的车流量差不多,那么其持续时间亦可被安排成一致,技术文件里显示能够经由按键设置定时器,所以实际操作起来,按照现场调研得出的交通流量信息,可以灵活地调节各状态下所停留的时延,从而做到某种程度上的自适应调节。 本方案具备紧急模式,按下紧急按键以后,系统就会立刻把两个方向都转为红灯,以清空路口,给特种车辆让路,再按一次紧急按键或者经过一定时限之后,系统才会回到中断之前的状态并重新开始运行,这样的设计提升了系统处理突发事件的能力。

总体架构设计
本系统采取模块化设计思维,其整体架构包含硬件层,引导层及应用层这三个层级,硬件层牵涉单片机最小系统,信号灯显示电路,数码管显示电路,键盘输入电路以及驱动电路等实际组件;引导层则包含了各个硬件模块的引导程序,比如 I/O 口初始化程序,定时器初始化程序,数码管动态扫描程序等等;应用层要达成交通状态控制逻辑,按键处理逻辑以及紧急模式处理逻辑这些关键功能,该系统把 STC89C51 单片机当作核心控制器,经由 I/O 口来控制信号灯的开关,凭借独立式按键来获取用户输入,并利用数码管来显示倒计时信息,系统总的框图清楚地表现出各个模块之间的关联及其数据流动方向。
在具体硬件结合上,单片机最小系统包含STC89C51芯片,晶振与电容形成起来的时钟电路,还有由电容和电阻合成的按键复位电路。信号灯显示电路用发光二极管来模仿四个路口的红黄绿三种颜色的灯,并利用驱动芯片提升其推动能力,从而保证LED亮度充足,数码管显示电路则选用的是四位一体共阴极数码管,用以显示东西南北这四个方向的倒计时数字,经由动态扫描技术做到显示效果,凭借人眼视觉暂留的原理,只要扫描频率足够高,就会给人一种四个数码管一起平稳显示的感觉,键盘输入电路采取独立按键设计,各个按键占据一个 I/O 口,用于设定时间,开启紧急模式等事项。 软件架构上,主程序采用前后台系统设计,其中,无限循环充当后台任务来处理按键扫描及状态更新事务,定时器中断当作前台任务去承担精确计时和数码管刷新的任务,此架构既能保障计时准确无误,又能简化程序设计,符合该系统功能需求。

二、文档介绍




三、项目设计

主程序流程
软件程序设计对于交通灯控制系统来说非常重要,其决定了系统功能如何达成以及运行效率高低,本系统软件运用模块化设计思路,把整个程序拆解成主程序模块,定时中断模块,按键处理模块以及显示激发模块这四个大致独立的部分。这些模块之间依靠全局变量和函数调用来传达信息,结构较为明晰,方便执行调试与后续保障工作,主程序堪称整个软件的支撑框架,承担系统启动,持续性循环任务安排以及异常情况应对等工作职责,当系统上电或者被复位时,主程序会先执行一些初始化步骤,比如关闭看门狗,设定堆栈指针,初始化 I/O 口的状态,调整定时器的工作模式及初始值,启动定时器中断并初始化全局变量之类的事情。 初始之后,主程序就踏入无休止循环当中,在此期间持续检测按键状态,更新交通状况并操控信号灯亮灭,还要静候定时器中断的到来,主程序流程图清楚地显示出程序运行的全部过程。
主程序的核心是有限状态机,它可做到交通状态的循环转换,定义状态变量来显示当前主状态,过渡状态及其余时间。在主循环里,程序持续查看余下时间是不是为零,一旦某个状态的余下时间被减到零就依当前状态转到下一个状态,还要设置新状态的持续时间并给出信号灯输出,比如开始时计数结束,程序就会把状态改成过渡状态,设定好过渡状态的持续时间,然后调用信号灯控制函数去关闭对应方向的绿灯并打开黄灯,依靠状态机来做到这种方式,逻辑很明晰,便于领会和改动,若要调整状态的持续时间或者增添新的状态,只须要改相关的代码就行。主程序中有对按键处理函数的调用,定时扫描按键状态,发现有效按键便执行相应功能,要保障系统具备随时响应的能力,所以主循环的执行时间应当越短越好,防止出现长时间的等待或者繁杂的运算,那些耗时的任务可以放到中断服务程序当中去处理,亦或是拆分成很多小步来逐步完成。

定时中断程序
定时中断程序对于本系统做到精准计时十分关键,其职责在于生成标准的秒信号,而且推动数码管执行动态显示,该设计运用定时器处于16位定时器模式,经由设置恰当的定时时延,定时器初值的计算需依照晶振频率以及机器周期来完成,借助相关计算即可得出应被载入定时器的初值大小。当定时器执行初始化时,须要设定工作模式,加载初值,开启中断功能并开启定时器本身,之后定时器便开始运行,每次经过所定的时间间隔就会引发一次中断事件,而中断服务程序会把中断发生的次数加以累加统计,等到这一累计数值达到预定目标之后,就把秒标志位置于“1”状态,然后刷新各方向剩余时限相关的变量内容。
定时中断程序还负责数码管的动态扫描显示。由于数码管需要持续刷新才能稳定显示,如果在主程序中用延时循环扫描,会占用大量CPU时间,影响其他任务的执行。因此将数码管扫描放在定时中断中是最佳选择,每进入一次中断服务程序,就切换一个数码管位,送出对应的段码。中断频率经过合理设置,扫描完所有数码管位所需时间合适,刷新频率满足无闪烁感的要求。中断服务程序的流程是:首先重新设置定时器的初始值,确保下一次定时精准无误,其次统计中断次数,判定是否已到达秒信号。再次执行数码管扫描步骤,依照当下的扫描位索引,从显示缓冲区获取相应数字的段码,并经由 I/O 口予以输出,还要把先前被点亮的位给关闭,把当前的位选中,最后清除中断标志,回到主程序当中,显示缓冲区属于一个数组,该数组用来存储各个数码管想要显示的数字,主程序会在状态转换或者时间被更新的时候去改变这个缓冲区的内容,而中断程序则承担着把缓冲区中的内容表现出来的任务,这样一种生产者 - 消费者模型很好地化解了主程序和中断程序之间存在的数据同步难题。

按键处理程序
按键处理程序负责识别用户按键输入并执行相应功能,是人机交互的核心。由于机械按键存在抖动问题,程序必须采取去抖措施。本设计的按键处理流程如下:在主循环里要定期调用按键扫描函数,此函数会读取按键端口的状态,然后拿这个状态和上次读取到的值做对比,一旦察觉到按键状态发生了改变,就开启去抖动延迟,去抖动延迟采取软件延迟的办法,调用完延时函数之后还要重新读取按键状态,要是还是跟前面检查到的那个状态相符合,就可以判定这是一个有效的按键操作,针对按键被按下这种情形,按照对应的按键编号来执行相关功能;至于按键放开的情况,大多数时候不需要做些什么,不过对于一些得一直按住才生效的功能来说,可以凭借检测到按键放开当作结束的标志。 按键的功能如下定义,加键处于设置模式时可提升当前状态持续时间,每次按下增加固定时间段。减键用来缩减持续时间,但不得低于最低预设值,设置键用以进出设置模式,在设置模式里,数码管会闪烁显示出可调节的参数,按下加键或者减键实施调整,再按下设置键予以确认并返回。紧急键负责开启或者关闭紧急模式,按下之后两个方向都会亮起红灯,全部计时停止运行,按下此键或者经过一定时限以后才会复原原先状况。
按键处理程序会针对长按和组合键这两种情况加以考量,其长按功能的达成原理在于,一旦监测到按键被按下并且得到确认之后,并不会马上执行一次操作,而是开动一个长按定时器,假定按键保持按住的状态达到了预定的时间以后,便会进入到连加或者连减的模式当中,也就是每隔一段固定的时间就自动地执行一次加法或者减法的操作,直至按键被松开为止。而所谓的组合键则是用以完成一些特别的功能,譬如说当加键和减键一同被按下时,就可以做到复位回出厂设置的目的,也就是把所有的相关状态历时重新设回到默认的初始设定上去,想要做到这一点就得让程序去记住各个按键各自按下之时的时刻以及是否已经被处理过之类的信息,此外,按键处理程序还要具有一定的抗干扰能力,对于那些持续时间非常短暂的脉冲信号就应该当作干扰来不予理会,在处于紧急状况的时候,除了紧急键以外的所有其他按键都要被关闭掉,以免因误按而影响到紧急通行的流程顺畅。 按键处理程序的设计需兼顾用户操作的便捷性和系统运行的安全性,使得系统既灵活又可靠。

显示驱动程序
显示驱动程序要把时间信息以数字形式清晰地表现到数码管上,这是改善系统用户体验的关键部分,本系统用的是四位一体的共阴极数码管,用来显示东西方向和南北方向的倒计时秒数,显示驱动程序的重点在于动态扫描技术和段码转换技术。动态扫描的原理之前已经讲过,依靠人眼的视觉暂留特点来分时点亮各个数码管,所谓段码转换就是把数字变成数码管各个段的亮与灭的合成,共阴极数码管的段码表得按照硬件的拼接方式去决定。 比方说显示数字的时候就得点亮对应的段,所以其对应的二进制以及十六进制的表现形式就要设准确,鉴于采用的是低电平来点亮,那么实际上输出的段码便是取反之后的值,所以在真正的编程过程当中,一定要按照硬件的拼接方式来确定合适的段码表才行。
显示驱动程序的工作流程如下:定时中断服务程序当中,定时切换扫描位,从显示缓冲区获取当前位对应的数字,经由查表得到段码,并借助I / O口予以输出;而且还要关闭之前点亮的位,选择当前位。显示缓冲区属于多维数组,用以表现各路口方向的十位与个位,主程序每隔一秒更新的时候,把各个方向剩余的时间转化为十位和个位数字,存入显示缓冲区,如果处于设置模式,为达成数码管闪烁的效果,程序增添了一个闪烁标志,当进入设置模式之后,定时把当下正在设置的位置显示成全灭,而其余位置则照常显示,从而产生闪烁的视觉效果,告知用户哪些参数能够被调节。 显示驱动程序具备亮度调节功能,经由调整每个位点亮的时间比例,可以改变数码管的整体亮度,进而符合不同环境光线的要求。比如白天时可加大点亮时间来提升亮度,夜晚则减小点亮时间以减小亮度并缩减功耗。

系统硬件总体构成
本系统的硬件电路包含五个主要部分,它们分别是单片机最小系统,信号灯显示电路,数码管显示电路,键盘输入电路以及驱动电路,这些部分相互配合以达成交通灯自动控制的目的,其中单片机最小系统起到控制的核心作用,其内部含有STC89C51单片机,时钟电路以及复位电路,该系统需运行控制程序,对输入信号执行处理,并发出相应的控制指令,信号灯显示电路由高亮度发光二极管形成,被分为四组来模仿东西南北四个方向的红,黄,绿三种颜色的信号灯,每组中的三个LED对应红灯,黄灯和绿灯。 数码管显示电路采用四位一体且为共阴极数码管,分别设置于四个路口方向,随时显示当下信号状态的倒计时秒数,从而让驾驶员与行人清楚认识到余下时间,键盘输入电路有独立式按键,这个按键可增添时间,削减时间,确定设置以及开启紧急模式,利于现场调整并且适合应对特殊情况,驱动电路用的是总线驱动器,这样就能提升单片机 I/O 口的推动能力,保证信号灯和数码管得到足量的工作电流,使得显示既清楚又稳定。
硬件电路设计依照可靠性,经济性与可扩展性的原则来执行,在可靠性层面,所有的元器件均采用工业级产品,其工作温度范围符合户外使用的条件,电路板设计时充分考量到抗干扰措施,电源线被加粗,关键信号线实施屏蔽处理,并把晶振尽量放置在靠近单片机引脚之处以减小寄生电容。从经济性角度看,只要符合功能需求就在众多元器件当中挑选性价比较高的来进行选用,从而有效地掌握成本,至于可扩展性,电路板事先就保留了一些I/O口以及扩展接口,这样就能为日后添加诸如车辆检测传感器,无线通讯模块之类的外部设备带来便利。 硬件总体形成较为明晰,各模块环绕单片机呈星形相连,此种结构便于调试及维修,电源部分经由稳压器把市电整流并降压成稳定电压来向整个系统供电,而且留有备用电池接口,在断电时可使时钟芯片持续计时,从而保障时间参数不会遗失。

在键盘电路设计当中,关键之处在于考量按键抖动现象,机械式按键在按下或者松开的时刻,会出现短暂的抖动情况,抖动之时,电平会发生多次翻转。如果未予处理,那么单片机大概率会被误判为多次按键按压,解决抖动问题存在两种办法,一是依靠硬件来达到目的,比如利用触发器或者滤波电路,这必然会加大成本并且让电路变得更复杂一些;另一种则是软件去抖,这种方法既简便又实用,就是在检测到按键按下以后,稍微延迟一段时间之后再去重新检测一次,倘若此时还是处于低电平状态的话,便可以认定这就是一个有效的按键信号,本项目就采用了软件去抖这样的方案,于是在有关于按键处理的那一部分程序代码里插入了专门用于产生延时效应的函数指令,从而绕过了那段时间内存在的不稳定因素,然后再去获取按键的真实工作状况。 要想加强按键操作的可靠性,可以添加按键释放检测,即只有检测到按键被松开之后才会执行相应功能,防止长时间按压时出现连续触发的情况。在设计按键电路的时候,还要注意防范静电放电,可以在按键引脚和地之间并联一个小电容来吸收静电,以此来保护单片机I/O口免受损害,对于那些需要频繁操作的按键,应该选择具有较长使用寿命和较好手感的按键开关,这样才能保证其在长时间使用过程中维持可靠的工作性能。

驱动电路设计
驱动电路在单片机系统中起着承上启下的重要作用,它将单片机的弱信号放大为能够驱动外部负载的强信号。本系统中需要驱动的负载包括多个LED信号灯和多位数码管段,总电流需求较大,而单片机I/O口的驱动能力有限,因此必须增加驱动电路。本设计选用总线驱动器作为主要驱动芯片,该芯片是常用的总线驱动器,具有双向传输功能,输出驱动能力强,每路可输出足够的拉电流或灌电流。所选驱动芯片的主要特性包括:其工作电压范围较广,能与TTL电平相适配,具备三态输出功能,可轻松做到总线隔离。其传送延误时间处于合理区间,利于实际应用,而且功耗较低,在此套系统当中,采用了多片驱动芯片,其中一片专门用来激发信号灯LED,另有两片用以激发数码管。
驱动电路设计的具体实现如下:对于信号灯驱动电路来说,把单片机有关的引脚同第一片驱动芯片的输入端相接,该驱动芯片的输出端借助限流电阻连接到各个 LED 的阳极,LED 的阴极则接地。驱动芯片的控制引脚要么接到高电平,要么接到低电平,这样才能保证数据传送的方向正确,而且芯片一直维持在使能状态,就数码管段选驱动而言,把单片机 I/O 口与第二片驱动芯片的输入端相连,此驱动芯片的输出端经过限流电阻之后再连接到数码管的段选引脚;至于数码管位选驱动,则是将单片机别的 I/O 口同第三片驱动芯片的输入端相接,该驱动芯片的输出端直接同数码管的公共阴极相连。 采用低电平点亮数码管的时候,位选驱动芯片输出低电平时会流入电流,所以要选用灌电流能力强的芯片,设计驱动电路的时候还要考虑电源滤波,在每个驱动芯片的电源引脚旁边并联一个小电容来滤除高频噪声,在总的电源输入端并联一个大容量的电解电容以稳定电源电压。驱动芯片应该尽可能贴近被驱动器件来布置,从而减小由于长线传递而产生的干扰和压降。

总 结
本文以STC89C51单片机为核心,设计并制作了一套功能完备的交通灯控制系统,该系统可自动控制十字路口四个方向红,黄,绿信号灯的轮流转换,做到东西向与南北向的交替通行,而且经由LED数码管即时显示倒计时时间,从而优化了路口通行的安全性与效率,在硬件设计上,完成了单片机最小系统,信号灯显示电路,数码管显示电路,键盘输入电路以及驱动电路的原理图设计和PCB布局,采用驱动芯片化解了单片机I/O口驱动能力欠缺的情况。 在软件设计方面,运用模块化编程理念,把程序分解成主程序模块,定时中断模块,按键处理模块以及显示驱动模块,凭借定时器中断达成精准计时,用动态扫描技术来激发数码管显示,靠有限状态机做到交通状态的顺畅切换。系统专门设计了独立式键盘,以此来设定时间参数,操控紧急模式,使得系统更具灵活性,实用性更强,经过硬件调试,软件调试和功能检测,证实该系统各个功能都符合设计要求,计时精准,显示稳固,按键反应快捷,紧急模式运行可靠,此设计另外增进了对单片机原理及其应用的认知,也为日后开发更为复杂的智能交通控制系统汇集了珍贵经验。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询