数字电路-交通灯控制器-实验报告

数字电路-交通灯控制器-实验报告
数字电路-交通灯控制器-实验报告

课题1.4.2:交通灯控制器

一.设计课题的任务要求:

(一)、实验目的

1. 熟练掌握VHDL 语言和QuartusII 软件的使用;

2. 理解状态机的工作原理和设计方法;

(二)、相关知识

本实验要利用CPLD 设计实现一个十字路口的交通灯控制系统,与其他控制系统一样,本系统划分为控制器和受控电路两部分。控制器使整个系统按设定的工作方式交替指挥车辆及行人的通行,并接收受控部分的反馈信号,决定其状态转换方向及输出信号,控制整个系统的工作过程。

路口交通灯控制系统的有东西路和南北路交通灯R(红)、Y(黄)、G(绿)三色,所有灯均为高电平点亮。设置20s 的通行时间和5s 转换时间的变模定时电路,用数码管显示剩余时间。提供系统正常工作/复位和紧急情况两种工作模式。

(三)、实验任务

1.基本任务:

设计制作一个用于十字路口的交通灯控制器。

1). 南北和东西方向各有一组绿、黄、红灯用于指挥交通,绿灯、黄灯和红灯的持续时间分别为20 秒、5 秒和25 秒;

2). 当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复原来状态,继续正常运行;

3). 用数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间;

二.系统设计(包括设计思路、总体框图、分块设计)

(一)设计思路

1.总体设计----输入部分:

1)CLK时钟频率输入,可由实验板上直接提供,为准确确定时间长度,选择1024Hz信号。

2)紧急状态按键拨码开关EMERGENCY,当将其置为高电平,表示紧急情况发生,两个方向均为红灯

亮,计时停止;当置其为低电平,信号灯和计时器恢复原来状态,正常工作。

3)复位拨码开关RESET,当将其置为高电平,表示复位,工作停止,全部回到初始状态;当置其为低

电平,重新开始工作。

2.总体设计----输出部分:

1)东西方向和南北方向各使用3个LED显示,LIGHT1,LIGHT2,红黄绿各代表红黄绿灯。

2)东西方向和南北方向计时均为2位数,共需要4个LED七段数码管显示。

(二)总体框图

1.输入输出示意图

2.模块示意图

3.流程图

4.RTL图

5.状态显示

(三)分块设计-------在VHDL设计中,采用自顶向下的设计思路。

1.顶层模块中,根据硬件设计,设置如下端口:

◆外部时钟信号:CLK

◆紧急状态按键:EMERGENCY

◆南北方向状态灯:LIGHT1

◆东西方向状态灯:LIGHT2

◆数码管显示信号:NUM

◆控制数码管:B_OUT

2.在底层中,把不同功能分模块设计。

◆FREQUENCY模块,由于外部时钟信号CLK的频率为1024Hz,而实际需要的内部计时时钟频率为

1Hz,需要一个分频电路。

输入端口:CLK外部时钟信号

输出端口:CLK_OUT分频后信号

◆COUNTER模块,由于整个过程的显示周期为50秒,即50个状态,所以该模块为计数器模块,计

数周期为50,输入为1Hz的外部时钟,并加入紧急信号和复位信号,当输入紧急信号,计数停止,

当输入复位信号,计数置1.通过该计数器的计数输出信号来控制LIGHT模块和COUNTDOWN模块

的状态。

输入端口:CLK时钟信号,EMERGENCY紧急信号,RESET复位信号

输出端口:COUNTER计数状态信号

◆COUNTDOWN模块,倒计时显示模块,通过输入的COUNTER和CLK来控制数码管共阴极和7

段数码管数字显示控制。

输入接口:CLK时钟信号,COUNT计数器信号

输出接口:CAT_TEMP共阴极控制,NUMIN数字输出

◆bian_ma_6模块:将输入接口的CAT_TEMP共阴极控制转换为三八译码器的输入端。

输入端口:CAT_TEMP共阴极控制

输出端口:b_out;

◆SHOW模块,接收数字信号,进行7位数码管显示译码输出。

输入接口:NUMIN输入信号

输出接口:NUM译码输出

◆LIGHT信号灯控制模块,使用状态机,双进程控制5个状态

输入接口:COUNT计数器信号,EMERGENCY紧急状态控制

输出接口:LIGHT1,LIGHT2信号灯输出

三.仿真波形及波形分析

仿真波形

1.状态周期为1~50,在每个状态内,数码管共阴极进行扫描,且扫描同时数码管显示进行循环变化

2.周期状态,在1~20,21~25,26~45,46~50进行红绿灯显示变化

3.一整个周期状态1~50,在1~20,21~25,26~45,46~50进行红绿灯显示变化

4.多个周期循环

5.紧急状态和复位状态

四.源程序(注释)

●FREQUENCY--分频模块:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY FREQUENCY IS

PORT(

CLK:IN STD_LOGIC;

CLK_OUT:OUT STD_LOGIC

);

END FREQUENCY;

ARCHITECTURE FREQ OF FREQUENCY IS

SIGNAL TEMP:INTEGER RANGE 0 TO 1023;----设置分频1023,则为1Hz

BEGIN

PROCESS(CLK)

BEGIN

IF(CLK'EVENT AND CLK='1')THEN

IF(TEMP=1023)THEN

TEMP<=0;

ELSE

TEMP<=TEMP+1;

END IF;

IF TEMP<1023 THEN

CLK_OUT<='0';

ELSE CLK_OUT<='1';

END IF;

END IF;

END PROCESS;

END;

●COUNTER.vhd----计数器模块(主要控制模块),用外部时钟设置了50个状态的一个周期1~50

----由于该交通灯的状态为50种,数码管有50种显示状态

----完全通过控制计数器的停止和复位来控制闪灯和数码管

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

ENTITY COUNTER IS

PORT(

CLK:IN STD_LOGIC;----外部时钟输入

RESET:IN STD_LOGIC;----复位信号输入

EMERGENCY:IN STD_LOGIC;----紧急信号输入

COUNTER:OUT STD_LOGIC_VECTOR (5 DOWNTO 0):="000001"----计数信号输出

);

END COUNTER;

ARCHITECTURE CON OF COUNTER IS

SIGNAL TEMPCOUNT:INTEGER RANGE 1 TO 50:=1;----定义信号计数,初始状态为1

BEGIN

PROCESS(CLK,RESET,EMERGENCY)

BEGIN

IF CLK'EVENT AND CLK='1' THEN----外部时钟,1Hz

IF RESET='1' THEN----复位状态

TEMPCOUNT<=1;----计数器回到初始状态1

ELSIF TEMPCOUNT=50 THEN

TEMPCOUNT<=1;----计数器计数状态,加1

ELSE TEMPCOUNT<=TEMPCOUNT+1;

END IF;

ELSIF EMERGENCY='1' THEN----当紧急信号为高电平,进入紧急状态

TEMPCOUNT<=TEMPCOUNT;----计数器停止计数

END IF;

END PROCESS;

COUNTER<=CONV_STD_LOGIC_VECTOR(TEMPCOUNT,6);----内部信号转化为输出

END CON;

●LIGHT.vhd----交通灯显示信号

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

ENTITY LIGHT IS

PORT(

EMERGENCY:IN STD_LOGIC;----紧急信号输入,控制紧急状态

COUNT:IN STD_LOGIC_VECTOR(5 DOWNTO 0);----计数器输入,控制其它正常状态

LIGHT1,LIGHT2:OUT STD_LOGIC_VECTOR(2 DOWNTO 0)----交通灯信号输出

);

END LIGHT;

ARCHITECTURE LIGHTSHOW OF LIGHT IS

TYPE STATES IS----设置状态机,控制状态

(S0,S1,S2,S3,S4);

SIGNAL STATE:STATES;

SIGNAL TEMPCOUNT:INTEGER RANGE 1 TO 50;

BEGIN

P1:PROCESS(COUNT,EMERGENCY)

BEGIN

TEMPCOUNT<=CONV_INTEGER(COUNT);----将二进制输入转化为十进制计数信号IF EMERGENCY='1' THEN----EMERGENCY为高电平时为紧急状态

STATE<=S4;

ELSE

CASE TEMPCOUNT IS----由计数器控制状态持续时间

WHEN 1 TO 20 => STATE<=S0;----1秒到20秒

WHEN 21 TO 25 => STATE<=S1;----21秒到25秒

WHEN 26 TO 45 => STATE<=S2;----26秒到45秒

WHEN 46 TO 50 => STATE<=S3;----46秒到50秒

END CASE;

END IF;

END PROCESS P1;

P2:PROCESS(STATE)----状态机

BEGIN

CASE STATE IS

WHEN S0 =>LIGHT1<="001";----南北绿灯

LIGHT2<="100";----东西红灯

WHEN S1 =>LIGHT1<="010";----南北黄灯

LIGHT2<="100";----东西红灯

WHEN S2 =>LIGHT1<="100";----南北红灯

LIGHT2<="001";----东西绿灯

WHEN S3 =>LIGHT1<="100";----南北红灯

LIGHT2<="010";----东西黄灯

WHEN S4 =>LIGHT1<="100";----南北红灯

LIGHT2<="100";----东西红灯

END CASE;

END PROCESS;

END LIGHTSHOW;

COUNTDOWN.vhd----7段数码管倒计时控制模块

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

ENTITY COUNTDOWN IS

PORT(

COUNT:IN STD_LOGIC_VECTOR(5 DOWNTO 0);----计数器输入信号

CLK:IN STD_LOGIC;----时钟信号

NUMIN:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);----输出7段数码管显示数字信号,输出到译码模块CAT_TEMP:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));----7端数码管共阴极输出控制信号

