基于单片机的城市交通控制系统的设计

摘 要

基于AT89C51单片机的城市交通灯控制系统用于模拟城市路口的交通灯控制。该系统由单片机模块,数码显示模
块,交通灯显示模块以及语音提示模块等部分组成。单片机模块作为核心器件用以控制整个系统的运行,发光二极
管模拟交通灯运行,数码管显示倒计时时间。系统支持按键更改倒计时时间,以适应不同时间段路口车流的状况。
另外,当遇到特种车辆通过时,可强制让各个方向的交通灯保持红灯,以便特种车辆快速通过。该系统还带有盲人
提示音,即在交通指示灯即将发生改变时,系统可语音播报交通灯的实时信息。此次设计用proteus进行了仿真,并
经过了不断调试,最终实现了城市交通控制系统的设计,并完成实物制作。
关键词: AT89C51单片机, 城市交通控制系统, 特种车辆通行

1 引言

交通信号灯与人们的生命财产安全息息相关,交通信号灯的发明,为交通引导带来了极大的便利,可以有效的
疏导交通,增强道路交通便利,减少交通事故的发生。现今,在各个十字路口均有安装交通灯,它已成为了引导车
流,减少堵塞的常用工具。
  而随着国家的持续发展,科学技术的深入研究,民众的日常生活水平日益见长,汽车作为重要的交通工具,正
步入越来越多的家庭,所以私家车出行也逐渐成为人们出行的首选方式。但是汽车的增长率和城市基础设施建设水
平不匹配的矛盾在短时间内仍不能解决,这就使得交通拥堵的现象越来越严重,特别是在一些大中城市,经济水平
快速发展,但建设水平却没有跟上来,交通拥堵越来越成为一个城市经济发展的制约,而现在的交通系统在某些方
面已经不能满足经济发展的需求,过去的,旧的城市交通控制系统已经跟不上需求了。对于车、人、路三方关系的
调整,已经成为交通管理部门极需解决的重要问题之一。
  单片机是计算机控制的一个重要分支,生活中有许多的产品都有它的应用,其往往是作为一个核心的控制部件
来使用,可以根据不同应用对象的特点,考虑其具体需求,再配以其他模块软硬结合进行控制,如此便能达到较为
理想的控制效果。早在上个世纪,交通灯就已出现,经过不断的发展完善,目前交通控制系统已普遍引入了以单片
机为核心的交通控制系统进行来引导车流,可以应对一些较为复杂的交通情况,对交通运输的安全性有了很大的提
升,并在某种程度上降低了由道路拥堵造成的经济损失,同时也减轻了交通警察的工作强度。本次城市交通控制系
统是以单片机AT89C51为核心进行设计的,同时利用单片机的外围模块拓展,控制显示电路构成基本硬件,辅以软件
编程实现定时[1],按键控制,信号灯显示等功能。单片机通电后,系统进入工作状态,执行交通灯状态显示的控
制。在基础功能上,该系统加入了手动时间调整功能以及紧急情况控制功能以实现紧急通车和紧急疏散。设置了五
个特殊按键,当出现紧急情况时,按下紧急开关,根据具体情况手动控制,保持南北车道或东西车道持续畅通。通
过按键实现直行时间的增减控制,以应对同一天不同时间段内车流量不同的情况。如交通繁忙的上下班高峰期,便
可以适当调整红绿灯的倒计时以加快通行速率,缓解交通拥堵。

2 设计要求

设计开发一种符合我国交通特点的基于单片机控制的城市交通控制系统,基本要求如下:

  1. 每个方向都有车辆行驶指示灯;
  2. 显示路口可通过的剩余时间;
  3. 可手动控制交通灯的显示;
    扩展要求:
      可自动识别特种车辆并做出相应的调整,从而便于其快速通过;有盲人提示音,即在交通指示灯即将做出改变
    时,系统可语音播报交通灯的实时信息。

3 方案论证

3.1 总体方案论证
  方案一:通过采用数字逻辑电路来实现。首先,通过比较常用的555芯片来实现定时功能,计数则考虑用CD4017
