交通灯控制器的设计讲解
- 格式:doc
- 大小:254.50 KB
- 文档页数:23
交通灯控制系统设计1. 引言交通灯控制系统是城市交通管理的重要组成部分,通过控制交通灯的信号灯来指示车辆和行人通行状态,提高道路交通的安全性和效率。
本文将介绍一个交通灯控制系统的设计方案,包括系统的硬件组成、工作流程和功能实现。
2. 系统硬件设计2.1 控制器交通灯控制系统的核心是控制器,它负责接收输入信号,控制信号灯的状态,并输出相应的控制信号。
控制器通常由微控制器或可编程逻辑控制器(PLC)构成,具备较强的处理能力和控制灵活性。
2.2 信号灯信号灯是交通灯控制系统的输出设备,用于指示车辆和行人的通行状态。
典型的信号灯由红、黄、绿三个灯组成,红色表示停止、黄色表示准备、绿色表示通行。
2.3 传感器传感器用于获取与交通流量相关的信息,为交通灯控制系统提供输入数据。
常用的传感器包括车辆检测器、行人检测器和环境光传感器。
车辆检测器可以通过感应车辆的存在来调整交通灯的信号灯时间,行人检测器用于检测行人的存在并延长绿灯时间,环境光传感器可以根据光线强度自动调整信号灯的亮度。
2.4 通信设备交通灯控制系统通常需要与其他设备进行通信,例如与中心交通管理系统进行数据交换、与红绿灯时序控制器进行通信等。
为此,通信设备如无线模块、以太网接口等是必需的。
3. 系统工作流程交通灯控制系统的工作流程可分为以下几个步骤:1.接收输入信号:通过传感器获取交通流量、车辆和行人的信息。
2.状态判断:根据输入信号判断当前的交通状况,如车辆是否排队、行人是否需要过马路等。
3.灯光控制:根据判断结果,控制信号灯的状态。
例如,如果没有车辆和行人需要通行,则可以使所有信号灯都为红灯;如果有车辆排队等待通行,则根据交通流量调整绿灯的时间。
4.数据更新:根据交通灯状态的变化,更新相关的数据,如交通流量统计、时序控制参数等。
5.状态监测:监测信号灯的运行状态,定期检查硬件设备,如传感器和控制器的正常工作。
4. 功能实现交通灯控制系统主要具备以下功能:•信号灯的时序控制:根据交通流量和行人需求,动态调整信号灯的时序,以保证交通的流畅和安全。
交通信号灯控制器的设计交通信号灯控制器是城市交通系统中重要的组成部分之一,它利用先进的计算机技术和电子控制技术控制道路上的交通流量,保证道路上的车辆和行人安全有序地通行。
这篇文档将介绍交通信号灯控制器的设计原则、算法和实现方法。
一、设计原则交通信号灯控制器的设计需要考虑多种因素,如交通流量、道路网络、道路等级、地形等。
下面是交通信号灯控制器的设计原则:1.安全性交通信号灯控制器的设计的首要原则就是保证交通安全,防止事故的发生。
在交通拥堵时为了快速清理道路,信号可以被调整,但这需要在安全范围内进行。
2.绿波效果在交通信号灯控制器设计中,绿波效应是需要考虑的一个因素。
在城市中,涌现过多的汽车或者人群会导致拥堵,影响交通流量。
如果可以通过信号集成与同步性来实现绿波效应,这将帮助提升交通流量。
3.效率交通灯控制器的设计需要考虑效率和经济性。
信号点中车流量小的地方可以降低信号计次,提高通行效率降低油耗。
二、设计算法现代交通信号灯控制器算法采用了人工智能技术,根据计算机模型、数学模型和经验模型的结果进行优化和调节。
因此,在市内街区的信号灯控制中,需要使用算法,实现最佳效果。
1.单点控制算法这种算法包括历史算法、时间算法和自适应算法。
历史算法利用统计方法分析过去历史的交通流量,对信号灯进行预测。
时间算法是使用比较稳定的时间间隔,更加科学有效;而自适应算法可以适应变化的交通状况,实现在动态交通流量的情况下的灵活调整。
2.多点控制算法等待队列和优先队列是多点控制算法中广泛使用的技术。
基于地图网络的模型,利用算法对交通数据进行分析,实现接下来信号灯控制的优化分配,以更好地控制交通流量。
优先队列是基于车辆使用的道路的信息和车辆的可变避让情况,以直接自适应性为朝向的灯计算。
三、实现方法现代交通信号灯控制器使用多种现代技术实施,如人工智能、机器学习和深度学习等。
下面是实现方法:1.人工智能技术人工智能技术包括机器学习和深度学习等。
交通灯控制器设计一.系统功能设计要求设计制作一个用于十字路口的交通灯控制器,要求如下:(1)南北和东西方向各有一组红、绿、黄灯来指挥交通,持续时间分别为25S,20S,和5S。
(2)当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止。
(3)当特殊情况结束后,控制器恢复原来状态,继续正常运行。
(4)用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间。
二.设计原理1.交通灯控制器的状态转换根据题目要求将将红绿灯的状态转换列成如下表:2.设计方案1)由于交通灯需要使用2位7段LED数码管指示通行剩余时间,故采用LED动态扫描方式显示当前时间。
频率设定CLK1k对应的频率为50MHZ。
2)控制模块是交通灯的核心,主要控制交通灯按工作顺序自动变换,同时控制倒计时模块工作,每当倒计时回零时,控制模块接收到一个计时信号,从而控制交通灯进入下一个工作状态。
3)每个方向有一组2位倒计时器模块,用以显示该方向交通灯剩余的点亮时间。
4)显示模块由两部分组成,一是由七段数码管组成的倒计时显示器,每个方向两个七段数码管;二是由发光二极管代替的交通灯,每个方向3个发光二极管。
三.变量符号说明其中,CLK1K为系统时钟信号输入端,SN为禁止通行信号输入通行信号输入端,light0为东西红灯信号输出端,light1为东西黄灯信号输出端,light2为东西绿灯信号输出端,light3为南北红灯信号输出端,light4为南北黄灯信号输出端,light5为南北绿灯信号输出端,led1、led2、led3、led4为数码管地址选择信号输出端。
四.代码说明library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Hongld ISport (clk1k,SN:in std_logic; --SN紧急情况led1, led2, led3, led4 :out std_logic_vector (6 downto 0);--显示管显示时间用light:out std_logic_vector (5 downto 0)); --红绿黄灯end Hongld;architecture traffic1 of Hongld ISsignal S:std_logic_vector (1 downto 0); --状态signal DXT:std_logic_vector(7 downto 0):=X"01"; --东西方向时间signal NBX:std_logic_vector(7 downto 0):=X"01"; --南北方向时间signal ART,AGT,AYT,BRT,BGT,BYT: std_logic_vector(7 downto 0); --红绿黄灯信号signal temp: integer range 0 to 49999999; --产生1s计数器时计数signal clk: std_logic;beginART<="00100101";AGT<="00100000";AYT<="00000100";BRT<="00100101";BGT<="00100000";BYT<="00000100";process(clk1k) -- 选频率为50MHZ beginif (clk1k'event and clk1k='1') thenif temp=49999999 thentemp<=0;clk<='1';elsetemp<=temp+1;clk<='0';end if;end if;end process;process(clk,DXT,NBX) --状态转换进程beginif clk'event and clk ='1' thenif(DXT ="00000001")OR (NBX = "00000001") then S<=S+1;else S<=S;end if; --状态转换结束end if;end process;process (clk,SN,S) --倒计时模块beginif SN = '1' then DXT<=DXT; NBX<=NBX;elseif clk'event and clk='1' thenif (DXT="0000000") OR (NBX="00000000") thencase S ISwhen "00"=>DXT<=ART; NBX<=BGT; --南北红灯、东西绿灯when "01"=>NBX<=BYT; --南北红灯、东西黄灯when "10"=>DXT<=AGT; NBX<=BRT; --南北绿灯、东西红灯when "11"=>DXT<=AYT; --南北黄灯、东西红灯when others=>NULL;end case;end if;if DXT/="00000000" thenif DXT(3 downto 0)= "0000" thenDXT(3 downto 0)<="1001";DXT(7 downto 4)<=DXT(7 downto 4)-1;else DXT(3 downto 0)<=DXT(3 downto 0)-1;DXT(7 downto 4)<=DXT(7 downto 4);end if;end if;if NBX/="00000000" thenif NBX(3 downto 0)="0000" thenNBX(3 downto 0)<="1001";NBX(7 downto 4)<=NBX(7 downto 4)-1;else NBX(3 downto 0)<=NBX(3 downto 0)-1;NBX(7 downto 4)<=NBX(7 downto 4);end if;end if;end if;end if;end process; --倒计时模块结束process(DXT,NBX,S,SN) --显示模块begincase NBX(3 downto 0) iswhen "0000"=>led1<="1000000";when "0010"=>led1<="0100100"; when "0011"=>led1<="0110000"; when "0100"=>led1<="0011001"; when "0101"=>led1<="0010010"; when "0110"=>led1<="0000010"; when "0111"=>led1<="1111000"; when "1000"=>led1<="0000000"; when "1001"=>led1<="0010000"; when others=>led1<="1111111"; end case;case NBX(7 downto 4) iswhen "0000"=>led2<="1000000"; when "0001"=>led2<="1111001"; when "0010"=>led2<="0100100"; when "0011"=>led2<="0110000"; when "0100"=>led2<="0011001"; when "0101"=>led2<="0010010"; when "0110"=>led2<="0000010"; when "0111"=>led2<="1111000"; when "1000"=>led2<="0000000"; when "1001"=>led2<="0010000"; when others=>led2<="1111111"; end case;case DXT(3 downto 0) iswhen "0000"=>led3<="1000000"; when "0001"=>led3<="1111001"; when "0010"=>led3<="0100100"; when "0011"=>led3<="0110000"; when "0100"=>led3<="0011001"; when "0101"=>led3<="0010010"; when "0110"=>led3<="0000010"; when "0111"=>led3<="1111000"; when "1000"=>led3<="0000000"; when "1001"=>led3<="0010000"; when others=>led3<="1111111"; end case;case DXT(7 downto 4) iswhen "0000"=>led4<="1000000"; when "0001"=>led4<="1111001"; when "0010"=>led4<="0100100";when "0100"=>led4<="0011001";when "0101"=>led4<="0010010";when "0110"=>led4<="0000010";when "0111"=>led4<="1111000";when "1000"=>led4<="0000000";when "1001"=>led4<="0010000";when others=>led4<="1111111";end case;if SN ='1' then light<="001001";elsecase S ISwhen "00"=>light<="010001";when "01"=> light <="100001";when "10"=> light <="001010";when "11"=> light <="001100";when others=>NULL;end case;end if;end process;end traffic1;五.仿真波形图仿真时序波形图。
交通灯控制器的设计与实现一、实验目的1.了解交通灯管理的基本工作原理。
2.熟悉8253计数器/定时器、8259A中断控制器和8255A并行接口的工作方式及应用编程。
3.掌握多位LED显示的方法。
二、实验内容与要求设计一个用于十字路口的交通灯控制器。
1.基本要求:1)东西和南北方向各有一组红,黄,绿灯用于指挥交通,红,黄,绿的持续时间分别为25s,5s,20s。
2)当有紧急情况(如消防车)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复原来状态,正常工作。
3)一组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间。
2.提高部分:1) 实时修改交通灯的持续时间。
2) 根据不同时段对主要交通方向的信号进行调整。
3) 可以使用LCD显示提示信息。
三、实验报告要求1.设计目的和内容2.总体设计3.硬件设计:原理图(接线图)及简要说明4.软件设计框图及程序清单5.设计结果和体会(包括遇到的问题及解决的方法)四、总体设计交通灯的工作过程如下:设十字路口的1、3为南,北方向,2、4为东西方向,初始态为4个路口的红灯全亮。
之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车,2个路口的LED数码管开始倒计时25秒。
延迟20秒后,1、3路口的绿灯熄灭,而1,3路口的黄灯开始闪烁(1HZ)。
闪烁5次后,1、3路口的红灯亮,同时2、4路口的绿灯亮,2、4路口方向开始通车,2个路口的LED数码管重新开始倒计时25秒。
延迟20秒时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁。
闪烁5次后,再切换到1、3路口方向。
之后,重复上述过程。
当有紧急情况时,2个方向都红灯亮,倒计时停止,车辆禁止通行,当紧急情况结束后,控制器恢复以前的状态继续工作。
在设计中采用6个发光二极管来模拟2个路口的黄红绿灯,每个路口用2个数码管来显示通行或禁止剩余的时间。
紧急情况用一个单脉冲发生单元申请中断来模拟,紧急情况结束后,再发一个中断来恢复以前的状态。
交通灯控制器设计原理
交通灯控制器设计的核心原理主要包含定时器和译码器的工作方式。
定时器由不系统秒脉冲(由时钟脉冲产生器提供)同步的计数器构成。
计数器在状态信号ST作用下首先清零,然后在时钟脉冲上升沿作用下,计数器从零开
始进行增1计数,向控制器提供模5的定时信号TY和模25的定时信号TL。
译码器则输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作。
控制器是系统的主要部分,由它控制定时器和译码器的工作。
此外,还需要考虑到实际应用中的一些细节,例如信号灯的闪烁频率、颜色和持续时间等,以确保交通灯控制器能够有效地控制交通流量,提高交通效率并保障交通安全。
以上内容仅供参考,如需更多信息,建议查阅相关文献或咨询交通工程专家。
交通灯PLC控制系统设计交通灯是城市交通管理的重要组成部分,交通灯控制系统的设计对于保障交通安全和优化交通流量起着关键作用。
PLC(可编程逻辑控制器)技术在交通灯控制系统中得到了广泛应用,本文将从系统设计的整体框架、PLC程序设计、硬件选型以及系统特点等方面来详细介绍。
交通灯PLC控制系统设计的整体框架主要包括信号采集模块、信号处理模块、控制模块和执行模块四部分。
信号采集模块主要负责将交通流量、行人流量等信息转化为电信号输入给PLC控制器;信号处理模块对采集到的信号进行处理,如检测交通流量的高低以及行人通过的情况;控制模块根据信号处理结果,生成控制信号输出给执行模块;执行模块实现交通灯的控制,通过电路和执行器实现交通灯的开关。
PLC程序设计是交通灯PLC控制系统设计的核心部分,主要包括输入端口设置、控制逻辑设计、输出端口设置和通信设置等。
在输入端口设置中,确定采集到的数据类型和数据源,如交通流量和行人流量分别通过传感器采集。
控制逻辑设计是根据交通灯的状态和信号控制规则确定交通灯的控制方式,比如根据交通流量高低切换交通灯的状态。
输出端口设置是将确定好的控制信号输出到对应的执行模块,如输出信号控制交通灯的红绿灯状态。
通信设置是实现与其他相关系统的联动,如与监控系统的数据交互。
硬件选型是交通灯PLC控制系统设计的重要环节,主要包括PLC控制器、传感器、执行器和电源等。
PLC控制器应该具有高性能、稳定可靠的特点,能够满足交通灯控制系统的需求。
传感器的选型应基于交通流量和行人流量的检测需求,常用的有光电传感器、气压感应器等。
执行器的选型应根据交通灯的类型确定,如LED灯管、数码管等。
电源的选型应满足交通灯控制系统的供电需求,选用稳定可靠的电源。
交通灯PLC控制系统设计具有以下特点:灵活性高、可靠性强、实时性好。
PLC控制器的可编程性使得交通灯的控制逻辑可以根据实际需求进行灵活调整,满足不同时间段的交通流量要求。
交通灯信号控制器仿真设计交通灯信号控制器是城市道路交通管理系统中的重要组成部分,通过控制交通信号灯的变换来指挥车辆和行人的通行,以确保交通有序、安全、高效。
为了提高交通信号控制器的性能和稳定性,通常会进行仿真设计来对其进行优化和测试。
本文将介绍交通灯信号控制器的仿真设计过程,并详细讨论其原理和实现方法。
一、交通灯信号控制器的原理在城市道路交通中,交通灯信号控制器需要根据路口的车流量和行人需求来确定每个方向的绿灯时间,以实现交通的高效通行。
同时,还需要考虑到不同时间段交通流量的变化,灵活地调整交通信号的变换时间,以达到最佳的交通控制效果。
二、交通灯信号控制器的仿真设计方法1.确定仿真目标:首先需要明确交通灯信号控制器的仿真目标,包括优化绿灯时间、减少等待时间、提高交通效率等指标。
根据这些目标,确定仿真模型的概要设计和实现方法。
2.建立仿真模型:根据交通灯信号控制器的原理和实际运行情况,建立相应的仿真模型。
这包括车辆和行人的动态模型、交通信号灯的工作模式、路口的拓扑结构等方面。
3.设定仿真参数:确定仿真所需的参数,包括车辆流量、行人需求、信号灯变换时间、路口长度等。
根据实际情况,设定合理的参数范围,以确保仿真结果的准确性。
4.编写仿真程序:利用仿真软件或编程语言,编写交通灯信号控制器的仿真程序。
根据建立的模型和设定的参数,模拟不同情况下的交通流量和信号控制效果,评估控制器的性能和稳定性。
5.优化设计方案:根据仿真结果,对交通灯信号控制器的设计方案进行优化和改进。
可以调整绿灯时间、增加延时器、改变信号灯的配时等方法,以提高交通控制效果。
6.验证仿真结果:对优化后的设计方案进行验证,检验其效果和可靠性。
通过对比仿真结果和实际数据,评估交通灯信号控制器的性能和稳定性。
三、交通灯信号控制器的仿真设计案例以市中心的交通路口为例,设计一个交通灯信号控制器的仿真方案。
该路口存在车辆和行人的交通需求,需要根据不同时段的交通流量来控制信号灯的变换,以确保交通有序通行。
交通灯控制器数电课程设计一、引言交通灯控制器是城市交通管理中的重要设备,用于控制道路上的交通信号灯的亮灭状态。
本文将基于数电课程设计一个简单的交通灯控制器电路,并介绍其原理和实现过程。
二、设计原理交通灯控制器的设计需要考虑以下几个方面的因素:1. 灯的亮灭状态:交通灯通常包括红灯、黄灯和绿灯,每种灯的亮灭状态需要根据交通规则进行控制。
2. 灯的切换时间:交通灯的切换时间需要合理设置,以保证交通流畅和安全。
3. 输入信号的获取:交通灯控制器需要根据外部输入信号来控制灯的切换,如道路上的车辆、行人等。
三、电路设计1. 时钟电路:交通灯控制器需要一个时钟信号来控制灯的切换时间。
可以通过使用555定时器构建一个稳定的时钟电路。
2. 计数器电路:交通灯控制器需要一个计数器来计算时间,并根据时间来控制灯的切换。
可以使用74LS90或74LS93等计数器芯片实现。
3. 逻辑门电路:交通灯控制器需要逻辑门电路来实现交通灯状态的控制和切换。
可以使用与门、或门、非门等逻辑门芯片来实现。
四、实现过程1. 时钟电路的设计:根据555定时器的工作原理,选择合适的电阻和电容值,构建一个稳定的时钟电路。
2. 计数器电路的设计:根据交通灯的切换时间要求,设置计数器的计数值,并将计数器与时钟电路连接,实现计数器的工作。
3. 逻辑门电路的设计:根据交通灯的状态要求,使用逻辑门芯片构建一个交通灯控制电路,实现交通灯的切换和控制。
4. 输入信号的获取:可以使用传感器等设备来获取道路上的车辆、行人等输入信号,并将其与交通灯控制器连接,实现灯的切换。
五、功能扩展1. 灯的数量扩展:可以根据实际需要,扩展交通灯的数量,如添加左转灯、右转灯等。
2. 信号优先级控制:可以根据不同道路的交通状况,设置交通灯的信号优先级,以提高交通效率。
3. 线路保护功能:可以在交通灯控制器中添加线路保护装置,以防止线路过载或短路等故障。
六、总结本文基于数电课程设计了一个简单的交通灯控制器电路,并介绍了其原理和实现过程。
交通信号灯控制器的设计交通信号灯控制器是交通管理中的重要设备之一,它负责控制交通信号灯的切换,确保交通顺畅和安全。
设计一个交通信号灯控制器需要考虑多个因素,包括交通流量、路口结构、交通信号灯状态等。
下面将详细介绍交通信号灯控制器的设计。
首先,交通信号灯控制器的设计需要考虑交通流量的监测与分析。
通过在道路上安装车辆检测器,可以实时监测车辆数量和车辆速度等信息。
通过对这些数据的分析,可以了解交通流量的变化情况,从而做出合理的信号灯切换决策。
其次,交通信号灯控制器的设计还需要考虑路口结构。
不同的路口结构对信号灯的控制策略有不同的要求。
例如,十字路口和T字路口的信号控制方式有所不同。
十字路口一般采用双向绿灯与双向直行绿灯交替控制,而T字路口一般采用主路直行与左转绿灯交替控制。
因此,交通信号灯控制器的设计需要根据路口结构来确定合适的控制策略。
此外,交通信号灯控制器的设计还需考虑交通信号灯的状态。
交通信号灯一般分为红灯、绿灯和黄灯三种状态。
在信号灯切换的过程中,需要保证交通的连续性和顺畅性。
例如,当信号灯从绿灯切换到红灯时,需要给予行驶中的车辆足够的刹车距离,从而确保交通的安全。
此外,为了适应实际交通状况的变化,交通信号灯控制器的设计还需要具备自适应能力。
通过引入自适应算法,控制器可以根据实时交通流量和路况调整信号灯的切换策略,以达到最优的交通控制效果。
最后,交通信号灯控制器的设计还需要考虑可靠性和安全性。
控制器需要具备故障检测和容错机制,以应对可能出现的故障情况。
此外,为了防止非法操作和攻击,控制器还需要具备安全防护措施,如密码加密和访问控制等。
总结起来,交通信号灯控制器的设计需要综合考虑交通流量、路口结构、交通信号灯状态等多个因素。
通过合理设计控制策略和引入自适应算法,控制器可以实现对交通信号灯的有效控制,确保交通的顺畅和安全。
同时,为了保证控制器的可靠性和安全性,需要考虑故障检测、容错机制和安全防护措施等。
目录1设计要求 (1)1.1研究交通灯控制系统的意义 (1)1.2课程设计的内容 (1)1.3课程设计具体要求 (1)2设计方案及论证 (1)2.1总体设计思路 (1)2.2系统设计框图 (2)3设计原理及电路图 (2)3.1硬件设计 (2)3.1.1单片机最小系统 (2)3.1.2显示电路 (3)3.1.3 交通灯模块 (3)3.3.4系统总设计图 (4)3.2软件流程图 (4)3.2.1打开keilc软件 (4)3.2.2新建工程(project) (5)3.2.3新建工程并保存到D盘新建文件夹 (5)3.2.4设置工程 (5)3.2.5建立文本文件,并保存为jiaotong.c文件 (6)3.2.6编译,链接,运行 (6)4元器件清单 (7)5元器件识别与检测 (8)6软件编程与调试 (8)6.1重点算法 (8)6.1.1 延时算法 (8)6.1.2 绿灯闪烁算法 (9)6.1.3 黄灯闪烁算法 (10)6.1.4 数码管显示算法 (10)6.2总体程序 (11)6.3运行仿真结果 (19)6.3.1主干道通行仿真结果 (19)6.3.2黄灯显示仿真结果 (19)6.3.3支干道通行仿真结果 (20)7设计心得 (20)8参考文献 (20)1设计要求1.1研究交通灯控制系统的意义作为一种交通规则的指示,交通灯起着及其重要的作用。
从最初的单车道到现在的四车道八车道等,交通指示的自动控制也越来越完善。
它不再仅仅拥有交通指示的作用,还有其它特殊情况的处理,比如对闯红灯的肇事者进行的监督,紧急救护车的通过时保持道路畅通,等等都需要非常的处理,这也是对交通灯功能的新要求。
而且,也从最初的只有红,黄,绿三种灯的指示到现在的倒计时电子显示,让人们从单一的信号判别到时间的准确明了有了进一步认知。
这都表明交通灯的研究还具有它实际的意义。
1.2课程设计的内容交通灯控制电路自动控制红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现交通管理的自动化。
1.3课程设计具体要求(1)用红、绿、黄三色发光二极管做信号灯:主干道为东西向,有红、绿、黄三个灯;支干道为南北向,也有红、绿、黄三灯。
(2)主干道绿灯时间长为45S,黄灯为5S,支干道为25S。
(3)能实现时间显示功能。
2设计方案及论证2.1总体设计思路电源提供方案:采用独立的5V稳压电源,此方案稳定可靠,且有各种成熟电路可供选用。
显示界面方案:采用数码管和点阵LED相结合的方法,因为实际既要求倒计时施主输出,又要求又状态灯输出等,为方便观看并考虑到现实状况,用数码管与LED分别显示时间和提示信息。
这种方案既满足系统功能要求,又减少了系统实现的复杂度。
主控制:采用AT89C51单片机作为控制器,控制交通灯系统实行通行倒计时及左拐、右拐、直行、行人通行。
指示采用八位共阴极数码管显示器。
这种方案设计占用单片机的端口最少,硬件也少。
耗电也最小。
交通灯的采用:使用led二极管,工作电压为1.8V,驱动电流为10MA,在电路中计算得出,(5v-1.8V)/10MA=320Ω,即加电阻阻值320Ω。
2.2系统设计框图图1 系统设计框图3设计原理及电路图本次的交通灯控制系统设计,利用AT89C51单片机最小系统作为最主要部分进行电路控制,用LED-GREEN作为绿灯,LED-RED作为红灯,LED-YELLOW作为黄灯,使用7SEG-BCD共阴极数码管对各个进口道的通行时间进行控制显示。
下面分硬件软件分别介绍:3.1硬件设计3.1.1单片机最小系统单片机最小系统包括AT89C51单片机芯片,时钟电路和复位电路。
其中AT89C51单片机芯片是整个系统的核心,程序烧录到芯片中,通过芯片控制电路;时钟电路由一个晶振和两个电容构成,用于产生系统时钟;图2 单片机最小系统3.1.2显示电路使用7SEG-8位共阴极数码管对显示电路进行设计图3 数码管显示电路3.1.3 交通灯模块图4交通灯系统3.3.4系统总设计图图5 系统总设计图3.2软件流程图3.2.1打开keilc软件图63.2.2新建工程(project)图73.2.3新建工程并保存到D盘新建文件夹3.2.4设置工程在左菜单Target 1 处点击右键出现菜单中选择Options for Target ‘Target 1’进入工程文件设置。
生成HEX文件。
图83.2.5建立文本文件,并保存为jiaotong.c文件图93.2.6编译,链接,运行程序无误后用鼠标双击pretues电路图中的单片机芯片,添加HEX文件。
下载到相应51 单片机里运行实验。
图103.2.7主程序流程图NY开始设置初始值,初始延时为50msTime=20?图4元器件清单5元器件识别与检测元件的功能和部分元件的识别:7SEG-MPX8_CC-BLUE数码管:它左下侧的abcdefg dp是LED数码管显示器的I/O 口,是段选信号,右下侧的12345678是它的位选信号,就是从左到右分别是第一位到第八位,段选信号与位选信号分别接到单片机的不同输出口,例如段选信号可以接到P0口,位选信号可以接到P2口。
AT89C51:采用定时器0,方式1进行定时。
它有4k 字节Flash 闪速存储器,128字节内部RAM,32 I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟。
同时,AT89C51可降至0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
CAP:是CAPACITOR的简称。
在电路图中是非极性电容的简称。
RES-PACK:上拉电阻,单片机用p0口控制数码管是必须接上拉电阻才能驱动CRYSTAL:晶振12MHZ,用于产生定时时间。
LED:LED发光二极管是 light emitting diode的简称,LED 是一种直接注入电流的发光器件,是半导体晶体内部受激电子从高能级回复到低能级时,发射出光子的结果,这就是通常所说的自发发射跃迁。
当LED的PN结加上正向偏压,注入的少数载流子和多数载流子(电子和空穴)复合而发光。
值得注意的是,对于大量处于高能级的粒子各自分别自发发射一列一列角频率为ν=Eg/h的光波,但各列光波之间没有固定的相位关系,可以有不同的偏振方向,并且每个粒子所发射的光沿所有可能的方向传播,这个过程称为自发发射。
其发射波长可用下式来表示:λ(μm)=1.2396/Eg(eV) 7.RES:经计算所用电阻为320欧姆。
6软件编程与调试6.1重点算法6.1.1 延时算法void Timer0() interrupt 1{TH0 = 0x3C; //设置初始值TL0 = 0xB0;Time++;if(Time == 20){Second ++;Time = 0;}}经过此程序延时为1S6.1.2 绿灯闪烁算法void main(void){Second = 1;Timer0Cofig();while(1){if(Second == 80){Second = 1;}//--主干道通行,45秒--//if(Second < 46){DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(45 - Second) % 100 / 10];DisplayData[3] = DIG_CODE[(45 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00;DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();//--主干道通行--//6.1.3 黄灯闪烁算法//--黄灯等待切换状态,5秒--//else if(Second < 51){DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(50 - Second) % 100 / 10];DisplayData[3] = DIG_CODE[(50 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00;DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();//--黄灯阶段--//6.1.4 数码管显示算法void DigDisplay(){unsigned char i;unsigned int j;for(i=0; i<8; i++){GPIO_PLACE = DIG_PLACE[i]; //发送位选GPIO_DIG = DisplayData[i]; //发送段码j = 10; //扫描间隔时间设定while(j--);GPIO_DIG = 0x00; //消隐}}6.2总体程序/************************************************************************* ******* 实验名 : 动态显示数码管实验* 使用的IO :* 实验效果 : 数码管显示76543210。
************************************************************************** *****/#include<reg51.h>//--定义使用的IO口--//#define GPIO_DIG P0#define GPIO_PLACE P1#define GPIO_TRAFFIC P2sbit RED10 = P2^0; //上人行道红灯sbit GREEN10 = P2^1; //上人行道绿灯sbit RED11 = P2^2;sbit YELLOW11= P2^3;sbit GREEN11 = P2^4;sbit RED00 = P3^0; //右人行道红灯sbit GREEN00 = P3^1; //右人行道绿灯sbit RED01 = P2^5;sbit YELLOW01= P2^6;sbit GREEN01 = P2^7;//--定义全局变量--//unsigned char code DIG_PLACE[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制查表的方法控制unsigned char code DIG_CODE[17] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned char DisplayData[8];//用来存放要显示的8位数的值unsigned char Time, Second; //用来存放定时时间//--声明全局函数--//void DigDisplay(); //动态显示函数void Timer0Cofig(void);/************************************************************************* ******* 函数名 : main* 函数功能 : 主函数* 输入 : 无* 输出 : 无************************************************************************** *****/void main(void){Second = 1;Timer0Cofig();while(1){if(Second == 80){Second = 1;}//--主干道通行,45秒--//if(Second < 46){DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(45 - Second) % 100 / 10];DisplayData[3] = DIG_CODE[(45 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00;DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();//--主干道通行--//GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭RED00 = 1;GREEN00 = 1;GREEN11 = 0; //主干道绿灯亮GREEN10 = 0; //主干道人行道绿灯亮RED01 = 0; //支干道红灯亮RED00 = 0; //支干道人行道红灯亮}//--黄灯等待切换状态,5秒--//else if(Second < 51){DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(50 - Second) % 100 / 10];DisplayData[3] = DIG_CODE[(50 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00;DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();//--黄灯阶段--//GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭RED00 = 1;GREEN00 = 1;YELLOW11 = 0; //主干道黄灯亮RED10 = 0; //主干道人行道红灯亮YELLOW01 = 0; //支干道红灯亮RED00 = 0; //支干道人行道红灯亮}//--支干道通行--//else if(Second < 76){DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(75 - Second) % 100 / 10];DisplayData[3] = DIG_CODE[(75 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00;DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();//--黄灯阶段--//GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭RED00 = 1;GREEN00 = 1;RED11 = 0; //主干道红灯亮RED10 = 0; //主干道人行道红灯亮GREEN01 = 0; //支干道绿灯亮GREEN00 = 0; //支干道人行道绿灯亮}//--黄灯等待切换状态,5秒--//else{DisplayData[0] = 0x00;DisplayData[1] = 0x00;DisplayData[2] = DIG_CODE[(80 - Second) % 100 / 10];DisplayData[3] = DIG_CODE[(80 - Second) %10];DisplayData[4] = 0x00;DisplayData[5] = 0x00;DisplayData[6] = DisplayData[2];DisplayData[7] = DisplayData[3];DigDisplay();//--黄灯阶段--//GPIO_TRAFFIC = 0xFF; //将所有的灯熄灭RED00 = 1;GREEN00 = 1;YELLOW11 = 0; //主干道黄灯亮RED10 = 0; //主干道人行道红灯亮YELLOW01 = 0; //支干道红灯亮RED00 = 0; //支干道人行道红灯亮}}}/************************************************************************* ******* 函数名 : DigDisplay* 函数功能 : 使用数码管显示* 输入 : 无* 输出 : 无************************************************************************** *****/void DigDisplay(){unsigned char i;unsigned int j;for(i=0; i<8; i++){GPIO_PLACE = DIG_PLACE[i]; //发送位选GPIO_DIG = DisplayData[i]; //发送段码j = 10; //扫描间隔时间设定while(j--);GPIO_DIG = 0x00; //消隐}}/************************************************************************* ******* 函数名 : Timer0Cofig* 函数功能 : 配置定时器* 输入 : 无* 输出 : 无************************************************************************** *****/void Timer0Cofig(void){TMOD = 0x01; //定时器0选择工作方式1TH0 = 0x3C; //设置初始值,定时50MSTL0 = 0xB0;EA = 1; //打开总中断ET0 = 1; //打开定时器0中断TR0 = 1; //启动定时器0}/******************************************************************************** 函数名 : Timer0* 函数功能 : 定时器0中断函数* 输入 : 无* 输出 : 无************************************************************************** *****/void Timer0() interrupt 1{TH0 = 0x3C; //设置初始值TL0 = 0xB0;Time++;if(Time == 20){Second ++;Time = 0;}}6.3运行仿真结果6.3.1主干道通行仿真结果6.3.2黄灯显示仿真结果6.3.3支干道通行仿真结果7设计心得通过这次课程设计,我受益匪浅,一方面是对学过的课内知识的温习和巩固,一方面是锻炼了我的分析能力、写作能力,为今后的工作做好了铺垫。