news 2026/9/28 15:53:33

Multisim 14.0中用74LS160/161搭建61进制计数器完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Multisim 14.0中用74LS160/161搭建61进制计数器完整指南

上周有位学弟拿着数字电路课设题来问:在Multisim 14.0里,用74LS160和74LS161搭一个61进制计数器,怎么总是出不来效果。他按网上的电路连了一遍,仿真一运行,两个数码管不是从乱码开始跳,就是一路冲到99。我相信很多人拿到这个题目也是类似状态:原理好像都明白,一个芯片计数、两个芯片级联、到某个数清零,可真在Multisim里把芯片摆上去、把线连对,还得让输出干干净净地从00走到60再归零,中间全是可以踩的坑。今天这篇文章就把这道经典题完整拆开讲,从芯片差异、计数原理,到Multisim 14.0的连线步骤和仿真调试,最后附一张按线号逐一对应的完整接线表,照着连就能跑起来。

1. 先弄清74LS160和74LS161到底差在哪

1.1 同一家族的两位邻居,计数模值完全不同

74LS160和74LS161都是TTL 74LS系列的中规模同步计数器,都是16脚DIP封装,引脚排列几乎完全一致,也都有异步清零和同步预置功能。最容易让人混淆的一点是:两者长相一样,但“数数范围”不一样。74LS160是同步十进制计数器,输出按BCD码从0000计数到1001(0到9),再回到0000;74LS161是同步4位二进制计数器,输出从0000计数到1111(0到15),再回到0000。一个模10,一个模16,这就是它们最本质的差异。

可以打个比方:160是十进制算盘,满十进一;161是十六进制算盘,满十六进一。级联方式、清零方式的思考方法都一样,区别只在“几进制”。这里还要特别注意,虽然两者都有CLR和LOAD引脚,但CLR是异步清零,不需要时钟沿,只要拉低立刻清零;LOAD是同步预置,必须等到时钟上升沿才把数据装入。这一点在后面反馈清零电路里非常关键,很多仿真不成功就是没分清“异步清零”和“同步预置”的区别。

两个芯片的共同点列出来,方便对照:

功能74LS16074LS161
计数规律0000→0001→…→1001→00000000→0001→…→1111→0000
模值1016
输出编码BCD(8421码)二进制
异步清零CLR低电平有效低电平有效
同步预置LOAD低电平有效低电平有效
使能ENP/ENT高电平有效高电平有效
进位输出RCO计数到9且ENT=1时输出1计数到15且ENT=1时输出1
典型用途十进制个位计数二进制/多位计数

1.2 为什么个位放160、十位放161

61进制计数器需要“个位”和“十位”两个计数级。个位每计满10个脉冲就要给十位送一次进位,并且个位输出必须是BCD码(0000~1001),这样显示才能是0~9。所以个位必须用74LS160。如果用74LS161当个位,个位会从0数到15,中间出现A、B、C、D、E、F这些非十进制状态,显示和进位逻辑都要额外处理,纯属给自己找麻烦。

十位的情况不一样。61进制时十位只需要出现0、1、2、3、4、5、6这七个值,虽然74LS161是十六进制计数器,但在这个电路里它被限制在0到6之间工作,完全不会暴露“能数到15”的特性。用161当十位,反而能和个位的160形成互补,这也是很多课程设计喜欢“160+161”组合的原因:同一个引脚定义,不同的模值,考察你能不能根据需求正确选型。

这里有个容易钻牛角尖的问题:161不是十进制,做十位会不会错?答案是不会。决定“几进制”的是整个电路的反馈清零/置数逻辑,不是芯片自身的计数模值。只要在计数到61时把CLR拉低,整个电路就是61进制,161自身的0到15计数范围会被清零逻辑牢牢限制在0到6以内。

2. 61进制的计数规律从哪来

2.1 把61个状态拆开看

