# 前言

proteus 玩嗨了,打算记录一下这次电子电路设计的思路与出现问题。

之前都是看着已经有的电路图依葫芦画瓢,但这次是自己第一次通过独立思考,没有参照已有的电路图(找半天没找到 doge),只通过之前实验中对元器件使用的经验自己设计出来的电路图,成就感满满(doge

不得不说,仿真就是比学校实验室里的电路实验箱好用,不仅是不用到处在各个试验台抽屉里翻箱倒柜找芯片,更是不用担心你千辛万苦从旮旯角里翻出的芯片是坏的😅

“你永远不知道你的下一个芯片是好的还是坏的,除非你已经完成了线路连接”

最致命的是,不仅是芯片的损坏会影响你的实验效果,线材线芯损坏,接口不良,试验箱元器件损坏…… 每一个都可以折磨我😅

然而仿真就不用担心这些问题,我只需要专注于设计即可

# 正文

新手设计,就没有对拐角进行处理了

本次实验使用了 7SEG-BCD(数显管),74LS192(十进制计数器),CLOCK(时钟信号)/SW-SPDT(单刀双掷开关)

本来还用了个 74LS00(与非门),一开始以为他和 161 一样是十六进制计数器😂,下面是错误设计(虽然功能上也是同样效果)

错误设计

下面才是正确设计

正确设计

# 设计

7SEG-BCD 接受 8421 码并对其进行显示,刚好 74LS192 的输出也是 8421 码,不用我自己再译码了。

两个 74LS192 作为计数器进行计数,U2 操作个位,U1 操作十位。

下面是 74LS192 的功能表

74LS192功能表

P0,P1,P2,P3 对应 15,1,10,9 管脚,作为数据输入端,Q0,Q1,Q2,Q3 对应 3,2,6,7 管脚,作为计数器输出端,CPuCP_{u} 为加计数端,CPDCP_{D} 为减计数端,PL\overline{PL} 为置数端,MR 为清零端,TCuTC_{u} 为非同步进位输出端,TCDTC_{D} 为非同步借位输出端。

由功能表可以得,当 MR 为低电平,PL\overline{PL}CPDCP_{D} 为高电平,74LS192 进入加计数模式,此时当CPuCP_{u} 由低电平向高电平拉升时(图中两个空白处为向上拉升),计数器加一。

当计数器达到 “10” 后进行进位,计数器清零,非同步进位输出端TCuTC_{u} 在计数器为 “9” 时随着CPuCP_{u} 的拉低而拉低,进位后重新拉升为高电平。

因此这里将TCuTC_{u} 作为十位计数器CPuCP_{u} 的输入端,当出现进位时控制十位的计数器计数加一。

如果需要手动清零功能,可以将两个计数器的 MR 端连接到一个单刀双置开关,当需要清零时送入高电平,正常工作时接地。

# 设计中出现的问题

首先就是多余的与非门,我一开始以为他和 161 一样是 16 进制,需要手动设计进位控制,因此挂了两个与非门进行进位控制,当需要进位时拉低置位端进行清零。

其次就是当我发现直接将与非门的拉低信号作为十位的加计数端会导致十位无法正常进位,排查后发现是由于与非门拉低电平后个位计数器完成置位,与非门瞬间拉高电平,导致十位的计数器来不及反应,因此进位失败。