END COUNTDOWN;

ARCHITECTURE COUNTSHOW OF COUNTDOWN IS

SIGNAL TEMP:INTEGER RANGE 0 TO 3;

SIGNAL COUNTER:INTEGER RANGE 1 TO 50;

SIGNAL CAT:STD_LOGIC_VECTOR(5 DOWNTO 0):="011111";

SIGNAL NUM_IN:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

P1:PROCESS(CLK)----内部时钟,控制7段数码管显示扫描内容

BEGIN

COUNTER<=CONV_INTEGER(COUNT);

IF(CLK'EVENT AND CLK='1')THEN

IF(TEMP=3)THEN

TEMP<=0;

ELSE

TEMP<=TEMP+1;

END IF;

END IF;

END PROCESS P1;

P2:PROCESS(COUNTER,TEMP)

BEGIN

COUNTER<=CONV_INTEGER(COUNT);

CASE COUNTER IS----通过计数器输入信号控制状态

WHEN 1=>CASE TEMP IS----在每个状态内部设置数码管扫描过程,由于COUNTER和----扫描时钟不同

----则可在数码管上同时显示4个数字,以状态1

----(COUNTER=1)为例

----显示“1924”,并在共阴极上扫描,以下同

----共标记50种状态

WHEN 1=>NUM_IN<="1001";CAT<="101111";

WHEN 2=>NUM_IN<="0010";CAT<="111101";

WHEN 3=>NUM_IN<="0100";CAT<="111110";

END CASE;

WHEN 2=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="011111";

WHEN 1=>NUM_IN<="1000";CAT<="101111";

WHEN 2=>NUM_IN<="0010";CAT<="111101";

WHEN 3=>NUM_IN<="0011";CAT<="111110";

END CASE;

WHEN 3=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="011111";

WHEN 1=>NUM_IN<="0111";CAT<="101111";

WHEN 2=>NUM_IN<="0010";CAT<="111101";

WHEN 3=>NUM_IN<="0010";CAT<="111110";

END CASE;

WHEN 4=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="011111";

WHEN 1=>NUM_IN<="0110";CAT<="101111";

WHEN 2=>NUM_IN<="0010";CAT<="111101";

WHEN 3=>NUM_IN<="0001";CAT<="111110";

END CASE;

WHEN 5=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="011111";

WHEN 1=>NUM_IN<="0101";CAT<="101111";

WHEN 2=>NUM_IN<="0010";CAT<="111101";

WHEN 3=>NUM_IN<="0000";CAT<="111110";

END CASE;

WHEN 6=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="011111";

WHEN 1=>NUM_IN<="0100";CAT<="101111";

WHEN 2=>NUM_IN<="0001";CAT<="111101";

WHEN 3=>NUM_IN<="1001";CAT<="111110";

END CASE;

WHEN 7=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="011111";

WHEN 1=>NUM_IN<="0011";CAT<="101111";

WHEN 2=>NUM_IN<="0001";CAT<="111101";

WHEN 3=>NUM_IN<="1000";CAT<="111110";

END CASE;

WHEN 8=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="011111";

WHEN 1=>NUM_IN<="0010";CAT<="101111";

WHEN 3=>NUM_IN<="0111";CAT<="111110";

END CASE;

WHEN 9=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="011111";

WHEN 1=>NUM_IN<="0001";CAT<="101111";

WHEN 2=>NUM_IN<="0001";CAT<="111101";

WHEN 3=>NUM_IN<="0110";CAT<="111110";

END CASE;

WHEN 10=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="011111";

WHEN 1=>NUM_IN<="0000";CAT<="101111";

WHEN 2=>NUM_IN<="0001";CAT<="111101";

WHEN 3=>NUM_IN<="0101";CAT<="111110";

END CASE;

WHEN 11=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="1001";CAT<="101111";

WHEN 2=>NUM_IN<="0001";CAT<="111101";

WHEN 3=>NUM_IN<="0100";CAT<="111110";

END CASE;

WHEN 12=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="1000";CAT<="101111";

WHEN 2=>NUM_IN<="0001";CAT<="111101";

WHEN 3=>NUM_IN<="0011";CAT<="111110";

END CASE;

WHEN 13=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="0111";CAT<="101111";

WHEN 2=>NUM_IN<="0001";CAT<="111101";

WHEN 3=>NUM_IN<="0010";CAT<="111110";

END CASE;

WHEN 14=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="0110";CAT<="101111";

WHEN 2=>NUM_IN<="0001";CAT<="111101";

WHEN 3=>NUM_IN<="0001";CAT<="111110";

END CASE;

WHEN 15=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="0101";CAT<="101111";

WHEN 2=>NUM_IN<="0001";CAT<="111101";

WHEN 3=>NUM_IN<="0000";CAT<="111110";

END CASE;

WHEN 16=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="0100";CAT<="101111";

WHEN 2=>NUM_IN<="0000";CAT<="111101";

WHEN 3=>NUM_IN<="1001";CAT<="111110";

END CASE;

WHEN 17=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="0011";CAT<="101111";

WHEN 2=>NUM_IN<="0000";CAT<="111101";

WHEN 3=>NUM_IN<="1000";CAT<="111110";

END CASE;

WHEN 18=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="0010";CAT<="101111";

WHEN 2=>NUM_IN<="0000";CAT<="111101";

WHEN 3=>NUM_IN<="0111";CAT<="111110";

END CASE;

WHEN 19=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="0001";CAT<="101111";

WHEN 2=>NUM_IN<="0000";CAT<="111101";

WHEN 3=>NUM_IN<="0110";CAT<="111110";

END CASE;

WHEN 20=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="0000";CAT<="101111";

WHEN 2=>NUM_IN<="0000";CAT<="111101";

WHEN 3=>NUM_IN<="0101";CAT<="111110";

END CASE;

WHEN 21=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="0100";CAT<="101111";

WHEN 2=>NUM_IN<="0000";CAT<="111101";

WHEN 3=>NUM_IN<="0100";CAT<="111110";

END CASE;

WHEN 22=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="0011";CAT<="101111";

WHEN 2=>NUM_IN<="0000";CAT<="111101";

WHEN 3=>NUM_IN<="0011";CAT<="111110";

END CASE;

WHEN 23=>CASE TEMP IS

WHEN 1=>NUM_IN<="0010";CAT<="101111";

WHEN 2=>NUM_IN<="0000";CAT<="111101";

WHEN 3=>NUM_IN<="0010";CAT<="111110";

END CASE;

WHEN 24=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="0001";CAT<="101111";

WHEN 2=>NUM_IN<="0000";CAT<="111101";

WHEN 3=>NUM_IN<="0001";CAT<="111110";

END CASE;

WHEN 25=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="011111";

WHEN 1=>NUM_IN<="0000";CAT<="101111";

WHEN 2=>NUM_IN<="0000";CAT<="111101";

WHEN 3=>NUM_IN<="0000";CAT<="111110";

END CASE;

WHEN 26=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="111101";

WHEN 1=>NUM_IN<="1001";CAT<="111110";

WHEN 2=>NUM_IN<="0010";CAT<="011111";

WHEN 3=>NUM_IN<="0100";CAT<="101111";

END CASE;

WHEN 27=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="111101";

WHEN 1=>NUM_IN<="1000";CAT<="111110";

WHEN 2=>NUM_IN<="0010";CAT<="011111";

WHEN 3=>NUM_IN<="0011";CAT<="101111";

END CASE;

WHEN 28=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="111101";

WHEN 1=>NUM_IN<="0111";CAT<="111110";

WHEN 2=>NUM_IN<="0010";CAT<="011111";

WHEN 3=>NUM_IN<="0010";CAT<="101111";

END CASE;

WHEN 29=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="111101";

WHEN 1=>NUM_IN<="0110";CAT<="111110";

WHEN 2=>NUM_IN<="0010";CAT<="011111";

WHEN 3=>NUM_IN<="0001";CAT<="101110";

END CASE;

WHEN 30=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="111101";

WHEN 1=>NUM_IN<="0101";CAT<="111110";

WHEN 3=>NUM_IN<="0000";CAT<="101111";

END CASE;

WHEN 31=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="111101";

WHEN 1=>NUM_IN<="0100";CAT<="111110";

WHEN 2=>NUM_IN<="0001";CAT<="011111";

WHEN 3=>NUM_IN<="1001";CAT<="101111";

END CASE;

WHEN 32=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="111101";

WHEN 1=>NUM_IN<="0011";CAT<="111110";

WHEN 2=>NUM_IN<="0001";CAT<="011111";

WHEN 3=>NUM_IN<="1000";CAT<="101111";

END CASE;

WHEN 33=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="111101";

WHEN 1=>NUM_IN<="0010";CAT<="111110";

WHEN 2=>NUM_IN<="0001";CAT<="011111";

WHEN 3=>NUM_IN<="0111";CAT<="101111";

END CASE;

WHEN 34=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="111101";

WHEN 1=>NUM_IN<="0001";CAT<="111110";

WHEN 2=>NUM_IN<="0001";CAT<="011111";

WHEN 3=>NUM_IN<="0110";CAT<="101111";

END CASE;

WHEN 35=>CASE TEMP IS

WHEN 0=>NUM_IN<="0001";CAT<="111101";

WHEN 1=>NUM_IN<="0000";CAT<="111110";

WHEN 2=>NUM_IN<="0001";CAT<="011111";

WHEN 3=>NUM_IN<="0101";CAT<="101111";

END CASE;

WHEN 36=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="1001";CAT<="111110";

WHEN 2=>NUM_IN<="0001";CAT<="011111";

WHEN 3=>NUM_IN<="0100";CAT<="101111";

END CASE;

WHEN 37=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="1000";CAT<="111110";

WHEN 2=>NUM_IN<="0001";CAT<="011111";

WHEN 3=>NUM_IN<="0011";CAT<="101111";

END CASE;

WHEN 38=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="0111";CAT<="111110";

WHEN 2=>NUM_IN<="0001";CAT<="011111";

WHEN 3=>NUM_IN<="0010";CAT<="101111";

END CASE;

WHEN 39=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="0110";CAT<="111110";

WHEN 2=>NUM_IN<="0001";CAT<="011111";

WHEN 3=>NUM_IN<="0001";CAT<="101111";

END CASE;

WHEN 40=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="0101";CAT<="111110";

WHEN 2=>NUM_IN<="0001";CAT<="011111";

WHEN 3=>NUM_IN<="0000";CAT<="101111";

END CASE;

WHEN 41=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="0100";CAT<="111110";

WHEN 2=>NUM_IN<="0000";CAT<="011111";

WHEN 3=>NUM_IN<="1001";CAT<="101111";

END CASE;

WHEN 42=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="0011";CAT<="111110";

WHEN 2=>NUM_IN<="0000";CAT<="011111";

WHEN 3=>NUM_IN<="1000";CAT<="101111";

END CASE;

WHEN 43=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="0010";CAT<="111110";

WHEN 2=>NUM_IN<="0000";CAT<="011111";

WHEN 3=>NUM_IN<="0111";CAT<="101111";

END CASE;

WHEN 44=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="0001";CAT<="111110";

WHEN 2=>NUM_IN<="0000";CAT<="011111";

WHEN 3=>NUM_IN<="0110";CAT<="101111";

END CASE;

WHEN 45=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="0000";CAT<="111110";

WHEN 2=>NUM_IN<="0000";CAT<="011111";

WHEN 3=>NUM_IN<="0101";CAT<="101111";

END CASE;

WHEN 46=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="0100";CAT<="111110";

WHEN 2=>NUM_IN<="0000";CAT<="011111";

WHEN 3=>NUM_IN<="0100";CAT<="101111";

END CASE;

WHEN 47=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="0011";CAT<="111110";

WHEN 2=>NUM_IN<="0000";CAT<="011111";

WHEN 3=>NUM_IN<="0011";CAT<="101111";

END CASE;

WHEN 48=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="0010";CAT<="111110";

WHEN 2=>NUM_IN<="0000";CAT<="011111";

WHEN 3=>NUM_IN<="0010";CAT<="101111";

END CASE;

WHEN 49=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="0001";CAT<="111110";

WHEN 2=>NUM_IN<="0000";CAT<="011111";

WHEN 3=>NUM_IN<="0001";CAT<="101111";

END CASE;

WHEN 50=>CASE TEMP IS

WHEN 0=>NUM_IN<="0000";CAT<="111101";

WHEN 1=>NUM_IN<="0000";CAT<="111110";

WHEN 2=>NUM_IN<="0000";CAT<="011111";

WHEN 3=>NUM_IN<="0000";CAT<="101111";

END CASE;

END CASE;

END PROCESS P2;

NUMIN<=NUM_IN;

CAT_TEMP<=CAT;

END COUNTSHOW;

Bian_ma_6----控制数码管显示模块

library ieee;

use ieee.std_logic_1164.all;

entity bian_ma_6 is

port(

cat_temp: in std_logic_vector(5 downto 0);

b_out : out std_logic_vector(2 downto 0));

end bian_ma_6;

architecture beha of bian_ma_6 is

begin

process(cat_temp)

begin

case cat_temp is

when"011111"=>b_out<="000";--1

when"101111"=>b_out<="001";--2

when"111101"=>b_out<="100";--5

when"111110"=>b_out<="101";--6

when others=>null;

end case;

end process;

end beha;

SHOW.vhd----数码管显示译码模块

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY SHOW IS

PORT(

NUM_IN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);----数码管数字信号输入

NUM:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)----7端数码管输出

);

