当前位置: 首页 > news >正文

【数字逻辑】24进制LED综合控制实战!10灯精准执行(74HC161+138+139完整方案)

24进制LED综合控制实战!10灯按“奇灭→偶灭→依次灭”精准执行(74HC161+138+139完整方案)

刚做这个综合实验时,我对着一堆芯片和10个LED发懵:24进制怎么和LED灭灯顺序挂钩?为什么要拆成3个8进制?奇灭、偶灭、依次灭的逻辑怎么用电路实现?后来才发现核心是“把24个状态对应3个灭灯阶段,用计数器分阶段,译码器选LED,选择器控阶段切换”。今天就从需求拆解到模块接线,跟着做就能实现实验要求的灭灯逻辑。

在这里插入图片描述

一、先明确:实验要做啥?核心难点在哪?

1. 实验核心需求(必须先吃透)

  • LED数量:10个(LED1~LED10),初始全亮;
  • 灭灯顺序:分3个阶段,共24个状态(对应24进制):
    1. 阶段1(状态0~4):奇数灯依次灭(LED1→LED3→LED5→LED7→LED9);
    2. 阶段2(状态5~9):偶数灯依次灭(LED2→LED4→LED6→LED8→LED10);
    3. 阶段3(状态10~23):10个灯依次灭(LED1→LED2→…→LED10);
  • 控制核心:用24进制计数器生成24个状态,每个状态对应1个灭灯动作。
    在这里插入图片描述

2. 核心难点与解决思路

  • 难点1:24进制怎么实现?
    用2片74HC161(4位同步计数器) 拆成“3个8进制”(24=3×8),1片74HC161做2个8进制(低8位+中8位),另1片做高8位,3个8进制联动实现24进制。
  • 难点2:怎么让不同阶段灭不同灯?
    74HC138(3-8译码器) 把8进制状态转LED控制信号,再用74HC139(2-4选择器) 选当前阶段的信号生效(比如阶段1选低8位信号,阶段2选中8位,阶段3选高8位)。
  • 难点3:怎么确保1个状态只灭1个灯?
    74HC20(4输入与非门) 合并译码器输出,每个LED对应专属的“灭灯状态信号”,只有该状态下信号生效,其他状态灯保持亮。

二、器件分工:一张表看懂每个芯片的作用

不用记复杂参数,记住“模块分工”即可,新手按表找芯片功能:

器件型号所属模块通俗作用核心任务
74HC161×224进制计数器生成24个状态(0~23),1个状态=1个灭灯动作2片芯片拆3个8进制,联动实现24进制循环,进位信号控阶段切换
74HC138×3状态译码器把8进制状态(07)转8路控制信号(Y0Y7)3片分别对应3个8进制,输出“哪个灯该灭”的信号
74HC139×1阶段选择器选当前阶段的译码信号(低8位/中8位/高8位)接收计数器进位信号,切换3个阶段的信号输入
74HC20×n信号合并器把多个译码信号合并,控制单个LED灭灯每个LED对应1个与非门,只有专属状态信号输入时输出“灭灯指令”
共阴极LED×10显示模块按控制信号亮灭阳极接与非门输出,阴极串1kΩ电阻接GND,高电平亮、低电平灭
函数发生器时钟源提供触发信号输出1Hz方波(1秒1个状态切换,方便观察灭灯顺序)

三、核心模块设计:从24进制计数到LED灭灯的全流程

分4个模块拆解,每个模块有接线关键和验证方法,新手可分步实操:
在这里插入图片描述
在这里插入图片描述

模块1:24进制计数器(用2片74HC161实现)

