交通灯控制系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1选题背景
今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
在交通中管理引入单片机交通灯控制代替交管人员在交叉路口服务,有助于提高交通运输的安全性、提高交通管理的服务质量。
并在一定程度上尽可能的降低由道路拥挤造成的经济损失,同时也减小了工作人员的劳动强度。
关键词:AT89C51;7448,LED
2方案论证
2.1设计任务
设计基于单片机的智能交通红绿灯控制系统,要求能通过按键或遥控器设置系统参数,系统运行时,“倒计时等信息”能通过数码管或点阵发光管显示,设计时应考虑交通红绿灯控制的易操作性及智能性。
以单片机的最小系统为基础设计硬件,用汇编语言、或C语言设计软件。
通过本设计可以培养学生分析问题和解决问题的能力,掌握Mcs51单片机的硬件与软件设计方法,从而将学到的理论知识应用于实践中,为将来走向社会奠定良好的基础。
东西(A)、南北(B)两干道交于一个十字路口,各干道有一组红、黄、绿三个指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行,黄灯亮时车辆及行人小心通过。
红灯的设计时间为45秒,绿灯为40秒,黄灯为5秒。
2.2 方案介绍
方案1设计思想:
采用分模块设计的思想,程序设计实现的基本思想是一个计数器,选择一个单片机,其内部为一个计数,是十六进制计数器,模块化后,通过设置或程序清除来实现状
态的转换,由于每一个模块的计数多不是相同,这里的各模块是以预置数和计数器计
数共同来实现的,所以要考虑增加一个置数模块,其主要功能细分为,对不同的状态输
入要产生相应状态的下一个状态的预置数,如图中A道和B道,分别为次干道的置数选
择和主干道的置数选择。
方案2 设计思想:
由两个传感器监视南北方向即A道与东西方向即B道的车辆来往情况,设开关K=1
为有车通过,K=0为没有车通过。
则有以下四种情况:
Ka=1时:Kb=0,表示A有车B没有车,则仅通行B道:
Kb=1,表示A有车B有车,则优先通行A道;
Ka=0时:Kb=0表示A没有车B也没有车,同样优先通行A道;
Kb=1表示A没有车B有车,则仅通行B道。
方案比较:
方案1用了模块设计,而方案2采用逻辑设计,相比之下1有较强的可读性和较强
的可修改性,而2则在设计上显得较简单,设计纯朴,便于测试,它的优势则在于提供
了一条较为便捷的解决方案。
2首先将许多逻辑关系简化到极点,而后将其一起集成用
较少的芯片去完成所需功能。
我们最终的设计应该尽量使用模块化设计。
对工程设计人员来说,将来的产品无论
从修改还是升级考虑对有好处,但另外我们又需将设计简单化,因此我觉得在设计初期
尽可能的简单化设计,而一旦设计的各项测试通过了,在有可能的条件下将设计模块化,
所以本设计以第一方案为主进行。
我们最终的设计应该尽量使用模块化设计。
对工程设计人员来说,将来的产品无论
从修改还是升级考虑对有好处,但另外我们又需将设计简单化,因此我觉得在设计初期
尽可能的简单化设计,而一旦设计的各项测试通过了,在有可能的条件下将设计模块化,
所以本设计以第一方案为主进行。
3 交通灯系统硬件设计
3.1 单片机概述
单片机是由运算器、控制器、存储器、输入设备以及输出设备共五个基本部分组成的。
单片机是把包括运算器、控制器、少量的存储器、最基本的输入输出口电路、串行口电路、中断和定时电路等都集成在一个尺寸有限的芯片上。
通常,单片机由单个集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
3.2 系统构成
电路板一块,AT89S51单片机一片,7448芯片2片,七段数码管八个。
发光二极管20个(8个绿的,8个红的,4个黄的用于交通控制),100欧姆电阻20个,2个按键,2个开关,51K欧姆电阻2个,5V 稳定电源1个,3个电容2个单刀单掷开关等。
系统结构框图:
图3-1 系统结构框图
系统工作流程:
(1)程序初始,通过两个传感器来判断南北与东西方向车辆通行情况。
(2) 情况判定后由AT89S51单片机p1口及部分p2口输出二进制信号控制红绿黄灯亮的情况。
(3) 确定那些灯亮后,由对应的七段数码管来进行到计时显示。
由p0口输出来控制七段数码管的显示,而p2口的高四位则用来控制数码管显示时的个位和十位(4)系统是否需要紧急工作状态,而此任务由外部中断来实现。
(5)LED采用5V的直流电来驱动,低电平。
3.3芯片选择与介绍
3.3.1 AT89S51芯片
选用的AT89S51与同系列的AT89C51在功能上有明显的提高,最突出是的可以实现在线的编程。
用于实现系统的总的控制。
其主要功能列举如下:
1) 为一般控制应用的 8 位单片机
2) 晶片内部具有时钟振荡器(传统最高工作频率可至 33MHz)
3) 内部程式存储器(ROM)为 4KB
4) 内部数据存储器(RAM)为 128B
5) 外部程序存储器可扩充至 64KB
6) 外部数据存储器可扩充至 64KB
7) 32条双向输入输出线,且每条均可以单独做 I/O 的控制
8) 6 个中断向量源
9) 2 组独立的 16 位定时器
10) 1 个全双工串行通信端口
11) 8751 及 8752 单芯片具有数据保密的功能
12) 单芯片提供位逻辑运算指令
图3-1 AT89C51芯片
3.3.2 7448芯片介绍
7448七段显示译码器输出高电平有效,用以驱动共阴极显示器。
该集成显示译码器设有多个辅助控制端,以增强器件的功能,可将单片机输出的四位二进制数转换成10进制数与七段数码管显示对应,用于显示0—9的数字。
图3-2 7448芯片
其中LT 为测试输入。
3.3.3 红绿LED信号显示灯及七段数码显示管
LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮。
如下图:
图3-3红绿LED信号显示灯
而七段数码管的显示不同的字形如 SP,g,f,e,d,c,b,a 管角上加上OFEH所以SP上为0伏,不亮其余为TTL高电平,全亮则显示为8。
采用共阴极连接:
表3-4 七段数码管的显示
显示数值 a b c d e f g dop 驱动代码(16进制)
0 1 1 1 1 1 1 1 1 0FCH
1 0 0 0 0 0 1 1 0 60H
2 1 1 0 1 1 0 1 0 0DAH
3 1 1 1 1 0 0 1 0 0F2H
4 0 1 1 0 0 1 1 0 66H
5 1 0 1 1 0 1 1 0 0B6H
6 1 0 1 1 1 1 1 0 0BEH
7 1 1 1 0 0 0 0 0 0E0H
8 1 1 1 1 1 1 1 0 0FEH
9 1 1 1 1 0 1 1 0 0F6H
3.3.4交通灯控制线路图
图3-5 原理图4 交通灯软件设计
4.1 程序设计流程图
程序设计框图
图4-1 程序设计框图
4.2延时的设定
延时方法可以有两种一种是利用AT89S51内部定时器的溢出中断来确定1秒的时间,另一种是采用软件延时的方法.
实现1ms秒的方法:
我们采用在主程序中设定一个初值为0的软件计数器和使T1定时1毫秒
相应程序代码:
D1MS: MOV R7,#250 ;1MS延时程序
DJNZ R7,$
RET
4.3子程序的实现
A道通车情况:
START1: MOV TEMP, #25
LOOP1: ACALL DELAY
DEC TEMP
MOV A,TEMP
MOV P0, TEMP
JNB P1.6,START3
JNB P1.7,START11
CJNE A,#0, NEXT1
LJMP START2
NEXT1: LJMP LOOP1 START11: MOV TEMP, #65 MOV P1, #0F3H
LOOP11: ACALL DELAY
DEC TEMP
MOV A,TEMP
MOV P0, TEMP
JNB P1.6,START33
JNB P1.7,START1
CJNE A,#0, NEXT11
LJMP START11
NEXT11: LJMP LOOP11 START2: MOV P1, #0F5H MOV TEMN,#05
LOOP2: ACALL DELAY1
DEC TEMN
MOV A,TEMN
CJNE A, #0,NEXT2
LJMP START3
NEXT2: LJMP LOOP2
B道通车情况:
START3: MOV TEMP, #25 MOV P1,#0DEH
LOOP3: ACALL DELAY
DEC TEMP
MOV P0, TEMP
JNB P1.6,START1
JNB P1.7,START33
CJNE A, #0,NEXT3
LJMP START4
NEXT3: LJMP LOOP3 START33: MOV TEMP, #65 MOV P1,#0DEH
LOOP33: ACALL DELAY DEC TEMP
MOV A,TEMP
MOV P0, TEMP
JNB P1.6,START11
JNB P1.7,START3
CJNE A, #0,NEXT33 LJMP START4
NEXT33: LJMP LOOP33 START4: MOV P1, #0EEH MOV TEMN,#05
LOOP4: ACALL DELAY1
中断情况即紧急情况:ORG 0000H
TEMP EQU 24H
TEMN EQU 25H
LJMP MAIN
ORG 0003H
LJMP T0_INT
ORG 0013H
LJMP TI_INT
T0_INT: MOV A, P1 PUSH ACC
MOV P1, #0FFH
MOV P1, #0F3H
JNB P3.2,$
POP ACC
MOV P1, ACC
RETI
TI_INT: MOV A, P1 PUSH ACC
MOV P1, #0FFH
MOV P1, #0DEH
MOV P0,#00H
JNB P3.3,$
POP ACC
MOV P1, A
RETI
5.1仿真图
根据对称性选用部分对称元件仿真,
图5-1 仿真图
5.2.1 编写程序代码
程序代码分为几个模块:中断模块,循环模块,延时模块。
原程序实现:
ORG 0000H
TEMP EQU 24H
TEMN EQU 25H
LJMP MAIN
ORG 0003H
LJMP T0_INT
ORG 0013H
LJMP TI_INT
T0_INT: MOV A, P1
PUSH ACC
MOV P1, #0FFH
MOV P1, #0F3H
MOV P0, #00H
JNB P3.2,$
POP ACC
MOV P1, ACC
RETI
TI_INT: MOV A, P1
PUSH ACC
MOV P1, #0FFH
MOV P1, #0DEH
MOV P0,#00H
JNB P3.3,$
POP ACC
MOV P1, A
RETI
MAIN: SETB EA
SETB EX0
SETB EX1
CLR F0
START1: MOV TEMP, #25 MOV P1, #0F3H
LOOP1: ACALL DELAY
DEC TEMP
MOV A,TEMP
MOV P0, TEMP
JNB P1.6,START3
JNB P1.7,START11
CJNE A,#0, NEXT1
LJMP START2
NEXT1: LJMP LOOP1 START11: MOV TEMP, #65 MOV P1, #0F3H
LOOP11: ACALL DELAY
DEC TEMP
MOV A,TEMP
MOV P0, TEMP
JNB P1.6,START33
JNB P1.7,START1
CJNE A,#0, NEXT11
LJMP START11
NEXT11: LJMP LOOP11 START2: MOV P1, #0F5H MOV TEMN,#05
LOOP2: ACALL DELAY1
DEC TEMN
MOV A,TEMN
CJNE A, #0,NEXT2
LJMP START3
NEXT2: LJMP LOOP2 START3: MOV TEMP, #25 MOV P1,#0DEH
LOOP3: ACALL DELAY
DEC TEMP
MOV A,TEMP
MOV P0, TEMP
JNB P1.6,START1
JNB P1.7,START33
CJNE A, #0,NEXT3
LJMP START4
NEXT3: LJMP LOOP3 START33: MOV TEMP, #65 MOV P1,#0DEH
LOOP33: ACALL DELAY DEC TEMP
MOV A,TEMP
MOV P0, TEMP
JNB P1.6,START11
JNB P1.7,START3
CJNE A, #0,NEXT33 LJMP START4
NEXT33: LJMP LOOP33 START4: MOV P1, #0EEH MOV TEMN,#05
LOOP4: ACALL DELAY1 DEC TEMN
MOV A, TEMN
CJNE A,#0,NEXT4
LJMP START1
NEXT4: LJMP LOOP4 RETI
DELAY: MOV A,TEMP
MOV B, #10
DIV AB
MOV R5, A
MOV R6, B
MOV R0, #10
L0: MOV R1, #250
L1:MOV A,R5
MOV P0, A
ACALL DIMS
SETB P2.4
MOV A,R6
MOV P0,R6
CLR P2.5
ACALL DIMS
SETB P2.5
DEC R1
DJNZ R1,L1
DEC R0
DJNZ R0,L0
RETI
DELAY1: MOV A,TEMN MOV B, #10
DIV AB
MOV R5, A
MOV R6, B
MOV R2, #10
L2: MOV R3, #250 L3:MOV A,R5
MOV P0, A
CLR P2.4
ACALL DIMS
SETB P2.4
MOV A,R6
MOV P0,R6
CLR P2.5
ACALL DIMS
SETB P2.5
DEC R3
DJNZ R3,L3
DEC R2
DJNZ R2,L2
RETI
MOV A,TEMP
MOV B, #10
DIV AB
MOV R5, A
MOV R6, B
MOV R0, #10
Y0: MOV R1, #250
Y1:MOV A,R5
MOV P2, A
CLR P2.6
ACALL DIMS
SETB P2.6
MOV A,R6
MOV P2,R6
CLR P2.7
ACALL DIMS
SETB P2.7
DEC R1
DJNZ R1,Y1
DEC R0
DJNZ R0,Y0
RETI
DIMS: MOV R7,#250
DJNZ R7,$
RET
END
5.2.2 按照系统硬件连线图连接好系统并调试
1) 调试程序
⑴打开仿真软件,新建文件;
⑵选择芯片;
⑶新建文档,把编写好代码写入文档并保存了ASM文件;
⑷把保存的文档加载到Source Group;
⑸编译程序;
⑹设置转换成16进制;
⑺运行程序的结果;
2) 把编写好的16进制文件(jtd.hex) 输入单片机AT89S51仿真器和对其进行初始化。
3)给实验板进行通电,观察运行结果,不一致则跳到第一步进行反复调试,直到与预定目的一致。
6 结论
本系统就是利用了AT89C51芯片的I/O引脚。
系统采用单片机AT89C51,以及其它芯片来设计交通灯控制器,实现了红灯亮45秒,绿灯亮40秒。
并通过AT89C51来控制7448芯片的输出口控制七段数码管上的时间显示;系统设计简便、实用性强、操作简单、程序设计简便。
系统不足:时间设定中没有黄灯的等待闪烁时间,以及自动根据车流改变红绿灯时间,使城市的交通管理更加人性化。
使人们远离目前的交通拥塞的现象。
参考文献
[1]胡汉才.单片机原理及其接口技术.清华大学出版.1996
[2]蔡美琴.MCS-51系列单片机系统及其应用.高等教育出版社.2004.2
[3]蒋万君.在论循环时序电路的简便设计.机电一体化.2005.5
[4]何立民.MCS-51系列单片机应用系统设计.北京航空航天大学出版社.1995.
[5]李华.MCS -51系列单片机实用接口技术.北京航空航天大学出版社.1993
[6]周航慈.单片机应用程序设计技术.北京航空航天大学出版社.1991.
[7]张志良等.单片机原理与控制技术.机械工业出版社.2001
[8]陆坤.电子设计技术.电子科技大学出版社.1997。