收藏 分销(赏)

交通灯控制电路可编程实训报告.doc

上传人:仙人****88 文档编号:9280249 上传时间:2025-03-19 格式:DOC 页数:13 大小:5.28MB 下载积分:10 金币
下载 相关 举报
交通灯控制电路可编程实训报告.doc_第1页
第1页 / 共13页
交通灯控制电路可编程实训报告.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
可编程逻辑器件实训报告——2014.06 广东水利电力职业技术学校 可 编 程 逻 辑 器 件 实 训 报 告 项目名称:交通灯控制电路 班级:13电子2班 姓名:邓明顺 指导老师:龚兰芳 前言 可编程逻辑控制器 即(Programmable Logic ControllerPLC), 它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入、输出控制各种类型的机械或生产过程。 当可编程逻辑控制器投入运行后,其工作过程一般分为三个阶段,即输入采样、用户程序执行和输出刷新三个阶段。学习PLC对于机械工程的学生来说,是一门必课,因此,PLC的实训是踏入工作前一次很有意义的学习! 目录 一、 设计要求……………………………………………………………………1 二、 设计目的……………………………………………………………………1 三、 任务要求……………………………………………………………………1 四、 设计方案……………………………………………………………………1 五、 设计原理图…………………………………………………………………2 六、 设计步骤……………………………………………………………………2 七、 硬件要求……………………………………………………………………3 八、 源程序………………………………………………………………………3 九、 引脚分配……………………………………………………………………7 十、硬件下载实现现象描述……………………………………………………8 十一、收获与体会………………………………………………………………10 13电子2·邓明顺·12号 可编程逻辑器件实训报告——2014.06 一、设计要求 此次实训是依照现实中交通灯工作逻辑设计简易交通灯控制器,在十字路口,每条道路各有一组红、黄、绿灯和倒计时显示器,用以指挥车辆和行人有序地通行。期中,红灯(r)亮,表示该条道路禁止通行;黄灯亮(y),表示停车;绿灯亮(g),表示可以通行。倒计时显示器是用来显示允许通行和禁止通行地时间。觉得控制器就是用来自动控制十字路口的交通灯和计时器,指挥各种车辆和行人安全通行。 二、设计目的    利用VHDL设计系统数据的能力,结合生活实际例子,模拟真实环境,编写出程序控制彩灯的亮灭,以数码管的计数和点阵上显示的图形,指挥十字路口交通灯的现象。 三、任务要求     在十字路口的两个方向上各设一组红、绿黄灯,显示顺序为其中一方向(东西方向)是绿灯、黄灯、红灯;令一方向(南北方向)是红灯、绿灯、黄灯。    设计两组数码管,以倒计时的方式显示允许通行或禁止通行的时间,其中绿灯、黄灯、红灯的持续时间分别是20s、5s、25s。    当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其它需要优先通行的车辆通过时,各方向均是红灯亮,倒计时停止,且显示数字在闪烁。当特殊运行状态结束后,控制器恢复用来状态,继续正常进行。 四、设计方案 1.整理思路:从要求中可以发现交通灯亮灭的规律。 计数器的计数值与交通灯亮灭的关系如下图所示。 计数值与交通灯亮灭的关系 2.分析: 显然,本课题的核心是一个技术范围0-49(共50S)的计数器和一个根据计数值做出规定反应的控制器。另外,所用实验板配备的晶振20MHz,因此还需要一个分频电路。最后,要驱动七段数码管,显然还需要一个译码电路。 交通灯控制器系统框图 五、设计原理图 设计原理图 六、 设计步骤 1.计数器的设计 这里需要的计数器的计数范围为0—49。计到49后,下一个时钟沿回复到0,开次下一轮计数。此外,当检测到特殊情况(hold=’1’)发生时,计数器暂停计数,而系统复位信号reset则使计算器异步清0。 2.控制器的设计 控制器的作用是根据计算器的计数值控制发光二极管的亮、灭,以及输 出倒计时数值给七段数译管的分位译码电路。此外,当检测到特殊情况(hold=’1’)发生时,无条件点亮红色的发光二极管。 3.分位译码器电路的设计 因为控制器输出的倒计时数值可能是1位或2位十进制,所以在七段数码管的译码电路前要加上分位电路(即将其分为2个1位十进制,如25分为2和5,7分为0和7)。 七、硬件要求 在硬件方面,主要是含有芯片EPM240T100C5的开发板和下载线与电源线。交通控制器主要用到了两个拨码开关和四组红绿黄LED灯。拨码开关分别是rst复位开关,hold是紧急开关。四组LED灯是东西和南北两个方向的交通指示灯。 八、源程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity jtd is port( clk: in std_logic; rst,hold:in std_logic; x:out std_logic_vector(1 to 7); en:out std_logic_vector(1 to 6); fm,r,y,g:out std_logic; row:out std_logic_vector(1 to 4); lie,hang:out std_logic_vector(1 to 8) ); end jtd; architecture one of jtd is signal clk1,clk2:std_logic; signal w1:integer range 0 to 3; signal w3,w4:integer range 0 to 2; signal w2:integer range 0 to 1; signal a,b,c,d:integer range 0 to 9; signal e,f:integer range 0 to 2; signal countnum:integer range 0 to 49; signal flash,de,num:std_logic; signal numa,numb:integer range 0 to 25; begin process(clk) variable cnt1:integer range 0 to 2000; variable cnt2:integer range 0 to 12500; begin if clk'event and clk='1' then if cnt1=2000 then cnt1:=0; if cnt2=12500 then cnt2:=0; clk1<=not clk1; else cnt2:=cnt2+1; end if; else cnt1:=cnt1+1; end if; end if; end process; process(clk) variable cnt1:integer range 0 to 100; variable cnt2:integer range 0 to 625; begin if clk'event and clk='1' then if cnt1=100 then cnt1:=0; if cnt2=625 then cnt2:=0; clk2<=not clk2; else cnt2:=cnt2+1; end if; else cnt1:=cnt1+1; end if; end if; end process; process(rst,clk1) begin if rst='1' then countnum<=0; elsif rising_edge(clk1)then if hold='1' then countnum<=countnum; else if countnum=49 then countnum<=0; else countnum<=countnum+1; end if; end if; end if; end process; process(clk2,flash) variable num:integer range 0 to 9; begin if flash=clk1 then en<="111111"; --6个数码管 end if; if flash='0' then if rising_edge(clk2)then if w1=3 then w1<=0; else w1<=w1+1; end if; end if; case w1 is when 0=>en<="111110";num:=a; when 1=>en<="111101";num:=b; when 2=>en<="101111";num:=c; when 3=>en<="011111";num:=d; end case; case num is when 0=>x<="1111110"; --七段数码管 when 1=>x<="0110000"; when 2=>x<="1101101"; when 3=>x<="1111001"; when 4=>x<="0110011"; when 5=>x<="1011011"; when 6=>x<="1011111"; when 7=>x<="1110000"; when 8=>x<="1111111"; when 9=>x<="1111011"; end case; end if; end process; process(clk2) variable de:integer range 0 to 2; begin if rising_edge(clk2)then if w2=1 then w2<=0; else w2<=w2+1; end if; case w2 is when 0=>row<="0101";de:=e; when 1=>row<="1010";de:=f; end case; case de is --东西南北 when 0=>r<='1';y<='0';g<='0'; when 1=>r<='0';y<=clk1;g<='0'; when 2=>r<='0';y<='0';g<='1'; end case; end if; end process; process(clk1) begin if hold='1' then e<=0; f<=0; fm<=clk1; flash<=clk1; else fm<='0'; flash<='0'; if countnum<=19 then numa<=19-countnum; e<=2; elsif countnum<=24 then numa<=24-countnum; e<=1; else numa<=49-countnum; e<=0; end if; if countnum<=24 then numb<=24-countnum; f<=0; elsif countnum<=44 then numb<=44-countnum; f<=2; else numb<=49-countnum; f<=1; end if; end if; end process; process(numa,numb) begin if numa>=20 then b<=2; a<=numa-20; elsif numa>=10 then b<=1; a<=numa-10; else b<=0; a<=numa; end if; if numb>=20 then d<=2; c<=numb-20; elsif numb>=10 then d<=1; c<=numb-10; else d<=0; c<=numb; end if; end process; process(clk2) --点阵 begin if rising_edge(clk2) then if countnum<25 then if w4=2 then w4<=0; else w4<=w4+1; end if; case w4 is when 0=>hang<="11111111";lie<="11100111"; when 1=>hang<="01100110";lie<="11011011"; when 2=>hang<="00100100";lie<="10111101"; end case; else if w3=2 then w3<=0; else w3<=w3+1; end if; case w3 is when 0=>hang<="00011000";lie<="00000000"; when 1=>hang<="00100100";lie<="10011001"; when 2=>hang<="01000010";lie<="11011011"; end case; end if; end if; end process; end one; 九、 引脚分配 十、 硬件下载实现现象描述 e:当数码管显示0-24计数倒计时,南北方向红灯亮, 当数码管显示0-19计数倒计时,南北方向绿灯亮,点阵上箭头显示可行方向;当数码管显示0-4计数倒计时,南北方向黄灯亮。 f:当数码管显示0-19计数倒计时,东西方向绿灯亮,点阵上箭头显示可行方向;当数码管显示0-4计数倒计时,东西方向黄灯亮, 当数码管显示0-24计数倒计时,东西方向红灯亮。 当hold='1'时,蜂鸣器鸣叫,数码管以1hz频率闪烁,发光二极管显示红灯,表示紧急情况下。 当rst=’1’时,复位,重新计数。 十一、收获与体会 经过一学期来的学习,训练,我已深深爱上了这个科目——可编程逻辑器件技术。 刚开始时是不懂这门课的,经过老师的教学,我学到了许多。 在这次实训中,我温习了对软件的应用,学习了相关知识,更理解了可编程逻辑的一般语法知识。感谢这一学期老师的陪伴,谢谢。 - 9 - 13电子2·邓明顺·12号
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服