交通灯控制器设计方案
智能交通灯控制系统的设计与实现

智能交通灯控制系统的设计与实现随着城市化进程的加速,城市道路交通越来越拥堵,交通管理成为城市发展的一个重要组成部分。
传统的交通信号灯只具备固定时序控制交通流量的功能,但随着技术的进步和智能化应用的出现,要求交通信号灯具备实时性、自适应性和智能化,因此,智能交通信号灯控制系统应运而生。
本文将从软硬件系统方面,详细介绍智能交通灯控制系统的设计与实现。
一、硬件设计智能交通灯控制系统的硬件部分由四个部分组成:单片机系统、交通灯控制器、传感器及联网模块。
1. 单片机系统单片机是智能交通灯控制系统的核心,该系统选用了8位单片机,主要实现红绿灯状态的自适应和切换。
在设计时,需要根据具体情况选择型号和板子,选择时需要考虑其开发环境、风险和稳定性等因素。
2. 交通灯控制器交通灯控制器是智能交通灯控制系统中的另一个重要部分,主要实现交通信号的灯光控制。
在控制器的设计时,需要考虑网络连接、通信、数据传输等多方面因素,确保系统的稳定性和可靠性。
3. 传感器传感器主要负责采集道路交通信息,包括车辆数量、速度、方向和道路状态等,从而让智能交通灯控制系统更好地运作。
传感器有多种类型,包括磁感应传感器、摄像头、光电传感器等,需要根据实际需求选择。
4. 联网模块联网模块主要负责智能交通灯控制系统的联网和数据传输,包括存储和处理车流数据、上传和下载数据等。
在设计时,需要考虑网络连接的稳定性、数据安全等因素,确保智能交通灯控制系统的连续性和可靠性。
二、软件设计智能交通灯控制系统的软件部分主要由两部分组成:嵌入式系统和上位机系统。
1. 嵌入式系统嵌入式系统是智能交通灯控制系统的主体,主要设计车流量检测、信号灯状态切换等程序。
为了保证系统的自适应性和实时性,需要采用实时操作系统,如FreeRTOS等。
在软件设计阶段,需要注意设计合理的算法和模型,确保系统的准确性和稳定性。
2. 上位机系统上位机系统主要实现智能交通灯控制系统的监控和管理,包括车流量监控、灯光状态监控、信号灯切换和日志记录等。
(完整word版)数电——交通灯控制器设计

(完整word版)数电——交通灯控制器设计大连交通大学电气信息学院综合设计报告设计名称:数字逻辑综合设计设计题目:交通灯控制器学生学号:专业班级:学生姓名:第一章课题背景1。
1 背景如今随着人们生活水平的提高,车辆越来越多,交通事故频繁发生。
交通信号灯的出现,使交通得以有效管制,对于疏通交通流量,提高道路通行能力,减少交通事故有明显效果。
交通灯在城市交通中起着重要的作用,它与人们日常生活密切相关,是人们出行的安全保障。
因此提供一个问题、安全、便捷的多功能交通灯控制系统有着现实的必要性.为了解决这些问题,我们更应该提高交通控制和管理水平,合理使用现有交通设施,充分发挥其能力,提高交通效率,促进和谐交通的建立.目前交通灯控制系统的设计软件也种类繁多,有基于EDA设计的,基于单片机设计的,基于DSP设计的,基于ARM嵌入式的等。
还有用标准逻辑器件、可编程控制器PLC等方案来实现.但是这些控制方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及调试的困难。
所以现在国内外广泛采用EDA技术设计交通灯控制系统。
在国外,英国,澳大利亚,日本和美国等国家均在交通控制系统上日益完善。
如以澳大利亚悉尼为背景开发的交通自适应协调系统SCATS(Sydney Coordinated Adaptive Traffic System),英国的运输和道路研究所(TRRL)研制的SCOOT(Split Cycle Offset Optimization Technique)系统,日本的京三(Kyosan)系统等。
这些系统,大都是在各路口附近安装磁性环路监控器,由各路口的控制设备、人员将交通控制参数通过通讯网络输入微处理器,用小型计算机进行集中处理。
目前国内已有一些自主开发的城市交通控制系统,如公安部交通科学研究所开发的HT-UTCS系统,但它在整体性能上比国外同类系统仍有较大差距,只在一些中小城市得到一些应用。
EDA实验课程大作业报告:设计制作一个用于十字路口的交通灯控制器