END SHOW;

ARCHITECTURE SHOWTIME OF SHOW IS

SIGNAL NUM_OUT:STD_LOGIC_VECTOR(6 DOWNTO 0):="0110000";

BEGIN

PROCESS(NUM_IN)----译码过程

BEGIN

CASE NUM_IN IS

WHEN "0000"=>NUM_OUT<="1111110";----0

WHEN "0001"=>NUM_OUT<="0110000";----1

WHEN "0010"=>NUM_OUT<="1101101";----2

WHEN "0011"=>NUM_OUT<="1111001";----3

WHEN "0100"=>NUM_OUT<="0110011";----4

WHEN "0101"=>NUM_OUT<="1011011";----5

WHEN "0110"=>NUM_OUT<="1011111";----6

WHEN "0111"=>NUM_OUT<="1110000";----7

WHEN "1000"=>NUM_OUT<="1111111";----8

WHEN "1001"=>NUM_OUT<="1111011";----9

WHEN OTHERS=>NUM_OUT<="0000000";----其他状态不显示END CASE;

END PROCESS;

NUM<=NUM_OUT;

END;

五.功能说明

1.南北和东西方向各有一组红,黄,绿,各自的持续时间分别为25s,5s,20s。

2.当有特殊紧急情况时,两个方向均为红灯,计时暂停。