设计思路:拆成“低8位(07)+中8位(815)+高8位(16~23)”
接线步骤(关键引脚必看)
  1. 低8位计数器(U1:74HC161)

    • 电源:VCC(16)接5V,GND(8)接GND;
    • 使能:CEP(7)、CET(10)接VCC(允许计数);
    • 清零:CR(1)接高电平(不清零),LOAD(9)接高电平(不置数);
    • 时钟:CLK(2)接1Hz方波;
    • 输出:Q2Q0(1412)接第1片74HC138的A2~A0(低8位状态),TC(11,进位端)接中8位计数器的CEP/CET(U2的7/10)。
  2. 中8位计数器(U2:74HC161)

    • 电源/使能:同U1,CEP/CET接U1的TC(U1计满8个状态时,TC=1,触发U2计数);
    • 输出:Q2Q0接第2片74HC138的A2A0(中8位状态),TC接高8位计数器的CEP/CET(U3的7/10)。
  3. 高8位计数器(U3:74HC161)

    • 电源/使能:同U1,CEP/CET接U2的TC(U2计满8个状态时,TC=1,触发U3计数);
    • 清零:当U3计到3(Q1=1, Q0=1)且U2计到7(Q2=1, Q1=1, Q0=1)时,用74HC20与非门输出低电平接CR(1),实现24进制清零(0~23循环);
    • 输出:Q1Q0接74HC139的A1A0(阶段选择信号)。
功能验证
  • 接示波器看U1~U3的Q输出:U1从000→111循环(8次),U2从000→111循环(8次),U3从00→10循环(8次),总共24次后清零,说明24进制正常。
    在这里插入图片描述

模块2:阶段选择器(74HC139)

设计思路:用U3的Q1~Q0选3个8进制的译码信号
接线步骤
  1. 电源与使能:VCC(16)接5V,GND(8)接GND,G2A/G2B(1/2)接GND(允许选择);
  2. 输入:A1A0(32)接U3的Q1~Q0(阶段信号:00=低8位,01=中8位,10=高8位);
  3. 输出:Y0Y2(46)分别接3片74HC138的G1(使能端),Y3(7)悬空(不用);
    • 当A1A0=00(阶段1):Y0=0,第1片138使能,其他2片禁用;
    • 当A1A0=01(阶段2):Y1=0,第2片138使能;
    • 当A1A0=10(阶段3):Y2=0,第3片138使能。
      在这里插入图片描述

模块3:状态译码器(3片74HC138)

设计思路:每片138对应1个8进制,输出“哪个灯该灭”的信号
接线步骤(以第1片138为例,对应低8位阶段1)
  1. 电源与使能:VCC(16)接5V,GND(8)接GND,G1(6)接74HC139的Y0(阶段1使能),G2A/G2B(4/5)接GND;
  2. 输入:A2A0(31)接U1的Q2Q0(低8位状态07);
  3. 输出:Y0Y4(1511)接74HC20的输入(对应阶段1的5个灭灯状态:Y0=灭LED1,Y1=灭LED3,Y2=灭LED5,Y3=灭LED7,Y4=灭LED9),Y5~Y7悬空(阶段1用不到)。
其他2片138接线逻辑
  • 第2片(中8位,阶段2):Y0~Y4接74HC20,对应灭LED2、LED4、LED6、LED8、LED10;
  • 第3片(高8位,阶段3):Y0Y9接74HC20(需多片20级联),对应灭LED1LED10。

在这里插入图片描述

模块4:LED驱动(74HC20+LED)

设计思路:每个LED对应1个74HC20,只有专属状态信号输入时,LED灭
接线步骤(以LED1为例)
  1. 74HC20(与非门)
    • 输入1:第1片138的Y0(阶段1灭LED1);
    • 输入2:第3片138的Y0(阶段3灭LED1);
    • 输入3~4:接高电平(不用,凑4输入);
    • 输出:接LED1的阳极;
  2. LED1:阴极串1kΩ电阻接GND;
    • 当阶段1Y0=0或阶段3Y0=0时,与非门输出1→LED1亮;
    • 当Y0=1(对应灭灯状态)时,与非门输出0→LED1灭。