来完成计时功能。通过焊接连接实现整个系统的功能。该方案的主要特点是:可以直接用现成的芯片而成,不需要
画板制图,简单方便。缺点是由于选择的元器件多,连接会比较的复杂,容易虚焊,在出现错误而且不易检查,而且体积大,不美观。
  方案二:基于stm32单片机实现交通控制系统的功能,通过性能较为强大的32单片机,实现该系统的控制功能绰
绰有余,但是stm32单片机价格较为高昂,使得整个系统的制作成本陡然上升,而且该系统只需要实现简单的控制,
用功能强大的32单片机浪费了资源。
方案三:基于51单片机实现城市交通控制系统的功能[2]。利用单片机的IO口,通过编程实现对定时,控制,显示功
能的控制。该方案具有设计简单,成本低廉,稳定可靠,系统可塑性强,控制模块灵活等特点。
综上所述,我选择方案三。整个系统的原理框图如图1所示在这里插入图片描述

图1 系统原理框图3.2 显示方案论证
  方案一:使用点阵LED进行显示,点阵LED功能强大,可用来显示各种信息,如图文,符号都可以。如果使用点
阵LED的话,则有几个缺点较难克服。首先就是使用环境的问题,因为信号灯一般都是在室外环境下,空气有时较为
潮湿,要经常风吹雨淋,容易腐蚀插件,就容易导致部分字体或者是整个字体突然不亮,或者是时亮,时不亮。这
就需要维护人员经常检查返修,需要较大的人力去维护。更严重的是,如果在车流量较大的上下班高峰期出现这种
情况就极易造成交通事故,危害人们生命财产安全。
  方案二:使用液晶显示器进行显示。液晶显示器一般有三种,分为反射型,透射型和半透射型。户外环境一般
选用反射型液晶显示器。但是该款显示器对光线有着较高的要求,在光线充足时显示效果就比较良好,但若是光线
不足的情况下,如阴雨天或者傍晚,则显示效果就会比较差。同时液晶显示器的对比度也不能满足信号灯的要求。
方案三:采用四个两位数码管显示,数码管显示较为直观,同时对比度比较高,对光线要求低,无论是白天或是晚
上,雨天或者晴天,都能满足要求。除此之外,数码管的使用成本低,使用寿命长。综合来看,性价比较高。
综上所述,经过考虑,本次设计选择方案三。
3.3 按键控制方案论证
  方案一:采用矩阵式键盘控制。此方案的优点是:硬件结构设计简单,接口电路的配置比较灵活,占用的I/O口
较少,若采用该方案,可提供数量较多的I/O口,但其每一个按钮都必须配有一根接口线,有着较大的浪费,而且该
方案操作起来较为复杂。
  方案二:使用独立按键控制,即直接把按键连接在I/O口上。一个按键配一个I/O口,把地或者电源连接在按键
的另一端。采用该方案不但使得编写程序较为容易,而且可以使得系统更加的稳定。 因为在设计时对电路进行了合
理的利用,所以会有较多的接口资源剩余,而对于该系统,单片机自带的I/O口够用了。
综上所述,选择方案二。

4 设计原理

4.1 单片机模块
  本系统选用的单片机是ATMEL公司生产的AT89C51单片机,这是最常用的单片机之一,其不仅仅是价格低廉,而且
还通用性比较强,同时带有8位微处理器,可以进行一些简单的控制[3]运算,虽说功能有限,但对于此次设计的交通
控制系统而言以及足够了,因为本次设计没有很复杂的功能,如自动检测车流,实时调整红绿灯的倒计时时间等,
只设计了基本的控制按键,所以该单片机已经可以满足需求。
(1)单片机介绍
如图2所示,单片机最小系统电路由三个部分组成:包括主控制器AT89C51、复位电路、时钟电路。
① 中央处理器:
  中央处理器单片机的核心器件,同时它是 8 位数据宽度的。所以它可以处理8位的数据,或者是8位的二进制程
序代码。CPU负责调控整个系统,实现对各项命令的控制在这里插入图片描述

图2 最小单片机系统② 并行输入输出(I/O)口:
  如图3所示,AT89C51共有39个引脚,其中包括4组8位I/O端口(P0、P1、P2或P3)可用来对外传输数据,例如控