当特殊情况结束后,控制器恢复原来状态,继续正常工作。

3.用数码管,以倒计时方式显示两个方向允许通行或禁止通行的剩余时间。

4.当拨码开关置复位为高电平时,可恢复初始状态,重新计时。

六.元器件清单及资源利用情况

1.元器件清单

数字系统与逻辑设计实验-----课题三:交通灯控制器

◆稳压电源

◆计算机

◆实验板一块

◆Quartus II

2.资源利用情况

(1)管脚分配

八.总结和结论

(一)总结

本次实验室对上学期所学的VHDL和QUARTUSII的知识的巩固和应用,通过对一个综合性的课题的分析、设计、编写代码、调试和实践来检验学习的成果和提高独立思考能力和动手实践能力。并且,我们在实验课中继续学习了综合性课题的设计方法----自顶向下的设计方法,从单一性的设计到模块化的设计,在深入理解VHDL语言的同时,锻炼了个人的逻辑思维和设计能力,提高了个人的自学能力个学习素质。虽然在设计的过程中也会出现一些问题,但是通过小组成员的交流和对程序的调试和改进,最终成功完成了课题任务的设计和实践,基本上算是一次成功的实验经历。

(二)结论

本次实验是对VHDL语言的深入学习,主要学习并实践了VHDL的自顶向下的设计方法。在学习和实践的过程中,体会到各种语言的共同性。如C++高级语言程序设计也是利用自顶向下的设计方法来完成课题功能的设计,从这一点可以看出各个高级语言的逻辑互通性。这给我们今后的思维和学习一个很大的启示。

PLC交通灯控制实训报告

《微机原理与控制技术》 课 程 设 计 报 告 题目:____________ 姓名:____________ 学号:____________ 班级:____________ 辅导教师:____________ 日期:____________

目录 目录................................................................................................ 摘要................................................................................................ 1系统概述..................................................................................... 2 硬件设计.................................................................................... 3 软件设计.................................................................................... 总结与体会.................................................................................... 参考文献........................................................................................

数字钟设计报告——数字电路实验报告

. 数字钟设计实验报告 专业:通信工程 :王婧 班级:111041B 学号:111041226 .

数字钟的设计 目录 一、前言 (3) 二、设计目的 (3) 三、设计任务 (3) 四、设计方案 (3) 五、数字钟电路设计原理 (4) (一)设计步骤 (4) (二)数字钟的构成 (4) (三)数字钟的工作原理 (5) 六、总结 (9) 1

一、前言 此次实验是第一次做EDA实验,在学习使用软硬件的过程中,自然遇到很多不懂的问题,在老师的指导和同学们的相互帮助下,我终于解决了实验过程遇到的很多难题,成功的完成了实验,实验结果和预期的结果也是一致的,在这次实验中,我学会了如何使用Quartus II软件,如何分层设计点路,如何对实验程序进行编译和仿真和对程序进行硬件测试。明白了一定要学会看开发板资料以清楚如何给程序的输入输出信号配置管脚。这次实验为我今后对 EDA的进一步学习奠定了更好的理论基础和应用基础。 通过本次实验对数电知识有了更深入的了解,将其运用到了实际中来,明白了学习电子技术基础的意义,也达到了其培养的目的。也明白了一个道理:成功就是在不断摸索中前进实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。 2

二、设计目的 1.掌握数字钟的设计方法。 2熟悉集成电路的使用方法。 3通过实训学会数字系统的设计方法; 4通过实训学习元器件的选择及集成电路手册查询方法; 5通过实训掌握电子电路调试及故障排除方法; 6熟悉数字实验箱的使用方法。 三、设计任务 设计一个可以显示星期、时、分、秒的数字钟。 要求: 1、24小时为一个计数周期; 2、具有整点报时功能; 3、定时闹铃(未完成) 四、设计方案 一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器和定时器组成。干电路系统由秒信号发生器、“时、 3

PLC实验报告(交通灯控制系统)

交通灯控制系统 一、实验目的 (1)用PLC构成十字路口交通灯控制系统。 (2)掌握程序调试的步骤和方法。 (3)掌握构建实际PLC控制系统的能力。 二、实验要求 (1)复习PLC常用指令的功能及用法。 (2)复习PLC程序设计的一般方法。 (3)根据实验要求提前编写程序,待上机验证调试修改。 三、实验环境 软件:STEP 7-Micro_WIN V40+ SP9:S7-200的编程软件 STEP 7-Micro_WIN V32指令库 硬件:THSMS-2A型PLC实验箱(西门子)、电脑、连接导线、USB-PPI 通信电缆 四、实验内容及步骤 交通灯控制系统面板图如上图所示,控制要求如下: 交通信号灯受一个总控制开关控制,当总控制开关接通时,信号灯系统开始工作。 开始工作后,南北红灯和东西绿灯同时点亮,4秒后东西绿灯开始闪烁,闪烁2秒后熄灭,熄灭同时切换成东西黄灯亮,2秒后东西黄灯和南北红灯同时熄灭,东西红灯和南北绿灯同时点亮。4秒后南北绿灯开始闪烁,闪烁2秒后熄灭,熄灭同时切换成南北黄灯亮,2秒后南北黄灯和东西红灯同时熄灭,再次切换成南北红灯和东西绿灯同时点亮。如此循环,周而复始。 当总控制开关断开时,所有信号灯都熄灭。

