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

基于译码器和锁存器的运行逻辑的简易算法

 74HC138

def decoder_74hc138(E1, E2, E3, A0, A1, A2):output = [1] * 8  # 默认全高电平# 检查使能条件:E1和E2低电平,E3高电平if E1 == 0 and E2 == 0 and E3 == 1:# 计算地址索引(A2为高位,A0为低位)index = (A2 << 2) | (A1 << 1) | A0if 0 <= index < 8:output[index] = 0  # 对应引脚置低电平return output  # 返回Y0-Y7状态列表(0低/1高)

算法逻辑

  1. 使能检查:若 E1=0E2=0E3=1,译码器激活;否则输出全高。
  2. 地址解析:将输入 A0(LSB)、A1A2(MSB)组合为3位二进制数,转换为十进制索引(0-7)。
  3. 输出设置:对应索引位输出低电平(0),其余为高(1)。
    示例decoder_74hc138(0,0,1, 1,0,1) 返回 [1,1,1,0,1,1,1,1](Y3为低)。

 74hc573

def latch_74hc573(OE, LE, D, prev_Q):if OE == 0:          # 输出使能有效if LE == 1:      # 锁存使能:输出随输入变化return D.copy()else:            # 锁存保持return prev_Q.copy()else:                # 输出高阻态(用None表示)return [None] * len(D)

 

算法逻辑

  1. 使能判断
    • 若 OE=0(输出有效):
      • LE=1 时,输出直接传递输入 D
      • LE=0 时,输出保持上一次的 prev_Q
    • 若 OE=1,输出为高阻态(用 None 表示)。
  2. 数据锁存:通过 prev_Q 参数传递前次状态实现锁存功能。
D = [1,0,1,1,0,0,1,1]
prev_Q = [1]*8
# LE有效,更新输出
new_Q = latch_74hc573(0, 1, D, prev_Q)  # 输出 [1,0,1,1,0,0,1,1]
# LE无效,保持前次输出
next_Q = latch_74hc573(0, 0, [0]*8, new_Q)  # 输出仍为 [1,0,1,1,0,0,1,1]

http://www.xdnf.cn/news/349147.html

相关文章:

  • 算法解密:轮转数组问题全解析
  • 多源地震资料处理中的震源信号分离算法资料
  • Java内存分配
  • 【git】git fsmonitor
  • 第四章:基于langchain构造一个完整RAG系统
  • 移动端返回指定页面
  • 本地聊天机器人部署方案
  • 《运维那些事儿》专栏总目录(持续更新)
  • SQLite3介绍与常用语句汇总
  • 【日撸 Java 三百行】Day 5(Switch语句)
  • SOA 与微服务架构深度比较
  • 【C语言】(8)—指针2
  • chrome插件提取标签数据
  • Python cv2对象检测与跟踪:从基础到进阶实战
  • Java JWT 配置类 (JwtProperties) 学习笔记
  • el-table计算表头列宽,不换行显示
  • C++模板笔记
  • 使用DEEPSEEK快速修改QT创建的GUI
  • 【日撸 Java 三百行】Day 6(For语句)
  • Cursor降智找不到文件(Cursor降智)
  • C++漫步结构与平衡的殿堂:AVL树
  • SpringBoot应急知识学习系统开发实现
  • [计算机科学#10]:早期的计算机编程方式
  • 基于php人力劳务招聘系统开发功能需求分析【源码】
  • 千星计划小程序开发方案
  • SpringAI实现AI应用-自定义顾问(Advisor)
  • 基金从入门到荒废-基金的分类
  • #define ccw (0)和#define ccw 0什么区别
  • 数据结构 - 8( AVL 树和红黑树 10000 字详解 )
  • Python序列Day3