用Multisim实现彩灯循环控制器
2019/06/06
!转载请注明出处
1.设计任务目的与要求
1.1 展示器件
10路彩灯分别用10个发光二极管L0、L1…..L9模拟,发光二极管L0、L1…..L9从左到右排列。
1.2 要求显示三种不同的花型
1) 10路彩灯按照L0、L1…..L9的顺序依次点亮至全亮,再按照L9、L8…..L0的顺序依次熄灭至全灭。
2) 10路彩灯按照L0L1亮、L1 L2亮、L2L3亮、…L8L9亮、L9L0亮的顺序轮流点亮。
3) 10路彩灯按照L0L9、L1L8、L2L7、L3L6、L4L5的顺序依次点亮,然后按相反的顺序依次灭掉。
1.3 控制电路设有启动、切换、复位按钮
按下启动按钮,进入花型(1)并反复循环运行。按下切换按钮,进入花型(2)并反复循环运行;再次按下切换按钮,进入花型(3)并反复循环运行;再次按下切换按钮,则三个花型顺序运行并反复循环;若再次按下切换按钮,则又进入花型(1)并反复循环;不断按下切换按钮,则按上面顺序进行花型切换。任何时候按下复位按钮,全部灯灭。
2.模块及其原理介绍
2.1 计数电路单元
该电路单元用74192计数器来实现。74192是双时钟十进制计数器。本电路用74192来实现0000—1001的十进制计数,同时用另外一个74192的来对第一片芯片进位进行计数,第二个芯片计数到2时同时对两个计数器进行清0操作。其电路图如下图所示
2.2 编码电路单元
编码电路全局如图:
2.2.1 花型1编码电路
由于我最后灯泡的输出电路前面接了一个反相器,所以这里用0来表示灯泡亮。
该序列对应了20种状态,这个序列的状态如表所示:
A2 |
D1C1B1A1 |
L0 L1 L2 L3 L4 L5 L6 L7 L8 L9 |
0 |
0000 |
0 1 1 1 1 1 1 1 1 1 |
0 |
0001 |
0 0 1 1 1 1 1 1 1 1 |
0 |
0010 |
0 0 0 1 1 1 1 1 1 1 |
0 |
0011 |
0 0 0 0 1 1 1 1 1 1 |
0 |
0100 |
0 0 0 0 0 1 1 1 1 1 |
0 |
0101 |
0 0 0 0 0 0 1 1 1 1 |
0 |
0110 |
0 0 0 0 0 0 0 1 1 1 |
0 |
0111 |
0 0 0 0 0 0 0 0 1 1 |
0 |
1000 |
0 0 0 0 0 0 0 0 0 1 |
0 |
1001 |
0 0 0 0 0 0 0 0 0 0 |
1 |
0000 |
0 0 0 0 0 0 0 0 0 1 |
1 |
0001 |
0 0 0 0 0 0 0 0 1 1 |
1 |
0010 |
0 0 0 0 0 0 0 1 1 1 |
1 |
0011 |
0 0 0 0 0 0 1 1 1 1 |
1 |
0100 |
0 0 0 0 0 1 1 1 1 1 |
1 |
0101 |
0 0 0 0 1 1 1 1 1 1 |
1 |
0110 |
0 0 0 1 1 1 1 1 1 1 |
1 |
0111 |
0 0 1 1 1 1 1 1 1 1 |
1 |
1000 |
0 1 1 1 1 1 1 1 1 1 |
1 |
1001 |
1 1 1 1 1 1 1 1 1 1 |
根据表格可知,编号数较低的灯泡在编号数较高的灯泡亮时也必须亮,故可用与门将较低灯泡的电路与较高灯泡的输出电路相关联起来。
为了实现三个花型的顺序输出,该自然序列显示电路还是要经过7442译码器和74153多路选择器。7442译码器的作用在于将4位BCD码的10组代码翻译成10个与十进制数字符号对应的输出信号,图中输入端ABCD为8421码,输出端O0N—O9N分别代表十进制数字0—9。74153是个双4路选择器,其功能是选择输出四个编码单元电路的值。本电路中用了5个74153来对应10个灯泡。74153的器件上用1C0和2C0来连接对应的输出端O0N—O9N。当74153器件的A和B为00时,顺序输出自然序列的值。最后经过指示灯和数码管显示出来。
与门实现电路截图:
1)前10种状态:
2)后10种状态
2.2.2 花型2编码电路
为了使灯泡按照顺序01,12,23,34,45,56,67,78,89,90的输出,可以使用与门同时关联译码器对应的两种状态,比如L0要在计数器为0和9的时候亮。
序列的状态如表:
DCBA |
L0 L1 L2 L3 L4 L5 L6 L7 L8 L9 |
0000 |
0 0 1 1 1 1 1 1 1 1 |
0001 |
1 0 0 1 1 1 1 1 1 1 |
0010 |
1 1 0 0 1 1 1 1 1 1 |
0011 |
1 1 1 0 0 1 1 1 1 1 |
0100 |
1 1 1 1 0 0 1 1 1 1 |
0101 |
1 1 1 1 1 0 0 1 1 1 |
0110 |
1 1 1 1 1 1 0 0 1 1 |
0111 |
1 1 1 1 1 1 1 0 0 1 |
1000 |
1 1 1 1 1 1 1 1 0 0 |
1001 |
0 1 1 1 1 1 1 1 1 0 |
电路截图:
2.2.3 花型3编码电路
为了使按照L0L9、L1L8、L2L7、L3L6、L4L5的顺序依次点亮,然后按相反的顺序依次灭掉,要使用与门相关联。
序列的状态如表:
DCBA |
L0 L1 L2 L3 L4 L5 L6 L7 L8 L9 |
0000 |
0 1 1 1 1 1 1 1 1 0 |
0001 |
0 0 1 1 1 1 1 1 0 0 |
0010 |
0 0 0 1 1 1 1 0 0 0 |
0011 |
0 0 0 0 1 1 0 0 0 0 |
0100 |
0 0 0 0 0 0 0 0 0 0 |
0101 |
0 0 0 0 1 1 0 0 0 0 |
0110 |
0 0 0 1 1 1 1 0 0 0 |
0111 |
0 0 1 1 1 1 1 1 0 0 |
1000 |
0 1 1 1 1 1 1 1 1 0 |
1001 |
1 1 1 1 1 1 1 1 1 1 |
电路与门实现截图:
2.3 花型控制端输出电路
主要由加法器和一些基本门电路组成。AB从00-11计数,分别对应三个花型和三个花型循环播放,再结合前面计数电路单元中的第二个芯片A端输出0/1以及循环播放时控制花型的计数器芯片,可以画出对应的真值表:
QA(计数电路) QB QA (U3) QB QA (U63) |
A B (多路选择器) |
0 0 0 0 0 |
0 0 |
1 0 0 0 0 |
1 1 |
d 0 1 0 0 |
0 1 |
d 1 0 0 0 |
1 0 |
0 1 1 0 1 |
0 0 |
1 1 1 0 1 |
1 1 |
0 1 1 1 0 |
0 1 |
1 1 1 1 1 |
1 0 |
其他 |
d d |
可以画出对应的卡诺图:(这里为了便于区分将输入三个值设为D0 D1 D2,输出仍为A B)
根据上图中AB的式子,在电路中用基本门连接到多路选择器的AB端。
2.4 彩灯显示电路
通过连接对应多路选择器的输出端口,再加一个非门,即可得到灯泡的亮灭情况。
2.5 几个按钮的功能实现
2.5.1 启动按钮
通过控制计数电路单元两片计数器的清零来控制启动。
2.5.2 切换按钮
切换开关一次或点击空格,就相当于输出一次电平,可使计数器进行计数操作。
当到达三个花型循环切换之后,再按一次,三种花型自动循环播放,通过另外一片74192来控制。
当U3计数到3时,U63进1,当记录状态的芯片计数到20时且U63为1时,U63进2,当记录状态计数到10时且U63为2或3时,U63计数。这几个通过基本逻辑门电路来实现。
2.5.3 复位按钮
每个灯泡前面连接着一个与门,只有当复位按钮连接高电平一端时灯泡才能正常显示,当复位按钮连接低电平一端时灯泡全部都熄灭。
3.设计方案
3.1 设计思路
根据老师给出的设计要求,彩灯循环控制器主要是完成10个灯泡的亮灭。由此可想到用74192计数器从0-9计数,可以分别对应每一种花型不同时刻下对应灯泡的亮灭情况。其中花型1较为特殊,需要计数两轮才能完成花型的展示。由于74192芯片的输出对应的是8421编码,可以用7442译码器将计数值输出。由于一共有三种花型,可以通过74153多路选择器来控制花型的切换。
3.2 设计框图及原理
彩灯循环控制器的结构框图:
该彩灯循环控制器的原理是:由方波信号发生器产生稳定的高频脉冲信号,作为计时基准。用两个计数器来实现电路计数,第一个花型需要20个状态来展示彩灯,故需要两片计数器,而另外两种花型只需要10个状态来实现花型,不考虑第二片计数器的位数。计数器的实时状态同时输出到数码管。接下来由译码器输出对应状态,通过不同的编码电路(主要由与门实现)接到对应的多路选择器。多路选择器的控制端由花型控制电路来控制,花型控制电路主要由两个计数器的低两位实现0-4计数和0-3计数,再结合前面计数电路的第二个芯片的输出值进行逻辑电路的设计完成选择器控制端相对应的值。由于74153有两个输出值,故本次一共需要5个多路选择器输出到对应的彩灯显示电路。
3.3 流程图
3.4 总电路图
总电路如图所示: