交通灯设计-单片机(汇编) - 图文

更新时间:2024-05-27 21:43:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

太原理工大学现代科技学院

单片机原理与接口技术 课程设计

设计名称 交通灯控制器 专业班级 信息13-1班 学 号 2013100000 姓 名

指导教师 武 娟 萍

太原理工大学现代科技学院

课程设计任务书

专业班级 设计名称 信息13-1班 学生姓名 交通灯控制器 00 1.5周 课程名称 指导教师 “单片机原理与应用技术”课程设计 设计周数 武娟萍 设计 任务 主要 设计 参数 设计一个以单片机为核心的交通灯控制器 设计参数要求: (1)系统包括人行道直行、左转、右转以及基本交通灯功能。交叉道路上的车辆交替通行时间为25S,黄灯亮5S且每秒闪亮1次。 (2)系统除基本交通灯功能外,还具备倒计时、时间设置、紧迫环境处置以及根据具体环境手动节制等功能。 设计内容 设计要求 (1)通过查阅手册和有关文献资料,掌握独立分析和解决实际问题的能力。 (2)通过实际电路方案的设计分析比较、设计计算、元件选取、仿真、安装调试等环节,掌握实用电路的分析方法和工程设计方法。 (3)熟悉常用仪器设备的使用方法,掌握实验调试方法,提高动手能力。 主要参考 资 料 学生提交 1. 单片机原理与接口技术,李晓林等,电子工业出版社,2015。 课程设计说明书1份 归档文件 注:1.课程设计完成后,学生提交的归档文件应按照:封面—任务书—说明书—图纸的顺

序进行装订上交(大张图纸不必装订)

2.可根据实际内容需要续表,但应保持原格式不变。

指导教师签名: 日期:2016.06.30

目 录

交通灯控制器 ................................................................................................................................... 1

一、前言 ................................................................................................................................... 1

1.1选题背景 ..................................................................................................................... 1 1.2设计意义 ..................................................................................................................... 1 1.3设计内容 ..................................................................................................................... 1 二、 设计目的和要求 ............................................................................................................. 2

2.1课程设计目的 ............................................................................................................. 2 2.2课程设计要求 ............................................................................................................. 2 三、设计硬件电路及其相关介绍 ........................................................................................... 2

3.1AT89C51 ...................................................................................................................... 2 3.1.1AT89C51简介 .......................................................................................................... 2 3.1.2AT89C51管脚功能介绍 .......................................................................................... 3 3.1.3AT89C51复位电路 .................................................................................................. 4 3.1.4时钟电路 .................................................................................................................. 4 3.2 74LS47 ........................................................................................................................ 5 3.2.1 74LS47管脚图和真值表 ........................................................................................ 5 3.2.2引脚功能 ................................................................................................................ 6 3.2.3实用电路连接 .......................................................................................................... 7 3.3 74LS139 ...................................................................................................................... 7 3.3.1 74LS139管脚 .......................................................................................................... 7 3.3.2 74LS139真值表 ...................................................................................................... 8 3.4设计中用到的其他器件 ............................................................................................. 8 3.4.1RESPACK-7 .............................................................................................................. 8 3.4.2反向器7405 ............................................................................................................. 8 3.4.3TRAFFIC LIGHTS ................................................................................................... 8 3.4.4 7SEG-MPX2-CA ..................................................................................................... 8 3.4.5 BUTTON.................................................................................................................. 9 四、设计总体方案 ................................................................................................................... 9

4.1课程设计总体思路 ..................................................................................................... 9 4.1.1路口状态设置 ........................................................................................................ 10 4.1.2实现主程序状态功能的流程图 ............................................................................ 10 4.1.3主程序汇编 ............................................................................................................ 11 4.2调显示时间程序 ....................................................................................................... 14 4.2.1设计思想 ................................................................................................................ 14 4.2.2设计重要部分流程图 ............................................................................................ 15 4.2.3调显示汇编程序 .................................................................................................... 16 4.3各类情况处置程序 ................................................................................................... 17 4.3.1各类情况介绍 ........................................................................................................ 17 4.3.2调配各模式流程图 ................................................................................................ 18 4.2.3调配各模式程序 .................................................................................................... 19 4.2.4少车模式H1 .......................................................................................................... 19 4.2.5手动指挥模式H2 .................................................................................................. 20

4.2.6单南北通行模式H3 .............................................................................................. 20 4.2.7单南北向左转模式H4 .......................................................................................... 20 4.2.8单东西通行模式H5 .............................................................................................. 20 4.2.9单东西向左转模式H6 .......................................................................................... 20 4.2.10智能调控模式 ...................................................................................................... 20 4.2.11智能调控模式演示 .............................................................................................. 20 4.2.12内部延时程序 ...................................................................................................... 21 4.2.13显示调用程序 ...................................................................................................... 21 五、 protues硬件连线图 ...................................................................................................... 22 六、 protues仿真 .................................................................................................................. 23

6.1基本交通灯显示功能 ............................................................................................... 23 6.1.1上电启动-南北向通行 .......................................................................................... 23 6.1.2黄灯闪烁 ................................................................................................................ 23 6.1.3南北向左转通行 .................................................................................................... 23 6.1.5东西向左转通行 .................................................................................................... 24 6.2调时显示功能 ........................................................................................................... 24 6.2.1调时基本操作 ........................................................................................................ 24 6.2.2调时 ........................................................................................................................ 24 6.2.3调时后交通灯显示 ................................................................................................ 25 6.3各类处置情况 ........................................................................................................... 26 6.3.1紧急处置模式 ........................................................................................................ 26 6.3.2夜间模式 ................................................................................................................ 26 6.3.3交警指挥模式 ........................................................................................................ 26 6.3.4单独通行模式 ........................................................................................................ 27 6.3.5智能控制模式-南北向1级 .................................................................................. 27 6.3.6智能控制模式-东西向2级 .................................................................................. 28 七、 设计心得体会 ............................................................................................................... 29 附录1:汇编源程序 .............................................................................................................. 30 附录2:整体设计图 .............................................................................................................. 40

专业班级 信息13-1班 学号 2013100000 姓名 00 成绩

交通灯控制器

一、前言

1.1选题背景

19世纪初,在英国中部的约克城,红、绿装分别代表女性的不同身份。其中,着红装的女人表示我已结婚,而着绿装的女人则是未婚者。后来,英国伦敦议会大厦前经常发生马车轧人的事故,于是人们受到红绿装启发,1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德·哈特设计、制造。那时的交通灯只有红、绿两色,后来经改良后,再增加一盏黄色的灯,红灯表示停止,黄灯表示准备,绿灯则表示通行。中国最早的马路红绿灯,是于1928年出现在上海的英租界。

道路交通信号灯是交通安全产品中的一个类别,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。适用于十字、丁字等交叉路口,由道路交通信号控制机控制,指导车辆和行人安全有序地通行。

近年来,随着我国国民经济的快速发展,我国机动车辆发展迅速,而城镇道路建设由于历史等各种原因相对滞后,交通拥挤和堵塞现象时常出现。如何利用当今计算机和自动控制技术,有效地疏导交通,提高城镇交通路口的通行能力,减少交通事故是很值得研究的一个课题。

1.2设计意义

社会发展至今,全球人类将近有73亿人,中国人有13亿之多,在当今的城市,一块较小的地方容纳了大量的人、大量的汽车,那么如何有效的管理人们和汽车的出行方式才能合理的利用资源呢?在我国各大城市的交叉路口,随处可见交通信号灯,也就是说交通信号灯的使用量非常大,而且如何用一块尽可能的小的芯片来实现更全、更多的功能,具有很大的现实意义。总之,交通网络是城市的动脉,象征着一个城市的工业文明水平。交通关系着人们对于财产,安全和时间相关的利益。具有优良科学的交通控制技术对资源物流和人们出行都是十分有价值的,保证交通线路的畅通安全,才能保证出行舒畅,物流准时到位,甚至是生命通道的延伸。

1.3设计内容

基于整个交通控制系统的发展情况,本设计主要进行如下方面的研究:用智能,集成,且功能强大的单片机芯片AT89C51为控制中心,设计出一套十字路口的交通控制系统,以指挥十字路口的实时通行状态。