(1)确定I/O点数。列出详细的I/O地址分配表。如(该表仅为举例, (3)输入编好的PLC控制程序。 (4)运行程序,按控制要求设置各输入量,观察PLC运行情况,记录南北、东西各灯顺序亮、灭的运行情况。调试程序直至正确为止。 解:由题目要求得,

②梯形图如下图①,语句表如下图②,时序图如下图③: 图①图① 图②图② 图③ 五、注意事项

单片机交通灯实训报告

机电工程学院课程设计报告 课程名称:单片机课程设计 专业班级: 13电本2班 学号: 2013041632 学生:罗炜 指导教师:王清辉、何文丰 完成时间: 报告成绩:

交通灯设计 一、设计任务与要求 设计基本要求: (1)车辆通行繁忙的十字交叉路口,设计一交通灯控制器,设东西方向通行时间为30秒,当剩余3秒时黄灯亮,南北方向通行时间为20秒,当剩余3秒时黄灯亮。(2)东西、南北方向各用三个(绿、黄、红)LED表示,并用数码管显示东西、南北方向的剩余时间。 (3)可利用按键修改时间参数,可以利用按键切换东西南北交通灯的当前状态(即立刻东西由红变绿,南北有绿变红,并按设定的时间工作)。 二、方案设计与论证 表2-1:交通灯的工作状态表 根据表2-1所示可将交通灯的工作状态设为以下几个步骤: 1、初始状态时即为东西方向绿灯通行27秒+3秒黄灯,此时南北红灯亮。 2、随后是南北方向绿灯通行17秒+3秒黄灯,此时东西红灯亮。 3、通过按模式选择键一次来切换东西南北交通灯的当前状态。(通过设置定时计时器T1实现交通灯的计时) 4、通过按模式选择键第二次切换至南北方向红绿灯的计时设置,通过加减按键来确定南北方向红绿灯的计时数。 5、确定南北方向计数值后,通过按模式选择键第三次切换至东西方向红绿灯的计

时设置,通过加减按键来确定东西方向红绿灯的计时数。 6、确定交通灯计时数后再按下模式选择键后,交通灯便进入工作状态。 时间计时的实现:采用定时中断实现秒的精确计时(详细方案入下列程序设计所示)。 按键输入的实现:通过编写按键读取函数,来实现交通灯的状态以及时间值得设定(详细方案入下列程序设计所示)。

智能交通灯控制器实训报告

目录 摘要 1 绪论 (1) 2设计方案简述 (2) 2.1实现主要功能 (2) 2.2设计方案与意义 (2) 3 详细设计 (3) 3.1 系统硬件电路设计 (3) 3.2 AT89C51芯片简介 (3) 3.3芯片74LS237介绍 (6) 3.4单元电路设计 (7) 3.5系统整体设计电路 (9) 3.6系统软件功能设计 (9) 4 PROTEUS与Keil C51的操作 (12) 4.1硬件电路图的接法操作 (12) 4.2单片机系统PROTEUS设计与仿真过程 (13) 4.3仿真结果 (14) 5.5 总结 (18)

绪论 交通灯是人们日常出行必须要遵守的交通规则。它的发明源于19世纪初,近年来随着科技的飞速发展,单片机的应用正在不断地走向深入。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。 基于传统交通灯控制系统设计过于死板,红绿灯交替是间过于程式化的缺点,智能交通灯控制系统的设计就更显示出了它的研究意义,它能根据道路交通拥护,交叉路口经常出现拥堵的情况。利用单片机控制技术.提出了软件和硬件设计方案,能够实现道路的最大通行效率。 本课程设计的任务就是设计一个交通灯的控制系统。鼓励学生在熟悉基本原理的情况下,与实际应用相联系,提出自己的方案,完善设计。 具体设计任务如下: 1.进行系统总体设计。 2.完成系统硬件电路设计。 3.完成系统软件设计。 4.撰写设计说明书。设计要求: 1.该控制系统能控制东西南北四个路口的红黄绿灯正常工作。东西和南北方向分时准行和禁行。

数字逻辑电路实验报告

数字逻辑电路 实验报告 指导老师: 班级: 学号: 姓名: 时间: 第一次试验一、实验名称:组合逻辑电路设计

二、试验目的: 1、掌握组合逻辑电路的功能测试。 2、验证半加器和全加器的逻辑功能。 3、、学会二进制数的运算规律。 三、试验所用的器件和组件: 二输入四“与非”门组件3片,型号74LS00 四输入二“与非”门组件1片,型号74LS20 二输入四“异或”门组件1片,型号74LS86 四、实验设计方案及逻辑图: 1、设计一位全加/全减法器,如图所示: 电路做加法还是做减法是由M决定的,当M=0时做加法运算,当M=1时做减法运算。当作为全加法器时输入信号A、B和Cin分别为加数、被加数和低位来的进位,S 为和数,Co为向上的进位;当作为全减法时输入信号A、B和Cin分别为被减数,减数和低位来的借位,S为差,Co为向上位的借位。 (1)输入/输出观察表如下: (2)求逻辑函数的最简表达式 函数S的卡诺图如下:函数Co的卡诺如下: 化简后函数S的最简表达式为: Co的最简表达式为:

(3)逻辑电路图如下所示: 2、舍入与检测电路的设计: 用所给定的集成电路组件设计一个多输出逻辑电路,该电路的输入为8421码,F1为“四舍五入”输出信号,F2为奇偶检测输出信号。当电路检测到输入的代码大于或等于5是,电路的输出F1=1;其他情况F1=0。当输入代码中含1的个数为奇数时,电路的输出F2=1,其他情况F2=0。该电路的框图如图所示: (1)输入/输出观察表如下: B8 B4 B2 B1 F2 F1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1

数字系统课程设计-交通灯控制器实验报告

交通灯控制器 ——数字系统设计报告 姓名: 学号:

一.实验目的 1.基本掌握自顶向下的电子系统设计方法 2.学会使用PLD和硬件描述语言设计数字电路,掌握 Quartus II等开发工具的使用方法 3.培养学生自主学习、正确分析和解决问题的能力 二.设计要求 我所选择的课题是用Verilog HDL实现交通灯控制器。该课题的具体内容及要求如下: 主干道与乡村公路十字交叉路口在现代化的农村星罗棋布,为确保车辆安全、迅速地通过,在交叉路口的每个入口处设置了红、绿、黄三色信号灯。红灯禁止通行;绿灯允许通行;黄灯亮则给行驶中的车辆有时间行驶到禁行线之外。主干道和乡村公路都安装了传感器,检测车辆通行情况,用于主干道的优先权控制。 (1)当乡村公路无车时,始终保持乡村公路红灯亮,主干道绿灯亮。 (2)当乡村公路有车时,而主干道通车时间已经超过它的最短通车时间时,禁止主干道通行,让乡村公路通行。主干道最短通车时间为25s 。 (3)当乡村公路和主干道都有车时,按主干道通车25s,乡村公路通车16s交替进行。 (4)不论主干道情况如何,乡村公路通车最长时间为16s。 (5)在每次由绿灯亮变成红灯亮的转换过程中间,要亮5s时

间的黄灯作为过渡。 (6)用开关代替传感器作为检测车辆是否到来的信号。用红、绿、黄三种颜色的发光二极管作交通灯。 (7)要求显示时间,倒计时。 (C表示乡村道路是否有车到来,1表示有,0表示无;SET用来控制系统的开始及停止;RST是复位信号,高电平有效,当RST=1时,恢复到初始设置;CLK是外加时钟信号;MR、MY、MG分别表示主干道的红灯、黄灯和绿灯;CR、CY、CG分别表示乡村道路的红灯、黄灯和绿灯,1表示亮,0表示灭) 系统流程图如下:(MGCR:主干道绿灯,乡村道路红灯;MYCR:主干道黄灯,乡村道路红灯;MRCG:主干道红灯,乡村道路绿灯;MRCY:主干道红灯,乡村道路黄灯;T0=1表示主干道最短通车时间到,T1=1表示5秒黄灯时间到,T2=1表示乡村道路最长通车时间到。)

单片机实验三(急救车与交通灯)

单片机技术与应用 实验报告 实验名称:外部中断实验(急救车与交通灯)班级:11062811 学号:11061118 姓名:吕琳涛 指导老师:谷雨 2013年5月20日

1. 实验要求 由以74LS273作为输出口,控制4个双色LED灯(可发红,绿,黄光),模拟交通灯管理,并允许急救车优先通过的要求。有急救车到达时,两向交通信号为全红,以便让急救车通过。假定急救车通过路口时间为10秒,急救车通过后,交通灯恢复中断前状态。本实验以按键为中断申请,表示有急救车通过。 2. 实验目的 1.学习外部中断技术的基本使用方法。 2.学习中断处理程序的编程方法。 3. 程序说明: 在本次实验中,我们可以确定外部中断的作用是用于有救护车行驶过来时对程序的进行的简单的控制。对于正常的红绿灯的亮灭我们可以参考第一个实验中流水灯的设计理念。综上所述我们这一次的实验就是流水灯与外部中断的结合。 通过对七种情况的罗列 1 0 0 1 0 1 1 0 南北绿,东西红 0 1 1 0 1 0 0 1 南北红,东西绿 1 0 0 1 1 1 1 1 只亮东西红 0 1 1 0 1 1 1 1 只亮南北红 0 0 0 0 0 1 1 0 南北黄,东西红 0 0 0 0 1 0 0 1 南北红,东西黄 0 0 0 0 1 1 1 1 全红 我们可以利用XBYTE[0xf200]这个函数对这几种情况进行读取与显

示,在不同情况进行显示的过程中我们用以前的delay函数进行时间上的规划从而达到依次显示的效果。 0x0f 全红XBYTE[0xf200]=0x0f; 0x96 南北绿,东西红XBYTE[0xf200]=0x96; 0x9f 只亮东西红XBYTE[0xf200]=0x9f; 0x06 南北黄,东西红XBYTE[0xf200]=0x06; 0x69 南北红,东西绿XBYTE[0xf200]=0x69; 0x6f 只亮南北红XBYTE[0xf200]=0x6f; 0x09 南北红,东西黄XBYTE[0xf200]=0x09; 在具体的实验代码编写过程中,我们会用到EA=1;EX0=1;IT0=1;用于设定外部中断0为跳变沿触发方式,默认为电平触发方式。interrupt 0函数是处理有救护车驶过时的情况。 至此,程序编写完成,放入软件中进行编译和下载。

交通灯控制器课程设计实验报告

2011级课程设计实验报告 交 通 灯 控 制 器 院(系):计算机与信息工程学院 专业年级: 2011级通信工程一班 姓名: 谢仙 学号: 指导教师: 杨菊秋 2013年06月25日

目录 1 引言 (3) 2 任务与要求 (3) 3 课程设计摘要及整体方框图 (3) 4 课程设计原理 (4) 555定时器 (5) 七位二进制计数器4024 (6) 二进制可逆计数器74LS193 (8) 数码显示电路 (9) 结论 (10) 体会与收获 (10) 附录: 1、整体电路原理图 (11) 2、元件表 (12) 3、焊接与调试 (12) 1引言

交通信号灯常用于交叉路口,用来控制车辆的流量,提高交叉路口车辆的通行能力,减少交通事故。本交通灯设计主要由秒脉冲发生器、计数器、译码显示电路组成。秒脉冲发生器由NE555产生脉冲,计数器由74LS193和4024实现,译码电路采用74LS48和七段数码管来显示。 2设计任务与要求 交通灯控制信号的应用非常广泛。本电路设计一个交通灯控制器,需要达到的目的如下; 一个周期64秒,平均分配,前32秒红灯亮,后32秒绿灯亮。 在红灯亮的期间的后8秒与红灯在一起的黄灯闪烁(注意:红灯同时亮)。为了显示效果明显,设计闪烁频率为1。 在绿灯亮的期间的后8秒与绿灯在一起的黄灯闪烁(注意:绿灯同时亮),为了显示效果明显,设计闪烁频率为1。 在黄灯闪烁期间,数码管同时倒计时显示,在此期间以外,数码管不亮。 3课程设计摘要及整体方框图 为了完成交通灯控制电路的设计,方案考虑如下: 一个脉冲信号发生器,一个二进制加法计数器,一个十进制减法计数器,红灯与绿灯以及黄灯是否亮是由二进制加法计数器的输出端状态来决定的,因此,设计一个组合逻辑电路,它的输入信号就是二进制加法计数器的输出信号,它的输出就是发光二极管的控制信号,因此,需要一个组合逻辑电路,六个发光二极管(二个红色发光二极管,二个绿色发光二极管,二个黄色发光二极管)电路,一个数码管显示电路。结构图如下: 4 课程设计原理分析及相关知识概述

数字电路实验报告

数字电路实验报告 姓名:张珂 班级:10级8班 学号:2010302540224

实验一:组合逻辑电路分析一.实验用集成电路引脚图 1.74LS00集成电路 2.74LS20集成电路 二、实验内容 1、组合逻辑电路分析 逻辑原理图如下:

U1A 74LS00N U2B 74LS00N U3C 74LS00N X1 2.5 V J1 Key = Space J2 Key = Space J3 Key = Space J4 Key = Space VCC 5V GND 图1.1组合逻辑电路分析 电路图说明:ABCD 按逻辑开关“1”表示高电平,“0”表示低电平; 逻辑指示灯:灯亮表示“1”,灯不亮表示“0”。 真值表如下: A B C D Y 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 表1.1 组合逻辑电路分析真值表 实验分析: 由实验逻辑电路图可知:输出X1=AB CD =AB+CD ,同样,由真值表也能推出此方程,说明此逻辑电路具有与或功能。 2、密码锁问题: 密码锁的开锁条件是:拨对密码,钥匙插入锁眼将电源接通,当两个条件同时满足时,开锁信号为“1”,将锁打开;否则,报警信号为“1”,则接通警铃。

试分析下图中密码锁的密码ABCD 是什么? 密码锁逻辑原理图如下: U1A 74LS00N U2B 74LS00N U3C 74LS00N U4D 74LS00N U5D 74LS00N U6A 74LS00N U7A 74LS00N U8A 74LS20D GND VCC 5V J1 Key = Space J2 Key = Space J3 Key = Space J4 Key = Space VCC 5V X1 2.5 V X2 2.5 V 图 2 密码锁电路分析 实验真值表记录如下: 实验真值表 A B C D X1 X2 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 1 1 0 0 0 0 1 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 1 1 1 0 1 表1.2 密码锁电路分析真值表 实验分析: 由真值表(表1.2)可知:当ABCD 为1001时,灯X1亮,灯X2灭;其他情况下,灯X1灭,灯X2亮。由此可见,该密码锁的密码ABCD 为1001.因而,可以得到:X1=ABCD ,X2=1X 。

EDA实验报告实验五:交通灯控制器设计

实验五十字路口交通灯控制器设计一.实验目的 1.进一步加强经典状态机的设计 2.学会设计模可变倒计时计数器 二.实验要求 一条主干道,一条乡间公路。组成十字路口,要求优先保证主干道通行。有MR(主红)、MY(主黄)、MG(主绿)、CR(乡红)、CY(乡黄)、CG(乡绿)六盏交通灯需要控制;交通灯由绿→红有4秒黄灯亮的间隔时间,由红→绿没有间隔时间;系统有MRCY、MRCG、MYCR、MGCR四个状态; 乡间公路右侧各埋有一个传感器,当有车辆通过乡间公路时,发出请求信号S=1,其余时间S=0; 平时系统停留在MGCR(主干道通行)状态,一旦S信号有效,经MYCR(黄灯状态)转入MRCG(乡间公路通行)状态,但要保证MGCR的状态不得短于一分钟;一旦S信号无效,系统脱离MRCG状态。随即经MRCY(黄灯状态)进入MGCR 状态,即使S信号一直有效,MRCG状态也不得长于20秒钟。 三.实验设计: 1.一条主道,一条乡道,组成十字路口,要求优先保证主道通行。 2.当主道没有车通行,且乡道友车要通行时,并且此时主道通行时间大于1分钟,则主道变黄灯,乡道保持红灯,经过4秒倒计时时间进入主道为红灯乡道为绿灯的状态。再倒计时20秒钟。在倒计时过程中,若乡道突然没有车通行,马上进入主道红灯,乡道黄灯状态,倒计时4秒。 3.之后主道变为绿灯,乡道为红灯,这时无论乡道有无车通行都要倒计时60秒,然后若乡道有车通行则主道为黄灯,乡道为红灯,若乡道一直没有车要通行则保持主道通行,若乡道友车通行则按照上面的状态依次进行转换。 按照以上的思路,设计两个底层文件和一个顶层文件: 1.模块1是状态改变控制6盏灯的亮与灭。

交通灯控制器课程设计报告

中南林业科技大学 课程设计报告 设计名称:交通灯控制器 姓名: 学号: 专业班级: 院(系): 一、课程设计题目:交通灯控制器 时间:2015年6月29日至7月13日 地点: 指导老师: 二、课程设计目的

交通灯控制信号的应用非常广泛。本电路设计一个交通灯控制器,需要达到的目的如下: 一个周期64秒,平均分配,前32秒红灯亮,后32秒绿灯亮。 在红灯亮的期间的后8秒与红灯在一起的黄灯闪烁(注意:红灯同时亮)。为了显示效果明显,设计闪烁频率为1。 在绿灯亮的期间的后8秒与绿灯在一起的黄灯闪烁(注意:绿灯同时亮),为了显示效果明显,设计闪烁频率为1。 在黄灯闪烁期间,数码管同时倒计时显示,在此期间以外,数码管不亮. 三、 课程设计方案 为了完成交通灯控制电路的设计,方案考虑如下: 一个脉冲信号发生器,一个二进制加法计数器,一个十进制减法计数器,红灯与绿灯以及黄灯是否亮是由二进制加法计数器的输出端状态来决定的,因此,设计一个组合逻辑电路,它的输入信号就是二进制加法计数器的输出信号,它的输出就是发光二极管的控制信号,因此,需要一个组合逻辑电路,六个发光二极管(二个红色发光二极管,二个绿色发光二极管,二个黄色发光二极管)电路,一个数码管显示电路。结构图如下: 四、 课程设计原理 脉冲信号发生器由定时器555构成。 二进制加法计数器由七位二进制加法计数器4024构成。 555脉冲 振荡器 4024 计数器 组合逻辑电路 发光二极管电路 193 计数器 4511 驱动器 数码管

十进制减法计数器由74LS193可逆可预置十进制计数器构成。 组合逻辑电路根据其输入输出的逻辑关系后再确定电路芯片。 驱动器选用4511。 从以上讨论可知,需要对所采用的芯片有比较详细的了解。下 面对以上几种芯片的基本知识和基本特性进行介绍。 1、555定时器 555定时器是一块常用的集成电路,电路符号如左图所示,8为电源端VCC,1为公共端GND。所加电源电压范围:4.5V

基于AT89C51单片机的交通灯实验报告

/* * 实现基于C51的交通信号灯的控制操作 * 使用器件->> * 1.74HC138用于控制LED的位选码的设定 * 2.T0->>实现一个时间的定时操作(设置为10ms) * 3.P0->>作为LED现实的断码输出端 * 4.P1->>作为LED交通灯的信号灯的控制端 * 5.P2->>作为74HC138的为选码的控制端 * 6.P3.2->>作为一个复位的中断信号处理(与K1相连用于控制复位交通信号灯) * 需要考虑的一个问题是-》这个难道南北方向和东西方向的时间控制长短是一样的?#include //LED显示的字符段码 static char[] LED_TABLE = {0x3f , 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; /* * SN_IFGREEN:用于控制南北方向的灯的显示操作 * EW_IFGREEN:用于控制东西方向的灯的显示操作 * 0:红灯 * 1:绿灯 */ int SN_IFGREEN = 0; int EW_IFGREEN = 1; /* 用于控制定时时间为1s */ int TIME1S = 100; /* 用于控制时间为60s */ int LEDTIME = 60; /* LED交通灯的设置*/ sbit SN_RED = P1^0; sbit SN_YELLOW = P1^1; sbit SN_GREEN = P1^2; sbit EW_RED = P1^3; sbit EW_YELLOW = P1^4; sbit EW_GREEN = P1^5; /* 设置74HC138的位选码*/ sbit PA = P2^2; sbit PB = P2^3; sbit PC = P2^4; //初始化系统信息 void init_SYS(); //每当时间运行1s时进行操作处理 void time_SUB();

交通灯控制器报告(北理)

本科实验报告实验名称:交通灯控制器设计

目录 一、设计指标 (1) 二、设计框图 (1) 三、设计过程 (2) 3.1系统状态转换图 (2) 3.2时钟基准发生电路的设计 (3) 3.3传感器电路 (4) 3.4预置法时序发生电路设计 (5) 3.5预置数电路设计 (5) 3.6控制电路设计 (6) 3.7交通灯译码电路设计 (7) 3.8求反电路和4位二进制码转BCD码电路 (7) 3.9显示电路设计 (8) 3.10 Vs有效时暂停电路设计(改进部分) (8) 四、设计结果 (9) 五、实验结果 (10) 六、实验中遇到的问题及解决办法 (11) 七、实验所需元器件 (11) 八、实验心得体会 (12)

一、设计指标 1)设计一个十字路口交通灯,十字路口有主路和支路,共两组红绿灯;2)主路亮灯顺序为绿灯(16s)→黄灯(4s)→红灯(13s)→黄灯(4s);支路亮灯顺序为绿灯(13s)→黄灯(4s)→红灯(16s)→黄灯(4s); 3)主路有一个传感器,当支路无车时,主路亮绿灯; 4) 用数码管倒序显示主路的红绿灯显示时间。 二、设计框图 绘制设计框图如下,

