化繁为简:用卡诺图设计数码管的“学号滚动显示”逻辑电路

举报
JN-liu 发表于 2026/04/24 09:51:27 2026/04/24
【摘要】 前两篇分别搞定了三角波信号源和并行ADC,LED灯已经能随着电压变化从000滚到111了。但说实话,三个小灯亮来亮去看着有点单调。课程设计的真正挑战在后面——用七段数码管把学号后四位像电子屏一样滚动显示出来,而且还要正着放一遍、倒着放一遍。这就不再是单纯“搭电路”了,而是正儿八经的数字逻辑设计。真值表、卡诺图、最简表达式、与非门实现,数电课本上的东西轮番上阵,烧脑程度直接上了一个台阶。任务回...

前两篇分别搞定了三角波信号源和并行ADC,LED灯已经能随着电压变化从000滚到111了。但说实话,三个小灯亮来亮去看着有点单调。课程设计的真正挑战在后面——用七段数码管把学号后四位像电子屏一样滚动显示出来,而且还要正着放一遍、倒着放一遍。

这就不再是单纯“搭电路”了,而是正儿八经的数字逻辑设计。真值表、卡诺图、最简表达式、与非门实现,数电课本上的东西轮番上阵,烧脑程度直接上了一个台阶。

任务回顾:数码管到底要显示什么?

在整体系统里,数码管承接了ADC三位编码的输出,要实现两个显示功能:

  1. 点划规律亮灭:当ADC输出从000到111依次变化时,数码管的8段按a→b→c→d→e→f→g→h的顺序逐个点亮;当编码从111降回000时,则按 h→g→f→e→d→c→b→a 的顺序逐个熄灭。

  2. 学号后四位显示:在三角波的一个完整周期(上升+下降)内,动态循环显示学号后四位数字序列。以学号后四位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 六段同时亮,段电流加起来超出了与非门的驱动极限,导致整体亮度下降甚至个别段“虚亮”。由于时间紧,我们最后选择降低数码管的供电电压(串电阻限流),虽然亮度有所妥协,但稳定性好了很多。

小结与感悟

做完这个部分,我对组合数字逻辑设计的体会深入了不少:

  1. 真值表和卡诺图是组合逻辑设计的基本功,不管设计多复杂的功能,先把真值表列清楚,后面化简和实现就有了稳固的出发点。

  2. 卡诺图化简需要细心和耐心。三位变量还好,四变量以上的卡诺图画法和简化技巧更复杂。课堂上学这些方法的时候觉得挺抽象,动手实践一次之后就刻在脑子里了。

  3. 理论表达式到实际电路还有一道坎。与非门的型号、引脚排列、驱动能力和扇入扇出系数,这些都是真值表里体现不出来的现实约束。

  4. 没有单片机的电路设计,虽然看起来“笨”,但对于理解计算机硬件最底层的工作方式帮助极大。每一个输出都是由逻辑门实实在在地“算”出来的,那种确定性有一种独特的美感。

下一篇,也是这个系列的最后一篇,我会把这整个课程设计从面包板搬到嘉立创 EDA 上,聊聊第一次画双面 PCB 的完整流程和踩过的坑。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。