制灯光、控制电梯的升降、控制电机的正反转等[4]。XTAL1,XTAL2用来连接接入时钟电路,而REST管脚用来连接复
位电路,除此之外还有GND、VCC等端口。

(2)单片机的部分引脚使用及注意事项:
① P0口的特点及使用注意事项:
lP0口做扩展时地址/数据总线复用时,是真正的双向口,输出低八位地址并输出/输入八位数据;
  lP0口做通用I/O时,需要外接一个上拉电阻,此时是准双向口;(3)P0口作通用I/O口,读引脚时,先写1。

本次基于单片机的城市交通控制系统的按键电路如下图4所示,在前文赘述中已知,因为引脚不足的关系,为了
减少引脚的使用数量,所以采取了独立按键的方式。如图4所示,为了应对复杂情况,这里设置了六个按键。左边一
排的三个按键从上到下分别是方向切换键、东西特种车辆通行键、南北特种车辆通行键。而右边一排按键从上到下
分别是调完确认键,加减时间键。
  在本次交通灯控制系统的设计中可手动控制按键对倒计时进行加减。同时,为了消除按键抖动,本次设计采取
了延时消抖。按键控制程序可使操作简便,以应对各种情况的发生,同时增加了人工操纵的可控性,避免故障的发
生。

4.3 语音提示模块
  本次设计采用YS-M2(电路连接如图5所示)实现语音播报的功能,采用单键触发模式进行触发。该模块配有3个
触发口,分别是A1,A2,A3,这三个端口依次对应三个MP3文件。只需要向触发口如A1口提供一个低电平50ms以上,
就可以按顺序播放音频文件。对于此模块,低于0.8V电压都可视为低电平,所以可以用板上的GND去触发。也可以直
接用单片机上的I/O口去触发。本模块配有一个3W的喇叭,可以进行音量调节,同时还可以通过一个3.5mm口外接功
放。在本次设计中,选择使用单片机I/O口触发。因为在实际工作过程中,情况比较复杂,需要根据实时情况去进行
语音提示,不能依次去进行触发播报。该模块实物图如图所示
图5语音提示电路连接图在这里插入图片描述

在这里插入图片描述

图6 语音模块实物图
4.4信号灯与数码显示模块
  本次设计采用数码管显示倒计时时间,用LED灯来表示红绿灯。本次设计选用了四个两位数码管,上面和下面两
个数码管显示东西车道方向的倒计时时间,左边和右边显示南北车道方向的倒计时时间。当系统开始工作时,东西
车道方向绿灯亮,倒计时39秒(也可以设定其它时间,本次设计设定为39秒)。南北车道方向红灯亮,倒计时39秒
(也可以设定其它时间,本次设计设定为39秒)。等到倒计时3秒时,南北车道方向上的黄灯闪烁,表示即将由红灯
转变为绿灯,提醒来往的车辆和行人注意。黄灯闪烁完后,东西车道方向由绿灯转变为红灯,倒计时39秒开始。而
南北车道方向由绿灯变为红灯,倒计时39秒开始。在无外部特殊情况发生时(如有特种车辆通过),系统按此平稳
运行。当有特种车辆通过时,由相关人员控制,绿灯保持常亮。例如,在东西车道方向车道上有特种车辆要求通行
时,则经由相关工作人员控制后,东西车道方向保持绿灯常亮,南北车道方向保持红灯常亮,东西车道方向与南北
车道方向的数码管都不在进行倒计时,而是显示数字8,即数码管内的8根发光二级管由控制系统控制为全亮。当
然,当在南北车道方向上有特种车辆要求通行时也是如此,不过转变为南北车道方向绿灯保持常亮,东西车道方向
红灯保持常亮,数码管不在进行倒计时。信号灯与数码显示电路如图7所示。
图7 信号灯与数码显示电路
在这里插入图片描述

5 软件部分

5.1 编程语言与开发工具介绍
  一个性能完备的城市交通控制系统,需要在软硬件两方面进行设计。而软件方面的设计则涉及到程序的编写。