“61进制”不是“数到61就结束”,而是计数器一共有61个稳定状态。按我们熟悉的数值排列,就是从00数到60,共61个状态。它们的分布其实很有规律:

十位二进制十位数值个位覆盖对应状态
000000~900~09
000110~910~19
001020~920~29
001130~930~39
010040~940~49
010150~950~59
011060~160、61

十位从0到5这段,每个十位值对应完整的10个个位状态,一共60个;走到十位为6以后,个位只走0和1两个状态,其中60是正常显示状态,61是触发清零的瞬态。所以宏观上看到的循环是00、01、02、…、59、60、00,正好61个稳定状态。

这个分布也解释了一个关键事实:十位计数器在正常工作中永远走不到7到15。因为一到61,整个计数器就被清了。这也让后面的清零检测逻辑可以做得非常简单,十位的高位QD在0到6之间永远是0,根本不用管它。

2.2 反馈清零法:把“61”变成复位信号

实现61进制最简单的方法是反馈清零法,也叫反馈复位法。思路很直白:设计一个组合逻辑电路,实时监视两片计数器的输出。当检测到“十位=6且个位=1”这个状态时,立刻输出低电平,分别接到74LS160和74LS161的CLR端。由于这两个芯片的CLR是异步清零,低电平一出现,不管有没有时钟,计数器马上回到0000 0000。所以从宏观上看,计数器只在00到60之间循环,61这个状态只存在几十纳秒,肉眼和数码管都捕捉不到。

为什么检测61而不是60?因为清零法的逻辑是“数到模值才复位”,61是第一个不允许停留的状态,一旦出现就立刻消灭。这种方式电路简单,一个74LS00就能完成检测,代价是会产生一个极窄的复位脉冲。在Multisim纯数字仿真里,这个窄脉冲几乎无感;但如果你将来要把这个电路接到单片机或其他对边沿敏感的负载上,就要留意它。

2.3 如果追求更干净的时序:反馈置数法

比清零法更稳的常见做法叫反馈置数法,也叫反馈预置法。它检测的不是61,而是60:当计数器走到60(十位=6、个位=0)时,让LOAD端变低,同时把两片芯片的预置数输入ABCD全部接成0000。下一个时钟上升沿到来时,计数器被同步装入0000,跳回00。因为装载动作发生在时钟沿上,61这个状态根本不会出现,整个循环非常干净。

两种方法的对比如下:

方法检测状态复位方式优点缺点
反馈清零法61(十位6、个位1)异步CLR电路简单,少一组预置数连线有窄脉冲毛刺
反馈置数法60(十位6、个位0)同步LOAD无毛刺,时序干净多一组预置数连线

本文后面Multisim的接线,我按多数课程默认的反馈清零法来讲;想尝试置数法的朋友,我在第4章最后专门给一个改造说明。

3. Multisim 14.0搭建步骤与完整电路连接

3.1 元件清单:少一个都跑不起来

在Multisim 14.0中,元件放置通过Place > Component菜单,或者直接按快捷键Ctrl+W打开。本电路需要以下元件:

元件型号在Multisim中的位置用途
U174LS160DGroup: TTL, Family: 74LS个位计数
U274LS161DGroup: TTL, Family: 74LS十位计数
U374LS00DGroup: TTL, Family: 74LS反馈清零逻辑
X1DCD_HEXGroup: Indicators, Family: HEX_DISPLAY个位显示
X2DCD_HEXGroup: Indicators, Family: HEX_DISPLAY十位显示
V1DIGITAL_CLOCKGroup: Sources, Family: SIGNAL_VOLTAGE_SOURCES1Hz时钟
VCC/DGND电源符号Group: Sources, Family: POWER_SOURCES5V电源和地

一个使用细节:在元件搜索框输入74LS160D时,列表里可能同时出现74LS160D、74LS160N等不同后缀,它们的功能和引脚完全一样,只是封装描述不同,选一个能正常放置的即可。DCD_HEX是Multisim自带的BCD输入数码管,输入0000~1001显示0~9,输入1010~1111显示A~F。本电路用到的数字不会超过9,所以显示不会出现A到F,很合适。

