化繁为简:用卡诺图设计数码管的“学号滚动显示”逻辑电路
前两篇分别搞定了三角波信号源和并行ADC,LED灯已经能随着电压变化从000滚到111了。但说实话,三个小灯亮来亮去看着有点单调。课程设计的真正挑战在后面——用七段数码管把学号后四位像电子屏一样滚动显示出来,而且还要正着放一遍、倒着放一遍。
这就不再是单纯“搭电路”了,而是正儿八经的数字逻辑设计。真值表、卡诺图、最简表达式、与非门实现,数电课本上的东西轮番上阵,烧脑程度直接上了一个台阶。
任务回顾:数码管到底要显示什么?
在整体系统里,数码管承接了ADC三位编码的输出,要实现两个显示功能:
-
点划规律亮灭:当ADC输出从000到111依次变化时,数码管的8段按a→b→c→d→e→f→g→h的顺序逐个点亮;当编码从111降回000时,则按 h→g→f→e→d→c→b→a 的顺序逐个熄灭。
-
学号后四位显示:在三角波的一个完整周期(上升+下降)内,动态循环显示学号后四位数字序列。以学号后四位0323为例,一个三角波周期内的显示效果应该是:0.3.2.3- -3.2.3.0。也就是说,上升段顺次显示“0.3.2.3-”,下降段逆序显示“-3.2.3.0”。
这两个任务本质上就是为每一组输入编码(000~111)设计对应的输出(8 段亮灭状态),然后用与非门实现这个映射关系。
真值表:从“显示需求”到“逻辑信号”的第一步
点划规律亮灭
这个任务比较简单。我们只是让8段灯管按顺序逐个亮起来。对应的真值表如下:

这其实就是一个3-8译码器的功能——每一组输入对应唯一一段输出。直接用CD4532加一片3-8线译码器(如 74LS138)就能实现,但我们当时的课设要求用74LS00与非门搭,所以同样要走卡诺图化简流程。
不过这个任务的逻辑确实太简单了,每段只对应一组唯一的输入编码,表达式就是各段对应输入的与项。三片74LS00就能搞定。
学号后四位显示(任务五)
这才是真正的重头戏。学号后四位0323,在一个三角波周期内显示“0.3.2.3- -3.2.3.0”。ADC输出3位编码(CBA)在000~111之间有8个状态,正好对应8个显示内容:

(注:这里的字模定义按七段数码管标准——数字0需点亮 a、b、c、d、e、f(无 g);数字2需点亮 a、b、d、e、g;数字3需点亮 a、b、c、d、g;小数点“.”对应h段;横线“-”对应g段。)
根据这个对应关系,写出每段灯管在 8 种输入下的状态,就得到了完整的真值表:

有了这张真值表,接下来的工作就是对 a 到 h 每一段分别做卡诺图化简,写出最简逻辑表达式。
卡诺图化简:数字逻辑的“解谜游戏”
有了真值表,每一段(a~h)都能写出一套标准的与或表达式。但直接按最小项之和去搭电路,需要的门太多了。这时数电课的经典工具——卡诺图,就派上用场了。
以三段输入C、B、A为变量,对每一段灯管画卡诺图。


、
整个推导过程核心工作就是这一套——列真值表、填卡诺图、合并最小项、写表达式。八个段走下来,基本把组合逻辑设计的要领摸透了。
根据上述真值表和卡诺图得到每个字母的逻辑表达式,使用六片74LS00搭建电路
Multisim 仿真验证
逻辑设计完成后,先在 Multisim 里搭一遍验证功能。
将 ADC 的输出C、B、A接入组合逻辑电路,输出接七段数码管。运行仿真,设计图如图所示,设计图分上下两部分,下半部分是对应七段数码管abcdefgh点划显示,上半部分是数码管依次显示 0.3.2.3- -3.2.3.0。

从上到下依次对应七段数码管abcdefgh(逻辑分析仪替代现象)

依次显示0.3.2.3- -3.2.3.0(逻辑分析仪替代现象)

仿真完美通过的那一刻,我和队友对视一笑——最烧脑的逻辑设计部分,纸上推演全部正确。
系统联调的“意外”
把仿真电路搬到面包板上之后,数码管的大部分段都能按照预期亮灭,但个别段出现了闪烁。排查一圈发现两个问题:
一是接线接触不良。面包板的插孔经过反复插拔之后容易松动,尤其是地线和电源线,一旦接触电阻变大,对应段的电平就会不稳。后来用万用表一个一个节点量导通,重新紧了所有松动的线。
二是与非门驱动能力问题。74LS00的输出驱动电流有限,而七段数码管是多段同时点亮的。在显示数字0的时候,a、b、c、d、e、f 六段同时亮,段电流加起来超出了与非门的驱动极限,导致整体亮度下降甚至个别段“虚亮”。由于时间紧,我们最后选择降低数码管的供电电压(串电阻限流),虽然亮度有所妥协,但稳定性好了很多。
小结与感悟
做完这个部分,我对组合数字逻辑设计的体会深入了不少:
-
真值表和卡诺图是组合逻辑设计的基本功,不管设计多复杂的功能,先把真值表列清楚,后面化简和实现就有了稳固的出发点。
-
卡诺图化简需要细心和耐心。三位变量还好,四变量以上的卡诺图画法和简化技巧更复杂。课堂上学这些方法的时候觉得挺抽象,动手实践一次之后就刻在脑子里了。
-
理论表达式到实际电路还有一道坎。与非门的型号、引脚排列、驱动能力和扇入扇出系数,这些都是真值表里体现不出来的现实约束。
-
没有单片机的电路设计,虽然看起来“笨”,但对于理解计算机硬件最底层的工作方式帮助极大。每一个输出都是由逻辑门实实在在地“算”出来的,那种确定性有一种独特的美感。
下一篇,也是这个系列的最后一篇,我会把这整个课程设计从面包板搬到嘉立创 EDA 上,聊聊第一次画双面 PCB 的完整流程和踩过的坑。

- 点赞
- 收藏
- 关注作者
评论(0)