三、设计过程 3.1系统状态转换图 符号说明: S0:一种状态,表示主路亮绿灯,支路亮红灯; S1:一种状态,表示主路亮黄灯,支路亮黄灯; S2:一种状态,表示主路亮红灯,支路亮绿灯; S3:一种状态,表示主路亮黄灯,支路亮黄灯; :表示主路亮绿灯(支路亮红灯)时间,时间到为1,不到为0; :表示主路(支路)亮黄灯时间,时间到为1,不到为0; :表示支路亮绿灯(主路亮红灯)时间,时间到为1,不到为0;

数字电子技术实验报告汇总

《数字电子技术》实验报告 实验序号:01 实验项目名称:门电路逻辑功能及测试 学号姓名专业、班级 实验地点物联网实验室指导教师时间2016.9.19 一、实验目的 1. 熟悉门电路的逻辑功能、逻辑表达式、逻辑符号、等效逻辑图。 2. 掌握数字电路实验箱及示波器的使用方法。 3、学会检测基本门电路的方法。 二、实验仪器及材料 1、仪器设备:双踪示波器、数字万用表、数字电路实验箱 2. 器件: 74LS00 二输入端四与非门2片 74LS20 四输入端双与非门1片 74LS86 二输入端四异或门1片 三、预习要求 1. 预习门电路相应的逻辑表达式。 2. 熟悉所用集成电路的引脚排列及用途。 四、实验内容及步骤 实验前按数字电路实验箱使用说明书先检查电源是否正常,然后选择实验用的集成块芯片插入实验箱中对应的IC座,按自己设计的实验接线图接好连线。注意集成块芯片不能插反。线接好后经实验指导教师检查无误方可通电实验。实验中

