题 目: 交通灯控制器的设计
专 业: 计算机科学与技术
班 级:
学 号:
姓 名:
指导教师:
完成日期:
目录:
○1设计任务及要求
○2 总体控制方案
○3控制电路设计
●3.1 控制电路工作原理
●3.2 控制电路设计原理
○4倒计时电路设计
●4.1具有同步置数功能的十进制减法计数器
●4.2主干道与支干道倒计时电路设计
○5倒计时电路设计
●5.1动态显示工作原理
●5.2动态显示及译码电路设计
○6总体电路设计
●6.1总体电路
●6.2电路工作说明
○7电路仿真调试
●7.1控制电路仿真调试
●7.2倒计时电路仿真调试
●7.3译码显示电路仿真调试
●7.4总体电路仿真调试 , 下载验证
○8改进意见及收获体会
○参考文献
●1设计任务及要求
设计一个用于十字路口的交通灯控制器。能显示十字路口东西、南北两个方向的红、黄、绿的指示状态。
具有倒计时功能。用两组数码管作为东西和南北方向的倒计时显示,主干道每次放行(绿灯)60秒,支干道每次放行(绿灯)45秒,在每次由绿灯变成红灯的转换过程中,要亮黄灯5秒作为过渡。
黄灯每秒闪亮一次。
●2总体控制方案
设主干道绿灯、黄灯、红灯分别为G1、Y1、R1;支干道绿灯、黄灯、红灯分别为G2、Y2、R2,并且均用0表示灭,1表示亮,则交通灯有如下四种输出状态:
状态 | G1Y1R1 | G2Y2R2 | |
S0 | 00 | 100 | 001 |
S1 | 01 | 010 | 001 |
S2 | 10 | 001 | 100 |
S3 | 11 | 001 | 010 |
通过以上观察可发现:
当主干道或者支干道的倒计时计数值为01时,控制器将从当前状态转入下一个状态。因此,计数值01可作为控制器状态转换的条件,同时也可产生同步置数信号,将下一状态的计数初值置入计数器。
●3控制电路设计
3.1控制电路工作原理:
4状态循环实现:
主干道和支干道信号灯的实现:
采用4位二进制计数器74161实现控制器的四个状态循环。当倒计时计数值为01时T1=1,作为7161的计数使能信号。
3.2控制电路设计原理:
状态 | QBQA | G1Y1R1 | G2Y2R2 |
S0 | 00 | 100 | 001 |
S1 | 01 | 010 | 001 |
S2 | 10 | 001 | 100 |
S3 | 11 | 001 | 010 |
●4倒计时电路设计
4.1:具有同步置数功能的十进制减法计数器:
由具有同步置数功能的十进制减法计数器实现。
LDN=1时: 通过卡诺图分别求解驱动方程D3D2D1D0
LDN=0时: D3D2D1D0=DCBA
现态 | 次态 | ||
CP | LDN | Q3Q2Q1Q0 | Q3Q2Q1Q0 (D3D2D1D0) |
↑ | 1 | 1001 | 1000 |
1000 | 0111 | ||
0111 | 0110 | ||
0110 | 0101 | ||
0101 | 0100 | ||
0100 | 0011 | ||
0011 | 0010 | ||
0010 | 0001 | ||
0001 | 0000 | ||
0000 | 1001 | ||
0 | XXXX | DCBA |
=>
2.再将两片及联实现2为二进制减法计数器:
4.2主干道与支干道倒计时电路设计
当主干道或支干道减法计数器为01时,产生同步置数信号,将下一状态计数初值置入。
主干道预置数 | 支干道预置数 | ||||
状态 | D7D6D5D4 | D3D2D1D0 | D7D6D5D4 | D3D2D1D0 | |
S0 | 00 | 0000 | 0101 | 0000 | 0101 |
S1 | 01 | 0101 | 0000 | 0100 | 0101 |
S2 | 10 | 0000 | 0101 | 0000 | 0101 |
S3 | 11 | 1110 | 0000 | 0110 | 0101 |
●5. 倒计时电路设计
5.1动态显示工作原理: EDA实验板上一共有8个数码管,如果按照传统的数码管驱动方式,则需要8个七段译码器和个I/O口进行驱动,这样就会浪费大量的资源。所以最常见的数码管驱动电路为动态扫描显示。
数码扫描显示原理:利用人眼的视觉暂留效应,把多个数码管按一定顺序进行点亮(显示)。当点亮的频率(即扫描频率)不大时,人眼看到的是数码管一个个的依次点亮,然而扫描频率足够大时,看到的不再是一个一个的点亮,而是全部同时点亮。
共阴极数码管:将每个数码管的公共端(阴极)分别接三-八译码器的输出,三-八译码器的输入为位选信号;将多个数码管的相同段接在一起,作为段码输入端。
5.2动态显示及译码电路设计:
七段译码:
--bcd-7seg
LIBRARY IEEE;
USE IEEE.STD_LOGIC_11.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY bcd_7seg IS
PORT(
in_data:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
out_data:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END bcd_7seg;
ARCHITECTURE rtl of bcd_7seg IS
BEGIN
PROCESS(in_data)
BEGIN
CASE in_data IS
WHEN "0000"=> out_data<="00111111";
WHEN "0001"=>out_data<="00000110";
WHEN "0010"=>out_data<="01011011";
WHEN "0011"=>out_data<="01001111";
WHEN "0100"=>out_data<="01100110";
WHEN "0101"=>out_data<="01101101";
WHEN "0110"=>out_data<="01111100";
WHEN "0111"=>out_data<="00000111";
WHEN "1000"=>out_data<="01111111";
WHEN "1001"=>out_data<="01100111";
WHEN OTHERS=>out_data<="00000000";
END CASE;
END PROCESS;
END rtl;
●6.总体电路设计:
6.1总体电路:
6.2电路工作说明:
●7电路仿真调试:
7.1控制电路仿真调试:
7.2倒计时电路仿真调试:
7.3译码显示电路仿真调试:
7.4总体电路仿真调试,下载验证:
●改进意见及收获体会:
这次设计交通灯控制器历时1个多星期,由于使用的是我没有用过的maxplus2软件,所以在使用时无法熟练的运用其各项功能,为此也消耗了不少时间。所以在做一件事情的时候还是要先把使用工具研究透彻,才能跟好的服务于研究。所幸在最终还是比较满意的完成了这次课程设计,自己也对这门课程也有了更多的实践经验,纸上谈兵终究是不够的,多实践才能出真知。
●参考文献:
《数字电子技术》(第二版)东南大学出版社出版