1、基于单片机交通灯控制器设计一、任务要求1)通过数字电路的设计,在面包板上模拟交通红绿灯。要求分主干道和支干道,每条道上安装红(主:R,支:r)绿(主:G,支:g)黄(主:Y,支:y)三种颜色灯,由四种状态自动循环构成(GrYrRgRy);2)在交通灯处在不同的状态时,设计一计时器以倒计时方式显示计时,并要求不同状态历时分别为:Gr:30秒,Rg:20秒,Yr,Ry:5秒。二、总体方案主控部分秒脉冲发生器交通灯倒计时控制部分数码管显示反馈控制三、单元电路设计1)主控电路在设计要求中要实现四种状态的自动转换,首先要把这四种状态以数字的形态表示出来。因22=4,所以可以两位二进制数表示所需状态(00
2、Gr, 01Yr, 10Rg, 11Ry),循环状态:(0001101100)数字电路课程中介绍的计数器就是通过有限几个不同状态之间的循环实现不同模值计数,由此可以尝试设计一模值为4的计数器,其输出(代表不同状态)既可以循环转换,而且能够控制其他部分电路。在课程设计中本人利用74LS74(双上升沿D触发器)设计模4计数器作为主控部分电路。根据真值表化简,然后接线,这里就不详细介绍。主控电路图如下:2) 秒脉冲产生电路通过555芯片按一定的线路接上不同的电阻和电容就可产生周期不的方波脉冲,即不同的频率脉冲。课程设计需要秒脉冲,利用的2个电容,2个电阻。脉冲产生电路图如下: 3) 红绿灯(发光二极
3、管)显示电路红绿灯显示也是表示电路所处状态,其必然与主控电路的状态一一对应,受到主控电路控制,即主控电路的输出(A和B)决定了主干道和支干道的红绿灯的亮灭情况。如亮用1表示,灭用0表示,则有,AB主红(R)主黄(Y)主绿(G)支红(r)支黄(y)支绿(g)00001100010101001010000111100010所以,R =A, Y=AB G=ABr=A y= AB g= AB这里应该注意:我们可以用门电路实现(如与门,与非门,非门等)但是这些电路不稳定,容易出现错误,如果能够用中规模器件的话,我们尽量用中规模器件来实现,因为中规模器件不仅较小规模器件稳定,而且接线也教小规模器件简单.上
4、面红绿灯的状态完全由A和B控制,我们可以用74LS139双二-四译码器,但注意译码器的输出必须经非门处理后才能接入红绿灯线路.红绿灯显示电路接线如下:4) 计时部分电路a) 计时器状态产生模块:设计要求对不同的状态维持的时间不同,而且要以十进制倒计时显示出来。限于实验室器材本人采用两个74LS161完成计时器状态产生模块设计。设计思路:要以十进制输出,而又有一些状态维持时间超过10秒,则必须用两个74LS161分别产生个位和十位的数字信号。显然,计数器能够完成计时功能,我们可以用74LS161设计,并把它的时钟cp接秒脉冲。74LS161计数器是采用加法计数,要想倒计时,则在74LS161输出
5、的信号必须经过非门处理后才能接入数码管的驱动74LS48,而在显示是最好以人们习惯的数字0-9显示计时,故在设计不同模值计数器确定有效状态时,本人以0000,0001,0010-1111这些状态中靠后的状态为有效状态。例如:有效状态10111100110111101111取非 01000011001000010000即 4-3-2-1-0 实现模5的倒计时。在将74LS161改装成其他模值时既可以采用同步清零法,也可采用异步置数法,但0000不可能为有效状态,所以采用异步置数法完成不同模值转化的实现。首先对控制个位输出的74LS161设计按要求对系统的状态不同,即红绿灯的状态不同,个位的进制也
6、就要求不同。本人利用系统的状态量A,B控制74LS161的置数端D0D1D2D3。当系统处在Gr或Rg状态时,个位的进制是十(模10),即逢十进一,当系统处在Yr或Ry状态时,个位的进制是五(模5),即逢五进一,模10时,有效状态为0110,0111,1000,-1111,置D3D2D1D0为0110,模5时有效状态为1011,1100,1101,1110,1111,置D3D2D1D为1011,由此有,ABD3D2D1D0000110011011100110111011所以,D3=B D2=B D1=1 D0=B当状态为1111时,74LS161的状态必须跳到进入下一个循环,此时进位输出为1,
7、我们可以把它的CO非接入置数端LD。再对控制十位输出的74LS161设计。同设计控制个位输出的74LS161基本类似,本人用系统状态量A,B控制十位74LS161的置数端D3D2D1D0。当系统处于Gr状态时置D3D2D1D0为1101,当系统处于Yr或Ry时置D3D2D1D0为1111,当系统处于Rg时置D3D2D1D0为1110,有,ABD3D2D1D0001101011111101110111111故,D3=D2=1 D1=A+B D0=A+B同理我们将CO2非接入置数端LD*对一些级联的处理当计数超过10秒时,个位需向十位进位,此时十位计数,其它时间其保持不变,本人通过控制十位的ETt
8、2,ETp2端实现这一功能,把个位的CO1接入ETt2,ETp2接1,当个位需进位,即完成一次循环,CO1为1,则ETt2=ETp2=1,十位开始计数,其他时刻CO1=0,则ETt2=0,ETp2=1,十位保持。设计时把CO1,CO2的与非接入主控电路的双上升沿D触发器的cp,当完成一次计时,个位和十位同时完成循环,此时CO1=CO2=0,(其它时刻为1)cp出现一下降沿,触发器计时,即系统跳到下一个状态,红绿灯转换,计时器开始下一次计时。b) 数字显示模块:我们用数码管将计时器产生的信号以数字形式显示出来,其中包括接数码管的驱动7448。为了使显示十位数的数码管为零时不显示,必须将十位数码管
9、驱动的LT接1,BI/RBI悬空,RBO接地,另一个驱动则上面的三个管脚只需都接1。记时部分电路如下:四 总体电路图五、关键电路波形图六、调试过程中的问题当我设计好电路图,并确定其正确性以后,在面包板上连接好电路,并进行调试。尽管之前已确定电路图的正确性,但是在调试时,仍然出现了很多问题。例如:线路的两个接头接错位置;芯片布局不合理,导致接线时容易使线路交叉;芯片未接电源或地线;接线时线头未插入面包板里,使线路无效;甚至在某些复杂的线路处,漏接线路,或者接在其它接口处(这极易使线路短路)等。这一系列的问题,经过仔细的检查后,能够找到并予以改正,但还有一种问题是很难找到的。当我确定所设计的电路图
10、的正确性,并确定接线正确以后,在进行调试时,仍然出现了问题,如:二极管发光的顺序不正确;倒记时器记数出错。这种问题我在遇见几次以后仍然没找到原因所在,有时在接线并调试正确,且实现其功能后,当过一段时间再次调试时,发现系统中居然出现了上述第二种问题。七分析总节通过这两周的课程设计实习,使我感悟最深的是数字电路设计需要的是深厚的知识功底和严谨认真的科学态度。好的电路设计不仅要求正确,而且是最简单的,这里说的最简单不是说要每个器件都要最简单的,如果那样我们也不必去选择器件,只需用门电路就可以设计了,我们要的是对整体电路来讲是最简的,尽量在功能齐全的前提下减少所用器件的数量。另外对于电路本身存在一个安
11、全稳定性问题,所以在面包板上接线时,尽量用一根导线将输出和输入接通,因为导线中间每断一次都是电路的一个安全隐患。当觉得电路设计方案没有问题时就可以在面包板上接线了。另外,我们还最好是接好一个模块后通电检测,有问题就检查修改电路,直到这一模块正常再对下一个模块接线。布线完成后,接下来就该调试电路,这是一个很重要的环节。结果错误的可能原因有很多,可能是设计本身或是接线问题或接触问题,也可能是所用器件问题。这次课程设计使我对数字电路这一学科产生更浓厚的兴趣,也教会我认真严谨的科学治学态度。八参考文献任为民 电子技术基础课程设计指导高书莉 数字系统设计数字电路课程设计指南毕满清 电子技术实验与课程设计
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100