本设计的工作:

确定系统交通控制的总体设计,其中包括交通信号灯的亮灭基本控制,左转、右转、直行、人行道控制、交通灯倒计时,交通灯手动调节和设置时间、交通灯紧迫环境处置惩罚(包括110、119、120通过、凌晨时间黄灯闪烁等)、分时段控制调整交通信号灯的点亮时间以及具体环境手动节制等功能。

第 1 页 共 40 页

二、设计目的和要求

2.1课程设计目的

课程设计时单片机原理与接口技术课程集中实践环节的主要内容之一,可以使学生达到对单片机系统组成、编程、调试和绘图设计等基本技能训练。学生通过选作的课题,可以进一步熟悉单片机应用系统的开发过程,软、硬件设计的工作内容、方法、步骤。培养学生理论联系实际,提高分析问题、解决问题的能力和实际动手能力,以及正确应用单片机解决工业控制、工业检测等领域具体问题的能力。

2.2课程设计要求

(1)通过查阅手册和有关文献资料,掌握独立分析和解决实际问题的能力。

(2)通过实际电路方案的设计分析比较、设计计算、元件选取、仿真、安装调试等环节,掌握实用电路的分析方法和工程设计方法。

(3)熟悉常用仪器设备的使用方法,掌握实验调试方法,提高动手能力。

三、设计硬件电路及其相关介绍

3.1AT89C51

AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。 3.1.1AT89C51简介

AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示。

第 2 页 共 40 页

3.1.2AT89C51管脚功能介绍

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能

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口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

第 3 页 共 40 页

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 3.1.3AT89C51复位电路

复位实单片机的初始化操作。单片机系统再上电启动运行时,都需要先复位。其作用是使CPU和系统中其他部件都处于一个初始的状态,并从这个状态开始工作,因而,复位实一个很重要的操作方式。但单片机本身是不能自动复位的,必须配合相应的外部复位电路才能实现。

单片机的复位方式有上电自动复位和上电加按键手动复位两种。

图 1

图 2

(1)上电自动复位

上电自动复位实利用电容器的充电实现。AT89C51单片机的上电自动复位电路如图1所示,在时钟电路工作后,再RST端连续给出两个机器周期的高电平就可以完成复位操作。图中给出了复位电路参数。

(2)上电加按键手动复位

AT89C51单片机的上电加手动按键复位电路如图2所示,当复位按键按下后,复位端通过51Ω的小电阻与+5V电源接通,电容迅速放电,使RST引脚为高电平;当复位按键弹起后,+5V的电源通过2KΩ电阻对22UF电容重新充电,RST引脚端出现复位正脉冲。其持续时间取决于RC电路的时间常数。本设计中采用这种复位方式(protues的ISIS仿真中若复位无效,降低电阻试试)。 3.1.4时钟电路

单片机工作是在统一的时钟脉冲控制下一拍一拍地进行的,这个脉冲是由单片机控制器中的时序电路发出的。单片机的时序就是CPU再执行指令时所需控制信号的时间顺序。为了保证各部件间的同步工作,单片机内部电路应该再唯一的时钟信号下严格地按时序进行工

第 4 页 共 40 页

作。AT89C51单片机内部有一个高增益反向放大器,用于构成震荡器,但是要形成时钟脉冲,外部还需要附加电路。AT89C51的时序有以下两种。

图 3

图 4

(1)内部时钟方式

利用芯片内部的震荡器,然后再引脚XTAL1和XTAL2两端跨接晶体震荡器,就构成了稳定的自激振荡器,发出的脉冲直接送入内部时钟电路。外接晶体振荡器时,C4和C5的值选择再30PF左右,C4和C5对频率有微调作用,晶振或陶瓷谐振器的频率范围可在1.2~12MHZ之间选择,为减小寄生电容,更好的保证震荡器稳定、可靠的工作,震荡器和电容应尽可能安装得与单片机引脚XTAL1和XTAL2靠近,单片机内部时钟电路如图3所示(本次设计中采用内部时钟方式)。

(2)外部时钟方式

此方式是将外部震荡脉冲接入XTAL1或XTAL2.HMOS和CHMOS单片机接入方式不同,单片机HMOS型外部时钟电路如图4所示。

3.2 74LS47

74LS47是BCD-7段数码管译码器驱动器,74LS47的功能用于将BCD码转化成数码块中的数字,通过它来进行解码,可以直接把数字转换为数码管的数字,从而简化了程序,节约了单片机的IO开销。因此是一个非常好的芯片! 3.2.1 74LS47管脚图和真值表

74LS47是BCD-7段数码管译码器/驱动器, 74LS47的功能用于将BCD码转化成数码块中的数字,通过它解码, 可以直接把数字转换为数码管的显示数字。 74LS47为低电平作用.

管脚图如图5所示:

第 5 页 共 40 页

图 5

真值表如下: LT 0 X 1 1 1 1 1 1 1 1 1 1 1 RBI X X 0 0 X X X X X X X X X BI/RBO 1 0 0 0 1 1 1 1 1 1 1 1 1 D C B A XXXX XXXX 0000 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 abcdefg 0000000 1111111 1111111 0000001 1001111 0010010 0000110 1001100 0100100 1100000 0001111 0000000 0001100 说明 试灯 熄灭 灭零 0 1 2 3 4 5 6 7 8 9 3.2.2引脚功能

(1)LT:试灯输入,是为了检查数码管各段是否能正常发光而设置的。当 LT=0时,无论输入A3 ,A2 ,A1 ,A0为何种状态,译码器输出均为低电平,也就是七段将全亮,若驱动的数码管正常,是显示8。

(2)BI:灭灯输入,是为控制多位数码显示的灭灯所设置的。当BI(—)=0时,不论LT

和输入A3 ,A2 ,A1,A0为何种状态,译码器输出均为高电平,使共阳极数码管熄灭。 (3)RBI:灭零输入,它是为使不希望显示的0熄灭而设定的。当对每一位A3= A2 =A1 =A0=0时,本应显示0,但是在RBI=0作用下,使译码器输出全为高电平。其结果和加入灭灯信号的结果一样,将0熄灭。

(3)RBO:灭零输出,它和灭灯输入BI(—)共用一端,两者配合使用,可以实现多位数码显示的灭零控制。

第 6 页 共 40 页

3.2.3实用电路连接

图 6

如图6所示为74LS47的实用电路,本设计中也采用类似设计,通过51单片机的任何一个输出管脚,提供四根线连入译码端,三个使能控制端均接电源或者如上图所示接法,再通过输出一根位选信息来选中相应的数码管,通过51软件输出就可实现数码管的正常显示。 也可采用动态扫描的方法,由四根管脚控制2个LED灯的显示,通过2个管脚实现位选信息。

3.3 74LS139

74LS139 为两个2线-4 线译码器,共有 54/74S139和 54/74LS139 两种线路结构型式

3.3.1 74LS139管脚

A、B 译码地址输入端G1、G2 选通端(低电平有效) B、Y0~Y3 译码输出端(低电平有效) 管脚图和实物图如图7所示

图 7

第 7 页 共 40 页

3.3.2 74LS139真值表 输入 G 1 0 0 0 0 B X 0 0 1 1 A X 0 1 0 1 输出 Y0 1 0 1 1 1 Y1 1 1 0 1 1 Y2 1 1 1 0 1 Y3 1 1 1 1 0 本设计中是为了你补AT89C51输出管脚不够的问题,通过74LS139实现管脚的功能复 3.4设计中用到的其他器件

3.4.1RESPACK-7

RESPACK-7是一种七脚电阻排。其中一个引脚是公共端,其余六个引脚对公共引脚的电阻值是相等的。这种电阻排大都用来做集成电路的上拉电阻,占用面积小,使用方便,而且一致性好。Protues中器件图如图8所示:

图 8

3.4.2反向器7405

7405具有反相器的功能,将输入1转变为0或者将输入为1转变为0,设计中引入7405的目的是为了解决0与1的转换问题。Protues中器件如图9所示。 3.4.3TRAFFIC LIGHTS

此元件模仿的实现实中的交通灯,具有三个管脚,分别控制红、黄、绿三个颜色的亮灭,高电平有效,设计中采用它来代表交通灯。Protues中器件如图10所示

