
数字电路实验里三人表决器算是经典中的经典。我前后带过几届学生做这个题目也在自己的工位上用74LS00和74LS20反复搭过好几版。别看它逻辑简单真动手接线的时候坑一点都不少——芯片方向插反、引脚数错、悬空输入导致输出乱跳这些问题我全踩过。这篇就把整个搭建过程从头到尾捋一遍包括真值表怎么推、逻辑表达式怎么化简、芯片怎么选、线怎么接、出了问题怎么查尽量写到你看完就能自己动手做出来。三人表决电路要解决的问题很明确三个人对一件事投票同意的人达到两个或两个以上结果就通过否则不通过。这个规则在现实里到处都是比如董事会表决、评委打分是否晋级、安全联锁里的多传感器确认。用数字电路实现它核心就是把“多数同意”这个逻辑翻译成与、或、非的组合再用现成的逻辑门芯片搭出来。74LS00是四组二输入与非门74LS20是两组四输入与非门这两块芯片配合起来刚好能把三人表决的逻辑做得干净利落。不管你是刚学数字电路的学生还是想带学生做实验的老师或者只是想把课本上的逻辑门真正接一次看看效果这篇内容都能直接拿去用。1. 三人表决电路的逻辑设计与芯片选型思路1.1 从投票规则到真值表先把规则说清楚。三个人每人一个输入用A、B、C表示。同意记作1反对记作0。输出用Y表示通过记作1不通过记作0。规则是“两个及以上同意就通过”那么把所有输入组合列出来一共2的3次方等于8种情况。ABC同意人数Y0000000110010100112110010101211102111131这张表就是整个电路的“需求文档”。后面所有的化简、选芯片、接线都是围绕它来的。我建议你动手之前先把这张表自己在纸上画一遍不要直接抄画的过程能帮你把逻辑关系吃透。从表里能直接看出Y为1的行是第4、6、7、8行对应最小项是ABC、ABC、ABC、ABC。写成最小项之和就是Y ABC ABC ABC ABC这个表达式已经能用了但直接用与门、或门搭需要多个芯片不够经济。接下来要做的是化简。1.2 逻辑化简与表达式变形用卡诺图或者布尔代数都能化简。我用卡诺图快速过一遍。把A、B作为行变量C作为列变量填入Y值A\BC000111100001010111圈组的时候第4行A0,B1,C1和第8行A1,B1,C1可以合并消掉A得到BC。第6行A1,B0,C1和第8行合并消掉B得到AC。第7行A1,B1,C0和第8行合并消掉C得到AB。三个圈合起来Y AB BC AC这就是三人表决电路最经典的表达式意思是“任意两人同意就通过”。这个形式非常直观也最好用与非门实现。为什么选与非门而不是与门加或门因为实际市面上74系列里与非门的型号最全、价格最低、驱动能力也够用。74LS00一块芯片里有四个二输入与非门74LS20有两个四输入与非门。用这两块就能把上面的表达式搭出来不需要额外的非门芯片成本低、接线也清爽。1.3 用与非门实现表达式的推导要把Y AB BC AC用与非门实现得做两次变换。第一次对表达式整体取反再取反Y (AB BC AC)第二次用德摩根定律把里面的或变成与非Y ((AB) · (BC) · (AC))这个形式就很清楚了先用三个二输入与非门分别算出(AB)、(BC)、(AC)再把这三个结果送进一个三输入与非门。但74LS20是四输入与非门多出来的一个输入怎么办把它接高电平接VCC就行四输入与非门当三输入用多出的输入不影响逻辑。这里有个细节要注意74LS20的输入如果悬空在TTL电路里等效于高电平但悬空容易引入干扰实际接线时最好还是明确接到VCC不要图省事让它空着。我见过有人悬空用实验室里勉强能跑但一到稍微有点电磁干扰的环境输出就抖排查半天才发现是悬空输入的问题。2. 74LS00与74LS20芯片引脚功能详解2.1 74LS00引脚图与功能说明74LS00是四组二输入与非门14脚双列直插封装。引脚定义如下引脚功能引脚功能1第一组输入A114电源VCC2第一组输入B113第四组输入B43第一组输出Y112第四组输入A44第二组输入A211第四组输出Y45第二组输入B210第三组输入B36第二组输出Y29第三组输入A37地GND8第三组输出Y3记住一个规律14脚接VCC7脚接地这是74系列14脚芯片的通用规则。芯片缺口朝左时左下角是1脚逆时针数到左上角是14脚。插芯片之前一定要确认方向插反了通电就可能烧芯片。我自己就干过这事一块74LS00冒烟的味道至今记得。74LS00的每组门逻辑是Y (A·B)。也就是说只有两个输入都为1时输出才为0其他情况输出都是1。这个特性在实现表决电路时非常关键因为我们要用它的输出去驱动74LS20。2.2 74LS20引脚图与功能说明74LS20是两组四输入与非门同样是14脚封装但引脚排列和74LS00不同引脚功能引脚功能1第一组输入A114电源VCC2第一组输入B113第二组输入B23第一组空脚NC12第二组输入A24第一组输入C111第二组空脚NC5第一组输入D110第二组输入C26第一组输出Y19第二组输入D27地GND8第二组输出Y2注意74LS20有NC空脚第3脚和第11脚这两个脚内部没有连接接线时不用管它们。第一组门用1、2、4、5脚输入6脚输出第二组门用9、10、12、13脚输入8脚输出。逻辑是Y (A·B·C·D)四个输入全为1时输出才为0。这里有个容易搞混的地方74LS20的输入引脚不是按顺序排的1、2、4、5是一组中间跳过了3脚。我第一次用的时候按顺序数把3脚当成输入接了进去结果输出一直不对查了半天才发现3脚是空脚。所以接线前一定要对着引脚图确认不要凭感觉数。2.3 两块芯片的配合方式整个电路的分工是这样的74LS00负责产生三个二输入与非项(AB)、(BC)、(AC)74LS20负责把这三项再与非一次得到最终输出。具体来说74LS00的三组门分别处理AB、BC、AC剩下的一组门可以不用也可以留着做其他扩展。74LS20用第一组门三个输入接74LS00的三个输出第四个输入接VCC。这样算下来总共用了74LS00的三组门和74LS20的一组门芯片资源还有富余。如果你想让电路更紧凑也可以考虑用其他芯片组合但74LS00加74LS20这个方案在实验教学里最经典因为两块芯片刚好覆盖了二输入和四输入两种与非门能让学生同时练习两种封装。3. 完整接线步骤与实操过程3.1 准备工作与元件清单动手之前先把东西备齐免得接一半发现少东西。需要的元件和工具如下74LS00一块74LS20一块面包板一块建议用大一点的走线空间充足杜邦线若干公对公建议多备几种颜色5V直流电源一个实验电源或USB供电模块都行发光二极管一个做输出指示限流电阻一个220Ω到1kΩ之间三位拨码开关或者跳线帽用来做输入万用表一块排查问题用电源这块要特别注意74LS系列是TTL电平标准供电是5V不要接12V或者3.3V。5V是它的额定工作电压低了可能不工作高了直接烧。我一般用实验电源调到5.0V电流限制设在200mA左右万一接错线也不至于烧得太惨。发光二极管做输出指示时一定要串限流电阻。74LS20的输出驱动能力有限直接接LED可能电流过大既伤LED也伤芯片。220Ω到1kΩ都行我一般用470Ω亮度够用电流也安全。3.2 输入端的接法三个输入A、B、C分别用拨码开关控制。拨码开关一端接VCC另一端接芯片输入引脚同时每个输入引脚最好加一个下拉电阻到地保证开关断开时输入是明确的低电平。如果没有下拉电阻TTL输入悬空会被当成高电平但这是不可靠的容易受干扰。具体接法A接74LS00的第1脚和第4脚因为A要参与AB和AC两项B接第2脚和第5脚参与AB和BCC接第10脚和第9脚参与BC和AC。等一下这里要仔细对应一下74LS00的门分配。我重新理一遍。74LS00有四组门第一组输入1、2输出3第二组输入4、5输出6第三组输入9、10输出8第四组输入12、13输出11我们要算(AB)、(BC)、(AC)。分配如下第一组算(AB)1脚接A2脚接B3脚输出(AB)第二组算(AC)4脚接A5脚接C6脚输出(AC)第三组算(BC)9脚接B10脚接C8脚输出(BC)这样A要接到1脚和4脚B要接到2脚和9脚C要接到5脚和10脚。每个输入扇出两个门74LS00的输入电流很小一个开关驱动两个输入完全没问题。3.3 输出级的接法74LS20第一组门的四个输入是1、2、4、5脚输出是6脚。我们把74LS00的三个输出分别接到74LS20的三个输入74LS00的3脚(AB)接74LS20的1脚74LS00的6脚(AC)接74LS20的2脚74LS00的8脚(BC)接74LS20的4脚74LS20的5脚接VCC第四个输入置高74LS20的6脚就是最终输出Y。Y接限流电阻再接LED正极LED负极接地。Y为1时LED亮表示通过Y为0时LED灭表示不通过。电源和地别忘了接74LS00的14脚接VCC7脚接地74LS20的14脚接VCC7脚接地。两块芯片的电源可以共用一组5V。3.4 接线顺序与检查要点接线顺序建议从电源开始先接VCC和地再接输入最后接输出。每接完一部分用万用表量一下确认没有短路再继续。全部接完后先不要通电用万用表的通断档把每条线都过一遍重点检查VCC和地之间有没有短路。这一步花两分钟能省下烧芯片的几十块钱。通电后先测电源电压确认是5V左右。然后逐个组合输入对照真值表验证输出。如果输出不对先不要急着拆线按后面的排查方法一步步查。4. 真值表验证与逻辑图绘制4.1 实测验证方法通电后用拨码开关设置A、B、C的值从000到111逐个测试记录LED的亮灭情况。正常情况下应该和真值表完全一致只有011、101、110、111这四种情况LED亮其他四种灭。测试的时候建议按顺序来000、001、010、011、100、101、110、111每测一个在纸上打个勾。如果某个组合不对先确认拨码开关接触是否良好再查对应的门电路。比如011不对那问题可能出在(BC)这一路重点查74LS00的第三组门和它到74LS20的连线。我实测的时候遇到过一次110输出不对查了半天发现是74LS00第二组门的5脚虚接面包板上的线没插到底。这种问题很隐蔽万用表量通断能查出来但如果不量就很容易漏掉。4.2 逻辑图绘制要点逻辑图是实验报告里必须有的部分也是理解电路结构的好工具。画逻辑图的时候按信号流向从左到右画左边是输入A、B、C中间是三个二输入与非门右边是一个四输入与非门最右边是输出Y。每个门要标清楚芯片型号和引脚号比如“74LS00-1”表示74LS00的第一组门。输入输出线上标好信号名交叉的地方如果相连要画实心点不相连就画跨线。电源和地一般不在逻辑图上画但要在图旁边注明。画逻辑图有个好处就是能帮你发现接线错误。我有一次画完图对照实际接线发现74LS20的5脚忘了接VCC赶紧补上避免了一次无效测试。4.3 真值表与表达式的对应关系再回到真值表把每一行和表达式Y AB BC AC对应起来看。011这行B1、C1所以BC1Y1101这行A1、C1所以AC1Y1110这行A1、B1所以AB1Y1111这行三项都为1Y1。其他行三项都为0Y0。这个对应关系清楚了排查问题的时候就能快速定位是哪一项出了问题。5. 常见问题排查与避坑经验5.1 输出一直为高或一直为低输出一直为高最常见的原因是74LS20的某个输入悬空或者接错。如果(AB)这一路没接好74LS20的1脚悬空TTL会把它当高电平四输入与非门只要有低电平就输出高所以Y可能一直为高。排查方法是量74LS20四个输入脚的电压正常应该是三个来自74LS00的输出一个接VCC。如果哪个脚电压不对顺着往回查。输出一直为低可能是74LS20的输出脚短路到地了或者LED接反了。先量74LS20的6脚电压如果一直是低断开后面的LED再量判断是芯片问题还是负载问题。5.2 部分输入组合输出错误如果只有某些组合不对比如011不对但其他都对那问题基本锁定在(BC)这一路。查74LS00第三组门的9、10脚输入是否正常8脚输出是否正常。可以用万用表量8脚电压当B1、C1时8脚应该是低电平其他情况应该是高电平。如果不对可能是芯片坏了或者接线错了。还有一种情况是输入信号本身有问题。拨码开关接触不良会导致输入时高时低输出自然乱跳。可以用万用表直接量芯片输入脚的电压确认是稳定的高或低。5.3 芯片发热或冒烟芯片发热通常是电源接反或者电压过高。74LS00和74LS20的14脚接VCC、7脚接地如果接反了通电瞬间芯片就可能损坏。冒烟的话基本就是烧了只能换芯片。预防措施是通电前用万用表确认VCC和地没有接反电源电压调到5V再接通。另外74LS系列芯片的电源引脚没有反接保护接反必烧。我建议在电源线上串一个自恢复保险丝或者用带限流的实验电源这样即使接错也能把损失降到最低。5.4 常见问题速查表现象可能原因排查方法输出一直高74LS20输入悬空或接错量四个输入脚电压输出一直低输出短路或LED接反断开负载量输出脚部分组合错误对应与非门故障量该门输入输出输出抖动输入悬空或接触不良量输入脚电压稳定性芯片发热电源接反或过压立即断电检查电源LED不亮限流电阻过大或LED反接换小电阻或调换LED方向5.5 几个实操心得第一个心得面包板上的线一定要插到底。我遇到过好几次看起来插好了实际没接触的情况尤其是用久了的面包板簧片弹性下降更容易虚接。接线的时候稍微用点力插到底会有明显的“咔”一下的感觉。第二个心得不同颜色的线区分功能。VCC用红色地用黑色输入用黄色输出用绿色中间信号用蓝色。这样排查的时候一眼就能看出哪根线是什么不用一根根量。第三个心得先分块测试再整体联调。先把74LS00的三个与非门单独测一遍确认每个门逻辑正确再接74LS20。这样如果整体不对能快速定位是前级还是后级的问题。第四个心得74LS20多出的输入不要悬空。虽然TTL悬空等效高电平但实际环境中悬空脚容易引入干扰导致输出不稳定。老老实实接到VCC多花一根线的事。6. 电路扩展与进阶玩法6.1 扩展到多人表决三人表决做通了可以试试扩展到五人表决或者七人表决。五人表决的规则是三人及以上同意通过表达式会复杂一些但思路一样先列真值表再化简再用与非门实现。五人表决需要更多的门可能要用到74LS30八输入与非门或者多块74LS20级联。扩展的时候要注意扇出问题。74LS00的输出驱动能力有限如果后级输入太多可能导致电平不稳定。一般74LS系列一个输出能驱动10个左右的同类输入超过就要考虑加缓冲器。6.2 加入锁存功能实际应用中表决结果往往需要锁存不能因为输入变化就立刻改变输出。可以在输出级加一个74LS373或者74LS74锁存器在表决结束时把结果锁存下来。锁存器的真值表和控制时序要单独设计这里不展开但思路是在74LS20输出后面串一级锁存。6.3 用译码器做显示如果想把表决结果显示成数字或者驱动数码管可以用74LS48译码器加共阴数码管。把Y信号送进译码器就能显示0或1。再进一步可以用温度计译码的方式显示同意人数不过那就需要更复杂的编码电路了。6.4 用仿真软件先验证动手接线之前可以用Multisim或者Logisim先仿真一遍。把74LS00和74LS20的模型拖进去按逻辑图连好跑一遍真值表确认逻辑没问题再动手。这样能避免因为逻辑错误导致的反复拆线。我一般先用Logisim快速验证逻辑再用Multisim做时序仿真最后才上实物。仿真和实物还是有区别的仿真里没有接触不良、没有干扰、没有电源波动所以仿真通过不代表实物一定通过。但仿真能帮你排除逻辑错误把排查范围缩小到硬件问题上。7. 写在最后的一些个人体会这个三人表决电路我搭过很多次每次都有新收获。第一次搭的时候觉得逻辑很简单结果接线接了一下午输出就是不对最后发现是74LS20的3脚空脚被我当成了输入。后来慢慢熟练了半小时就能搭好并验证通过。我的体会是数字电路实验里逻辑设计只占三成剩下七成是接线和排查。逻辑错了可以改线接错了就得一根根查。所以养成好习惯很重要接线前画好逻辑图和接线表接线时用不同颜色的线接完后先量通断再通电通电后先测电源再测信号。这些习惯看起来麻烦实际上能省下大量排查时间。另外74LS系列芯片虽然老但作为学习数字电路的入门芯片非常合适。它的引脚定义规范、逻辑清晰、价格便宜烧了也不心疼。把74LS00和74LS20玩熟了再去看更复杂的芯片会发现底层逻辑都是相通的。如果你也在搭这个电路遇到问题可以先对照真值表查逻辑再对照引脚图查接线最后用万用表查通断。大部分问题都出在这三个环节里。实在查不出来换一块芯片试试有时候就是芯片本身坏了这种情况虽然少见但确实存在。