做数字电路设计或者单片机扩展的时候,经常会遇到需要用少量IO口控制多个外设或者存储芯片的情况,这时候译码器就派上用场了。74HC138是最常用的一款3-8译码器,三根输入线就能控制八根输出线,相当于把3个比特的二进制地址翻译成8种状态,只用三个IO就能选通八个不同的通道。今天就聊聊74HC138的工作原理和实际应用。
先看引脚定义。74HC138有24个引脚,三个地址输入端A、B、C,三个使能端E1(低有效)、E2(低有效)、E3(高有效),八个输出端Y0到Y7,再加电源VCC和GND。工作的时候,三个地址输入组合成0到7的数字,对应的那个输出引脚就变成低电平,其他输出保持高电平。比如CBA=000时Y0输出低,CBA=111时Y7输出低。
使能端很重要,必须同时满足三个条件才能工作:E1和E2为低电平,E3为高电平。只要有一个不满足,八个输出全部输出高电平,相当于全部不选通。这个设计让多个138可以串级使用,比如用第一个138的输出去控制第二个138的使能端,就能扩展出更多的译码通道。
典型应用场景之一是单片机的地址译码。比如51单片机有16位地址线,但有时候需要扩展多片RAM或者EPROM,这时候用高位地址线接138的输入端,138的输出分别接每片存储芯片的片选脚,这样就能用几个IO口实现对多个芯片的选择。8051扩展外部存储器的经典电路里就经常用到138。
另一个常见用法是扫描显示驱动。比如8位数码管动态扫描,可以用138的输出分别接每个数码管的位选脚,每次选通一位,然后往段选口送对应的段码,快速循环就能实现多位数码管的显示。因为138是低电平有效输出,而很多数码管是共阴的,片选信号需要低电平来选通,直接对接就行。
还有一个用法是做IO口扩展。单片机的IO口不够用的时候,用两个138配合起来可以用6个IO口扩展出64个独立的选通信号,这在多通道数据采集系统里特别实用。比如需要控制64路模拟开关,不可能用64根线,用两个138级联就解决了。
使用的时候要注意138的驱动能力。74HC系列的输出电流大概是25mA,一般的TTL负载或者LED都能带得动,但如果要驱动继电器或者大功率MOS管,中间需要加驱动芯片(比如74HC245或者ULN2003)。另外输入端如果有悬空的情况,必须用电阻上拉或者下拉,不能让TTL输入悬空,否则输出状态不确定。
下一篇:没有了