图 9

图 10

3.4.4 7SEG-MPX2-CA

7SEG-MPX2-CA是共阳极数码管,此元件是集成两个LED显示管的元件,设计中用它来实现倒计时,通过管脚1和2进行位选,ABCDEFG为显示的7段,DP为小数点显示,设计中没有用到。Protues中器件如图11所示。

第 8 页 共 40 页

图 11

图 12

3.4.5 BUTTON

BUTTON为protues中的仿真模拟按钮,具有按钮和开关的功能,当鼠标单击悬帽时,相当于按钮,点一下则按下去又弹起,当点击右侧的红色圈圈时,按钮按下不弹起。使用起来很方便。Protues中器件如图12所示。

四、设计总体方案

4.1课程设计总体思路

交通灯分红、黄、绿三种,十字路口右转一般与直行同步,本设计中也同步,人行横道的交通灯控制与南北向、东西向直行方向相同,本设计中直行交通灯包含了人行横道控制的功能,所以设计中不再画出人行横道。见图13

西

图 13

第 9 页 共 40 页

上图中东西向跟南北向相同,均由3个交通信号和一个双显示数码构成,其中一个信号灯的功能是实现南北向的左转弯控制显示器(如南面紧挨灯的一个),另外两个一个是控制南北向直行通过的功能(附带人行横道控制的功能),再一个与直通行信号灯同步,为右转控制信号灯。显示管为集成双显示,通过1、2进行位选输出倒计时信号的十位和个位。 4.1.1路口状态设置

设计各个路口状态如下:

状态 时间 南北 南北左转 东西 东西左转 状态 时间 南北 南北左转 东西 东西左转 7 25S 红 红 绿 红 8 3S 红 红 黄 红 9 2S 红 红 红 红 10 15S 红 红 红 绿 11 3S 红 红 红 黄 12 2S 红 红 红 红 1 25S 绿 红 红 红 2 3S 黄 红 红 红 3 2S 红 红 红 红 4 15S 红 绿 红 红 5 3S 红 黄 红 红 6 2S 红 红 红 红

说明:

1.考虑实际情况,将5S的黄灯闪烁,改为3S黄灯闪烁,2秒红灯。

2.状态1-3:当南北道为绿灯,此道车辆、行人通行。时间为25秒;东西方向为红灯,此道车辆行人禁止通行。当南北方向为黄灯闪烁3秒,警示车辆和行人红、绿灯的状态即将切换。当南北方向为红灯,其他方向也实红灯,东南西北车辆行人不得通过。

3.状态4-6:当南北方向为红灯,南北左转为绿灯,车辆可以左转弯,行人禁止通行;东西方向为红灯,此道车辆行人禁止通行。当南北左转方向为黄灯闪烁3秒,警示车辆绿灯状态即将切换。当南北左转为红灯,其他方向也实红灯,东南西北车辆行人不得通过。

4.状态7-9:当东西道为绿灯,此道车辆、行人通行。时间为25秒;南北方向为红灯,此道车辆行人禁止通行。当东西方向为黄灯闪烁3秒,警示车辆和行人红、绿灯的状态即将切换。当东西方向为红灯,其他方向也实红灯,东南西北车辆行人不得通过。

5.状态10-11:当东西方向为红灯,东西左转为绿灯,车辆可以左转弯,行人禁止通行;南北方向为红灯,此道车辆行人禁止通行。当东西左转方向为黄灯闪烁3秒,警示车辆绿灯状态即将切换。当东西左转为红灯,其他方向也实红灯,东南西北车辆行人不得通过。

6.表内时间可根据实际情况改变初值。 4.1.2实现主程序状态功能的流程图

1 写入南北向、东西 计算东西向红灯时间 开始 向、两路左转时间

第 10 页 共 40 页

开始执行1-3状态,倒计时显示,每三个状态的执行过程:

开 始

南北方向允许通行,其他禁止 开始执行第4-6状态,倒计时显示,南北左转允许通行,其他禁止 第一种状态绿灯亮,调用显示程序显示并且做1S计时,循环变量减一直至为0 计算南北向红灯时间 第二种状态给循环变量赋值3,实现黄灯闪烁功能,1S闪烁一次,并且循环变量减一直至为0 开始执行第7~9状态,倒计时显示,东西方向允许通行,其他禁止 开始执行第10~12状态,倒计时显示,东西左转允许通行,其他禁止 第三中状态给循环变量赋值2, 实现全路段红灯,实现缓存功能,显示1S计时并循环变量减一直至为0 结 束

执行结束,则返 回1重新开始 结 束 计算红灯的时间公式为:红灯时间=反方向绿灯时间+反向左转绿灯时间+2x黄灯等待状态 4.1.3主程序汇编 主程序程序为:

START: MOV 30H,40H ;南北绿灯直通行时间 MOV 31H,41H ;南北向左转绿灯时间 MOV 32H,42H ;东西绿灯直通行时间 MOV 33H,43H ;东西左转向绿灯时间 MOV R0,30H ;南北向绿灯时间写入 MOV A,30H ;计算东西向红灯时间 ADD A,#10 ;两次黄灯等待时间共10S ADD A,31H ;加上南北左转向绿灯时间 MOV R2,A ;东西方向红灯写入 MOV R7,#25 ;延时使用 MOV R6,#15 ;黄灯闪烁使用 MOV R5,#10 ;黄灯闪烁使用 LOOP1: SETB P3.4 ;P3.4置1,第二功能要求

第 11 页 共 40 页

MOV P1,#0FFH ;交通灯全灭 SETB P3.0 ;P3.0置1以便检查输入 MOV P1,#01H ;南北绿灯亮;其余红灯亮 LCALL XIANSHI ;调用显示程序 DJNZ R7,LOOP1 ;1S显示结束 MOV R7,#25 ;重新赋值循环变量 DEC R2 ;东西方向时间减一 DJNZ R0,LOOP1 ;南北时间减一,并做循环变量 MOV R0,#3 ;南北方向黄灯显示 LOOP2: MOV P1,#0FFH ;交通灯灭 MOV P1,#03H ;东西向红灯,南北直通灭 LOOP11: CLR P1.0 ;南北黄灯灭 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R5,LOOP11 ;南北黄灯灭400ms LOOP22: SETB P1.0 ;南北黄灯亮 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R6,LOOP22 ; 南北黄灯亮600ms DEC R2 ;东西向时间减一 MOV R5,#10 ;重置循环变量 MOV R6,#15 DJNZ R0,LOOP2 ;南北向黄灯时间减一,并做循环变量 MOV R0,#2 ;全部红灯2S LOOP5: MOV P1,#00H ;四路红灯亮起 LCALL XIANSHI ;调用显示程序第二作用延时40ms DJNZ R7,LOOP5 ;1s显示 MOV R7,#25 ;重新赋值循环变量 DEC R2 ;东西方向时间减一 DJNZ R0,LOOP5 ;南北方向时间减一并且做循环变量 MOV R0,31H ;南北左转时间写入 LOOP3: MOV P1,#0FFH ;交通灯灭 MOV P1,#04H ;南北向左转向绿灯亮,其他红灯 LCALL XIANSHI ;调用显示第二作用延时40ms DJNZ R7,LOOP3 ;1S显示 MOV R7,#25 ;秒循环并重新赋值 DEC R2 ;东西时间减一 DJNZ R0,LOOP3 ;南北时间减一并循环 MOV R0,#3 ;黄灯3s LOOP4: MOV P1,#0FFH ;交通灯灭 MOV P1,#0CH ;东西向红灯,南北左转灭 LOOP12: CLR P1.2 ;南北左转黄灯灭 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R5,LOOP12 ;南北左转黄灯灭400ms LOOP23: SETB P1.2 ;南北左转黄灯亮 LCALL XIANSHI ;调用显示程序相当于延时40ms

第 12 页 共 40 页

