ARTICLE DETAIL

资讯详情

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

CD4013 D触发器5大经典应用:分频、消抖、计数与锁存电路详解

CD4013 D触发器5大经典应用:分频、消抖、计数与锁存电路详解 做电子这行十多年我手里最常翻出来的老片子不是哪颗新型单片机而是一块CD4013。一提起CMOS触发器很多刚接触电路的朋友第一反应是这玩意儿在STM32、Arduino满地走的时代还有啥用可只要你在项目里真正做过一次二分频电路或者被按键抖动折磨过两个晚上就会重新审视这颗几十年前定义的小芯片。CD4013本质上是两个独立的D触发器靠一根时钟线和D端就能完成分频、计数、锁存、整形这些最基本的数字功能而它最大的价值在于3.3V或5V供电时逻辑电平兼容常见单片机速度虽然谈不上快但应付kHz到几MHz的信号绰绰有余。这篇文章我就以自己实测过的接法为主把分频电路、边沿检测、按键消抖、级联计数、事件锁存这5个经典应用逐一拆开讲最后再把供电、上电复位、引脚悬空这些坑统一收拾一遍给正在玩CD4013或者打算用它做硬件逻辑的朋友省点弯路。1. 先搞清楚CD4013到底是什么一片芯片里藏着两个独立的D触发器1.1 引脚分配十四根腿芯片里其实有两套房CD4013是标准DIP-14封装里面是两个完全独立、互不干扰的D触发器。所谓独立意思是两组之间的时钟、数据、置位、复位都不相干可以各干各的活唯一的公共端就是电源VDD和地VSS。这一点在级联和做双通道电路时特别方便一片芯片当两片用。引脚名称功能说明1Q1第一组同相输出2Q1反第一组反相输出3CLK1第一组时钟输入上升沿触发4RST1第一组复位端高电平有效5D1第一组数据输入6SET1第一组置位端高电平有效7VSS电源负极GND8SET2第二组置位端9D2第二组数据输入10RST2第二组复位端11CLK2第二组时钟输入12Q2反第二组反相输出13Q2第二组同相输出14VDD电源正极很多第一次用的人会在这几个引脚上犯迷糊SET和RST到底哪个优先D端是什么时候采样答案全在看懂真值表。1.2 真值表是核心其他都是它的衍生物SETRSTCLKDQQ反高低××高低低高××低高高高××高高低低上升沿高高低低低上升沿低低高低低无上升沿×保持保持真值表里最有价值的信息是SET和RST是异步的优先级最高时钟来了也得让路没有时钟上升沿时输出就是锁死的D端爱怎么变就怎么变不影响输出。这个锁存特性让CD4013天然适合做按键消抖、状态保持这类应用。我习惯把它理解成一个照相机CLK的上升沿就是快门按下的那一刻把D端状态拍下来存住SET和RST则是两个强制覆盖按钮一按下去不管照片里是什么直接改成高或者低。重点提示SET和RST同时为高是禁止状态此时Q和Q反会同时为高。平时用到的绝大多数功能电路都要确保这两个引脚不会同时被拉高。1.3 在单片机时代它凭什么还能上板子肯定有人问这些东西我用STM32的GPIO加几行代码也能做为什么还要焊一片CD4013我的回答是看场景。需要毫秒级、微秒级实时响应的任务硬件触发器没有任何代码延迟也不存在程序跑飞的问题纯硬件逻辑电路不依赖晶振、固件、编译器上电就能工作调试成本低一片CD4013的成本也就是几毛钱静态功耗在µA级电池供电的产品很合适工业环境里CMOS的抗干扰能力比普通逻辑门好3~15V宽电源电压也让电平匹配更容易。当然它的短板同样明显速度比不上74HC系列输出驱动能力弱直接带LED都要掂量一下。所以它的定位不是替代单片机而是在关键路径上给你兜底的那颗小芯片。2. 应用一二分频电路——最经典的触发器接法2.1 为什么把Q反接到D输出频率就少了一半二分频电路是CD4013第一个要学的接法接线少到不可思议把反相输出Q反接到D端就完成了从D触发器到T触发器的变身。工作过程是这样的某个CLK上升沿到来时D端是Q反的旧值。如果之前的Q是高Q反就是低D采到低Q翻成低反过来如果之前的Q是低Q反是高D采到高Q翻成高。也就是说每个时钟上升沿Q必定翻转一次。输入两个周期输出才完成一个完整的高-低循环频率恰好是输入的一半。二分频接线使用第一组触发器 VDD(14) —— 5V VSS(7) —— GND CLK(3) —— 信号输入比如NE555的输出 D(5) —— 接 Q反(2) SET(6) —— GND RST(4) —— GND Q(1) —— 分频输出这个接法的另一个好处是不管输入信号占空比是多少输出永远是50%占空比的方波。因为Q的高电平时长等于输入信号的周期相邻两个上升沿之间的时间低电平时长也是输入周期高、低时间必然相等。这个特性在需要精确方波的场合非常有用。2.2 实测波形和速度边界我在面包板上用NE555输出2kHz方波接CLK示波器看Q端输出正好是1kHz方波上升沿比输入略有延迟也就是触发器的传输延迟。CD4013在5V供电时典型传输延迟在几十到一百多纳秒对低速信号完全无感但如果你想分频的是高频信号就要看手册里最高时钟频率这个参数了。按实测和手册数据5V供电时CD4013最高输入时钟大约在8~10MHz左右提高到10V供电能跑到16MHz以上。再高就得换74HC74或者74AC74。所以它适合的是时钟源、晶振信号、NE555这类MHz以下的分频需求别拿它去分频几十MHz的有源晶振。2.3 做二分频时容易忽略的两个细节第一个是SET和RST不能悬空。二分频只用了Q反到D这一条反馈很多人把SET、RST晾在那儿不管结果上电后输出状态随机有时甚至两个输出都是高。稳妥做法是把SET和RST都接GND让触发器正常进入时钟控制状态。第二个是上电瞬间的初值问题。CMOS触发器上电时Q有可能是高也可能是低二分频倒不挑初值反正第一个时钟一到就会翻转但如果你是用分频后的信号去控制LED轮流闪最好能看到初始状态是确定的这时候就需要加一个上电复位电路后面第6节会专门说。3. 应用二边沿检测与脉冲整形——把慢吞吞的信号变成干净脉冲3.1 边沿触发和边沿检测是两个层面的东西中文资料里讲CD4013时经常会说这是一个边沿触发器指的是它内部是边沿触发的工作方式只在CLK上升沿才采样D端。但实际工程中大家说的边沿检测往往是要实现另一个功能输入信号出现一个跳变比如从低到高时输出一个宽度确定的脉冲供后级去触发、计数或者采数据。这两个词容易把人绕晕我在这里先掰开CD4013本身就只响应边沿而我们要做的边沿检测电路是在它外面接RC把触发后的Q变成一个自己有始有终的定时脉冲。3.2 用复位端RC做单稳态脉冲这是一段非常实用的接法D端接VDDCLK接待检测信号Q端通过一个电阻R接到RST引脚RST引脚再对地接一个电容C。工作过程CLK上升沿到来Q瞬间变高这个高电平通过R给C充电RST引脚的电压慢慢上升。当RST电压爬到CMOS阈值大约VDD的一半时异步复位生效Q被拉回低电平脉冲结束。C上的电荷随后通过R和Q端此时为低放掉电路恢复初始状态等待下一个上升沿。边沿检测/脉冲整形接线以检测上升沿为例 D(5) —— VDD CLK(3) —— 待检测信号 Q(1) —— 输出定宽脉冲 R —— Q(1) 与 RST(4) 之间 C —— RST(4) 对地 SET(6) —— GND用示波器看无论输入信号是高电平持续10µs还是10ms输出脉冲宽度都由R和C决定。这个电路本质上是把D触发器改造成了一个单稳态触发器也是很多仪器里把任意宽度的触发信号统一成固定宽度的常用做法。3.3 脉宽怎么算调试时看什么输出脉宽大约等于0.7倍的R×C。我常用的组合电阻R电容C理论脉宽适用场景10kΩ10nF≈70µs给单片机中断脚一个短触发47kΩ0.1µF≈3.3ms驱动普通继电器线圈前整形100kΩ0.1µF≈7ms可见LED指示、蜂鸣器提示100kΩ1µF≈70ms模拟一个长按信号的产生实际调试时有两件事要留意一是CD4013的复位阈值不是精确的VDD/2不同供电电压下脉宽会有偏差所以对脉宽精度要求高的场合最好实测校准二是这个电路有一个恢复时间就是C放完电需要的时间如果在恢复时间还没结束就又来一个上升沿第二个脉冲会比第一个窄。想缩短恢复时间可以在R两端反并联一只1N4148阳极朝向RST端阴极朝向Q端这样Q变低时电容能快速泄放。检测下降沿也不难先用一片CD4069或CD40106里的一个反相器把输入信号反相再送进CLK原来的下降沿就变成了上升沿原理完全一样。4. 应用三按键消抖——一片CD4013给机械开关治病4.1 机械开关抖动到底有多严重机械按键或拨动开关的金属触点接触瞬间并不是一次干净的接触而是会在几毫秒内反复通断这个现象叫接触抖动。用示波器在10ms/格下观察普通按键的抖动时间一般在5~20ms劣质一点的微动开关能到30~50ms。如果把这样的信号直接送给单片机外部中断或者计数器一个按一下会被看成好几次动作于是出现按一下跳两格、计数翻倍这些经典故障。有人习惯在软件里延时20ms再读一次来解决这招在大多数场合有效但在边沿触发的场合比如按键接外部中断、按键作为计数脉冲就会力不从心因为软件延时做不到把已经产生的多个上升沿合并成一个。4.2 拨动开关专用SET和RST组成的SR锁存消抖CD4013最强的消抖武器其实是那一对异步的SET和RST端。把这两根引脚当成一个SR锁存器来用抖动问题几乎可以物理消灭。SR锁存消抖接线配合拨动开关/自锁开关 开关公共端 —— VDD 开关触头A —— SET(6) 开关触头B —— RST(4) SET(6) —— 对地接100kΩ下拉电阻 RST(4) —— 对地接100kΩ下拉电阻 D(5) —— 悬空或接GND均可 CLK(3) —— 接GND Q(1) —— 输出当开关拨到A侧时SET被VDD拉高Q立即变为高电平。之后哪怕触点在A侧反复抖动几百次Q都已经锁在高位纹丝不动当开关拨到B侧RST被拉高Q变成低电平。整个过程没有任何RC时间常数参与响应是即时的开关本身的质量和抖动长短都不再重要。注意SET和RST绝对不能同时为高否则输出进入禁止状态Q和Q反会同时为高。好在绝大多数拨动开关都是先断后合不会出现两端同时接通的瞬间如果你用的开关存在短暂同时导通的可能务必在SET和RST上各串联一个1kΩ电阻做保护。4.3 单按键专用RC滤波进CLK再加施密特整形如果想处理的是普通的轻触按键按一下、松一下的瞬时按键上面的方法就不适用了因为触头只有一组。这时可以用RC滤波时钟边沿触发的思路按键按下时VDD通过按键给CLK引脚上的电容充电由于RC时间常数远大于抖动时间电容上的电压只会平稳地爬升抖动被电容抹平当电压爬过CD4013的输入阈值才产生一个上升沿触发器只动作一次。单按键消抖接线输出为单次触发脉冲 按键一端 —— VDD 按键另一端 —— CLK(3) CLK(3) —— 对地接100kΩ电阻 CLK(3) —— 对地接1µF电容与电阻并联 D(5) —— VDD需要单次高脉冲时 SET(6) —— GND RST(4) —— GND Q(1) —— 输出R×C取值很关键。抖动最长按50ms算RC时间常数至少要做到100ms以上我用100kΩ加1µFτ100ms实测效果不错按得快一点也不会漏触发。要注意的是直接把这个慢爬升信号送给CLK理论上存在在阈值附近抖动导致多次触发的风险所以最稳妥的接法是在RC之后串一个CD40106施密特反相器做整形再把上升沿送给CLK。我个人的习惯是要求不高的场合直接进CLK要求高的场合必加CD40106。4.4 和STM32软件消抖怎么配合我知道很多朋友是单片机选手看到这里会想STM32的按键消抖我都是软件做的还有必要加硬件吗说说我的观点。STM32的外部中断EXTI本身没有数字滤波功能虽然定时器输入捕获模式自带数字滤波器但普通GPIO外部中断不提供。如果你的按键脚直接接EXTI做低功耗唤醒按下瞬间产生一串抖动边沿芯片会被反复唤醒软件里加了几十毫秒消抖也只能亡羊补牢。更实际的做法是按键脚先过一个简单的RC滤波或者用CD4013消抖再进MCUMCU只负责检测一个干净的边沿。这样CPU不用在中断里反复读引脚、延时、确认代码简单了功耗也降下来了。硬件消抖不是要替代软件而是把脏活挡在门外。5. 应用四级联分频器与二进制计数器5.1 T触发器把D触发器改装成翻转器第2节的二分频电路其实就是D触发器接成T触发器的典型用法D端接Q反每个时钟翻转一次输出频率减半。CD4013里有两个独立触发器把第一组的输出送到第二组的CLK就能一路分下去。这里有个细节值得说清楚第二级触发器的时钟来自第一级的输出所以它不是和输入时钟同步的而是跟着上一级的边沿走。这种级联方式在概念上叫异步计数器也叫行波计数器因为进位信号像水波一样一级一级传下去。5.2 两级级联做成4分频还能当2位计数器用把CD4013的两个触发器都接成T模式各自的D接自己的Q反第一组CLK接输入信号第二组CLK接第一组的Q反就能得到一个标准的2位二进制计数器和4分频输出。注意这里要用Q反而不能用Q原因我在后面会说。级联4分频/2位计数器接线 第一组CLK(3) —— 输入信号 第一组D(5) —— 接 Q反(2) 第二组CLK(11) —— 接 Q反(2) —— 关键接第一组的反相输出 第二组D(9) —— 接 Q反(12) SET(6)、RST(4)、SET(8)、RST(10) —— 全部接GND 第一组Q(1) —— 计数值最低位LSB 第二组Q(13) —— 计数值最高位MSB输入脉冲序号Q1LSBQ2MSB计数值0初始000110120123113400回到0我做过一个很土但很实用的双闪灯NE555输出2Hz方波送进CD4013二分频Q和Q反分别通过限流电阻和三极管驱动两个LED两个灯就交替闪烁频率1Hz效果和市面上的车用双闪模块一样成本不到两块钱。类似的思路还可以做步进脉冲发生、周期信号分频这类前置电路。5.3 为什么第二级要接Q反以及行波延迟要注意什么很多资料画的是Q直接接下一级CLK这样也能实现4分频但读出来的计数值顺序是00、11、10、01不是二进制递增的顺序。原因很简单CD4013是上升沿触发Q在每个奇数脉冲到来时产生上升沿Q反则在每个偶数脉冲时产生上升沿。要让Q2在Q1从1变0时翻转恰好应该用反相输出去驱动下一级CLK。如果你只需要分频、不需要读数两种接法都能用如果你要把它当计数器用就按我上面的接法。行波计数器的天生毛病是进位延迟Q2的变化永远比Q1晚一个触发器的传输延迟。分频输出本身没影响但如果后级电路要在同一时刻读取Q1和Q2的组合就可能读到过渡状态比如Q1已经变为1、Q2还没变读数短暂地出现错误。处理办法有两个一是把读取动作同步到输入时钟的稳定阶段二是干脆不用异步计数换CD4020这类同步计数器。对大多数kHz级别的分频应用来说这点延迟根本不影响但能把原理搞清楚排查问题时就不会瞎猜。6. 应用五瞬态事件锁存与双稳态开关6.1 报警信号锁存SET负责记录RESET负责清账CD4013的SET和RST是异步的这意味着哪怕输入只是一个1µs的短脉冲也能立刻改变输出状态并一直保持。这个特性用在事件锁存上非常漂亮。典型的场景是报警电路一个比较器或者传感器模块输出一个很短的过流/超温脉冲你希望这个事件被记录下来驱动LED一直亮或蜂鸣器一直响直到人工确认之后才清除。单片机来做这事要时刻轮询或开中断而CD4013天生就会记住。报警锁存接线 故障信号短暂高脉冲 —— SET(6)SET对地接100kΩ RST(4) —— 接手动清除按键按键另一端接VDDRST对地接100kΩ D(5) —— GND CLK(3) —— GND Q(1) —— 经限流电阻接LED或驱动三极管故障脉冲一来Q立刻变高并保持操作人员按下清除键RST短暂拉高Q复位。这个电路我做过好几版最省心的地方在于它没有软件参与断电再来电时事件记录直接清空符合大多数报警可确认、上电即复位的需求。6.2 单键双稳态开关按一下开、再按一下关另一个高频需求是用一个按键控制一个负载的通断即单键双稳态开关。实现起来就是把第4节的单键消抖和第2节的T触发器组合按键先经过RC加施密特整形产生一个干净上升沿送到CLKD接Q反输出Q经过MOS管或继电器驱动负载。单键双稳态开关接线 按键RC消抖 —— 进CLK(3) D(5) —— 接 Q反(2) SET(6) —— GND RST(4) —— 接上电复位电路见6.3 Q(1) —— 接驱动管/MOS管栅极每按一次输出翻转一次。要注意的是Q端驱动能力弱直接接电磁继电器线圈或功率MOS管栅极要加三极管或专用驱动MOS管栅极电阻比较大的情况下可以直接驱动AO3400这类逻辑电平MOS管我实测是能带的但为了保险栅极对地还是加一个100kΩ下拉电阻防止上电瞬间误开通。6.3 上电复位电路为什么必须加双稳态开关和报警锁存这类记忆型电路最烦人的问题就是上电状态不确定。CMOS触发器上电时Q可能是高也可能是低如果负载是电机之类的东西上电就自己打开是绝对不允许的。解决办法是在RST引脚上加一个上电复位电路RST对地接100kΩ电阻VDD通过0.1µF电容接到RST引脚。上电瞬间电容两端电压不能突变VDD的阶跃会通过电容耦合到RST产生一个短暂的高电平脉冲把Q强制复位为0之后电容充满RST被100kΩ拉低电路进入正常工作状态。这个复位脉冲的宽度大约等于R×C100kΩ配0.1µF大概是10ms足够可靠复位了。如果手头没有电容也可以用最简单粗暴的办法让产品上电时由单片机在开机初始化阶段给RST脚发一个几十微秒的高电平脉冲但这要求系统里本来就有单片机和纯硬件方案的初衷就背道而驰了。7. 实战避坑供电、悬空、静电与慢边沿7.1 供电电压选多高性能差出一倍CD4013的标称供电范围是3~18V但不同电压下的表现差异很大。电压越高逻辑阈值越高、噪声容限越大、最高工作频率也越高电压越低速度越慢、输出驱动能力越弱。如果你是和3.3V单片机配合那就老老实实让CD4013也用3.3V供电这样输出电平和MCU的IO完全匹配。千万不要做芯片3.3V、输入信号5V这种混接因为输入端保护二极管会被正向导通轻则漏电重则影响整个电路工作。去耦电容是另一个容易被忽视的点。VDD和VSS之间我习惯在紧贴芯片的位置放一只0.1µF陶瓷电容电源线稍微长一点还喜欢在入口处并联一只10µF电解电容。别小看这个电容我踩过一次坑面包板上飞线供电没加去耦芯片在接近最高频率工作时逻辑乱跳加了0.1µF之后立刻稳定。7.2 CMOS输入悬空比短路还麻烦CMOS输入端是极高阻抗的浮空的引脚会停在工作阈值附近两个内部沟道同时半导通静态电流从µA级涨到mA级还可能把周围的干扰信号拾进来导致逻辑输出随机抖动。所以CD4013上所有不用的输入端都必须接VDD或GND不能悬空。具体来说第二组触发器不用的时候把D2、SET2接到GND把RST2接到VDD让整个触发器保持复位态或者简单一点D2、SET2、RST2全接GND反正没有时钟输入也不会动作。第一组的SET、RST在正常二分频电路里也要接GND。这是焊板前就该画在图纸上的事而不是上电后发现电流不对再排查。7.3 静电防护和焊接建议CD4000系列虽然输入端有保护二极管但抗静电能力远不如74HC系列那么皮实尤其在干燥的冬天手摸芯片引脚前最好先摸一下接地物体。我习惯用DIP插座来焊芯片插上去随时能换既方便调试也降低了焊接静电风险。电烙铁要用接地的别用那种几十块钱不接地的便宜货去焊芯片焊坏都是悄悄的。如果产品要量产建议在PCB设计时把这颗芯片放在靠近连接器的地方所有外部线缆进来先经过串联电阻或TVS再去芯片引脚。CD4013说是抗干扰强但也不是刀枪不入。7.4 慢边沿信号必须过施密特整形第4节提到RC消抖后直接进CLK有风险这里展开说原理CMOS逻辑门的输入阈值不是单一一个点而是有一个不灵敏区理论上只要边沿足够干净慢爬升的RC信号也会在过阈值那一刻触发一次可实际上电源纹波、外界干扰会叠加在这个慢爬升的信号上导致电压在阈值附近来回穿越触发器就可能被多触发一次。施密特触发器的滞回特性就是专门治这个毛病的输入爬上去和掉下来有不同的阈值点中间留了一个死区小幅抖动根本没机会穿越两次。所以我的通用建议是凡是RC产生的慢边沿要进CD4013的CLK前面加一片CD40106。CD40106一片有六个施密特反相器用掉一个还剩五个成本几乎可以忽略。最后再分享一个我自己的习惯我会把所有用过的CD4013经典接法画成小卡片贴在桌边二分频、SR消抖、RC单稳态、上电复位每张卡片上标注实测的电阻电容值和波形。因为这种小电路太常用了几乎每个项目里都会冒出来一处随手抄一张卡比对着数据手册现推真值表快得多。希望这篇整理也能成为你案头的一份参考少踩几个我当年踩过的坑。
返回列表