
简介《数电课程设计-篮球计分器》是一份面向网络工程等专业学生的数字系统课程设计报告围绕篮球计分器的加分、减分与清零功能讲解如何用74LS160、74LS192构成计数与累加电路并通过DCD_HEX译码显示器呈现比分适合作为数字电子技术课程设计或综合实验的参考。整份资源为单个PDF文档约913KB内容覆盖设计任务、总体方案、主要元件介绍、计分/显示/加减置换/清零/时钟信号等模块电路及仿真结果并附有小组分工说明结构清晰、便于按章节查阅。目前已有3890人浏览学习。借助该PDF读者可以快速理解二进制与十进制可逆计数器、译码器在计分器中的具体应用获得从电路设计到仿真验证的完整思路为完成类似数字系统设计打下基础。1. 数电课程设计里的篮球计分器先把时序关系捋清楚篮球计分器这道数电课程设计题最大的迷惑点不是加法器和译码器而是“一次按键到底怎么变成1、2、3个计数脉冲”。很多网络工程专业的学生拿到题目第一反应是直接上单片机但课程设计的考核点恰恰是74LS160、74LS192这类中规模计数器的组合逻辑应用。如果只照着PDF接线不搞懂74LS160如何通过ENP反馈和清零端生成不同宽度的脉冲串后面连仿真都会卡住。这篇文章按“功能拆解 → 脉冲生成 → 累加显示 → 仿真排查”的顺序把整套计分器电路拆开讲适合正在做数电课程设计的人也适合想用Multisim验证数电组合逻辑电路的人。2. 功能拆解与计数器选型为什么是74LS16074LS192而不是单片机2.1 篮球计分规则转成真值表拿到题目先不要连线先把规则摊开。这个计分器要支持的输入事件只有八种罚球命中加1分两分球命中加2分三分球命中加3分以及裁判改判时对应减掉的1、2、3分另外还有一个清零动作。把这些写在一张真值表里后面选芯片就非常清楚。输入动作总分变化需要产生的计数脉冲对应计数通道S1加分键罚球加1一个脉冲给CPu74LS192加计数S2加分键两分球加2连续两个脉冲给CPu74LS192加计数S3加分键三分球加3连续三个脉冲给CPu74LS192加计数S4拨到减分档后按S1减1一个脉冲给CPD74LS192减计数S4拨到减分档后按S2减2连续两个脉冲给CPD74LS192减计数S4拨到减分档后按S3减3连续三个脉冲给CPD74LS192减计数S0清零键归零MR端拉高异步清零这张表说明一个关键问题不能用普通按键直接连74LS192的CPu或CPD。因为机械按键按下瞬间会有几十毫秒的抖动直接接上去时可能一次按压就产生五六个脉冲计分会直接失控。所以电路里必须先做“按键动作到标准脉冲个数”的转换这就解释了为什么设计里不用单片机也仍然需要三片74LS160。2.2 74LS192双时钟可逆计数器为什么它是总分累加器的最佳选择74LS192是同步十进制可逆计数器最突出的特点是双时钟输入加计数走CPu减计数走CPD两个时钟互相独立。和74LS160这类单向加法计数器相比它天然支持加减两种操作。有人会问用74LS190加一个方向控制端不也能实现加减吗74LS190的方向控制是电平信号需要在计数过程中保持稳定。篮球计分器里加减分是随机切换的如果方向信号建立时间不够很容易在时钟边沿附近发生竞争导致误计数。74LS192用两个独立时钟输入等于从物理层面把“加法”和“减法”隔离开了逻辑上更安全。实际接线时要注意它的工作模式。74LS192的MR端是高电平异步清零PL端是低电平异步置数。当MR为0、PL为1时CPu的上升沿执行加计数CPD的上升沿执行减计数。功能表可以整理成下面这样MRPLCPuCPD功能1XXX异步清零00XX异步置数01上升沿1加计数011上升沿减计数0111保持这个表是后面排查仿真Bug时最重要的对照依据。很多人在Multisim里发现计数器不动第一反应是查按钮其实八成是MR没有接低电平被悬空后误触发清零。数字电路里不用的控制端不能悬空74LS192和74LS160都是如此这一点在模电数电基础知识里也经常作为填空题出现。2.3 74LS160只做脉冲个数控制把一次按键变成1、2、3个脉冲真正拉开这道课程设计差距的是“怎么让一次按键稳定产生若干个脉冲”。常见做法是用555定时器产生连续方波把方波送进74LS160构成的计数器利用74LS160的异步清零端CLR和使能端ENP让计数器从0跑到设定值后停下来再从合适的输出端引出脉冲。按下S1、S2、S3时相当于给CLR一个低电平脉冲计数器解除清零并重新开始计数每按一次完成一轮“启动—计数—保持”的过程。74LS160虽然是十进制计数器但这里并没有让它完整计完0到9。它的QA和QB经过与非门反馈到ENP当QA和QB同时为高电平时ENP被拉低计数器停住。也就是说它被改造成了一个模3或模6计数器。具体是一分、二分还是三分取决于从哪个输出端取脉动以及在哪里截断计数范围。这个思路在数电组合逻辑电路里属于典型的“反馈清零法”理解它比完整背下74LS160功能表更重要。3. 脉冲生成与加减分控制从555时钟到74LS160的门控逻辑3.1 555定时器产生基准时钟整个脉冲链路的起点是时钟信号。课程设计里使用555定时器接成自激多谐振荡器产生连续方波。这里频率不需要太高因为计分器是手动操作不是实时采集数据。我一般会把R1、R2、C调成f在2Hz到10Hz左右数码管的变化肉眼能看清脉冲波形在虚拟示波器上也不会密到数不清。555多谐振荡器的频率计算公式是f ≈ 1.44 / ((R1 2R2) × C)如果手头没有555模型Multisim里也可以直接用虚拟方波源替代但报告里最好保留555芯片因为课程设计考核的就是常见中规模集成电路的应用而不是偷懒用理想信号源。需要注意的是555输出的方波上升沿要足够陡。CMOS版本的555输出边沿一般没问题如果是TTL版本负载电容过大会让上升沿变缓后面74LS160在边沿附近可能会误触发。仿真里看不明显但如果将来焊板子输出端最好加一个74LS04整形缓冲一下。3.2 用74LS160构成一到三分脉冲电路三片74LS160的接法逻辑相同区别在反馈接法和输出取法。以加2分电路为例S2闭合时74LS160的CLR解除清零计数器从0000开始递增当到达0011时QA与QB都为1经过与非门输出低电平到ENP计数器保持0011不再变化。在这个过程中QA端每经历一次0到1的变化就产生一个上升沿从0000到0011一共会看到两个上升沿正好对应一次加2分操作。加1分电路则从QB端引出脉冲。同样是在0011处保持但QB只在0001到0011之间产生一个上升沿。加3分电路的截断点改成0101也就是QA和QC同时为高计数器从0000跑到0101整个过程QA端出现三个上升沿。这样三片74LS160分别承担加1、加2、加3的脉冲个数转换。注意这里的“从QA引出”“从QB引出”不是随便选一个输出端而是要看完整计数周期内哪个输出端的高电平次数或上升沿次数刚好等于目标脉冲数。我第一次做的时候直接在QA上取加1脉冲结果每次都加2分后来把状态列出来才发现问题。这部分的本质是用组合逻辑把74LS160的任意计数状态拉回保持状态相当于给计数器预设了一个“天花板”。这种方法在数电组合逻辑电路设计里很常见比外部再挂一个脉冲发生器简单但代价是每一分、二分、三分都要单独一片74LS160不能共用。原设计里三片74LS160各管一路正是因为这个缘故。3.3 加减分切换与三输入或门三个74LS160产生的脉冲最终要汇聚到74LS192的时钟输入端。由于减分也要有1、2、3三档不能直接用一个单刀双掷开关把或门输出切到CPD就完事还要考虑加减共用的逻辑。设计里选用的是三输入或门把三片74LS160的输出接入或门的三路输入或门输出接到单刀双掷开关的动端。开关拨到加分档时或门输出接到74LS192的CPu拨到减分档时接到CPD。这样无论加还是减触发的一直是74LS192的上升沿计数器本身的工作模式仍然是“CPu加、CPD减”。常见做法会让三输入或门选用74LS32因为74LS32就是四组二输入或门芯片三输入可以用两组并联扩展也可以直接查Multisim库里的三输入或门模型。这里真正要留意的不是门本身而是开关切换后的时序单刀双掷开关在仿真里是理想的但实际开关在切换过程中会产生短暂断开CPu和CPD同时悬空的瞬间74LS192会保持原来的计数值这没问题。麻烦的是开关弹跳可能让同一侧出现毛刺脉冲所以开关最好选用跳变开关而不是自复位按钮。4. 总分累加、清零与七段显示74LS192和DCD_HEX怎么接才不飞线4.1 三片74LS192组成三位十进制累加器总分范围设计为000到999需要三片74LS192。低位片的进位输出端连接到高位片的CPu借位输出端连接到高位片的CPD。这样低位片从9加1回0时进位输出产生一个上升沿高位片自动加1低位片从0减1回9时借位输出产生一个上升沿高位片自动减1。级联思路和十进制加法器一致。但这里有一个在Multisim里很容易踩的坑74LS192的进位和借位输出是异步产生的宽度可能很窄。仿真软件在事件驱动模式下能捕捉到但如果换到真实面包板上这个窄脉冲可能传不到高位片的时钟端。遇到这种情况我一般会在CO到高位CPU之间插入一个RC延迟网络或者加一个施密特触发器整形。课程设计报告里通常不会写这一条但它恰恰是整张电路图从“仿真通过”到“实物跑通”之间的关键差距。4.2 清零与置数跳变开关比普通按键可靠74LS192的MR端高电平清零所以清零功能只要把MR接一个开关另一头接高电平即可。问题在于普通按键按下和抬起时都有机械抖动MR一旦出现几十纳秒的高电平毛刺计分就会莫名其妙清零。原设计里推荐使用跳变开关也就是单刀双掷开关因为它的动端在切换时不会反复弹跳能稳定停留在高电平或低电平状态。同样的原则也适用于74LS160的异步清零端CLR。CLR是低电平有效S1、S2、S3接到CLR时如果按键弹跳计数器可能多次重新开始计数导致输出脉冲个数不稳定。有人用R-C低通滤波去除按键抖动这个方法在面包板上有效但在仿真里很难模拟出真实的机械抖动因此Multisim里只要逻辑正确就能通过。如果你想在报告里体现“防抖动”设计可以在按键输出端加一个10kΩ电阻和0.1μF电容的RC低通网络再接施密特门。4.3 从8421BCD到数码管DCD_HEX译码显示74LS192输出的是8421BCD码也就是4位二进制编码的十进制数字。数码管本身不识别BCD码必须要经过七段译码。Multisim里的DCD_HEX是一个自带译码逻辑的显示元件它左边四个引脚依次是4、3、2、1对应BCD码的最高位到最低位接QA到QD时要一一对应。这个显示元件不需要外接74LS48因为译码已经集成在里面了。但如果是焊实物板PCB上还是要用74LS48把74LS192的Q0到Q3转换成a到g段信号。关于共阳极和共阴极这里也顺手说清楚。共阳极数码管把所有发光二极管的阳极接在一起接高电平哪一段阴极被拉低哪一段就亮。共阴极刚好相反公共端接地阳极给高电平点亮。DCD_HEX在Multisim里默认对应共阴极数码管公共端自动接地所以仿真时不用额外准备直流电源给公共端。如果你在报告里换成共阳极数码管段码逻辑需要反相这是很多人显示乱码的根本原因。下面这段Verilog是74LS192的行为级模型我一般会在搭Multisim原理图之前先用它跑一遍加计数、减计数、清零和置数逻辑确认CPu和CPD的上升沿行为。写报告时也可以把这部分放进附录作为理论验证。module ls192_behavior( input cpu, cpd, mr, pl_n, input [3:0] d, output reg [3:0] q, output reg tcu, tcd ); // MR为异步清零高电平有效 // pl_n为异步置数低电平有效 // cpu上升沿加计数cpd上升沿减计数 always (posedge cpu or posedge cpd or posedge mr or negedge pl_n) begin if (mr) begin q 4b0000; tcu 1b0; tcd 1b0; end else if (~pl_n) begin q d; tcu 1b0; tcd 1b0; end else if (cpu) begin if (q 4d9) begin q 4b0000; tcu 1b1; end else begin q q 1b1; tcu 1b0; end end else if (cpd) begin if (q 4d0) begin q 4d1001; tcd 1b1; end else begin q q - 1b1; tcd 1b0; end end end endmodule这段代码最关键的是那段边沿敏感列表。CPU、CPD、MR都放在posedge里PL_N放在negedge里这说明74LS192的清除和置数都是异步操作。也就是说只要MR变成高电平输出的Q会立刻清零不需要等时钟边沿同样PL_N为低电平时Q直接等于输入D。很多人在仿真里看到清零不生效就是因为把MR接到了电平比较缓慢变化的信号上而不是真正的高电平。5. 仿真验证与常见坑在Multisim里把计分器完整跑起来5.1 模块级调试顺序不要一开始就把整张原理图全部连好再仿真。我习惯分成三步进行验证。第一步只接555和一片74LS160把虚拟示波器挂在QA、QB上按S1、S2、S3观察脉冲个数。如果按一次出现两个或三个上升沿说明反馈保持逻辑正确如果只出现一个很可能ENP或ENT交错了。第二步接一片74LS192手动给CPu加一个单脉冲观察数码管是否从0跳到1再给CPD加脉冲看是否减1。第三步把三片74LS192级联起来用文本方式强制给低位片喂9个脉冲确认进位到高位片后显示为10。5.2 三个容易翻车的位置故障现象大概率原因检查位置数码管始终不显示74LS192的MR悬空被干扰置位MR必须接低电平按一次按键加了好几分74LS160的CLR按键没有做防抖处理改用跳变开关或RC滤波显示成字母而不是数字DCD_HEX引脚接反BCD码高低位对调检查4、3、2、1引脚到Q3、Q2、Q1、Q0的顺序容易翻车的还有电源引脚。Multisim里很多TTL计数器默认隐藏VCC和GND引脚原理图上看起来芯片只有十几个引脚但仿真网络里并没有真正供电。课程设计上交的电路图一定要把隐藏电源引脚调出来或者在芯片属性里确认电源网络名称是VCC。5.3 用虚拟逻辑分析仪验证进位与借位在做级联验证时把低位74LS192的进位输出接到逻辑分析仪的通道1借位输出接到通道2。加分过程中当低位片从9回到0的一瞬间通道1上会出现一个正脉冲减分过程中从0回到9瞬间通道2出现正脉冲。如果这两个脉冲都没看到说明问题出在或门输出到CPu/CPD的连接上如果看到了脉冲但高位片不动作再去查高位片的MR是否被误拉高以及DCD_HEX的公共端是否接对。按照这个顺序排查基本能解决九成“显示不动”的问题。本文还有配套的精品资源点击获取