DJNZ R6,LOOP23 ; 南北左转黄灯亮600ms DEC R2 ;东西向时间减一 MOV R5,#10 ;重置循环变量 MOV R6,#15 DJNZ R0,LOOP4 ;南北向黄灯时间减一,并做循环变量 MOV R0,#2 ;全部红灯2S LOOP6: MOV P1,#00H ;四路红灯亮起 LCALL XIANSHI ;调用显示程序 DJNZ R7,LOOP6 ;1s显示 MOV R7,#25 ;重新赋值循环变量 DEC R2 ;东西方向时间减一 DJNZ R0,LOOP6 ;南北方向时间减一并且做循环变量 MOV R2,32H ;东西向绿灯时间写入 MOV A,32H ;南北向红灯时间计算 ADD A,#10 ;东西向两次黄灯等待时间加入 ADD A,33H ;东西向左转时间加入 MOV R0,A ;南北红灯时间写入 LOP1: SETB P3.4 ;P3.4置1,第二功能要求 MOV P1,#0FFH ;交通灯全灭 SETB P3.0 ;P3.0置1以便检查输入 MOV P1,#10H ;东西绿灯亮;其余红灯亮 LCALL XIANSHI ;调用显示程序 DJNZ R7,LOP1 ;1S显示结束 MOV R7,#25 ;重新赋值循环变量 DEC R0 ;南北方向时间减一 DJNZ R2,LOP1 ;东西方向时间减一,并做循环变量 MOV R2,#3 ;东西方向黄灯显示 LOP2: MOV P1,#0FFH ;交通灯灭 MOV P1,#30H ;南北向红灯,东西直通向灭 LOOP13: CLR P1.4 ;东西黄灯灭 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R5,LOOP13 ;东西黄灯灭400ms LOOP24: SETB P1.4 ;东西黄灯亮 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R6,LOOP24 ; 东西黄灯亮600ms DEC R0 ;南北向时间减一 MOV R5,#10 ;重置循环变量 MOV R6,#15 DJNZ R2,LOP2 ;东西向黄灯时间减一,并做循环变量 MOV R2,#2 ;全部红灯2S LOP5: MOV P1,#00H ;四路红灯亮起 LCALL XIANSHI ;调用显示程序 DJNZ R7,LOP5 ;1s显示 MOV R7,#25 ;重新赋值循环变量

第 13 页 共 40 页

DEC R0 ;南北方向时间减一 DJNZ R2,LOP5 ;东西方向时间减一并且做循环变量 MOV R2,33H ;东西左转绿灯时间写入 LOP3: MOV P1,#0FFH ;交通灯灭 MOV P1,#40H ;东西向左转向绿灯亮,其他红灯 LCALL XIANSHI ;调用显示 DJNZ R7,LOP3 ;延时1s MOV R7,#25 ;秒循环并重新赋值 DEC R0 ;南北时间减一 DJNZ R2,LOP3 ;东西时间减一并循环 MOV R2,#3 ;黄灯3s LOP4: MOV P1,#0FFH ;交通灯灭 MOV P1,#0C0H ;南北向红灯,东西左转灭 LOOP14: CLR P1.6 ;东西左转黄灯灭 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R5,LOOP14 ;东西左转黄灯灭400ms LOOP25: SETB P1.6 ;东西左转黄灯亮 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R6,LOOP25 ; 东西左转黄灯亮600ms DEC R0 ;南北向时间减一 MOV R5,#10 ;重置循环变量 MOV R6,#15 DJNZ R2,LOP4 ;南北向黄灯时间减一,并做循环变量 MOV R2,#2 ;全部红灯2S LOP6: MOV P1,#00H ;四路红灯亮起 LCALL XIANSHI ;调用显示程序 DJNZ R7,LOP6 ;1s显示 MOV R7,#25 ;重新赋值循环变量 DEC R0 ;东西方向时间减一 DJNZ R2,LOP6 ;南北方向时间减一并且做循环变量 LJMP START ;一轮循环结束,返回再次循环

4.2调显示时间程序

在交通灯控制系统中,除了状态灯之外,最重要的就是时间显示,交通是否顺畅,很大程度上取决于红绿灯通行的时间,所以调试程序尤其重要。 4.2.1设计思想

设计四个有效控制位选择控制南北路绿灯时间、南北路左转绿灯时间、东西路绿灯时间、东西路左转绿灯时间,这里选取P0.6,P0.7,P2.6,P2.7分别控制,当然也可集成由一路输入控制,通过计数判断当前状态要修改哪一路信息,为了检测方便和调试程序,本设计分开设置。检测到被调控的显示时间后转入执行相应的调整程序,调整程序中根据是否按下加(P3.6)减(P3.7)执行相应的调整程序,调整完毕后存入新的存储空间(设计中为40H~43H),通过在主程序执行完一次之后在start程序初始赋值(设计中40H~43H重新赋值给30H~33H),调时程序结束后,交通灯不会立刻发生变化,在下一次从主程序开始执行才会发生变化,并且调时结束后交通灯一直按照最新调整结果进行倒计时。在设计中还通过调整和显示程序一共实现延时250ms以便于对计数值修改每秒增量为4,同时也达到了消抖的功能。

第 14 页 共 40 页

4.2.2设计重要部分流程图 调用显示延时200ms 调整结束? 开 始 Y N N N N N 东西左转南北左转南北有效? 东西有效? 有效? 有效? Y Y Y Y T2 调整T5 调整调整T4 调整T3 子程序调控图 开始 程序返回 写入调整初值 调用显示并延时40ms N N 减有效? 加有效? 变量加1 变量减1 Y Y 赋值最大 赋值最大超界限? 超界限? 调整值 调整值 N N 保存结果

结束 第 15 页 共 40 页

4.2.3调显示汇编程序

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;调整时间服务程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;注意:调整后的时间在第二轮计时才会显示,第一轮仍按照原定时间; TZ1:MOV R1,#00 ;调整寄存器赋初值 MOV R3,#00

TZ11: LCALL XIANSHI1 ;调用显示程序 LCALL XIANSHI1 ;连同下面调时共延时5X40ms LCALL XIANSHI1 LCALL XIANSHI1 JNB P3.0,FANHUI1 ;P3.0为调整结束按钮 JB P0.6,T2 ;若调整南北直通时间则跳转 JB P0.7,T3 ;若调整南北左转时间则跳转 JB P2.6,T4 ;若调整东西直通时间则跳转 JB P2.7,T5 ;若调整东西左转时间则跳转 LJMP TZ11 ;均无效时转回延时继续检测 T2: MOV R1,40H ;南北直通调整时间写入 LCALL XIANSHI1 ;调用显示并且延时40ms JB P3.6,T11 ;若调整+无效则跳转 INC R1 ;南北直通时间加1 CJNE R1,#60,T21 ;南北直通最多限制时间60S MOV R1,#00H ;若R1>=60则赋值为0重新加载 AJMP T21 ;南北向加法调整时间结束,转入赋值 T11: JB P3.7,T21 ;调整-无效则跳转 DEC R1 ;南北向直通时间减1 CJNE R1,#00H,T21 ;最大调整时间60S MOV R1,#60 ;若超出则重新赋值 T21: MOV 40H,R1 ;调整后的时间写入 LJMP TZ11 ;南北向调整完毕返回重新检测 FANHUI1:LJMP FANHUI ;因为JNB跳转范围限制,在此补加一次跳转 T3: MOV R1,41H ;南北左转调整时间写入 LCALL XIANSHI1 ;调用显示并且延时40ms JB P3.6,T12 ;若调整+无效则跳转 INC R1 ;南北左转时间加1 CJNE R1,#30,T22 ;南北左转最多限制时间30S MOV R1,#00H ;若R1>=30则赋值为0重新加载 AJMP T22 ;南北向左转加法调整时间结束,转入赋值 T12: JB P3.7,T22 ;调整-无效则跳转 DEC R1 ;南北左转向时间减1 CJNE R1,#00H,T22 ;最大调整时间30S MOV R1,#30 ;若超出则重新赋值 T22: MOV 41H,R1 ;调整后的时间写入 LJMP TZ11 ;南北左转向调整完毕返回重新检测 T4: MOV R3,42H ;东西向直通时间写入 LCALL XIANSHI1 ;调用显示程序第二功能延时40ms

第 16 页 共 40 页

