基于vhdl交通灯控制电路设计内容摘要:

供电源,节约成本,但输出功率不高。 复位电路部分,考虑到程序的简洁,避免冗长,采用按键复位,在芯片的复位端口外接复位电路,通过按键对单片机输入一个高电平脉冲,达到复位目的。 输入信号部分,直接在 I/O 口接上按键开关,精简和优化电路,该系统对于交通灯及数码管的控制只用单片机本身的 I/O口就可以实 现,显示电路采用共阳数码管。 整个系统组成框图如图 : 图 方案二系统组成框图 A 车道信号 灯 B 车道信号灯 倒计时显示器 逻辑控制电路 主控制器 计时控制电路 预置数产生电路 时钟产生电路 AT89C52 单片机 数码管倒计时显示 晶振电路 复位电路 各车道信号灯 毕业设计 第 9 页 共 38 页 方案三:采用可编程逻辑器件来实现 该设计方案以 CPLD器件为核心,用 VHDL编程实现各计时单元以及控制电路的功能,在 Max+Plus Ⅱ软件上仿真调试,显示电路采用 7段得共阴数码管。 系统组成框图如图 : 图 系统组成框图 ( 2)方案论证 方案一采用的是集成硬件电路的搭建,各个模块之间的接口很难保证,而且用到大量芯片来搭建各个模块,整个电路系统体积相对较大,增 加了系统的调试难度,不满足现代社会发展的需求。 方案二采用的以单片机为核心,电路整体简单,扩展性良好,很大程度上降低了调试难度,但是不满足本次课题基于 VHDL语言的要求,所以不采用。 方案三以 CPLD 器件为核心,以 VHDL 语言为基础,编程具有很大的灵活性,而且这种语言也易于掌握和理解,调试和修改都比较容易,满足课题的要求,所以最终选择方案三。 具体设计以及模块划分 设计方案: 该设计分为 6 个基本模块:标准信号电路、信号灯控制电路、信号灯、各定时单元电路、显示控制电路、译码显示电路,组成框图如上图。 标准信号为整个电路提供 1Hz 信号,信号灯控制电路控制 8 路灯的亮灭,定时电路分为 45s、10s、 5s、 60s定时单元,分别控制 8路灯的亮灭时间,显示控制电路控制每一路灯的倒计时显示时间,译码后通过数码管显示。 工作原理 交通灯的亮灭规律为:甲车道的绿灯亮,乙车道的红灯亮,甲车道通车,经 45s 后,甲车道绿灯灭,甲车道左拐灯亮,经 10s后,甲车道黄灯开始闪烁,同时乙车道黄灯开始闪烁,闪烁 5s后,甲车道红灯亮,而同时乙车道的绿灯亮,乙车道开始通车,经 45s 后,乙车道绿灯灭,乙车道的左拐灯亮,经 10s后,甲乙车道黄灯同时开始闪烁。 闪烁 5s后,再切换到甲车道,重复上述过程。 在试验箱开始表示甲路的绿色发光二极管亮 45s,然后依次是表示左拐的 蓝 色二极管亮 10s 和黄色二极管亮 5s,此过程乙路的红色二极管亮 60s;此后乙路的绿色发光二极管, 蓝 色发光二极管和黄色发光二极管依次亮 45s、 10s、 5s,此过程甲路红色发光二极管亮 60s。 重复以上过程。 在试验过程标准信号 各定时电路 显示控制电路 译码显示电路 信号灯控制电路 信号灯 毕业设计 第 10 页 共 38 页 中的四个数码管,分两个为一组,前一组表示甲路的倒计时时间,后一组表示乙路的倒计时时间。 交通灯工作示意图 十字路口的东西方向和南北方向分别安装红、绿、黄、蓝交通信号灯,设置示意图如图 示。 南北方向和东西方向各设四路信号灯,分别代表红灯、黄灯、绿灯、左拐灯。 交通规则明确显示必须按照交通指示灯来执行,尤其是左拐,只有在左拐灯亮的时候才可以左拐。 图 的交通示意图,但是结合上述原理很容易理解。 图 交通灯工作示意图 甲路 乙路 毕业设计 第 11 页 共 38 页 4 系统设计 交通灯控制器的顶层电路图是采用硬件描述语言设计的一个复杂电路系统,而且采用自顶向下的设计思想,将系统按功能逐层分割的层次化设计方法。 在顶层设计中,要对内部各功能模块的连接关系和对外的接口关系进行描述,而功能模块实际的逻辑功能和具体的实现形式则由下一层模块来描述。 系统的顶层电路如图 , CLK为整个电路提供 1Hz的标准信号,用四个定时单元 60s 、 45s、10s、 5s 分别控制四盏交通指示灯的倒计时显示时间,交通灯控制部分 JTDKZ 控制交通灯的每一种状态,显示控制部分 XSKZ部分主要控制交 通灯的亮灭时间,图中译码器是 47 译码器,译码后数据输出到共阴数码管。 图 顶层电路图 交通灯主制模块 主要控制部分分别列出四种颜色灯的亮灭状态,分为六种状态 A、 B、 C、 D、 E、 F,每种状态的持续时间也即是对应控制每一路的四种灯亮的时间。 如图 交通灯控制模块生成的器件, CLK 是输入标准时钟信号, AR、 AY、 AG、 AL为输出信号控制甲车道的四盏指示灯, BR、 BY、 BG、 BL为输出信号控制乙车道的四盏指示灯,部分程序如下: entity jtdkz is port(clk:in std_logic。 ar,ay,ag,al,br,by,bg,bl:out std_logic)。 定义各路信号灯 毕业设计 第 12 页 共 38 页 end entity jtdkz。 architecture art of jtdkz is type state_type is(A,B,C,D,E,F)。 信号灯的亮灭状态分为六种 signal state:state_type。 begin t:process(clk)is variable s:integer range 0 to 60。 整形变量 s范围 0到 60 when A=ar=39。 039。 ay=39。 039。 ag=39。 139。 al=39。 039。 A状态各路灯的亮灭 br=39。 139。 by=39。 039。 bg=39。 039。 bl=39。 039。 if s=45 then a路绿灯亮状态持续 45s state=B。 clr:=39。 039。 en:=39。 039。 else state=A。 clr:=39。 139。 en:=39。 139。 定时单元以及显示控制、译码电路 ( 1) 45s 定时单元控制两路绿灯的显示时间,从 DOUT45端口输出到显示控制模块的 AIN45 端口, 45s 定时单元模块生成器件如图 所示, EN45A、 EN45B分别甲路和乙路绿灯的使能信号控制应该哪一路的绿灯亮。 45s定时单元主要的 VHDL程序段如下: 毕业设计 第 13 页 共 38 页 entity t45s is port (clk,en45a,en45b:in std_logic。 输入的标准时钟和使能信号 dout45:out std_logic_vector(7 downto 0))。 输出 8位二进制数 end entity t45s。 architecture art of t45s is signal t6b:std_logic_vector(5 downto 0)。 begin process(clk, en45a,en45b) is begin if(clk39。 event and clk=39。 139。 ) then if en45a=39。 139。 or en45b=39。 139。 then t6b=t6b+1。 控制输出数据 else t6b=000000。 ( 2) 60s 定时单元控制两路红灯的显示时间,从 DOUT60端口输出到显示控制模块的 AIN60 端口, 60s 定时单元模块生成器件如图 所示, EN60A、 EN60B分别甲路和乙路红灯的使能信号控制应该那一路红灯亮。 60s定时单元的主要程序段如下: entity t60s is port (clk,en60a,en60b:in std_logic。 输入的标准时钟和使能信号 dout60:out std_logic_vector(7 downto 0))。 输出 8位二进制数 end entity t60s。 architecture art of t60s is signal t6b:std_logic_vector(5 downto 0)。 begin process(clk, en60a,en60b) is begin if(clk39。 event and clk=39。 139。 ) then if en60a=39。 139。 or en60b=39。 139。 then t6b=t6b+1。 使能信号控制 else t6b=000000。 ( 3) 10s定时单元控制两路左拐灯的显示时间,从 DOUT10端口输出到显示控制模块的 AIN10 端口, 10s 定时单元模块生成器件如图 所示, EN10A、 EN10B分别甲路和乙路红灯的使能信号控制应该那一路红灯亮。 10s定时单元的主要程序段如下: 毕业设计 第 14 页 共 38 页 entity t10s is port (clk,en10a,en10b:in std_logic。 输入的标准时钟和使能信号 dout10:out std_logic_vector(7 downto 0))。 输出 8位二进制数 end entity t10s。 architecture art of t10s is signal t4b:std_logic_vector(3 downto 0)。 begin process(clk, en10a,en10b) is begin if(clk39。 event and clk=39。 139。 ) then if en10a=39。 139。 or en10b=39。 139。 then t4b=t4b+1。 使能信号的控制 else t4b=0000。 ( 4) 5s定时单元控制两路黄灯的显示时间,从 DOUT5端口输出到显示控制模块的 AIN5 端口,5s定时单元模块生成器件如图 , EN5A、 EN5B分别甲路和乙路红灯的使能信号控制应该那一路红灯亮。 5s定时单元的主要程序段如下: entity t5s is port (clk,en5a,en5b:in std_logic。 输入的 标准时钟和使能信号 dout5:out std_logic_vector(7 downto 0))。 输出的 8位二进制数 end entity t5s。 architecture art of t5s is signal t3b:std_logic_vector(2 downto 0)。 begin process(clk, en5a,en5b) is begin if(clk39。 event and clk=39。 139。 ) then if en5a=39。 139。 or en5b=39。 139。 then t3b=t3b+1。 使能信号的控制 else t3b=000。 ( 5)译码显示 显示译码电路生成器件如图 ,将用于显示 BCD 码数据进行译码,将显示控制输出的四位二进制数送入译码器后显示到共阴数码管上。 程序如下: 毕业设计 第 15 页 共 38 页 entity ymq is port(ain4:in std_logic_vector(3 downto 0)。 输入四位 BCD码 dout7:out std_logic_vector(6 downto 0))。 输出 7位二进制数 end entity ymq。 when 0000=dout7=0111111。 数码管显示 0 when 0001=dout7=0000110。 数码管显示 1 when 0010=dout7=1011011。 数码管显示 2 when 0011=dout7=1001111。 数码管显示 3 when 0100=dout7=1100110。 数码管显示 4 when 0101=dout7=1101101。 数码管显示 5 when 0110=dout7=1111101。 数码管显示 6 when 0111=dout7=0000111。 数码管显示 7 when 1000=dout7=。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。