这里还要提醒一下,74LS00D一个封装内包含4个独立的2输入与非门。Multisim放置多门封装元件时,会默认放置A门;你需要在放置对话框的Gate栏里分别选择A、B、C,或者直接连续拖放三份,软件会把它们归到同一个U3封装下。后文说的U3A、U3B、U3C,就分别指的这三个与非门。

3.2 先认识引脚,再动手连线

74LS160和74LS161都是16脚芯片,Multisim原理图上的引脚名称一般直接标在符号上。对照一下:

引脚名称说明
1~CLR异步清零,低有效
2CLK时钟,上升沿触发
3A预置数据输入(bit0)
4B预置数据输入(bit1)
5C预置数据输入(bit2)
6D预置数据输入(bit3)
7ENP计数使能,高有效
8GND地
9~LOAD同步预置,低有效
10ENT计数使能,同时控制进位,高有效
11QD输出最高位(权重8)
12QC输出(权重4)
13QB输出(权重2)
14QA输出最低位(权重1)
15RCO进位输出
16VCC电源

Multisim里低有效的引脚名上会带一个小圆圈或“~”符号,比如~CLR、~LOAD。这里有个新手最容易忽略的点:QA是bit0(权重1),QD是bit3(权重8)。接数码管时如果顺序接反,显示的数字会完全对不上。

电源方面,Multisim默认把74LS系列芯片的VCC和GND引脚隐藏,统一连接到名为VCC和DGND的全局网络上。你只要在原理图空白处放置一个VCC符号和一个DGND符号,所有芯片就自动供电了。如果自己想看引脚,可以在芯片属性里勾选显示电源引脚,两种方式对仿真结果没有影响。

3.3 从时钟到级联:一步一步接线

具体接线按下面的顺序来,不容易漏:

  1. 放好U1、U2、U3、X1、X2,并放一个VCC、一个DGND电源符号。
  2. 双击DIGITAL_CLOCK,把Frequency设为1(单位Hz),Duty Cycle保持默认50%。1Hz意味着每秒跳一个数,观察最舒服。
  3. 连接时钟:V1的输出引脚同时接到U1的CLK和U2的CLK。由于U1、U2是同步级联,两片芯片共用同一个时钟源,在同一个上升沿动作。
  4. 连接个位使能:U1的ENP和ENT都接VCC,让个位在每个时钟沿都允许计数。
  5. 连接级联进位:U1的RCO接到U2的ENT。这根线是全电路的关键。74LS160的RCO在“个位=9且ENT=1”时输出高电平,并且这个高电平会保持到下一个时钟沿,所以当个位从9变回0时,十位会在这个时钟沿正确加1。U2的ENP也接VCC。
  6. 把U1、U2的LOAD都接VCC,预置输入A/B/C/D接到DGND。这样同步预置功能被禁用,芯片只依赖CLR清零。
  7. 反馈清零部分可以按3.4的接线表直接连,也可以等第4章看完原理再连。
  8. 连接显示:把U1的QA、QB、QC、QD分别接到X1的A、B、C、D;把U2的QA、QB、QC、QD接到X2的A、B、C、D。DCD_HEX的A是最低位,对应QA;D是最高位,对应QD。

3.4 完整接线表:每一根线都写清楚

下面是这个电路的完整接线表,每一行都是一条导线或一个网络关系。按这张表连出来,就等价于标题里说的“完整电路图”。