交通灯控制器设计一.系统功能设计要求设计制作一个用于十字路口的交通灯控制器,要求如下:(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 总体设计方案 3 控制电路设计
3.1 控制电路工作原理 3.2控制电路设计过程
4 倒计时电路设计
4.1具有同步置数功能的十进制减法计数器设计 4.2主干道和支干道倒计时电路设计
5 译码显示电路设计
5.1动态显示工作原理 5.2动态显示及译码电路设计
共阴极数码管:将每个数码管的公共端(阴极)分别接三-八译码器的输出, 三-八译码器的输入为位选信号;将多个数码管的相同段接在一起,作为段码 输入端。
七段译码
报告要求
CONTENTS
01 封面
02 目录:四号 宋体
03
正文:小四 宋体 1.5 倍行距
04 参考文献 :五号 宋体
一号 宋体
四号 宋体
由具有同步置数功能的十进制减法计数器实现。
将2片级联实现2位十进制减法计数器。
当主干道或者支干道减法计数器值为01时,产生同步置数信 号,将下一状态计数初值置入。
状态
S0
00
S1
01
S2
10
S3
11
主干道预置数
D7D6 D5D4
D3D2 D1D0
0000
0101
0101
0000
0000
0101
0110
○ 黄灯每秒闪亮一次。
总体方案
时钟
红绿 灯
控制器
交通灯控 制器的功 能框图
倒计时 计数器
数码 显示扫描
管
、译码
设主干道绿灯、黄灯、红灯分别为G1、Y1、R1;支 干道绿灯、黄灯、红灯分别为G2、Y2、R2,并且 均用0表示灭,1表示亮,则交通灯有如下四种输出 状态:
状态
PLC智能交通灯控制系统设计

PLC智能交通灯控制系统设计一、引言交通是城市发展的命脉,而交通灯则是保障交通有序运行的关键设施。
随着城市交通流量的不断增加,传统的交通灯控制系统已经难以满足日益复杂的交通需求。
因此,设计一种高效、智能的交通灯控制系统具有重要的现实意义。
可编程逻辑控制器(PLC)作为一种可靠、灵活的工业控制设备,为智能交通灯控制系统的实现提供了有力的支持。
二、PLC 简介PLC 是一种专为工业环境应用而设计的数字运算操作电子系统。
它采用可编程序的存储器,用于存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并通过数字式或模拟式的输入和输出,控制各种类型的机械或生产过程。
PLC 具有可靠性高、抗干扰能力强、编程简单、维护方便等优点,广泛应用于工业自动化控制领域。
在交通灯控制系统中,PLC 可以根据实时交通流量信息,灵活调整交通灯的时间分配,提高道路通行效率。
三、智能交通灯控制系统的需求分析(一)交通流量监测系统需要能够实时监测道路上的交通流量,包括车辆数量、行驶速度等信息。
(二)时间分配优化根据交通流量监测结果,智能调整交通灯的绿灯时间,以减少车辆等待时间,提高道路通行效率。
(三)特殊情况处理能够应对紧急车辆(如救护车、消防车)通行、交通事故等特殊情况,及时调整交通灯状态,保障道路畅通。
(四)人机交互界面提供直观、方便的人机交互界面,便于交通管理人员对系统进行监控和管理。
四、PLC 智能交通灯控制系统的硬件设计(一)传感器选择为了实现交通流量的监测,可以选择使用电感式传感器、超声波传感器或视频摄像头等设备。
电感式传感器安装在道路下方,通过检测车辆通过时产生的电感变化来统计车辆数量;超声波传感器通过发射和接收超声波来测量车辆与传感器之间的距离和速度;视频摄像头则可以通过图像识别技术获取更详细的交通信息,但成本相对较高。
(二)PLC 选型根据交通灯控制系统的输入输出点数、控制精度和复杂程度等要求,选择合适型号的 PLC。
交通灯PLC控制系统设计

交通灯PLC控制系统设计交通灯是城市交通管理的重要组成部分,交通灯控制系统的设计对于保障交通安全和优化交通流量起着关键作用。
PLC(可编程逻辑控制器)技术在交通灯控制系统中得到了广泛应用,本文将从系统设计的整体框架、PLC程序设计、硬件选型以及系统特点等方面来详细介绍。
交通灯PLC控制系统设计的整体框架主要包括信号采集模块、信号处理模块、控制模块和执行模块四部分。
信号采集模块主要负责将交通流量、行人流量等信息转化为电信号输入给PLC控制器;信号处理模块对采集到的信号进行处理,如检测交通流量的高低以及行人通过的情况;控制模块根据信号处理结果,生成控制信号输出给执行模块;执行模块实现交通灯的控制,通过电路和执行器实现交通灯的开关。
PLC程序设计是交通灯PLC控制系统设计的核心部分,主要包括输入端口设置、控制逻辑设计、输出端口设置和通信设置等。
在输入端口设置中,确定采集到的数据类型和数据源,如交通流量和行人流量分别通过传感器采集。
控制逻辑设计是根据交通灯的状态和信号控制规则确定交通灯的控制方式,比如根据交通流量高低切换交通灯的状态。
输出端口设置是将确定好的控制信号输出到对应的执行模块,如输出信号控制交通灯的红绿灯状态。
通信设置是实现与其他相关系统的联动,如与监控系统的数据交互。
硬件选型是交通灯PLC控制系统设计的重要环节,主要包括PLC控制器、传感器、执行器和电源等。
PLC控制器应该具有高性能、稳定可靠的特点,能够满足交通灯控制系统的需求。
传感器的选型应基于交通流量和行人流量的检测需求,常用的有光电传感器、气压感应器等。
执行器的选型应根据交通灯的类型确定,如LED灯管、数码管等。
电源的选型应满足交通灯控制系统的供电需求,选用稳定可靠的电源。
交通灯PLC控制系统设计具有以下特点:灵活性高、可靠性强、实时性好。
PLC控制器的可编程性使得交通灯的控制逻辑可以根据实际需求进行灵活调整,满足不同时间段的交通流量要求。
交通灯控制器+数字电路课程设计报告

交通灯控制器+数字电路课程设计报告交通灯控制器是交通管理系统中的重要组成部分,其主要作用是控制道路上的交通信号灯。
随着数字电路技术的发展,交通灯控制器也逐渐向数字化、智能化方向发展。
本文将详细介绍一种基于数字电路的交通灯控制器设计,以及该设计方案的实现和效果。
一、设计方案1.硬件设计硬件设计方案主要包括数字电路的选择、交通灯的控制模块、传感器等。
本方案选用FPGA芯片作为控制芯片,该芯片具有先进的数字信号处理能力和可编程性,便于开发和定制。
交通灯的控制模块包括红灯、黄灯、绿灯三个信号灯的控制器,以及车辆、行人传感器等。
其中车辆传感器主要用来检测车流量,行人传感器主要用来检测行人通行情况。
2.软件设计软件设计方案主要包括程序的设计和调试,以及人机界面的设计和开发。
程序设计方案采用Verilog HDL语言进行实现,采用时序逻辑设计的思路来编写程序,实现红绿灯的控制和状态转移。
人机界面采用C语言进行编写,通过串口通信与控制芯片进行数据传输和控制。
二、实现过程在设计方案确定后,我们进一步开始实现。
首先是电路的焊接和测试,在确定电路正常无误后,再完成程序的编写和调试。
最后是人机接口的开发和完善。
具体实现流程如下:1.电路焊接首先进行电路布线和焊接,将FPGA芯片、光耦隔离器、电位器等元器件焊接到电路板上,以及信号灯、传感器等元器件的接入。
2.程序编写利用Verilog HDL语言编写程序,主要包括红绿灯状态的转移逻辑和相应的信号输出控制。
程序设计过程中,需要注意时序和状态的转移。
3.调试测试完成程序编写后,需要进行相应的调试测试。
通过仿真测试,检查程序逻辑是否正确,排除潜在问题。
在硬件实验平台上进行测试,确定系统能够正常工作。
4.人机界面开发利用C语言编写人机界面,实现与交通灯控制器的交互控制。
实现车辆、行人传感器的数据采集和显示,以及人手动控制交通灯的功能。
三、实现效果通过测试和实验验证,本文的交通灯控制器设计方案具有以下优势:1.使用FPGA芯片作为控制芯片,具有较强的可编程性和数字信号处理能力。
交通灯控制器的设计

VHDL交通灯控制器的设计设计题:交通灯控制器的设计设计目的1、1、了解交通灯控制原理2、了解模块化设计方法3、掌握数字系统设计的方法设计要求:(1)设计一个十字路口交通管理信号灯控制电路。
绿灯55s,黄灯5s,红灯60s;(2)两个通道都在各亮灯期间分别进行倒计时,并将运行时间用数码管显示出来;(附加要求)(3)对器件进行在系统编程和实验验证。
写出设计性实验报告,并打印各层次的源文件和仿真波形,然后作简要说明。
设计思路:根据上文中确定的系统设计方案,运用模块化的设计思路,我们QuartusII 7.2软件系统中设计了1Hz分频电路、交通灯控制模块、显示控制模块、显示译码模块55秒倒计时时器模块、5秒倒计时器模块的HDL程序,并通过各个模块程序之间的端口合理连接和协调,成功设计出交通信号灯控制电路,得到其逻辑结构原理图,即为整个交通信号灯控制电路的逻辑结构。
设计分成4大块:1Hz时钟信号模块;X方向控制模块;Y方向控制模块;显示模块;分频模块代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clkGen isport(clk:in std_logic; --外部时钟信号clk_out:out std_logic --分频后信号);end clkGen;architecture clkGen_arc of clkGen isbeginprocess(clk)variable temp:integer range 0 to 999;beginif(clk'event and clk='1')thenif(temp=999)then --分频计数temp:=0;clk_out<='0';elsetemp:=temp+1;clk_out<='1';end if;end if;end process;end;仿真结果:X方向控制模块代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY corna ISPORT (clk:IN STD_LOGIC;r,g,y:OUT STD_LOGIC;timh,timl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END corna;ARCHITECTURE corner OF corna ISTYPE rgy IS (green,yellow,red);BEGINPROCESS (clk)V ARIABLE a:STD_LOGIC;V ARIABLE th,tl:STD_LOGIC_VECTOR (3 DOWNTO 0);V ARIABLE state:rgy;BEGINIF(clk'EVENT AND clk='1') THENCASE state ISWHEN green=>IF a='0' THENth:="0101";tl:="0100";a:='1';g<='1';r<='0';y<='0';ELSEIF NOT (th="0000" AND tl="0001") THENIF tl="0000" THENtl:="1001";th:=th-1;ELSEtl:=tl-1;END IF;ELSEth:="0000";tl:="0000";a:='0';state:=yellow;END IF;END IF;WHEN yellow=>IF a='0' THENth:="0000";tl:="0100";a:='1';y<='1';g<='0';r<='0';ELSEIF NOT (th="0000" AND tl="0001") THENtl:=tl-1;ELSEth:="0000";tl:="0000";a:='0';state:=red;END IF;END IF;WHEN red=>IF a='0' THENth:="0101";tl:="1001";a:='1';r<='1';y<='0';g<='0';ELSEIF NOT (th="0000" AND tl="0001") THENIF tl="0000" THENtl:="1001";th:=th-1;ELSEtl:=tl-1;END IF;ELSEth:="0000";tl:="0000";a:='0';state:=green;END IF;END IF;END CASE;END IF;timh<=th;timl<=tl;END PROCESS;END corner;Y方向控制模块:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cornb ISPORT (clk:IN STD_LOGIC;r,g,y:OUT STD_LOGIC;timh,timl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END cornb;ARCHITECTURE corner OF cornb ISTYPE rgy IS (red,green,yellow);BEGINPROCESS (clk)V ARIABLE a:STD_LOGIC;V ARIABLE th,tl:STD_LOGIC_VECTOR (3 DOWNTO 0);V ARIABLE state:rgy;BEGINIF(clk'EVENT AND clk='1') THENCASE state ISWHEN red=>IF a='0' THENth:="0101";tl:="1001";a:='1';g<='0';r<='1';y<='0';ELSEIF NOT (th="0000" AND tl="0001") THENIF tl="0000" THENtl:="1001";th:=th-1;ELSEtl:=tl-1;END IF;ELSEth:="0000";tl:="0000";a:='0';state:=green;END IF;END IF;WHEN green=>IF a='0' THENth:="0101";tl:="0100";a:='1';y<='0';g<='1';r<='0';ELSEIF NOT (th="0000" AND tl="0001") THENIF tl="0000" THENtl:="1001";th:=th-1;ELSEtl:=tl-1;END IF;ELSEth:="0000";tl:="0000";a:='0';state:=yellow;END IF;END IF;WHEN yellow=>IF a='0' THENth:="0000";tl:="0100";a:='1';r<='0';y<='1';g<='0';ELSEIF NOT (th="0000" AND tl="0001") THENIF tl="0000" THENtl:="1001";th:=th-1;ELSEtl:=tl-1;END IF;ELSEth:="0000";tl:="0000";a:='0';state:=red;END IF;END IF;END CASE;END IF;timh<=th;timl<=tl;END PROCESS;END corner;显示控制模块:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY CH41A ISPORT(sel : IN STD_LOGIC_VECTOR(2 downto 0); --位选信号d0 : IN STD_LOGIC_VECTOR(3 downto 0);d1 : IN STD_LOGIC_VECTOR(3 downto 0);d2 : IN STD_LOGIC_VECTOR(3 downto 0);d3 : IN STD_LOGIC_VECTOR(3 downto 0);q : OUT STD_LOGIC_VECTOR(3 downto 0) --输出);END CH41A;ARCHITECTURE CH41A_architecture OF CH41A ISBEGINPROCESS (sel)BEGINCASE sel ISWHEN "000"=>q<=d0;WHEN "001"=>q<=d1;WHEN "110"=>q<=d2;WHEN "111"=>q<=d3;WHEN OTHERS=>q<=d0;END CASE;END PROCESS;END CH41A_architecture;显示位选代码:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_UNSIGNED.all;entity SEL isport(clk:in std_logic; --时钟信号sel:out std_logic_vector(2 downto 0)); --选择信号end SEL;architecture SEL_arc of SEL issignal temp:std_logic_vector(2 downto 0);beginprocess(clk)beginif(clk'event and clk='1')thencase temp iswhen "000"=>temp<="001";when "001"=>temp<="110";when "110"=>temp<="111";when "111"=>temp<="000";when others=>temp<="000";end case;end if;sel<=temp;end process;end ;显示译码:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY DISPA ISPORT(d : IN STD_LOGIC_VECTOR(3 downto 0);q0 : OUT STD_LOGIC;q1 : OUT STD_LOGIC;q2 : OUT STD_LOGIC;q3 : OUT STD_LOGIC;q4 : OUT STD_LOGIC;q5 : OUT STD_LOGIC;q6 : OUT STD_LOGIC);END DISPA;ARCHITECTURE DISPA_architecture OF DISPA IS BEGINPROCESS (d)V ARIABLE q:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINCASE d ISWHEN "0000"=>q:="";WHEN "0001"=>q:="";WHEN "0010"=>q:="";WHEN "0011"=>q:="";WHEN "0100"=>q:="";WHEN "0101"=>q:="";WHEN "0110"=>q:="";WHEN "0111"=>q:="";WHEN "1000"=>q:="";WHEN "1001"=>q:="";WHEN OTHERS=>q:="";END CASE;q0<=q(0);q1<=q(1);q2<=q(2);q3<=q(3);q4<=q(4);q5<=q(5);q6<=q(6);END PROCESS;END DISPA_architecture;其中显示模块又分为3个模块:1.BCD转数码管显示转化模块;2.片选通控制模块;3.显示控制模块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交通灯控制器设计方案摘要:我国现行交通灯多为单灯多向式和单灯单向式。
其最多车辆同行方向数仅为10,且其中还存在交叉问题。
但若将交通灯的安装位置、交叉路口的结构做一下调整,则不仅可使车辆同行方向数成倍增加,而且可使我国道路车辆的调头问题达到进一步解决。
系统使用EDA技术设计了交通灯控制器,采用硬件描述语言VHDL按模块化方式进行设计,然后进行编程,时序仿真等。
运用分频器、信号控制器、时钟模块。
软件基于VHDL语言实现了本设计的控制功能,实现数据的输入,输出,计算,显示及程序退出等功能。
整个系统结构简单,使用方便。
功能齐全,精度高,具有一定的开发价值。
关键词:交通灯控制器;分频器、信号控制器、时钟模块;EDA;VHDL一、绪论(一)课题背景通信、信息、工业自动化的飞速发展,对相应的专用计算机系统与硬件设备提出越来越高的要求。
这些专用的计算机系统往往要具备稳定性强、实时性高、针对性强等特点,而相应的硬件设备,必须有足够高的处理速度与相当的数据存储空间来适应这些要求。
随着系统功能的复杂化,处理器对应的控制程序越来越复杂,这就必然要嵌入小型的操作系统来管理、协调多个任务。
当今的嵌入式操作系统内核种类繁杂,各有所长,基本都具备强实时性高稳定性和简洁、微型化的特点。
这其中,还有一些优秀的、源码开放的内核,比如uc-OS和Linux他们功能强大,至今已经被成功的移至在多种MCU之上。
目前国内Intel8051系列还有非常大的市场,51兼容单片机还在不断的发展之中所以有必要使用一种OS来使51适应越来越复杂的任务。
(二)设计任务设计题目:AT89C51系列单片机操作系统移用开发。
本设计是通过逐步学习C51单片机高级开发语言最终来完成一个模拟工程项目——十字路口交通信号灯控制器的C51程序设计。
因此,学习C51语言本身和熟练使用其编译环境是一个最主要的目的;其次,就是进一步掌握单片机的定时计数器、中断、串行口等基础知识及其C51编程。
在调试成功交通灯控制器的源程序以后,考虑到系统的实用性以及可扩展性,增加了单片机与PC机串行通信和用户改变红、黄、绿灯亮灭时间的功能(三)电路功能该控制器能实现城市“十字”路口正常情况下以及特殊情况和紧急情况下交通信号灯的模拟控制。
1.在十字路口东西南北各设置红、黄、绿三种信号灯,如图1所示。
正常情况下,东西、南北方向轮流放行。
当东西方向(A线)放行、南北方向(B线)禁行时,东西方向(A 线)绿灯亮25秒,然后黄灯亮5秒,南北方向(B线)红灯亮30秒;当南北方向(B线)放行、东西方向(A线)禁行时,南北方向(B线)绿灯亮25秒,然后黄灯亮5秒,东西方向(A线)红灯亮30秒。
如此循环,实现交通灯定时控制。
2.有急救车优先通过功能。
当有急救车到达时,路口的信号灯全部变红灯,以便急救车通过,急救车的通行时间为10秒,急救车过后,交通灯恢复先前状态。
3.交通灯在红、绿灯交替点亮中,用两个数码管显示点亮的灯还能持续的时间。
二、实现方案(一)电路图交通灯控制电路的核心元件采用单片机芯片AT89C51,其内部带有4KB的ROM,无须扩展存储器。
信号灯的控制由单片机的P1.0~P1.5控制,6只信号灯以共阴极方式连接,当P1口输出为高电平时,信号灯点亮,为实现上述控制要求,P1口共输出四种控制码,如表1所示。
表1:交通灯信号控制码空空B道绿灯B道黄灯B道红灯A道绿灯A道黄灯A道红灯控制码P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0状态说明000011000CHA道放行、B 道禁止000010100AHA道警告、B 道禁止0010000121HA道禁止、B 道放行0001000111HA道禁止、B 道警告软件包括主程序、延时、显示子程序、中断服务程序,各程序流程图如图2所示。
图2程序流程图ORG2000HMAIN:MOV DPTR,#7F00HMOV A,#0BH;PA、PC口均为输出MOVX@DPTR,AMAIN:SETB EA;开中断SETB EX0MOV50H,#1FH;设置时间显示初值MOV P1,#0CH;A道放行,B道禁行MOV R7,#19H;延时秒数MAIN1:LCALL DISP;调1秒延时、及显示子程序DJNZ R7,MAIN1MOV P1,#0AH;A道警告,B道禁行MOV R7,#05H;延时秒数MAIN2:LCALL DISPDJNZ R7,MAIN2MOV50H,#1FH;设置时间显示初值MOV P1,#21H;A道禁行,B道放行MOV R7,#19H;延时秒数MAIN3:LCALL DISPDJNZ R7,MAIN3MOV P1,#11H;A道禁行,B道警告MOV R7,#05H;延时秒数MAIN4:LCALL DISPDJNZ R7,MAIN4AJMP MAIN;循环延时、显示子程序:ORG2000HDISP:MOV R6,#01H;设置显示位寄存器初值(右边一位MOV TMOD,#01H;定时器T0设置为定时方式的模式1MOV R5,#0AH;定时器操作循环10次DEL1:MOV TH0,#3CH;定时器100ms计数器的初始值MOV TL0,#B0HSETB TR0;启动定时器DEL2:DEC50H;显示秒数减1MOV A,50HMOV B,#0AHDIV B;拆分秒数ADD A,#2BHMOVC A,@A+PC;查表个位数的字形码MOV R1,A;个位数字形码送R1MOV A,BADD A,#25HMOVC A,@A+PC;查表十位数的字形码MOV R2,A;十位数字形码送R2MOV A,R6;位控码MOV DRTP,#7F03HMOVX@DPTR,AMOV A,R1;送个位数显示MOV DPTR,#7F01HMOVX@DPTR,ALCALL DELAY;延时1msMOV A,R6RL A;位控左移MOV R6,AMOV DPTR,#7F03HMOVX@DPTR,AMOV A,R2;送十位数显示MOV DPTR,#7F01HMOVX@DPTR,ALCALL DELAY;延时1msJNB TF0,$;检测100ms定时是否到CLR TF0DJNZ R5,DEL1;100ms循环控制RET;返回TABLE:DB C0H,F9H,A4H,B0H,99HDB92H,82H,F8H,80H,90HDELAY:MOV R7,#02H;延时1ms子程序DEL3:MOV R6,#0F9HDEL4:DEL2:DJNZ R6,DEL2DJNZ R7,DEL1RETEND(四)中断服务程序:ORG0003H;外部中断0入口地址LJMP INTER0ORG2100HINTER0:PUSH50H;保护现场PUSH P1MOV P1,#00H;两车道禁止MOV R7,#0AH;延时10秒INT0:LCALL DISP;调显示DJNZ R7,INT0POP P1;恢复现场POP50HRETI;中断返回三、PCB板设计如下图:PCB板设计五、程序调试及说明在调试过程中,出现了很多问题。
首先,就是程序里的定时控制误差很大(1秒钟不是很精确)。
我修改了CONF_TNY.A51中的参数INT_CLOCK(硬件定时溢出机器周期,默认为10000。
如果主频为12MHZ,则为10ms。
)和TIMESHARING(循环切换时间,默认为5个溢出),使TIMESHARING为0,这就是说,将CPU轮流查询执行屏蔽掉,在程序中通过os_wait函数来切换。
这样,定时控制就得到了一定改善。
这是这次毕业设计的弊端。
5.2程序运行说明整个程序分为上位机程序和下位机程序两部分:上位机程序是一个VC6.0环境下开发基于对话框的MFC应用程序。
程序界面比较简单:当用户将要发送给单片机的命令写入发送数据框后,单击发送按钮,数据就通过串行口发送到了单片机的RXD引脚。
由于没有经过联机调试。
所以,不能保证单片机接收到的是正确的用户命令。
单击清除按钮,就可以将用户开始输入的命令都清除掉,以便用户再一次发送命令。
单击取消按钮就退出了程序。
下位机程序,不是一个可执行程序。
它只能在uVision2环境中被模拟执行。
六、总结本系统结构简单实用,操作方便快捷;特别是扩充了PC机与单片机串行通信功能后,使得用户可以根据需要来改变红黄绿灯的亮灭时间;另外,利用RTX51Tiny实时操作系统提供的系统特征,简化了多任务程序设计,满足多个任务的时间特性要求,完成了前后台编程方法难以完成的编程任务。
同时基于实时多任务操作系统,可以将各个任务进行细分包装,使各个任务保持相对独立;有效地改善了程序结构,提高了模块的独立性,使程序的可读性、可维护性和可移植性都得到进一步的提高。
当我完成本系统设计之后,把这个系统跟北京某一十字路口的现有交通灯控制系统进行了比较,得出了本系统两个不足之处:可以在本系统中增加一个传感器,对传感器采集的数据进行处理、统计及流量分析,根据车流量来决定每一道的通行时间(绿灯亮的时间)。
这样就实现了车流动态调节。
另外,还可以将灯状态的切换时间用LED数码管显示出来,此显示值每秒钟刷新一次。
这样,就可以给司机和行人有一个提示作用。
参考文献:[1]胡大可。
基于8051的嵌入式开发指南。
北京:电子工业出版社。
2000[2]张洪润/易涛。
单片机应用技术教程。
北京:清华大学出版社。
2003[3]何立民。
MCS-51系列单片机应用系统设计。
北京:北京航空航天大学出版社。
2004[4]孙育才。
MCS-51系列单片机微型计算机极其应用(第三版)。
南京:东南大学出版社2003[5]田泽。
嵌入式系统开发与应用系列教程。
北京:北京航空航天大学2004[6]范风强/兰婵丽。
单片机语言C51应用实战集锦。
北京。
:电子工业出版社。
2003[7]先锋工作室。
单片机程序设计实例。
北京:清华大学出版社。
2003[8]徐爱钧。
8051单片机实践教程-ASM51汇编语言与C51高级语言应用。
北京:电子工业出版社。
2005[9]庞特。
嵌入式系统系列-C语言嵌入式系统开发。
北京:中国电力出版社。
2003[10]陈明计。
嵌入式实时操作系统SMALL RTOS51原理及应用(含盘)。
北京:北京航空航天大学出版社2004。