第一篇:实验八交通灯控制电路的设计
可编程逻辑设计 ——实验八报告
学院:物理与信息工程学院 专业:通信工程 年级:2007级 班级:二班
学号:110700221 姓名:林明明 指导老师:杨秀芝
实验八交通灯控制电路的设计
一、实验目的:
进一步学习复杂数字电路的设计方法,提高利用硬件描述语言进行电路设计的技巧和熟练程度。
二、实验要求及原理:
满足图1顺序工作流程。图中设南北方向的红、黄、绿灯分别为NSR、NSY、NSG,东西方向的红、黄、绿灯分别为EWR、EWY、EWG。它们的工作方式有些必须是并行进行的,即南北方向绿灯亮,东西方向红灯亮;南北方向黄灯亮,东西方向红灯亮;南北方向红灯亮,东西方向绿灯亮;南北方向红灯亮,东西方向黄红灯亮。图1 交通灯顺序工作流程图
应满足两个方向的工作时序:即东西方向亮红灯时间应等于南北方向亮黄、绿灯时间之和,南北方向亮红灯时间应等于东西方向亮黄、绿灯时间之和。时序流程图2所示。
图2中,假设每个单位时间为3秒,则南北、东西方向绿、黄、红灯亮时间分别15秒、3秒、18秒,一次循环为36秒。其中红灯亮的时间为绿灯、黄灯亮的时间之和。图2 交通灯时序工作流程图
十字路口要有数字显示,作为时间提示,以便人们更直观地把握时间。具体为:当某方向红灯亮时,置显示器为某值,然后以每秒减1计数方式方式工作,直至减到数为“0”,十字路口红、绿灯交换,一次工作循环结束,进入下一步某方向地工作循环。
例如:当南北方向从黄灯转换成红灯时,置南北方向数字显示为24,并使数显计数器开始减“1”计数,当减到“0”,时,此时红灯灭,而南北方向的绿灯亮;同时,东西方向的红灯亮,并置东西方向的数显为24。
三、实验内容:
1、根据实验要求及原理1、2画出交通指示灯控制电路原理框图。提示:两个方向的控制电路可以共用一个24进制计数器实现。
2、用VHDL硬件描述语言层次化设计方法进行顶层文件和各模块电路的设计。
3、用QuartusII对设计进行编译、综合、仿真,给出仿真波形和时序分析数据(不包括数码显示部分)。
4、通过QuartusII集成环境,将设计下载到实验电路上进行硬件测试。管脚锁定:
clk: clk1 43
clk1 start: PIO23 30
SW1 NSG
PIO19
LED12 NSY
PIO20
LED11 NSR
PIO21
LED10 EWG
PIO22
LED3 EWY
PIO12
LED2 EWR
LED1
5、画出完整的交通灯控制电路原理框图(含数码显示部分)。
6、修改上述内容2的设计,增加数码显示部分。
注意:两方向的计数要求分别显示在数码管1、2和数码管7、8上。
7、用MAX_plusⅡ对设计进行编译、综合、仿真,给出仿真波形和时序分析数据。
8、再次将设计下载到实验电路上进行硬件测试。新增管脚锁定:
A(6): PIO6 SEG g
A(5): PIO5 SEG f A(4): PIO4 SEG e A(3): PIO3 SEG d A(2): PIO2 SEG c A(1): PIO1 SEG b A(0): PIO0 SEG a *S(2):
*S(1):
*S(0):
四、思考题:
1、控制电路除用有限状态机实现外,还可以采用什么方法实现?
2、如果增加夜间显示(即全部黄灯闪烁),电路该怎样设计? 实验结果:
交通灯控制电路原理框图:
顶层电路的VHDL描述: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity traffic is port(clk,start:in std_logic;NSG,NSY,NSR,EWG,EWY,EWR:out std_logic;ledNS,ledEW:out std_logic_vector(7 downto 0));end;architecture behav of traffic is component NSEW port(clk,start:in std_logic;NSG,NSY,NSR,EWG,EWY,EWR:out std_logic);end component;component led7s port(clock,start:in std_logic;ledns,ledew:out std_logic_vector(7 downto 0));end component;signal clk0,clk1,clk2,clknsr,clkewr:std_logic;begin u1:NSEW port map(clk=>clk,start=>start,NSG=>NSG,NSY=>NSY,NSR=>NSR,EWG=>EWG,EWY=>EWY,EWR=>EWR);u2:led7s port map(clock=>clk,start=>start,ledns=>ledNS,ledew=>ledEW);end;各模块电路的VHDL描述: 模块clock的VHDL描述—— library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock is port(clk,start:in std_logic;clk0,clk1,clk2:out std_logic);end clock;architecture behav of clock is begin process(clk,start)variable cql:std_logic_vector(6 downto 0);begin if clk'event and clk='1' then if start='1'then
if cql<48 then cql:=cql+1;else cql:=(others=>'0');end if;if cql<24 then clk1<='1';else clk1<='0';end if;
if cql>23 and cql<48 then clk2<='1';else clk2<='0';end if;end if;end if;end process;end;模块cnt10的VHDL描述—— LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 IS PORT(CLK,EN,LD:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT10;ARCHITECTURE BEHAV OF CNT10 IS BEGIN PROCESS(CLK,EN)VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF CLK'EVENT AND CLK='1' THEN IF LD='1' THEN CQI:=D;IF EN='1' THEN IF CQI>0 THEN CQI:=CQI-1;ELSE CQI:=“1001”;END IF;END IF;END IF;END IF;IF CQI=0 THEN COUT<='1';ELSE COUT<='0';END IF;CQ<=CQI;END PROCESS;END BEHAV;模块NSG的VHDL描述—— library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity NSG is port(clk,start:in std_logic;cq:out std_logic_vector(3 downto 0);oout:out std_logic);end;architecture one of NSG is begin process(clk,start)variable cqi:std_logic_vector(3 downto 0);begin if clk'event and clk='1' then if start='1' then if cqi<11 then cqi:=cqi+1;else cqi:=(others=>'0');end if;end if;if cqi<5 then oout<='1';else oout<='0';end if;end if;cq<=cqi;end process;end one;模块NSR的VHDL描述—— library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity NSR is port(clk,start:in std_logic;cq:out std_logic_vector(3 downto 0);oout:out std_logic);end;architecture one of NSR is begin process(clk,start)variable cqi:std_logic_vector(3 downto 0);begin if clk'event and clk='1' then if start='1' then if cqi<11 then cqi:=cqi+1;else cqi:=(others=>'0');end if;end if;if cqi<6 then oout<='0';else oout<='1';end if;end if;cq<=cqi;end process;end one;模块NSEW的VHDL描述—— library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity NSEW is port(clk,start:in std_logic;NSG,NSY,NSR,EWG,EWY,EWR:out std_logic);end;architecture one of NSEW is begin process(clk,start)variable cqi:std_logic_vector(5 downto 0);begin if clk'event and clk='1'and start='1' then if cqi<47 then cqi:=cqi+1;else cqi:=(others=>'0');end if;if cqi<21 then NSG<='1';else NSG<='0';end if;if cqi>20 and cqi<25 then NSY<='1';else NSY<='0';end if;if cqi<25 then EWR<='1';else EWR<='0';end if;if cqi>24 and cqi<49 then NSR<='1';else NSR<='0';end if;if cqi>24 AND cqi<45 then EWG<='1';else EWG<='0';end if;if cqi>44 AND CQI<49 then EWY<='1';else EWY<='0';end if;end if;end process;end one;模块led7s的VHDL描述: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity led7s is port(clock,start:in std_logic;ledns,ledew:out std_logic_vector(7 downto 0));end;architecture behav of led7s is
signal cqi : std_logic_vector(7 downto 0);signal cql : std_logic_vector(7 downto 0);signal cnt6: std_logic_vector(7 downto 0);signal clk : std_logic;begin clk <= clock;process(clk)begin if clk'event and clk='1' then if start='1'then
if cnt6<47 then cnt6<=cnt6+1;
else cnt6<=“00000000”;
end if;
end if;end if;end process;process(clk)begin if clk'event and clk='1' then if start='1'then if
cqi>32 then cqi<=cqi-1;elsif cqi=32 then cqi<=“00011001”;elsif cqi>16 then cqi<=cqi-1;elsif cqi=16 then cqi<=“00001001”;elsif cqi>0 then cqi<=cqi-1;elsif cqi=0 and cnt6=0 then cqi<=“00100100”;end if;if
cql>32 then cql<=cql-1;elsif cql=32 then cql<=“00011001”;elsif cql>16 then cql<=cql-1;elsif cql=16 then cql<=“00001001”;elsif cql>0 then cql<=cql-1;elsif cql=0 and cnt6=24 then cql<=“00100100”;end if;end if;end if;end process;ledew<=cqi;ledns<=cql;end;交通灯工作时序仿真波形:
测试结果及分析:
(1)东西方向亮红灯时间应等于南北方向亮黄、绿灯时间之和,南北方向亮红灯时间应等于东西方向亮黄、绿灯时间之和.(2)当某方向红灯亮时,置显示器为某值,然后以每秒减1计数方式方式工作,直至减到数为“0”,十字路口红、绿灯交换,一次工作循环结束,进入下一步某方向地工作循环。例如:当东西方向从黄灯转换成红灯时,置东西方向数字显示为24,并使数显计数器开始减“1”计数,当减到“0”,时,此时红灯灭,而东西方向的绿灯亮;同时,南北方向的红灯亮,并置南北方向的数显为24。【回答问题】
1、控制电路除用有限状态机实现外,还可以采用什么方法实现?
2、如果增加夜间显示(即全部黄灯闪烁),电路该怎样设计? 答:
还可以用进程语句实现,用一个十二进制的计数器作为控制模块,则EWR、EWG、EWY、NSR、NSG、NSY在计数器不同输出的时候有相应的输出。
第二篇:交通灯控制逻辑电路设计与总结报告
交通灯控制逻辑电路设计与总结报告
一、设计任务
用CPLD设计路口交通灯控制器
二、设计要求
1、满足一下时序要求:南北方向红灯亮,东西方向绿灯亮;南北方向绿灯亮,东西方向红灯亮;
2、每一方向的红(绿)黄灯总共维持30秒;
3、十字路口要有时间显示,具体为:当某一方向绿灯亮时,置显示器为30秒,然后以每秒减一技术方式工作,直至减到数为4秒时,红绿灯熄灭,黄灯开始间隙闪耀4秒,减到0时,红绿灯交换,一次工作循环结束,进入下一步另一方向的工作循环;
4、红绿灯均采用发光二极管;
5、设计由晶振电路产生1Hz标准秒信号的单元电路(实际秒脉冲由开发箱提供);
6、要求对整体电路进行仿真,观察并记录下仿真波形;
7、选作部分:
a、手动调整和自动控制,夜间为黄灯闪耀;
b、白天黄灯亮时,以2Hz的速度闪烁点亮四秒; c、红绿灯循环点亮时间可以自由修改。
三、设计设备
含有Quartus软件的电脑一台,可下载的试验台;
四、设计方法
使用VHDL语言进行程序的设计运行和仿真,以及波形的运行仿真,最后进行下载仿真;
五、方案论证
方案1:把整个流程分成几个进程来做;
方案2:每个进程都使用if和case语句实现功能的实现; 方案3:使用状态机来实现状态间的转换;
方案论证:
1、要实现整个流程,需要做的输出内容类型不同,如果放在一个进程里面就比较容易混淆,产生混乱。而采用分成几个进程来做的方式就明确了每个模块的内容和分工,使其调理清晰,一目了然;
2、if语句是条件语句,是VHDL语言中常用的基本语句。该流程中的变量比较繁多,而使用case语句分情况列出来,简洁明了。
3、状态机的使用格式简洁,使用简单方便,特别是在进行状态的转换时候。并行的状态转换不易出错,可将状态转换、赋值、计数等多个功能封装在某一个状态中,并且更加便于为系统添加新的状态功能。
方案选定:
通过以上分析,确定用以上方案为本次设计的方案。
六、工作原理
先对所给时钟脉冲进行分频到标准时钟脉冲;设计两个时钟控制倒计时,倒计时的时间可自由修改,由输入决定;设计另一个时钟,用以控制白天与夜间模式的转换;在白天时,根据倒计时的数字进行红绿灯的状态转换;夜间时,红绿灯状态改为夜间模式:黄灯闪烁。
七、程序设计
------交通灯控制系统所使用的库和包
-------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;
-------------------------------交通灯控制系统的实体
-------------------------entity jt is
port(clk,reset:in std_logic;
------------------时钟脉冲clk由系统直接提供,需要进行分
频;reset是启动键,当reset为1是,系统启动
t0:integer range 0 to30;
------------------红绿灯循环点亮的时间,根据输入的不同
系统运行的不同
r1,y1,g1,r2,y2,g2:out std_logic;
------------------r1为东西方向红灯,y1为东西方
向黄灯,g1为东西方向绿灯;r2为南北方向红灯,y2为南北方向黄灯,g2为南北方向绿灯
ec0,ec1,nc0,nc1:out std_logic_vector(3 downto 0));
------------------ec0,ec1分别为东西方向的倒计时间的个位和十位;
nc0,nc1分别为南北方向的倒计时间的个位和十位
end jt;-------------------------------交通灯控制系统的结构体(5个进程)
-------------------------architecture one of jt is
type state_type is(s0,s1,s2,s3);
------------------定义状态的类型
signal state:state_type;
------------------使用状态机
signal k:std_logic;
------------------分频后的1Hz的标准时钟脉冲
signal c1,c2:integer range 0 to 30;
------------------定义东西、南北方向的两个
倒计时的计数
signal t1:integer range 0 to 3600;
signal t2:integer range 0 to 24;------------------定义一个时钟,用以控制白天与夜间模式 Begin------该进程用以分频
-------------------------q0:process(clk)
variable tt:std_logic_vector(9 downto 0);
------------------中间变量
begin
if clk'event and clk='1' then
if tt=“1111101000” then
----------------------把所给1kHz分频成1Hz的脉冲
k,10000分频,仿真值用“ 0000000100”八分频
tt:=(others=>'0');
k<='1';
else
tt:=tt+1;k<='0';
end if;
end if;end process q0;-------------------------
------该进程用以设计时钟
-------------------------q1:process(k,reset)
begin
if reset='1' then
------------------启动开关为1时,系统开始运行
t1<=0;t2<=0;
------------------从0点开始 elsif k='1' and k'event then if t1=3599 then
------------------一个t1循环是一个秒,仿真值用“35” if t2=23 then
-------------------一个t1循环是一个小时,一天24小时 t2<=0;
else t2<=t2+1;end if;t1<=0;else t1<=t1+1;end if;end if;end process q1;-------------------------------该进程用以控制白天黑天模式和红绿灯状态转换
-------------------------q2:process(k,reset,t2)
begin
if t2>=5 and t2<=22 then
-------------------白天模式5:00到22:00之间
if reset='1' then
-------------------启动开关为1时,系统开始运
行,进行状态转换
r1<='0';y1<='0';g1<='1';-------------------东西方向绿灯亮 r2<='1';y2<='0';g2<='0';-------------------南北方向红灯亮 state<=s0;-------------------红绿灯处于初始状态s0 c1<=t0;
c2<=t0;-------------------倒计时从自由输入值开始递减 elsif k='1' and k'event then
case state is
when s0=>-------------------当处于第1状态时,讨论
if c1=5 then
--------------由于进程内部的并列进
行,当倒计时第4秒时,进入到第2状态s1
state<=s1;
c1<=c1-1;
c2<=c2-1;
--------------倒计时递减
elsif c2=0 then
------------倒计时减到0时,再从
初始值开始
c1<=t0;
c2<=t0;
else
----------------否则继续保持第1状态s0
state<=s0;
c1<=c1-1;
c2<=c2-1;
end if;
when s1=>-------------------当处于第2状态时,讨论
if c1=1 then--------------由于进程内部的并列进行,当
倒计时第t0秒时,进入到第3状态s2
state<=s2;
c1<=c1-1;
c2<=c2-1;
else----------------否则继续保持第2状态
state<=s1;
c1<=c1-1;
c2<=c2-1;
end if;
when s2=>-------------------当处于第3状态时,讨论
if c2=5 then--------------由于进程内部的并列进行,当倒计时第4秒时,进入到第4状态s3
state<=s3;
c1<=c1-1;
c2<=c2-1;
elsif c1=0 then
------------倒计时减到0时,再从初
始值开始
c1<=t0;
c2<=t0;
else
----------------否则继续保持第3状态
state<=s2;
c1<=c1-1;
c2<=c2-1;
end if;
when s3=>-------------------当处于第4状态时,讨论 if c2=1 then--------------由于进程内部的并列进行,当倒
计时第t0秒时,进入到第1状态s0
state<=s0;
c1<=c1-1;
c2<=c2-1;
else----------------否则继续保持第4状态
state<=s3;
c1<=c1-1;
c2<=c2-1;
end if;
when others=> state<=s0;
end case;if state=s0 then
r1<='0';y1<='0';g1<='1';
r2<='1';y2<='0';g2<='0';elsif state=s1 then
r1<='0';g1<='0';
r2<='1';y2<='0';g2<='0';
if c1=4 or c1=2 then y1<='1';
else y1<='0';
end if;elsif state=s2 then
r1<='1';y1<='0';g1<='0';
r2<='0';y2<='0';g2<='1';elsif state=s3 then
r1<='1';y1<='0';g1<='0';
r2<='0';g2<='0';
if c2=4 or c2=2 then y2<='1';
else y2<='0';
end if;end if;
--各个状态的红绿灯变量的赋值,‘1’亮‘0’熄 end if;else-------------------夜间模式22:00到次日5:00之间
c2<=0;c1<=0;r1<='0';r2<='0';g1<='0';g2<='0';y1<=k;y2<=k----------------红绿灯的状态:脉冲k赋给黄灯变量,黄灯闪烁
end if;end process q2;-------------------------------该进程用于东西方向倒计时的译码显示
-------------------------q3:process(c1)
begin case c1 is when 0=>ec0<=“0000”;ec1<=“0000”;when 1=>ec0<=“0001”;ec1<=“0000”;when 2=>ec0<=“0010”;ec1<=“0000”;when 3=>ec0<=“0011”;ec1<=“0000”;when 4=>ec0<=“0100”;ec1<=“0000”;when 5=>ec0<=“0101”;ec1<=“0000”;when 6=>ec0<=“0110”;ec1<=“0000”;when 7=>ec0<=“1000”;ec1<=“0000”;when 9=>ec0<=“1001”;ec1<=“0000”;when 10=>ec0<=“0000”;ec1<=“0001”;when 11=>ec0<=“0001”;ec1<=“0001”;when 12=>ec0<=“0010”;ec1<=“0001”;when 13=>ec0<=“0011”;ec1<=“0001”;when 14=>ec0<=“0100”;ec1<=“0001”;when 15=>ec0<=“0101”;ec1<=“0001”;when 16=>ec0<=“0110”;ec1<=“0001”;when 17=>ec0<=“0111”;ec1<=“0001”;when 18=>ec0<=“1000”;ec1<=“0001”;when 19=>ec0<=“1001”;ec1<=“0001”;when 20=>ec0<=“0000”;ec1<=“0010”;when 21=>ec0<=“0001”;ec1<=“0010”;when 22=>ec0<=“0010”;ec1<=“0010”;when 23=>ec0<=“0011”;ec1<=“0010”;when 24=>ec0<=“0100”;ec1<=“0010”;when 25=>ec0<=“0101”;ec1<=“0010”;when 26=>ec0<=“0110”;ec1<=“0010”;when 27=>ec0<=“0111”;ec1<=“0010”;when 28=>ec0<=“1000”;ec1<=“0010”;when 29=>ec0<=“1001”;ec1<=“0010”;when 30=>ec0<=“0000”;ec1<=“0011”;----------------------------当在设定范围内时,分别为个位十位译码并显示
when others=>ec0<=“0000”;ec1<=“0000”;
-------------------------否则,LED灯显示0
end case;
end process q3;-------------------------------该进程用于南北方向倒计时的译码显示
-------------------------q4:process(c2)
begin
case c2 is when 0=>nc0<=“0000”;nc1<=“0000”;when 1=>nc0<=“0001”;nc1<=“0000”;when 2=>nc0<=“0010”;nc1<=“0000”;when 3=>nc0<=“0011”;nc1<=“0000”;when 4=>nc0<=“0100”;nc1<=“0000”;when 5=>nc0<=“0101”;nc1<=“0000”;when 6=>nc0<=“0110”;nc1<=“0000”;when 7=>nc0<=“0111”;nc1<=“0000”;when 8=>nc0<=“1000”;nc1<=“0000”;when 9=>nc0<=“1001”;nc1<=“0000”;when 10=>nc0<=“0000”;nc1<=“0001”;when 11=>nc0<=“0001”;nc1<=“0001”;when 12=>nc0<=“0010”;nc1<=“0001”;when 13=>nc0<=“0011”;nc1<=“0001”;when 14=>nc0<=“0100”;nc1<=“0001”;when 15=>nc0<=“0101”;nc1<=“0001”;when 16=>nc0<=“0110”;nc1<=“0001”;when 17=>nc0<=“0111”;nc1<=“0001”;when 18=>nc0<=“1000”;nc1<=“0001”;when 19=>nc0<=“1001”;nc1<=“0001”;when 20=>nc0<=“0000”;nc1<=“0010”;when 21=>nc0<=“0001”;nc1<=“0010”;when 22=>nc0<=“0010”;nc1<=“0010”;when 23=>nc0<=“0011”;nc1<=“0010”;when 24=>nc0<=“0100”;nc1<=“0010”;when 25=>nc0<=“0101”;nc1<=“0010”;when 26=>nc0<=“0110”;nc1<=“0010”;when 27=>nc0<=“0111”;nc1<=“0010”;when 28=>nc0<=“1000”;nc1<=“0010”;when 29=>nc0<=“1001”;nc1<=“0010”;when 30=>nc0<=“0000”;nc1<=“0011”;---------------------------当在设定范围内时,分别为个位十位译码并显示
when others=>nc0<=“0000”;nc1<=“0000”;
end process q4;-------------------------end architecture one;
----所有进程结束-------------------------
八、仿真结果
1、clk为输入脉冲;开始令reset为’1’,启动系统,系统正常工作后值为’0; t0为红绿灯循环时间,可自由修改,如果输入值为’0010000’,则为16秒倒计时。如下图:系统从0点开始运行,处于夜间模式时,倒计时都为“00”,两个方向都为黄灯闪烁,红绿灯都熄灭。
---------------------------否则,LED灯显示0
end case;2、5:00之后,进入到白天模式:从第1状态(东西方向绿灯亮、南北方向红灯)开始,倒计时从16秒开始递减。倒计时第4秒后进入第2 状态(东西方向黄灯闪烁,南北方向红灯亮)。
3、倒计时第0秒后进入第3 状态(东西方向红灯亮,南北方向绿灯亮),倒计时再从16秒开始递减;倒计时第4秒后进入第4 状态(东西方向红灯亮,南北方向黄灯闪烁);倒计时第0秒后进入第1 状态(东西方向绿灯亮,南北方向红灯亮),倒计时再从16秒开始递减
。如此循环。
4、当计时器到22:00时,再次进入夜间模式:东西南北方向黄灯闪烁;到次日5:00时又回到白天模式。如此循环。
九、讨论与改进
特点:
1、在整个设计过程中,分进程实现整个功能,简单明了;
2、状态机的功能和优点得到了较为完整的体现;
3、分夜间和白天模式不同,系统自动调节;
4、黄灯以闪烁的形式亮;系统运行后红绿灯循环点亮的时间也可自由修改。不足:
1、整个系统启动后从夜间0点开始运行,而不能随意调为哪个时间的交通灯状态,只能从程序中改,不能手动调节;
2、整个功能还是比较简单,未能分左右转和直行的情况;
3、紧急情况处理时也无特殊处理的设置。
改进:
1、在进程中可增加一个输入量,用以控制系统的时钟时间,方便调节模式和交通灯状态;
2、在进程中可加入几个红绿灯状态来分别控制东西方向和南北方向的左转、右转和直行的红绿灯状态;
3、在原有程序的基础上,可通过增加一个输入量来控制一种特殊状态,用以控制特殊情况的处理,视该特殊情况而定。
二○一○年九月三日
第三篇:课程设计任务书-24交通灯控制电路设计
课程设计任务书
题目:交通灯控制电路设计
时间: 年 月 日—— 年 月 日
设计的说明:
本设计需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各三个。依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。交通灯显示用实验箱的交通灯模块和七段码管中的任意两个来显示。系统时钟选择时钟模块的1KHz时钟,黄灯闪烁时钟要求为2Hz,七段码管的时间显示为1Hz 脉冲,即每1s 中递减一次,在显示时间小于3 秒的时候,通车方向的黄灯以2Hz 的频率闪烁。系统中用S1 按键进行复位。
设计的任务和要求:
1、在十字路口的两个方向上各设一组红、绿、黄灯;初始状态是两个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。
2、设置数码管显示允许通行或者禁止通行的时间,东西路和南北路的通车时间均设定为20s。数码管的时间总是显示为19、18、17……2、1、0、19、18……。在显示时间小于3 秒的时候,通车方向的黄灯闪烁。
3、当各条路中任意一条上出现特殊情况,如消防车、救护车或其他需要优先放行的车辆时,各方向上均是红灯亮。倒计时停止,且显示数字在闪烁。当特殊运行状态结束后,控制器恢复原来状态,继续正常运行。
4、要求对整体电路进行仿真,提供仿真波形图,并分析结果
5、硬件测试结果用照片的形式记录下来。
提高部分:编写能手动控制交通灯通行时间的交通灯控制器。
指导教师:
学生:
日期:
第四篇:交通灯管理电路设计
交通灯管理电路设计.txt懂得放手的人找到轻松,懂得遗忘的人找到自由,懂得关怀的人找到幸福!女人的聪明在于能欣赏男人的聪明。生活是灯,工作是油,若要灯亮,就要加油!相爱时,飞到天边都觉得踏实,因为有你的牵挂;分手后,坐在家里都觉得失重,因为没有了方向。本文由车牌定位贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
东 北 石 油 大 学
课
课 题 院 程 目 系
程
设
计
单片机原理及应用课程设计 交通灯管理电路设计 电子科学学院 电信 07-5 班 马深慧 070901140505 专业班级 学生姓名 学生学号 指导教师 2011 年 3 月 18 日
东北石油大学课程设计任务书
课程 题目 单片机原理及应用课程设计 交通灯管理电路设计 电信 07-5 姓名 马深慧 学号 070901140505 专业班级
一、设计目的: 训练学生综合运用己学课程的基本知识,独立进行单片机应用技术开发工作,掌握单片机程序设计、调试,应用电路设计、分析及调试检测。
二、设计要求: 1.应用 MCS-51 单片机设计交通灯管理电路; 2.该系统要求显示 50s 倒计时时间,当计到需交换红绿灯前 10s,路口均显示黄灯; 3.硬件设计根据设计的任务选定合适的单片机,根据控制对象设计接口电路。设计的 单元电路必须有工作原理,器件的作用,分析和计算过程; 4.软件设计根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行 调试并打印程序清单; 5.原理图设计根据所确定的设计电路,利用 Protel 等有关工具软件绘制电路原理图、PCB 板图、提供元器件清单。
三、参考资料: [1] 单片微型计算机与接口技术,李群芳、黄建编著,电子工业出版社; [2] 单片机原理及应用,张毅刚编著,高等教育出版社; [3] 51 系列单片机及 C51 程序设计,王建校,杨建国等编著,科学出版社; [4] 单片机原理及接口技术,李朝青编著,北京航空航天大学出版社;
完成期限 指导教师 专业负责人 2011.3.14—2011.3.18 2011 年 3 月 13 日
目录
1.系统设计 1.系统设计 „„ 1 1.1 设计思路 „„ 1 1.1.1 设计目的„„ 1 1.1.2 设计任务和内容„„ 1 1.1.3 方案比较、设计与论证„„ 1 1.1.3.1 电源提供方案 „„ 1 1.1.3.2 复位方案 „„ 2 1.1.3.3 输入方案 „„ 2 1.1.3.4 显示界面方案 „„ 2 1.1.3.5 交通管理的方案论证 „„ 4 1.1.4 芯片简介„„ 4 2.硬件电路设计 2.硬件电路设计 „„ 10 2.1 设计原理分析 „„ 11 2.1.1 交通灯显示时序的理论分析与计算„„ 11 2.1.2 交通灯显示时间的理论分析与计算„„ 13 2.1.3LED 数码管显示模块„„ 14 2.1.4 复位电路„„ 15 2.1.5 晶振电路„„ 16 3.软件设计 3.软件设计 „„ 17 3.1 数码管显示子程序: „„ 17 3.1LED 红绿灯显示模块程序: „„ 18 4.总结 4.总结 „„ 21 5.参考文献 5.参考文献 „„ 22 6.附录 6.附录 „„ 22 6.1 附录 1:程序清单 „„ 22 6.2 附录 2:电路设计总图 „„ 29 1.系统设计
1.1 设计思路 1.1.1 设计目的 训练学生综合运用己学课程的基本知识,独立进行单片机应用技 术开发工作,掌握单片机程序设计、调试,应用电路设计、分析及调 试检测。1.1.2 设计任务和内容 1.应用 MCS-51 单片机设计交通灯管理电路; 2.该系统要求显示 50s 倒计时时间,当计到需交换红绿灯前 10s,路口均显示黄灯; 3.硬件设计根据设计的任务选定合适的单片机,根据控制对象 设计接口电路。设计的单元电路必须有工作原理,器件的作用,分析 和计算过程; 4.软件设计根据电路工作过程,画出软件流程图,根据流程图 编写相应的程序,进行调试并打印程序清单; 5.原理图设计根据所确定的设计电路,利用 Protel 等有关工具软 件绘制电路原理图、PCB 板图、提供元器件清单。1.1.3 方案比较、设计与论证 1.1.3.1 电源提供方案 为使模块稳定工作,须有可靠电源,采用单片机控制模块提供电 源。此方案的优点是系统简明扼要,节约成本; 缺点是输出功率不高。1 1.1.3.2 复位方案 复位方式有两种:按键复位与软件复位。由考虑到程序的简洁,避免冗长,本设计采用按键复位,在芯片的复位端口外接复位电路,通过按键对单片机输入一个高电平脉冲,达到复位的目的。1.1.3.3 输入方案 方案一: 采用 89S52 扩展 I/O 口及键盘,显示等。该方案的优点是: 使用灵活可编程,并且有 RAM,及计数器。若用该方案,可提供较多 I/O 口,但操作起来稍显复杂。
方案二: 直接在 I/O 口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用 2 个按键,分别是 K1、K2。由于该系统对于交通灯及数码管的控制,只用单片机本身的 I/O 口 就可实现,且本身的计数器及 RAM 已经够用,故选择方案二 1.1.3.4 显示界面方案 该系统要求完成倒计时、状态灯等功能。基于上述原因,我们考 虑了三种方案: 方案一: 2 完全采用数码管显示。这种方案只显示有限的符号和数码字符,无法胜任题目要求。方案二: 完全采用点阵式 LED 显示。这种方案实现复杂,且须完成大量 的软件工作; 但功能强大,可方便的显示各种英文字符,汉字,图形。方案三: 采用数码管与点阵 LED(点阵式和 8 段式 LED)相结合的方法因 为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看 并考虑到现实情况,用数码管与 LED 灯分别显示时间与提示信息。这 种方案既满足系统功能要求,又减少了系统实现的复杂度。权衡利弊,第三种方案可互补一二方案的优缺,决定采用方案三以实现系统的显 示功能。整个设计以 AT89S52 单片机为核心,由数码管显示,数码管显示, LED 复位电路组成。硬件模块入图所示: AT89S52 单 片机
数码管显示 LED 数码管 晶振电路 显示
复位电路 3 1.1.3.5 交通管理的方案论证 东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿 三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮 允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃 亮时间为东西、南北两干道的公共停车时间。指示灯燃亮的方案如下 表所示: 40S 10S 40S 10S „„
东 西 红 灯 黄 灯 绿 灯 黄 灯 „„ 道 亮 亮 亮 亮
南 北 绿 灯 黄 灯 红 灯 黄 灯 „„ 道 亮 亮 亮 亮 上表说明:(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通 过;南北道为绿灯,此道车辆通过,行人禁止通行。时间 为 40 秒。(2)黄灯 10 秒,警示车辆和行人红、绿灯的状态即将切换。(3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南 北道车辆禁止通过,行人通行。时间为 40 秒。(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样 行人和车辆就能安全畅通的通行。1.1.4 芯片简介 1.AT89S52 单片机简介 4 其引 DIP 封装的脚图如下:
主要性能: 与 MCS-51 单片机产品兼容、8K 字节在系统可编程 Flash 存 储器、1000 次擦写周期、全静态操作:0Hz~33Hz、三级加 密程序存储器、32 个可编程 I/O 口线、三个 16 位定时器/计 数器 八个中断源、全双工 UART 串行通道、低功耗空闲和掉电 模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉 电标识符。功能特性描述: 5 At89s52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非 易失性 存储器技术制造,与工业 80C51 产品指令和引脚完 全兼容。片 上 Flash 允许程序存储器在系统可编程,亦适于 常规编程器。在 单芯片上,拥有灵巧的 8 位 CPU 和在系统 可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提 供高灵活、超有效的解决 方案。AT89S52 具有以下标准功能: 8k 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位 定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片 内晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻 辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允 许 RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式 下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直 到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可 编程 Flash AT89S52 P0 口:P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出 口,每位能驱动 8 个 TTL 逻辑电平。对 P0 端口写“1”时,引脚 用作高阻抗输入。当访问外部程序和数据存储器时,P0 口也被作为低 8 位 地址/数据复用。在这种模式下: P0 具有内部上拉电阻。6 在 flash 编程时,口也用来接收指令字节; P0 在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器能驱动 4 个 TTL 逻辑电平。P1 端口写“1”时,对 内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入 使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)此外,P1.0 和 P1.2 分别作定时器/计数器 2 的外部计数输入(P1.0/T2)和时器/计数器 2 的触发输入(P1.1/T2EX),具体如 下表所示。在 flash 编程和校验时,P1 口接收低 8 位地址字节。引脚号第二功能 P1.0 T2(定时器/计数器 T2 的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器 T2 的捕捉/重载触发信号和方向 控制)P1.5 MOSI(在系统编程用)P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器能驱动 4 个 TTL 逻辑电平。P2 端口写“1”时,对 内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入 7 使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执行 MOVX @DPTR)时,P2 口送出高八位地址。在这种应 用中,P2 口使用很强的内部上拉发送 1。在使用 8 位地址(如 MOVX @RI)访问外部数据存储器时,P2 口输出 P2 锁存器的内容。在 flash 编程和校验时,P2 口也接收高 8 位地址字节和一些 控制信号。P3 口:P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p2 输出缓冲器能驱动 4 个 TTL 逻辑电平。P3 端口写“1”时,对 内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入 使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3 口亦作为 AT89S52 特殊功能(第二功能)使用,如下表所 示。在 flash 编程和校验时,P3 口也接收一些控制信号。端口引脚 第二功能 P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INTO(外中断 0)P3.3 INT1(外中断 1)P3.4 TO(定时/计数器 0)8 P3.5 T1(定时/计数器 1)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)此外,P3 口还接收一些用于 FLASH 闪存编程和程序校验的控 制信号。RST——复位输入。当振荡器工作时,RST 引脚出现两个机器 周期以上高电平将是单片机复位。ALE/PROG——当访问外部程存储器或数据存储器时,ALE(地 址锁存允许)输出脉冲用于锁存地址的低 8 位字节。一般情况下,ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对 外输出时钟或用于定时目的。要注意的是:每当访问外部数据存 储器时将跳过一个 ALE 脉冲。对 FLASH 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元 的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱拉高,单片机 执行外部程序时,应设置 ALE 禁止位无效。PSEN——程序储存允许(PSEN)输出是外部程序存储器的读 选通信号,当 AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲,在此期间,当访 问外部数据存储器,将跳过两次 PSEN 信号。9 EA/VPP——外部访问允许,欲使 CPU 仅访问外部程序存储器(地址为 0000H-FFFFH),EA 端必须保持低电平(接地)。需注 意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。如 EA 端为高电平(接 Vcc 端),CPU 则执行内部程序存储器 的指令。FLASH 存储器编程时,该引脚加上+12V 的编程允许电源 Vpp,当然这必须是该器件是使用 12V 编程电压 Vpp。
2.硬件电路设计
复位
晶振源 AT89S52 各路口红绿灯 LED 倒计时显示 10 2.1 设计原理分析 2.1.1 交通灯显示时序的理论分析与计算 对于一个交通路口来说,能在最短的时间内达到最大的车流量,就 算是达到了最佳的性能,我们称在单位时间内多能达到的最大车流 为车流量,用公式:车流量= 车流 / 时间 来表示。先设定一些标号如图 2-1 所示。
说明: 此图为直方图,上边为北路口灯,右边为东路口灯,下边为南路 口灯,左边为西路口灯。图 2-2 所示为一种红绿灯规则的状态图,分别设定为 S1、S2、S3、S4,交通灯以这四的状态为一个周期,循环执行(见图 2-3)。11 图 2-1 请注意图 2-1b 和图 2-1d,它们在一个时间段中四个方向都可以通 车,这种状态能在一定的时间内达到较大的车流量,效率特别高。依据上述的车辆行驶的状态图,可以列出各个路口灯的逻辑表,由于 相向的灯的状态图是一样的,所以只需写出相邻路口的灯的逻辑表; 根据图 2-3 可以看出,相邻路口的灯它们的状态在相位上相差 180°。因此最终只需写出一组 S1、S2、S3、S4 的逻辑状态表。如表 2-1 所示。12 表 2-1 表中的“×”代表是红灯亮(也代表逻辑上的 0),“√”是代表绿 灯亮(也代表逻辑上的 1),依上表,就可以向相应的端口送逻辑值。
2.1.2 交通灯显示时间的理论分析与计算 东西和南北方向的放行时间的长短是依据路口的各个方向平时的车 13 流量来设定,并且 S1、S2、S3、S4 各个状态保持的时间之有严格的 对应关系,其公式如下示。T-S1+T-S2=T-S3 T-S2=T-S4 T-S1=T-S3 我们可以依据上述的标准来改变车辆的放行时间。按照一般的规则,一个十字路口可分为主干道和次干道,主干道的放行时间大于次干道 的放行时间,我们设定值时也应以此为参考 2.1.3LED 数码管显示模块(1)静态显示方式:静态显示方式是指当显示器显示某一字符时,发 光二极管的位选始终被选中。在这种显示方式下,每一个 LED 数码管 显示器都需要一个 8 位的输出口进行控制。由于单片机本身提供的 I/O 口有限,实际使用中,通常通过扩展 I/O 口的形式解决输出口数 量不足的问题。静态显示主要的优点是显示稳定,在发光二极管导通电流一定的情况 下显示器的亮度大,系统运行过程中,在需要更新显示内容时,CPU 才去执行显示更新子程序,这样既节约了 CPU 的时间,又提高了 CPU 的工作效率。其不足之处是占用硬件资源较多,每个 LED 数码管需要 独占 8 条输出线。随着显示器位数的增加,需要的 I/O 口线也将增加。(2)动态显示方式:动态显示方式是指一位一位地轮流点亮每位显示 器(称为扫描),即每个数码管的位选被轮流选中,多个数码管公用 14 一组段选,段选数据仅对位选选中的数码管有效。对于每一位显示器 来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也 与点亮时间和间隔时间的比例有关。通过调整电流和时间参数,可以 既保证亮度,又保证显示。若显示器的位数不大于 8 位,则显示器的 公共端只需一个 8 位 I/O 口进行动态扫描(称为扫描口),控制每位 显示器所显示的字形也需一个 8 位口(称为段码输出)。15 2.1.4 复位电路 复位方式有多种,本设计采用按键复位。接线图如图程序复位 电路框图
在设定的定时时间内,89S52 必须在 RST 引脚产生一个由高到低 的电平变化,以清内部定时器.2.1.5 晶振电路 晶振电路原理图如 3-2: 3-2 晶振模块原理图 选取原则:传统做法,但能够实现所需,即最简单也最是实用。电容选取 30pF,晶振为 30MHz。16 3.软件设计
3.1 数码管显示子程序: void normalPageShow(){ register unsigned char i, j, n;register long lTmp;unsigned char const SEG_CODE[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};unsigned char const COMM[2] = {0x01, 0x02, 0x04, 0x08};for(i = 0;i < 2;i ++){ lTmp = gnValue;n = lTmp((lTmp / 10)* 10);P2 = COMM[i];P0 = SEG_CODE[n];P2 = COMM[i + 2];P0 = SEG_CODE[n];lTmp /= 10;} } main(void){ EA = 0;// global interrupt disable 26 giSysStatus = 0;initMCU();EA = 1;while(1){ if(gbFlag_1sPeriod){ gbFlag_1sPeriod = 0;gnValue-= 1;gbFlag_refreshLED = 1;if(gnValue == 10){ dsY1 = 0;dsY2 = 0;} if(gnValue == 0){ if(dsR1 == 0){ dsR1 = 1;dsR2 = 0;dsG1 = 0;dsG2 = 1;dsY1 = 0;dsY2 = 0;} else{ 27 //刷新 LED dsR1 = 0;dsR2 = 1;dsG1 = 1;dsG2 = 0;dsY1 = 0;dsY2 = 0;} } } if(gbFlag_refreshLED){ gbFlag_refreshLED = 0;normalPageShow();} } } 28 6.2 附录 2:电路设计总图 29 东北石油大学课程设计成绩评价表
课程名称 题目名称 学生姓名 序号 马深慧 评价项目 工作量、工作态 1 度和出勤率 学号
单片机原理及应用课程设计 交通灯管理电路设计 070901140505 指 指导教 师姓名 标 职称 满分 评分
按期圆满的完成了规定的任务,难易程度和工作 量符合教学要求,工作努力,遵守纪律,出勤率 高,工作作风严谨,善于与他人合作。课程设计选题合理,计算过程简练准确,分析问 20 2 课程设计质量
题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。45 3 4 总分 评语:
创新 答辩
工作中有创新意识,对前人工作有一些改进或有 一定应用价值。能正确回答指导教师所提出的问题。5 30 指导教师:
****年**月**日 30 1
第五篇:交通灯控制电路设计自动化 数字电子技术课程设计
综 述
本次设计主要分为四个部分,第一部分:信号产生电路;第二部分:电子示电路;第三部分:倒计时设计,第四部分:交通灯及交通灯控制电路
在本次设计中采用555定时器产生CP=1Hz的脉冲信号,经过用741192设计的预置状态为59的60进制加计数器和预置状态为29的30进制计数器。并使进位位作为脉冲输出,实现5分频,然后用芯片74161和74139实现南北干道和支东西干道红,绿,黄色灯亮的时间控制,最后一部分的减计数器选用74193进行级联计数,译码器选用cc4511,本人主要设计减计数器及数码管显示倒计时部分
一、设计任务与要求
1.东西方向绿灯亮,南北方向红灯亮,时间30。2.东西方向与南北方向黄灯亮,时间5s。3.南北方向绿灯亮,东西方向红灯亮,时间60。
二、方案设计与论证
根据设计任务与要求,我们可以知道这个交通灯的设计是分南北干道和东西干道的,两个方面的时间是不同的,东西方向通行30s,南北方向60s,这就要求我们要有两个计数器,根据我自己的经验,东西方向通行30s完,倒计时数字显示器会显示到0,然后切换到南北方向通行60s完之后, 倒计时数字显示器也会显示到0之后然后切换到南北方向,这样如此循环,由于黄灯是当两个计数器倒计时到5时开始闪,我们就可以在这时发出一个脉冲然后一直保持到0,或者是接收0~5这段时间的脉冲都可以控黄灯只在到了这段时间才亮;方案:
交通灯控制原理图:
2.a 交通灯原理框图
首先由555定时器产生1s的信号脉冲,通过由一些1k电阻和三片74LS245,两片74LS192处理构成定时电路处理,产生时间输出信号作用电子显示器,另一部分的1s的信号脉冲通过由两片74LS112的JK触发器组成的路灯控制电路的对1s的信号处理,产生对交通路灯有控制作用的电子逻辑信号,从而实现按要求的对路灯的正常控制。
2三、单元电路设计
3.1时间脉冲产生电路
由 555 定时器和外接元件 R1、R2、C 构成多谐振荡器,脚 2 与脚 6 直接相连。电路没有稳态,仅存在两个暂稳态,电路亦不需要外接 触发信号,利用电源通过 R1、R2 向 C 充电,以及 C 通过 R2 向放电端 放电,使电路产生振荡。电容 C 在 和 之间充电和放电,从而在输出端得到一系列的矩形波,且通过调节参数,使得产生的矩形波为1hz的也就是周期为1s的脉冲发生电路。
3.1a 1s脉冲信号产生电路
3.2电子显示电路
一个LED数码管可用来显示一位0~9十进制数和一个小数点。小型数码管(0.5寸和0.36寸)每段发光二极管的正向压降,随显示光(通常为红、绿、黄、橙色)的颜色不同略有差别,通常约为2~2.5V,每个发光二极管的点亮电流在5~10mA。LED数码管要显示BCD码所表示的十进制数字就需要有一个专门的译码器,该译码器不但要完成译码功能,还要有相当的驱动能力。
3.2a BCD码显示电路
3.3计时器电路
计数器
倒计时计数电路主要由计数器构成,它在整个系统设计中的作用是实现计时计数,在此我们选用减法计数器,因为本设计说明时间可预置,所以需要可预置数的减计数器。目前,在实际工程应用中,我们已经很少使用小规模的触发器去拼接成各种计数器,而是直接选用集成计数器产品。3.3a 74LS192 74LS193引脚图
本次课程设计需要50进制和30进制减计数器各一个,所以采用两个74193级联计数,将表示个位的计数芯片借位端BO连接后一级的CPD即可进行级联计数,后一级输出为十位位。以下为设计中用到的50和30进制减计数器。以下为计数器的逻辑电路图:
3.3b 范围为49~0的50进制减计数器
3.3c计数范围为29~0的30进减制计数器
3.4交通灯控制电路与交通灯
3.4,1交通灯控制电路
交通信号灯转换器其实就是由计数进制转换器来实现,即一个JK触发器,其中J、K端都同时接高电平,即构成了一个T’触发器,目的就是实现翻转功能,其时钟输入端是由倒计时计数器中的两片74192的八个输出端经过一个或门然后经过一个非门接入。
3.4.1a 交通灯控制电路
3.4,2交通灯模拟电路
S0:没有打开电源的状态。S1:东西方向绿灯亮,南北方向红灯亮,时间30s。S0,S1,S2,S3中任一状态下打开电源会进入S1状态,数码管初始值为60。数码管最大显示为60,出现“0”的瞬间进入下一状态。(S2)S2:东西方向与南北方向黄灯亮,时间5s。
数码管最大显示为30,出现“0”的瞬间进入下一状态。S3:南北方向绿灯亮,东西 方向红灯亮,时间60s。数码管最大显示为60,出现“0”的瞬间进入下一状态。
3.4.2a 交通灯模拟电路
心得体会
经过一周的努力,我终于完成关于交通灯控制电路的电子课程设计,通过一周不断的查资料让我积累了许多实际操作经验,已初步掌握了数电的应用技术,以及数字电路的知识和有关器件的应用,我深刻体会到了数子电路技术对当今现代社会的重要作用。经过这次设计,我学会了许多东西,学会了严密的思考,构想及怎样把计划付诸于实际行动之中。同时与社会的不断高速发展的步伐相比,我认识到自己所学的知识和技能还远远不足,有些实际性的问题还不能够解决,缺少很多有实际运用价值的知识储备,缺乏应有的动手解决实际问题的能力,缺乏些高效利用及筛选大量资料的能力,缺乏资源共享及应有的团队合作精神,有待进一步提高,我应当学好自己的专业知识以适应不断发展的社会。
在这次课程设计中,我学会了如何有效的利用网络资源及图书馆的藏书,找到了几个很不错的专业网站,为以后的查阅专业方面的信息和相互之间的交流打下了坚实的基础,学会了如何看电路图,识别电路图,提高了自己的专业技能,同时也培养了自己独立解决实际问题的能力,也培养了自己认真和严谨的科学态度,收到了很大的启发,为以后的工作积累了些宝贵的经验。
参考文献
[1]高吉祥.数字电子技术.北京:电子工业出版社
[2]梁宗善.电子技术基础课程设计[M].武汉:华中理工大学出版社 [3]李玲远,范绿蓉,陈小宇.电子技术基础实验.北京:科学出版社 [4]彭介华.电子技术课程设计指导[M].北京:高等教育出版社 [5]康光华
电子技术基础(数电部分)华中理工大学电子学教研室