对于程序的编写,选用正确的编程语言可以达到事半功倍的效果。编程语言有很多种,计算机常用的语言有Java,
python等。而单片机开发则可以选择汇编或者是C语言。在本次设计中,选用了C语言为编程语言,与汇编相比,C语
言是一种高级语言,有着更为灵活的编写方式,在编写同样功能的情况下,C语言会比汇编更加方便,需要编写的代
码量更小,代码行数更少,在出现错误时更易于检查,维护性较强[5]。编写程序需要编写工具,而Keil,作为最常
用的C语言软件开发系统,它可以为用户提供较为系统且完善的方案选择,其包括如C编译器等在内。对于用户来
说,Keil软件开发系统可以让程序员大大减少编写的工作量。
5.2 系统总体设计
  此次城市交通控制系统主程序的主要功能是完成对系统的初始化,发送倒计时并显示数据,等待外部中断,同
时对控制按键进行扫描[6]。还有根据指令进行相应的控制操作。
  为了便于调试,此次系统设计采用了模块化的设计方法,由多个模块共同组成该系统,在下文会依次介绍。而
模块化在方便设计的同时,也可减少了设计出现错误是检查错误的工作量,只需要依次检测各个模块的功能就能将
错误检查出来,不需要对整个系统检查。当然,对软件进行全方位的检查也是排查故障的一种重要手段。本系统各个功能模块功能如下:
  (1)单片机模块:单片机是整个系统的核心,由它控制整个系统的运行。执行初始化以及对该系统的同意控
配。单片机作为本次设计的核心,整个系统通过单片机来执行对该系统的初始化,发送倒计时,在数码管上显示倒
计时时间,同时等待外部的中断控制,对控制按键进行扫描等[6]。该系统的主程序流程图如图8所示。
  (2)交通灯显示模块:控制四个两位数码管进行倒计时显示,在数码管上显示倒计时时间,对车辆和行人起到
提示左右,方便车辆和行人通过。
  (3)语音提示模块:提示交通灯的变换信息。如当东西方向红灯转变为绿灯时,语言提示模块播放提示信息
“东西通行,南北禁止,请注意安全”。可以去提醒有视力障碍的行人,听力不便的老年人及时通行,以免错过时
间。同时在有特种车辆通过时,也会有语音播报进行提示。如“特种车辆正在通行,保障畅通,注意安全”。提醒
其他的车辆或行人小心注意,以免妨碍其通行,发生意外。
  (4)按键控制模块:通过按键控制[8]信号灯倒计时时间的加减控制,同时控制特种车辆的通行。本次系统设
计设有倒计时加键,可以使倒计时时间加1,倒计时减键,使倒计时时间减1。倒计时方向切换键,切换倒计时的车
道方向。可以在南北和东西两个车道方向的红绿灯倒计时进行切换。
(5)指示灯显示模块:控制指示灯的变换,使马路上的车流通过时稳定有序,不碰撞冲突。
  (6)特种车辆通行模块:控制有特种车辆通过时信号灯的变化。特种车辆键分为南北特种车辆通过和东西特种
车辆通过。按下通过键可以使南北车道方向或者是东西车道方向的绿灯保持常亮,使特种车辆安全通行。在这里插入图片描述

图8 主程序流程图
5.3 信号与显示程序设计
  本次的城市交通控制系统的设计采用数码管动态显示,对于倒计时显示的数据,最先应提取数据的十位和个接下来,将十位和个位字型码送到单片机的p0口和p2口[9]。而其中的p0口是被用来向数码管传送十位字型码
的。其程序流程图如图9所示。而数码管倒计时显示的同时,信号灯也要发生变化,信号灯状态表如,表
5.4按键控制设计

控制按键流程图为了使系统更加实用,更加人性化,本次设计使用了多个按键。如调整倒计时的倒计时加减
键,调整倒计时道路的切换键和切换确认键[10]。同时还配有特种车辆通行键,可在南北,东西两个方向,当特种
车辆来临时,使绿灯常亮,方便其通行。当特种车辆通过后,可按下确认键恢复交通
5.4语音提示设计
  YS-M2模块自带 4 M Byte Flash ,通过 USB 数据线连接电脑可以将 MP 3 或 WAV 格式的音频文件直接导入模
