数字电子技术。
课程设计报告。
题目b6单行道交通灯控制器。
学院:信息工程学院。
专业:自动化。
班级:0702班。
姓名:康岩。
学号:07001102
时间:2024年7月2日。
指导老师:夏路易。
题目】:单行道交通灯控制器。
设计一个单行道交通灯控制器 ,传感器1,传感器2检测车辆,当车辆经过时产生一个脉冲。当方向1为绿灯时,进入单行道几辆车,就必须在方向2检测到几辆车开出,就是当两个传感器检测到的车辆之差为零时,才给方向2绿灯,否则两个方向都是红灯。车辆从方向2进入时的情况与方向1相同。
要求,绿灯经过黄灯后才能变红。
控制要求:1) 方向1绿灯20秒车辆驶入,方向2红灯。 2)方向1黄灯3秒后变为红灯,方向2红灯,等待直到两个传感器检测到相同次数脉冲方向2 变为绿灯,依次往下循环。
一.用max-plus ii 软件对交通信号灯状态机及其他各模块进行设计并最终形成顶层模块。
1) 原理框图。
图 1-1单行道交通控制器的原理框图。
2) 状态机。
图1-2 单行道交通控制器的状态图。
3)状态机源程序。
library ieee;
use use
entity state is
port( td3,td20,clk,sen1,sen2:in std_logic;
g1,y1,r1,g2,y2,r2,t3,t20 :out std_logic); end;
architecture state_arch of state is
type zt_type is (z0,z1,z2,z3,z4,z5);
signal zt_now, zt_next : zt_type;
beginn1:process(clk)
beginif clk'event and clk='1' then zt_now<=zt_next;
end if; end process;
n2:process(td3,td20,sen1,sen2,zt_now)
begincase zt_now is
when z0=> g1<='1';y1<='0';r1<=‘0’;g2<=‘0‘;y2<=‘0’;r2<=‘1’;t3<='0';t20<=‘1';
if td20=‘1' then zt_next<=z1; else zt_next<=z0; end if;
when z1=> g1<='0';y1<=‘1';r1<=‘0’;g2<=‘0‘;y2<=‘0’;r2<=‘1’; t3<=‘1';t20<='0';
if td3='1' then zt_next<=z2; else zt_next<=z1; end if;
when z2=> g1<=‘0';y1<='0';r1<=‘1’;g2<=‘0‘;y2<=‘0’;r2<=‘1’; t3<='0';t20<='0';
if sen2=‘1' then zt_next<=z3; else zt_next<=z2; end if;
when z3=> g1<=‘0';y1<='0';r1<=‘1’;g2<=‘1‘;y2<=‘0’;r2<=‘0’; t3<=‘0';t20<=‘1';
if td20='1' then zt_next<=z4; else zt_next<=z3; end if;
when z4=> g1<=‘0';y1<='0';r1<=‘1’;g2<=‘0‘;y2<=‘1’;r2<=‘0’; t3<=‘1';t20<=‘0';
if td3='1' then zt_next<=z5; else zt_next<=z4; end if;
when z5=> g1<=‘0';y1<='0';r1<=‘1’;g2<=‘0‘;y2<=‘0’;r2<=‘1’; t3<=‘0';t20<=‘0';
if sen1=‘1' then zt_next<=z0; else zt_next<=z5; end if;
when others=>g1<='0';y1<='0';r1<=‘0’;g2<=‘0‘;y2<=‘0’;r2<=‘0’; t3<='0';t20<='0';zt_next<=z0;
end case;
end process;
end state_arch;
图1-3状态机**结果。
4)3计数器源程序。
library ieee;
use use
entity jishu3 is
port(clk,t3 :in std_logic;
td3 :out std_logic;
shuchu:out std_logic_vector(3 downto 0));
end;architecture ds3_arch of jishu3 is
signal qq: std_logic_vector(3 downto 0);
beginprocess(clk,t3)
beginif t3='0' then ";
elsif clk'event and clk='1' then
if " then qq<=;
else qq<=qq;
end if;
end if;
end process;
td3<='1' when " else '0';
shuchu<= downto 0);
end ds3_arch;
图1-4 3s计数器**结果。
5)20计数器源程序。
library ieee;
use use
entity jishu20 is
port(clk,t20:in std_logic;
td20 :out std_logic;
gaowei,diwei:out std_logic_vector(3 downto 0));
end;architecture ds20_arch of jishu20 is
signal qd,qg: std_logic_vector(3 downto 0);
beginprocess(clk,t20)
beginif t20='0' then qd<="0000";qg<="0010";
elsif clk'event and clk='1' then
if qd>"0000" or qg>"0000"then
if qd>"0000"then qd<=qd-1;
else qd<="1001";
end if;
if qd="0000"then qg<=qg-1;
end if;
else qd<=qd;qg<=qg;
end if;
end if;
gaowei<=qg;
diwei<=qd;
end process;
td20<='1' when qd="0000" and qg="0000" else '0';
end ds20_arch;
图1-5 20s计数器**结果。
6)译码器源程序。
library ieee;
use use
entity yimaqi is
port( bcd :in std_logic_vector(3 downto 0);
abc :out std_logic_vector(0 to 6));
end;architecture yima_arch of yimaqi is
signal bb: std_logic_vector(0 to 6);
beginprocess(bcd)
begincase bcd is
when "0000" =bb <=0000001";
when "0001" =bb <=1001111";
when "0010" =bb <=0010010";
when "0011" =bb <=0000110";
when "0100" =bb <=1001100";
when "0101" =bb <=0100100";
when "0110" =bb <=0100000";
when "0111" =bb <=0001111";
when "1000" =bb <=0000000";
when "1001" =bb <=0000100";
when "1010" =bb <=0001000";
when "1011" =bb <=1100000";
when "1100" =bb <=0110001";
when "1101" =bb <=1000010";
when "1110" =bb <=0110000";
when "1111" =bb <=0111000";
when others =>bb <=1111111";
end case;
end process;
数电课程设计
两位十进制计数显示器。一 设计内容。本设计主要采用芯片有555定时器 74162计数器 7448七段字形译码器,以及七段led数码管。能过以上元器件的组合,构成一个两位十进制计数显示器,实现循环依序显示0 99的数字。要求每位同学独立设计电路原理图,制作pcb电路板并印制上自己的学号。二 电路原理。...
数电课程设计
数字电子技术基础 课程设计报告。数字万年历。班级 姓名 签字。学号 日期 目录。1.设计任务及要求3 2 设计思路与说明3 2.1电路图及原理说明3 2.1.1年部分计数器3 2.1.2月部分计数器5 2.1.3日期部分计数器6 2.1.4 星期部分计数器7 3 电路调试基本过程遇到的问题及调试结果...
数电课程设计
数字电子课程设计报告。题目 电子生日蜡烛。系班 电气0805 组员 焦雪菲08291140齐龙。杨超08291158 指导老师 王强。电路原理图。一 系统功能概述。如图1所示,这个电路产生了一套基于led的电子生日蜡烛。这种蜡烛与吹灭蜡制蜡烛一样具有相同的乐趣,并且它是可重复利用的,可改进的以及低碳...