1.与非门电路逻辑功能的测试 (1)选用双四输入与非门74LS20一片,插入数字电路实验箱中对应的IC座,按图1.1接线、输入端1、2、4、5、分别接到K1~K4的逻辑开关输出插口,输出端接电平显 图 1.1 示发光二极管D1~D4任意一个。 (2)将逻辑开关按表1.1的状态,分别测输出电压及逻辑状态。 表1.1 输入输出 1(k1) 2(k2) 4(k3) 5(k4) Y 电压值(v) H H H H 0 0 L H H H 1 1 L L H H 1 1 L L L H 1 1 L L L L 1 1 2. 异或门逻辑功能的测试

图 1.2 (1)选二输入四异或门电路74LS86,按图1.2接线,输入端1、2、4、5接逻辑开关(K1~K4),输出端A、B、Y接电平显示发光二极管。 (2)将逻辑开关按表1.2的状态,将结果填入表中。 表1.2 输入输出 1(K1) 2(K2) 4(K35(K4) A B Y 电压(V) L H H H H L L L H H H H L L L H H L L L L L H H 1 1 1 1 1 1 1 1

交通灯控制逻辑电路设计实验报告

《数字设计》课程实验报告 实验名称:交通灯控制逻辑电路的设计与仿真实现 学员:学号: 培养类型:年级: 专业:所属学院: 指导教员:职称: 实验室:实验日期:

交通灯控制逻辑电路的设计与仿真实现 实验目的: 1. 熟悉Multisim仿真软件的主要功能和使用。 2. 熟悉各种常用的MSI时序逻辑电路的功能和使用。 3. 运用逻辑设计知识,学会设计简单实用的数字系统。 二、实验任务及要求: 1.设计一个甲干道和乙干道交叉十字路口的交通灯控制逻辑电路。每个干道各一组指示灯(红、绿、黄)。要求:当甲干道绿灯亮16秒时,乙干道的红灯亮;接着甲干道的黄灯亮5秒,乙干道红灯依然亮;紧接着乙干道的绿灯亮16秒,这时甲干道红灯亮;然后乙干道黄灯亮5秒,甲干道红灯依然亮;最后又是甲干道绿灯亮,乙干道变红灯,依照以上顺序循环,甲乙干道的绿红黄交通指示灯分别亮着。 2.要求: (1)分析交通灯状态变换,画出基于格雷码顺序的交通灯控制状态图。 (2)设计时序逻辑电路部分,写出完整的设计过程,画出逻辑电路图。在Multisim 仿真平台上,搭建设计好的该单元电路,测试验证,将电路调试正确。 (3)设计组合逻辑电路部分,写出完整的设计过程,画出逻辑电路图。在Multisim 仿真平台上,搭建设计好的该单元电路,测试验证,将电路调试正确。 (4)用74LS161计数器构造16秒定时和5秒定时的定时电路,画出连线图。在Multisim仿真平台上,选用74LS161芯片连线,测试验证,将电路调试正确。(5)在Multisim仿真平台上形成整个系统完整的电路,统调测试结果。 三、设计思路与基本原理: 依据功能要求,交通灯控制系统应主要有定时电路、时序逻辑电路及信号灯转换器组合逻辑电路组成,系统的结构框图如图1所示。其中定时电路控制时序逻辑电路状态的该表时间,时序逻辑电路根据定时电路的驱动信号而改变状态,进而通过组合逻辑电路控制交通灯系统正常运行。 在各单元电路的设计顺序上,最先设计基础格雷码顺序的交通灯控制状态图,由此确定时序逻辑电路的设计,并完成该部分电路的调试。接着在设计好时序路逻辑电路的基础上,根据状态输出设计组合逻辑电路,并完成该部分的调试。最后完成定时电路的设计与调试。整合电路,形成整个系统完整的电路,统调测试结果。

单片机仿真交通灯实验

实验报告实验名称:交通灯实验 姓名 班级 日期

实验要求: 1. 请使用单片机系统主机板和单片机系统键盘、显示板设计一个硬件系统,最终实 现一个交通路口红绿灯的控制。用两个数码管显示秒,8个LED灯分成四组,分别作为十字交叉路口的红绿灯。 2. 相对双向绿灯的最后几秒时,绿灯要闪烁,即亮灭交替,亮灭时间均为0.5秒, 然后变成红灯。 3. 每组同学可自行设计进行连接,形成一个单片机硬件系统。 4. 模拟调试完成后,用STC-ISP下载编程软件将生成的*。HEX文件在线下载到单片 机中。 5.下载后,按复位键执行程序,检验程序运行结果。 硬件连线方案:

程序流程图:

源代码: #include //51单片机头文件声明 unsigned char code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //定义无符号数组,定义的数据要放在ROM(程序存储区)里面 sbit dula=P1^3; //特殊功能位定义,数码管段码控制信号 sbit G1=P1^4; //数码管位选控制信号 sbit c=P1^5; //c表示P1.0口,地址最高位 sbit b=P1^6; //地址次高位 sbit a=P1^7; //地址最低位 sbit xl=P2^0; //特殊功能位声明,xl表示P2.0口 sbit xh=P2^1; // sbit yl=P2^2; sbit yh=P2^3; sbit sl=P2^4; sbit sh=P2^5; sbit zl=P2^7; sbit zh=P2^6; char count=100; //定时时间取10ms,循环100次即为1s unsigned char ssx=14; //秒上下,为上下绿灯亮时倒计数 unsigned char szy=10; //秒左右,为左右绿灯亮时倒计数 char sx=1; //方向标志,上下绿灯亮 void delay(char x) //延时函数,通过for循环进行延时 { char a,b;

交通灯控制器的设计

EDA实验报告 一、课程设计题目及要求 题目: 十字路口交通灯 具体要求: 设计一个十字路口得交通灯控制器,能显示十字路口东西、南北两个方向红、黄、绿灯得指示状态。用两组红、黄、绿三种颜色得灯分别作为东西、南北两个方向红、黄、绿等。变化规律为:东西绿灯亮,南北红灯亮——东西黄灯亮,南北红灯亮——东西红灯亮,南北绿灯亮——东西红灯亮,南北黄灯亮——东西绿灯亮,南北红灯亮······,这样循环下去。南北方向每次通行时间为45秒,东西方向每次通行时间为45秒,要求两条交叉道路上得车辆交替运行,时间可设置修改。绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。并要求所有交通灯得状态变化在时钟脉冲上升沿处。 二、实验编程环境 QuartusII 8、0 三、课程设计得详细设计方案 (一)、总体设计方案得描述 1、1、根据交通灯系统设计要求,可以用一个有限状态机来实现这个交通灯控制器。首先根据功能要求,明确两组交通灯得状态,这两组交通灯总共共有四种状态,我们用ST0,ST1,ST2,ST3 来表示: St0表示东西路绿灯亮,南北路红灯亮; St1表示东西路黄灯亮,南北路红灯亮; St2表示东西路红灯亮,南北路绿灯亮; St3表示东西路红灯亮,南北路黄灯亮; 1、2、根据上述四种状态描述列出得状态转换表 1、3、根据状态转换表得到交通灯控制器得状态转移图如图所示。

交通灯控制器得状态转移图 (二)各个模块设计 2、1、控制器模块 控制器模块示意图 其中,clk 为时钟信号,时钟上升沿有效。hold 为紧急制动信号,低电平有效。ared,agreen,ayellow 分别表示东西方向得红灯,黄灯,绿灯显示信号,高电平有效。 bred,bgreen,byellow 分别表示南北方向得红灯,黄灯,绿灯显示信号,高电平有效。 用于控制红绿黄灯得亮暗情况。 2、2、45秒倒计时计数器模块 45秒倒计时计数器模块示意图 其中,CLK 为时钟信号,时钟上升沿有效。EN 为使能端,高电平有效。CR 为紧急制动信号低电平有效。QL{3、、0}就是计数低位。QH{3、、0}就是计数高位。 用于45秒得倒计时计数。 2、3、7位译码器模块 7位译码器模块示意图 其中dat{3、、0}为要译码得信号。a,b,c,d,e,f,g 为译码后得信号。 用于将45秒倒计时计数得信号译码成数码管可以识别得信号。 2、4、50MHZ 分频器模块 50MHZ 分频器模块示意图 其中clk 为50MHZ 时钟信号,时钟上升沿有效。输出clk_out 为1HZ 时钟信号,时钟上升CLK EN CR QL[3、、0] QH[3、、0] OC m45 inst2

51单片机系统实验报告--计数器、交通灯

系统实验报告 学院XXXXXXXXX 专业XXXXXX 姓名XXXXX 学号XXXXXXX

一、本设计拟实现的功能 1.时钟:四只数码管低二位0~59计数后给高二位0~59计数(即分秒计时),一只按键控制开始、结束; 2.交通灯:灯和数码管结合,模拟十字路口的交通灯的点亮与熄 灭,数码管倒计时显示时间。 二、所用器件的功能、引脚图 1.所用器件:AT89S51、74LS47、LM7085 2.所用器件功能、引脚图 a)AT89S51 AT89S51引脚图 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash

