1 引言
1.1 设计背景
自从1886两个德国人发明了第一辆汽车交通灯改变了交通路况,交通问题也渐渐被人们所重视。从英国伦敦街头的第一个以燃煤气为光源的红,蓝两色的机械扳手式信号灯,到现在以电为光源的红黄绿三色交通灯,不知不觉中交通信号灯在人们日常生活中占据了重要地位。随着人们社会活动日益增加,经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通灯更加显示出了它的功能,使得交通得到有效管制,对于交通疏导,提高道路导通能力,减少交通事故有显著的效果。
近年来,随着科技的飞速发展,电子器件也随之广泛应用,其中单片机也不断深入人民的生活当中。本次课程设计以模拟交通灯系统利用单片机AT89C51作为核心元件,实现了通过信号灯对路面状况的智能控制。在一定程度上解决了交通路口堵塞、车辆停车,特殊情况的交通灯等待时间不合理、急车强通等问题。在该次的设计系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。
本模拟系统由AT89C52单片机及外围器件构成最小控制系统,12个发光二极管分成4组红绿黄三色灯构成信号灯指示模块,较好的模拟了对交通路面的控制。
1.2 设计思路
(1)分析目前交通路口的基本控制技术以及各种通行方案,并以此为基础提出自己的交通控制的初步方案。
(2)确定系统交通控制的总体设计,包括,十字路口具体的通行禁行方案设计以及系统应拥有的各项功能,在这里,本设计信号灯状态控制能实现基本的交通功能。
(3)进行灯状态电路,特殊情况按键电路的设计和对各器件的选择及连接,大体分配各个器件及模块的基本功能要求。
(4)进行软件系统的设计和仿真中,程序在KEIL软件中用单片机汇编语言编写,电路的搭建和仿真实现是在proteus软件中实现的。在本次课程设计中通过对单片机内部结构和工作情况做了一定的研究,充分了解定时器,中断以及延时原理,为本次智能交通灯的设计提供了理论基础。
2 设计工作任务及工作量
作为组长,与同组同学协商完成本设计的实现方法和原理,合理分配所设计的单片机资源,定义数据字典及存储单元的分配,确定单片机外部扩展的器件的访问方法;主要完成硬件电原理及各部分的控制原理设计;以及将全组其他同学的软件进行协调与连接,完成整个设计任务。
3 系统的主要功能
(1) 设计交通灯控制的软硬件,实现交通灯的控制。
(2) 交通灯的红、绿、黄灯亮灯时间可以通过键盘设定。
(3) 交通灯控制要有直道、弯道及非机动车的通行、停止控制。
(4) 在某一方向通车或停车时,要有动态的指示,消除司机的烦躁情绪。
(5) 红灯停、绿灯行、黄灯停止未过线的机动车和停止方向的预启动。
(6) 黄灯亮的时间不可改变,预定5秒钟。
4 硬件电路设计及描述
4.1 硬件电路构成
本系统需要采用MSC-51系列单片机AT89C52作为中心器件来设计交通灯控制器,选用AT89C52单片机及外围器件构成最小控制系统,12个发光二极管分成4组红绿黄三色灯构成信号灯指示模块。
4.1.1 AT89C52单片机简介
89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。
89C52内置8位中央处理单元、512字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。
89c52引脚结构如图4.1所示
图4.1 89c52引脚结构
P1:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流。
EA*:当EA*保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA*将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
4.1.2 发光二极管
根据本设计的特点,红绿灯的显示不可少,红绿灯的显示采用普通的发光二极管。每个方向上设置红绿黄灯,总共4组。如果东西红灯亮,那南北方向就是绿灯亮,反之亦然,所以在硬件上连接图上也是对称分布的,如图4.2所示
图4.2 发光二极管分布图
4.2 硬件电路设计
用4组发光二极管分别表示东、西、南、北四个方向路口,每个方向上设置红绿黄灯。
用P1口分别输出控制模拟交通灯的状态显示的发光二极管,p1.0、p1.1、p1.2分别连接南北方向的红黄绿灯,p1.3、p1.4、p1.5分别连接东西方向的红黄绿灯。
用EA*做片选引脚,直接接到+5V,表示使用单片机内部程序。
4.3 硬件电路图
硬件电路通过Proteus 7.8 SP2仿真之后如图4.3所示
图4.3硬件电路图
5 软件设计流程及描述
5.1 程序主体设计流程图
图5.1主程序流程图
5.2 系统软件调试
本次实验采用集成开发环境KEIL进行调试
(1)KEIL uVision3集成开发环境主要由以下部分组成:
·uVision3包括:一个工程管理器,一个功能丰富并有交互式错误提示的编辑器选项设置生成工具,以及在线帮助。使用vision3创建源文件并组成应用工程加以管理。Vision3可以自动完成编译汇编链接程序的操作;
·C51编译器和A51汇编器。Vision3创建的源文件可以被C51编译器或A51汇编器处理生成可重定位的object文件。KEIL C51编译器遵照ANSI C语言标准支持C语言的所有标准特性,另外还增加了几个可以直接支持80C51结构的特性。KEIL A51宏汇编器支持80C51及其派生系列的所有指令集;
·LIB51库管理器。B51库管理器可以从由汇编器和编译器创建的目标文件建立目标库,这些库是按规定格式排列的目标模块,可在以后被链接器所使用当链接器处理一个库时仅仅使用了库中程序使用了的目标模块而不是全部加以引用;
·BL51链接器定位器。L51链接器使用从库中提取出来的目标模块和由编译器汇编器生成的目标模块创建一个绝对地址目标模块,绝对地址目标文件或模块包括不可重定位的代码和数据所有的代码和数据都被固定在具体的存储器单元中。
(2)利用KEIL开发和调试系统软件流程大致如下:
·启动Vision3,进入KEIL软件的集成开发环境;
·利用KEIL内置的文本编辑器进行程序源文件的编辑,因为KEIL集成的文本编辑器对中文支持不是很好,可以选择其他的编辑器(本文使用的文本编辑器是Ultraedit—32),Vision3能够自动识别外部改变了的源文件;
·建立工程,指定针对哪种单片机进行开发,指定对源程序的编译、链接参数,指定调试方式(本文采用外部硬件仿真器仿真调试的方式,即使TKS仿真器仿真),然后对工程进行相关设置;
·设置好工程后即可进行编译、链接。连接仿真器对软件进行调试。也可以生成下载到单片机存储器上的HEX文件。
6 源程序代码
ORG 0000H
LJMP MAIN
ORG 4100H
MAIN: MOV A, #0H
MOV DPTR,#CASE ;指向命令键跳转表首址
LOOP: JMP @A + DPTR ;散转到命令键入口
CASE: AJMP TYPE0
AJMP TYPE1
AJMP TYPE2
AJMP TYPE3
TYPE0: MOV P1, #1EH ;东西绿灯亮,南北红灯亮
MOV A, #2H
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
AJMP LOOP
TYPE1: MOV P1, #3EH ;东西绿灯闪烁,南北红灯亮
MOV A, #4H
ACALL DELAY
MOV P1, #1EH
MOV A, #2H
ACALL DELAY
MOV P1, #3EH
MOV A, #4H
ACALL DELAY
MOV P1, #2EH ;东西黄灯亮,南北红灯亮
MOV A, #4H
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
AJMP LOOP
TYPE2: MOV P1, #33H ;东西红灯亮,南北绿灯亮
MOV A, #6H
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
AJMP LOOP
TYPE3: MOV P1, #37H ;东西红灯亮,南北黄灯亮
MOV A, #0H
ACALL DELAY
MOV P1, #33H
MOV A, #6H
ACALL DELAY
MOV P1, #37H
MOV A, #0H
ACALL DELAY
MOV P1, #35H
MOV A, #0H
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
AJMP LOOP
DELAY: MOV R5, #0AH ;延时
DL3: MOV R7, #82H
DL1: MOV R6, #0FFH
DL2: DJNZ R6, DL2
DJNZ R7, DL1
DJNZ R5, DL3
RET ;返回主程序
END
7 课程设计体会
经过三周的努力工作,终于在同组人的共同合作下完成了交通灯控制器设计。虽然设计仿真调试的过程很艰辛,但结果还是好的,看到仿真结果出来,看到交通灯的循环闪烁,心情顿时好起来,调试过程中的种种怨言都没有了。这次课程设计主要是软件仿真,由于器材有限就没有弄硬件部分。在软件的设计与调试过程中,我觉得它主要考验你的思维逻辑能力及你对指令的熟悉程度。可以说再整个软件设计过程中,我感觉又重新学了一次单片机,在学习的过程中不仅学会了延时的两种方法,即软件延时和硬件延时。通过几次反复调试过程,使得我对汇编语言有了更深刻的理解。在整个课程设计过程我还学会熟练使用Keil、proteus等软件,对我在今后的学习中会有很大的帮助。
参考文献
[1] 李朝青﹒单片机原理及接口技术﹒第3版﹒北京:北京航空航天大学出版社,2005﹒320
[2] 肖业伟,郭雪峰,黄辉先等﹒自适应的智能交通信号机系统设计﹒计算机工程,2009,35(7):220—222
[3] 张飞舟,曹学军,孙敏﹒基于多智能体的城市交通集成控制系统设计﹒北京大学学报,2008,44(2):289—292
[4] 史新宏,蔡伯根,穆建成﹒智能交通系统的发展﹒北方交通大学学报,2002,26(3):29—34
第二篇:交通灯课程设计5
课题三 交通灯控制逻辑电路设计
一、 简述
为了确保十字路口的车辆顺利、畅通地通过,往往都采用自动控制的交通信号灯来进行指挥。其中红灯(R)亮表示该条道路禁止通行;黄灯(Y)亮表示停车;绿灯(G)亮表示允许通行。
交通灯控制器的系统框图如图3.1所示。
图3.1 交通灯控制器系统框图
二、设计任务和要求
设计一个十字路口交通信号灯控制器,其要求如下:
1. 满足如图3.2顺序工作流程。
图中设南北方向的红、黄、绿灯分别为NSR、NSY、NSG,东西方向的红、
黄、绿灯分别为EWR、EWY、EWG。
它们的工作方式,有些必须是并行进行的,即南北方向绿灯亮,东西方向红
灯亮;南北方向黄灯亮,东西方向红灯亮;南北方向红灯亮,东西方向绿灯亮;南北方向红灯亮,东西方向黄灯亮。
t为时间单位
图3.2 交通灯顺序工作流程图
2. 应满足两个方向的工作时序:即东西方向亮红灯时间应等于南北方向亮黄、绿灯时间之和,南北方向亮红灯时间应等于东西方向亮黄、绿灯时间之和。时序工作流程图见图
3.3所示。
图3.3中,假设每个单位时间为3秒,则南北、东西方向绿、黄、红灯亮时间分别为15秒、3秒、18秒,一次循环为36秒。其中红灯亮的时间为绿灯、黄灯亮的时间之和,黄灯是间歇闪耀。
0123xxxxxxxxxxxx3456
t
NSG
图3.3 交通灯时序工作流程图
3. 十字路口要有数字显示,作为时间提示,以便人们更直观地把握时间。具体为:当某方向绿灯亮时,置显示器为某值,然后以每秒减1计数方式工作,直至减到数为“0”,十字路口红、绿等交换,一次工作循环结束,而进入下一步某方向的工作循环。
例如:当南北方向从红灯转换成绿灯时,置南北方向数字显示为18,并使数显计数器开始减“1”计数,当减到绿灯灭而黄灯亮(闪耀)时,数显得值应为3,当减到“0”时,此时黄灯灭,而南北方向的红灯亮;同时,使得东西方向的绿灯亮,并置东西方向的数显为18。
4. 可以手动调整和自动控制,夜间为黄灯闪耀。
5. 在完成上述任务后,可以对电路进行以下几方面的电路改进或扩展。
(1)在某一方向(如南北)为十字路口主干道,另一方向(如东西)为次干道;主干道由于车辆、行人多,而次干道的车辆、行人少,所以主干道绿灯亮的时间可以选定为次干道绿灯亮时间的2倍或3倍。
(2)用LED发光二极管模拟汽车行驶电路。当某一方向绿灯亮时,这一方向的发光二极管接通,并一个一个向前移动,表示汽车在行驶;当遇到黄灯亮时,移位发光二极管就停止,而过了十字路口的移位发光二极管继续向前移动;红灯亮时,则另一方向转为绿灯亮,那么,这一方向的LED发光二极管就开始移位(表示这一方向的车辆行驶)。
三、可选用器材
1. 通用实验底板
2. 直流稳压电源
3. 交通信号灯及汽车模拟装置
4. 集成电路:74LS74、74LS164、74LS168、74LS248及门电路
5. 显示:LC5011-11,发光二极管
6. 电阻
7. 开关
四、设计方案提示
根据设计任务和要求,参考交通灯控制器的逻辑电路主要框图3.1,设计方案可以从以下几部分进行考虑。
1. 秒脉冲和分频器
因十字路口每个方向绿、黄、红灯所亮时间比例分别为5:1:6,所以,若选4
秒(也可以3秒)为一单位时间,则计数器每计4秒输出一个脉冲。这一电路就很容易实现,逻辑电路参考前面有关课题。
2. 交通灯控制器
由波形图可知,计数器每次工作循环周期为12,所以可以选用12进制计数器。
计数器可以用单触发器组成,也可以用中规模集成计数器。这里我们选用中规模74LS164八位移位寄存器组成扭环形12进制计数器。扭环形计数器的状态表如表3.1所示。
表3.1 状态表
根据状态表,我们不难列出东西方向和南北方向绿、黄、红灯的逻辑表达式: 东西方向 绿:EWG?Q4?Q5
黄:EWY?Q4?Q5(EWY??EWY?CP1) 红:EWR?Q5
南北方向 绿:NSG?Q4?Q5
黄:EWY?Q4?Q5(NSY??NSY?CP1) 红:NSR?Q5
由于黄灯要求闪耀几次,所以用时标1s和EWY或NSY黄灯信号相“与”即可。 3. 显示控制部分
显示控制部分实际上是一个定时控制电路。当绿灯亮时,使减法计数器开始工作(用对方的红灯信号控制),每来一个秒脉冲,使计数器减1,直到计数器为“0”而停止。译码显示可用74LS248 BCD码七段译码器,显示器用LC5011-11共阴极LED显示器,计数器材用可预置加、减法计数器,如74LS168、74LS193等。
3. 手动/自动控制,夜间控制
这可用一选择开关进行。置开关在手动位置,输入单次脉冲,可使交通灯在某
一位置上,开关在自动位置时,则交通信号灯按自动循环工作方式运行。夜间时,将夜间开关接通,黄灯闪亮。
4. 汽车模拟运行控制
用移位寄存器组成汽车模拟控制系统,即当某一方向绿灯亮时,则绿灯亮“G”
信号使该路方向的移位通路打开,而当黄、红灯亮时,则使该方向的移位停止。如图3.4所示,为南北方向汽车模拟控制电路。
图3.4 汽车模拟控制电路
五、参考电路
根据设计任务和要求,交通信号灯控制器参考电路,如图3.5所示。
六、参考电路简要说明
1. 单次手动及脉冲电路
单次脉冲是由两个与非门组成的RS触发器产生的,当按下K1时,有一个脉冲输出使74LS164移位计数,实现手动控制。K2在自动位置时,由秒脉冲电路经分频后(4分频)输入给74LS164,这样,74LS164为每4秒向前移一位(计数1次)。秒脉冲电路可用晶振或RC振荡电路构成。
东东东东东东东东东东东东东东东东2. 控制器部分
个方向的控制信号。其中黄灯信号必须满足闪耀,并在夜间时,使黄灯闪亮,而绿、红灯灭。
3. 数字显示部分
5图3.5 交通信号灯控制器参考电路
它由74LS164组成扭环形计数器,然后经译码后输出十字路口南北、东西两
当南北方向绿灯亮,而东西方向红灯亮时,使南北方向的74LS168以减法计
数器方式工作,从数字“24” 开始往下减,当减到“0”时,南北方向绿灯灭,红灯亮,而东西方向红灯灭,绿灯亮。由于东西方向红灯灭信号(EWR:0)使与门关断,减法计数器工作结束,而南北方向红灯亮使另一方向——东西方向减法计数器开始工作。
在减法计数开始之前,由黄灯亮信号使减法计数器先置入数据,图中接入U/D和LD的信号就是由黄灯亮(为高电平)时,置入数据。黄灯灭(Y=0)而红灯亮(R=1)开始减计数。
4. 汽车模拟控制电路
这一部分电路参考图4。当黄灯(Y)或红灯(R)亮时,则这端为高(H)电
平,在CP移位脉冲作用下,而向前移位,高电平“H”从QH一直移到QA(图中74LS164-1)由于绿灯在红灯和黄灯位高电平时,它为低电平,所以74LS164-1QA的信号就不能送到74LS164-2移位寄存器的RI端。这样,就模拟了当黄、红灯亮时汽车停止的功能。而当绿灯亮,黄、红灯灭(G=1,R=0,Y=0)时,74LS164-1、74LS164-2都能在CP移位脉冲作用下向前移位。这就意味着绿灯亮时汽车向前运行这一功能。
要说明一点,交通灯控制器实现方法很多,这里就不一一举例了。