ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

用74LS160设计60进制计数器:从原理到焊接调试全解析

用74LS160设计60进制计数器:从原理到焊接调试全解析 1. 为什么数字钟表离不开60进制计数器1.1 数字钟表的时间制式与计数逻辑你有没有留意过实验室墙上那块数字钟表秒位从00跑到59然后瞬间归零同时分位跳一个字分位再从00跑到59归零后时位跟着跳。这背后其实藏着一个非常经典的数字电路逻辑逢六十进一。时间的最小显示单位是秒而60秒等于1分钟、60分钟等于1小时所以在数字钟表内部秒位和分位本质上就是两个一模一样的60进制计数器。它们不断接收脉冲信号每累计60个脉冲就输出一个进位同时自己也归零重新开始。时位则稍有不同一般用24进制或者12进制但最核心、也最适合入门学习的就是60进制这一环。很多电子相关专业的学生在课程设计里都会遇到这个题目用74LS160设计60进制计数器。这节课看起来是“做个计数器”实际上它把同步时序逻辑、级联设计、反馈置数/清零、译码显示全部串起来了。做完这个实验你对数字电路课程里的时序逻辑部分基本就算入了门。这篇文章我就把完整的流程、原理、仿真和焊接调试经验全部拆开讲争取让零基础的同学也能照着做出来。1.2 为什么选74LS160而不是其他芯片提到计数器芯片市面上有不少选择比如74LS90、74LS161、74LS163、CD4017等等。但74LS160几乎是教材和课程设计里出现频率最高的一款原因很直接74LS160是同步十进制加法计数器带异步清零、同步预置数功能还有进位输出端RCO。和74LS90这类异步计数器相比74LS160的同步特性让它在大规模级联时更稳定不会出现多个芯片并行工作时进位波形不齐、导致计数跳变的问题。和74LS161比74LS161是十六进制4位二进制要凑60进制得额外加译码逻辑而74LS160本身模10两片级联天然就是模100再通过反馈让它提前归零只需要很小的改动就能变成60进制。更重要的是74LS160在TTL逻辑家族里非常经典各种仿真软件里都有现成模型资料满天飞出了任何问题都能查得到这对初学者来说太重要了。2. 74LS160基础引脚功能与计数原理2.1 芯片概览与引脚定义74LS160是16脚双列直插DIP-16封装其中左上角第16脚是VCC接5V右下角第8脚是GND接地。芯片上有一个半圆形的缺口正对着缺口时左下角是第1脚按逆时针方向依次排到第16脚这个方向问题很多人第一次焊板子时会栽跟头这里先重点标记一下。它内部包含4个D触发器和相应的组合逻辑能够保存一个4位二进制数0-9并在时钟上升沿时进行加法计数。主要引脚如下CLK第2脚是时钟输入端上升沿触发ENT第10脚和ENP第7脚是计数使能端高电平有效只有两个都为高时芯片才会计数任意一个为低就保持当前状态CLR第1脚是异步清零端低电平有效只要拉低不管时钟如何输出立即变成0000LOAD第9脚是同步预置端低电平有效拉低后在下一个时钟上升沿把D3D2D1D0第15、14、13、12脚的数据装入输出端RCO第15脚注意这里应该是第15脚但实际上RCO是第15脚而D0是第3脚等等让我准确核对一下引脚排列——我常在黑板上画这个图咱们用文字描述1脚CLR2脚CLK3脚AD04脚BD15脚CD26脚DD37脚ENP8脚GND9脚LOAD10脚ENT11脚RCO12脚QAQ013脚QBQ114脚QCQ215脚QDQ316脚VCC。注意不同资料中同一芯片的引脚标注可能有差异画PCB时务必对照厂家数据手册。RCO第11脚是进位输出当计数到91001且ENT为高时输出高电平其余时间为低。这个引脚很关键它是级联的“桥梁”。简单记住74LS160数到9RCO就会跳一下高通知下一级“我准备好了”。2.2 使能、清零、置数与进位的关系在动手设计之前有几组逻辑关系必须理清楚否则后面调电路时会非常头疼。首先清零和置数的优先级。CLR是异步控制端不用等时钟拉低立即清零。LOAD不一样它是同步控制端拉低之后要等下一个时钟上升沿才会把预置数据装入。所以如果你需要“立即归零”用CLR如果希望“等下一个时钟边沿再归零”用LOAD。这两者的区别在做60进制时直接决定了电路是否存在毛刺。其次是计数使能。ENP和ENT同时为高时才允许计数当计数到9且ENT为高时RCO输出高电平。ENT对RCO的影响意味着在级联时高位片的时钟可以和低位片共用同一个但高位片能否计数由低位片的RCO控制——这是同步级联的标准接法后面会细说。第三个容易忽略的点是74LS160的时钟是上升沿触发。在面包板上用手触碰导线来提供时钟时常常因为接触抖动导致一次按下去跳好几个数这不是芯片坏了而是产生了多个上升沿。2.3 级联思路从十进制到六十进制的桥梁一片74LS160只能计0到9要计到59需要两片。数学上60 10 × 6因此可以这样拆低位片的循环周期是10高位片每收到一个“十位进位”就加1但只让它循环到5就提前归零。这样低位片从0到9、高位片从0到5组合起来正好是00到59共60个状态。实现高位的“只到5就归零”有两种主流方法一种是利用异步清零高位片一旦出现60110立即清零因为6这个状态只存在极短时间数码管看不见另一种是利用同步置数在高位片到5时准备好“清零”信号等下一个时钟沿把两片都置成0。这两种方案一个简单直接但会带来毛刺隐患一个复杂一点但非常干净。下一章我把两种方案完整对比着讲。3. 两种60进制电路设计方案对比3.1 方案一反馈清零法反馈清零法的思路非常直观先把两片74LS160级联成100进制计数器然后检测“出现60”这个状态一出现就立刻把两片全部清零。具体接线两片74LS160的CLK都接同一个时钟源低位的ENT和ENP都接高电平高位的ENP接高电平ENT接低位RCO这样低位到9后高位在下一个时钟加1两片的CLR并接在一起接74LS00二输入与非门的输出。高位片的QD、QC引脚即Q3、Q2分别接到与非门的两个输入端因为数字6的二进制是0110Q2和Q3同时为高与非门输出低电平把两片同时清零。这套电路只需要一片74LS00非常省元件Multisim仿真一秒就能跑通。实际做出来也确实能正常显示00到59然后归零肉眼几乎看不出任何异常。但它有一个工程上的隐患清零是异步的。也就是说当计数器一进入6这个状态与非门输出低电平芯片立即清零整个过程发生在纳秒级别6这个数字在数码管上来不及显示。问题在于这个瞬间的窄脉冲可能会影响下一级电路如果后面还接着分计数器或者报警电路毛刺可能造成误触发。在课程设计的答辩环节很多老师会追问“清零时这个6到底算不算一个状态”这就是在考察异步清零的隐患。所以这个方案可以在仿真里熟悉逻辑但不建议上实物。3.2 方案二同步置数法同步置数法在工程上更被推荐。它充分利用74LS160的LOAD同步预置功能把“归零”操作放到时钟边沿上彻底消除毛刺。接线思路低位的ENT和ENP接高电平高位的ENP接高电平ENT接低位RCO两片的CLK接同一时钟。然后把两片的LOAD引脚并接在一起接到一片74LS00与非门的输出端。与非门的两个输入接高位片的QC和QB也就是Q2和Q1用来检测数字50101。为什么检测5而不是检测6因为我们要让电路在计数到5之后、下一个时钟沿来临时预置0这样一来计数状态实际经历的仍然是0、1、2、3、4、5这6个状态加上低位片的10个状态正好60个周期。这背后有个关键点LOAD是同步的。当高位片从4跳到5的那一刻QC和QB同时为高与非门输出低电平LOAD被拉低但此时芯片不会立即归零而是保持5这个状态等下一个CLK上升沿到来时才把D3D2D1D0上的数据装入。我们把两片的数据输入D0-D3全部接地所以预置进去的就是0。于是电路的工作序列是……58、59、00、01……完美。与反馈清零法相比同步置数法少了一个瞬时状态数字6从未真正出现所以显示更干净级联时也不会有毛刺传导到下一级。代价仅仅是多分析一步“为什么检测5”但这恰恰是数字电路设计的乐趣所在。3.3 两种方案的仿真对比与选型建议在Multisim或者Proteus里把两个方案都搭一遍用虚拟示波器观察两个关键波形会得到很直观的认识。反馈清零法在高位片的QD引脚上会看到一个极窄的高电平毛刺这就是6状态存在的证据宽度大约等同于与非门和芯片清零响应时间之和一般在几十纳秒。同步置数法则在高位片QC的波形上干干净净没有任何多余毛刺从5直接清零波形是完整的六等分。我的建议是仿真阶段两个方案都做一遍加深对异步清零和同步置数这两个概念的理解实物制作阶段直接用同步置数法不要给自己找排查毛刺的麻烦。如果你后面打算在这个计数器后面再级联小时电路或者报警电路同步置数法是唯一不会让前级信号污染后级的方案。4. 从60进制到数字钟完整电路搭建4.1 秒脉冲源设计60进制计数器本身需要一个时钟信号做数字钟就需要一个周期精确为1秒的脉冲源。最经典的做法是用555定时器搭一个无稳态多谐振荡器但说实话555出来的频率精度不算高受温度、电源电压影响挺大一天走下来可能差好几秒。做课程设计或演示基本够用如果真要当表用不推荐。一个更稳的方案是用32.768kHz的石英晶振配合CD4060分频。CD4060内部自带振荡器和14级二分频器32.768kHz经过2的15次方分频后正好是1Hz而且晶振本身就准走时精度比555高两三个数量级。当然这样电路会复杂一些适合有PCB焊接经验的同学。用555时计算公式是频率f 1.44 / [(R1 2R2) × C]。想调到接近1Hz可以用R110kΩR268kΩC10μF算出来大约0.986Hz再用一个10kΩ多圈电位器串联在放电回路里微调。调的时候别只盯着数码管看用示波器看555输出脚波形最直观调到周期恰好1秒就行。4.2 译码显示电路接线计数器输出的是BCD码二进制编码的十进制数数码管不认识这个中间需要加译码驱动芯片。最常用的是74LS48或CD4511。这里注意一个坑74LS48输出高电平有效只能驱动共阴极数码管CD4511也是高电平有效同样配共阴。如果你手里只有共阳极数码管就得用74LS47或者CD4511配合PNP三极管反相当然也可以直接换用共阴管最省事。我一直建议初学者采购时直接买共阴数码管配74LS48接线最少。连接关系把计数器的QA、QB、QC、QD分别接到译码器的A、B、C、D输入译码器的a-g七个输出端通过限流电阻接到数码管的对应段。限流电阻阻值一般用220Ω到330Ω太小了数码管过亮甚至烧段太大了显示暗。共阴数码管的公共端直接接地。需要注意74LS48内部有上拉段输出可驱动LED但总电流还是有限的六个数码管同时点亮时建议用独立的5V供电不要在面包板上把所有器件都挂在一个细线上取电。4.3 校时与暂停等实用功能扩展一个能显示秒和分的计数器还不算真正的数字钟因为校时和暂停功能几乎必不可少。最简单的校时方法在秒脉冲源和计数器之间加一个单刀双掷开关一路接秒脉冲一路接一个手按的按键按键另一端接5V同时并联一个下拉电阻到地防止悬空时乱跳。按下按键时每一个下降沿/上升沿都算一个脉冲于是可以用手“点”出想要的时间慢是慢点但胜在直观。还有更高级的办法用一个4选1数据选择器比如74LS153切换快速校时脉冲和正常秒脉冲。快速校时脉冲可以用555生成一个大约10Hz的信号校时比分秒快得多。如果想增加暂停功能可以在秒脉冲和计数器之间串联一个与门比如74LS08一个输入接秒脉冲另一个输入接开关开关断开时输出恒为低计数器停止闭合时秒脉冲正常通过。注意与门的电源也要5V输出高电平约3.5V足够驱动74LS160的CLK了。5. 焊接与调试实操记录5.1 面包板验证阶段我自己的习惯是只要涉及数字电路先在面包板上把逻辑验证跑通再上烙铁。面包板搭电路别看简单真要一遍就调通还是需要几条经验的。第一供电网络先铺好。把5V电源接到面包板上下两条电源轨然后用红色跳线把每一排芯片的VCC引出来黑色跳线把GND引出来。74LS160的VCC是16脚GND是8脚DIP封装芯片跨在面包板中间的凹槽上引脚编号从左上角开始逆时针顺着走这一点好多第一次用面包板的同学都会搞错芯片插反了后面全乱套。第二芯片插进去之前先确认方向。半圆缺口朝上那么左上角就是1脚右下角就是8脚。插反了数脚位再对也没有用上电就可能烧芯片。每插一个芯片先用手摸一下外壳温度刚上电发烫基本都是电源接反。第三分模块测试。别想着一步到位把整个电路全部接好再上电。先把555搭好用示波器或者LEDLED串1kΩ电阻接到555输出看有没有1Hz闪烁再单独接第一片74LS160把CLR、LOAD都接高ENT、ENP接高看它在LED上是否从0数到9确认后再接第二片最后再接与非门反馈。每增加一个模块就验证一次出了问题能快速定位。5.2 实物焊接与连线规划面包板验证通过之后就可以把电路转移到洞洞板或者PCB上了。如果只是课程作业洞洞板就够了如果想长期使用或者作为成品展示建议画一块简单的PCB嘉立创打样也就几块钱。焊接洞洞板的关键是连线规划。我一般先把所有芯片按照显示从左到右、计数器在中间、电源在右侧的方式摆好用双面胶临时固定再规划走线。优先焊电源走线其次是地线然后再焊信号线。焊完一段就用万用表蜂鸣档量一下相邻焊点有没有桥接这个习惯能省下大量排查时间。还有一个细节74LS160的未使能引脚不能悬空。ENT、ENP如果不接地也不接高TTL电路会把它当作高电平处理但悬空时容易耦合干扰信号导致计数随机跳变。所有不用的输入端都要明确接高或接地这是TTL电路的基本修养。5.3 调试步骤与关键测量点上电后如果发现显示异常先按下面的顺序排查我这些年带学弟学妹做课程设计90%的问题都能通过这几步定位第一步测电源。用万用表测每个芯片的VCC和GND之间电压应该在4.75V到5.25V之间。电压正常再往下查。第二步测时钟。示波器探头夹在555输出脚或者CD4060的1Hz输出端确认有方波。没有波形就查555的供电和复位脚4脚必须接高电平。如果手边恰好没示波器用LED加限流电阻也可以看个大概LED正常闪烁说明时钟有了只是看不出频率准不准。第三步测单个计数器。断开级联只保留低位片给个按键脉冲观察低位片是否从0走到9然后归零。如果只走几步就卡住或者跳到奇怪数字优先检查LOAD和CLR的电平这两个引脚一高一低都不能悬空。第四步测级联和反馈。接上高位片后观察十位是否在个位从9归0时加1、到5之后是否在下一周期归零。这里要特别注意同步置数法的与非门接线是否正确。检测5是用QC和QB两个都是高时与非门输出低这个信号要接到两片74LS160的LOAD上不是CLR经常有人这里接错。第五步测译码显示。如果计数器计数正常但数码管显示不对多半是译码器接线或者共阴共阳不匹配。对照74LS48的数据手册逐段检查数码管的a到g段是否都能亮。6. 常见问题排查清单与经验总结6.1 经典故障现象与原因对照表做了这么多次数字钟表项目我把最常见的问题整理成一个排查表希望帮大家少走弯路故障现象可能原因排查方法数码管完全不亮电源没接好/译码器损坏/数码管公共端接错测芯片供电电压用导线直接给数码管某段加高电平测试计数到9就卡住不进位高位片ENT未接低位RCO或RCO误接ENP核对级联线确认只有RCO到ENT这一条数字乱跳不是正常的0-9CLK输入抖动/未使能引脚悬空时钟源加10kΩ下拉ENT/ENP全部接高显示到59后不能归零反馈信号接错芯片或接错引脚确认与非门输入接的是高位片QC、QB输出接两片LOAD十位能到9而不是5反馈信号没加或误用CLR清零导致只到5但下一位受到毛刺改为同步置数法接LOAD芯片发烫电源接反或输出短路立即断电检查VCC/GND和有无焊锡桥接数码管暗且拖影限流电阻过大/供电不足换220Ω限流电阻加强电源线宽度走时偏快/偏慢555参数不准用示波器测周期调整多圈电位器6.2 我的几点实操建议与心得关于全流程我最后再分享几个很细节但非常实用的点。给DIP芯片配一个IC座先焊座子再插芯片好处是芯片坏了随时换焊接时芯片也不用受热。我见过太多人直接焊芯片结果调试时怀疑芯片烧了拆下来极其痛苦。数码管的限流电阻不要省。LED虽然是电流型器件但直接把译码器输出接到数码管段上电流可能达到20mA以上译码器撑不住数码管寿命也会缩短。220Ω的限流电阻成本几分钱但能避免很多问题。接线颜色尽量统一红色接电源黑色接地其他颜色走信号。别小看这个习惯当你的洞洞板上有三四十根飞线时颜色就是你的救命稻草。我自己的原则是每一根线都记录在纸上焊完一个模块划掉一个从没因为线多而乱过。示波器不是万能的但没有示波器会让调试效率大打折扣。至少用万用表测高低电平逻辑笔也是不错的选择。如果实在啥仪器都没有把一个LED串1kΩ电阻当成逻辑检测灯接在不同引脚上也能判断大部分故障。最后说个项目之外的感受很多同学把这个项目当成一个“作业”来做照着网上的接线图抄一遍能出数就交差。但实际上这个项目的价值在于让你第一次完整感受到“时序”这个东西是怎么回事——计数器不是一瞬间把所有数字都显示出来而是在每个时钟沿按部就班地走。你把同步置数法的波形在示波器上拉出来看几遍再回去看课本上的时序图会发现以前完全看不懂的图突然就通了。这也是我为什么愿意花这么大篇幅讲原理和两种方案的对比因为动手实验的意义不是复现一个结果而是理解一种秩序。
返回列表