其他LED接线逻辑
  • LED3:接第1片138的Y1+第3片138的Y2;
  • LED2:接第2片138的Y0+第3片138的Y1;
  • 以此类推,确保每个LED只在专属状态下灭,其他状态亮。

在这里插入图片描述

四、新手必避4个坑(我踩过的错,你别犯)

  1. 74HC161的进位端接反:把U1的TC接U2的CLK( instead of CEP/CET),导致U2不计数,24进制变成8进制,灭灯顺序混乱;
  2. 74HC138的使能端接错:忘了把G2A/G2B接GND,导致译码器不输出信号,所有LED一直亮;
  3. LED没串限流电阻:直接接电源,LED瞬间烧了,必须串1kΩ电阻,阳极接与非门输出;
  4. 74HC20的输入没接全:4输入与非门只接2个输入,其他输入悬空( instead of 接高电平),导致输出不稳定,LED乱闪。

五、测试步骤:分模块验证,避免整体出问题

新手别直接连整体电路,按以下步骤测,出问题能快速定位:

  1. 测计数器:断开译码器,接LED看U1U3的Q输出,是否023循环,24个状态后清零;
  2. 测选择器+译码器:给74HC139手动输入A1A0(00/01/10),看对应138是否输出低电平(用万用表测Y0~Y7);
  3. 测单个LED:给对应138的Y端手动输入高电平,看LED是否灭,其他状态是否亮;
  4. 测整体顺序:接1Hz时钟,观察LED是否按“奇灭→偶灭→依次灭”循环,24个状态后回到全亮。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    如图所示,我们的预计和演示结果相同,则奇偶数部分正确。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
http://www.dtcms.com/a/545059.html

相关文章:

  • 范式重构:可逆计算如何颠覆DDD的经典模式
  • 【win11】ffmpeg 去除mp4文件的音频
  • 东莞建设公司网站打开网站代码
  • 瑞萨SDK编译linux时,make menuconfig报错
  • 自助公益网站建设如何进行网站开发
  • 仓颉语言相机拍照功能实现深度解析
  • **发散创新:AI绘画编程探索与实践**随着人工智能技术的飞速发展,AI绘
  • linux命令-文件目录操作-1
  • 【完整源码+数据集+部署教程】【制造业&传送带】几何形状检测系统源码&数据集全套:改进yolo11-DGCST
  • 面试的时候项目怎么聊,才能发挥最大的价值
  • PsTools 学习笔记(7.2):通用功能与远程操作基础
  • 做网站浏览器必须用xp系统吗张掖市作风建设年活动网站
  • 内江网站建设公司清华建设工程有限公司公司网站
  • VxWorks入门小白菜鸟教程4 —— 异步I/O库(AIO)的使用
  • 基于k8s部署wordpress博客系统并实现数据的持久化
  • SQL 查询语句的子句的执行顺序
  • sql 双游标循环
  • SQL 189 统计有未完成状态的试卷的未完成数和未完成率
  • 有哪些做微信小游戏的网站建设网站后期人员薪酬
  • 黑龙江交通基础设施建设网站怎么做推广网站
  • 企业微信AI SCRM推荐:从技术适配与场景功能实践进行评估
  • 从开源到落地:SimpleBGC 三轴稳像平台全栈技术解析(下)
  • 零基础新手小白快速了解掌握服务集群与自动化运维(十六)集群部署模块——Keepalived双机热备
  • 网站建设论坛做一个网站的流程
  • 金仓数据库平替MongoDB:银行存款系统国产化实践
  • 基于 Spring AI Alibaba 搭建 Text-To-SQL 智能系统(前置介绍)
  • 搞笑资讯网站源码数据库支持的网站怎么做
  • 友思特应用 | 基于高精度双目散斑 3D 相机的放射治疗视觉定位应用
  • MCU寄存器配置深度解析:从原理到实践
  • 论文学习_LLM4Decompile: Decompiling Binary Code with Large Language Models