数字电路课程设计(红绿灯)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字电路课程设计(一)
——红绿灯设计方案总结报告
指导教师:
设计人员:
班级:电信081
日期:2010.4.13
一、设计任务书
1、题目:红绿灯控制器
2、设计要求:设计一个红绿灯控制器设计应具有以下功能
基本设计要求:设计一个红绿灯控制器控制器设计应具有以下功能
(1)东西方向绿灯亮,南北方向红灯亮。.
(2)东西方向黄灯亮,南北方向红灯亮。
(3)东西方向红灯亮,南北方向绿灯亮。
(4 ) 东西方向红灯亮,南北方向黄灯亮。
要求有时间显示(顺数、逆数皆可),时间自定。(大于15秒以上)
二、设计框图及整机概述
本课程设计在继承了原有的红绿灯的基本功能的基础上,有对其功能进行了很大的完善,其中主要包括:
(1)可以对大小路口的绿灯及黄灯任意置数。
(2)在倒计时3~0秒期间,当时正在点亮的绿灯或黄灯会进行闪烁。
正是由于拥有了这两个功能,使得电路稍显复杂,现在将分别讲解其设计思路。
本电路大体上可以分为四个部分,即:赋值电路部分、控灯闪烁部分、控制部分和核心计数部分。
其中,赋值电路部分占据了大量的空间和芯片,其主要原理是数据选择。控灯闪烁部分的芯片较少,也没有占用太多空间,控制部分分布在系统的各个部分,可以说是系统的灵魂,它对整个系统进行着控制。核心计数部分比较简单,主要是进行计数并且产生进位信号。
三、各单元电路的设计方案及原理说明
(一)赋值电路部分
赋值电路的设计是整个电路设计最复杂的一个环节,其主要问题主要集中在(1)对于一个计数器的数据输入端,如何使之在不同时刻数据不同,即:如果假设绿灯为30秒,黄灯5秒,在对绿灯倒数计数时,则计数器的输入端应该为30,在置数信号到达时即可将其置数到输出端,并可开始计数。而当这30秒将要倒数完成时,又要考虑将输入端数据变成05(2)如果设计成任意输入数据,将以何种方式进行输入。
在设计这部分的电路时我首先想到的是第二个问题,开始阶段我所采用的是74LS151,同时决定给每一位个数据分配一个控制开关,但是,问题显而易见,开关太多了……粗略估计了一下,大概需要四十个左右……所以显然方案不行。之后想到了可以用脉冲的方法对计数器进行计数,即通过对计数器的CLK端不断的接高低电平,以达
到将想要赋的数存储在计数器中的目的。就是利用的这种不断开起闭合开关的方法,从而将需要赋给核心计数部分的数据先储存起来。完成这部分功能的器件,我选择了74LS160和开关若干。
经过上面的叙述,已经了解了如何将想要实现的大路小路的各种灯的点亮描述输入进来,以及输入系统之后的储存原理。下面所要讲述的是如何将已经输入到系统中,并暂时储存的数据,分时段赋给计数部分份的原理。
从我的原理图可以看到,左侧有四个模块,每个模块由若干个74LS160和74LS153组成,且线路是相互垂直连接的,其中上面两个模块负责的是对黄灯和绿灯时间的计数,现以这两部分进行讲解。74LS153的作用是对已经存储在74160中的数据进行选择。设上数第一个模块为模块A,第二个为模块B。A的作用是对秒的十位进行赋值,B的作用是对秒的个位进行赋值。现以实例讲解:设要求输入大路口绿灯25秒,黄灯04秒,小路口绿灯15秒。同时可以得出,小路口红灯30秒,大路口红灯20秒。则在模块AB 中的74LS160从上到下所存储的数据为2(0010)、1(0001)、5(0101)、4(0100)、5(0101)。AB中的数据选择器负责对这些数据进行选择,并输出给计数部分。当数据选择器中的输入端AB为00是,即输出所有AB中的数据选择器的1*0,2*0项,即,A 模块通过两个153将输出0010(2),并赋给负责计秒数十位的核心计数部分的74190.B 模块通过两个153将输出0101(5),即,此时的核心计数部分负责绿灯黄灯秒数的计数器74190的输入端0010 0101 (25),只要给一个合适的信号使其置数到输出端,即可开始进行倒数计数,当倒数到3秒时,将会给控制部分一个信号,使之经过一系列处理之后会使AB中的74153中的输入端由00变为01,这样,会使数据选择器中的1*1,2*1项全部输出,以此类推,就会实现在同一块计数器上的不同数据计数。
(二)控灯闪烁部分
控灯闪烁部分可以说是本电路的另一个亮点,本人只用了三个或门和两个74LS48就完成了这部分的设计。在设计之初,问题主要集中在让其闪烁的信号从哪里来。经过思考,我想到,如果能有一种电路,它在使能端为1时能够正常的将数据从输入送到输出,而在使能端为零时则能过将输出端置零。这样,将6个灯的信号通过这种原件,在平时倒数计数时,信号可以正常通过,即对亮灯是没有影响的,而当倒数计时到达三秒时,则会通过控制部分,使得使能端的信号变为一个脉冲,即,脉冲为1时,灯照常亮,而当脉冲为0时,电路的输出端被清零,灯熄灭,当脉冲再次为1 时,输出端又将拥有输入端的数据,即,刚刚熄灭的等又会亮,由此下去,在3~0秒期间,脉冲不断的作用于使能端,从而使得灯不断的亮灭,以达到闪烁的目的。
有了基本的原理后,其主要的问题是(1)选择那种芯片?(2)使能端的信号怎么来保证?(3)如果只解决了上述的两个问题的话,会出现一个问题,就是当倒数到3~0期间,所有在该时刻的点亮的灯是都会闪的,这其中也包括了红灯。而显示中,红灯是不需要闪烁的,因此,需要一种控制电路来完成在不同时刻,哪个会闪烁而哪个不会闪烁。
对于问题一,最初,我所想到的芯片是可以异步清零的计数器芯片,但是,要用其完成在使能端使之正常工作时,输入输出相当于通路的功能显而易见十分困难。之后,又想到了74LS48,之所以想到了这块芯片,主要是因为它能够灭0。但是,7448的主要功能是一个为LED所搭配使用的译码器,这时,如果要想上述的输入输出一样的功能的话,就需要去研究其功能表。经过研究发现,确实存在这样的输入输出端,从而使得这块芯片得以利用。当然,研究这个功能表大概花费了我两个小时的时间。
对于问题二,主要采用的是将一个脉冲信号与一个控制信号通过或门,并将输出接在使能端的方法,具体是,当倒数计数不3~0之间时,控制信号为0,即或门的输出仅