JB P3.6,T13 ;若加法输入无效则跳转 INC R3 ;东西直通时间加1 CJNE R3,#60,T23 ;东西直通最大时间60S MOV R3,#00H ;超过60s则重新赋值 AJMP T23 ;加法调整完毕,调入赋值 T13: JB P3.7,T21 ;若减法输入按钮无效,则跳转 DEC R3 ;东西直通时间减1 CJNE R3,#00H,T23 ;最大时间60S MOV R3,#60 ;若减到界限则重新赋值 T23: MOV 42H,R3 ;将调整结果写入 LJMP TZ11 ;东西直通调整完毕,返回重新检测 T5: MOV R3,43H ;东西左转调整初值转入 LCALL XIANSHI1 ;调用显示程序,第二功能延时40MS JB P3.6,T14 ;若加法输入端无效则跳转 INC R3 ;东西左转时间+1 CJNE R3,#30,T24 ;最大调整时间30S MOV R3,#00H ;超出重新赋值 AJMP T24 ;加法调整完毕转入赋值 T14: JB P3.7,T22 ;若减法无效则跳转 DEC R3 ;东西左转时间减1 CJNE R3,#00H,T24 ;最大调整时间30S MOV R3,#30 ;若溢出则重新赋值 T24: MOV 43H,R3 ;将调整时间写入 LJMP TZ11 ;东西左转调整完毕跳转重新检测 FANHUI: RETI ;子程序结束,返回

4.3各类情况处置程序

4.3.1各类情况介绍

在现实的应用中,交通灯需要很多的功能,除了实现正常亮灭和控制计数之外,还需要紧急处置模式、夜间少车模式、交警手动指挥模式、单南北通行方式、单南北左转向方式、单东西通行方式、单东西左转向通行方式、智能调控程序等功能,本设计已经实现以上功能,每个功能介绍如下:

(1)紧急处置模式:如110、119、120等需要通过,则全路段实行红灯暂停模式,紧允许以上车类通过。

(2)夜间少车模式:在很多的交通路口,夜间行人车辆特别少,由路口等候又显得不合理,这个时候全路段闪烁黄灯,让过往车辆行人注意瞭望通过。

(3)交警手动指挥模式:在这个模式下,相当于关闭交通灯的工作,但是为了保持相关设置不做更改,所以程序还需要待机,这个时候输出的计时器和交通灯都是灭的,具体通行方式根据交警指挥通行。

(4)单南北通行方式:其余路段均为红灯,南北主路绿灯只允许南北方向的行车通过。 (5)单南北左转向方式:其余路段均为红灯,南北左转向绿灯,紧允许南北左转向。 (6)单东西通行方式:其余路段均为红灯,东西主路绿灯只允许东西方向的行车通过。 (7)单东西左转向方式:其余路段均为红灯,东西左转向绿灯,紧允许东西左转向。 (8)智能调控程序:即由某种方式统计各方向的行车,智能控制交通灯的亮灭和倒计时时间,因为仿真中无法使用统计设备完成检测的功能,所以设计了两级自动调控级别,可

第 17 页 共 40 页

通过按键进行选择。具体的调控级别可由自己设定。 4.3.2调配各模式流程图 开始 1 Y 少车模式? 转入H1执行该模式

N Y 手动指挥模式? 转入H2执行该模式 N Y 单南北通行模式? 转入H3执行该模式 N Y 单南北左转模式? 转入H4执行该模式 N Y 单东西通行模式? 转入H5执行该模式 N Y 单东西左转模式 转入H6执行该模式 N Y 智能南北车多? 转入H7执行该模式 第 18 页 共 40 页

N

Y 转入H8执行该模式 智能东西车多? 返回开始1处 紧急处置模式 4.2.3调配各模式程序

此段程序中包括调配各模式的程序和紧急处置模式 TZ3: JNB P3.5,H1 ; 若P3.5有效则启动黄灯闪烁模式 JNB P3.1,H2 ; 若P3.1有效则进入全灭手动指挥模式 JB P0.6,H3 ; 若P0.6有效则进入单独南北向通行模式 JB P0.7,H4 ; 若P0.7有效则进入单独南北向左转通行模式 JB P2.6,H5 ; 若P2.6有效则进入单独东西向通行模式 JB P2.7,H6 ; 若P2.7有效则进入单独东西向左转通行模式 JNB P3.6,H07 ; 智能模式南北向车多开启 JNB P3.7,H08 ; 智能模式东西向车多开启 MOV P1,#00H ; 交通灯全部为红灯 MOV P0,#30H ; 显示倒计时00 MOV P2,#30H ; JB P3.3,H013 ; 若工作模式再次有效则退出 LJMP TZ3 ; 返回重新检测

4.2.4少车模式H1

该模式下每秒黄灯闪烁一次亮500ms灭500ms,延时通过调用显示程序来实现。 H1: SETB P3.4 MOV R3,#50 ; 寄存器赋值,黄灯闪烁使用 MOV R4,#50 ; MOV P0,#00H ; 交通计时器灭 MOV P2,#00H ; MOV P1,#0AAH ; 各路黄灯亮 H11: JNB P3.4,H21 ; 等待延时10ms SJMP H11 ; H21: SETB P3.4 ; DJNZ R3,H11 ; 等待延时一共500ms MOV P1,#0FFH ; 各路黄灯灭 H12: JNB P3.4,H22 ; 等待延时10ms SJMP H12 ; H22: SETB P3.4 ; DJNZ R4,H12 ; 等待延时一共500ms LJMP TZ3 ; 闪烁1S完毕返回重新检测

第 19 页 共 40 页

4.2.5手动指挥模式H2

该模式下全部灯光灭掉,交通交由警察负责 H2: MOV P0,#00H ; 交通灯计时器全灭 MOV P2,#00H ; MOV P1,#0FFH ; 交通灯全灭 LJMP TZ3 ; 返回重新检测 4.2.6单南北通行模式H3

该模式下只有南北向交通灯绿灯,其余为红灯。 H3: MOV P0,#00H ; 交通灯计时器全灭 MOV P2,#00H ; MOV P1,#01H ; 南北向直通绿灯亮,其余为红灯 LJMP TZ3 ; 返回重新检测 4.2.7单南北向左转模式H4

该模式下只有南北向左转交通灯绿灯,其余为红灯。 H4: MOV P0,#00H ; 交通灯计时器全灭 MOV P2,#00H ; MOV P1,#04H ; 南北左转向绿灯亮,其余红灯 LJMP TZ3 ; 返回重新检测 4.2.8单东西通行模式H5

该模式下只有东西向交通灯绿灯,其余为红灯。 H5: MOV P0,#00H ; 交通灯计时器全灭 MOV P2,#00H ; MOV P1,#10H ; 东西向直通绿灯亮,其余红灯 LJMP TZ3 ; 返回继续检测 4.2.9单东西向左转模式H6

该模式下只有东西向左转交通灯绿灯,其余为红灯。 H6: MOV P0,#00H ; 交通灯计时器全灭 MOV P2,#00H ; MOV P1,#40H ; 东西向左转绿灯亮,其余红灯 LJMP TZ3 ; 返回重新检测 4.2.10智能调控模式

智能调控模式下有两个输入按钮,南北向车多、和东西向车多两个按钮,本设计中只加入了两级调控,可以根据具体情况设置多级调控模式。

一级调控:主路35s 主路左转20s 辅路15s 辅路左转10s 二级调控:主路45s 主路左转25s 辅路10s 辅路左转5s 同样,调控程序和调时程序采用类似的工作方法,所以每次主程序完成一次循环之后才会起作用。

4.2.11智能调控模式演示

下面是智能调控程序演示,以南北向车多H7模式示例: H7: MOV A,50H ;将当前智能环境写入累加器 JB ACC.1,H41 ;检测当前级别为2则跳转H41 H42: INC 50H ;智能级别加1 INC A ; JB ACC.0,H31 ;检测当前级别为1则跳转H31

第 20 页 共 40 页