编号起点终点说明
1V1.OUTU1.CLK时钟到个位
2V1.OUTU2.CLK时钟到十位
3U1.RCOU2.ENT个位向十位进位
4U1.ENPVCC个位使能1
5U1.ENTVCC个位使能2
6U2.ENPVCC十位使能1
7U1.LOADVCC禁用同步预置
8U2.LOADVCC禁用同步预置
9U1.QAX1.A个位显示bit0
10U1.QBX1.B个位显示bit1
11U1.QCX1.C个位显示bit2
12U1.QDX1.D个位显示bit3
13U2.QAX2.A十位显示bit0
14U2.QBX2.B十位显示bit1
15U2.QCX2.C十位显示bit2
16U2.QDX2.D十位显示bit3
17U2.QCU3A.A十位=6检测A
18U2.QBU3A.B十位=6检测B
19U3A.YU3B.A反相输入
20U3A.YU3B.B反相输入并联
21U3B.YU3C.A十位=6高电平有效信号
22U1.QAU3C.B个位=1检测
23U3C.YU1.CLR反馈复位到个位
24U3C.YU2.CLR反馈复位到十位
25VCC符号全局VCC网络芯片自动供电
26DGND符号全局DGND网络芯片自动接地

表中的U3A、U3B、U3C是74LS00内部的三个与非门。U3A对应第一个门,输入A、B,输出Y;U3B对应第二个门,输入都接U3A.Y;U3C对应第三个门。

4. 反馈清零的与非门逻辑:三个门把“61”抓出来

4.1 清零条件怎么拆解

要让电路在61时清零,本质是搭建一个组合逻辑,让它输出满足:

CLR = NOT( 十位等于6 且 个位等于1 )

当输出为0时,强制两片芯片异步清零。

十位等于6时,74LS161的输出是0110,也就是QD=0、QC=1、QB=1、QA=0。QC的权重是4,QB的权重是2,4+2正好是6。在61进制电路中,十位正常计数范围只有0到6,QD在0到6之间永远是0,所以判断“十位是不是6”只需要看QC和QB是不是都为1,QD和QA都不用管。个位等于1更简单,74LS160输出0001,只需要看QA是不是1。

于是清零条件收缩成三个信号:

  • 十位的QC = 1
  • 十位的QB = 1
  • 个位的QA = 1

这三路信号同时为1时,就是61状态,必须把CLR拉低。

4.2 三个与非门的完整推导

74LS00只有2输入与非门,不能直接同时检测三路信号。一个常见的错误接法是把三个条件直接串两个与非门:U3A=NAND(QC, QB),U3B=NAND(U3A, QA)。这种接法在Multisim里一试就会发现61根本不清零,因为当十位等于6时U3A输出已经变成0,0再和QA做与非,结果永远是1,CLR拉不低。

正确做法是先把“十位等于6”这个条件恢复成高电平,再和“个位等于1”做与非。完整逻辑如下:

U3A = NAND(U2.QC, U2.QB) // 十位=6 时,U3A.Y=0;其他时候为1 U3B = NAND(U3A.Y, U3A.Y) // 用与非门当反相器,十位=6 时,U3B.Y=1 U3C = NAND(U3B.Y, U1.QA) // 当十位=6 且 个位=1 时,U3C.Y=0 U3C.Y -> U1.CLR, U2.CLR

验证一下几个典型状态:

计数状态十位QC/QBU3A.YU3B.Y个位QAU3C.Y(CLR)是否复位
591/01011否
601/10101否
611/10110是
230/11011否

可以看到,只有十位QC=1、QB=1且个位QA=1的那个状态,也就是61,CLR才会拉低,其余状态都不受影响。

4.3 几个必须避开的接线误区

第一,U3B在这里是纯反相器,两个输入必须短接在同一个节点上,也就是都接U3A.Y。如果把U3B的两个输入分别接U3A.Y和某个别的信号,逻辑就会完全变味。第二,CLR信号要同时送给U1和U2,不能只清个位或只清十位,否则会出现十位已经回到0、个位还在9的错位状态。第三,检测用的输出端别接错:U2.QC和U2.QB是十位的高两位,如果接成U2.QA和U2.QB,61的清零条件就永远等不到了。

