74HC138可能是被应用最多的译码器芯片,没有之一。在单片机的地址译码、存储器的片选、IO口扩展这些场景里,到处能看到它的身影。这颗芯片看起来简单,8个输出、3个输入、3个使能脚,但用好它需要理解它的工作原理和使能逻辑。今天好好聊聊这颗经典芯片。
先看它的引脚和功能。74HC138有三个选择输入A、B、C(C是高位),三个使能输入G1、G2A(低有效)、G2B(低有效),八个互斥的低有效输出Y0到Y7。工作时,G1拉高、G2A和G2B拉低(三个使能脚都满足),根据CBA的二进制值(000到111),对应的那个输出被拉低,其他七个保持高电平。比如CBA=000,Y0输出低电平;CBA=111,Y7输出低电平。
三个使能脚的设计是138的精髓。G1是高电平有效,G2A和G2B是低电平有效,三个必须同时满足才能工作。这样设计的好处是多颗138可以级联扩展。比如用两颗138组成一个4线-16线译码器,把第四位地址线连到第一颗的G1和第二颗的G2A,当第四位是0时选第一颗,是1时选第二颗,两颗的输入ABC并联接低三位地址,就能实现16选1的地址译码。
最常见的应用是单片机外设的片选。51单片机的P2口是高8位地址,P0口是低8位地址加数据复用。把P2口的某几根线(比如P2.5、P2.6、P2.7)接到138的A、B、C,再用P2.7或者ALE信号做使能,就能给8个外设分配不同的片选地址。比如Y0对应地址0x0000到0x1FFF,Y1对应0x2000到0x3FFF,以此类推。这样ROM、RAM、IO口各占一块地址空间,不会冲突。
另一个常见用法是IO口扩展。单片机IO不够用的时候,用138加一个8位锁存器(比如74HC573),只需要用3个IO口就能控制8个输出。原理是3个IO口接138的ABC,选通某一路,然后把数据送到573的输入端,锁存下来。这样3个IO口扩展出8个输出,成本很低。反过来,74HC138也能配合8选1数据选择器反过来做输入扩展。
使用中注意几个细节。第一,输出是低有效,不要搞反了。很多新手把138的输出当成高有效来接,结果电路不工作。第二,CMOS器件的空闲输入脚不能悬空,三个使能脚如果某个不用,必须接死(比如G1接VCC,不用的G2A/G2B接GND),否则悬空的电平不确定会导致芯片乱工作。第三,138输出的电流能力有限(74HC系列低电平输出是25mA,高电平是5mA),如果要驱动大负载(比如三极管基极、继电器线圈),需要加驱动器或者用ULN2003这种达林顿阵列。
74HC138看似简单,却是数字电路里的基础组件。它的设计思路——用多个使能脚实现级联扩展、用互斥输出实现地址选择——在很多芯片里都能看到类似的影子。理解了138,再看其他译码器(比如74HC139双2线-4线译码器、74HC154 4线-16线译码器)就很容易了。做单片机系统时,合理用138能让地址分配清晰、电路简洁,是基本功。
上一篇:ZigBee组网实战教程:从星型到Mesh的网络搭建与调试
下一篇:没有了