异星工厂吧 关注:63,695贴子:414,777
  • 9回复贴,共1

【电路展示】24小时制计时时钟

取消只看楼主收藏回复

【摘要】对游戏内的一天按24小时制计时并显示,使用极速传送带作为计时器,以太阳能停止发电作为计时参照,通过灯将时间进行显示。
【关键字】电路;计时;灯
【参考文献】
http://tieba.baidu.com/p/3493117450
http://www.bilibili.com/video/av4568618/
【本文一些要用到的数据】
24小时=86400秒,86400/2880=30
一天时间,极速传送带计时器结果为2815(-3~+3)
一天中(0~1),太阳能在0.45~0.55段完全不发电,相当于在22:48时停止发电


ezgif.com-crop.gif
大小:3.19MB下载:24次转存:5次
文件已失效
IP属地:上海1楼2017-01-11 13:27回复
    第一节,电路功能简述



    IP属地:上海3楼2017-01-11 14:00
    回复
      2026-01-22 22:14:24
      广告
      不感兴趣
      开通SVIP免广告
      停电检测单元:
      使用两个运算器对极速传送带进行计数,一个运算器接入总电网,另一个使用太阳能单独供电。将两个计数器的值进行比较,如果电网运算器的值大于太阳能运算器的值,说明太阳能停电,运算器没有工作,此时比较器发出信号“L,1”表示停电。再对计数器添加重置功能,并将比较器发出的持续信号转化为脉冲信号,实现功能。


      IP属地:上海4楼2017-01-11 14:11
      收起回复
        计数区:将极速传送带建设为循环运输,内侧放入一个物品,物品每移动半圈计数器+1,。上计数器记录一天移动多少个半圈,下计数器用于显示时间,记录半圈的数量+误差补偿值。在接收到停电信号时,两个计数器都会被重置。


        IP属地:上海5楼2017-01-11 14:21
        回复
          计时误差补偿:
          设有一个记数器,在接收到停电信号时,记录上计数器的值(信号:蓝带),用2880-该值(2880为理论一天应有半圈数量),得到应补偿多少蓝带数量(信号T),2880/T得到平均每过多少蓝带补偿一个蓝带(信号:S),当前计数器值/S,得到当前时间应补偿第几个蓝带(信号:R),最后添加状态转换,信号R每变动一次,输出一个脉冲信号给下计数器。在即将停电时,记数器会重置。


          IP属地:上海6楼2017-01-11 14:37
          回复
            数值转换区:
            2815向上取整为2880,86400/2880=30,可以知道,极速传送带每转半圈相当于30秒.将下计数器的值除以二就是当前的分钟数。由于计数器重置将显示00:00,但理论时间应该是22:48,对分钟数进行偏移使符合理论,最后将小时数计算出来,再将分钟数和小时数分解为个位和十位输出到显示部分。(为了方便可以选择每转一圈计一次数,只需要改几个常数即可)


            IP属地:上海7楼2017-01-11 15:47
            回复
              第二节,核心功能实现详述
              (1)计数器与计数器的重置

              让运算器进行输入输入的循环就很简单的实现对脉冲信号的计数。重置的原理是两个相同类型的信号会在电路中相加,将计数器的信号乘以-1输入到计数器中,计数器的值就会相加成0,完成重置。用一个比较器控制何时重置,当接收到(L,1)信号时,比较器才允许负值通过,对计数器重置。
              特别要注意的是,输入的重置信号必须是一个脉冲信号,且不能大于传送带发出的脉冲,电路的处理是有顺序的。
              还有另一种实现方法,先将重置信号乘以-1,然后计数器的信号乘以这个值。原理是一样的,但不如我上面说那个适用性好。由于这个方法是我先想出来的,快造完了发现这个好一些的方法,所以电路中有一个重置没来得及换使用了这个。


              IP属地:上海16楼2017-01-12 23:51
              回复
                (2)持续转脉冲与变动转脉冲

                断电检查功能区发出的断电信号(信号:L)是持续信号,而对计数器重置需要脉冲信号,这需要进行转化。转化的原理是电信号的时差。持续信号产生时“兵分两路”,一路率先到达运算器B,运算器B输出(L,1),紧接着另一路(L,1)经由运算器A变为(L,-1)迟来一点,然后两路信号抵消变为无。这就使运算器B发出的信号非常短暂,理论上为1tick。可想而知,当持续信号结束时,由于(L,-1)信号慢一步,它也会被输出,因此在前面加了一个比较器,只允许(L,1)信号通过。
                显然这个方法也适合将信号的变动转换为脉冲信号,由于转换的脉冲信号正负交替,需要使用运算器将负转换为正。
                实际上,运算器B和比较器不是必须的,可以根据情况去掉。


                IP属地:上海17楼2017-01-13 00:38
                收起回复
                  2026-01-22 22:08:24
                  广告
                  不感兴趣
                  开通SVIP免广告
                  (3)分钟数偏移

                  22:48是一天的第1368分钟,将计数器值转换为分钟数是1440,因此需要减去72分钟。单纯的减去72分钟数就成了-72~1368,理论上-72~0应该显示为1368~1440。右边的运算器用于输出常数1440。(设计电路时经常调整,就用运算器输出常数了)减去72后,输入到比较器,如果分钟数(信号:M)小于0,允许1440通过(信号:Z),在运算器中加上1440,就使-72~0转换为1368~1440。如果M大于0则经过运算器不会有变化。
                  之后将分钟数转换成小时数个位十位什么的就比较简单了。


                  IP属地:上海18楼2017-01-13 01:26
                  回复
                    (4)数的显示

                    我使用简单的数字显示方式,实现将电灯分成7个区域,每个区域用一种信号控制,接收到该信号时亮灯。
                    以①区域的控制为例,可以知道,在显示数字2、3、5、6、7、8、9、0时①区域应是亮的,反之,在显示数字1、4时不亮。比较器A的作用是输出信号①(可换成常量箱),比较器B、C的作用是在N为1和4时输出F,使信号①不输出。
                    数字的显示还是很简单的。


                    IP属地:上海19楼2017-01-13 02:03
                    回复