如果想把电路改成反馈置数法,改动其实很小:把U1、U2的LOAD从VCC改接U3B.Y,预置输入U1.A~D、U2.A~D全部接DGND;清零条件改成检测60,也就是只保留“十位=6”的判断,用U3B.Y直接送LOAD。这样在60状态LOAD低电平,下一个时钟沿来临时同步装入0000,整体功能不变,但不再有61态的窄脉冲,实际焊板更推荐这种做法。

5. 仿真运行、上电乱码与Multisim里的常见坑

5.1 启动后不是00,先别怀疑电路

Multisim里数字IC在仿真启动时,输出状态有时并不是确定的0。这里比较推荐的做法:在U1.CLR和U2.CLR所在的复位线上,额外放一个SPST开关(Group: Basic, Family: SWITCH, Component: SPST),开关一端接CLR节点,另一端接DGND。仿真开始后,如果发现数码管显示乱了,先按一下空格或点击开关,让CLR短暂为低,计数器回到00,然后把开关断开,再继续观察。这个步骤在第一次仿真时几乎是必做的,因为很多版本的Multisim在启动瞬间并不会自动给计数器复位。

不过要注意,这是仿真环境下的做法。如果将来做真实硬件,不要用SPST直接短接74LS00推挽输出的CLR节点到地,因为当与非门输出高电平时,开关闭合等于把TTL输出短路,可能损坏芯片。真硬件要么用RC上电复位电路,要么用集电极开路或缓冲门的方式组合复位信号。

5.2 显示不对、计数乱跳:优先查级联和显示位序

如果数码管不是按00到60循环,而是乱跳,按下面的顺序排查:

  1. 确认U1.RCO接的是U2.ENT,不是U2.CLK,也不是悬空。有些教程把十位时钟直接接在个位RCO上,做成异步级联,也能工作,但U1.RCO到U2.ENT的同步级联更稳定,也更好理解。
  2. 确认U2.ENT确实有信号。Multisim中如果某个使能引脚悬空,有些仿真模型会当成高电平,有些不会,不要依赖悬空行为。
  3. 确认显示接线按QA到A、QB到B、QC到C、QD到D的顺序。接反一位,显示就会乱。比如个位实际是9,显示却可能像6。
  4. 确认CLR节点确实连到了U3C的输出。可以放一个逻辑探针在CLR节点上,每个循环的61时刻它应该出现一个低电平。不过61态极短,肉眼看不清,用Multisim的Logic Analyzer接到CLR节点,能看到一个清晰的窄负脉冲,这是判断反馈电路是否生效最直接的办法。

5.3 数据库访问报错、仿真太慢:两个高频使用问题

不少人在Multisim里一打开元件库就弹“Master Database cannot be accessed”之类的错误,通常和安装路径、权限或之前残留的数据库文件有关。可以先试:以管理员身份运行Multisim;打开Options > Global Preferences,确认数据库路径指向安装目录下的database文件夹;如果之前装过其他版本,检查是否有残留的数据库文件损坏。实在不行,卸载干净后重装,装完第一件事先用管理员身份打开一次,把数据库路径确认好再继续画图。

仿真速度方面,如果觉得数字电路跑得“拖泥带水”,往往不是Multisim本身慢,而是时钟频率太高、显示刷新跟不上。1Hz的数字时钟配两个DCD_HEX,仿真几乎是实时的,反应很跟手。如果电路复杂、需要跑长仿真,可以在Simulate > Interactive Simulation Settings里调整最大仿真步长(Maximum time step),把最大步长调大一些能明显加速,代价是波形精度下降。像61进制计数器这种低频数字电路,用默认设置就够了,不需要特意去改。

5.4 从仿真到实物:两处必须改的设计

如果这个61进制计数器下一步要焊成实物,有两点建议:

