数电课设交通灯课设.docx
《数电课设交通灯课设.docx》由会员分享,可在线阅读,更多相关《数电课设交通灯课设.docx(20页珍藏版)》请在冰豆网上搜索。
数电课设交通灯课设
课程设计
交通灯控制电路的设计
班级/学号
学生姓名
指导教师
一.概述
设计一交通灯控制电路,该电路由电源、时钟信号、计数电路、逻辑判断电路和控制执行电路组成,其原理框图如图1所示。
技术指标:
1.电源输出电压为:
+5V。
2.可以控制东南西北四个方向,每个方向控制时间为60S。
3.用红、黄、绿三种颜色分别表示停、注意和通行其中红——黄——绿时间间隔为2S。
4.该控制电路具有自动和手动控制两种方式,满足特殊情况下交通管理。
二.方案论证
设计一个交通灯控制电路,能控制东西和南北两条干道的交通灯。
功能包括:
1.控制电路2.计数电路3.分位电路4.倒计时输出电路。
交通灯亮灭时间关系如图2所示。
交通灯控制器原理如图3所示
时间值
Hold=0
Hold
Reset
时间倒计时
Hold=1
Clock
图3交通灯控制器原理图
三、电路设计
1.计数器
针对此问题,计数器的计数范围为0-59。
分为0-28,29-30,31-59三部分,每来一个秒脉冲,使计数器加1,直到计数器计到59后,当遇到下一个时钟上升沿时回复到0,开始下一轮计数。
此外,当检测到特殊情况时,需要进行手动控制使Hold=‘1’,此时计数器暂停计数。
当系统出现故障或者想重新开始计数时按下系统复位信号RESET可使计数器异步清零。
计数器逻辑电路图如图4所示
图4计数器逻辑电路图
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYjishuIS
PORT(clock:
INSTD_LOGIC;
reset:
instd_logic;
Hold:
instd_logic;
countNum:
BuFFeRINTEGERRANGE0TO59);
END;
ARCHITECTUREbehaviorOFjishuIS
BEGIN
process(reset,Clock)
BEGIN
IFReset='1'THEN
countNum<=0;
ELSIFrising_edge(Clock)THEN
IFHold='1'then
countNum<=countNum;
ELSE
IFcountNum=59THEN
countNum<=0;
ELSE
countNum<=countNum+1;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
END;
2.控制器
正常情况下,控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,达到对东西和南北两条干道的交通控制。
同时,将时间数值给传给分位译码电路。
当遇到紧急情况时,需要手动将Hold置成‘1’,此时控制东西和南北的两条干道均点亮红灯二极管。
控制器逻辑电路图如图5所示
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYkongzhiIS
PORT(Clock:
INSTD_LOGIC;
Hold:
instd_logic;
CountNum:
inINTEGERRANGE0TO59;
Num:
outINTEGERRANGE0TO29;
RedA,GreenA,YellowA:
outstd_logic;
RedB,GreenB,YellowB:
outstd_logic);
END;
ARCHITECTUREbehaviorOFkongzhiIS
BEGIN
process(Clock)
BEGIN
IFRISING_edge(Clock)THEN
IFHold='1'THEN
RedA<='1';
RedB<='1';
GreenA<='0';
GreenB<='0';
YellowA<='0';
YellowB<='0';
ELSIFCountNum<=28THEN
Num<=28-CountNum;
RedA<='0';
GreenA<='1';
YellowA<='0';
RedB<='1';
GreenB<='0';
YellowB<='0';
ELSIFCountNum<=30THEN
Num<=30-CountNum;
RedA<='0';
GreenA<='0';
YellowA<='1';
RedB<='0';
GreenB<='0';
YellowB<='1';
ELSE
Num<=59-CountNum;
RedB<='0';
GreenB<='1';
YellowB<='0';
RedA<='1';
GreenA<='0';
YellowA<='0';
ENDIF;
ENDIF;
ENDPROCESS;
END;
3.分位译码器
控制器输出的倒计时数值可能是1位或者2位十进制数,而一个七段数码管只能显示一位十进制的数,因此为了能够显示出每一种颜色灯的剩余时间,需要在七段数码管的译码电路前加上分位电路。
分位译码器如图6所示
图6分为译码器逻辑电路图
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYFenwIS
PORT
(Numin:
INintegerRANGE0TO29;
NumA,NumB:
OUTIntegerRANGE0to9
);
END;
ARCHITECTUREbehaviorOFFenwIS
BEGIN
process(Numin)
BEGIN
IFNumin>=20THEN
NumA<=2;
NumB<=Numin-20;
ELSIFNumin>=10THEN
NumA<=1;
NumB<=Numin-10;
ELSE
NumA<=0;
NumB<=Numin;
ENDIF;
ENDPROCESS;
END;
4.数码管
针对此问题,需要两个七段数码管。
将两个数码管对应的引脚分别接在分位器的两个输出引脚上,分别显示灯亮剩余时间的十位数和个位数。
当遇到紧急情况时,控制器和计数器的Hold=‘1’,此时无论剩余时间有多少,两个七段数码管显示的数值都为‘0’。
数码管逻辑电路图如图7所示
图7数码管逻辑电路图如图
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYbcd_dataIS
PORT
(bcd_data:
inSTD_LOGIC_VECTOR(3downto0);
segout:
outSTD_LOGIC_VECTOR(6downto0)
);
END;
ARCHITECTUREbehaviorOFbcd_dataIS
BEGIN
process(bcd_data)
BEGIN
casebcd_datais
when"0000"=>segout<="1111110";
when"0001"=>segout<="0110000";
when"0010"=>segout<="1101101";
when"0011"=>segout<="1111001";
when"0100"=>segout<="0110011";
when"0101"=>segout<="1011011";
when"0110"=>segout<="0011111";
when"0111"=>segout<="1110000";
when"1000"=>segout<="1111111";
when"1001"=>segout<="1110011";
whenothers=>null;
ENDCASE;
ENDPROCESS;
END;
四.程序流程图
1.计数器
计数器程序流程图如图8所示
2.控制器
控制器程序流程图如图9所示
3.分位器
分位器程序流程图如图10所示
4.数码管
数码管程序流程图如图11所示
五、结论
通过设计,当东西干道依次为红灯(29秒),黄灯(2秒),绿灯(29秒)时,南北干道依次为绿灯(29秒),黄灯(2秒),红灯(29秒)。
当出现紧急情况时,将Hold置成‘1’。
此时东西和南北两干道都亮红灯。
当Reset置成‘1’时,交通灯将重新计时。
可以达到控制东西南北干道的功能。
六、课设体会及合理化建议
通过这次交通灯控制器课程设计,我不仅加深了对交通灯理论的理解,将理论很好地应用到解决实际问题中去。
在这次设计中培养了我自学的能力,因为对数电和模电只接触了半年,所以对一些原理和知识还不太了解,只能自己通过上图书馆,网络寻找答案,这对我今后的学习与发展有很大的帮助。
平时,在做数电实验时接触过maxplusII的软件,但只是一个个简单的程序,而在做这个课程设计时,需要将这些程序加以改动并拼凑在一起,这就需要我对平时的知识活学活用,而不是照搬,这对我创新能力的提高也有很大的帮助。
课程设计程序调试很重要,在编完各模块程序之后,首先要检查程序语句是否有错误。
,在没有错误之后可以进行波型仿真。
若与题目要求的有出入,再查看程序,在运算逻辑上进行改进。
通过这次课程设计,我发现了自己的不足之处,对以前学的知识掌握的不够牢固,理解的不够深刻,需要经常翻书。
最终,在老师和同学的帮助下,不断的修改程序,终于达到了课程设计的要求。
虽然,我顺利的完成了这次课设,但我认为我设计的交通灯控制器的功能仍有待完善和改进,例如当遇到紧急情况时,可以任意控制东西和南北两条干道交通灯的颜色而不是只能是红灯,当黄灯亮时,可以闪烁以提醒司机注意等等。
以后,我会对这个程序加以改进。
参考文献
1.童诗白、华成英主编者.模拟电子技术基础.[M]北京:
高等教育出版社,2008年
2.谭博学主编.集成电路原理与应用.[M]北京:
电子工业出版社,2006年
3.谢自美主编.电子线路设计、实验、测试.[M]武昌:
华中科技大学出版社,1992年
4.戴伏生主编.基础电子电路设计与实践,[M]北京:
国防工业出版社,2007年
5.张庆双主编.全新实用电路集粹上、下册,[M]北京:
机械工业出版社,2008年
附录I总逻辑电路图
总逻辑电路图如图12所示
图12总逻辑电路图
附录II波形仿真图
1.Hold=‘0’Reset=‘0’时的波形如图13(a)(b)(c)(d)(e)(f)所示
图13(a)
图13(b)
图13(c)
图13(d)
图13(e)
图13(f)
2.Hold=‘1’Reset=‘0’时的波形如图14(a)(b)(c)(d)所示
图14(a)
图14(b)
图14(c)
图14(d)
3.Hold=‘0’Reset=‘1’时的波形如图15(a)(b)(c)(d)所示
图15(a)
图15(b)
图15(c)
图15(d)
图15(e)