资源描述
- -
目录
一引言2
二概要设计2
2.1 设计思路2
2.2总体设计框图2
三硬件设计3
3.1LED循环电路设计3
3.1.1 89cs51单片机概述3
3.1.2 LED循环说明5
3.2 倒计时显示电路5
3.2.1 74LS164芯片5
3.2.2 共阴极数码显示管6
3.2.3 倒计时电路6
3.2.4 急通车电路7
四软件按设计7
4.1 程序流程图:7
4.2 LED红绿灯显示8
4.3倒计时显示9
4.4 急通车控制9
4.5程序代码9
五总结9
参考文献9
附录一:9
附录二:10
基于51单片机的交通灯控制系统设计
摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。交通灯控制系统由80C51单片机、键盘、LED显示、交通灯延时组成。系统除具有根本交通灯功能外,还具有时间设置、LED信息显示功能,市交通实现有效控制。
关键词:交通灯,单片机,自动控制
一引言
当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这个技术在19世纪就已经出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转方式玻璃提灯组成,红色表示“停顿〞,绿色表示“注意〞。1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消!
电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。红灯亮表示“停顿〞,绿灯亮表示“通行〞。
信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。1968年,联合国?道路交通和道路标志信号协定?对各种信号灯的含义作了规定。绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两一种标志制止某一种转向。左右转弯车辆必需让合法的正在路口行驶的车辆和过人行横线的行人优先通行。红灯是禁行信号灯,面对红灯的车辆必需在穿插路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能平安停车的可以进入穿插路口!
二概要设计
2.1 设计思路
利用单片机实现交通灯的控制,该任务分以下几个方面:
a 实现红、绿、黄灯的循环控制。要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。
b 用数码管显示倒计时。可以利用动态显示或静态显示,串行并出或者并行并出实现。
C实现急通车。这需要人工实现,编程时利用到中断才能带到目的,只要有按钮按下,那么四个方向全部显示红灯,制止以诶车辆通行。当情况解除,让时间回到只能隔断处继续进展。
2.2总体设计框图
见图一:
交通灯循环
最小系统
倒计时显示
强通车控制
图一
三 硬件设计
3.1LED循环电路设计
3.1.1 89cs51单片机概述
MCS-51单片机部构造:
89CS51是MCS-51系列单片机的典型产品,我们以这一代表性的机型进展系统的讲解。
89CS51单片机包含中央处理器、程序存储器〔ROM〕、数据存储器〔RAM〕、定时/计数器、并行接口、串行接口和中断系统等极大单元及数据总线、地址总线和控制总线等三大总线,现在分别加以说明。
*中央处理器:
中央处理器〔CPU〕是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统的工作,完成运算和控制输入输出等操控。
*数据存储器〔RAM〕:
89CS51部有128个8位用户数及存储单元和128个存放器单元,他们是统一编址的,专营存放器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户自定义的字型表。
*程序存储器〔ROM〕:
89CS51共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
*定时/计数器〔ROM〕:
89CS51有两个16位的可编程定时/计数器,一时想定时或计数产生中断用于控制程序转向。
*并行输入输出〔I/O〕口:
89CS51共有4组8位I/O口〔P0、P1、P2或P3〕,用于对外数据传输。
*全双工串行号:
89CS51置一个全双行串行通信口,用于与其它设备间的串行数据传输,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
*中断系统:
89CS51具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,客满著不同的控制要求,并具有2级优先级别选择。
*时钟电路:
89CS51置最高频率高达12Hz的时钟电路,用于产生整个单片机运行的脉冲时序,但89CS51单片继续外置震荡电容。
单片机的构造有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛〔Harvard〕构造,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的构造,即普林斯顿〔Princeton〕构造。
MCS-51系统的引脚说明:
MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP构造,图二是它们的引脚配置,40个引脚中,正电源和底线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RST
RXD/P3.0
TXD/P3.1
INT0/P3.2
INT1/P3.3
T0/P3.4
Y1/P3.5
WR/P3.6
RD/P3.7
XTAL2
XTAL1
GND
PDIP
VCC
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
EA/VPP
ALE/PROG
PESN
P2.7/A15
P2.6/A14
P2.5/A13
P2.4/A12
P2.3/A11
P2.2/A10
P2.1/A9
P2.0/A8
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
图二
8951的抚慰方式可以自动复位,也可以是手动复位,见下列图。除此之外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可以接上没用电源,以保证单片机部RAM的数据不丧失。
在编程时,EA/Vpp脚还需加上21V的编程电压。
3.1.2 LED循环说明
东西、南北两干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯,指挥车辆和行人的安丘按通行。红灯制止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西,南北两干道的公共停车时间。
25s
3s
2s
25s
3s
2s
东西通道
红灯亮
红灯亮
红灯亮
绿灯亮
绿灯闪
黄灯亮
南北通道
绿灯亮
绿灯闪
黄灯亮
红灯亮
红灯亮
红灯亮
上表说明东西路口哈珀能够灯亮,南北路口绿灯亮,同时开场25s倒计时。25s倒计时完毕后开场5s倒计时,南北铝扣绿灯闪烁,计时至最后2s时,南北路口黄灯亮。完成一次这样的循环要30s。30s完毕,南北路口红灯亮,东西路口绿灯亮,并重新30s倒计时,依次循环。电路图如图三所示。
图三
3.2 倒计时显示电路
3.2.1 74LS164芯片
74LS164用于扩展并行输出口。用89CS51串行口外接164串入-并出移位存放器扩展8位并行口。8位并行口的每位分别接到数码显示管的不同显示端。74LS164芯片管脚排列如下列图,管脚1、2相连共同接单片机管脚RXD,8管脚接单片机管脚TXD,9管脚接高电平,7管脚接地,14管脚接高电平,其他管脚依次接数码显示管管脚。
图四
3.2.2 共阴极数码显示管
这里列出了共阴和共阳数码管的管脚平排列和部构造。数码管3、8管脚部连在一起。如果是共阳极那么将其接到高电平。如果是共阴极那么将其接地。为了数码显示管的平安这里用三个二极管与其串联来降压。
图五
3.2.3 倒计时电路
倒计时显示电路如图六。利用两个74LS164芯片并联后,其1、2管脚至单片机RXD管脚8管脚至单片机TXD管脚。然后其他管脚依次接至数码管个管脚。对于数码管其3、8管脚经过三个串联的二极管接地。
图六
3.2.4 急通车电路
为了实现此功能,利用单片机中断到达目的。利用一个手动按钮开关接至单片机外部中断0,同时在软件设计时将其设为最高优先级。当有按键按下,四方全为红灯,同时将终端位置的PSW、ACC进栈保护。当再按下按钮,将PSW、ACC出栈,回到原来的位置继续执行,电路图如下列图。
图七
四 软件按设计
4.1 程序流程图:
如图八所示。
图八
4.2 LED红绿灯显示
如图三所示,当P1端口输出高电平,即P1各端口=1时,根据发光二极管的单向导电性可知,这是发光二极管熄灭;当P1个端口输出低电平,即P1各端口=0时,发光二极管亮。我们可以使用SETB指令使P1各端口输出高电平,使用CLR指令时P各端口输出低电平。至于循环需要软件控制,程序见附录。
4.3倒计时显示
此处采用LED静态显示方式,当显示器显示某个字符时,相应的段恒定的导通或截止,直到显示另个字符为止。89C51的串行口RXD和TXD为一个全双工串行通信口,但工作在方式0下可作同步移位存放器,其数据由RXD端串行输出或输入;而同步移位时钟由TXD端串行输出,在同步时钟的作用下,实现由串行到并行的数据通信。在不需要使用串行通信的场合,利用串行口加外围芯片74LS164就可构成一个或多个并行输入\输出口,用于串——并转换或显示器LED驱动。此利用后者。
4.4 急通车控制
将一按钮接到单片机外部中断0端口。另一端接地,通过在程序里设置外部中断0为最高优先级。当检测到有按钮按下时,产生中断,停顿刚刚的程序,转向中断执行。在此过程必须利用PUSH、POP指令保护现场,这样当情况解除可以回到原来的地方继续执行。
4.5程序代码
见附录二
五 总结
在学习单片机理论课时候就感觉到容很多,知识点很杂,分繁琐。在教师的讲解下,在通过自己的努力也更进一步了解了单片机的部构造和工作原理,以及接外部电路的情况。当然光有理论知识那只是“纸上谈兵〞,还需要实际动手去实践。真正把所学的用到日常生活中,理论联系实际,做出实物模型。这次单片机实习,我选的是交通灯设计,通过这次设计我感觉到要想做成功,必须花时间多准备,查阅大量资料,认证分析每一步每一个模块要实现的功能,然后分步进展,最后正和一个整体。
通过这次实习,我们要对所做的事情有耐性,在编程的时候会有困难,也可能变得不一定成功,所以要经过屡次调试,分析,改正,反复去做。
在这次实习中,经历了屡次失败的洗礼,我明白在以后学习和实践中,我要努力掌握知识,多动手,多思考,以免在以后的学习工作中犯同样的错误。
参考文献
[1] 叶挺秀.应用电子学[M].:大学,1994
[2] 朱承高.电工及电子技术手册[M].:高等教育,1990
[3] 阎石.数字电子技术根底〔第三版〕[M].:高等教育,1989
[4] 周润景.PEOTEUS在MCS-51&ARM7系统中的应用百例[M].:电子工业,2006
[5] 朝青.单片机原理及接口技术〔第三版〕[M].:航空航天大学,2005
附录一:
附录二:
源程序代码
SECOND1 EQU 30H ;东西路口计时存放器
SECOND2 EQU 31H;南北路口计时存放器
DBUF EQU 40H ;显示码缓冲1
TEMP EQU 44H ;显示码缓冲2
LED_G1 BIT P1.0;东西路口绿灯
LED_Y1 BIT P1.1 ;东西路口黄灯
LED_R1 BIT P1.2 ;东西路口红灯
LED_G2 BIT P1.5 ;南北路口绿灯
LED_Y2 BIT P1.6 ;南北路口黄灯
LED_R2 BIT P1.7 ;南北路口红灯
ORG 0000H
LJMP START
ORG 0003H
LJMP INTO0
ORG 0100H
START:MOV TMOD,#01H 置T0工作方式1
MOV TH0,#3CH
MOV TLO,#0B0H
CLR TFO
SETB TRO启动T0
SETB EX0
SETB PX0 设置外中断0高优先级
SETB EA
LOOP: MOV R2,#20 置1s计数初值
MOV R3,#20 红灯亮20S
MOV SECOND1,#25 东西路口计时显示初值25s
MOV SECOND2,#25 南北路口计时显示初值25s
LCALL DISPLAY
LCALL STATEL 调用状态1
WAIT1:JNB TF0,WAIT1 查询50ms到否
CLR TF0
MOV TH0,#3CH 恢复T0定时初值50ms
MOV TL0,#0B0H
DJNZ R2,WAIT1 判断1s到否?未到继续状态1
MOV R2,#20 置50ms计数初值
DEC SECIND1 东西路口显示时间减1
DEC SECOND2 南北路口显示时间减1
LCALL DISPLAY
DJNZ R3,WAIT1 状态1维持20s
MOV R2,#5 置50ms计数初值
MOV R3,#3 绿灯闪烁3s
MOV R4,#4 闪烁间隔200ms
MOV SECOND1,#5 东西路口计时显示初值5s
MOV SECOND2,#5 南北路口计时显示初值5s
LCALL DISPLAY
WAIT2:LCALL STATE2 调用状态2
JNB TF0,WAIT2 查询50ms到否
CLR TF0
MOV TH0,#3CH 恢复T0定时初值50ms
MOV TL0,#0B0H
DJNZ R4,WAIT2 判断200ms到否?未到继续状态2
CPLLED_G1 东西绿灯闪烁
MOV R4,#4 闪烁200ms
DJNZ R2,WAIT2 判断1s到否?未到继续状态2
MOV R2,#5 置50ma计数初值
DEC SECOND1 东西路口显示时间减1
DEC SECOND2 南北路口显示时间减1
LCALL DISPLAY
DJNZ R3,WAIT2 状态2维持3s
MOV R2,#20 置50ms计数初值
MOV R3,#2 黄灯闪烁2s
MOV SECOND1,#2 东西路口计时显示初值2s
MOV SECOND2,#2 南北路口计时显示初值2s
LCALL DISPLAY
WAIT3:LCALL STATE3 调用状态3
JNB TF0,#3CH 查询100ms到否
CLR TF0
MOV TH0,#3CH 恢复T0定时初值100ms
MOV TL0,#0B0H
DJNZ R2,WAIT3 判断1s到否?未到继续状态3
MOV R2,#20 置100ms计数初值
DEC SECOND1 东西路口显示时间减1
DEC SECOND2 南北路口显示时间减1
LCALL DISPLAY
DJNZ R3,WAIT3 状态3维持2s
MOV R2,#20 置50ms计数初值
MOV R3,#20 红灯闪烁20s
MOV SECOND1,#25 东西路口计时显示初值25s
MOV SECOND2,#25 南北路口计时显示初值25s
LCALL DISPLAY
WAIT4:LCALL STATE4 调用状态4
JNB TF0,WAIT4 查询100ms到否
CLR TF0
MOV TH0,#3CH 恢复T0定时初值100ms
MOV TL0,#0B0H
DJNZ R2,WAIT4 判断1s到否?未到继续状态4
MOV R2,#20 置100ms计数初值
DEC SECOND1 东西路口显示时间减1
DEC SECOND2 南北路口显示时间减1
LCALL DISPLAY
DJNZ R3,WAIT4 状态4维持2s
MOV R2,#5 置50ms计数初值
MOV R3,#4 红灯闪烁20s
MOV R3,#3 绿灯闪烁3s
MOV SECOND1,#25 东西路口计时显示初值5s
MOV SECOND2,#25 南北路口计时显示初值25s
LCALL DISPLAY
WAIT5:LCALL STATE5 调用状态5
JNB TF0,WAIT5 查询100ms到否
CLR TF0
MOV TH0,#3CH 恢复T0定时初值100ms
MOV TL0,#0B0H
DJNZ R4,WAIT5 判断200ms到否?未到继续状态5
CPLLED_G2 南北绿灯闪烁
MOV R4,#4 闪烁200ms
DJNZ R2,WAIT5 判断1s到否?未到继续状态5
MOV R2,#5 置100ms计数初值
DEC SECOND1 东西路口显示时间减1
DEC SECOND2 南北路口显示时间减1
LCALL DISPLAY
DJNZ R3,WAIT5 状态5维持3s
MOV R2,#20 置50ms计数初值
MOV R3,#20 红灯闪烁2s
MOV SECOND1,#25 东西路口计时显示初值5s
MOV SECOND2,#25 南北路口计时显示初值5s
LCALL DISPLAY
WAIT6:LCALL STATE6 调用状态4
JNB TF0,WAIT6 查询100ms到否
CLR TF0
MOV TH0,#3CH 恢复T0定时初值100ms
MOV TL0,#0B0H
DJNZ R2,WAIT6 判断1s到否?未到继续状态6
MOV R2,#20 置100ms计数初值
DEC SECOND1 东西路口显示时间减1
DEC SECOND2 南北路口显示时间减1
LCALL DISPLAY
DJNZ R3,WAIT6 状态6维持3s
LJMP LOOP
STATE1: 状态1
SETBLED_G1东西路口路灯亮
CLR LED_Y1
CLR LED_R1
CLR LED_G2
CLR LED_Y2
SETB LED_R2 南北路口红灯亮
RET
STATE2: 状态2
CLR LED_Y1
CLR LED_R1
CLR LED_G2
CLR LED_Y2
SETBLED_R2 南北路口红灯亮
RET
STATE3: 状态3
CLR LED_G1
CLR LED_R1
CLR LED_G2
CLR LED_Y2
SETB LED_R2 南北路口红灯亮
SETB LED_Y1 东西路口黄灯亮
RET
STATE4: 状态4
CLR LED_G1
CLR LED_Y1
SETB LED_R1 东西路口红灯亮
SETB LED_G2 南北路口绿灯亮
CLR LED_Y2
CLR LED_R2
RET
STATE5: 状态5
CLR LED_G1
CLR LED_R1
SETB LED_R1 东西路口红灯亮
CLR LED_Y2
CLR LED_R2
RET
STATE6: 状态6
CLR LED_G1
CLR LED_Y1
SETB LED_R1 东西路口红灯亮
CLR LED_G2
CLR LED_R2
SETB LED_Y2 南北路口黄灯亮
RET
DISPLAY: 数码显示
MOV A,SECOND1 东西路口计时存放器
MOV B,#10
DIV AB
MOV DBUF+3,A
MOV A,B
MOV DBUF+2,A
MOV SECOND2 南北路口计时存放器
MOV B,#10
DIY AB
MOV DBUF+1,A
MOV A,B
MOV DBUF,A
MOV R0,#DBUF
MOV R1,#TEMP
MOV R7,#4
DP10:MOV DPOTR,#LEDMAP
MOV A,R0
MOVC A,A+DPTR
MOV R1,A
INC R0
INC R1
DJNZ R7,DP10
MOV R0,#TEMP
MOV R1,#4
DP12:MOV R7,#8
MOV A,R0
DP13:RLC A
MOV P3.0,C
CLR P3.1
SETB P3.1
DJNZ R7,DP13
INC R0
DJNZ R1,DP12
RET
LENMAP:DB 3FH,06H,5BH,4FH,66H,6DH
DB 7DH,07H,7FH,6FH
ORG 0200H
INTO0:PUSH PSW
PUSH ACC
SETB LED_R1
SETB LED_R2
CLR LED_G1
CLR LED_Y1
CLR LED_G2
CLR LED_Y2
POP PSW
POP ACC
RETI
END
- - word.zl-
展开阅读全文