循环彩灯课程设计

时间:2024.4.5

数字电路 课程设计(学年设计、学年论文)任务书

 数字电路 设计说明书

学院名称:     计算机与信息工程学院          

班级名称:          网络工程4班              

学生姓名:                                       

学    号:                                         

题    目:       循环彩灯控制器设计                              

指导教师

姓    名:                                  

起止日期:2013.12.1至2014.1.3

第一部分:正文部分

一、选题背景标题:四号仿宋加粗,顶格,行间距:24磅,上下间距:段前0.5行,段后0.5行)(内容:用小四号仿宋,首行空两格

1.应解决的主要问题

1.1      了解数字电路系统的定义及组成:数字电路系统一般包括输入电路、控制电路、输出电路、时钟电路和电源等。输入电路主要作用是将被控信号转换成数字信号,其形式包括各种输入接口电路。比如数字频率计中,通过输入电路对微弱信号进行放大、整形,得到数字电路可以处理的数字信号。模拟信号则需要通过模数转换电路转换成数字信号再进行处理。在设计输入电路时,必须首先了解输入信号的性质,接口的条件,以设计合适的输入接口电路。    

1.2掌握时钟电路的作用及基本构成:时钟电路是数字电路系统中的灵魂,它属于一种控制电路,整个系统都在它的控制下按一定的规律工作。时钟电路包括主时钟振荡电路及经分频后形成各种时钟脉冲的电路。比如多路可编程控制器中的555多谐振荡电路  信号结合产生系统所需的各种时钟脉冲。

2.应达到的要求

通电后彩灯能自动点亮并循环;具有顺时针和逆时针循环选择;循环频率可调;具有复位、暂停、继续等按钮;采用市电供电,自行设计电源电路。

说明本课题应解决的主要问题及应达到的要求。

二、相关知识

2.1 题目分析

         我们设计的流水灯实际上是主要使用一个555定时器、一个74LS160,一个74LS42和两个74HC194,这四个芯片对,6个彩灯进行控制,产生循环控制的效果。                  

2.2题目设计

花型1,111111;花型2,000000;花型3,100000——010000——001000——000100——000010——000001;花型4,111000;花型5,000111。用74HC194移位寄存器来实现。用74LS42译码器来实现对194的控制,实现194的清零,并行输入,以及右移。用74LS160十进制计数器控制42译码器的输出,555定时器根据滑动电阻的调节来实现输出时钟脉冲周期的不同从而控制160计数的快慢,也就实现了彩灯闪烁时间的可调。

2.3 结构框图

阐明为什么要选择这个方案以及所采用方案的特点。

三、系统设计

3.1 555时序电路

在这次课程设计中,555定时器用来产生脉冲信号。因此把555定时器接成多谐震荡器。R1、R2、C2为定时元件。

3.2 74LS160计数器电路域74HC42译码器电路部分

     因为在试验中总共10种状态,需要一个10进制的计数器,因此采用74LS160十进制加计数器置数端A、B、C、D悬空;清零端接复位键,实现复位键设置;预置端,使能端接高电平有效;时钟脉冲输入端接555定时器输出端。

     74HC42译码器为4—10线译码器,其输入端分别接160计数器输出端,来控制194的状态。

   

3.3 74LS194移位寄存器电路

74LS194为4为双向移位寄存器,有四个输出端。在实验中须驱动6个彩灯,所以用两个74LS194来完成对六路彩灯的控制。其时钟脉冲信号同样接555定时器输出端。

     3.4复位键设计

         

整体电路图

要求层次分明、表达确切。

四、测试分析

4.1测试:

(1)检查电路

    对照电路图认真检查电路,首先查看电源是否接错或与地短接,然后检查各芯片是否安装牢固,最后对照电路图认真查看各芯片的管脚是否接错、漏接或出现多接线的现象。

(2)接通电源观察

    在做好第一步的基础上进行下一步。接通电源,如果出现异常现象立即关闭电源,按第一步重新检查电路对出现事故的电路部分进行着重的检查,直至发现并排除错误。

(3)工作开关断开的情况下的调试

    当第二步完成后,在断开开关的情况下用一个发光二极管检测脉冲信号的输出,各芯片的初始输出是否正确,如果存在问题,查找出原因并解决。

(4)工作开关闭合的情况下的调试

    闭合工作开关,观察显示结果是否正确,如果存在问题继续调试。调试结束后观察调试后的结果是否符合设计要求。

4.2结果:

经上机测试,证明该电路是可行的,实现了彩灯对自然数列的顺时针循环和逆时针循环,循环频率可调,并且实现了复位,继续和停止功能的按钮。(对研究过程中所获得的主要的数据、现象进行定性或定量分析,得出结论和推论。

五、结论(或总结)

这是我们第一次做课程设计,所以对我们而言不仅十分有意义,而且也是个挑战。它不仅仅让我们综合那些理论只是来运用到设计和创新,还让我们知道了一个团队凝聚在一起时所能发挥出的巨大潜能!

在近一个星期的课程设计时间内,实在是令人感到忙碌,却又充实。而且在课程设计的期间,又是我们的考试复习阶段,所以我不得不在复习即将考试的科目的同时去查找自己所选项目的相关资料,根据设计要求去选用芯片构成电路。

在刚开始的时候,很多内容都看不明白,需要重新复习数电知识,这是一个复习的过程,也是一个深入理解的过程,我不但更加了解芯片的功能,而且也会去更加注意细节。知其然,更要知其所以然。这样才能更好的完成数电课程设计,交出一份令人满意的答卷。

在最终连接电路的时候也出现了许多问题,不得不停下手来,再次回头去查看资料,翻看课本,重新学习,这也是一个巩固的阶段,他使我的数电掌握得更加牢固。而在连线的过程中,更由不得一丝马虎,任何一点粗心都可能导致实验的失败。

 再次感谢老师的辅导以及同学的帮助。“纸上得来终觉浅,绝知此事要躬行”,由此看来实践的重要,在设计过程中碰到许多不同的问题,与理论有所差距,明白理论和实践还是有差距的,我们不能只学理论而不实践,要多结合理论进行实践,这样才更加理解掌握知识,把理论应用于实践,从实践中得出结论。

短短几天的课程设计,学到了很多的东西,最重要的是我自己动手把我学习的知识用于实践,做出成功的作品,这才算真正学习到了东西。总之,这次实验我收获颇多。实践是获得知识的一种最好的手段!

(对整个研究工作进行归纳和综合。)

第二部分:参考文献

[1]康华光,邹寿彬.电子技术基础-数字部分(第五版).北京:高等教育出版,2006.1

[2]邓勇. 数字电路设计完全手册.北京: 国防工业出版社,2001

[3]谢自美.电子线路设计·实验·测试(第二版):华中科技大学出版社,2003

[4]孙梅生,李美莺,徐振英. 电子技术基础课程设计[M].北京:高等教育出版社

[5]梁宗善 .电子技术基础课程设计[M].武汉:华中理工大学出版社

[6]吴友宇.数字电子技术基础.[M]武汉理工大学出版社.2008

[7]《电子线路设计.实验.测试 第三版》谢自美 主编 华中科技大学出版社

[8]《电子技术基础 数字部分》康华光 主编 高等教育出版社

[9]《电子线路课程设计》陈晓文主编 北京:电子工业出版社,2004

[10]《电子线路图网》   http://www.cndzz.com

学生签名:                 填表日期:    年   月   日

第三部分: 指导教师评语

(从学生的工作态度、工作量、设计(论文)的创造性、学术性、实用性及书面表达能力等方面给出评价。)

第五部分:成绩评定

指导教师签名:                 填表日期:    年     月   日


第二篇:VHDL课程设计---交通灯


湖南科技大学信息与电气工程学院

《数字系统仿真与VHDL设计》

课程设计报告

题    目:    VHDL语言课程设     

专    业:      通信工程         

班    级:        二班            

姓    名:        阳素荣          

学    号:      0904040227        

课程设计任务书

目 录

1、课程设计的目的。

2、设计方案的论证。

3、设计仿真及结果分析。

4、设计及仿真中的体会。

5、对本次课程设计的体会和建议。

6、参考文献(包括电路图和元器件清单)

1、课程设计的目的

选题一:循环彩灯控制器

设计一个循环彩灯控制器,该控制器控制红,绿,黄三个发光管循环点亮。要求红发光管亮3秒,绿发光管亮2秒,黄发光管亮1秒。

选题二:交通灯控制器的程序设计

用于十字路口的交通灯控制器。要求:东西方向各有一组红,黄,绿灯用于指挥交通,红,黄,绿的持续时间分别为25s,5s,20s 。当有紧急情况(如消防车)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复初始状态,正常工作。

选题三:多功能电子表

设计一个含有数字钟的多功能电子表。数字钟以“秒”作为基准信号,可显示时、分、秒。

2、设计方案的论证

选题一:循环彩灯控制器

要实现彩灯的循环控制需设计一个六进制计数器count,该计数器以时钟脉冲clk为输入信号,上升沿触发有效,采用VHDL硬件描述语言中的CASE语句实现控制彩灯的亮灭,设置一个输出三位逻辑值output以表示彩灯亮灭的总体情况,顺序为红、绿、黄,逻辑‘1’表示灯亮,逻辑‘0’表示灯不亮。其真值表如下:

设置输入时钟脉冲以1s为周期即可实现题设要求红发光管亮3秒,绿发光管亮2秒,黄发光管亮1秒。

为实现对彩灯的控制,设置一个清零端clr和置位端reset,均为高电平有效。当清零端clr为高电平时,彩灯均不亮,当置位端reset为高电平时,彩灯从初始状态开始重新循环,直到清零端clr的下一个高电平脉冲使其清零。

输入端口为:clk(时钟脉冲信号)、clr(清零端)、reset(置位端)

输出端口为:output(2 downto 0)

选题二:交通灯控制器的程序设计

要实现对交通灯的控制,原理和选题一大同小异,设计一个十进制计数器count,该计数器以时钟信号clk为输入信号,上升沿触发有效,采用VHDL硬件描述语言中的CASE语句实现控制彩灯的亮灭,东西两个方向分别设置一个输出三位逻辑值output1,output2以表示彩灯亮灭的总体情况,顺序为红、绿、黄,逻辑‘1’表示灯亮,逻辑‘0’表示灯不亮。为操作方便,将output1,output2合并为一个六位逻辑值output表示,其真值表如下:

设置一个置位端set,高电平有效,当有特殊情况发生时,使set为高电平,此时两个方向均为红灯亮,当set还原为低电平时,即当特殊情况结束后,控制器恢复初始状态,正常工作。

输入端口:clk(时钟脉冲信号)、set(特殊情况控制信号)

输出端口:r_east,g_east,y_east,r_west,g_west,y_west(东西方向红绿灯)

选题三:多功能电子表

设置一个输入端clk时钟脉冲输入信号,以hout,mout2,mout1,sout2,sout1分别表示时间的时、分、秒,从最低位s1(即秒的个位)开始计数,s2,s1构成一个六十进制计数器,当s1受时钟脉冲触发控制,当s1计数至‘9’时,s2加1,s1从零开始重新计数,以此类推,m2,m1构成一个六十进制计数器,以s2,s1一个计数周期为触发。其中h,m2,m1,s2,s1均用四位二进制数表示,当完成一个整周期后从零开始重新循环。这样就实现了电子表的计时功能。

要利用六个七段数码管实现电子表的显示功能,用h2,h1,m2,m1,s2,s1分别表示实现显示功能的数码管,它们在程序中都是以七位二进制逻辑值表示,其表示方法与对应的十进制数值关系如下:

输入端口:clk(时钟脉冲信号)

输出端口hout,mout2,mout1,sout2,sout1,h2,h1,m2,m1,s2,s1

3、设计仿真及结果分析

选题一仿真波形如下:

选题二仿真波形如下:

说明: C:\Users\Administrator\AppData\Roaming\Tencent\Users\353370668\QQ\WinTemp\RichOle\7X`E{NO[XV1J[[IQ~$1W%EF.jpg

选题三仿真波形如下:

4、设计及仿真中的体会

设计过程中调试的时候发现不能进行调试,后来经过学习和查阅资料发现程序文件名的后缀应为“.vhd”,并且文件名应该与程序中命名 的实体名一致,否则都会造成程序段不能编译调试成功,后来,把这些都改正之后发现程序还是调试不了,在确认程序设计思想及逻辑都没有问题之后,更加百思不得其解,也没有出什么明显的语法错误,慢慢琢磨了很久之后还是不清楚,后来突然发现原来自己少些了一个库文件的调用“USE IEEE.STD_LOGIC_UNSIGNED.ALL;”,添加之后便能正常运行了,

5、对本次课程设计的体会和建议

对于自己所犯的这个“小错误”我自己都觉得很好笑,不过我也因此更加明白细心对于编程的重要性,真可谓“一着不慎,全盘皆输”啊,此后一定要随时提醒自己要细心。

不过总的来说,这次课程设计让我收获了不少,让我对maxplux软件进一步了解,对vhdl语言的编程思想也更加了解,增加了操作的熟练程度。

6、参考文献(包括电路图和元器件清单)

[1]  作者:侯伯亨,刘凯,顾新

书名:《VHDL硬件描述语言与数字逻辑电路设计》

出版社:西安电子科技大学出版社

出版时间:2009.08

[2]  作者:蒋清明

书名:《C语言程序设计》

出版社:人民邮电出版社

出版时间:2008.04

[3]  作者:田红丽,张涛

书名:《基于VHDL微处理器模拟实验系统的设计与实现》

出版社:河北省科学院

附录一  选题一源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE  IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY light IS

PORT(clk,clr:IN STD_LOGIC;

     output:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));

END ENTITY light;

ARCHITECTURE example OF light IS

SIGNAL count:STD_LOGIC_VECTOR(2 DOWNTO 0);

BEGIN

PROCESS(clk,clr)IS

BEGIN

IF(clr='1')THEN

count<="000";

ELSIF(clk'EVENT AND clk='1')THEN

   IF(count="101")THEN

      count<="000";

   ELSE

      count<=count+1;

   END IF;

CASE count IS

WHEN "000"=>output<="100";

WHEN "001"=>output<="100";

WHEN "010"=>output<="100";

WHEN "011"=>output<="010";

WHEN "100"=>output<="010";

WHEN "101"=>output<="001";

WHEN OTHERS=>output<="000";

END CASE;

END IF;

END PROCESS;

END ARCHITECTURE example;

附录二  选题二源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY trafficlight IS

PORT(clk,set:IN STD_LOGIC;

     r_east,g_east,y_east,r_west,g_west,y_west:OUT STD_LOGIC);

END ENTITY trafficlight;

ARCHITECTURE example OF trafficlight IS

SIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL output:STD_LOGIC_VECTOR(5 DOWNTO 0);

BEGIN

PROCESS(clk,set)IS

BEGIN

IF(set='1')THEN

   count<="1010";

 ELSIF(clk'EVENT AND clk='1')THEN

   IF(count="1001"OR count="1010")THEN

      count<="0000";

   ELSE

      count<=count+1;

   END IF;

END IF;

CASE count IS

  WHEN"0000"=>output<="100010";

  WHEN"0001"=>output<="100010";

  WHEN"0010"=>output<="100010";

  WHEN"0011"=>output<="100010";

  WHEN"0100"=>output<="100001";

  WHEN"0101"=>output<="010100";

  WHEN"0110"=>output<="010100";

  WHEN"0111"=>output<="010100";

  WHEN"1000"=>output<="010100";

  WHEN"1001"=>output<="001100";

  WHEN"1010"=>output<="100100";

  WHEN OTHERS=>output<="100100";

END CASE;

r_east<=output(5);

g_east<=output(4);

y_east<=output(3);

r_west<=output(2);

g_west<=output(1);

y_west<=output(0);

END PROCESS;

END ARCHITECTURE example;

附录三  选题三源程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity a2 is

port(clk:in std_logic;

    hdout:out std_logic_vector(3 downto 0);

    mdout2:out std_logic_vector(3 downto 0);

       mdout1:out std_logic_vector(3 downto 0);

       sdout2:out std_logic_vector(3 downto 0);

       sdout1:out std_logic_vector(3 downto 0);

       m2,m1,s2,s1:out std_logic_vector(6 downto 0));

     end entity a2;

architecture e1 of a2 is

       signal out5:std_logic_vector(3 downto 0);

       signal out4:std_logic_vector(3 downto 0);

       signal out3:std_logic_vector(3 downto 0);

       signal out2:std_logic_vector(3 downto 0);

       signal out1:std_logic_vector(3 downto 0);

      begin

           hdout<=out5;

           mdout2<=out4;

              mdout1<=out3;

              sdout2<=out2;

              sdout1<=out1;

       process(clk) is

       begin

       if(clk' event and clk='1') then

              if(out1="1001") then    

                     out1<="0000";

           else

                     out1<=out1+1;

           end if;

       end if;

       end process;

       process(clk) is

       begin

       if(clk'event and clk='1') then

        if(out1="1001") then

              if(out2="0101") then

                     out2<="0000";

              else

                     out2<=out2+1;

              end if;

              end if;

              end if;

              end process;

process(clk) is

       begin

       if(clk'event and clk='1')then

       if(out1="1001") then

          if(out2="0101") then

              if(out3="1001") then

                     out3<="0000";

       else

              out3<=out3+1;

       end if;

       end if;

       end if;

       end if;

  end process;

process(clk) is

       begin

       if(clk'event and clk='1')then

       if(out1="1001") then

          if(out2="0101") then

              if(out3="1001") then

       if(out4="0101") then

                     out4<="0000";

       else

              out4<=out4+1;

    end if;

       end if;

       end if;

       end if;

       end if;

       end process;

    process(clk) is

       begin

       if(clk'event and clk='1')then

       if(out1="1001") then

          if(out2="0101") then

              if(out3="1001") then

       if(out4="0101") then

       if(out5="1011") then

                     out5<="0000";

       else

              out5<=out5+1;

    end if;

    end if;

       end if;

       end if;

       end if;

       end if;

       end process;

    process(out1)

        begin

             case out1 is

             when "0000"=>s1<="0111111";

             when "0001"=>s1<="0000110";

             when "0010"=>s1<="1011011";

             when "0011"=>s1<="1001111";

             when "0100"=>s1<="1100110";

             when "0101"=>s1<="1101101";

             when "0110"=>s1<="1111101";

             when "0111"=>s1<="0000111";

             when "1000"=>s1<="1111111";

             when "1001"=>s1<="1101111";

             when others=>s1<="0000000";

        end case;

     end process;

   process(out2)

        begin

             case out2 is

             when "0000"=>s2<="0111111";

             when "0001"=>s2<="0000110";

             when "0010"=>s2<="1011011";

             when "0011"=>s2<="1001111";

             when "0100"=>s2<="1100110";

             when "0101"=>s2<="1101101";

             when others=>s2<="0000000";

        end case;

     end process;

process(out3)

        begin

             case out3 is

             when "0000"=>m1<="0111111";

             when "0001"=>m1<="0000110";

             when "0010"=>m1<="1011011";

             when "0011"=>m1<="1001111";

             when "0100"=>m1<="1100110";

             when "0101"=>m1<="1101101";

             when "0110"=>m1<="1111101";

             when "0111"=>m1<="0000111";

             when "1000"=>m1<="1111111";

             when "1001"=>m1<="1101111";

             when others=>m1<="0000000";

        end case;

     end process;

process(out4)

        begin

             case out4 is

             when "0000"=>m2<="0111111";

             when "0001"=>m2<="0000110";

             when "0010"=>m2<="1011011";

             when "0011"=>m2<="1001111";

             when "0100"=>m2<="1100110";

             when "0101"=>m2<="1101101";

             when others=>m2<="0000000";

        end case;

     end process;

       end architecture e1;

更多相关推荐:
循环彩灯课程设计报告

电子系统课程设计报告学号17姓名虞丽惠班级应电091班指导老师吴夏来时间20xx53020xx610课程设计报告目录一引言2二设计要求31任务2基本要求三设计流程31流程总图2AT89C51引脚图四设计方案51...

循环彩灯电路设计报告

数字电子技术基础课程设计报告设计题目彩灯循环控制器的设计专业班级姓名学号指导教师设计日期20xx年6月课程设计评审意见1设计阶段30分硬件电路运行情况优良中一般差2报告60分对于课程设计报告撰写的整体评价优良中...

16路循环彩灯设计报告

循环彩灯控制电路的设计一课程设计的目的1巩固和加强数字电子技术课程的理论知识2掌握电子电路的一般设计方法了解电子产品研制开发过程3掌握电子电路安装和调试的方法及其故障排除方法学会使用multisim软件对电路仿...

循环彩灯课程设计程序

湖南科技大学信息与电气工程学院VHDL课程设计报告专业电子信息工程班级一班姓名崔永康学号1104030115指导老师罗朝辉课程设计任务书1课程设计的目的本设计的任务是熟悉支持VHDL语言的软件如MaxPlus2...

微机课程设计8086控制的循环彩灯报告

微机原理课程设计报告书设计目的1巩固和加深课堂所学知识熟悉各种指令的应用及条件2学习掌握一般的软硬件的设计方法和查阅运用资料的能力3深入了解与掌握8255A在PC机系统的典型接法和8255A的工作方法及应用编程...

欧姆龙循环彩灯课程设计(自编)

重庆XX大学题目4循环彩灯PLC控制系统设计专业自动化年级20xx级班级09自动化一班姓名XXX摘要随着人们生活水平的提高环境的不断改善和美化PLC对人类的影响越来越广在许多场合可以看到很多彩色的霓虹灯特别是当...

LED循环彩灯课程设计

学院模拟电子技术课程设计题目LED循环彩灯学生姓名专业班级电科3班学号20xx31000院系电气工程学院指导教师完成时间20xx年12月17日目录1课程设计的目的12课程设计的任务与要求221实验器材222电子...

电气082班LJM课程设计总结报告(彩灯循环控制器)

目录1课题名称12设计主体要求及内容13课题分析与方案论证131方案一232方案二34各局部电路设计441NE555构成的秒脉冲电路442用JK构成的二分频电路543用74HC160构成各数列显示电路544上电...

广东工业大学网络工程课程设计-彩灯循环控制器

课程设计课程名称电子技术综合设计与实训题目名称彩灯循环控制器学生学院自动化学院专业班级网络学号学生姓名指导教师20年10月30日1广东工业大学课程设计任务书题目名称学生学院专业班级姓名学号彩灯循环控制器自动化学...

中北大学循环彩灯电路课程设计

中北大学课程设计说明书学院信息与通信工程学院信息对抗技术专业李泽学号专业学生姓名课程设计题目起迄日期课程设计地点指导教师系主任0905094230EDA实践B题目10循环彩灯控制2月13日2月26日校内王鉴李凯...

交通灯课程设计报告6

电子技术课程设计报告目录第一章系统概述311系统概述312交通灯逻辑分析313总体设计方案3第二章单元电路设计与分析621秒脉冲信号发生器的设计622定时器的设计723控制器的设计824显示电路的设计11第三章...

单片机交通灯课程设计报告[1]

摘要31引言42总体设计方案521设计思路5211设计目的5212设计任务和内容6213方案比较设计与论证6214芯片简介922设计方框图153设计原理分析16313233交通灯显示时序的理论分析与计算16交通...

循环彩灯课程设计报告(12篇)