版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 简介如今,交通信号灯安装在各个路口,已成为交通车辆分流最常见、最有效的手段。但这项技术自 19 世纪以来就已经存在。1858年,在英国伦敦的主要街道上安装了一盏以气体为光源的红蓝机械扳手式信号灯,用于指挥车厢的通行。这是世界上第一个红绿灯。 1868 年,英国机械工程师奈特在伦敦威斯敏斯特议会大厦前的广场上安装了世界上第一个燃气红绿灯。它由红绿两个旋转的方形玻璃灯笼组成,红色表示“停止”,绿色表示“注意”。 1869年1月2日,煤气灯爆炸,警察受伤,被取消。1914年,用于电激活的交通信号灯出现在美国。该交通信号灯由安装在纽约市第五街的一座塔上的红色、绿色和黄色圆形光投影仪组成。红灯表示“
2、停止”,绿灯表示“通过”。智能红绿灯指挥人和各种车辆的安全运行,实现红黄绿灯的自动指挥,是城乡交通管理现代化的重要课题。在城乡街道的十字路口,为保证交通秩序和行人安全,一般每条道路上都有一组红黄绿红绿灯。红灯亮,表示禁止通行;车辆继续通过;绿灯亮,表示内容道路通行。红绿灯控制电路自动控制路口红、黄、绿两组红绿灯状态转换,指示各类车辆和行人安全通行,实现路口城乡交通管理自动化。为了实现对交通道路的管理,本文力求在交通管理方面做到先进和科学。对单片机实现的智能红绿灯控制系统进行了分析和应用,采用了系统的软硬件设计方法。有效分流交通,提高交通路口通行能力。2 系统设计要求及总体规划2.1 基本设计要
3、求1)设计一个路口红绿灯控制电路,要求南北方向和东西方向两个路口的车辆交替运行,两个方向可以根据车流量的大小自动调整行驶时间流动。小而短的运输时间。2)每次绿灯变红时,需要黄灯亮5秒才能换车。3)除指示东西、南北方向车道的红、黄、绿灯外,各灯亮的时间由数码管显示(采用倒计时法)。4)同时设置人行横道红绿灯。2.2 系统规划我们将系统设计成可以独立工作的主控制器和客户端的形式,但与传统的C/S模式不同的是,每个终端都可以独立于主控制器工作。即使主控机停止工作,或因故不能正常工作,各终端机仍能正常稳定工作。每个航站楼负责管理交叉路口的多个信号灯。为方便起见,我们将主控机称为主系统,将每台终端机称为
4、子系统。控制系统整体框图如图2-1所示A干道交通信号灯A干道交通信号灯A干道交通信号灯A干道交通信号灯B道交通信号灯B道交通信号灯路口子系统路口子系统图2-1 控制系统的总框图远程主系统计算机路口子系统1)智能红绿灯研究现状目前设计红绿灯的方案有很多,包括应用CPLD设计和实现红绿灯控制器的方法;应用PLC实现交通灯控制系统设计的方法;以及应用单片机实现红绿灯设计的方法。目前全国的红绿灯一般都设在十字路口,红、绿、黄三色指示灯在显眼位置。加上一个倒计时显示计时器来控制骑行。对于正常情况下的安全驾驶,车辆分流还是可以起到一定作用的,但是根据实际驾驶过程,还是有不足的地方:两车道车辆轮流放行时间相
5、同,固定时间,而在路口,一个车道是经常是主干道。 ,车辆较多,放行时间应较长;另一条车道是次干道,车辆较少,放行时间应该更短智能红绿灯设计方案及改进措施鉴于道路上的交通拥堵,十字路口经常拥堵。采用单片机控制技术,提出了软硬件设计方案及改进措施:根据各路口的车流量大小自动调整行驶时间。由于AT89S51单片机有2个计数器和6个中断源,可以满足系统的设计要求。单片机的设计不仅设计简单,而且成本低,用它设计的红绿灯也能满足要求,因此本文采用单片机设计红绿灯。系统组成如图2-2所示:南北检测点南北检测点东西检测点东西检测点紧急控制开关南北红绿黄灯时间显示块东西红绿黄灯时间显示块 T0T1 AT89S5
6、1图 2-2 系统结构框图3 AT89S51单片机简介3.1 单片机概述单片机是微机的一个重要分支,也是一种生命力。单片机,简称单片机,特别适用于控制领域,故又称微控制器。通常,单片机由单个集成电路芯片组成,其中包含计算机的基本功能部件:中央处理器、存储器和I/O接口电路。因此,单片机只需与适当的软件和外部设备相结合,即可成为单片机控制系统。AT89S51是美国ATMEL公司生产的低功耗、高性能CMOS 8位单片机。该芯片包含4k 字节的系统可编程Flash只读程序存储器。该设备采用ATMEL的高密度、非易失性存储技术生产。 8051命令系统和引脚。它在单芯片中集成了可在线( ISP )或传统
7、方法编程的Flash程序存储器和通用8位微处理器。 ATMEL功能强大、成本低廉的AT89S51单片机可以为您提供许多高性价比的产品,可灵活应用于各种控制领域。3.2 AT89S51单片机主要性能参数及主要引脚3.2.1主要性能参数兼容MCU产品,8K字节系统内可编程Flash存储器, 1000次擦除周期,全静态操作:0Hz33Hz ,三级加密程序存储器, 32个可编程I/O口,3个16位定时定时器/计数器八中断源、全双工 UART 串行通道低功耗空闲和掉电模式、掉电后中断唤醒、看门狗定时器、双数据指针、掉电标识符。3.2.2 AT89S51芯片结构介绍中央处理器:中央处理器(CPU)是整个单
8、片机的核心部件。它是一个8位数据宽度的处理器,可以处理8位二进制数据或代码。 CPU负责控制、指挥和调度整个单元系统的协调工作,完成操作和控制输入。输出函数等数据存储器(部分RAM) :数据存储器用于存储更改的数据。 AT89S51的数据存储器地址空间为256个RAM单元,但只有前128个可以作为用户数据存储器使用,后128个被特殊寄存器占用。程序存储器(部分ROM):程序存储器用于存储程序和固定常数等。通常使用只读存储器,其种类很多。闪存用于所有 89 系列微控制器。 AT89S51 配备 4KB 闪存。定时器/计数器(ROM):定时器/计数器用于实现定时和计数功能。 AT89S51 共有两
9、个 16 位定时器/计数器。并行输入和输出 (I/O) 端口:8051 有 4 组 8 位 I/O 端口(P0、P1、P2 或 P3)用于外部数据传输。每个端口由一个锁存器和一个驱动器组成。主要用于实现与外部设备的数据并行输入输出,部分I/O口还有其他功能。全双工串口:A89S51 具有一个全双工串行通信端口,用于与其他设备进行串行数据传输。串口可用作异步通信收发器或同步移位器。时钟电路:时钟电路的作用是产生单片机运行所需的时钟脉冲序列。中断系统:中断系统的主要功能是管理和处理外部或外部终端请求。 AT89S51共有5个中断源,包括2个外部中断源和3个部分中断源。图3-2是AT89S51系列单
10、片机的结构示意图。图3-2 AT89S51系列单片机结构示意图3.2.3主要引脚功能AT89S51 的引脚图如图 3-1 所示:VCC:电源电压GND:地P0口:P0口是一组8位开漏双向I/O口,即地址/数据总线复用口。用作输出端口时,每位可驱动8个TTL逻辑门电路,向端口写“l”可作为高阻输入端口。在访问外部数据存储器或程序存储器时,这组端口线时分转换地址(低 8 位)并复用数据总线,并在访问过程中激活上拉电阻。P1口:Pl为8位双向I/O口,带上拉电阻。 Pl的输出缓冲级可以驱动(吸收或输出电流)4个TTL逻辑门电路。向端口写入“l”,通过该部分的上拉电阻将端口拉高,此时可作为输入端口使用
11、。用作输入端口时,由于存在上拉电阻,当引脚被外部信号拉低时,会输出电流(IIL)。在 Flash 编程和程序验证期间,Pl 接收低 8 位地址。表 1 具有第二种功能的 P1 端口引脚端口引脚第二个功能:P1.5MOSI(用于 ISP 编程)P1.6MOSI(用于 ISP 编程)P1.7MOSI(用于 ISP 编程)P2口:P2为8位双向I/O口,带上拉电阻。 P2的输出缓冲级可以驱动(吸收或输出电流)4个TTL逻辑门电路。向端口写入“1”,通过该部分的上拉电阻将端口拉至高电平。此时,可作为输入端口使用。用作输入端口时,由于部分内有上拉电阻,某个引脚被外部信号拉低。将输出电流 (IIL)。当以
12、 16 位地址访问外部程序存储器或外部数据存储器时(例如,执行 MOVXDPTR 指令),P2 端口致高 8 位地址数据。当访问一个 8 位地址的外部数据存储器时(例如执行 MOVXRi 指令),P2 端口线上的内容(即特殊功能寄存器(SFR)区域中 P2 寄存器的内容)不会在整个访问期间发生变化。在 Flash 编程或验证期间,P2 还接收高位地址和其他控制信号。P3 端口:P3 端口是一组8 位双向I/0 端口,带有部分上拉电阻。端口 3 输出缓冲级可以驱动(灌入或拉出电流)4 个 TTL 逻辑门。当 P3 端口写入“1”时,它们被上拉电阻拉高,可用作输入端口。用作输入端时,外部下拉的 P
13、3 端口将使用上拉电阻输出电流(IIL)。 P3口除了用作总则I/0口外,更重要的用途是它的第二个功能,如下表所示:表 2 具有第二种功能的 P1 端口引脚端口引脚第二个功能:P3.0RXD(串行输入端口)P3.1TXD(串行输出端口)P3.2/INT0(外部中断 0)P3.3/INT1(外部中断 1)P3.4T0(定时器/计数器 0 外部输入)P3.5T1(定时器/计数器 1 外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD 外部数据存储器读选通)P3 端口还接收一些用于 Flash 闪存编程和程序验证的控制信号。RST:复位输入。当振荡器工作时,RST 引脚上的高电平持续超过
14、两个机器周期将使单片机复位。 WDT 溢出将导致该引脚输出高电平,可通过设置 SFR AUXR 中的 DISRT0 位(地址 8EH)来打开或关闭该引脚。 DISRT0 位默认为 RESET 输出高开状态。ALE/:访问外部程序存储器或数据存储器时,ALE(地址锁存使能)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍然会以时钟振荡频率的 1/6 输出固定的正脉冲信号,因此它可以外部输出时钟或用于计时目的。请注意,每当访问外部数据存储器时,都会跳过一个 ALE 脉冲。该引脚还用于在对 F1ash 存储器进行编程期间输入编程脉冲 (PROG)。如有必要,可以通过设置特殊功能寄存
15、器 (SFR) 区域中位置 8EH 的位 D0 来禁用 ALE 操作。当该位被设置时,只有 M0VX 和 M0VC 指令之一,ALE,将被激活。此外,该引脚会被弱拉高。当单片机执行外部程序时,ALE 应设置为无效。程序存储许可()输出是外部程序存储器的读选通信号。 AT89S51从外部程序存储器取指令(或数据)时,每个机器周期有效两次,即输出两个脉冲。访问外部数据存储器时,没有双重有效信号。 /VPP:内容外部访问。为了使 CPU 只访问外部程序存储器(地址为 0000H-FFFFH),EA 端子必须保持低电平(接地)。需要注意的是,如果加密位 LB1 被编程,EA 端的状态将在复位时被锁存。
16、如果 EA 端为高电平(接 VCC 端),CPU 将执行程序存储器中的指令。在对 F1ash 存储器进行编程时,+12V 编程电压 Vpp 被施加到该引脚。XTAL1:振荡器反相放大器和外部时钟发生器的输入端。4 智能红绿灯方案的实现根据设计任务和要求,可以画出控制器的原理框图。为了保证路口的交通安全,交通信号灯自动控制系统常用于控制交通信号。其中,红灯(R)亮,表示禁止通行;黄灯(Y)亮,表示暂停;绿灯(G)亮,内容通过。4.1 系统整体框图如图4-1所示:图 4-1 整体系统框图4.2 智能交通灯系统组成红绿灯系统由四部分组成:车辆检测电路、信号灯电路、时间显示电路、紧急转换开关。4.3
17、智能红绿灯系统的工作原理大家都明白,绿灯释放时间与通过的车辆数量不成正比。例如,20 辆车可以在 20 秒内通过每条车道,但 45 辆车可以在 40 秒内通过每条车道。因为这有一个启动问题,还有一个黄灯等待问题。也就是说,绿灯释放时间越长,单位时间内通过的车辆越多。我们算一下,每条车道20秒可以通过20辆车,一个红绿灯周期是40秒(单个路口),再加上每个状态转换5秒黄灯(一个周期两个转换),也就是一个红绿灯一个周期需要50秒,即50秒内有40辆车通过。通过汽车的平均时间是 1.25 秒。如果将每辆车通过的时间改为40秒,40秒内每条车道可以有45辆车通过,一个红绿灯周期为80秒(单个路口),加
18、上每次状态转换黄灯5秒(一个周期需要两个次换算),即一个红绿灯周期需要90秒,即90秒内有90辆车通过。通过汽车的平均时间仅为 1 秒。显然,在车辆拥挤的情况下,绿灯通过的时间越长,单位时间内通过的车辆就越多,可以有效缓解车辆拥堵问题。当然,绿灯时间不能无限长,还要考虑其他路口的等待时间不能太长。人们总是希望尽可能短地在红绿灯处等待。因此,笔者将绿灯通行时间的上限设置为40秒。非拥堵时段的绿灯通行时间下限为 20 秒。当路口两侧车辆较少时,通行时间设置为20秒,可以大大缩短红灯前车辆的等待时间。当路口两侧车辆较多时,行车时间设置为40秒。4.3.1汽车检测电路它用于判断各个方向的车辆状况。例如
19、,20 秒内可以通过 20 辆车。当20秒内南北方向通过的车辆少于20辆时,判断该方向车辆较少。当该方向通过的车辆数未达到20辆时,判断该方向车辆较少,下次通过仍为20秒。当20秒内南北或北南任意方向经过的车辆达到20辆时,证明该状态车辆较多,下次该方向的绿灯释放时间改为40辆秒。当通过40秒的车辆达到45辆时,判断车辆拥挤,下次绿灯释放时间改为40秒。当过往车辆少于45辆时,判断车辆较少,下次绿灯释放时间改为20秒,以此类推。绿灯最短时间为20秒,上限为40秒,初始时间为20秒。这样一来,一次检测可能不准确,但下次肯定会得到补偿。累积计算非常准确,通常被称为“模糊控制”。因为道路上的汽车数量
20、不可能突然增加,所以堵车是有一个累积过程的。这种控制可以逐步消化不断增加的车辆数量。虽然由于每个路口的绿灯释放时间延长,等待时间较长,但比堵车时的等待时间要短得多。该系统具有成本低、控制准确的特点。图 4-2 显示了路口车辆的通行顺序:图 4-2 路口车辆通行顺序由于南北和北南时间显示是一样的,只要一个方向的车辆多,下次时间就会从东向西延长,西向东也是如此。显示时间选择如表 3 所示。表 3 显示了时间选择车辆状况这个方向的旅行时间这个方向的下一个旅行时间这个方向的旅行时间这个方向的旅行时间南北车少,南车少20 秒20 秒40 秒20 秒南北车少,南北车多20 秒40 秒40 秒40 秒南北车
21、多,南北车少20 秒40 秒40 秒40 秒南北车多,南北车多20 秒40 秒40 秒40 秒东到西少车,西到东少车20 秒20 秒40 秒20 秒东到西车少,西到东车多20 秒40 秒40 秒40 秒东到西车多,西到东车少20 秒40 秒40 秒40 秒东到西车多,西到东车多20 秒40 秒40 秒40 秒4.3.2信号灯电路信号灯用于显示车辆交通状况。下面以一个路口为例,说明红绿灯的四种状态,如图 4-3 所示。每个路口信号灯的转换顺序为:绿灯-黄灯-红绿灯表示内容通行,黄灯表示禁止通行,但已经通过安全线的车辆可以继续通行。绿灯过渡到红灯。 .红灯意味着没有交通。绿灯最短20秒,最长40秒
22、,红灯最短25秒,最长45秒,黄灯5秒。图4-3 红绿灯运行状态4.3.3时间显示电路在红绿灯正上方安装能显示绿灯通过时间和红灯等待时间的显示电路是一个很好的方法。由于东西方向显示的时间与西方向显示的时间相同,南北方向和南北方向显示的时间相同,因此只需要四位数码管显示电路需要考虑,包括东西方向的两个和南北方向的两个。 ,两位数码管的时间可以在0-99秒,完全可以满足系统的要求。数码管的连接方法如图4-4所示。图 4-4 数码管连接方法5.系统软件设计5.1 控制器软件设计5.1.1每秒设置延时方法有两种:一种是使用MCS-51定时器产生溢出中断来确定1秒的时间,另一种是使用软件延时方法。计数器
23、硬件延迟.a 计数器初始值计算定时器工作时,必须将计数器的初始值致给计数器,并将这个值致给 TH 和 TL。加法计数,可自动产生全1到全0的溢出中断请求。因此,我们可以将计数器被填充为零所需的计数值设置为C,初始计数值设置为TC,可以得到如下通式:TC=MC式中,M为计数器的模值,与计数器的工作模式有关。 M 在模式 0 中为 213; M 在模式 1 中为 216; 28 在模式 2 和 3.b 计算公式T=(MTC)T计数或 TC=MC/T计数T count是单片机时钟周期T CLK的12倍; TC 是时序初始值例如单片机的主脉冲频率为T CLK 12MHZ,除以12模式 0 TMAX =
24、 2 13 *1 微秒 = 8.912 毫秒模式 1 TMAX = 2 16 * 1 微秒 = 65.536 毫秒很明显,1秒已经超过了计数器的最大固定时间,所以我们只能通过定时器和软件的结合来解决这个问题。5.1.2 1秒法我们在主程序中使用一个初值为20的软件计数器,让T0定时50毫秒。这样,当 T0 到 50 毫秒时,CPU 响应其溢出中断请求,进入其中断服务程序。在中断服务程序中,CPU首先将软件计数器减1,然后判断是否为零。零表示经过 1 秒返回输出时间显示程序。对应的程序代码(1) 主程序定时器需要设置50毫秒,所以T0工作在模式1。初始值:TC=MT/T计数=2 16 -50ms
25、/1us=15536=3CBOH奥格1000H开始:移动 TMOD,#01H;设T0为定时器模式1移动 TH0, #3CH ;加载定时器的初始值移动 TL0, #BOH ;移动IE,#82H;启用 T0 中断SEBT TRO;启动 T0 计数器移动反渗透,#14H;软件计数器初始值循环:SJMP $;等待中断(2) 中断服务子程序组织机构 00BHAJMP BRT0组织机构 00BHBRT0:DJNZ R0,下一个调整时间;跳转时间和信号灯显示子程序DJNZ:MOV R0,#14H;恢复R0值MOV TH0, #3CH ;重载定时器初值移动 TL0, #BOH ;移动 IE,#82HRET1结
26、尾5.1.3软件延迟MCS-51的工作频率为2-12MHZ,我们选用的8031单片机的工作频率为6MHZ。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/ 6M)=2us。我们可以知道每条指令的周期数,这样我们就可以通过执行的指令数来确定1秒的时间。具体延迟方案分析:DELAY:MOV R4,#08H 延迟 1 秒子程序DE2:LCALL 延迟 1DJNZ R4,DE2RETDELAY1:MOV R6,#0 ;延迟125ms子程序MOV R5,#0DE1:DJNZ R5,$DJNZ R6,DE1RET移动 RN,#数据;字节数为2,机器周期数为1所以这条指令的执
27、行时间为2ms,而DELAY1为双循环,循环次数为256*256=65536 ,所以延迟时间=65536*2=131072us约为125us 。 DELAY R4设置的初始值为8,主延迟程序循环8次,所以125us*8=1秒,因为单片机运行速度非常快,其他指令的执行时间可以忽略不计。5.2 流程图如图5-1所示图5-1红绿灯软件设计流程图5.3 程序源代码组织机构 0000HA_BIT EQU 20H ;用来存放南北十位数字B_BIT EQU 21H ;用来存放南北十位数字C_BIT EQU 22H ;用于存储十位数字D_BIT EQU 23H ;用于存储位数TEMP1 EQU 24H ;用于
28、存储南北第一和第二状态要显示的时间TEMP2 EQU 25H;用于存储第一件事和第二件事要显示的时间TEMP3 EQU 26H;用于存储要在南北第三和第四状态显示的时间TEMP4 EQU 27H ;用于存储要在南北第三和第四状态显示的时间LJMPMAIN组织机构 0003H ;外部中断 0 入口LJMP INT0 ;跳转到外部0中断组织机构 0013H ;外部中断 1 个入口LJMP INT1 ;跳转到外部 1 中断INT0:MOV A,P1;外部 0 中断推加速移动 A,P2 ;中断保护推加速MOV P1,#0FFH ;清除前一个状态MOV P2,#0FFHCLR P1.0CLR P1.4
29、;南北通行,东西禁止通行CLR P1.6CLR P2.3JNB P3.2 ,$ ;判断是否仍处于中断状态流行音乐节MOV P2,A ;返回中断前状态流行音乐节MOV P1,ACC视网膜;从中断返回INT1:MOV A,P1 ;外部1中断推加速;中断保护MOV A,P2推加速MOV P1,#0FFH ;清除前一个状态MOV P2,#0FFHCLR P1.2CLR P2.1CLR P1.3 ;东西进出,南北禁止进出CLR P1.5JNB P3.3 ,$ ;判断是否仍处于中断状态流行音乐节MOV P2,A ;返回中断前状态流行音乐节MOV P1,A视网膜;从中断返回基于单片机的红绿灯信号控制器设计(
30、含源程序及电路图)设计一种基于微控制器的交通灯信号控制器。据了解,东、西、南、北四个方向有红、黄、绿三盏灯,东西方向有两个数码管,南北方向有两个数码管。要求红绿灯按表1定时显示和切换,并要求在数码管上分别倒计时东西方向和南北方向各状态的剩余时间。表1 红绿灯状态切换表南北方向东西方向序列号状态序列号状态1绿灯亮25秒红黄灯灭1红灯亮30秒,绿黄灯灭2黄灯亮5秒红绿灯灭3红灯亮30秒,绿黄灯灭2绿灯亮25秒红黄灯灭3黄灯亮25秒红绿灯灭回到状态 1回到状态 13.2.1 模块一:系统设计(1)任务分析和总体设计思路考题中要呈现的功能主要包括时序功能、动态扫描和状态切换。计时功能:要实现计时功能,
31、需要使用定时器来计时。通过设置定时器的初值来控制溢出中断的时间间隔,然后用一个变量来记录定时器溢出的次数,从而达到1秒计时的功能。当定时器到达1秒时,东西、南北信号灯各状态的暂存剩余时间变量减1。当暂存剩余时间的变量减为0时,切换到下一个状态,同时将下一个状态的初始倒计时值加载到计时变量中。开始下一个状态,循环重复。动态扫描:需要用4个数码管分别显示东、西、北、南的倒计时数字,从每个状态的剩余时间变量中提取“十”和“个”,使用动态扫描方式在数码管上显示倒计时数字。显示。整个程序根据定时器的溢出次数进行计时。每计数1S,对应状态的剩余时间减1,减为0时触发下一个状态的开始。 (2)单片机型号及所
32、需外围设备型号,单片机硬件电路示意图图3-5 红绿灯硬件电路原理图单片机选用MCS51系列AT89S51单片机,选用2个四位共阴数码管组成8位显示模块。驱动,一个74HC244完成对共阴极数码管位置控制线的控制和驱动,另一个74HC244完成数码管的7段码输出,每个7段串联一个100欧的电阻码输出端口限制7段数码管的电流。使用P3端口的P3.0-P3.5完成对发光二极管的控制,实现红绿灯信号的显示。每个发光二极管串联一个500欧姆的电阻来限制电流。硬件电路原理图如图 3-5 所示。 (3)程序设计思路、单片机资源分配及程序流程单片机资源分配 单片机P3口的P3.0-P3.1引脚作为输出控制显示
33、的发光二极管。在计时模块中,需要定义两个数组变量(init_sn3、init_ew3)来存储东西、南北方向不同状态下倒计时的初始值。问题显示状态中每个方向有3种红绿灯,所以数组元素个数为3。还需要定义两个变量(t_sn,t_ew)来临时存储倒计时的剩余时间东西方向和南北方向。在状态切换中,为了明确当前处于哪个状态,在东、西、北方向设置了一个状态变量(state_val_sn,state_val_ew)。当变量增加到 3 时,变为 0 并返回序列号 1 的状态。程序设计思路在设计中,由于没有键盘功能,只涉及定时计数和动态扫描功能。主程序初始化变量后,设置MCU定时器和中断特殊功能寄存器的初始值,
34、并将定时器T1的工作模式设置为8位自动加载模式,定时器每250us溢出一次。初始化变量和寄存器后,主程序进入循环结构,只在循环中进行动态扫描,根据剩余时间在东西、南北方向进行动态扫描和显示。定时和状态的切换是通过定时器的中断服务程序来实现的。在中断服务程序中,每计数一秒,每个方向当前状态的剩余时间减1,减为0时,触发下一个状态。首先,更改交通灯的指示。程序流程(4) 软硬件调试方案软件调试方案:在威孚软件中,在“FileNew File”中新建一个C语言源程序文件,编写相应的程序。在“FileNew Project”菜单中,新建一个工程,将C语言源程序文件包含在工程文件中。在“ProjectC
35、ompile”菜单中编译C源文件,检查语法错误和逻辑错误。编译成功后,生成带有“*.hex”和“*.bin”后缀的目标文件。硬件调试方案:在设计平台中,通过插头将单片机的P3.0-P3.5与独立键盘的相应位连接起来。将程序文件编译成威孚中的目标文件后,运行“单片机下载程序”,选择对应的flash数据文件,点击“Program”按钮,将程序文件下载到单片机的Flash中。然后,上电重启单片机,检查编写的程序是否满足试题要求,试题内容是否完整完整。3.2.2 编程(C语言源程序仅供参考) /晶振:11.0592M T1-250微秒溢出一次/*变量定义: show_val_sn,show_val_e
36、w:显示值0-59 state_val_sn,state_val_ew:状态值南北方向0-绿灯亮; 1 -黄灯亮; 2-红灯亮#include reg51.h sbit SN_green=P32 ;/南北方向绿灯 sbit SN_yellow=P31 ;/南北方向黄灯 sbit SN_red=P30 ;/南北方向红灯 sbit EW_green=P3 5 ;/东西方向绿灯 sbit EW_yellow=P34 ;/东西方向黄灯 sbit EW_red=P33 ;/ /东西方向红灯 unsigned char datat_sn,cnt_ew;无符号整数数据 T1_cnt;无符号字符数据 stat
37、e_val_sn,state_val_ew ;字符代码 led_seg_code10=0 x3f,0 x06,0 x05b,0 x04f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;字符代码 init_sn3=24,4,29;字符代码 init_ew3 =29,24,4; /- void delay(unsigned int i)/Delay while( -i); /- void led_show(unsigned int u,unsigned int v) unsigned char i;我= u%10; /暂存一位P0=led_seg_codei; P2=0
38、xbf;延迟(100); /延迟i=u%100/10; /暂存十位P0=led_seg_codei ; P2=0 x7f;延迟(100); /延迟i=v%10; /暂存一位P0=led_seg_codei; P2=0 xfe;延迟(100); /延迟i=v%100/10; /暂存十位数字P0=led_seg_codei; P2=0 xfd;延迟(100); /延迟 /- - void timer1() 中断 3 /T1 中断 T1_cnt+; if(T1_cnt3999) /如果count3999,时间1s T1_cnt=0; if (cnt_sn!=0) / 南北时序t_sn-; 其他 st
39、ate_val_sn+;如果 (state_val_sn2) state_val_sn=0; t_sn=init_snstate_val_sn; switch (state_val_sn) /根据状态值刷新每个信号灯的状态 case 0: SN_green=0 ;/南北方向绿灯 SN_yellow=1 ;/北-黄灯south direction SN_red=1 ;/南北方向红灯亮; case 1: SN_green= 1 ;/南北方向绿灯 SN_yellow=0 ;/南北方向黄灯 SN_red=1 ;/南北方向红灯亮; case 2:SN_green=1 ;/南北方向绿灯 SN_yellow
40、=1 ;/南北方向黄灯 Light SN_red=0 ;/南北方向红灯断; if (cnt_ew!=0) /东西向时序t_ew-; 其他 state_val_ew+;如果 (state_val_ew2) state_val_ew=0; t_ew=init_ew state_val_ew; switch (state_val_ew) /根据状态值刷新各个信号灯的状态 case 0: EW_green=1 ;/东西绿灯EW_yellow=1;/东西黄灯EW_red=0 ;/东西方向闯红灯; case 1: EW_green=0 ;/东西绿灯EW_yellow=1 ;/东西黄灯EW_red=1 ;/
41、东西红灯断; case 2: EW_green=1 ;/东西绿灯EW_yellow=0 ;/东黄灯EW_red=1 ;/东红灯断; /- - main() /初始化每个变量t_sn=init_sn0; t_ew=init_ew0; T1_cnt=0; state_val_sn=0; /启动后,默认工作在序号1的状态state_val_ew=0; /初始化每个灯的状态SN_green=0;/南北方向绿灯亮SN_yellow=1;/南北方向黄灯灭SN_red=1;/红灯南北方向灯 灯灭EW_green=1 ;/东绿灯灭EW_yellow =1;/东黄灯灭EW_red=0 ;/东红灯亮Bit自动加载
42、定时模式TH1=0 x19;/ /0 x4b; /每500微秒溢出一次; 250=(256-x)*12/11.0592 - x= 230.4 TL1=0 x19; EA=1; /打开中断ET1 =1; TR1=1; /启动定时器T1 while(1) led_show(cnt_sn,cnt_ew);培训四个红绿灯控制系统当今社会,汽车越来越多,交通事故也越来越多。为了减少此类事故的发生,有必要加强对道路的管理。因此,合理设计红绿灯控制系统,可以大大减少此类事情的发生。一、系统功能要求: 1、设计任务是在路口设置红绿灯,并用单片机合理控制。时间方向控制要求东西绿灯、黄灯、红灯、南北红灯、绿灯、黄
43、灯晚上,东西向的黄灯是南北向的红灯。 2、整体设计方案 流行的设计是两条主线相交的十字路口。本设计采用主干道(南北向)和次干道(东西向)交叉口,即主干道通行时间是次干道的两倍。正常情况下,两条主干道的红绿灯转换如图1所示,剩余时间以倒计时方式显示在每条主干道对应的两个LED上;灯全是红色的,当紧急情况解除时,它会恢复到原来的状态。 2. 整体设计方案提示: 1. 假设一个十字路口从东到西,从北到南。初始状态0是从东到西的红光和从北到南的红光。然后转向状态1,东西绿灯通车,南北红灯。一段时间后的状态。 2.东西绿灯灭,黄灯闪几下,南北仍是红色。再次改变状态。 3、南北绿灯通车,东西红灯通行。一段时间后的状态。 4、南北绿灯灭,黄灯闪烁数次。延迟几秒后,东、西灯仍然是红色的。最后循环到状态 1.三。硬件设计电路原理图如下:4. 软件设计1. 流程图2. 编程组织机构 0000HMOV P0,#00H ;确保 P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年村级科普专干笔试试题及答案解析
- 设备年度评估报告
- 思维训练营教学大纲
- 抑郁症症状分析及护理策略
- 正保云课堂实训
- 急诊医学疾病诊疗技能培训与护理指南
- 2026 幼儿情绪管理明智情绪长远规划课件
- 膀胱炎症状解析及护理方法分享
- 会计职业起步指南
- 甲状腺触诊评估
- 养老社区2025年定位手环协议
- 2026年医学微生物学复习押题宝典通关考试题库附答案详解【突破训练】
- 2026云南楚雄州武定县事业单位选调37人备考题库及答案详解(真题汇编)
- 高中政治必修+选必核心答题术语(简化版)
- 放射药物标记-洞察及研究
- 2025年江苏事业单位招聘考试综合类结构化面试真题试卷及答案解析
- 校园互助平台创业计划
- 建筑工程英语英汉对照工程词汇
- 酒店厨房奖罚制度培训
- 2023年海南省工会系统招聘考试题库及答案解析word版
- 大管轮实习记录簿【范本模板】
评论
0/150
提交评论