块内部,通过修改文件名排列音频文件的顺序,然后通过单片机的 BY口输出高电平(3.3V)即可触发对应音频的播
放。我们通过手机 app 将文字转换成语音并生成 MP3 格式文件,然后分别将提示音频文件导入模块中,通过三个
触发口分别触发,当对应的触发口接地后,触发语音,语音播报一遍后停止,播报期间如果因其他操作使得播报语
音更改则立即切换语音。

6 仿真分析

6.1仿真工具Proteus介绍
  Proteus是一款常用的EDA工具软件,其最先是由一家1英国公司设计开发出来的。我们虽然通常称其为
Proteus,但其实它是由ARES (和ISIS两个软件组成[11]。它们的功能各不相同。ARES是一款布线编辑软件, 工程师
在制作PCB时会用它来布线。而ISIS是一款原理图输入软件,通常工程师用其画原理图。Proteus集原理图设计、PCB
布线,电路仿真与分析等功能于一体,极大的减轻了工程师的负担。虽然市面上也有其他的单片机仿真软件,但相
比于Proteus,都还有不足的地方。Proteus不单单能够仿真CPU的工作状况,更为主要的是它能够去仿真单片机的外围模块电路或者是在单片机没有参与工作时其它电路的状况[11]。同时,Proteus还能够载入程序进行仿真,只需
将.HEX文件载入单片机,然后点击运行,就可以观察电路的工作状态,程序的运行状态。这样就可以在最大程度上
找到可能会出现的错误,减轻设计开发人员的工作量。
6.2 仿真制作
由于有较长时间没有进行过仿真制作,所以在这次制作的过程中遇到了一些问题。
(1)线路连接与标号的使用
  在最开始仿真制作过程中,整个电路都用了导线进行连接,在最后仿真制作完成后发现出现了比较多的问题。
第一:电路图不够整洁大方。从整体上看,电路图上的各种线路交叉在一起,显得比较凌乱。第二:出现错误时不
容易查找。由于凌乱的线路,在查找线路错误的时候很容易迷乱,常常出现视线交叉,定位错误的情况。如此以来
便须重新开始,浪费了大量的时间。在最后,只好重新制作整个电路。这次没有选择用导线连接所有端口,而是主
要在端口引出一条较短的导线,然后给这个导线一个标志,需要连接在一起的便用相同的标志。如此一来,整个电
路就显得较为整洁,查找端口时也不会出现之前的情况。
(2)管脚逻辑状态的使用
  所谓管脚逻辑状态就是仿真图中器件管脚的红蓝标志。蓝色表示低电平,红色表示高电平。在仿真出现错误
时,通过仔细观察管脚的逻辑状态有时会比较容易的发现问题。当然如果觉得妨碍,可以选择隐藏管脚逻辑状态。
点击Proteus系统菜单栏,选择动画选项,然后将“显示管脚逻辑状态?”方框里的勾去掉即可。
6.3 实物制作
  在仿真制作完成并经测试送由导师审查确定之后,开始进行实物的制作。首先,整理实物制作所需的器件清
单,清点好所需要的电容,电阻,LED的个数,特别是电阻和电容的个数,因为使用的数量较多,避免出现遗漏,不
能实现所设计的功能。再购买单片机芯片与语音模块。同时,在整个实物制作的过程中,发现了一些问题。
(1)原理图绘制
  在原理图绘制过程中遇到的主要问题就是缺少相应的器件封装,比如语音模块YS-M2,所以需要自己绘制并加入
到工程库中。还有就是之前仿真遇到的线路连接问题,在电路连接端口标号,使电路整洁。在原理图绘制过程中,
学会分块布局很重要不仅简洁美观,而且方便查找问题。在出现问题时可以逐个模块检测,这将大大提高检查效
率。、
(2)PCB绘制
  对于PCB的绘制最重要的就是布局与布线。器件布局的好坏会影响到整个布线的效果。在整个的制作过程,总共
制作两块PCB实物板。在制作第一块PCB板的过程中,没有注重布局,而是想办法使PCB板尽可能小,所以便让器件挤
在一起,又使用了软件自带的自动布线功能,最终制作出来的实物板失败了。第二次制作总结了第一次失败的经
验,将器件合理的摆放,不在胡乱的拥挤在一起。然后为了确保成功,在自动布线之后,再手动检查布线,最终发
现没有将语音播报模块的电源连接到电源总线上。经过仔细检查之后,最终实物PCB板实现了所设计的功能。
(3)器件焊接
  在购买器件时对于某些特别单位的电阻,电容等器件,可以多买一些。在这次的焊接过程中由于操作不当,损
坏了一个电阻,最终必需在网上重新购买了,浪费了调试时间。
(4)实物测试
  实物焊接完成后开始进行测试,但是测试结果并不理想。南北车道方向的红灯,不亮,同时不能实现倒计时加
减功能。为了检查出错误,先是检查了Proteus仿真图,发现功能正常,不是电路图是正确的。然后再重新检查AD原
理图与PCB布线图,看是否是原理图绘制错误抑或是PCB布线错误。经过仔细检查之后,均没有发现错误。那就是实
物焊接出现了问题,用电压表逐个模块检测电压,发现是倒计时按键和南北车道方向的红灯虚焊,接触不良,导致
功能受损。再重新焊接之后,功能正常。测试结果如下。
倒计时显示正常,如效果图12所示,东西方向红灯,南北方向绿灯。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

7 结束语

此次设计提出的城市交通灯控制系统是基于AT89C51单片机实现的,本次设计包括硬件和软件两项内容。本次设
计介绍了交通控制系统设计的整个过程,从整体方案设计,部分模块方案设计,到单片机的核心选择,以及各个模
块器件的选择。还介绍了软件方面的设计,以及所使用的编写和仿真工具。经过长时间的设计与思考,在最后,终
于设计出了一种较为完善的,基于单片机的城市交通灯控制系统,完成了最开始的目标。总结起来,通过本次设
计,对以前学习过的知识有了更多的了解,更多的掌握。通过本次设计,对于单片机开发的基本思路与方法更加熟
悉了,对倒计时的数码显示电路也有了更多的了解。同时对于器件的选择也有了自己的理解,可以在一定范围内选
择比较物美价廉的器件。该城市交通灯控制系统配有车辆行驶指示灯,在每个路口可显示可通过的剩余时间,同时
还可以手动控制交通灯红绿灯倒计时显示。并且为了照顾视力有障碍的朋友,在路口还配有语音播报提醒功能,可
在信号灯变换时及时提醒,方便了行人。除此之外,还设计了特种车辆通行按钮,可以在有特种车辆需要通过时方
便其通行。虽然本系统的整体设计都已完成,但是也还存在着一些不足的,需要改进的地方。
  在设计之初,本想是通过一个可识别摄像头实现对特种车辆的自动识别,可以在特种车辆到来时自动调节通
行,最大程度上减少特种车辆的通行时间。这样就不需要人工控制,避免在没有人工干预的情况下,特种车辆通行
较慢的问题。但是由于个人能力的不足,无法实现这个功能。除此之外,如果在本次交通控制系统中加入车流检测
传感器,那么系统就可以通过车流自动的调整倒计时的时间,可以在最大程度上保持车道通畅,避免交通堵塞,减
少交通事故的发生。若要完善该系统可以增加如下设计。
(1)增加车流检测传感器,以便系统根据车流实时的调整倒计时时间,避免交通拥堵,增加通行效率。
(2)增加特种车辆识别摄像头,可以自动识别特种车辆,最大程度的减少交通不便造成的损失。
虽然加入这些功能后,会使得该系统的器件成本增加,但是在交通畅通这方面确实有着较大的改善。
  通过基于单片机的城市交通控制系统的设计,让我以前学习得的知识再次得到温习,加深了对所学知识的理解
应用,进一步锻炼了独立思考与解决问题的能力,为步入社会工作进一步打下了基础。
  该毕业设计虽然结束了,但由于个人能力的不足,本次设计还存在不足的地方,还需要进一步的完善,需要通
过今后的学习更多专业知识去完善它。

附录

一:Proteus原理图在这里插入图片描述
在这里插入图片描述

附录二 :Altium Designer原理图在这里插入图片描述
在这里插入图片描述

附录三:PCB布线图在这里插入图片描述

附录四:实物效果图
实物图:在这里插入图片描述

南北倒计时红绿灯显示:在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值