【电路分享】又来水一贴
异星工厂吧
全部回复
仅看楼主
level 11
发一个诸多大佬做过的电路,计时器显示屏
2020年03月19日 14点03分 1
level 11
在说电路之前,我来说一下显示屏设置。
将显示屏分为7个单元,分别为A,B,C,D,E,F,G
设置:当A,B……=1时,灯亮
具体如图所示
2020年03月19日 14点03分 2
这不对劲,还有6个边角点呢[滑稽][滑稽]
2020年03月20日 00点03分
@机械式小渣渣🎏 这个啊,直接再统计一下六个点的二进制
2020年03月20日 01点03分
level 11
说完显示屏后,再仔细说一下电路吧
2020年03月19日 14点03分 3
level 11
老规矩,讲电路先说原理作用,让我们知道设计电路的目的所在
原理:利用二进制数,截取对应位的数值,再发送到显示屏
我知道你们看不懂这是什么意思,但是这是核心所在。
接下来我来细讲
2020年03月19日 14点03分 4
level 11
首先,我们来分析一下每个数字所对应的显示屏各个单元的工作状态。
我们之前设置了当输入对应数值时(如:A=1)才允许对应单元亮灯
所以,我们可以知道当对应单元数值为1时,工作;数值为0时,不工作(这就是很明显的二进制了)
举例:我要显示屏显示数字0
即:显示屏单元A、B、C、F、G=1;D=0
那么,我们就可以根据这个例子推广到所有数字(0-9)
具体如图
2020年03月19日 14点03分 5
level 11
注意我上表的数字排序是9到0,这个顺序不能改变的
2020年03月19日 14点03分 6
level 11
好,接着说上面表格
我们先将其每个单元对应不同数字的0/1状态进行统计,变成一个十位的二进制数
统计规则:数字9 各显示屏单元对应的0/1状态分别放在最左边的第一位;然后以此类推,数字0 对应的状态放在最右边
通过这种放法,我们可以得出一组十位的二进制数。从右往左数,数字0为第一位,数字1为第2位……数字9为第10位
2020年03月19日 14点03分 9
level 11
好了,让我们重新回顾一下原理
原理:利用二进制数,截取对应位的数值,再发送到显示屏
二进制部分已经弄完了,接下来便是截取对应位
什么是截取对应位呢?
我拿A所对应的二进制举例:A=1111101101 B
比如说我要显示数字7,那么A的工作状态该怎么通过这组数据快速找出来呢?
我上面其实提到过的,直接通过数这个二进制数的位数。
数字7所对应的位数是第8位,=1
同理,数字1所对应的是第2位,=0
以此类推其他数字和其他显示屏单元
所以,这便是电路要做的事情,截取对应数字所对应的工作状态(0/1)
2020年03月19日 14点03分 10
level 11
那么,如何通过电路截取对应位的数值呢?
截取对应的值,说白了就是剔除其他不相干的数(就是消去这个位的左边和右边所有的数)
不知道大家看前面发现一个规律没?那就是想要显示的数字,在二进制数中,数字所对应的位永远比数字大1,这是很容易就能找出来的规律。(这也就是我上面提醒你们数字排序9-0顺序不允许改变的原因)
所以,根据这个特性,我们可以利用运算器右移功能,先消去对应位的右边数值
具体举例:显示数字5,A=1111101101 B
运算器设置(具体如图):将数据A执行右移5的命令
结果:A=11111B
由于显示结的果为十进制,所以A=31D
由于A对应第6位,所以刚好消去其右边的数值
2020年03月19日 15点03分 11
level 11
接下来便是消去左边的数值
我这儿直接采用余2进行消去左边数据(具体如图)
那么为什么这样能够实现呢?
这是由于二进制的特性:逢二进一,所以除以二的余数必然是最右边的那一位
如果无法理解,我拿十进制数举个例:数据12345D,以及 进制数10(十进制逢十进一).
12345D%10D=5D,这种小学计算不用我教了吧
算了,我还是写明白一点吧
12345D=1*10^4+2*10^3
+3
*10^2+4*10^1+5*10^0
所以12345D/10D=1*10^3+2*10^2+3*10^1+4*10^0,再余下一个5D无法被10整除
所以,二进制同理,除以二,会余下最后一位无法除尽
2020年03月19日 15点03分 12
level 11
然鹅,由于游戏的特性,我上一个帖子说到过
游戏里所有你输入的数值都是默认为十进制数,但是在运算器进行数据运算时,却会把数据变为二进制再进行计算.
所有,由于这个特性,我们需要把所有显示器单元的二进制数变为十进制数,再存储到常量箱上
这也是我二楼图中有十进制这一栏的原因
2020年03月19日 15点03分 13
level 11
好了,到此打住!
我只想水一帖
2020年03月19日 15点03分 14
level 10
学习了,搞了个int32全范围数字显示(含负数)
2020年03月19日 15点03分 16
搞负数那是真牛皮,所以游戏的负数是翻转+1吗?
2020年03月19日 16点03分
@不羁的迷途 是,但是做个不需要知道,关键是知道负数进行%时的值,以及在你的设计基础上加入把正负值都转成正值的电路
2020年03月19日 16点03分
@lamandy93 厉害
2020年03月19日 16点03分
level 7
b站那个视频是不是你发的,看着一样的原理,表格都一样[吐舌][吐舌]
2020年03月19日 16点03分 17

2020年03月19日 23点03分
@不羁的迷途 我也从你这里偷学了一手哈哈。
2020年03月20日 11点03分
@愚蠢的雄鹰 出视频就是为了传出去,感觉现在基础电路方面b站挺多的,但是逻辑电路方面还是太少了
2020年03月20日 11点03分
level 10
太长不看[滑稽]
2020年03月19日 21点03分 18
[滑稽][滑稽]
2020年03月19日 23点03分
1 2 尾页