1、目录 一引言 . 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 五 总结 .
2、 9 参考文献 . 9 附录一: . 9 附录二: . 10 基于 51 单片机的交通 灯控制系统设计 摘要 : 在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。交通灯控制系统由 80C51 单片机、键盘、 LED显示、交通灯延时组成。系统除具有基本交通灯功能外,还具有时间设置、 LED 信息显示功能,市交通实现有效控制 。 关键词: 交通灯,单片机,自动控制 一引言 当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这个技术在 19 世纪就已经出现了。 1858 年,在英国伦敦主要街头安装了以燃煤气为光源
3、的红 、蓝两色的机械般手势信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。 1868 年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。 1869 年 1 月 2 日,煤气灯爆炸,是警察受伤,遂被取消! 电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成, 1914 年始装于纽约市 5 号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。 信号灯的出现,使得交通得以有效的管理,对 于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。 1968 年
4、,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两一种标志禁止某一种转向。左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口! 二 概要设计 2.1 设计思路 利用单片机 实现交通灯的控制,该任务分以下几个方面: a 实现红、绿、黄灯的循环控制。 要实现此功能需要表示三种不同颜色的 LED 灯分别接在 P1 个管脚 ,用软件实现。 b
5、用数码管显示倒计时。可以利用动态显示或静态显示,串行并出或者并行并出实现。 C 实现 急通车 。这需要人工实现,编程时利用到中断才能带到目的,只要有按钮按下,那么四个方向全部显示红灯,禁止以诶车辆通行。当情况解除,让时间回到只能隔断处继续进行。 2.2 总体设计框图 见图一: 三 硬件 设计 3.1LED 循环电路设计 3.1.1 89cs51 单片机概述 MCS-51 单片机内部结构 : 89CS51 是 MCS-51 系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。 89CS51 单片机包含中央处理器、程序存储器( ROM)、数据存储器( RAM)、定时 /计数器、并行接口 、
6、串行接口和中断系统等极大单元及数据总线、地址总线和控制总线等三大总线,现在分别加以说明。 *中央处理器 : 中央处理器( CPU)是整个单片机的核心部件,是 8 位数 据宽度的处理器,能处理 8位二进制数据或代码, CPU 负责控制、指挥和调度整个单元系统的工作,完成运算和控制输入输出等操控。 *数据存储器( RAM) : 89CS51 内部有 128 个 8 位用户数及存储单元和 128 个寄存器单元,他们是统一编址的 ,专营寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的 RAM 只有 128 个,可存放读写的数据,运算的中间结果或用户自定义的字型表
7、。 *程序存储器( ROM) : 89CS51 共有 4096 个 8 位掩膜 ROM,用于存放用户程序,原始数据或表格。 *定时 /计数器( ROM) : 89CS51 有两个 16 位的可编程定时 /计数器,一时想定时或计数产生中断用于控制交通灯循环 最小系统 倒计时显示 强 通 车 控 制 图一 程序转向。 *并行输入输出( I/O) 口: 89CS51 共有 4 组 8 位 I/O 口( P0、 P1、 P2或 P3),用于对外数据传输。 *全双工串行号: 89CS51 内置一个全双行串行通信口,用于与其它设备间的串行数据传输,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
8、 *中断 系统: 89CS51 具备较完善的中断功能,有两个外中断、两个定时 /计数器中断和一个串行中断,客满著不同的控制要求,并具有 2 级优先级别选择。 *时钟电路: 89CS51内置最高频率高达 12Hz的时钟电路,用于产生整个单片机运行的脉冲时序,但 89CS51 单片继续外置震荡电容。 单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式, 即哈佛( Harvard)结构,另一种是采用通用计算机 广泛使用 的程序存储器与数据存储器合二为一的结构, 即普林斯顿( Princeton)结构。 MCS-51 系统的引脚说明: MCS-51系列单片机中的 8031、 8051及 8
9、751均采用 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
10、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 掉电其间,此脚可以接上没用电源,以保证单片
11、机内部 RAM 的数据不丢失。 在编程时, EA/Vpp 脚还需加上 21V 的编程电压。 3.1.2 LED 循环说明 东西、南北两干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯,指挥车辆和行人的安丘按通行。红灯禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西,南北两干道的公共停车时间。 25s 3s 2s 25s 3s 2s 东西通道 红灯亮 红灯亮 红灯亮 绿灯亮 绿灯闪 黄灯亮 南北通道 绿灯亮 绿灯闪 黄灯亮 红灯亮 红灯亮 红灯亮 上表说明东西路口哈珀能够灯亮,南北路口绿灯亮,同时开始 25s 倒计时。 25s 倒计时结束后开始 5
12、s 倒计时,南北铝扣绿灯闪烁,计时至最后 2s 时,南北路口黄灯亮。完成一次这样的循环要 30s。 30s 结束,南北路口红灯亮,东西路口绿灯亮,并重新 30s 倒计时,依次循环。 电路图如图三所示。 图三 3.2 倒计时显示电路 3.2.1 74LS164 芯片 74LS164 用于扩展并行输出口。用 89CS51 串行口外接 164 串入 -并出移位寄存器扩展 8位并行口。 8 位并行口的每位分别接到数码显示管的不同显示端。 74LS164 芯片管脚排列 如下图,管脚 1、 2 相连共同接单片机管脚 RXD, 8 管脚接单片机管脚 TXD, 9 管脚接高电平, 7管脚接地, 14 管脚接高
13、电平,其他管脚依次接数码显示管管脚。 图四 3.2.2 共阴极数码显示管 这里列出了共阴和共阳数码管的管脚平排列和内部结构。数码管 3、 8 管脚内部连在一起。如果是共阳极则将其接到高电平。如果是共阴极则将其接地。 为了数码显示管的安全这里用三个二极管与其串联来降压。 图五 3.2.3 倒计时电路 倒计时显示电路如图 六 。利用两个 74LS164 芯片并联后,其 1、 2 管脚至单片机 RXD管脚 8 管脚至单片机 TXD 管脚。然后其他管脚依次接至数码管个管脚。对于数码管其 3、 8管脚经过三个串联的二极管接地。 图六 3.2.4 急通车电路 为了实现此功能,利用单片机中断达到目的。利用一
14、个 手动按钮开关接至单片机外部中断 0,同时在软件设计时将其设为最高优先级。当有按键按下,四方全为红灯,同时将终端位置的 PSW、 ACC 进栈保护。当再按下按钮,将 PSW、 ACC 出栈,回到原来的位置继续执行,电路图如下图。 图七 四 软件按设计 4.1 程序流程图 : 如图 八 所示。 图八 4.2 LED 红绿灯显示 如图三所示,当 P1 端口输出高电平,即 P1 各端口 =1 时,根据发光二极管的单向导电性可知,这是发光二极管熄灭;当 P1 个端口输出低电平,即 P1 各端口 =0 时,发光二极管亮。我们可以使用 SETB 指令使 P1 各端口输出高电平,使用 CLR 指令时 P
15、各端口输出低电平。至于循环需要软件控制,程序见附录。 4.3 倒计时显示 此处采用 LED 静态显示方式,当显示器显示某个字符时,相应的段恒定的导通或截止,直到显示另个字符 为止。 89C51 的串行口 RXD和 TXD 为一个全双工串行通信口,但工作在方式 0 下可作同步移位寄存器,其数据由 RXD 端串行输出或输入; 而同步移位时钟由 TXD端串行输出,在同步时钟的作用下,实现由串行到并行的数据通信。在不需要使用串行通信的场合,利用串行口 加外围芯片 74LS164 就可构成一个或多个并行输入 输出口,用于串 并转换或显示器 LED 驱动。此利用后者。 4.4 急通车控制 将一按钮接到单片
16、机外部中断 0 端口。另一端接地,通过在程序里设置外部中断 0为最高优先级。当检测到有按钮按下时,产生中断,停止刚才的程序,转向中断执行。在此过程必须利用 PUSH、 POP 指令保护现场,这样当情况解除可以回到原来的地方继续执行。 4.5 程序代码 见附录二 五 总结 在学习单片机理论课时候就感觉到内容很多,知识点很杂,分繁琐。在老师的讲解下,在通过自己的努力 也更进一步了解了单片机的内部构造和工作原理,以及接外部电路的情况。当然光有理论知识那只是“纸上谈兵”,还需要实际动手去实践。真正把所学的用到日常生活中,理论联系实际,做出实物模型。这次单片机实习,我选的是交通灯设计,通过这次设计我感觉
17、到要想做成功,必须花时间多准备,查阅大量资料,认证分析每一步每一个模块要实现的功能,然后分步进行,最后正和一个整体。 通过这次实习,我 们要对所做的事情有耐性,在编程的时候会有困难,也可能变得不一定成功,所以要经过多次 调试,分析,改正,反复去做。 在这次实习中,经历了多次失败的洗礼,我明白在以后学习和实践中,我要努力掌握知识,多动手,多思考,以免在以后的学习工作中犯同样的错误。 参考文献 1 叶挺秀 .应用电子学 M.杭州:浙江大学出版社, 1994 2 朱承高 .电工及电子技术手册 M.北京:高等教育出版社, 1990 3 阎石 .数字电子技术基础(第三版) M.北京:高等教育出版社, 1
18、989 4 周润景 .PEOTEUS 在 MCS-51东西路口计时寄存器 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