为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于单片机的交通灯控制系统设计

2012-03-11 30页 doc 591KB 133阅读

用户头像

is_899910

暂无简介

举报
基于单片机的交通灯控制系统设计目 录 1摘 要 1关 键 词 1Abstract 1Keywords 2第一章 前言 21.1 交通灯控制系统的研究现状 21.2基于单片机的交通灯控制系统设计的意义 3第二章 交通灯控制系统的总体设计 32.1交通灯控制系统的规划 32.2 交通灯控制系统设计原理 52.3交通灯控制系统设计实现的功能 6第三章 交通灯控制系统的硬件设计 63.1 AT89S51单片机简介 63.1.1 AT89S51单片机的主要性能参数 63.1.2 AT89S51芯片内...
基于单片机的交通灯控制系统设计
目 录 1摘 要 1关 键 词 1Abstract 1Keywords 2第一章 前言 21.1 交通灯控制系统的研究现状 21.2基于单片机的交通灯控制系统设计的意义 3第二章 交通灯控制系统的总体设计 32.1交通灯控制系统的规划 32.2 交通灯控制系统设计原理 52.3交通灯控制系统设计实现的功能 6第三章 交通灯控制系统的硬件设计 63.1 AT89S51单片机简介 63.1.1 AT89S51单片机的主要性能参数 63.1.2 AT89S51芯片内部结构简介 83.1.3 主要引脚功能 103.2 控制器的原理框图 123.3 各控制模块 123.3.1、车检测模块 163.3.2 信号灯模块 173.3.3 时间显示模块 183.3.4 紧急转换模块 20第四章 智能交通灯控制系统的软件设计 204.1交通灯的软件设计流程图 204.1.1每秒钟的设定 204.1.2 1秒钟的 29参考文献 29致 谢 基于单片机的交通灯控制系统 摘 要:本设计是基于单片机的交通灯控制系统设计。主要内容有交通灯控制系统的总体设计,设计意义,设计原理和主要功能,各个功能模块的介绍,部分电路设计,软件系统的设计以及所选单片机的详细介绍。设计中用发光二极管模拟信号灯,紧急车的优先通过由外部中断技术来模拟,要求使用ATM89S51定时计数器0作为定时器,对通过时间进行倒计时,在LED上显示并进行递减,采用视频采集图样的方法来检测车流量,最后利用汇编语言设计完成交通灯控制系统。 关键词:ATM89S51单片机 交通灯控制系统 视频采集图样 车流量 The Design of Intelligent Traffic Light Control System Based Abstract:This design is based on SCM traffic control system design. The main contents of a traffic control system overall design scheme, design, design principles and the main meaning, function modules of introduction, circuit design, software design and the selected MCU detailed introduction. Design, using light-emitting diodes simulation of signal priority by emergency vehicles by external interruption technology to simulate ATM89S51 timing counter, require as timer, right through 2-0 in time for the countdown, LED display on video and descending, adopt the method to detect collected traffic pattern, finally, using the assembler language design completed traffic control system. Key words:ATM89S51SCM Traffic control system Video collection pattern traffic flow 第一章 前言 1.1 交通灯控制系统的研究现状 在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。 从采用计算机控制到现代化的电子定时监控,交通信号灯在科学化、自动化上不断地更新、发展和完善。但是,随着社会的不断进步,传统的交通灯的缺陷也日益出现,其中设计过于死板,达不到道路的最大通行效率是最明显的问,红绿灯交替变换时间过于程式化。 随着我国经济的高速发展,人们对各种交通车辆的需求量不断增大,城市的交通拥护问题日益严重,目前,大部分城市的十字路口的交通控制灯,通常的做法是:事先经过车辆流量的调查,利用传统的方法设计好红绿灯的延时,然而,实际上的车流量是不断变化的,有的路口在不同的时间段车流量的大小甚至有很大的差异,所以说,统计的方法己不能适应迅速发展的交通现状。 1.2基于单片机的交通灯控制系统设计的意义 国内的交通灯一般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯。加上一个倒计时的显示计时器来控制行车。对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点: 1.两车道的车辆轮流放行时间相同且固定, 在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;另一车道为副干道,车辆较少,放行时间应该短些。 2.没有考虑紧急车通过时,两车道应采取的措施,臂如,消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。 基于传统交通灯控制系统设计过于死板,红绿灯交替是间过于程式化的缺点,智能交通灯控制系统的设计就更显示出了它的研究意义,它能根据道路交通拥护,交叉路口经常出现拥堵的情况。利用单片机控制技术.提出了软件和硬件设计方案,能够实现道路的最大通行效率。 第二章 交通灯控制系统的总体设计 2.1交通灯控制系统的规划 我们将系统设计成可分离单独工作的主控制机与客户端的形式,但是和传统的C/S模式不一样的是,每个终端机可以脱离主控制机而独立工作。即使主控制机停止工作,或者由于某种原因不能正常工作,各终端机也可以照常稳定的工作。各个终端机负责管理路口的多个信号灯。为了方便我们称主控制机为主系统,各个终端机称为子系统。控制系统的总框图如图2-1示 ……… …… 图2-1 控制系统的总框图 2.2 交通灯控制系统设计原理 首先了解实际交通灯的变化情况和规律。假设一个十字路口如下图2-2,所以,为东南西北走向。初始状态0为东西南北都红灯亮。然后转状态1东西绿灯通车,南 图2-2 十字路口图 北红灯亮。过一段时间后,转状态2,东西绿灯灭,黄灯闪几下,南北还是红灯。再转状态3,南北绿灯通车,东西红灯亮。过一段时间后转状态4,南北绿灯灭,闪几个黄灯,东西还是为红灯亮,一段时间后,又循环至状态1。交通信号灯的状态表如下表,其中,1代表灯亮,0代表灯灭。 表2-1 交通信号灯的状态表 状态 北 西 南 东 绿黄红 绿黄红 绿黄红 绿黄红 0 001 001 001 001 1 001 100 001 100 2 001 010 001 010 3 100 001 100 001 4 010 001 010 001 2、对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,所以只要用两组就行了,因此,采用单片机内部的 I/O口上的P1口中的6个引脚即可来控制6个信号灯。 3、通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。每延 时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。 4、通过延时时间送显,可以在原有的交通信号灯系统的基础上,增添其倒计时 间的显示功能,实现其功能的扩展。 2.3交通灯控制系统设计实现的功能 交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题.在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道路禁止通行; 黄灯亮,表示该条道路上未过停车线的车辆停止通行,已过停车线的车辆继续通行; 绿灯亮,表示该条道路允许通行.交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化。 在传统交通灯控制系统的基础上,智能交通灯控制系统实现以下功能: 1) 设计一个十字路口的交通灯控制电路,要求南北方向和东西方向两个交叉路口的车辆交替运行,两个方向能根据车流量大小自动调节通行时间,车流量大,通行时间长,车流量小,通行时间短 2) 每次绿灯变红灯时,要求黄灯先亮5S,才能变换运行车辆. 3) 东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用数码管显示器进行显示(采用倒计时的方法)。 4) 同步设置人行横道红、绿灯指示。 5) 考虑到特殊车辆情况,设置紧急转换开头。 第三章 交通灯控制系统的硬件设计 3.1 AT89S51单片机简介 AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4k bytes的可系统编程的Flash只读程序存储器,器件采用高密度、非易失性存储技术生产,兼容8051指令系统及引脚。它集Flash程序存储器 既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。 3.1.1 AT89S51单片机的主要性能参数 与单片机产品兼容8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线 、三个16位定时器/计数器 八个中断源 、全双工UART串行通道低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。 3.1.2 AT89S51芯片内部结构简介 1、中央处理器: 中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 2、数据存储器(内部RAM): 数据存储器用于存放变化的数据。AT89S51中数据存储器的地址空间为256个RAM单元,但其中能作为数据存储器供用户使用的仅有前面128个,后128个被专用寄存器占用。 3、程序存储器(内部ROM): 程序存储器用于存放程序和固定不变的常数等。通常采用只读存储器,且其又多种类型,在89系列单片机中全部采用闪存。AT89S51内部配置了4KB闪存。 4、定时/计数器(ROM): 定时/计数器用于实现定时和计数功能。AT89S51共有2个16位定时/计数器。 5、并行输入输出(I/O)口: 8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。每个口都由1个锁存器和一个驱动器组成。它们主要用于实现与外部设备中数据的并行输入与输出,有些I/O口还有其他功能。 6、全双工串行口: A89S51内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。 7、时钟电路: 时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。 8、中断系统: 中断系统的作用主要是对外部或内部的终端请求进行管理与处理。AT89S51共有5个中断源,其中又2个外部中断源和3个内部中断源。 图3-1 AT89S51系列单片机的内部结构示意图 3.1.3 主要引脚功能 图3-2 AT89S51引脚图 ·VCC:电源电压 ·GND:地 ·P0口:P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。 ·P1口:Pl 是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,Pl接收低8位地址。 表3-1 具有第二功能的P1口引脚 端口引脚 第二功能: P1.5 MOSI(用于ISP编程) P1.6 MOSI(用于ISP编程) P1.7 MOSI(用于ISP编程) ·P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX@Ri 指令)时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。Flash编程或校验时,P2亦接收高位地址和其它控制信号。 ·P3 口:P3 口是一组带有内部上拉电阻的8 位双向I/0 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示: 表3=2 具有第二功能的P1口引脚 端口引脚 第二功能: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外中断0) P3.3 / INT1(外中断1) P3.4 T0(定时/计数器0外部输入) P3.5 T1(定时/计数器1外部输入) P3.6 / WR(外部数据存储器写选通) P3.7 / RD外部数据存储器读选通) P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。 ·RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。 ·ALE/ · · ·XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 3.2 控制器的原理框图 按任务和要求,可画出该控制器的原理框图, 为确保十字路口的交通安全,往往都采用交通灯自动控制系统来控制交通信号。其中红灯(R)亮,表示禁止通行;黄灯(Y)亮表示暂停;绿灯(G)亮表示允许通行。 1) 控制器的系统框图如图3-3所示。 图3-3 控制器的系统框图 图3-4 智能交通灯电路图 绿灯的放行时间与车辆通过数量不成正比。比如说20秒内每车道可以通过20辆车,40秒内每车道却可以通过45辆车。因为这有一个起步的问题,还有一个黄灯等待问题。也就是说,绿灯放行时间越长,单位时间通过车辆的数量就越多。 计算一下,每车道通行20秒内可以通过20辆车,一个红绿灯循环是40秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要50秒,即50秒内通行的车辆为40辆。通过一辆车的平均时间是1.25秒。如果每次车辆通行的时间改为40秒,40秒内每车道可以通过45辆,一个红绿灯循环是80秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要90秒,即90秒内通行的车辆为90辆。通过一辆车的平均时间只需1秒。显然在车辆拥挤的情况下绿灯的通行时间越长,单位时间内通行的车辆越多,可以有效缓解车辆拥堵问题。当然绿灯时间也不可能无限长,要考虑到让另一路口的等待时间不能过长。 人们总是希望在交通灯前等候的时间越短越好。所以本设计设定了绿灯通行时间的上限为40秒。在非拥挤时段绿灯的通行时间的下限为20秒,当交叉路口双方车辆较少时通行时间设为20秒,这样可以大大缩短车辆在红灯面前的等待时间。当交叉路口双方车辆较多时通行时间设为40秒。 3.3 各控制模块 交通灯系统由四部分组成:车检测模块,信号灯模块,时间显示模块,紧急转换模块。 3.3.1、车检测模块 用来判断各方向车辆状况,比如:20秒内可以通过的车辆为20辆,当20秒内南往北方向车辆通过车辆达不到20辆时,判断该方向为少车,当20秒内北往南方向车辆通过车辆也达不到20辆时,判断该方向也为少车,下一次通行仍为20秒,当20秒时间内南往北或北往南任意一个方向通过的车辆达20辆时证明该状态车辆较多,下一次该方向绿灯放行时间改为40秒,当40秒内通过的车辆数达45辆时车辆判断为拥挤,下一次绿灯放行时间改仍为40秒,当40秒车辆上通过车辆达不到45辆时,判断为少车,下次绿灯放行时间改为20秒, 依此类推。绿灯下限时间为20秒,上限值为40秒,初始时间为20秒。 图3-5车检测安装示意图 由于南往北,北往南时间显示相同,所以只要一个方向多车,下次时间就要加长东往西,西往东也一样,显示时间选择如表3-3. 表3-3 显示时间选择 车辆情况 本次该方向通行时间 下次该方向通行时间 本次该方向通行时间 本次该方向通行时间 南往北少车,北往南少车 20秒 20秒 40秒 20秒 南往北少车,北往南多车 20秒 40秒 40秒 南往北多车,北往南少车 20秒 40秒 40秒 40秒 南往北多车,北往南多车 20秒 40秒 40秒 40秒 东往西少车,西往东少车 20秒 20秒 40秒 20秒 东往西少车,西往东多车 20秒 40秒 40秒 40秒 东往西多车,西往东少车 20秒 40秒 40秒 40秒 东往西多车,西往东多车 20秒 40秒 40秒 40秒 图3-6车流量检测程序流程图 车检测方法的选择 1、传统车流量检测方法 1)空气管道检测 2)磁感应检测技术 3)红外检测技术 2、本设计采用基于视频图像的车流量检测 基本思想是在视频图片中的每条车道上设置一个固定区域作为虚拟的检测线,再对该区域内图像进行处理,完成对车辆信息的获取。本设计采用这种方法的优点: 1)能够提供高质量的图像信息,信息量大,可以高效、准确、可靠地完成道路交通的监视和控制工作。 2)安装视频摄像机方便、经济,现在国内许多城市道路已经安装了摄像机监控系统。 3)计算机视觉和数字图像处理技术发展迅速,满足了系统实时性、可靠性方面的要求。 图3-7基于视频图像的车流量检测工作原理 图3-8 基于视频图像的车流量检测图 视频图像的车流量检测的方法 背景差法、帧差法、边缘检测法、灰度比较法 背景差法将当前输入帧图像与背景图像进行差值计算,以分离出车辆。但背景图像需要实时刷新,影响因素较多。 帧差法则是对相邻两帧图像进行差值计算,但不能支除摄像头抖动引起的干扰,对静止或速度慢(两帧图像中车辆运动位移不明显)的车辆无法有效检测。 边缘检测法通过对帧图像进行边缘检测,以提取车辆的边缘特征进行识别。该方法可在不同的光线条件下进行检测,但对于车辆边缘不明显或存在道路隔离带等干扰物体时可能造成漏检和误检 灰度比较 车检测电路 3.3.2 信号灯模块 信号灯用来显示车辆通行状况,下面以一个十字路口为例,说明一个交通灯的四种状态见图3-9。每个路口的信号的的转换顺序为:绿——>黄——>红 绿灯表示允许通行,黄灯表示禁止通行,但已经驶过安全线的车辆可以继续通行,是绿灯过渡到红灯提示灯。红灯表示禁止通行。绿灯的最短时间为20秒,最长时间为40秒,红红最短时间为25秒,最长时间为45秒,黄灯时间为5秒。 图3-9 交通信号灯运行状态 图3-10 信号灯显示电路 3.3.3 时间显示模块 在交通信号灯的正上方安装一个可以显示绿灯通行时间,红灯等待时间的显示电路,采用数码管显示电路是一种很好的方法。由于东往西方向和西往东方向显示的时间相同,南往北方向和北往南方向显示的时间也相同,所以只需要考虑四位数码管显示电路,其中东西方向两位,南北方向两位,两位数码管可以时间的时间为0-99秒完全可以满足系统的要求,数码管连接方法如图3-11所示 图3-11 数码管连接方法 下面我用这种方法显示交通灯的时间,南北方向要显示20秒,东西方向要显示25秒,那么我们先给P0口送2的共阴极码即5BH,让第一位2要显示的位码GND段为低电平,其它三位的控制端都接高电平,那么第一位就显示2,其它三位不亮。让其显示1MS后再给P0口送0的共阴极码即3FH,让第二位要显示0的位码GND段为低电平,其它三位的控制端都接高电平,那么第二位就显示0,其它三位不亮。依此类推分别送完第一位2,第二位0,第三位2,第四位5,每一位点亮1MS,一个扫描周期为4MS,一秒时间就要扫描250次 3.3.4 紧急转换模块 一般情况下交通灯按照车流量大小合理分配通行时间,按一定规律变化,但考虑紧急车通行车况,设计紧急通行开关,下面简述单片机的中断原理。      ⅰ) Mcs—51的中断源 8051有5个中断源,它们是两个外中断INT0(P3.2)和INT1(P3.3)、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制,其中5个中断源的程序入口地址如表3-4所示: 表3-4中断源程序入口 中断源的服务程序入口地址 中断源 入口地址 外中断0 0003H 定时/计数器0 000BH 外中断1 0013H 定时/计数器0 001BH 串行口中断 0023H   ⅱ)交通灯中的中断处理流程 (1)现场保护和现场恢复: 有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。 (2)中断打开和中断关闭: 为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。 (3)中断服务程序: 有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。 (4) 中断返回: 执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显示时间也和中断前一样。 第四章 智能交通灯控制系统的软件设计 4.1交通灯的软件设计流程图 智能交通灯的软件设计流程图如图4-1所示: 图4-1 交通灯的软件设计流程图 4.1.1 每秒钟的设定 延时方法可以有两种一中是利用MCS-51内部定时器产生溢出中断来确定1秒的时间,另一种是采用软件延时的方法。 4.1.2 1秒钟的方法  我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。 智能交通灯控制程序 ORG 0000H A_BIT EQU 20H ;用于存放南北十位数 B_BIT EQU 21H ;用于存放南北十位数 C_BIT EQU 22H ;用于存放东西十位数 D_BIT EQU 23H ; 用于存放东西位数 TEMP1 EQU 24H ;用于存放第一二南北状态要显示的时间 TEMP2 EQU 25H ;用于存放第一二东西状态要显示的时间 TEMP3 EQU 26H ;用于存放第三第四南北状态要显示的时间 TEMP4 EQU 27H;用于存放第三第四南北状态要显示的时间 LJMP MAIN ORG 0003H ;外部中断0入口 LJMP INT0 ;跳转到外部0中断 ORG 0013H ;外部中断1入口 LJMP INT1 ;跳转到外部1中断 INT0: MOV A,P1 ;外部0中断 PUSH ACC MOV A,P2 ;中断保护 PUSH ACC MOV P1,#0FFH ;清除先前状态 MOV P2,#0FFH CLR P1.0 CLR P1.4 ;南北通行,东西禁止通行 CLR P1.6 CLR P2.3 JNB P3.2 ,$ ;判断是否还在中断状态 POP ACC MOV P2,A ;返回中断前状态 POP ACC MOV P1,ACC RETI ;中断返回 INT1:MOV A,P1 ;外部1中断 PUSH ACC ;中断保护 MOV A,P2 PUSH ACC MOV P1,#0FFH ;清除先前状态 MOV P2,#0FFH CLR P1.2 CLR P2.1 CLR P1.3 ;东西通行,南北禁止通行 CLR P1.5 JNB P3.3 ,$ ;判断是否还在中断状态 POP ACC MOV P2,A ;返回中断前状态 POP ACC MOV P1,A RETI ;中断返回 MAIN: ORG 0100H ;初始情况 MOV P1,#0FFH MOV P2,#0FFH ;灭所有灯 MOV TMOD,#55H ;计数方式方式1 MOV IE,#85H ;开中断 MOV TEMP1,#20 ; MOV TEMP2,#25 MOV TEMP3,#25 MOV TEMP4,#20 STAR: MOV P1,#0FFH MOV P2,#0FFH ;灭所有灯 MOV A,24H ;将显示时间送A CJNE A,#20,T40T ;判断时间,选初始值 T20T: ;南北通行要显示的时间为20的计数器初始值 CLR TF0 ;清TF0 CLR TF1 ;清TF1 MOV TH1 ,#0FFH ;送20秒时的初始值 MOV TL1 ,#0FCH ;在些设计20秒6辆为多车 MOV TH0 ,#0FFH MOV TL0 ,#0FCH LJMP TEMP20 ;跳到20秒 T40T: ;南北通行要显示的时间为40的计数器初始值 CLR TF0 ;清TF0 CLR TF1 ;清TF1 MOV TH1,#0FFH ;送40秒时的初始值 MOV TL1 ,#0F8H ;在些设计40秒8辆为多车 MOV TH0 ,#0FFH MOV TL0 ,#0F8H LJMP TEMP40 ;跳到40秒 TEMP20: ;TEMP1=20情况 SETB TR0 ;开始计数 SETB TR1 CLR P1.2 CLR P2.1 ;南北通行,东西禁止通行 CLR P1.3 CLR P1.5 MOV TEMP1,#20 ;南北要显示的时间, MOV TEMP2,#25 ;东西要显示的时间 STLOP: ACALL DISPLAY1 ;调用显示 DEC TEMP1 ;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT ;若显示时间不为0保持现在状态 LJMP STAR2 ;若显示时间为 0跳到第二状态 NEXT: LJMP STLOP STAR2: ;状态1 SETB P1.2 CLR P1.1 ;南北黄灯,东西禁止通行 SETB P1.3 CLR P1.4 MOV TEMP1,#05 ;南北要显示的时间, MOV TEMP2,#05 ;东西要显示的时间, STLOP2: ACALL DISPLAY1 ;调用显示 DEC TEMP1 ;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT2 ;若显示时间不为0保持现在状态 JB TF1 ,T40 ;判断南北是否多车 JB TF0 ,T40 ;判断北南是否多车 MOV TEMP1,#20 ;少车下次显示时间为20秒 LJMP STAR3 ;跳到状态3 T40: MOV TEMP1,#40 ; 多车下次显示时间为40秒 LJMP STAR3 ;若显示时间为 0跳到第三状态 NEXT2:LJMP STLOP2 TEMP40:;TEM=40 程序 SETB TR0 ; 开始计数 SETB TR1 CLR P1.2 CLR P2.1 ;南北通行,东西禁止通行 CLR P1.3 CLR P1.5 MOV TEMP1,#40 ;南北要显示的时间, MOV TEMP2,#45 ;东西要显示的时间 STLOP11: ACALL DISPLAY1 ;调用显示 DEC TEMP1 ;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT11 ;若显示时间不为0保持现在状态 LJMP STAR22 ;若显示时间为 0跳到第二状态 NEXT11: LJMP STLOP11 STAR22: ;状态1 SETB P1.2 CLR P1.1 ;南北黄灯,东西禁止通行 SETB P1.3 CLR P1.4 MOV TEMP1,#05 ;南北要显示的时间, MOV TEMP2,#05 ;东西要显示的时间, STLOP22: ACALL DISPLAY1 ;调用显示 DEC TEMP1 ;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT22 ;若显示时间不为0保持现在状态 JB TF1 ,T401 ; 判断是否多车 JB TF0 ,T401 MOV TEMP1,#20 ;少车下次显示时间为20秒 LJMP STAR3 T401:MOV TEMP1,#40 ;多车下次显示时间为40秒 LJMP STAR3 ;若显示时间为 0跳到第三状态 NEXT22:LJMP STLOP22 STAR3: MOV A,26H CJNE A,#25,T40T1 ;判断时间,选初始值 T20T1: ;南北通行要显示的时间为20的计数器初始值 CLR TF0 ; 清溢出位 CLR TF1 MOV TH1 ,#0FFH ; 给初值 MOV TL1 ,#0FCH MOV TH0 ,#0FFH MOV TL0 ,#0FCH LJMP TEMP320 T40T1: ;南北通行要显示的时间为40的计数器初始值 CLR TF0 ; CLR TF1 MOV TH1,#0FFH ;给初值 MOV TL1 ,#0F8H MOV TH0 ,#0FFH MOV TL0 ,#0F8H LJMP TEMP340 TEMP320:;状态三 SETB TR1 ;南北停止计数 SETB TR0 ;东西开始计数 SETB P1.1 ;东西通行,南北禁止通行 CLR P1.0 SETB P1.1 CLR P1.0 SETB P1.5 CLR P1.6 SETB P2.1 CLR P2.3 MOV TEMP3,#25 ;南北要显示的时间, MOV TEMP4,#20 ;东西要显示的时间, STLOP33: ACALL DISPLAY ;调用显示 DEC TEMP3 ;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT33 ;若显示时间不为0保持现在状态 LJMP STAR34 ;若显示时间为 0跳到第四状态 NEXT33:LJMP STLOP33 STAR34: ;状态四 SETB P2.3 CLR P2.2 SETB P1.6 ;东西黄灯,南北禁止通行 CLR P1.5 MOV TEMP3,#05 ;南北要显示的时间, MOV TEMP4,#05 ;东西要显示的时间, STLOP34: ACALL DISPLAY ;调用显示 DEC TEMP3 ;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT34 ;若显示时间不为0保持现在状态 JB TF1 ,T402 JB TF0 ,T402 MOV TEMP3,#25 LJMP STAR T402: MOV TEMP3,#45 LJMP STAR NEXT34: LJMP STLOP34 TEMP340 : SETB TR1 ;南北停止计数 SETB TR0 ;东西开始计数 SETB P1.1 ;东西通行,南北禁止通行 CLR P1.0 SETB P1.1 CLR P1.0 SETB P1.5 CLR P1.6 SETB P2.1 CLR P2.3 MOV TEMP3,#45 ;南北要显示的时间, MOV TEMP4,#40 ;东西要显示的时间, STLOP43: ACALL DISPLAY ;调用显示 DEC TEMP3 ;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT43 ;若显示时间不为0保持现在状态 LJMP STAR44 ;若显示时间为 0跳到第四状态 NEXT43:LJMP STLOP43 STAR44: ;状态四 SETB P2.3 CLR P2.2 SETB P1.6 ;东西黄灯,南北禁止通行 CLR P1.5 MOV TEMP3,#05 ;南北要显示的时间, MOV TEMP4,#05 ;东西要显示的时间, STLOP44: ACALL DISPLAY ;调用显示 DEC TEMP3 ;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP3 CJNE A,#0,NEXT44 ;若显示时间不为0保持现在状态 JB TF1 ,T403 JB TF0 ,T403 MOV TEMP3,#25 LJMP STAR T403: MOV TEMP3,#45 LJMP STAR NEXT44: LJMP STLOP44 ;显示 DISPLAY1: MOV A,TEMP1 ;将南北要显示的数存放到A MOV B,#10 ;B=10 DIV AB ;A除以B商存A,余数B MOV B_BIT,A ; 将A放到20H MOV A_BIT,B ;将B放到21H MOV A,TEMP2 ;将东西要显示的数存放到A MOV B,#10 ;B=10 DIV AB ;A除以B商存A,余数B MOV C_BIT,A ;将A放到22H MOV D_BIT,B ;将B放到23H MOV DPTR ,#NUMT ; MOV R0,#2 ;R0=2 DPL11: MOV R1,#250 ;R1=250 DPLOP1: MOV A,A_BIT ;将南北要显示的10位数送A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示南北10位数 CLR P2.7 ACALL D1MS;延时1MS SETB P2.7 ;灭南北10位数 MOV A,B_BIT ;将南北要显示的个位数送A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示南北个位数 CLR P2.6 ACALL D1MS ;延时1MS SETB P2.6 ;灭南北个位数 MOV A,C_BIT ;将东西要显示的10位数送A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示东西10位数 CLR P2.5 ACALL D1MS ;延时1MS SETB P2.5 ;灭东西10位数 MOV A,D_BIT ;将东西要显示的个位数送A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示东西东西位数 CLR P2.4 ACALL D1MS ;延时1MS SETB P2.4 ;灭东西个位数 DJNZ R1,DPLOP ;循环扫描 DJNZ R0,DPL1 RET ;等待1秒返回 ;显示 DISPLAY: MOV A,TEMP3 ;将南北要显示的数存放到A MOV B,#10 ;B=10 DIV AB ;A除以B商存A,余数B MOV B_BIT,A ; 将A放到20H MOV A_BIT,B ;将B放到21H MOV A,TEMP4 ;将东西要显示的数存放到A MOV B,#10 ;B=10 DIV AB ;A除以B商存A,余数B MOV C_BIT,A ;将A放到22H MOV D_BIT,B ;将B放到23H MOV DPTR ,#NUMT ; MOV R0,#2 ;R0=2 DPL1: MOV R1,#250 ;R1=250 DPLOP: MOV A,A_BIT ;将南北要显示的10位数送A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示南北10位数 CLR P2.7 ACALL D1MS;延时1MS SETB P2.7 ;灭南北10位数 MOV A,B_BIT ;将南北要显示的个位数送A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示南北个位数 CLR P2.6 ACALL D1MS ;延时1MS SETB P2.6 ;灭南北个位数 MOV A,C_BIT ;将东西要显示的10位数送A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示东西10位数 CLR P2.5 ACALL D1MS ;延时1MS SETB P2.5 ;灭东西10位数 MOV A,D_BIT ;将东西要显示的个位数送A MOVC A,@A+DPTR ;查表 MOV P0,A ;显示东西东西位数 CLR P2.4 ACALL D1MS ;延时1MS SETB P2.4 ;灭东西个位数 DJNZ R1,DPLOP ;循环扫描 DJNZ R0,DPL1 RET ;等待1秒返回 D1MS: MOV R7,#250 ;1MS延时程序 DJNZ R7,$ RET ;1到10对应电路图数码管表 NUMT: DB 7EH,48H,67H,6BH,59H DB 3BH,3FH,68H,7FH,7BH 参考文献: [1]陈大钦.电子技术基础实验[M].北京:高等教育出版社,2004. [2]陈梓城.电子技术实训[M].北京:机械工业出版社,2003. [3]吴黎明.单片机原理及应用技术[M].北京:科学出版社 2003. [4]李学海.标准80C51单片机基础教程[M].北京:北京航空航天大学出版社,2006. [5]刘乐善.微型计算机接口技术及应用[M].北京:华中科技大学出版社,2004. [6]陈炳权,曾庆六.EDA技术实用教程[M].北京:湘潭大学出版社,2010. [7]先锋工作室.单片机程序实例[M].北京:清华大学出版社,2002. [8]李伯成.基于MCS-51单片机的嵌入式系统的设计[M].北京:电子工业出版社,2004. [9]吴洪潭,肖艳萍,赵伟国.单片机原理及应用系统设计[M].北京:国防工业出版社,2005. [10]吴黎明,王桂棠,洪添胜等.单片机原理及应用技术[M].北京:科学出版社,2005. [11]韩克,柳秀山等.电子技能与EDA技术[M].广州:暨南大学出版社,2004. 致谢 本论文是在周蓓蓓老师的悉心指导下完成的。她从论文的选题到论文的审阅和定稿都付出了大量的心血,并且她在科学探索中所表现出的敏锐洞察力和严谨的治学态度以及一丝不苟的敬业精神,给我留下深刻印象,车帅特向导师致以深深的敬意和诚挚的感谢! 远程主系统计算机 路口子系统 路口子系统 路口子系统 A干道交通信号灯 B干道交通信号灯 B干道交通信号灯 A干道交通信号灯 红黄绿 绿黄红 红黄绿 绿黄红 绿黄红 红黄绿 红黄绿 红黄绿 红黄绿 绿黄红 绿黄红 红黄绿 绿黄红 绿黄红 红黄绿 红黄绿 人行道 人行道 人行道 人行道
/
本文档为【基于单片机的交通灯控制系统设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索