用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 总电路图
总电路如图所示:
用Multisim实现彩灯循环控制器的更多相关文章
- JMeter循环控制器循环次数使用变量控制注意事项
1.进入循环控制器之前变量要有值: 2.BeanShell处理文件,读取行数,赋值给变量,要有相应的Sampler,不然脚本不会运行. 对于单个线程来说,假如设置了循环2次,线程启动后,运行结束,此时 ...
- Jmeter(七)_if控制器+循环控制器+计数器控制接口分支
最近查阅了一下网上关于if控制器的文章,大同小异,几乎找不到原创,于是决定自己写一篇 下午测试接口,遇到了一个审核的流程.逻辑很简单,就是审核不通过之后返回去继续修改再提交,然后再审核,直到通过为止. ...
- jmeter循环控制器加jdbc req结果配合组合参数遍历
jdbc请求:jdbc sampler 保存结果中三个变量名 循环控制器:xhkzq 的循环次数填写:${其中一个变量名_#} 循环控制器里面:http sampler ,前置处理器,取消c ...
- Jmeter(三十七)循环控制器+交替控制器+事务控制器 完美实现接口字段参数化校验
我们在做接口自动化的时候,常常因为无法灵活的的校验接口字段而烦恼.不能自动校验接口字段的脚本,也就不能称之为接口自动化.因此,我设计了一套组合式的控制器,可以完美的解决这个问题 1:首先我们需要在本地 ...
- JMeter 逻辑控制之While循环控制器(While Controller)
逻辑控制之While循环控制器(While Controller) by:授客 QQ:1033553122 测试环境 apache-jmeter-2.13 1. 添加While Control ...
- 【Jmeter】if控制器+循环控制器+计数器,控制接口分支
但是我不想这么做,接口只想写一次,让循环控制器和if控制器去判断接口,执行我想要的分支.这里遇到了一个问题,if控制器通过什么去判断接下来的分支?我引入了一个计数器的概念.起始值为0,每次循环加1,将 ...
- Jmeter 中多线程并发和循环控制器
今天遇到一个场景, 给一个手机号发送短信验证码,通过正确输入短信验证码即登录并获得token,进行其他操作. 短信验证码是4位,即9999个组合, 接口没有对验证次数做校验,所以可以一直一直尝试通过验 ...
- if控制器+循环控制器+计数器,控制接口分支
但是我不想这么做,接口只想写一次,让循环控制器和if控制器去判断接口,执行我想要的分支.这里遇到了一个问题,if控制器通过什么去判断接下来的分支?我引入了一个计数器的概念.起始值为0,每次循环加1,将 ...
- Jmeter 逻辑控制器 之 循环控制器
今天和大家分享下循环控制器的使用. 一.认识循环控制器 如下图:新增一个循环控制器 循环控制器的设置界面: 循环次数:永远和自定义次数,这个应该比较好理解. 二.使用循环控制器 其实大家对Jmeter ...
随机推荐
- 基于事件驱动机制,在Service Mesh中进行消息传递的探讨
翻译 | 宋松 原文 | https://www.infoq.com/articles/service-mesh-event-driven-messaging 关键点 当前流行的Service Mes ...
- 51nod1127【尺取】
思路: 尺取,写挫了,debug了半天. #include <bits/stdc++.h> using namespace std; typedef long long LL; const ...
- Visual Studio 的Build Event 使用
rmdir Configuration mkdir Configuration Copy "$(ProjectDir)Configuration\Spec.config" &quo ...
- python 类型转换总结
一.数字和字符串 >>> ord('a') # ascii码 97 >>> chr(97) 'a' >>> >>> hex(16 ...
- P1229-神秘岛
神秘岛 描述 Description FireDancer来到一个神秘岛,他要从岛的西头到东头然后在东头的码头离开.可是当他走了一次后,发现这个岛的景色非常的美丽,于是他从东头的传送门传到了西头,换了 ...
- 树链剖分学习笔记 By cellur925
先%一发机房各路祖传树剖大师%%%. 近来总有人向我安利树剖求LCA,然鹅我还是最爱树上倍增.然鹅又发现近年一些题目(如天天爱跑步.运输计划等在树上进行操作的题目),我有把树转化为一条链求解的思路,但 ...
- UltraEdit配置C++开发环境
1.下载UltraEdit软件安装 2.下载MinGW库安装 3.在系统设置环境变量,在path里加上你的MinGW\bin目录即可. 4.进入UltraEdit软件进行如下配置: 菜单栏---高级- ...
- asp,php,jsp 不缓存网页的办法
ASP实例源码浏览次数:4 一般地,我们要查看Internet 网上的一个网页,那么 当您第一次访问这个网页的时候, 系统首先要将这个网页下载到您的本地计算机 的一个临时文件夹中进行缓存, 当在一定的 ...
- LightOJ 1235 - Coin Change (IV) (折半枚举)
题目链接: http://www.lightoj.com/volume_showproblem.php?problem=1235 题目描述: 给出n个硬币,每种硬币最多使用两次,问能否组成K面值? 解 ...
- Dima and Magic Guitar CodeForces - 366E
Dima and Magic Guitar CodeForces - 366E 题意: http://blog.csdn.net/u011026968/article/details/38716425 ...