只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。 主要性能特点 1、4k Bytes Flash片内程序存储器; 2、128 bytes的随机存取数据存储器(RAM); 3、32个外部双向输入/输出(I/O)口; 4、5个中断优先级、2层中断嵌套中断; 5、6个中断源; 6、2个16位可编程定时器/计数器; 7、2个全双工串行通信口; 8、看门狗(WDT)电路; 9、片内振荡器和时钟电路; 10、与MCS-51兼容; 11、全静态工作:0Hz-33MHz; 12、三级程序存储器保密锁定; 13、可编程串行通道; 14、低功耗的闲置和掉电模式。

交通灯实习报告

河南科技学院新科学院单片机课程设计报告 题目:交通灯控制器设计 专业班级:电气工程及其自动化101 姓名:马佳佳 时间:2012.12.3 ~2012.12.21 指导教师:徐君鹏邵锋苗青林 完成日期:2012年12月21 日

交通灯控制器设计任务书 1.设计目的与要求 设计一个交通灯控制器,要认真并准确地理解有关要求,独立完成系统设计,在双干线的路口上,交通信号灯的变化按照下面假定进行计时: (1)放行线,绿灯亮放行25秒,黄灯亮警告5秒,然后红灯亮禁止。 (2)禁止线,红灯亮禁止30秒,然后绿灯亮放行。使两条路线交替的成为放行线和禁止线,便可实现交通控制。 (3)特殊情况下能实现手动操作。 2.设计内容 (1)画出电路原理图,正确使用逻辑关系; (2)确定元器件及元件参数; (3)进行电路模拟仿真; (4)SCH文件生成与打印输出; (5)PCB文件生成与打印输出。 3.编写设计报告 写出设计的全过程,附上有关资料和图纸,有总结体会。 4.答辩 在规定时间内,完成叙述并回答问题。

目录 摘要.................................................................................................... 错误!未定义书签。 1 引言 (4) 2 总体设计方案 (4) 2.1 设计思路.................................................................................... 错误!未定义书签。 2.2 设计满足的基本功能............................................................... 错误!未定义书签。 2.3 主程序模块的设计 (5) 2.4 功能实现模块的设计............................................................... 错误!未定义书签。 2.5 延时程序模块的设计............................................................... 错误!未定义书签。 3 总结与体会 (9) 参考文献 (9) 附1:源程序代码 (10) 附2:系统原理图 (20) 附3:系统PCB图 (20)

相关文档
最新文档