模拟键盘输入--按钮开关
有了按钮开关, 又有了能够记住状态的电路, 现在就可以考虑改进先前在录入数字方面遇到的问题了.
这个问题是这样的:
普通开关输入另一个数字 在线可互动操作示例
假如已经录入了 3, 现在想变成 2, 那么不但要把 2 的位置置于高电平, 还要不能忘记把 3 的位置重新置回低电平.
这样的操作略显麻烦. 如果能像数字小键盘那般输入数字就方便了, 想输入 3, 按一下 3 即可, 想输入 2, 按一下 2 即可.
自然, 第一步是调整开关类型, 先把开关从普通开关变成按钮开关. 这个很容易办到.
但这样一来, 除非把按钮按住不放, 否则译码输出方面就不能保持其状态. 但我们已经知道了可以通过反馈维持状态, 因此下一步的改造就是接入反馈回路:
带反馈的数字输入 在线可互动操作示例
如此一来, 状态保持的问题又解决了.
控制反馈回路
当然, 现在依然还是有问题的, 现在状态不能清零, 随着不停地按各个数字, 最终结果必然是全部输出端都最终处在了高电平.
这显然也是不希望的, 当然我们也有清零的手段, 就是使用一个传输门, 但这样一来, 事情似乎又回到了开始: 你还是得操作两次. 你得先按一下清零, 然后再按下一个数字.
怎么才能简化为一次操作呢? 那么可以考虑能否在按下一个数字的同时把前一个输入的高电平清零呢?
因为无论是按下那个按钮, 我们都能得到一个高电平, 这个高电平是可以被我们利用的, 比如用它来控制并切断另一个反馈回路, 这完全是可能的.
让我们考虑一个相对简单的情形, 就两个数字 0 和 1, 用一上一下两个按钮开关表示, 然后假设现在已经先按了上面开关输入了数字 0 , 所以现在的输出是 10, 右上部的输出处于高电平:
简易反馈示例 在线可互动操作示例
更多数字道理也是一样的, 这里为叙述方便就只考虑两个了, 读者可以自行解决有更多数字的情况.
接下来, 再按下方代表数字 1 的按钮, 那么输出就会变成 11, 现在我们希望在按下数字 1 的同时把先前的高电平清零, 也即希望输出 01 而不是 11.
那么就需要切断第一个高电平的回路, 而这一点可以通过一个非门反向再接入一个 传输门 实现:
简易反馈切断示例 在线可互动操作示例
在没有按下下方按钮时, 输入处在低电平, 经 非门 反向后就是高电平, 使得传输门处在打开状态, 上方的反馈得以维持.
按下下方代表数字 1 的按钮后, 经过非门反向的输出变为低电平, 从而导致传输门截止, 于是反馈被切断, 上方的输出也就清零了, 而下方的输出则因为反馈的存在而维持:
现在, 想要在按下数字 0 后也能同样实现对其它数字的清零, 依法炮制就行了:
简易反馈互相切断示例 在线可互动操作示例
如此, 你拆我的台, 我也拆你的台, 就可以互相实现清零了, 而至此电路也就达成了我们的要求:
更多输出的情况同理.
提示: 你可以使用 多输入与门.
另一种思路
另外的一种清零思路则是考虑从 与门 的另一个输入端上去做文章, 读者可以自行尝试实现下.
这里也给出一个两输出的参考实现:
简易反馈互相切断, 另一种实现示例 在线可互动操作示例
应该说, 这种方式还要更为简单.
更多输出是同理, 读者有兴趣的可以自行尝试实现.