CD4013双D触发器经典应用:按键消抖、分频与信号同步电路详解
发布时间:2026/10/6 1:14:30 锦皓数字建站

1. 为什么到现在还在用 CD4013 这种老芯片很多新入门的同学看到 CD4013 第一反应是这都什么年代了一颗不到一块钱的芯片还要手动搭电路用一个 STM32 不香吗我一开始也是这么想的直到在某次项目里被一个“按键抖动”问题搞得头大才重新把 CD4013 从元件盒底翻出来。用了之后发现有些场景它真的比单片机省心太多。CD4013 是一颗双 D 触发器芯片CMOS 工艺14 脚封装内部集成了两个完全独立的 D 触发器。每个触发器都带有置位端 S 和复位端 R并且是上升沿触发。它最擅长干三件事分频、状态锁存、信号整形。这篇文章就用 5 个实际应用电路把这些功能全部串起来讲一遍。适合谁来参考如果你在学数字电路基础或者做 STM32、PLC、电源控制类项目时被按键消抖、分频、信号同步这类问题卡住这篇文章能帮你直接用硬件方案解决掉一部分。文章不会只丢电路图我会把为什么要这样接、参数怎么定、波形是什么样、有哪些坑全部写清楚。1.1 CD4013 的内部结构和真值表先花两分钟把芯片本身看明白。CD4013 内部有两个 D 触发器分别叫做触发器 1 和触发器 2引脚分布如下1Q1脚触发器 1 的输出1Q非2脚触发器 1 的反相输出1CLK3脚触发器 1 的时钟输入上升沿有效1R4脚触发器 1 的复位端高电平有效1D5脚触发器 1 的数据输入1S6脚触发器 1 的置位端高电平有效VSS7脚电源负极2S8脚触发器 2 的置位端2D9脚触发器 2 的数据输入2R10脚触发器 2 的复位端2CLK11脚触发器 2 的时钟输入2Q非12脚触发器 2 的反相输出2Q13脚触发器 2 的输出VDD14脚电源正极内部逻辑关系用真值表描述最直观。S 和 R 的优先级非常高只要 S 为高Q 就直接被拉到高电平只要 R 为高Q 就被打到低电平。当 S 和 R 同时为低时触发器才进入正常的数据传输状态在 CLK 上升沿到来时Q 等于 D。SRCLKDQ10任意任意101任意任意000上升沿1100上升沿0000非上升沿任意保持11任意任意不定态禁止最后一行特别重要S 和 R 不能同时为高。一旦同时为高输出状态不确定而且在两个信号先后释放时谁后变低谁就“赢”这在工程上属于不可靠状态所以设计电路时一定要避免。1.2 供电、输出能力和电气特性CD4013 的工作电压范围是 3V 到 18V这是 CMOS 4000 系列的典型特性。实测下来5V 供电时逻辑高电平输出约等于 VDD逻辑低电平接近 0V驱动能力只有 1mA 左右所以直接带 LED 最好加三极管直接带继电器更不可能。比较坑的一点是 CD4013 的最高工作频率不高而且受供电电压影响很大。5V 供电时最高时钟频率大概在 3.5MHz 左右12V 供电时能跑到 8MHz 以上。如果你要对几十兆赫兹的信号做分频CD4013 就用不了得换成 74HC74 或者 74LVC1G74。做低速控制、按键、低频分频这些场景CD4013 完全够用。它的输入阻抗非常高这也是 CMOS 器件的通病输入脚如果悬空电压会飘在中间态输出可能随机跳变而且静态功耗会明显增大。所以所有输入引脚绝对不允许悬空不用就接 VDD 或 VSS。这一点在后面的实操部分我会反复强调。2. 五个经典应用电路逐一拆解这五个应用是我从实际项目里总结出来的有些是拿来就用有些是踩过坑之后修改过的版本。每个电路我都会给出完整接法、参数计算方法和调试要点。2.1 应用一按键双稳态开关电路这个电路解决一个很常见的问题按一下按键LED 亮再按一下LED 灭。用单片机做实现很简单但如果只是控制一个小负载完全可以用 CD4013 搭建不需要写代码。电路接法如下把 1Q非 接到 1D也就是把反相输出反馈到数据输入CD4013 就变成了 T 触发器。按键一端接 VCC另一端接 1CLK同时 1CLK 通过一个 10kΩ 电阻下拉到 GND。1S 和 1R 都接地。按一次按键CLK 上会产生一个上升沿Q 翻转一次LED 状态就切换一次。这个电路有一个严重问题机械按键按下时会产生 5ms 到 20ms 的抖动导致 CLK 脚出现一连串高低电平跳变Q 可能翻转好几次表现为 LED 乱闪。解决办法是在按键和 CLK 之间加一个 RC 低通滤波器用电阻串联按键输出用电容并联到 GND让抖动被电容吸收掉。RC 参数需要权衡R 取 10kΩC 取 100nF 时时间常数是 1ms对于大多数质量稍好的按键够用如果按键比较“烂”C 可以加大到 1uF时间常数变成 10ms但这时 CLK 上升沿会变得非常缓慢。CD4013 对时钟边沿有要求边沿太缓会导致触发不可靠实际测试中 C 取 100nF 到 470nF 之间比较稳妥。2.2 应用二二分频电路标准接法二分频是 CD4013 最经典、最不需要动脑子的应用。一个 D 触发器接成 T 触发器形态输入一个方波输出就是半个频率的方波占空比仍然是 50%。接法非常简单1Q非 接 1D输入方波接 1CLK1S、1R 接地输出从 1Q 取。因为 Q非 和 D 连在一起每个 CLK 上升沿到来时D 的电平恰好是当前 Q 的反相电平所以触发器总是翻转。输入 1MHz 方波输出就是 500kHz。这个电路我实际测过VDD 取 5V 时输入 1MHz 方波输出波形非常干净边沿没有明显毛刺。需要注意两点第一输入方波的上升沿要足够陡缓慢上升的三角波会让触发器产生误动作前面说的 RC 滤波问题本质上也是这个原因第二S 和 R 必须可靠接地很多同学只是“懒得上拉”结果悬空导致输出乱跳白白浪费时间排查。二分频电路经常出现在频率计、时钟分频、信号源输出级。比如你手上只有一个 8MHz 晶振想让单片机跑 4MHz就可以用 CD4013 分一级前提是 8MHz 在这个芯片的能力范围内5V 供电稍微有点悬建议把 VDD 提到 10V 以上再测。2.3 应用三多级分频链与计数扩展一个 CD4013 内部有两个触发器每个都能单独做二分频所以一颗芯片就能实现四分频。把第一级的 Q 输出接到第二级的 CLK 输入第一级二分频第二级再二分频最终输出就是输入频率的四分之一。如果想把分频系数做得更大就把多颗 CD4013 串起来每颗芯片做两级分频。三级二分频就是八分频四级就是十六分频。分频系数永远是 2 的 n 次方这一点和 74LS90、CD4040 这种专用计数器不同虽然不够灵活但胜在原理简单、随意拼接。做多级分频时有一个容易忽略的问题每一级触发器都有传播延迟级联之后总延迟会叠加导致最后一级的输出上升沿相对输入信号延迟几十纳秒。低频场景无所谓高速时钟分频时这个延迟会导致时序裕量下降。CD4013 本来就跑不快所以建议分频链只工作在 1MHz 以下。另外多级分频链的每一级 S、R 都要接 GND如果不确定上电瞬间的状态可以在总复位线上做处理把所有复位端并联后接一个上电复位电路用一个 10uF 电容并联一个 10kΩ 电阻到 GND电容另一端接 VDD这样上电时 R 端会短暂为高把所有触发器复位到零之后电容充满电、R 端变低电路开始正常工作。2.4 应用四按键消抖电路 RS 锁存方案按键消抖是单片机开发者绕不开的话题。STM32 上做按键中断时通常要在中断里做延时或者标志位判断软件方案虽然灵活但会占用 CPU 时间而且如果按键连在睡眠唤醒引脚上抖动还可能引发多次唤醒。用 CD4013 做硬件消抖按键状态变化一次只输出一个干净的电平跳变CPU 只需要检测一次。最可靠的硬件消抖方案不是用 D 触发器的时钟端而是用 S、R 置位复位端构建 RS 锁存器。接法把两个按键的一端分别接到 1S 和 1R另一端接 VCC1S 和 1R 各自通过 10kΩ 电阻下拉到 GND。平时两个按键都没按下S 和 R 都是低电平输出保持原来状态。按下接 S 的按键S 变成高电平Q 直接被置 1即使机械抖动让 S 脚出现多个脉冲第一个脉冲到达时 Q 已经锁定为 1后面再怎么抖都没用。两个按键的本质是一个“置位按键”和一个“复位按键”类似启动和停止功能在工控面板上非常实用。如果你只有一个按键RS 锁存方案做不了单键切换得回到第一节说的 T 触发器方案并配合 RC 滤波。这两种方案代表的思路不同RS 锁存消抖依靠的是“最先到达的信号锁定状态”T 触发器消抖依靠的是“RC 滤波吸收抖动毛刺”。2.5 应用五异步信号同步与边沿检测跨时钟域处理是数字电路里比较进阶的内容。一个外部信号进入单片机、FPGA 或另一个时钟域之前如果完全不和本地时钟同步就可能产生亚稳态导致读取到不确定值。CD4013 作为双 D 触发器正好可以用来搭一个经典的两级同步器。接法如下外部异步信号接到第一级触发器 1D本地系统时钟接到第一级和第二级的 CLK第一级 1Q 接到第二级 2D第二级 2Q 作为同步后的输出。两级触发器使用同一个时钟上升沿采样外部信号先经过第一级即使第一级输出出现亚稳态经过一个时钟周期后也会稳定到合法电平第二级采到的就是干净信号。最后只使用第二级输出不直接使用第一级。这个电路对时钟频率有要求本地时钟至少是外部信号频率的 5 到 10 倍否则即使做了两级同步采样也跟不上信号变化。CD4013 的传播延迟决定了它只能用于低频同步实际项目中常见于几百 kHz 以下的信号同步更高频率用 74HC74 或 FPGA 内部寄存器更合适。如果还要做边沿检测在两级同步器后面加一个与门就行第二级 Q 和第一级 Q非 相与输出就是一个时钟周期宽的高脉冲表示检测到了上升沿。CD4013 内部没有与门需要外接一个 74HC08 或 CD4081逻辑很简单电路搭起来也不复杂。3. 实操中必须注意的坑画原理图容易焊板子也容易真正麻烦的是上电后不工作。我把这几年折腾 CD4013 踩过的坑整理了一遍按出现频率从高到低排列基本都是可以提前避免的。3.1 输入悬空、上电不定态和复位处理CD4013 上电瞬间的输出状态是完全随机的可能是高也可能是低。如果你的电路依赖上电后必须从某个状态开始就必须加复位处理。最简单的方法是把两个触发器的 R 端并联接一个 RC 上电复位电路也就是前面分频链里提到的那组电容电阻。上电时 VDD 快速升高电容电压还来不及变化R 端短暂为高输出被复位到 0一段时间后才恢复为低电平。还有一个常见错误S 或 R 引脚直接悬空。CMOS 输入阻抗极高一根没有连接的引脚就像一根天线周围电场一变电平就在阈值附近不停晃动输出就会跟着乱跳。我见过有人把 1S 悬空结果上电后 Q 偶尔为高偶尔为低用万用表量 1S 电压竟然是 2V 到 3V 之间的奇怪值这就是典型的悬空问题。所有不用引脚一律直接接 VDD 或 GND。上电复位电路的参数选择有一个经验值R 用 100kΩC 用 1uF时间常数 100ms这个数值在大多数电源场景下都够用。如果电源电压爬升很慢比如用线性稳压器软启动复位时间可能需要加长到 200ms 以上这时候增大电容比增大电阻效果更稳定因为过大的电阻配合 CMOS 输入端微小漏电流会产生额外压降。3.2 时钟边沿和 RC 时序的问题CD4013 是上升沿触发但并不是任何缓慢爬升的信号都能触发。数据手册里对时钟上升时间有要求虽然 CMOS 4000 系列在这方面比 TTL 宽松但输入信号如果是一个时间常数很大的 RC 充电波形上升沿持续几毫秒触发器可能会在边沿中间某个点误触发甚至出现输出毛刺。实践中RC 滤波后接 CLK 的电路经常遇到这个问题。我调试按键双稳态开关时C 从 100nF 改成 1uF 后按键按下偶尔不翻转按两三次才翻转一次。用示波器量 CLK 脚发现上升沿已经变成一条缓慢的指数曲线。解决办法是在 RC 滤波器和 CD4013 的 CLK 之间加一级施密特整形缓冲器比如 CD40106让缓慢上升的信号恢复成陡峭的边沿再送给触发器。如果不想额外加芯片就把 RC 的时间常数控制在 1ms 以内并且保证按键按下后 CLK 能恢复到接近 GND 的低电平。下拉电阻不能省否则 RC 放电路径不完整按键释放后电容上的电荷无处释放CLK 一直保持高电平后续按键就没有触发沿了。3.3 调试工具与关键波形测量调试 CD4013 电路万用表只能判断静态电平真要确认触发器有没有正常工作还得靠示波器。我调试分频电路时会同时看三路波形输入时钟、中间分频点、最终输出。这样一眼就能看出是哪一级出了问题。测量 R、S 端的静态电平一定用示波器探头或者高内阻万用表普通万用表电压档内阻也有 10MΩ问题不大但不要用带负载的 LED 指示灯直接并联在触发器的输出端。CD4013 驱动能力本来就弱一个 LED 加上限流电阻就可能把高电平拉低到 3V 以下影响下一级电路判断。如果你手头没有示波器可以用一个 LED 加三极管做简单的逻辑指示器把被测点接到三极管基极LED 亮表示高电平灭表示低电平。这个方法的缺点是看不到中间状态和抖动波形只能看静态结果所以排查问题时最好还是借一台示波器。4. 常见问题速查表现象可能原因排查方法输出一直为高或一直为低R 或 S 引脚悬空或上电状态不符合预期用万用表量 S、R 电压确认接地或接 VDD检查复位电路按键切换乱跳机械抖动没有滤除确认 RC 滤波是否加在 CLK 之前时间常数是否足够分频输出频率不对CLK 输入边沿太缓或者输入频率超出芯片能力用示波器看输入波形确认频率低于该电压下的极限值输出高电平电压偏低输出直接带负载超出驱动能力输出端加三极管或 MOSFET 驱动上电后状态随机没有上电复位电路在 R 端加 RC 复位时间常数大于电源爬升时间S 和 R 同时为高电路逻辑设计错误检查按键是否可能同时触发 S 和 R需要互锁触发一次变成两次CLK 上升沿有毛刺或按键抖动未被吸收加施密特整形或增大 RC 时间常数功耗异常大某个输入电压处于中间电平CMOS 导通检查所有输入电压确保不是悬空状态这张表是我从实际维护的项目里整理出来的每一行都对应过我遇到过的真实故障。排查时不要一上来就怀疑芯片坏了先量电源再量输入最后看输出这个顺序能省掉大量炸元件的时间。5. 从 CD4013 延伸出去的经验写完这五个应用之后你会发现 CD4013 的核心价值不是快也不是功能强而是“用最少的元件实现可靠的状态逻辑”。在很多控制场景里你要的并不是一个功能复杂的单片机只是一个确定性足够高的状态机那 CD4013 就可以胜任。我自己用 CD4013 做小项目时有一个习惯不管电路看起来多简单都会在 S 和 R 端加上下拉处理在输出端预留测试点并且把 VDD 退耦电容放在芯片旁边。CD4013 对电源噪声不算敏感但不意味着可以完全忽略一个 100nF 瓷片电容紧贴电源引脚能解决很多莫名其妙的输出抖动问题。如果你打算继续深入建议尝试把这些电路组合起来CD4013 做按键消抖输出接到下一级 CD4013 做分频再用另一路触发器做信号同步。这样几个模块拼起来就是一套不用单片机的小型控制系统。玩转 CD4013对理解触发器、时序逻辑和硬件消抖这些概念会有非常直接的帮助之后再去看单片机的定时器、外部中断和软件消抖思路会清楚很多。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。