minecraft红石吧 关注:8,441贴子:43,301
  • 47回复贴,共1

【红石数电番外篇(二)】4位二进制转十进制数译码器

只看楼主收藏回复

单个模块展示镇楼(楼主又来秀光影了


IP属地:上海1楼2014-11-30 20:30回复
    前段时间楼主做了二进制的加法器的教程,相信许多人原本就知道如何做了,也有人从教程中学会了做法。但是虽然我们知道怎么做二进制的加法器了,但是在计算完成以后,我们要怎么读取计算结果呢,难道要百度一下进制转换器来验算计算结果是否正确吗? 也许我们能轻易读取10以内的二进制数,但是当你要作为一个作品给不懂二进制的人看或者使用的时候,对方如何知道结果正确呢?
    那么本教程将讲到如何制作将二进制数转换为十进制数的【译码器】


    IP属地:上海2楼2014-11-30 20:34
    收起回复
      首先线建造一个这样的底座,这是译码器的信号传输核心。总共4条线,10格输出(这里LZ不知道为啥多搞了2组,大家在做的时候还是做10排)。中间隔一格距离,一个红石线隔一个中继器来连接。

      这样的连接方式是最节省延迟的一种做法,如此一来只要拉下左边的4个拉杆,4条线上的所有方块都将被充能。

      换到这个角度来开始我们的制作。接下来我们要进行译码的做法。

      为什么是10组呢,就是因为我们的显示器支持的位数是0~9也就是10位数字,所以我们就将4位的二进制数转为0~9的十进制数来供七段数码管的输入使用。 那么我们需要的就是从0000~1001之间的十个4位二进制数。
      而实际上4位的二进制数有0000~1111【15】这16个数字,但是对于我们的显示器来说后6个数字是没有用处的,0000~1001也被称之为BCD码【二进制形式的十进制数】 我们这次实际要做的也就是BCD转十进制数。
      BCD转十进制数译码器总共有10个输出,分别代表0~9。有4个输入,代表一个4位的二进制BCD码,你输入一个BCD码例如1000,只会有唯一的一个输出会亮起。(没有任何输入的开启状态译码器的默认输出为0,因为没有输入就相当于0000)
      我们可以看到这里4个方块一排就是代表一个十进制数,我们要如何做到我们输入一个BCD码就指向10组里唯一的一个呢? 我们先要运用到或非门(将或门的真值表取反,也就是只有不输入才输出,只要有输入就不输出)。可以这样想,只有4条线都满足条件的时候,就输出。

      这里上下两张图我们要制作0000→0的转码,我们利用两个非门来将红石信号向上传递【这里的意思就是两个非门将红石信号反转了一次又反转一次就相当于没有反转而是直接向上传递了一格,如上下两图所示。

      在上面铺上方块和红石,这就把4条线的输出给整合在了一起。

      再在旁边侧面插上红石火把,这就是0的最终输出了。只有4个红石火把的输出都为0,输出才会亮起来。

      可以看到我按下右边第一个拉杆,顶部的红石线就亮起来了,因为那一条线的输出变成了1,所以最终输出变成了0。


      IP属地:上海3楼2014-11-30 21:12
      回复
        晚上没有人啊


        IP属地:云南来自iPhone客户端4楼2014-11-30 21:30
        收起回复
          求光影mod包,可以解压后直接放到mods文件夹里的


          IP属地:四川来自Android客户端5楼2014-11-30 22:09
          收起回复
            还不更,信不信我删贴


            IP属地:云南来自iPhone客户端6楼2014-12-02 17:12
            收起回复
              LZ回来更啦。。。。
              简直忙爆了QAQ 作业没有的时候很少,一来就是瞬间爆炸,LZ已经熬了一整晚上了。
              这就来继续更新。 接之前的↓
              我们来开始做0001→1的译码部分。 我们根据0000→0的思路来构思,只有当最终顶部的红石线熄灭时,侧面的红石火把才会亮起来,而现在4条线中的第四条处于充能状态,也就是下图方块上直接插上红石火把的那条线路。
              于是思路就是这样的,前三条和0000时的做法相同,使用两个非门将信号直接传递到顶部,而第三条则要用一个非门将信号反转,使得第四条线路有信号变为无信号,使或非门的四条输入【四条向上传输的信号】都为0,→最终输出1 也就是将0001译为1了。
              下图中我们前三条依旧先在侧面插上红石火把,以便制作第二个非门,而第四条则直接在方块上方插上红石火把将信号反转并传输到顶部。

              前三条的第二个非门做好,将信号直接向上传输。

              铺上方块和红石线,侧面插上红石火把,我们可以看到红石火把亮了起来【并且只有在4条线的输入是0001的时候才会亮(或非门的原理)】

              接下来我们已经得知了原理,就如法炮制,在每一个1上直接插上红石火把,在每一个0的方块侧面插上红石火把,如下图所示。
              0010【2】
              0011【3】
              0100【4】
              0101【5】
              0110【6】
              0111【7】
              1000【8】
              1001【9】



              这上下两图就是在所有的0上再做一个非门【这里LZ在做的时候漏做了两个非门,有没有人能发现呀
              全部铺上顶部的方块。

              全部铺上红石线,侧面插上红石火把。

              这里我们可以发现,我们的拉杆输入目前是0010,我们在做的时候应该是前两条和第四条线用双非门向上传输,而第三条用一个非门直接反转上传。 现在只有代表二的第三个红石火把亮起来了,工作正常。【第三位不是3哦,因为我们做的是0~9的译码器,因此第一位是0,第二位是1,以此类推】


              IP属地:上海7楼2014-12-02 23:26
              回复
                这一楼我来教大家如何将译码器接上显示屏把,大家一定能联想到了——显示屏上编码完成的0~9的输入端与译码器上的0~9的输出是正好可以对接上的哦~,于是我们先在我们的译码器上方建造一个显示器!注意要把显示器下方的四条线和译码器的四条输入线对准,上下高度差1格。

                侧面看一下,0~9的每一位都正好对上了哦。

                我们将译码器的输出端进行修改,拆掉原来的红石火把,并且加长一格距离的红石线,在显示器输入方块的下方空一格的位置放置一个方块。

                铺上红石线,插上红石火把。 如此一来,只要译码器的输出亮起来,就起到了拉杆强充能显示器输入端的作用,就完成了译码器与显示器的连接。【这张图可以看到输入信号是1001,所以0000的位置没有输出,远处的那个火把可以看到是亮着的】

                我们将信号调为0000,译码器输出,相当于对显示屏0的位置进行了输入。

                全部改成0000→0的这种连接方式。

                然后我们将4根输入线引出来,以方便观察直观的显示效果。


                输入0001,,显示屏显示1【正确】

                输入0111,显示屏显示7【正确】
                那么到了这里,本篇教程也就到此结束啦,楼下会附上存档。内含:
                译码器单个模块
                译码器与显示器连接完成的模块。


                IP属地:上海8楼2014-12-02 23:46
                回复
                  链接: http://pan.baidu.com/s/1o6umGiA 密码: xh88
                  版本建议1.6.4以上吧 不过应该来说只要有中继器和红石火把还有活塞就没问题╮(╯▽╰)╭


                  IP属地:上海9楼2014-12-02 23:58
                  回复
                    另外最后附上福利
                    这是LZ做作业的时候忙里偷闲画的。 万用胖次大法。
                    @5听过 @9181015杨润峰 @erwin_yang @RSon肉松 大召唤术


                    IP属地:上海10楼2014-12-03 00:01
                    收起回复
                      为何不在红石电路吧发


                      IP属地:上海来自Android客户端11楼2014-12-09 21:03
                      收起回复
                        作为一个渣,表示真心看不懂


                        IP属地:湖北12楼2014-12-30 22:34
                        收起回复
                          ====================================本帖禁止回====================================
                          有疑问者可以去http://tieba.baidu.com/p/3540989704【LZ的教程集合贴】里问


                          IP属地:上海13楼2015-02-09 17:44
                          回复
                            怎么做两位的译码器


                            IP属地:陕西来自手机贴吧14楼2019-02-24 16:13
                            回复
                              借个楼 宣传一下我们生电服,交流群199698824


                              IP属地:北京来自iPhone客户端15楼2022-11-30 03:33
                              回复