复制成功
  • 图案背景
  • 纯色背景

毕业设计--基于单片机的交通灯信号控制器设计

下载积分:1000

内容提示: 基于单片机的交通灯信号控制器设计 —— 程序编写 学生姓名 院系名称 专业名称 机电一体化 班 级 学 号 指导教师 完成时间 - 1 -Page 1 of 14 1 内容摘要 在日常生活中,交通信号灯的使用,使交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。交通灯控制系统由 80C51 单片机、键盘、LED 显示、交通灯延时组成。系统除具有基本交通灯功能外,还具有时间设置、LED 信息显示功能,使交通实现有效控制。 近年来随着科技的飞速发展,单片机...

文档格式:DOC| 浏览次数:29| 上传日期:2019-06-11 08:35:24| 文档星级:
基于单片机的交通灯信号控制器设计 —— 程序编写 学生姓名 院系名称 专业名称 机电一体化 班 级 学 号 指导教师 完成时间 - 1 -Page 1 of 14 1 内容摘要 在日常生活中,交通信号灯的使用,使交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。交通灯控制系统由 80C51 单片机、键盘、LED 显示、交通灯延时组成。系统除具有基本交通灯功能外,还具有时间设置、LED 信息显示功能,使交通实现有效控制。 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 本文就此设计了一种基于单片机的交通灯信号控制器的设计;最后利用 Proteus和 Keil 的单片机仿真技术对系统进行了仿真,论证了系统的正确性及稳定性。 在设计工作中我主要是负责程序的编写、修改及调试,通过对程序的编写,以实现电路控制的预定效果。其中包括了整个交通灯控制电路的程序编写,时间程序的编写以及计算。 关键词 : 单片机 交通灯 程序 LED - 2 -Page 2 of 14 2 基于单片机的交通灯信号控制器设计 学生姓名:蒋海波 指导教师:冷红英 1 引言 1.1 交通灯历史背景 当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在 19 世纪就已出现了。 1858 年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868 年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示"停止",绿色表示"注意"。1869 年 1 月 2 日,煤气灯爆炸,使警察受伤,遂被取消。 电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914 年始安装于纽约市 5 号大街的一座高塔上。红灯亮表示"停止",绿灯亮表示"通行"。 1918 年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。 信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968 年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。 1.2 交通灯的设计说明 东西、南北两干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯亮时为东西、南北两干道的公共停车时间。 东西道 红灯亮 绿灯闪 黄灯亮 绿灯亮 红灯亮 „„ 南北道 绿灯亮 绿灯闪 黄灯亮 红灯亮 绿灯亮 „„ 说明: (1)当东西方向为红灯,此道车辆禁止通行,东西道行人允许通过;南北道为绿灯,此道允许车辆通过,行人禁止通行。时间为 43 秒。 (2)绿灯闪烁 4 秒,警示车辆和行人黄、绿灯的状态即将切换。 (3)黄灯持续亮 3 秒,警示车辆和行人红、绿灯的状态即将切换。提示行人停止通过,车辆准备前行。 - 3 -Page 3 of 14 3 (4)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。时间为 43 秒。 (5)如上所说的时间和红、绿、黄出现的顺序依次循环出现,这样行人和车辆就能安全畅通的通行。 43s 4s 3s 43s 4s 3s 东西通道 红灯亮 红灯亮 红灯亮 绿灯亮 绿灯闪 黄灯亮 南北通道 绿灯亮 绿灯闪 黄灯亮 红灯亮 红灯亮 红灯亮 2 概要设计 2.1 设计思路 利用单片机实现交通灯的控制,该任务分以下几个方面: (1)实现红、绿、黄灯的循环控制。要实现此功能需要表示三种不同颜色的 LED灯分别接在 P1 个管脚,用软件实现。 (2)用数码管显示倒计时。可以利用动态显示或静态显示,串行并出或者并行并出实现。 2.2 总体设计框图 见图一: 3 硬件设计 3.1 89c51 单片机概述 MCS-51 单片机内部结构: 89CS51 是 MCS-51 系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。 交通灯循环 最小系统 倒计时显示 控制 图 1 总体设计框图 - 4 -Page 4 of 14 4 89CS51 单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等极大单元及数据总线、地址总线和控制总线等三大总线,现在分别加以说明。 中央处理器: 中央处理器(CPU)是整个单片机的核心部件,是 8 位数据宽度的处理器,能处理 8 位二进制数据或代码,CPU 负责控制、指挥和调度整个单元系统的工作,完成运算和控制输入输出等操控。 数据存储器(RAM): 89C51 内部有 128 个 8 位用户数及存储单元和 128 个寄存器单元,他们是统一编址的,专营寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的 RAM 只有 128 个,可存放读写的数据,运算的中间结果或用户自定义的字型表。 程序存储器(ROM): 89C51 共有 4096 个 8 位掩膜 ROM,用于存放用户程序,原始数据或表格。 定时/计数器(ROM): 89C51 有两个 16 位的可编程定时/计数器,一时想定时或计数产生中断用于控制程序转向。 并行输入输出(I/O)口: 89C51 共有 4 组 8 位 I/O 口(P0、P1、P2 或 P3),用于对外数据传输。 全双工串行号: 89C51 内置一个全双行串行通信口,用于与其它设备间的串行数据传输,该串行 口既可以用作异步通信收发器,也可以当同步移位器使用。 中断系统: 89C51 具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串 行中断,客满著不同的控制要求,并具有 2 级优先级别选择。 时钟电路: 89C51 内置最高频率高达 12Hz 的时钟电路,用于产生整个单片机运行的脉冲时序,但 89C51 单片继续外置震荡电容。 单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即 哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据 存储器合二为一的结构,即普林斯顿(Princeton)结构。 MCS-51 系统的引脚说明: MCS-51 系列单片机中的 8031、8051 及 8751 均采用 40Pin 封装的双列直接 DIP 结构,图二是它们的引脚配置,40 个引脚中,正电源和底线两根,外置石英振荡器的时钟线两根,4 组 8 位共 32 个 I/O 口,中断口线与 P3 口线复用 。 89C51 的抚慰方式可以自动复位,也可以是手动复位,见下图。除此之外,RESET/Vpd 还是一复用脚,Vcc 掉电其间,此脚可以接上有用电源,以保证单片机内部 RAM 的数据不丢失。 - 5 -Page 5 of 14 5 3.2. 共阴\阳极数码显示管 这里列出了共阴和共阳数码管的管脚平排列和内部结构。数码管 3、8 管脚内部连在一起。如果是共阳极则将其接到高电平。如果是共阴极则将其接地。为了数码显示管的安全这里用三个二极管与其串联来降压。 图 3 数码显示管及结构图 3.3 keil 简介 KEIL 是德国开发的一个 51 单片机开发软件平台,最开始只是一个支持 C 语言和汇编语言的编译器软件。后来随着开发人员的不断努力以及版本的不断升级,使它已经成为了一个重要的单片机开发平台,不过 KEIL 的界面并不是非常复杂,操作也不是非常困难,很多工程师的开发的优秀程序都是在 KEIL 的平台上编写出来的。单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为 CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少P1.0 P1.1 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 图 2 89C51 引脚图 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 - 6 -Page 6 of 14 6 使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51 单片机的汇编软件有早期的 A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil 软件是目前最流行开发 MCS-51 系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持 Keil 即可看出。Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行 Keil 软件需要 Pentium 或以上的 CPU,16MB 或更多 RAM、20M 以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP 等操作系统。掌握这一软件的使用对于使用 51 系列单片机的爱好者来说是十分必要的,如果你使用 C 语言编程,那么 Keil 几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用 C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 3.4 Proteus 软件简介 Proteus 软件是一种低投资的电子设计自动化软件,提供可仿真数字和模拟、交流和直流等数千种元器件和多达 30 多个元件库。Proteus 软件提供多种现实存在的虚拟仪器仪表。此外,Proteus 还提供图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗,尽可能减少仪器对测量结果的影响,Proteus软件提供丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。提供 Schematic Drawing、SPICE 仿真与 PCB 设计功能,同时可以仿真单片机和周边设备,可以仿真 51 系列、AVR、PIC 等常用的 MCU,并提供周边设备的仿真,例如373、led、示波器等。Proteus 提供了大量的元件库,有 RAM、ROM、键盘、马达、LED、LCD、AD/DA、部分 SPI 器件、部分 IIC 器件,编译方面支持 Keil 和 MPLAB 等编译器。 - 7 -Page 7 of 14 7 4 软件设计 4.1 程序流程图: 图 4 程序流程图 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 程序代码 见附录二 - 8 -Page 8 of 14 8 5 总结 在学习单片机理论课时候就感觉到内容很多,知识点很杂,很繁琐。在老师的讲解下,在通过自己的努力也更进一步了解了单片机的内部构造和工作原理,以及接外部电路的具体情况。当然,光有理论知识那只是“纸上谈兵”,还需要实际动手去实践。真正把所学的知识用到日常生活中,理论联系实际,做出实物模型。在这次毕业设计实践中,我选的是基于单片机的交通灯控制系统设计,通过这次设计我感觉到要想做成功一件事,必须花时间多准备,查阅大量资料,借鉴前人在此基础上取得的丰硕成果,认证分析每一步每一个模块要实现的功能,然后分步进行,最后整和为一个整体。 通过这次毕业设计实践,让我明白,要对所做的事情有耐性,有信心,多动手操作,譬如在编程的时候我遇到了许多困难,经过多次调试,分析,改正,反复尝试。最终实现了设计的预定效果。在这次过程中,经历了多次失败的洗礼,让我明白在以后学习和工作中,我要努力掌握知识,多动手,多思考,以免在以后的工作中犯同样的错误。 6 致谢 三个月的时间很快过去了,本篇论文也已初步完成。在这里首先要感谢学院能给予我们这次做毕业设计的机会,其次要特别的感谢我们的指导老师--xx 老师给予的悉心指导和不厌其烦的热情帮助。她以其渊博的知识、严谨的治学态度、开拓进取的精神和高度的责任心,给我们的学习、工作、生活以很大的影响,并将永远激励我们奋发向上。在此谨向老师表示最衷心的感谢、并致以崇高的敬意!向老师您说声辛苦了! 也要感谢同学们积极的配合和无私的奉献! 另外,也衷心感谢本文所引文献的作者和编者 - 9 -Page 9 of 14 9 附录一 图 5 控制电路图 - 10 -Page 10 of 14 10 图 6 控制电路演示图 图 7 控制电路演示图 附录二 ORG 0000H LJMP MAIN ORG 0030H 主程序 MAIN: SETB EA CPU 开中断 SETB EX0 允许外部中断 0 中断 SETB EX1 SETB IT0 SETB IT1 START: MOV R0, #43;南北道绿灯亮 43 秒 MOV 40H, #50;倒计数总共 50 秒 L1: LCALL DISP;跳到显示程序 MOV P1, #0F5H;南北道绿灯亮 LCALL DELAY1 ;延时 1S DJNZ R0, L1;判断是否亮了 43S MOV R0, #4;给绿灯闪 4S 做计数准备 - 11 -Page 11 of 14 11 L2: LCALL DISP;跳到显示程序 LCALL DELAY2 ;延时 0.5 秒 CPL P1.1;取反闪亮 LCALL DELAY2;延时 0.5S CPL P1.1 DJNZ R0, L2;判断是否闪了 4 秒 MOV R0, #3;给黄灯亮 3S 做计数准备 L3: LCALL DISP;跳到显示程序 LCALL DELAY1;延时 1S MOV P1, #0F3H;南北道黄灯亮 DJNZ R0, L3;判断是否黄灯亮了 3S MOV R0, #43;给东西道绿灯亮 43S 做计数准备 MOV 40H, #50 L4: LCALL DISP MOV P1, #0EEH;东西道绿灯亮 LCALL DELAY1;延时 1S DJNZ R0, L4;判断是否亮了 43S MOV R0, #4;为东西道绿灯闪做计数准备 L5: LCALL DISP LCALL DELAY2;延时 0.5S CPL P1.4;取反闪亮 LCALL DELAY2 CPL P1.4 DJNZ R0, L5;判断绿灯是否闪了 4S MOV R0, #3;为黄灯亮 3 秒做计数准备 L6: LCALL DISP LCALL DELAY1;延时 1S MOV P1, #0DEH;黄灯亮 DJNZ R0, L6;判断是否到 3S SJMP START DELAY1:MOV R1,#10 LOOP1: MOV R2,#200 延时 1s 子程序 LOOP: MOV R3,#250 DJNZ R3,$ DJNZ R2,LOOP DJNZ R1,LOOP1 RET DELAY2:MOV R4,#10 LOOP2: MOV R5,#100 LOOP3: MOV R6,#250 延时 0.5s 子程序 DJNZ R6,$ DJNZ R5,LOOP3 DJNZ R4,LOOP2 RET DISP: MOV A, 40H 时间显示程序 MOV B, #10 - 12 -Page 12 of 14 12 DIV AB ANL A, #0FH SWAP A ANL B, #0FH ADD A, B MOV P2, A DEC 40H RET END 子程序代码及说明 DELAY1 为延时 1S 程序 DELAY1:MOV R1,#10 LOOP1: MOV R2,#200 LOOP: MOV R3,#250 DJNZ R3,$ DJNZ R2,LOOP DJNZ R1,LOOP1 RET DELAY2 为延时 0.5S 程序 DELAY2:MOV R4,#10 LOOP2: MOV R5,#100 LOOP3: MOV R6,#250 DJNZ R6,$ DJNZ R5,LOOP3 DJNZ R4,LOOP2 RET DISP 为显示程序 DISP: MOV A, 40H MOV B, #10 DIV AB ANL A, #0FH SWAP A ANL B, #0FH ADD A, B MOV P2, A DEC 40H RET 此程序主要实现:南北道绿灯亮 43 秒,东西道红灯亮 南北道绿灯闪 4 秒, 东西道红灯亮 南北道黄灯亮 3 秒, 东西道红灯亮 接着南北道红灯亮 东西道绿灯亮 43 秒,南北道红灯亮 东西道绿灯闪 4 秒, 南北道红灯亮 东西道黄灯亮 3 秒, 南北道红灯亮 接着东西道红灯亮, 南北道绿灯亮 以以上循环使交通灯正常运行,保证车辆秩序、行人安全。 - 13 -Page 13 of 14 13 参考文献 1 李朝青主编 单片机原理及接口技术 北京航空航天大学出版社 2 李 维 祥 单片机原理及应用 天津大学出版社

关注我们

关注微信公众号

您选择了以下内容