当前位置:首页 >> 电子/电路 >>

用51单片机控制交通灯汇编语言编写


基于 51 单片机的交通灯控制系统设计
摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提
高道路通行能力,减少交通事故有明显效果。交通灯控制系统由 80C51 单片机、键盘、LED 显示、交通灯延时组成。系统除具有基本交通灯功能外,还具有时间设置、LED 信息显示功 能,市交通实现有效控制。

关键词:交通灯,单片机,自动控制 一引言
当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这 个技术在 19 世纪就已经出现了。 1858 年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号 灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868 年,英国机械工程师纳伊特 在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两 以旋转方式玻璃提灯组成,红色表示“停止” ,绿色表示“注意” 。1869 年 1 月 2 日,煤气 灯爆炸,是警察受伤,遂被取消! 电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914 年 始装于纽约市 5 号大街的一座高塔上。红灯亮表示“停止” ,绿灯亮表示“通行” 。 信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减 少交通事故有明显效果。1968 年,联合国《道路交通和道路标志信号协定》对各种信号灯 的含义作了规定。绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两 一种标志禁止某一种转向。 左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线 的行人优先通行。红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。黄 灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能安全停 车的可以进入交叉路口!

二概要设计
2.1 设计思路 利用单片机实现交通灯的控制,该任务分以下几个方面: a 实现红、绿、黄灯的循环控制。要实现此功能需要表示三种不同颜色的 LED 灯分别接 在 P1 个管脚,用软件实现。 b 用数码管显示倒计时。可以利用动态显示或静态显示,串行并出或者并行并出实现。 C 实现急通车。这需要人工实现,编程时利用到中断才能带到目的,只要有按钮按下, 那么四个方向全部显示红灯,禁止以诶车辆通行。当情况解除,让时间回到只能隔断处继续 进行。 2.2 总体设计框图 见图一:

1

交 通 灯 循 环

倒 最 小 系 统 计 时 显 示

强 通 车 控 制

图一

三 硬件设计
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 位的可编程定时/计数器,一时想定时或计数产生中断用于控制

2