JB ACC.1,H32 ;检测当前级别为2则跳转H32 LJMP TZ3 ; 返回重新检测 H31: MOV 40H,60H ;智能一级级别写入 MOV 41H,61H MOV 42H,63H MOV 43H,64H MOV R1,#1 ;调用显示显示当前级别 MOV R3,#0 Y1: LCALL XIANSHI1 DJNZ R7,Y1 ;延时1S,相当于1S防抖 MOV R7,#25 LJMP TZ3 ; 返回重新检测 H32: MOV 40H,65H ;智能二级级别写入 MOV 41H,66H MOV 42H,67H MOV 43H,68H MOV R1,#2 ;调用显示显示当前级别 MOV R3,#0 Y2: LCALL XIANSHI1 DJNZ R7,Y2 ;延时1S,相当于1S防抖 MOV R7,#25 LJMP TZ3 ; 返回重新检测 H41: MOV 50H,#00H ;当然最大级别为2,若超出则从1级开始 LJMP H42 ;返回执行当前级别 4.2.12内部延时程序

在本设计中,内部延时程序为10ms。具体程序如下: TZ2: MOV TL0,#0F0H ;计数器重新赋值初值 MOV TH0,#0D8H ; CLR P3.4 ;P3.4口清零 RETI ;延时程序返回 4.2.13显示调用程序

显示调用程序本来只需使用一个,但是设计过程中一直有寄存器值未调用但发生变化的问题,所以设计2各显示调用程序,一个用于正常交通灯显示,一个用于调整程序使用。调时程序还有一个功能,就是通过4此位选以后延时了将近40ms,起到了延时的作用。

以交通灯调时程序1作为示例: XIANSHI1: MOV P1,#00H ; 交通灯全部为红灯

MOV A,R1 ;南北方向时间显示

MOV B,#10 DIV AB ;A放十位,B放个位 ADD A,#10H ;十位位选码 MOV P0,A ;输出显示 CK10: JNB P3.4,CK11 ;等待T0溢出 10ms SJMP CK10 CK11: SETB P3.4 ;P3.4重新置1检测溢出

第 21 页 共 40 页

CK12: CK13: CK14: CK15: CK16: CK17:

MOV A,B ;显示个位 ADD A,#20H ;个位位选码 MOV P0,A ;输出显示

JNB P3.4,CK13 ;等待T0溢出 10ms SJMP CK12

SETB P3.4 ;P3.4重新置1检测溢出 MOV A,R3 ;东西方向时间显示 MOV B,#10 ; DIV AB ;A放十位,B放个位 ADD A,#10H ;十位输出位选 MOV P2,A ;输出十位

JNB P3.4,CK15 ;检测溢出 10ms SJMP CK14

SETB P3.4 ;P3.4置1重新检测 MOV A,B ;放入个位 ADD A,#20H ;个位位选码 MOV P2,A ;输出个位 JNB P3.4,CK17 ;检测溢出 SJMP CK16

SETB P3.4 ;P3.4置1,以便以后使用 RET

五、protues硬件连线图

具体连线图如下:

由软件和硬件图均可看出,单片机P0,P2口低四位负责输出显示倒计时,经过两片74LS47进行译码,高四位中的低二位用于控制显示器十位和各位的位选信息。高两位作为

第 22 页 共 40 页

监控开关控制不同的功能。P1口负责控制12个交通信号灯的亮灭,输出口不够用经过了4个2-4译码器74LS139负责驱动,左上角为手动复位和内部晶振连接方式,右上角为个数码管,AT89C51输出口的上拉电阻。

六、protues仿真

6.1基本交通灯显示功能

6.1.1上电启动-南北向通行

6.1.2黄灯闪烁

黄灯闪烁分两部分,3s黄灯闪烁和2s全路段红灯。

6.1.3南北向左转通行

6.1.4东西向通行

第 23 页 共 40 页

6.1.5东西向左转通行

6.2调时显示功能

6.2.1调时基本操作

按下“调时启动按钮”(此时情况如图14所示)通过四个位选按钮(见图15)按下选中要调节的方向,通过“调时+”或者“调时减”来设置时间,按“调时结束”返回。

图 14

图 15

6.2.2调时

调节南北向、南北向左转、东西向、东西向左转时间分别为20,15,10,5见下图:

第 24 页 共 40 页

注意:调时时南北方向的调时只在竖直方向显示,东西方向调时只在东西方向显示

调整南北时间

调整南北左转时间

调整东西时间 调整东西左转时间

6.2.3调时后交通灯显示

注意:调时后的倒计时要在第一轮倒计时显示完成后才会出现。

调整后南北绿灯时间

调整后南北左转绿灯时间

第 25 页 共 40 页

调整后东西绿灯时间 调整后东西左转绿灯时间

6.3各类处置情况 6.3.1紧急处置模式

当按下“工作模式选择按钮”即可进入紧急处置模式。见图16

图 16

图 17

6.3.2夜间模式

在6.3.1的基础上按下“黄灯闪烁模式”按键,即可进入夜间模式。见图17 6.3.3交警指挥模式

在6.3.1的基础上按下“全灭模式”按键,即可进入交警指挥模式。见下图

第 26 页 共 40 页

6.3.4单独通行模式

在6.3.1的基础上,通过调节“南北正方向选择按钮”“南北左转选择按钮”“东西正方向选择按钮”“东西左转选择按钮”来选中某一方向单独通行。

南北正方向单独通行

南北左转大单独通行

东西正方向单独通行 东西左转单独通行

6.3.5智能控制模式-南北向1级

该模式也是在6.3.1的基础上,通过按键“调时+”和按键“调时-”分别调整南北向和东西向的控制级别。

调整南北向智能级别1显示

第 27 页 共 40 页

智能控制南北绿灯35S

智能控制南北左转绿灯20S

智能控制东西绿灯15S 智能控制东西左转绿灯10S 6.3.6智能控制模式-东西向2级

该模式也是在6.3.1的基础上,通过按键“调时+”和按键“调时-”分别调整南北向和东西向的控制级别。

调整南北向智能级别2显示

第 28 页 共 40 页

智能控制南北绿灯10S

智能控制南北左转绿灯5S

智能控制东西绿灯45S

智能控制东西左转绿灯25S

七、设计心得体会

这次的设计是我入大学以来最用心的一次,在设计过程中,补缺了自己很多方面的知识,设计中有关问题的解决让我的能力突飞猛进,在设计之初,我连基本的想法都没有,现在设计完成之后,头脑里居然有很多种想法待尝试,例如,可以将多个按键的功能集成为一个,通过软件计数和延时消抖程序让控制方式挨个选择,在设计的过程中一直纠结于管脚不够用的问题,设计完成之后,发现可以集成很多的东西,管脚不够用的问题也随之解决,这次设计中为了方便演示,将各管脚充分利用。由于时间问题,很多程序无法再实现精细化,在设计中还有很多的问题和遗憾。

1.在设计中虽然后期掌握了计数以及消抖,但是此设计中没有将所有管脚功能集成化。 2.本次设计中一直有个疑问没有解决,程序中断后并未对相关寄存器进行操作,但是每次返回都会发生偏差,所以导致的后期程序较为复杂和调时只能第二次执行主程序才有效。

3.在设计的最终只能说是半智能化调控,因为没办法模拟实时路况,所以只能手动检测智能化应用。

4.在设计结束后有了彻底智能化的想法,希望大四做毕业设计可以继续选做这个题目,实现彻彻底底的智能化交通灯,加入24小时调控。

5.在设计中这一点也是比较遗憾的,汇编语言虽然精细但是感觉使用上有很多的缺陷,因为没有学到高级的C51编程语言,再加上设计时间不足,所以没有学习C51程序,以后要加强一下。

第 29 页 共 40 页

附录1:汇编源程序

ORG 0000H LJMP MAIN ;转入主程序 ORG 0003H ;外中断0,p3.2 LJMP TZ1 ;调时跳转 ORG 000BH ;定时计数器0 LJMP TZ2 ;内部计时中断 ORG 0013H ;外中断1,p3.3 LJMP TZ3 ;各类功能处理(如救护车通过) ORG 1000H ;程序存放地址 MAIN: MOV TMOD,#01H ;设置定时计数器0工作方式1,定时功能。 MOV TL0,#0F0H ;初值填入,12Mhz,计时10ms MOV TH0,#0D8H SETB EA ;开总中断 SETB ET0 ;开放T0中断 SETB TR0 ;启动T0计时 SETB EX0 ;外中断0开启中断允许 SETB EX1 ;外中断1开启中断允许 SETB IT0 ;外中断0边沿触发 CLR IT1 ;外中断1低电平触发 SETB PT0 ;外中断1为高优先级 MOV 50H,#00H;智能环境初始变量(南北) MOV 51H,#00H;智能环境初始变量(东西) ;;;;;;;;;;智能环境一级情况初始赋值;;;;;;;;;; MOV 60H,#35 MOV 61H,#20 MOV 63H,#15 MOV 64H,#10

