单片机扩展I/O口的方法有许多,如选用可编程通用并行接口8255,选用CPLD技能等,本用74HC238+74HC573进行扩展,电路比较简单,编程便利。电路如图所示。
74HC238译码器可接受3位二进制加权地址输入(A0, A1和A2),并当使能时,供给8个互斥的高有用输出(Y0至Y7)。74HC238特有3个使能输入端:两个低有用(E1和E2)和一个高有用(E3)。除非E1和E2置低且E3置高,不然74HC138将坚持一切输出为高。74HC238的真值表如表所示。
E1 | E2 | E3 | A0 | A1 | A2 | Y0 | Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 |
H | X | X | X | X | X | L | L | L | L | L | L | L | L |
X | H | X | X | X | X | L | L | L | L | L | L | L | L |
X | X | L | X | X | X | L | L | L | L | L | L | L | L |
L | L | H | L | L | L | H | L | L | L | L | L | L | L |
L | L | H | H | L | L | L | H | L | L | L | L | L | L |
L | L | H | L | H | L | L | L | H | L | L | L | L | L |
L | L | H | H | H | L | L | L | L | H | L | L | L | L |
L | L | H | L | L | H | L | L | L | L | H | L | L | L |
L | L | H | H | L | H | L | L | L | L | L | H | L | L |
L | L | H | L | H | H | L | L | L | L | L | L | H | L |
L | L | H | H | H | H | L | L | L | L | L | L | L | H |
锁存器74HC573引脚如图所示,为输出使能端;D0~D7为数据输入端;Q0~Q7为数据输出端;LE为锁存操控端。
74HC573真值表
输入 | 输出 | ||
OE |
LE | ||
L | H | H | H |
L | H | L | L |
L | L | X | Q0 |
L | X | X | Z |
上表为74HC573的真值表,真值表中字母代码意义如下:H—高电平;L—低电平;X—恣意电平;Z—高阻态;Q0—前次的电平状况。从真值表中能够看出,当OE为高电平时,不管LE与D端为何种电平状况,其输出都为高阻态,此刻芯片不可控,因此在规划电路时,应将OE接低电平。当OE为低电平时,若LE为高电平,则Q端数据状况紧随D端数据状况改变;而当LE为低电平时,Q端数据将坚持住LE端改变为低电平之前Q端的数据状况。
74HC238的输出脚别离连接到各个74HC573的LE端,当某个74HC573的输出数据需求改变时,单片机操控74HC238的A0、A1、A2、E3引脚,使相应的输出端置高,74HC573的LE为高电平,答应修正数据,修正完成后,将74HC238的E3脚置地,其输出悉数为低电平,74HC573的LE为低电平,数据被锁存。