一个由 D 触发器构成的 计数器 示例, 其中 LED 是支持 16 进制的, 电路输出从 0 一直增加到 15(F: 十六进制), 然后循环往复:

由 D 触发器构成的计数器示例

由于 LED 本身的局限, 后面表示 16 进制的字母是大小写混杂的: A, b, C, d, E, F. 代表 10 ~ 15.

另: 此动图只截取了 0 ~ 9, 完整的请参考下述可互动操作的示例.

在线可互动操作的 由 D 触发器构成的计数器示例

D 触发器(D Flip-Flop) 构成的一个 走马灯 示例:

D 触发器(D Flip-Flop)走马灯

在线可互动操作的 D 触发器(D Flip-Flop)走马灯

操作步骤及说明:

  1. 初始状态下, 三个开关均断开, 灯都是熄灭状态;
  2. 闭合开关1, 按一下开关3, 此时第一个灯亮起(此步骤通过手动方式生成一个上升沿脉冲, 从而将一个高电平状态存入第一个触发器内);
  3. 断开开关1. (另: 开关3属于按钮开关, 按完后就会自动断开);
  4. 闭合开关2, 送入时钟信号(clk: clock), 灯就会逐次亮起并循环往复

进一步改进的 3位减法器 示例, 被减数和减数均可以为负数(并能正确显示), 最终运算结果在 -8~7 之间也能正确显示, 超出此范围的将不能正确显示:

被减数和减数均可为负数的 3 位减法器示例

在线可互动操作的 被减数和减数均可为负数的 3 位减法器示例

得益于之前 LED 补码解码显示模块的封装, 使得可以同时显示三个负数, 而界面也不至于过于拥挤及杂乱.

一个简化的 3位减法器 示例, 通过对模块的进一步封装及抽象, 引入了 求补器, 补码LED解码器(其内部封装了求补器及多位选择器) 等模块,从而使得各种细节得以隐藏, 大为减少各种连线:

更为简化的 3 位减法器示例

在线可互动操作的 更为简化的 3 位减法器示例

当然, 由于 circuitjs 本身的一些局限, 比如无法封装一个显示模块(如 LED 七段数码管), 无法使用总线(比如数据总线, 地址总线)等限制, 想要构建更多位的更复杂的电路还是比较麻烦的.

继电器和晶体管作为开关功能上的对比.

如果你觉得晶体管的工作原理不太好理解, 则可以把晶体管的内部想象成一个继电器.

断开状态(控制端低电压)的一个对比:

继电器和晶体管在开关功能上的对比-断开状态

闭合状态(控制端高电压)的一个对比:

继电器和晶体管在开关功能上的对比-开启状态

一个在线可互动操作的演示(点击开关可以改变开闭状态) 继电器和晶体管作为开关功能上的对比

一个利用电磁感应形成的磁力来做间接控制, 一个则是利用了半导体的特性.

尽管底层的实现原理不同, 但从实现间接控制的功能层面去看则是一样的.

继电器还是偏"机械式"的控制, 而晶体管已经是彻底的"电子式"的形态了.