AT89C52单片机控制交通灯系统方案.doc
《AT89C52单片机控制交通灯系统方案.doc》由会员分享,可在线阅读,更多相关《AT89C52单片机控制交通灯系统方案.doc(19页珍藏版)》请在咨信网上搜索。
. . . . 目 录 1 交通信号灯控制系统设计任务和性能指标................................1 1.1 设计任务........................................................1 1.2 性能指标........................................................1 2 交通信号灯控制系统设计方案...........................................1 2.1 设计思路 ......................................................1 2.1.1 设计思路...................................................1 2.1.2 功能设计...................................................2 2.2 总体设计........................................................2 2.2.1 通行方案设计...............................................2 2.2.2 硬件设计方案...............................................4 2.2.3 软件设计方案...............................................4 3 交通信号灯控制系统硬件设计 ..........................................5 3.1 系统硬件框图 ...................................................5 3.2 单元电路设计....................................................5 3.2.1 单片机最小系统 ............................................5 3.2.2 信号灯显示电路 ............................................7 3.2.3 倒计时显示电路 ............................................8 3.2.4 按键操作电路 ..............................................8 4 交通信号灯控制系统程序设计 .........................................8 4.1 理论基础知识 ..................................................8 4.1.1 定时器原理 ................................................8 4.1.2 软件延时原理 ..............................................9 4.1.3 中断原理 ..................................................9 4.2 主程序框图.....................................................9 5 调试分析与所用器件 .................................................10 5.1 调试环境 ......................................................10 5.2 所用芯片 ......................................................11 6 心得体会 ............................................................11 7 参考文献 ............................................................12 8 附录 ................................................................13 附件1 程序清单.....................................................13 附件2 系统仿真图...................................................16 摘要 交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 本系统采用单片机AT89C52为中心器件来设计交通信号灯控制器,系统实用性强、操作简单、扩展性强。本设计系统就是由单片机最小系统、交通灯状态显示系统、LED数码显示系统、复位电路和按键操作电路等几大部分组成。系统除具有基本的交通信号灯功能外,还具有倒计时、时间调整和紧急情况处理等功能,较好的模拟实现了十字路口可能出现的状况。 软件上采用KEIL C 编程,主要编写了主程序,LED数码管显示程序,中断程序,延时程序等。经过整机调试,实现了对十字路口交通灯的模拟。 关键字:AT89C52 交通灯 PROTUES 中断程序 1 交通信号灯控制系统设计任务和性能指标 1.1设计任务 利用单片机设计一个十字路口交通信号灯控制系统,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外,并有倒计时系统显示信号灯转换时间。用红、绿、黄发光二极管作信号灯,两位八段数码管显示时间来控制交通信号灯的变化。模拟框图如图1所示。 图1 交通信号灯模拟图 1.2性能指标 (1)东西和南北方向的车辆交替通行,任意时刻只有一个方向通行,以黄灯闪烁来转换。 (2)系统开始运行时设置每次放行10秒,其中有2秒是黄灯闪烁提醒行人和车辆禁止通行。 (3)通行时间可在0~99秒任意设置。 (4)有紧急情况处理功能,比如:有急救车辆通行时,暂时禁止其他车辆通行。 2 交通信号灯控制系统设计方案 2.1设计思路 2.1.1设计思路 (1)分析目前交通路口的基本控制技术以与各种通行方案,并以此为基础提出自己的交通控制的初步方案。 (2)确定系统交通控制的总体设计,包括,十字路口具体的通行禁行方案设计以与系统应拥有的各项功能,在这里,本设计除了有基本的交通功能,还增加了倒计时显示提示,基于实际情况,又增加了紧急状况处理和通行时间可调这两项特殊功能。 (3)选择器件,大体分配各个器件与模块的基本功能要求,设计主控电路、显示电路,信号灯状态电路,按键电路等。 (4)进行软件系统的设计,对于本系统,本人采用单片机C语言编写,对单片机部结构和工作情况做了充足的研究,在深入了解了定时器,中断以与延时原理后,完成了软件的编写。 2.1.2 功能设计 本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示,通行时间调整和紧急情况处理等功能。 (1) 基本功能 采用红绿黄三种颜色的LED灯的亮灭来模拟信号灯,从而达到控制车辆的通行。 (2) 倒计时显示功能 采用两位八段数码管来显示时间,来告知行人和车辆通行时间和要等待的时间。 (3)时间可调功能 通过键盘对时间进行手动设置,增加了人为的可控性,避免车少长等和减缓车多交通堵塞的麻烦。 (4)紧急处理 交通路口出现紧急状况在所难免,如特大事件发生,救护车等急行车通过等,我们都必须尽量允许其畅通无阻,由此在交通控制中增设禁停按键。 2.2 总体设计 单片机设计交通灯控制系统,可用单片机直接控制信号灯的状态变化,基本上可以指挥交通的具体通行,接入LED数码管就可以显示倒计时以提醒行使者,更具人性化。本系统在此基础上,加入了紧急情况处理与时间调整功能。 2.2.1 通行方案设计 十字路口分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如图2所示。说明:黑色表示亮,白色表示灭。交通状态从状态1开始变换,直至状态4然后循环至状态1,周而复始。 S1 东西通行 S2 东西禁行过渡状态 S3 南北通行 S4 南北禁行过渡状态 图2 交通信号灯状态 通过对具体的十字路口交通信号灯状态的演示分析,可以把这四个状态归纳如下: 状态S1:东西方向绿灯亮,允许通行,南北方向红灯亮,禁止通行; 状态S2:东西方向绿灯转黄灯闪烁,允许通行,南北方向红灯亮,禁止通行; 状态S3:东西方向红灯亮,禁止通行,南北方向绿灯亮,允许通行; 状态S4:东西方向红灯亮,禁止通行,南北方向绿灯转黄灯闪烁,允许通行; 依据上述分析,东西的通行时间为状态S1和状态S2的时间之和,南北的通行时间为状态S3和状态S4的时间之和,因此可以列出各个路口灯的状态转换如表1所示(其中逻辑值“1”代表执行通行,逻辑值“0”代表禁止通行,逻辑值“L”代表绿灯转黄灯): 表1 交通灯状态转换表 状态 时间 东 西 南 北 绿灯 黄灯 红灯 绿灯 黄灯 红灯 S1 8s 1 0 0 0 0 1 S2 2s 0 L(闪烁) 0 0 0 1 S3 8s 0 0 1 1 0 0 S4 2s 0 0 1 0 L(闪烁) 0 2.2.2 硬件设计方案 本系统选用Atmel公司的AT系列单片机AT89C51为中心器件设计交通信号灯控制器,实现了红绿灯循环点亮,绿灯变红灯中间为黄灯闪烁警示的功能。每个方向采用红绿黄三色的LED灯的亮灭来模拟信号灯,采用两位八段共阳数码管,显示十字路口通行或禁止的剩余时间,通过键盘对时间进行手动设置,增加了人为的可控性,避免车少长等和减缓车多交通堵塞的麻烦,同时增设了紧急情况处理按键,因为交通路口出现紧急状况在所难免,如特大事件发生,救护车等急行车通过等,我们都必须尽量允许其畅通无阻。 所设计的系统硬件框图如图3所示。 STC80C51单片机 最小系统 LED数码管显示 数码管 显示 按键控制电路 图3 系统硬件框图 2.2.3 软件设计方案 设计要求为:首先南北方向红灯、东西方向绿灯亮,南北方向红灯10秒、东西方向绿灯8秒,相应的数码管显示对应的数字并读秒,同时南北方向红色的二极管和东西方向的绿色二极管接通点亮显示,当东西方向的绿灯时间到,则东西方向的绿灯转为黄灯,同时数码管显示黄灯的时间2秒,东西方向的黄色二极管接通点亮,此时南北方向的红灯不变。南北方向的红灯和东西方向的黄灯时间同时到,此时南北方向的红灯跳转为绿灯,时间同样为8秒,东西方向有黄灯跳转为红灯,时间为10秒。当南北方向的绿灯时间到,南北绿灯跳转为黄灯,东西方向的红灯不变,当南北方向的黄灯和东西方向的红灯时间到,南北方向的黄灯跳转为红灯,东西方向的红灯跳转为绿灯。进入开始的状态,循环执行。此外还利用单片机的中断设计了紧急情况处理和时间调整的功能。 根据设计要求,程序框图如图4所示。软件采用KEIL C语言完成。软件设计可以分为以下几个功能模块: 初始化CPU 初始化中断 状态转换S1-S2-S3-S4 按键操作 中断处理 图4 程序结构框图 3 交通信号灯控制系统硬件设计 3.1系统硬件框图 AT89C52 XTAL1 P0.0 XTAL2 | P0.5 RES P2.0 | P2.7 P3 时钟电路 复位电路 信号灯显示 倒计时显示 按键操作 根据设计的要求,单片机选用AT89C52,其部带有8KB的FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。四个方向各采用三个不同色的LED灯和1个两位的数码管显示,来实现该方向的指示灯的点亮时间倒计时。按键可以根据系统的需要进行操作。 图5 系统硬件框图 3.2单元电路设计 3.2.1单片机最小系统 对51系列单片机来说,单片机要正常工作,必须具有五个基本电路,也称五个工作条件:1、电源电路,2、时钟电路,3、复位电路,4、程序存储器选择电路,5、外围电路。因此,单片机最小系统一般应该包括单片机、晶振电路、复位电路、外围电路等,如下面的框图所示: 图 6单片机最小系统框图 (1)电源电路设计 单片机芯片的第40脚为正电源引脚VCC,一般外接+5V电压。第20脚为接地引脚GND,常见电源电路设计如下图7所示: 图7 电源设计 (2)时钟电路设计 单片机是一种时序电路,必须要有时钟信号才能正常工作。单片机芯片的18脚(XTAL2)、19脚(XTAL1)分别为片反向放大器的输出端和输入端,只要在18脚(XTAL2)和19脚(XTAL1)之间接上一个晶振,再加上2个20PF的瓷片电容即可构成单片机所需的时钟电路,本设计就采用图8所示时钟电路。 图8 时钟电路 此外,当采用外部时钟时,19脚(XTAL1)接地,18脚(XTAL2)接外部时钟信号。 (3)复位电路设计 单片机芯片的第9脚RST(Reset)是复位信号输入端。单片机系统在开机时或在工作中因干扰而使程序失控,或工作中程序处于某种死循环状态等情况下都需要复位。复位的作用是使中央处理器CPU以与其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作。AT89C52单片机的复位靠外部电路实现,信号从RST引脚输入,高电平有效,只要保持RST引脚高电平2个机器周期,单片机就能正常复位。 常见的复位电路有上电复位电路和按键复位电路二种,如图9所示。本设计采用手动复位电路。 A.上电复位 B.手动复位 图9 复位电路 (4)程序存储器选择电路 单片机芯片的第31脚(EA)为部与外部程序存储器选择输入端。当EA引脚接高电平时,CPU先访问片8KB的程序存储器,执行部程序存储器中的指令,当程序计数器超过0FFFH时,将自动转向片外程序存储器,既是从1000H地址单元开始执行指令;当EA引脚接低电平时,不管片是否有程序存储器,CPU只访问片外程序存储器。 AT89S52部有8KB的程序存储器,所以根据该脚的引脚功能,只要将该脚接上高电平,才能先从片程序存储器开始取指令。 常见的程序存储器选择电路就是将第31脚直接接到正电源上。 (5)外围电路的设计 外围电路的设计主要依据项目要实现的功能,本项目要实现的功能是用单片机控制交通信号灯。 3.2.2交通信号灯显示电路 本系统采用LED作为信号灯来使用,单片机的I/O口直接与LED连接。在十字路口的四组红、黄、绿三色交通灯中,东西方向的同色灯连接在一起,南北方向的同色灯也彼此连接,受单片机AT89C52的P0.0—P0.5控制。12个LED指示灯采用共阳极的连接方式,因此I/O口输出低电平时,与之相连的LED会亮,输出高电平时,LED熄灭。 3.2.3倒计时显示电路 该交通信号灯控制系统在正常工作情况下,为方便提示路上行人与车辆交通灯转换的剩余时间,专门为控制系统提供了一个倒计时的显示装置。该装置采用2位八段数码管来显示,每个路口需要1个,共4个,在设计电路时,本系统采用用共阳数码管,直接和P2口连接,作为段选,来控制每个数码管数字的显示,再通过P1.0—P1.3进行位选,来选择要显示的数码管。 3.2.3按键操作电路 该系统最大的好处就是可以实现时间的调整和紧急停车功能,通过六个按键来达到对路面通行状态的实时控制。 4 交通信号灯控制系统程序设计 4.1 理论基础知识 4.1.1定时器原理 定时器工作的基本原理其实就是给初值,让它不断加1直至减完为模值,这个初值是送到TH和TL中的。它是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值,即所要求的计数值设定为C,把计数初值设定为TC 可得到如下计算公式: TC=M-C 式中,M为计数器模值。计数值并不是目的,目的是时间值,设计1次的时间,即定时器计数脉冲的周期为T0,它是单片机系统主频周期的12倍,设要求的时间值为T,则有C=T/T0。计算公式变为: T=(M-TC)T0 模值和计数器工作方式有关,本系统选用方式1计数。在方式1时M的值为65536,单片机的主脉冲频率为12MHZ,经过12分频后,采用方式1最大延时是65.536毫秒。所以选择扫描周期为50ms。若使用软件则会耽搁程序流程,显然不可行。相反,时间计时方面却不可能只用计数器,因为显然1秒钟已经超过了计数器的最大定时间,所以我们还必须采用定时器和软件相结合的办法才能解决这个问题。 4.1.2软件延时原理 AT89C52单片机的工作频率为12MHZ,机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/12MHZ)=1us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间,但同时由于单片机的运行速度很快其他的指令执行时间可以忽略不计。 4.1.3 中断原理 本系统主要使用了定时器中断和外部中断,中断信号由引脚T0、INT0和INT1输入,低电平有效,CPU每个时钟周期都会检测INT0和INT1上的信号,单片机允许外部中断以电平方式或负边沿方式两种中断方式输入中断请求信号,可由用户通过设置TCON中IT0和IT1位的状态来实现。以IT0为例,IT0=0,为电平触发方式,IT0=1,为负边沿触发方式,本设计采用电平方式,IE0为其中断标志位,有中断信号则置位,中断服务子程序响应后,IE0自动清零。IE中的EA为允许中断的总控制位,为1开启,EX0为外部中断允许控制位,为1开启。 使用proteus软件进行电路仿真,芯片AT89C52还需要载入代码文件来支持其正常工作以实现预期功能要求。程序代码编写是整块设计的核心容,本系统中利用一个定时器T0完成了交通指示灯所有的切换过程和数码管的倒计时功能,其中指示灯的切换有4种不同的操作,数码管的切换有2种不同的操作,用变量i表示状态的切换。采用C语言进行编程,下面简要介绍下各段程序代码的意义和功能。 4.2 主程序框图 主程序为交通灯四个状态循环转换的死循环,主程序代码和程序框图如下所示。 void main() { Init(); //初始化,基本功能循环工作 while(1) { key(); if(flag1==1&&flag_all!=1) //不在全部通行的模式下时正常刷新计数 { adjust_Time(); flag1=0; } if(flag2==1) { yellowled(); flag2=0; } display(); }} 全部控制程序实际上分为若干模块:键盘设置处理程序,状态灯控制程序,LED显示程序紧停程序,中断服务子程序,红绿灯时间调整程序等。 整个软件程序方面主要分两大部分:主程序部分和中断处理程序。 开始 系统初始化 东西亮绿灯,南北亮红灯 调显示子程序(动态显示) 东西,南北方向换向 东西黄灯闪烁,南北亮红灯 中断处理子程序 处理 返回 图10 系统程序流程图 设计说明:该交通信号灯控制系统的软件设计采用的是顺序执行并反复循环的方法。在正常工作的情况下,每20s循环变化一次。每个循环周期在还剩2s时,正在通行路口的黄灯同时点亮并开始闪烁,以提醒路人上的行人与车辆,交通灯即将发生变化,当紧急情况需要禁止通行时,按下全部禁行按键,黄灯闪3秒后四个方向全变红灯,直到路面恢复正常后,通过按三次功能键即可复位。 5 调试分析与所用芯片 5.1 调试环境 本设计使用仿真软件Proteus和Keil C进行联合调试。原理图在Proteus提供的模板中选择恰当的元器件进行设计绘图,完成电路的搭建,发现设计中的错误与时改正。所有c语言源程序都在Keil C下编写,对仿真软件进行相应的设置后,Keil C和Proteus能进行通信,即在Keil C中全速运行程序时,Proteus中的单片机系统也会自动运行。系统的软件调试借助于STC仿真器,在进行系统软件的连续调试之前要先进行软件的初调,就是要使各个子程序模块运行正确,程序的运行流程正确。软件调试主要分以下几个步骤进行: 1. 功能子程序的调试,主要是查看每个子程序是否正确,这样方便查错。 2. 程序流程的调试。主要是查看程序运行的步骤是否正确,在某时刻程序运行所处的位置是否正确,是否能正确运行各个中断服务程序。 5.2所用芯片与参数 表2 所用芯片 序号 名称 元件型号 参数 数量 1 单片机 AT89C52 1 2 指示灯 LED-RED\GREEN\YELLOW 12(各4个) 3 8段两位共阳数码管 7SEG-MPX2-CA 4 4 电容 CAP 22pF 2 5 电解电容 CAP-ELEC 10μF 1 6 晶振 CRYSTAL 12MHZ 1 7 电阻 RES 100Ω 12 8 电阻 RES 500Ω 1 9 排阻 RESPACK-8 10K 1 10 按键 BUTTON 6 6 个人小结 这次是我认为最有意义的一次课程设计,从原理图设计到软件仿真,我从中收获了许多。刚开始设计时,我就在校门口仔细观察交通灯的转换,经过研究思考最终得到了上述的交通灯状态转换表。 对于交通灯这个题目,由于刚学了PLC实现交通信号灯的控制实验,所以就想通过不同的核心器件来实现同样的功能,来加深自己在这个题目上的深入研究,在确定题目之后,查阅了大量的资料,初步完成了电路设计方案。 在程序编写上,我选择了用KEIL C语言进行编程,。在整个程序的编写过程中,采用模块化,编一个子程序仿真一个,通过Keil 和proteus两个软件来实现的。Keil 帮助检查程序是否存在语法错误之类的问题,同时可以生成hex文件,供proteus软件仿真使用。通过一周的课程设计,使我更深入的学习了AT89C52单片机,尤其是在中断程序的编写上学到了好多。 七 参考文献 [1]毅坤. 单片微型计算机原理与应用,电子科技大学 1998 [2]夏继强. 单片机实验与实践教程. :航空航天大学, 2001 [3]伟. 单片机C语言程序设计100例.:电子工业, 2009 [5]雷丽文. 微机原理与接口技术.:电子工业, 2001 [6]于永. 51单片机C语言常用模块与综合系统设计.:电子工业, 2007 [7]谭浩强. C语言程序设计.:清华大学, 2005 [8]于永. 51单片机C语言常用模块与综合系统设计.:电子工业, 2007 8附录 附件1 程序代码 3 / 19 #include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int sbit yellowled_nb=P0^3; //南北黄灯 sbit yellowled_dx=P0^0; //东西黄灯 sbit greenled_nb=P0^4; //南北绿灯 sbit greenled_dx=P0^1;//东西绿灯 sbit K1=P3^0; //时间加1调整 sbit K2=P3^1;//时间减1调整 sbit K3=P3^6;//功能键 uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳数码管 uchar code weixuan[]={0x01,0x02,0x04,0x08}; uchar data buf[4]; //显示缓冲区 uchar max_dx=10;//东西绿灯通行时间 uchar max_nb=10;//南北绿灯通行时间 uchar sec_nb;//南北数码指示值 uchar sec_dx;//东西数码管指示值 uchar flag_nb; uchar flag_dx;//黄灯控制 uchar flag_all;//全部禁止黄灯控制标志 uchar t;//控制禁止时的黄灯闪烁时长 uchar flag1,flag2;//flag1为1s定时标志,flag2为黄灯闪烁标志 uchar data time,time1;//time控制1s定时,time1控制黄灯闪烁时间 bit set=0;//交通灯方向切换标志 int adjust_flag=-1;//功能选择位 //毫秒延时函数 void delayms(uint ms) { uint j,k; for(j=0;j<ms;j++) for(k=0;k<110;k++);} //调刷新计时数据缓冲 void adjust_BUFFER() {buf[1]=sec_nb/10; //第1位 东西秒十位 if(buf[1]==0) { buf[1]=10;} buf[0]=sec_nb%10; //第2位 东西秒个位 buf[3]=sec_dx/10; //第3位 南北秒十位 if(buf[3]==0) { buf[3]=10; } buf[2]=sec_dx%10; //第4位 南北秒个位 } //刷新调整南北时间缓冲 void adjust_BUFFER1() {buf[1]=max_nb/10; //第1位 东西秒十位 if(buf[1]==0) { buf[1]=10; } buf[0]=max_nb%10; //第2位 东西秒个位 buf[3]=max_dx/10; //第3位 南北秒十位 if(buf[3]==0) { buf[3]=10; } buf[2]=max_dx%10; //第4位 南北秒个位 } void key1()//调整时间(+1) {//调整对象标志位 if(adjust_flag==0&&flag_all!=1) { max_nb++; //南北加1S if(max_nb==100) max_nb=5;//最小为5 } else if(adjust_flag==1&&flag_all!=1) { max_dx++;//东西加1S if( max_dx==100) max_dx=5; } if(adjust_flag!=-1&&flag_all!=1) {adjust_BUFFER1();} } void key2()//调整时间(-1) {//调整对象标志位 if(adjust_flag==0&&flag_all!=1) { max_nb--; //南北减1S if(max_nb==4) max_nb=99;//最大为120 } else if(adjust_flag==1&&flag_all!=1) { max_dx--; //东西减1S if(max_dx==4 ) max_dx=99; } if(adjust_flag!=-1&&flag_all==0) {adjust_BUFFER1();} } void key3()//功能键判断 {adjust_flag++; if(adjust_flag>=2) {adjust_flag=-1; } if(adjust_flag==-1) { if(flag_all==1) { flag_all=0; } sec_nb=max_nb-2; sec_dx=max_nb; TR0=1; P0=0xeb; adjust_BUFFER(); } else { if(flag_all!=1) adjust_BUFFER1(); }} void key() //按键扫描 { if(K1==0)//扫描按键1 (+1) { delayms(10); if(K1==0) { key1(); while(!K1); } } if(K2==0)//扫描按键2 (-1) { delayms(10); if(K2==0) { key2(); while(!K2); } } if(K3==0)//扫描按键2 (-1) { delayms(10); if(K3==0) { TR0=0; key3(); while(!K3); } }} void display()//显示数据 { uchar i; for(i=0;i<4;i++) { P1=0x00; delayms(2); P2=table[buf[i]]; P1=weixuan[i]; delayms(4); } } //控制黄灯闪烁 void yellowled() { if(flag_nb==1) { yellowled_nb=~yellowled_nb; } else if(flag_dx==1) { yellowled_dx=~yellowled_dx; } if(flag_all==1) { yellowled_nb=~yellowled_nb; yellowled_dx=~yellowled_dx; t++;//一次闪烁时间为250ms if(t>=12) { t=0;TR0=0; P0=0xdb; } }} void adjust_Time() { sec_dx--; sec_nb--; if(set==0)//如果是南北方向通行时 { if(sec_nb==0) { if(flag_nb==0) { sec_nb=2; flag_nb=1;//南北黄灯控制 greenled_nb=1; //关绿灯 yellowled_nb=0;//南北黄灯亮 } else { flag_nb=0;//南北黄灯控制位清零 set=1; sec_dx=max_dx-2; sec_nb=max_dx; P0=0xdd; } } } else { if(sec_dx==0)//如果东西方向通行时 {if(flag_dx==0) { sec_dx=2; flag_dx=1;//东西黄灯控制 greenled_dx=1; //关绿灯 yellowled_dx=0;//东西黄灯亮 } else {flag_dx=0;//南北黄灯控制位清零 set=0; sec_dx=max_nb; sec_nb=max_nb-2; P0=0xeb; }}} adjust_BUFFER();//刷新显示区 } void Init()//中断初始化 { TMOD=0X61; TH0=0X3C;TL0=0XB0; TH1=0xff;TL1=0xff; ET0=1; ET1=1; EX0=1; IT0=1; EX1=1; IT1=1; TR0=1; TR1=1; EA=1; flag_nb=0; flag_dx=0; set=0;//南北通行 P0=0xeb; sec_nb=max_nb-2; sec_dx=max_nb; adjust_BUFFER(); } void main() { Init(); while(1) { key(); if(flag1==1&&flag_all!=1) //不在全部通行的模式下时正常刷新计数 { adjust_Time(); flag1=0; } if(flag2==1) { yellowled(); flag2=0; } display(); }} void time0( ) interrupt 1 using 1 { TH0=0X3C; TL0=0XB0; time++; time1++; //控制黄灯闪烁 if(time1==5) { time1=0; flag2=1; } if(time==20) { time=0;flag1=1;}} //东西强行按键 void int0(void) interrupt 0 using 1 //外部中断0 { //定时器停止计时,数码管不显示,且东西方向亮绿灯,南北方向亮红灯 uchar i; TR0=0; for(i=0;i<4;i++) {buf[i]=10; } P0=0xdd;} //南北强行按键 void int1(void)interrupt 2 using1 //外部中断1 { //定时器停止计时,数码管不显示,且南北亮绿灯,东西亮红灯 uchar i; TR0=0; for(i=0;i<4;i- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AT89C52 单片机 控制 交通灯 系统 方案
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文