程序转向。 *并行输入输出(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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PDIP 图二

40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

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

3

8951 的抚慰方式可以自动复位,也可以是手动复位,见下图。除此之外,RESET/Vpd 还 是一复用脚, Vcc 掉电其间, 此脚可以接上没用电源, 以保证单片机内部 RAM 的数据不丢失。 在编程时,EA/Vpp 脚还需加上 21V 的编程电压。 3.1.2 LED 循环说明 东西、南北两干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯,指挥 车辆和行人的安丘按通行。红灯禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯 的状态即将切换,且黄灯燃亮时间为东西,南北两干道的公共停车时间。 状态 时间 南北通道 东西通道 ① 45s 红灯亮 绿灯亮 ② 5s 红灯亮 黄灯闪 ③ 45s 绿灯亮 红灯亮 ④ 5s 黄灯闪 红灯亮 45s 红灯亮 绿灯亮 ① 循环 。。 。 。。 。 。。 。

上表说明东西路口亮绿灯的同时,南北路口红灯亮,同时开始 45s 倒计时。倒计时结束 后开始 5s 倒计时, 东西黄灯闪烁南北还是亮红灯, 计时结束后状态交换然后依次循环下去。 完成一次这样的循环要 50s。

电路 图如图三所示。

4

图三 3.2 倒计时显示电路 3.2.1 74LS164 芯片 74LS164 用于扩展并行输出口。 89CS51 串行口外接 164 串入-并出移位寄存器扩展 8 用 位并行口。8 位并行口的每位分别接到数码显示管的不同显示端。74LS164 芯片管脚排列如 下图,管脚 1、2 相连共同接单片机管脚 RXD,8 管脚接单片机管脚 TXD,9 管脚接高电平,7 管脚接地,14 管脚接高电平,其他管脚依次接数码显示管管脚。

倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和 “通过” 两者间作出合适的选择。驾驶员和行人普遍都愿意选择有倒计时显示的 信号控制方式, 并且认为有倒计时显示的路口更安全。倒计时显示是用来减少驾 驶员在信号灯色改变的关键时刻做出复杂判断的 1 种方法, 它可以提醒驾驶员灯 色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择 。

5

图四 3.2.2 共阴极数码显示管 这里列出了共阴和共阳数码管的管脚平排列和内部结构。数码管 3、8 管脚内部连在一 起。如果是共阳极则将其接到高电平。如果是共阴极则将其接地。为了数码显示管的安全这 里用三个二极管与其串联来降压。

图五 3.2.3 倒计时电路 倒计时显示电路如图六。利用两个 74LS164 芯片并联后,其 1、2 管脚至单片机 RXD 管脚 8 管脚至单片机 TXD 管脚。然后其他管脚依次接至数码管个管脚。对于数码管其 3、8 管脚经过三个串联的二极管接地。

6

图六 3.2.4 急通车电路 为了实现此功能, 利用单片机中断达到目的。 利用一个手动按钮开关接至单片机 外部中断 0,同时在软件设计时将其设为最高优先级。当有按键按下,四方全为红灯,同时 将终端位置的 PSW、ACC 进栈保护。当再按下按钮,将 PSW、ACC 出栈,回到原来的位置继续 执行,电路图如下图。

4.2 交通灯中的中断处理流程 (1)现场保护和现场恢复: 有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保

7

护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。 (2)中断打开和中断关闭: 为了使特殊车辆通行按一下打开中断开关就可以打开中断, 关闭中断开关就 关闭中断。 (3)中断服务程序: 有中断产生, 就必然有其具体的需执行的任务,中断服务程序就是执行中断 处理的具体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯, 东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南 北方向为红灯。 (4)中断返回: 执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显 示时间也和中断前一样。 系统硬件总电路构成及原理 实现本设计要求的具体功能,可以选用 AT89C51 单片机及外围器件构成最 小控制系统,12 个发光二极管分成 4 组红绿黄三色灯构成信号灯指示模块,8 个 LED 东西南北各两个构成倒计时显示模块,若干按键组成时间设置和紧急按 钮。 4.3.1 系统硬件电路构成 本系统以单片机为核心,系统硬件电路由状态灯,LED 显示,按键,组成。 其具体的硬件电路总
图七

四 软件按设计
4.1 程序流程图: 如图八所示。

8

主程序

开始

设置中断工作方式、触发方式、初始化

运行过程

N

是否有中断

Y 执行中断 中断结束,退出中断,返回

9

运行过程
EW:绿灯(45s),SN:红灯

是否到 45 秒 Y

N

EW:黄灯每秒闪一次,SN:红灯 Y
Count<5?

N EW:黄灯灭,EW:红灯

LED 显 示 缓 冲 区 DISP

N
是否到 0 秒

Y SN:绿灯(45),EW:红灯

是否到 45 秒 Y SN:黄灯亮,EW:红灯

N

Y
Count<5?

N SN:黄灯灭,EW:红灯

N
是否到 0 秒

Y
10

图八 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 程序代码

系统工作原理 系统上电或手动复位之后,系统先显示状态灯及 LED 数码管,将状态码值 送显 P1 口,将要显示的时间值的个位和十位分别送显 P0 口,在此同时用软件 方法计时 1 秒,到达 1s 就要将时间值减 1,刷新 LED 数码管。 时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次 状态的相应状态码值以及时间值, 当然,还要开启两个外部中断,其一为紧急情况处理中断,一旦信号有效, 即 K 键为低电平时进入中断服务子程序,东西南北路口的保持现有通行状态, 再按一下K键,中断结束返回。其二为通行时间调整中断,若按键有效,进入相 应的中断子程序,对时间进行调整,可延长或减少某一路段的通行时间,此后再 按键则中断结束返回。 4.4 其它硬件介绍及连接
显示数值 0 1 2 3 4 5 dp,g,f,e,d,c,b,a 11111100 01100000 11011010 11110010 01100110 10100110
11

驱动代码 FCH 60H DAH F2H 66H B6H

6 7 8 9

10101110 11100000 11111110 11110110

BEH E0H FEH F6H

0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H

五 总结
在学习单片机理论课时候就感觉到内容很多,知识点很杂,分繁琐。在老师的讲解下, 在通过自己的努力也更进一步了解了单片机的内部构造和工作原理,以及接外部电路的情 况。当然光有理论知识那只是“纸上谈兵” ,还需要实际动手去实践。真正把所学的用到日 常生活中,理论联系实际,做出实物模型。这次单片机实习,我选的是交通灯设计,通过这 次设计我感觉到要想做成功,必须花时间多准备,查阅大量资料,认证分析每一步每一个模 块要实现的功能,然后分步进行,最后正和一个整体。 通过这次实习,我们要对所做的事情有耐性,在编程的时候会有困难,也可能变得不 一定成功,所以要经过多次调试,分析,改正,反复去做。 在这次实习中,经历了多次失败的洗礼,我明白在以后学习和实践中,我要努力掌握 知识,多动手,多思考,以免在以后的学习工作中犯同样的错误。

经过两周的努力工作,终于在同组人的共同合作下完成了《简易智能交通灯 设计》单片机课程设计。虽然设计仿真调试的过程很艰辛,但结果还是好的,看 到仿真结果出来,看到交通灯的循环闪烁,心情顿时好起来,调试过程中的种种 怨言都没有了。 这次课程设计主要是软件仿真, 由于器材有限就没有弄硬件部分。 在软件的设计与调试过程中, 我觉得它主要考验你的思维逻辑能力及你对指令的 熟悉程度。可以说再整个软件设计过程中,我感觉又重新学了一次单片机,在学 习的过程中不仅学会了延时的两种方法,即软件延时和硬件延时,还掌握数码管

12

的两种显示方式(即动态显示与静态显示)及其如何选择。通过几次反复调试过 程,使得我对c语言有了更深刻的理解。 在整个课程设计过程我还学会熟练使用Keil、proteus等软件,对我在今后的 学习中会有很大的帮助。 同时,在这次课程设计中,老师和同组的马柱国,李臻同学给了我很大的帮 助,要特别感谢他们。

参考文献
[1] [2] [3] [4] [5] 叶挺秀.应用电子学[M].杭州:浙江大学出版社,1994 朱承高.电工及电子技术手册[M].北京:高等教育出版社,1990 阎石.数字电子技术基础(第三版)[M].北京:高等教育出版社,1989 周润景.PEOTEUS 在 MCS-51&ARM7 系统中的应用百例[M].北京:电子工业出版社,2006 李朝青.单片机原理及接口技术(第三版)[M].北京:北京航空航天大学出版社,2005

ORG 0000H LJMP START ORG 0003H LJMP INT ORG 0100H START: SETB IT0 MOV TMOD,#01H SETB EA SETB EX0 MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 MAIN: MOV 70H,#0 MOV 71H,#5 LCALL DISPLAY MOV P1, #21H;??1 MOV R3, #45 KK1: LCALL WAIT1 LCALL YUNSUAN LCALL DISPLAY DJNZ R3,KK1 MOV R3,#5 KK2: CLR P1.0 CPL P1.2 LCALL WAIT1 LCALL YUNSUAN LCALL DISPLAY
13

KK3:

KK4:

DJNZ R3, KK2 MOV P1, #12H;??3 MOV 70H,#0 MOV 71H,#5 LCALL DISPLAY MOV R3,#45 LCALL WAIT1 LCALL YUNSUAN LCALL DISPLAY DJNZ R3,KK3 MOV R3,#5 CLR P1.1 CPL P1.3 LCALL WAIT1 LCALL YUNSUAN LCALL DISPLAY DJNZ R3,KK4 LJMP MAIN MOV A,P1 PUSH ACC PUSH 70H PUSH 71H PUSH TH0 PUSH TL0

INT:

OK:

DEL: DEL1:

OK1:

MOV P1,#00H MOV 58H,#0FH CPL P1.0 CPL P1.2 CPL P1.4 CPL P1.1 CPL P1.3 CPL P1.5 LCALL DEL DJNZ 58H,OK LJMP OK1 MOV 43H,#0FFH MOV 44H,#0FFH DJNZ 44H,$ DJNZ 43H,DEL1 RET MOV A,R5
14

MOV P1,A POP TL0 POP TH0 POP 71H POP 70H POP ACC MOV P1,A RETI WAIT1: MOV R2,#10 KK: JNB TF0,KK CLR TF0 MOV TH0,#3CH MOV TL0,#0B0H DJNZ R2,KK RET

YUNSUAN: MOV A,70H JZ NEXT DEC 70H RET NEXT: MOV 70H,#9 DEC 71H RET DISPLAY: MOV A, 70H MOV DPTR,#TAB MOVC A,@A+DPTR MOV SBUF, A JNB TI,$ CLR TI MOV A, 71H MOV DPTR,#TAB MOVC A,@A+DPTR MOV SBUF, A JNB TI,$ CLR TI RET TAB: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H END

15


相关文章:
用51单片机控制交通灯汇编语言编写_图文.doc
用51单片机控制交通灯汇编语言编写 - 基于 51 单片机的交通灯控制系统设计
51单片机交通灯设计汇编实验.pdf
51单片机交通灯设计汇编实验_电子/电路_工程科技_专业资料。用51单片机汇编语言设计交通灯实验 实验四、中断实验报告一、实验内容参照实验电路,设计交通灯控制系统。...
基于51单片机汇编语言设计的交通灯.doc
基于51单片机汇编语言设计的交通灯 - 交通灯控制 摘要: 本设计以 AT89C51 单片机为主控模块,主要由按钮开关,数码管, 发光二极管组成, 利用汇编语言编写程序来...
单片机交通灯程序(汇编语言).doc
单片机交通灯程序(汇编语言) - 用P0口的八个引脚控制交通灯闪烁 P1.0
51单片机 交通灯 汇编语言编写.txt
51单片机 交通灯 汇编语言编写 - ;倒计时交通灯 ;四位共阳数码管 ;P0
基于51单片机的智能交通灯系统设计.doc
基于51 单片机的智能交通灯系统设计 1 设计思路 (1)分析目前交通路口的基本控制...(4)进行软件系统的设计,对于本系统,本人采用单片机汇编语言编写,对单片机内部 ...
基于51单片机汇编语言设计的交通灯毕业论文.doc
基于51单片机汇编语言设计的交通灯毕业论文 - 交通灯控制 摘要: 本设计以 AT89C51 单片机为主控模块,主要由按钮开关,数码管, 发光二极管组成, 利用汇编语言编写...
51单片机控制交通灯原理图及C语言程序.pdf
51单片机控制交通灯原理图及C语言程序_工学_高等教育_教育专区。单片机 AT STC C语言 C 89c51 89c52 设计 交通灯 仿真 毕业论文 程序设计 毕业设计 课题设计...
基于51单片机汇编语言设计的交通灯毕业设计论文.doc
基于51单片机汇编语言设计的交通灯毕业设计论文 - 交通灯控制 摘要: 本设计以 AT89C51 单片机为主控模块,主要由按钮开关,数码管, 发光二极管组成,利用汇编语言...
51单片机用C语言实现交通灯(红绿灯)源程序.doc
51单片机用C语言实现交通灯(红绿灯)源程序_工学_高等教育_教育专区。51单片机用C语言实现交通灯(红绿灯)源程序 51 单片机用 C 语言实现交通灯(红绿灯)源程序 ...
51单片机的交通灯设计(可用).doc
2.实现功能:使用 AT89C51 单片机控制 基于51 单片机的交通灯设计 2.AT89C51...与汇编相比,C 语言 在功能上、 结构性、 可读性、 可维护性上有明显的优势,...
基于51单片机的智能交通灯系统设计.doc
基于51单片机的智能交通灯系统设计_工学_高等教育_教育专区。内容包括:原理图,...(4)进行软件系统的设计,对于本系统,本人采用单片机汇编语言编写,对单片机 2 ...
C51单片机交通灯.._图文.doc
单片机应用技术课程设计 基于单片机交通灯控制系统设计 院( 系 )名称专业名称...汇编程序...14 3.2 Proteus 仿真...14 4 课程设计...
基于AT89C51单片机的交通灯控制系统设计_图文.ppt
本项目主要从单片机应用上来实现十字路口交通灯智能化的 管理,用来控制过往车辆的...? ? AT89C51单片机引脚。单片机汇编语言及程序设计。 上一页 返回 1.4 硬件...
基于51单片机做简易的交通灯_图文.doc
单片机开发中除必要的硬件外,同样 离不开软件,我们写的汇编语言源程序要变为 ...关键词:89C51 单片机;交通灯;自动控制;时间显示器; 一、设计目的 1、 通过...
交通灯单片机汇编语言.doc
交通灯单片机汇编语言 - 本文档是智能交通灯的基于51单片机汇编语言,可在pr
C语言单片机交通灯毕业设计_图文.doc
机器汇编是通过汇编软件将源程序变为机器码, 用于 MCS-51 单片机汇编软件 有...3、通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。每延 时一...
基于单片机的交通灯控制系统的设计与仿真_苏玉萍_图文.pdf
730030 )摘要: 以 AT89C51 单片机为核心器件设计了十字路口的交通灯控制系统 ...单片 根据流程图采用汇编语言编写交通控制灯的 程序, 通过 keil 软件进行编译...
51单片机汇编语言课设.doc
51单片机汇编语言课设_电子/电路_工程科技_专业资料...灯的显示控制 二、系统功能的描述设计一个广告灯的...A 0Cy 位以实现跑马灯 LCALL DELAY JB ACC.7,...
单片机数码管倒计时模拟交通灯汇编程序.doc
51 单片机数码管倒计时模拟交通灯汇编程序 LED 数码管为 4 位共阳数码管
更多相关标签: