1、 第 1 页 共 46 页 1 摘 要 根据 8051单片机的特点及交通灯在实际控制中的特点,本文提出一种用单片机 自动控制交通灯及时间显示的方法。同时给出了 软硬件设计方法 ,设计过程包括硬件电路设计和程序设计两大步骤,对在单片机应用中可能遇到的重要技术问题都有涉足。 本文对十字路口状态 预设为两种,一种是正常状态,另一种是故障或紧急状态,并分别用黄、红、绿色灯的不同组合来表示。本文介绍了控制基本原理以及控制的表现,同时也 介绍了城市交通信息系统的设计目标 , 开发途径及其系统结构与功能和数据地理编码、建库 , 同时 , 论述了系统中交通现状、交通管理 、交通规划及背景信息查询模块的建造及应
2、用。介绍了用于城市交叉路口的三色程控交通信号时间显示器的研制方案,对其电源供电、发光二极管构成的负载结构、灯色时间检测都给出了精巧合理的优化结构,大幅度地提高了产品可靠性并降低了制造成本。 关键词: 8051单片机 ; 交通灯 ; 自动控制 ; 时间显示器 ; 软件 ; 硬件 ; 定时器 ; 延时 ;外部中断 Abstract According to the feature of SCM8051 and the characteristics of traffic lights in real control,the article puts forward the method of us
3、ing sigle-chip microcomputer to control automatically the traffic signal lights and time-show.The method of realization of hardware has also been given,the whole process included hardware circuit designing and program designing,in which some important technique problem that may meet during the use o
4、f Singlechip involved.In this paper, the state of crossing was designed as two states.One is normal,another breackdown or urgent,which are expressed with different colour lamp named yellow、 red and green.The basic principle and method of controlling are introduced.In this paper, the design goals, de
5、velopment ways, system structure, system functions, geographic 第 2 页 共 46 页 2 codes and data base of the Urban Traffic Information System (U T IS) were presented. Furthermore, the development and the application tests of the traffic situation model, the traffic management model, the traffic plan mod
6、el and the background information inquirement model of U T IS were discussed.This paper introduces the development scheme of three-colour programmable traffic signal time indicator used in the level-crossing of our city,and gives its power supply,load construction made by LED and time detection of t
7、raffic lamp colour a reasonable optimize structure.The reliability of Product is substantially improved while the cost is reduced. Key Words:SCM8051; traffic lights; automatic control; time indicator; hardwore; softwore timer; delay; external interrupt 引言 交通的发达,标志着城市的发达,相对交通的管理则显得越来越重要。对于复杂的城市交通系统,为
8、了确保安全,保证正常的交通秩序,十字路口的信号控制必需按照一定的规律变化,以便于车辆行人能顺利地通过十字路口 。考虑到单片机具有 物美价廉、功能强、使用方便灵活、可靠性高等特点 ,拟采用 MCS - 51系列的单片机来实现十字路口交通信号灯的控制。 正常 情况下 , 十字路口的红绿灯应交替变换 , 考虑紧急情况下 ,如有救护车或警车到来时 , 应优先让其通过 。 在本文中 , 用发光二极管来模拟信号灯 ,救护车的优先通过请求信号由外部中断技术来模拟 。 要求使用 8051定时器 / 计数器 0作为定时器 , 假设南北和东西的通车时间都为 30 s , 外部中断的延时为 10 s , 要求对通行
9、时间进行倒计时 , 从 P1 口输出,在 LED上显示 并进行递减。以此来实现十字路口交通灯的指示功能。 第 3 页 共 46 页 3 交通灯在安全行车过程中起着十分重要的作用 , 现在交通灯一般设在十字路口 , 在醒目位置用红、绿、黄三种颜色的指示灯 , 加上一个倒计时的显示计时器来控制行车 , 对于一般情况下的安全行车、车辆分流发挥着作用 , 但根据实际行车过程中出现的情况 , 主要有如下几个缺点 : 1两车道让车轮流放行时间相同且固定 , 在十字路口 , 经常一个车道为主干道 ,车辆较多 , 放行时间应该长些 ; 另一车道为副干道 , 车辆较少 ,放行时间短些。 2 没有考虑紧急车通过时
10、 , 两车道应采取的措施 , 譬如 , 有消防车通过执行紧急任务时 , 两车道的车都应停止 , 让紧急车通过。根据行车过程中出现的实际情况 , 如何全面有效地利用交通灯指示交通情况 , 本人尝试用单片机来控 制交通灯 , 在软、硬件方面采取一些改进措施 , 使交通灯在控制中灵活而有效。 传统的交通灯控制系统 , 采用的基本上是 3种控制方式。手按 : 交警在岗亭值守 ,人为进行红绿灯改变 ; 黄闪 : 夜间无人值守时 , 用每秒 1次的黄灯闪亮 , 提醒司机安全驾驶 ; 程控 : 以 60s 作为一个时间单位。某一方面 (例南北方向 ) 红黄绿三灯的工作程序分别是 : 红灯先亮 30s, 然后
11、绿灯亮 28s, 再绿灯闪亮 3s (每秒 1次 ) , 最后黄灯亮 2s。此时 , 另一方向 (东西方向 ) 红黄绿三灯的工作顺序相应为 : 绿灯亮 25s, 绿灯 闪亮 3s (每秒 1次 ) , 黄灯亮 2s, 最后红灯亮 30s。此后以 60s 作为时间单位进行上述的反复循环 , 较为合理地解决了十字路口的交通调度问题。但红绿灯的工作顺序及时间都是固定的 , 缺乏灵活性。采用该 3种方式能解决一般岗亭的交通灯控制。但重点岗亭仍需要有 2人以上同时值班 , 保证有事要处理时 , 仍能保留一名交警负责对交通灯的控制。而此时若想采用程控方式 , 交警将无法对交通灯再人为地加以管理。难以再科学
12、地指挥车辆的通行 , 有效地解决交通堵塞问题。例如当南北方向车流量很大时 , 程控方式下的南北方向绿灯无法保证 开放更长的时间 , 以缓解交通拥挤的问题 。 当前,交通事业蓬勃发展,交通流量年年增长,大、中、小城市的汽车、摩托车等各种车辆与日俱增,道路交通繁忙,经常有严重堵车现象,特别是在交叉口,机动车、非机动车、行人来往非常混乱,为了在叉口的各条干道实现合理的科学分流。本人根据单片机具有物美价廉、功能强、使用方便灵活、可靠性高等特点,提出了一种用 MCS-51单片机自动控制交通信号灯及时间显示的方法,同时给出了软硬件的实现方法,为交通指挥自动化提供了一种新的廉价手段,具有一定的推广意义。 第
13、 4 页 共 46 页 4 一 交通信号灯硬件电路的设计 1.1 交通信号灯的作用及工作原理: 一般情况下,红绿灯设在十字路口,或在多干道的叉口上,目的是为了调整 叉口的交通秩序使各干道来往车辆能够有条不紊地行驶,否则将造成意想不到的严重后果。当然在叉口设置合理的红绿灯后,也可大大减少交通管理部门的人力、物力。 叉口交通信号等的基本作用: 红灯亮表示车辆、行人禁止通行,绿灯亮表示车辆、行人可以通行,绿灯转换成红灯前几秒,可用黄灯亮来暗示驾驶员或行人即将禁止通行。该系统的屏幕时间显示用倒计时 方式表示红绿灯的 切换时间,时间显示器的作用是协助红绿灯工作,跟随红、绿灯反复地进行切换。目的是为了使驾
14、驶员和行人能够看见红绿等亮的时间还剩几秒以便停车线以内的驾驶员和行人能够更清楚地知道此时该继续通行或减速,才不会使 驾驶员盲目地加速或减速停车而阻碍 另一干道车辆或行人的通行,第 5 页 共 46 页 5 从而可以提高叉口车辆及行人的流通率,当然也可以减少事故的发生,为交通安全提供保障。 交通信号灯的工作原理:如图 1 示, 当 A、 B 组红灯亮绿灯灭;则 C、 D 组绿灯亮红灯灭。对 A、 B 组或 C、 D组而言,每当绿灯亮转换成红灯亮前几秒(具体多长时间视实际情况而定)黄灯亮 ,当绿灯灭时黄灯也灭。 1.2 设计要求 首先 ,要了解实际交通灯的变化规律 . 假设一个十字路口为东西南北走
15、向 . 初始状态 0东西方向 绿灯通车 ,南北方向 红灯 ,延时 30 s. 转状态 1 ,东西方向黄灯亮,南北方向红灯 按 1HZ的频率 闪烁 ,延时 5s . 再转状态 2 ,东西 方向红 灯 亮 ,南北 方向绿 灯 通车 ,延时20 s. 转状态 3 ,东西 方向红灯 按 1HZ的频率 闪烁,南北方向黄灯亮 ,延时 5 s . 最后循环至状态 0. 这里的延时采用定时器 0延时 . 其次 ,当有紧急救护车出现时 ,应使东西南北四个方向全亮红灯 ,并延时 10 s , 以便急救车通过 ,同时对通行时间进行倒计时 ,从 P1口 及 P3口 输出在发光二极管 ,使用 8051 定时器 / 计数
16、器 0作为定时器实现子程序延时 .技术上可用外部中断 0发出一单脉冲向CPU申请中断 . 再次 ,一般交通信号灯控制程序中使用软件延时 ,软件延时是靠执行一个循环程序以进行时间延迟 . 软件定时的特点是时间精确 ,且不需外加硬件电路 . 但软件定时要占用 CPU ,增加 CPU 开销 ,因此软件定时的时间不宜太长 .本程序使用定时器 / 计数器 0来定时 ,定时电路已经集成在芯片中 ,这种由硬件电路完成 ,不占 CPU 时间 . 它通过对系统 时钟脉冲的计数来实现 ,即每个机器周期产生一个计数脉冲 ,也就是每个机器周期计数器加 1. 计数值通过程序设定 ,改变计数值 ,也就改变了定时时间 ,使
17、用起来既灵活又方便 . 1.3 设计 方法 选用 MCS-51 单片机来 实现,根据设计要求,交通信号灯控制器的外部输出信号为主、副车道红、黄、绿灯共 12个驱动信号;编程使相应位复 /置位来实现信号灯的亮第 6 页 共 46 页 6 /灭控制,使得十字路口的红、绿灯交替点亮;在灯色交换时,黄灯闪烁提醒。 设计要求有紧急车辆通过时,十字路口均显示红灯。可以通过软件中断来完成紧急任务,定义 T0 为 计数 中断并为下降 沿触发,编写对应中断向量子程序和中断服务程序,完成中断处理。 设计还对定时控制有所要求。对于精确定时,应该用计数器 加以控制,硬件实现复杂度增加。考虑到该设计对时间精度要求不高,
18、所以采用软件定时可以大大简化电路。先计算出程序单部执行的时间,设置 循环 参数,利用 if 语句按设计要求完成定时控制。 二 系统组成 2.1 控制要求 主、支干道交替通行,主干道每次放行 30 秒,支干道每次放行 20秒; 绿灯亮时表示可以通行,红灯亮时表示禁止通 行; 每次绿灯变红灯时,黄灯先亮 5秒(此时另一干道上的红灯不变); 十字路口要求有数字显示,作为时间提示,以便人们更直观地把握时间,具体 要求主、支干道通行时间及黄灯亮的时间均以秒为单位做减数器; 在黄灯亮时,原红灯按 1HZ 的频率闪烁; 当有急救车到达时,路口的信号灯全部变红,让急救车通过。假定急救车通过 时间为 10s,急
19、救车通过后,交通灯恢复先前状态。 2.2 硬件控制线路图 第 7 页 共 46 页 7 1 2 3 4 5 6ABCD654321DCBAT i t l eN u m b e r R e vi s i o nS i z eBD a t e : 1 8- M a y - 20 05 S he e t o f F i l e : D : 0 10 22 08 41 j i a ot o ng de ng 11 . d db D r a w n B y :E A / V P31X119X218R E S E T9RD17WR16I N T 012I N T 113T014T115P 101P 112
20、P 123P 134P 145P 156P 167P 178P 0039P 0138P 0237P 0336P 0435P 0534P 0633P 0732P 2021P 2122P 2223P 2324P 2425P 2526P 2627P 2728P S E N29A L E / P30T X D11R X D10VCC40GND20I C 1A T 8 9S 51C23 0PC33 0PY11 2M H Z+5R E S E TC41 0V FS2S W - P BR11 0KGND +5123456789J31 0K+5123456789J45 60+5D1LEDD2LEDD3LEDD
21、4LEDD5LEDD6LEDD7LEDD8LED+5+5GNDD9LEDD 1 0LEDD 1 1LEDD 1 2LEDR41 00R73 30R51 00R31 00+5+5+5RESET+51122S1S W - P BR64 . 7K+5GND12J2C O N 2 GND+5R21 00D 1 3LEDGNDS1S2S3S4S5S6S7S8P 20P 21P 22P 23P 24P 25P 26P 27C11 04 P FGND+5GND123456789J1100e1d2dp3c4g5s16s47a8f9s310s211b12U1L E D 8e1d2dp3c4g5s16s47a8f
22、9s310s211b12U2L E D 8P 20P 21P 22P 23P 24P 25P 26P 27P 20P 21P 22P 23P 24P 25P 26P 27S1S2S3S4S5S6S7S81 23 45 67 89 10J P 1H E A D E R 5 X 2P 15P 16P 17P 15P 16P 17R E S E TGND+5图 2 原理图 2.3 工作原理 采用单片机的 I/O口 P1口 和 P3直接和交通灯连接 , 控制程序放在 MCS- 51单 片机如8051的 ROM中 , 在十字路口的四组红、黄、绿交通灯中 , 受单片机 P1.0 P1.7和 P3.0、P3
23、.1、 P3.3、 P3.7 控制 , 由于交通灯为发光二极管且阳极通过限流电阻和电源正极连接 , 因此 I/O口输出低电平时 , 与之相连的相应指示灯会亮 , I/O口输出高电平时 , 相应指示灯会灭。紧急车请求通过的信号由人工控制 , 以中断方式输入单片机 , 无紧急车通过时 , 中断引脚 INT0 通过电阻和电源正极连接为高电平 , 不产生中断请求 , 单片机执行主程序 , 有紧急车通过时 , 中断引脚采用人工方法接地为低电平 , 产生中断请求 , 单片机执行中断服务程序 , 让紧急车通过 , 紧急车通过后 , 中断引脚变为高电平 , 返回主程序。由于倒计时显示装置已普遍采用 , 因此本
24、文未引入探讨。 2.4 器件和原理 2.4.1.什么是单片机 单片机 是将中央处理器( CPU)、随机存储器( RAM)、只读存储器( ROM 或 EPROM)、定 时 器 芯 片 和 一 些 输 入 / 输 出 接 口 电 路 集 成 在 一 个 芯 片 上 的 微 控 制 器( Microcontroller)。 中央处理器包括运算器、控制器和寄存器 3 个主要部分,是单片机的核心。 存储器按工作方式 可以分为两大类:随机存储器 RAM 和只读存储器 ROM。 RAM 可被CUP 随机地读写,断电后存储的内容消失; ROM 中的信息只能被读取,一般用于存放固定的程序。 ROM 中的内容只能
25、用编程器专用设备写入。 输入 /输出接口( I/O 接口)是单片机的重要组成部分。程序、数据以及现场信息需要通过输入设备送到单片机,计算结果需要通过输出设备输出到外设。常用的输入有第 8 页 共 46 页 8 按键、键盘、 A/D 等,输出设备一般有 LED、电机等。 为了方便理解,我们可以将单片机和 PC 机进行一个比较。一台能够工作的计算机要由 CPU、 RAM、 ROM、输入 /输出设备等几个部分组成。在 PC 机上这些部分被分成若干块芯片,安装在主板上。而单片机相当于集成了以上所有芯片的一块集成电路芯片。有一些单片机中除了上述基本的功能,还集成了其他部分功能,如 A/D、 D/A 等。
26、一个标准的 89C51 单片机的 引脚 功能图如图 3所示。 图 3 89C51 单片机及其引脚 1 AT89C51 单片机性能介绍 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器( FPEROM Falsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器,俗称单片机。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51 指令集和输出管脚相兼容。由于将多功能 8位 CPU 和闪烁存储器组合在单个芯片中, ATMEL 的 AT89C51 是一种高效微控制器,为很多嵌入式控制
27、系统提供了一种灵活性高且价廉的方案。 2 主要特性: 1.与 MCS-51 兼容 2.4K 字节可编程闪烁存储器 3.寿命: 1000 写 /擦循环 4.数据保留时间: 10 年 5.全静态工作: 0Hz-24Hz 6.三级程序存储器 锁定 7.128*8 位内部 RAM 8.32 可编程 I/O 线 1 2 3 4ABCD4321DCBATitleNumber RevisionSizeBDate: 27-Jun-2002 Sheet of File: C:Client98Sheet_1.Sch Drawn By:EA/VP31X119X218RESET9RD17WR16INT012INT11
28、3T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10U?SMG第 9 页 共 46 页 9 9.两个 16 位定时器 /计数器 10.5 个中断源 11.可编程串行通道 12.低功耗的闲置和掉电模式 13.片内振荡器和时钟电路 3 管脚说明: VCC:供电电压。 GND:接地。 P0口: P0口为一个 8位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。
29、当P1 口的管脚第一次写 1 时,被定义为高阻输入。 P0 能够用于外部程序数据存储器,它可以被定义为数据 /地址的第八位。在 FIASH 编程时, P0 口作为原码输入口,当 FIASH进行 校验时, P0 输出原码,此时 P0外部必须被拉高。 P1口: P1口是一个内部提供上拉电阻的 8位双向 I/O 口, P1 口缓冲器能接收输出 4TTL 门电流。 P1 口管脚写入 1 后,被内部上拉为高,可用作输入, P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时, P1口作为第八位地址接收。 P2口: P2口为一个内部上拉电阻的 8 位双向 I/O 口
30、, P2 口缓冲器可接收,输出 4个 TTL 门电流,当 P2 口被写“ 1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时, P2 口 的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时, P2 口输出地址的高八位。在给出地址“ 1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时, P2 口输出其特殊功能寄存器的内容。 P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3口: P3口管脚是 8个带内部上拉电阻的双向 I/O 口,可接收输出 4个 TTL 门电流。当 P3 口写入
31、“ 1”后,它们被内部上拉为高电平,并用作输入。作为输入,由 于外部下拉为低电平, P3 口将 输出电流( ILL)这是由于上拉的缘故。 P3 口也可作为 AT89C51 的一些特殊功能口,如下表 2-1 所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断 0) P3.3 /INT1(外部中断 1) P3.4 T0(记时器 0外部输入) P3.5 T1(记时器 1外部输入) 第 10 页 共 46 页 10 P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3 口同时为闪烁编程和编程校验接
32、收一些控制信号。 RST:复位输入。当振荡 器复位器件时,要保持 RST 脚两个机器周期的高电平时间 . ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时, ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX, MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如 果微
33、处理器在外部执行状态 ALE 禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次 /PSEN 有效。但在访问外部数据存储器时,这两次有效的 /PSEN 信号将不出现。 /EA/VPP:当 /EA 保持低电平时,则在此期间外部程序存储器( 0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1 时, /EA 将内部锁定为 RESET;当 /EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源( VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 2.4.2 什么是单片机系统 单片机系统的基本结构框图如图 4所示。从图中可以看出,对于一个典型的单片机系统而言,主要由单片机、晶振和复位电路、输入控制电路、输出显示电路以及外围功能器件 5个部分组成 。 除了上文中介绍过的单片机外,单片机系统中的其他 4个部分的主要作用和器件如下。 晶振和复位电路:单片机 系统的必要组成部分,控制单片机的机器周期和功能复位。 输入 控制:是指在一定要求下,采取 何种形式的控制方式来实现单片机不同功能的转换,以及控制指令以何种方式传送到单片机。常用的输入控制方法有按键、矩阵键盘、串行通信等方式。