;;;;;;;;;;;;一级赋值结束;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;智能环境二级情况初始赋值;;;;;;;;;; MOV 65H,#45 MOV 66H,#25 MOV 67H,#10 MOV 68H,#5

;;;;;;;;;;;二级赋值结束;;;;;;;;;;;;;;;;;;;;;; MOV 40H,#25 ;南北绿灯直通行时间 MOV 41H,#15 ;南北向左转绿灯时间 MOV 42H,#25 ;东西绿灯直通行时间 MOV 43H,#15 ;东西左转向绿灯时间 START: MOV 30H,40H ;南北绿灯直通行时间 MOV 31H,41H ;南北向左转绿灯时间 MOV 32H,42H ;东西绿灯直通行时间 MOV 33H,43H ;东西左转向绿灯时间

第 30 页 共 40页

MOV R0,30H ;南北向绿灯时间写入 MOV A,30H ;计算东西向红灯时间 ADD A,#10 ;两次黄灯等待时间共10S ADD A,31H ;加上南北左转向绿灯时间 MOV R2,A ;东西方向红灯写入 MOV R7,#25 ;延时使用 MOV R6,#15 ;黄灯闪烁使用 MOV R5,#10 ;黄灯闪烁使用 LOOP1: SETB P3.4 ;P3.4置1,第二功能要求 MOV P1,#0FFH ;交通灯全灭 SETB P3.0 ;P3.0置1以便检查输入 MOV P1,#01H ;南北绿灯亮;其余红灯亮 LCALL XIANSHI ;调用显示程序 DJNZ R7,LOOP1 ;1S显示结束 MOV R7,#25 ;重新赋值循环变量 DEC R2 ;东西方向时间减一 DJNZ R0,LOOP1 ;南北时间减一,并做循环变量 MOV R0,#3 ;南北方向黄灯显示 LOOP2: MOV P1,#0FFH ;交通灯灭 MOV P1,#03H ;东西向红灯,南北直通灭 LOOP11: CLR P1.0 ;南北黄灯灭 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R5,LOOP11 ;南北黄灯灭400ms LOOP22: SETB P1.0 ;南北黄灯亮 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R6,LOOP22 ; 南北黄灯亮600ms DEC R2 ;东西向时间减一 MOV R5,#10 ;重置循环变量 MOV R6,#15 DJNZ R0,LOOP2 ;南北向黄灯时间减一,并做循环变量 MOV R0,#2 ;全部红灯2S LOOP5: MOV P1,#00H ;四路红灯亮起 LCALL XIANSHI ;调用显示程序第二作用延时40ms DJNZ R7,LOOP5 ;1s显示 MOV R7,#25 ;重新赋值循环变量 DEC R2 ;东西方向时间减一 DJNZ R0,LOOP5 ;南北方向时间减一并且做循环变量 MOV R0,31H ;南北左转时间写入 LOOP3: MOV P1,#0FFH ;交通灯灭 MOV P1,#04H ;南北向左转向绿灯亮,其他红灯 LCALL XIANSHI ;调用显示第二作用延时40ms DJNZ R7,LOOP3 ;1S显示 MOV R7,#25 ;秒循环并重新赋值 DEC R2 ;东西时间减一

第 31 页 共 40页

DJNZ R0,LOOP3 ;南北时间减一并循环 MOV R0,#3 ;黄灯3s LOOP4: MOV P1,#0FFH ;交通灯灭 MOV P1,#0CH ;东西向红灯,南北左转灭 LOOP12: CLR P1.2 ;南北左转黄灯灭 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R5,LOOP12 ;南北左转黄灯灭400ms LOOP23: SETB P1.2 ;南北左转黄灯亮 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R6,LOOP23 ; 南北左转黄灯亮600ms DEC R2 ;东西向时间减一 MOV R5,#10 ;重置循环变量 MOV R6,#15 DJNZ R0,LOOP4 ;南北向黄灯时间减一,并做循环变量 MOV R0,#2 ;全部红灯2S LOOP6: MOV P1,#00H ;四路红灯亮起 LCALL XIANSHI ;调用显示程序 DJNZ R7,LOOP6 ;1s显示 MOV R7,#25 ;重新赋值循环变量 DEC R2 ;东西方向时间减一 DJNZ R0,LOOP6 ;南北方向时间减一并且做循环变量 MOV R2,32H ;东西向绿灯时间写入 MOV A,32H ;南北向红灯时间计算 ADD A,#10 ;东西向两次黄灯等待时间加入 ADD A,33H ;东西向左转时间加入 MOV R0,A ;南北红灯时间写入 LOP1: SETB P3.4 ;P3.4置1,第二功能要求 MOV P1,#0FFH ;交通灯全灭 SETB P3.0 ;P3.0置1以便检查输入 MOV P1,#10H ;东西绿灯亮;其余红灯亮 LCALL XIANSHI ;调用显示程序 DJNZ R7,LOP1 ;1S显示结束 MOV R7,#25 ;重新赋值循环变量 DEC R0 ;南北方向时间减一 DJNZ R2,LOP1 ;东西方向时间减一,并做循环变量 MOV R2,#3 ;东西方向黄灯显示 LOP2: MOV P1,#0FFH ;交通灯灭 MOV P1,#30H ;南北向红灯,东西直通向灭 LOOP13: CLR P1.4 ;东西黄灯灭 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R5,LOOP13 ;东西黄灯灭400ms LOOP24: SETB P1.4 ;东西黄灯亮 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R6,LOOP24 ; 东西黄灯亮600ms

第 32 页 共 40页

DEC R0 ;南北向时间减一 MOV R5,#10 ;重置循环变量 MOV R6,#15 DJNZ R2,LOP2 ;东西向黄灯时间减一,并做循环变量 MOV R2,#2 ;全部红灯2S LOP5: MOV P1,#00H ;四路红灯亮起 LCALL XIANSHI ;调用显示程序 DJNZ R7,LOP5 ;1s显示 MOV R7,#25 ;重新赋值循环变量 DEC R0 ;南北方向时间减一 DJNZ R2,LOP5 ;东西方向时间减一并且做循环变量 MOV R2,33H ;东西左转绿灯时间写入 LOP3: MOV P1,#0FFH ;交通灯灭 MOV P1,#40H ;东西向左转向绿灯亮,其他红灯 LCALL XIANSHI ;调用显示 DJNZ R7,LOP3 ;延时1s MOV R7,#25 ;秒循环并重新赋值 DEC R0 ;南北时间减一 DJNZ R2,LOP3 ;东西时间减一并循环 MOV R2,#3 ;黄灯3s LOP4: MOV P1,#0FFH ;交通灯灭 MOV P1,#0C0H ;南北向红灯,东西左转灭 LOOP14: CLR P1.6 ;东西左转黄灯灭 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R5,LOOP14 ;东西左转黄灯灭400ms LOOP25: SETB P1.6 ;东西左转黄灯亮 LCALL XIANSHI ;调用显示程序相当于延时40ms DJNZ R6,LOOP25 ; 东西左转黄灯亮600ms DEC R0 ;南北向时间减一 MOV R5,#10 ;重置循环变量 MOV R6,#15 DJNZ R2,LOP4 ;南北向黄灯时间减一,并做循环变量 MOV R2,#2 ;全部红灯2S LOP6: MOV P1,#00H ;四路红灯亮起 LCALL XIANSHI ;调用显示程序 DJNZ R7,LOP6 ;1s显示 MOV R7,#25 ;重新赋值循环变量 DEC R0 ;东西方向时间减一 DJNZ R2,LOP6 ;南北方向时间减一并且做循环变量 LJMP START ;一轮循环结束,返回再次循环

