目录
前言
在51这种io资源非常有限的设备上,我们通常会尽量用较少的io口去控制更多的外设。这就需要我们借助一些辅助类的芯片。
- 74HC138译码器
- 74HC573锁存器
74HC138译码器
可接受3位二进制加权地址输入(A0, A1和A2),提供8个互斥的低有效输出(Y0至Y7)。注意,字母头上标—,或输出引脚口有O时,表示反向输出。
74HC138有3个使能输入端:仅当E1和E2低电平,E3高电平时芯片才有效,否则将保持所有输出为高。
不同的逻辑表示,但都殊途同归。
A0,A1,A2为3位二进制加权地址输入端口,例如当A2A1A0 = 101 时,其他门输出端全为高电平,只有Y5为低电平。
逻辑功能表如图
可以看出,3个使能位错误时,8个输出全为1。使能位正确,按A2A1A0表示的二进制所转换的10进制数选择一位输出端口为0。
所以这里可以看出一个问题,74HC138虽然可以控制8个设备,但实际上在同一时间只能控制一个为0,其余位皆为1。
74HC573锁存器
74HC573芯片引脚图
引脚介绍
OE(输出使能) | 低电平有效 | 数据输出允许 |
高电平无效 | 输出线为高阻态(保持) | |
LE(输入使能) | 高电平有效。 | 数据输入允许更新 |
低电平无效 | 数据输入不允许更新 | |
D0-D7:8位数据输入线 | 引脚 | D端输出 |
Q0-Q7:8位数据输出线 | 引脚 | Q端输入 |
只有当OE端为低电平、LE端为高电平时,Q端的输出才会和D端的输入保持一致(更新状态)
当OE端为高电平时,无论LE为何种电平,Q端都为高阻态,即无论此时D端如何变化,Q端总是保持当前状态,而不会随D端的数据变化而变化(锁存状态)
锁存器和三八译码器的协调工作
或非门:仅当两个输入=0时,输出=1。在蓝桥杯中,WR=0,所以138译码器选择一位输出0,可以控制对应的Y位输出1
在这里,Y位对应锁存器的输入使能
可以看出:
仅当138译码器选择Y4(二进制100),Y4C=1,锁存器有效连通,D输入=Q输出。
接下来就控制P0x位的电平来控制LED点亮即可(由图可得,低电平点亮)。如果需要锁住LED状态,控制138译码器不选择Y4即可
思考
在控制LED这里,译码器加锁存器的组合并不常用,因为本质上还是在控制P0x的每一个对应位来控制相应的LED,并没有减少所用的io口,除非是用锁存器锁住LED状态后,继续使用P0去控制其他外设,那才算节省了io(用3位io去腾出8位io,也可以更多)