一是复位方式。仿真里61态窄脉冲无所谓,但实物里这个纳秒级的低脉冲容易让后面的电路误触发。稳妥起见改用反馈置数法,或者将清零信号先用D触发器同步一下再送CLR,避免毛刺问题。

二是显示部分。仿真里用DCD_HEX非常省事,实物里74LS160/161输出的是BCD码,不能直接驱动7段数码管,需要加74LS47(共阳数码管)或74LS48(共阴数码管)做译码驱动,还要根据数码管的共阳共阴类型选对型号,最好串220Ω左右的限流电阻。1Hz时钟在实物里可以用NE555搭一个可调方波发生器,或者直接用函数信号发生器。

我在Multisim里第一次跑通这个电路,其实不是因为原理难,而是被两个小问题卡了半天:一个是把QB和QC接反了,另一个是忘了在CLR上接复位开关,导致仿真启动后从乱码开始跳。后来我总结出一个很笨但很有效的习惯:连接任何计数器电路之前,先拿一张纸把两个芯片的引脚表抄一遍,再对照接线表一根一根连;清零逻辑一定先在纸上推一遍真值表,再动手接线。Multisim的好处是改线非常快,出现错误也不会烧东西,所以大胆多试几遍。现在再看这类题目,无论是61进制还是任意模值计数器,核心就三件事:芯片选型、级联方式、反馈逻辑。把这三件事捋顺,基本就不会出大问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 15:52:52

大模型毫秒级响应是伪命题?从流式输出到推理加速的实战解析

在和大模型打交道的这段时间里,我遇到过最多的一个误解,就是把“流畅体验”直接等同于“毫秒级接口响应”。真实用户看到的是:光标转了几圈之后,答案开始一个字一个字冒出来,有时候先蹦出来的是一个“好的”&#xff0…

作者头像 李华
网站建设 2026/9/28 15:52:34

大模型系统性入门:从本地部署到微调实战全解析

聊大模型的资料,网上已经多到刷不完了。但多数人卡住的从来不是“没资料”,而是“资料太碎”:今天刷到一篇讲Prompt,明天看到一段微调代码,后天又收藏一个部署教程,最后的结果往往是收藏夹吃灰,…

作者头像 李华
网站建设 2026/9/28 15:52:00

企业级AI Agent系统拆解:六层架构与Google产品矩阵落地指南

先说个场景。去年我接手一个企业级客服 Agent 项目,客户技术负责人上来就问我:“我们已经把开源大模型接进来了,怎么还不能上线?”我看了一眼他们的实现,Prompt 写得很长,工具也挂了七八个,但一…

作者头像 李华
网站建设 2026/9/28 15:51:36

A5X Max+电视盒子刷机指南:Maskrom模式与晶晨固件烧录实战

这阵子翻抽屉翻出一台A5X Max电视盒子,原厂系统开机要一分钟半,桌面卡片满天飞,装个TVBox用起来都卡顿。想着干脆刷个精简安卓9,结果一研究发现问题比预想的多:这盒子不是普通卡刷能搞定的,原厂固件做了加密…

作者头像 李华
网站建设 2026/9/28 15:51:36

Jev哑巴模型解析:为何爆火?附Codex接入与密钥申请实操

这一个月,我朋友圈里至少有五个人在发同一个词:Jev。刚开始我以为又是什么新的剪辑工具或者图生视频插件,点进去一看,才发现是个模型,而且是个被一群人追着喊“哑巴模型”的模型。今天就把这东西拆开讲清楚&#xff1a…

作者头像 李华
网站建设 2026/9/28 15:51:28

AI测试开发实战:从传统测试到智能Agent自动生成脚本的转型指南

1. 为什么“测试开发”前面要加上“AI”:这是行业变化的真实信号上个月和几个老测试同事聚餐,聊到最近圈子里的热门话题,又绕回那句老话:测试人到底要不要转型做AI测试开发?有人觉得这是培训机构炒出来的新概念&#x…

作者头像 李华