;;;;;;;;;;;;;;;;调整时间服务程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;注意:调整后的时间在第二轮计时才会显示,第一轮仍按照原定时间;

第 33 页 共 40页

TZ1:MOV R1,#00 ;调整寄存器赋初值 MOV R3,#00

TZ11: LCALL XIANSHI1 ;调用显示程序 LCALL XIANSHI1 ;连同下面调时共延时5X40ms LCALL XIANSHI1 LCALL XIANSHI1 JNB P3.0,FANHUI1 ;P3.0为调整结束按钮 JB P0.6,T2 ;若调整南北直通时间则跳转 JB P0.7,T3 ;若调整南北左转时间则跳转 JB P2.6,T4 ;若调整东西直通时间则跳转 JB P2.7,T5 ;若调整东西左转时间则跳转 LJMP TZ11 ;均无效时转回延时继续检测 T2: MOV R1,40H ;南北直通调整时间写入 LCALL XIANSHI1 ;调用显示并且延时40ms JB P3.6,T11 ;若调整+无效则跳转 INC R1 ;南北直通时间加1 CJNE R1,#60,T21 ;南北直通最多限制时间60S MOV R1,#00H ;若R1>=60则赋值为0重新加载 AJMP T21 ;南北向加法调整时间结束,转入赋值 T11: JB P3.7,T21 ;调整-无效则跳转 DEC R1 ;南北向直通时间减1 CJNE R1,#00H,T21 ;最大调整时间60S MOV R1,#60 ;若超出则重新赋值 T21: MOV 40H,R1 ;调整后的时间写入 LJMP TZ11 ;南北向调整完毕返回重新检测 FANHUI1:LJMP FANHUI ;因为JNB跳转范围限制,在此补加一次跳转 T3: MOV R1,41H ;南北左转调整时间写入 LCALL XIANSHI1 ;调用显示并且延时40ms JB P3.6,T12 ;若调整+无效则跳转 INC R1 ;南北左转时间加1 CJNE R1,#30,T22 ;南北左转最多限制时间30S MOV R1,#00H ;若R1>=30则赋值为0重新加载 AJMP T22 ;南北向左转加法调整时间结束,转入赋值 T12: JB P3.7,T22 ;调整-无效则跳转 DEC R1 ;南北左转向时间减1 CJNE R1,#00H,T22 ;最大调整时间30S MOV R1,#30 ;若超出则重新赋值 T22: MOV 41H,R1 ;调整后的时间写入 LJMP TZ11 ;南北左转向调整完毕返回重新检测 T4: MOV R3,42H ;东西向直通时间写入 LCALL XIANSHI1 ;调用显示程序第二功能延时40ms JB P3.6,T13 ;若加法输入无效则跳转 INC R3 ;东西直通时间加1 CJNE R3,#60,T23 ;东西直通最大时间60S

第 34 页 共 40页

MOV R3,#00H ;超过60s则重新赋值 AJMP T23 ;加法调整完毕,调入赋值 T13: JB P3.7,T21 ;若减法输入按钮无效,则跳转 DEC R3 ;东西直通时间减1 CJNE R3,#00H,T23 ;最大时间60S MOV R3,#60 ;若减到界限则重新赋值 T23: MOV 42H,R3 ;将调整结果写入 LJMP TZ11 ;东西直通调整完毕,返回重新检测 T5: MOV R3,43H ;东西左转调整初值转入 LCALL XIANSHI1 ;调用显示程序,第二功能延时40MS JB P3.6,T14 ;若加法输入端无效则跳转 INC R3 ;东西左转时间+1 CJNE R3,#30,T24 ;最大调整时间30S MOV R3,#00H ;超出重新赋值 AJMP T24 ;加法调整完毕转入赋值 T14: JB P3.7,T22 ;若减法无效则跳转 DEC R3 ;东西左转时间减1 CJNE R3,#00H,T24 ;最大调整时间30S MOV R3,#30 ;若溢出则重新赋值 T24: MOV 43H,R3 ;将调整时间写入 LJMP TZ11 ;东西左转调整完毕跳转重新检测 FANHUI: RETI ;子程序结束,返回 ;;;;;;;;;;;;;;;;各类情况调整;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;1.东南西北+转向全部为红灯——救护车模式;;;; ;;;;;;;;;;2.东南西北+转向黄灯闪烁__临晨模式;;;;;;;; ;;;;;;;;;;3.只允许南北向通行功能;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;4.只允许东西向通行功能;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;5.只允许南北左转通行功能;;;;;;;;;;;;;;;;; ;;;;;;;;;;6.只允许东西左转通行功能;;;;;;;;;;;;;;;;; ;;;;;;;;;;7.交通灯全灭手动指挥模式;;;;;;;;;;;;;;;;; ;;;;;;;;;;8.智能交通灯调控模式;;;;;;;;;;;;;;;;;;;;; TZ3:JNB P3.5,H1 ; 若P3.5有效则启动黄灯闪烁模式 JNB P3.1,H2 ; 若P3.1有效则进入全灭手动指挥模式 JB P0.6,H3 ; 若P0.6有效则进入单独南北向通行模式 JB P0.7,H4 ; 若P0.7有效则进入单独南北向左转通行模式 JB P2.6,H5 ; 若P2.6有效则进入单独东西向通行模式 JB P2.7,H6 ; 若P2.7有效则进入单独东西向左转通行模式 JNB P3.6,H07 ; 智能模式南北向车多开启 JNB P3.7,H08 ; 智能模式东西向车多开启 MOV P1,#00H ; 交通灯全部为红灯 MOV P0,#30H ; 显示倒计时00 MOV P2,#30H ; JB P3.3,H013 ; 若工作模式再次有效则退出 LJMP TZ3 ; 返回重新检测

第 35 页 共 40页

H07: LJMP H7 ;辅助JNB扩展传送最大偏移量 H08: LJMP H8 ;辅助JNB扩展传送最大偏移量 H013: LJMP H13 ;辅助JB扩展传送最大偏移量 H2: MOV P0,#00H ; 交通灯计时器全灭 MOV P2,#00H ; MOV P1,#0FFH ; 交通灯全灭 LJMP TZ3 ; 返回重新检测 H3: MOV P0,#00H ; 交通灯计时器全灭 MOV P2,#00H ; MOV P1,#01H ; 南北向直通绿灯亮,其余为红灯 LJMP TZ3 ; 返回重新检测 H4: MOV P0,#00H ; 交通灯计时器全灭 MOV P2,#00H ; MOV P1,#04H ; 南北左转向绿灯亮,其余红灯 LJMP TZ3 ; 返回重新检测 H5: MOV P0,#00H ; 交通灯计时器全灭 MOV P2,#00H ; MOV P1,#10H ; 东西向直通绿灯亮,其余红灯 LJMP TZ3 ; 返回继续检测 H6: MOV P0,#00H ; 交通灯计时器全灭 MOV P2,#00H ; MOV P1,#40H ; 东西向左转绿灯亮,其余红灯 LJMP TZ3 ; 返回重新检测 H1: SETB P3.4 MOV R3,#50 ; 寄存器赋值,黄灯闪烁使用 MOV R4,#50 ; MOV P0,#00H ; 交通计时器灭 MOV P2,#00H ; MOV P1,#0AAH ; 各路黄灯亮 H11: JNB P3.4,H21 ; 等待延时10ms SJMP H11 ; H21: SETB P3.4 ; DJNZ R3,H11 ; 等待延时一共500ms MOV P1,#0FFH ; 各路黄灯灭 H12: JNB P3.4,H22 ; 等待延时10ms SJMP H12 ; H22: SETB P3.4 ; DJNZ R4,H12 ; 等待延时一共500ms LJMP TZ3 ; 闪烁1S完毕返回重新检测 ;;;;;;;;;;;;;;;;;南北向智能环境控制;;;;;;;;;;;;;;;;;;;;;;;;; H7: MOV A,50H ;将当前智能环境写入累加器 JB ACC.1,H41 ;检测当前级别为2则跳转H41 H42: INC 50H ;智能级别加1 INC A ;

第 36 页 共 40页

本文来源:https://www.bwwdw.com/article/it77.html

Top