主要有四种I/O扩展方法:
(1)并行总线扩展的方法
(2)串行口扩展方法
(3)I/O端口模拟串行方法
(4)通过单片机内I/O的扩展方法
IO口扩展可以通过以下芯片来实现:
1、并行扩展芯片,比如8255 ,8155等。
2、锁存器或缓冲器来扩展,比如74LS273,74LS373,74LS244,74LS245等等
使用锁存器拓展:74HC573,顾名思义,就是可以通过控制LE引脚锁住输入io的点平,保持输出不变,
3、串口-并口来扩展,比如74HC595,74HC164等等。
74HC595是一个8位串行输入、并行输出的位移缓存器
4、译码器来扩展,比如74HC138,74HC154等等。
38译码器74HC138进行拓展,三个引脚的二进制输入可变成8个引脚的分别输出。
一个8线IO输出扩展为64(40)线的实例
【HCT244】 NXP74HCT244/74HC244_TI 同相三态8路缓冲器/线路驱动器(1个)
74HC244;74HCT244——三态八路缓冲器/线路驱动器_阿念没有感情的博客-CSDN博客
【74HCT138D】 NXP74HCT138D 3至8线解码器/解复用器(1个)SN74HCT138 数据表 | 德州仪器 TI.com.cn
【74HCT259D】 品牌: NXP/恩智浦 8位可寻址D型锁存器(5个) 能够将单线路数据存储在八个可寻址锁存器中。
74HC259D/74HCT259D是8位可寻址锁存器 - 新品快讯 - 电子发烧友网
#define OUTDA0 BIT_ADDR(GPIOA_ODR_Addr, 8) //寻址259内部锁存器(A0)·GPIO
#define OUTDA1 BIT_ADDR(GPIOC_ODR_Addr, 9) //寻址259内部锁存器(A1)·GPIO
#define OUTDA2 BIT_ADDR(GPIOC_ODR_Addr, 8) //寻址259内部锁存器(A2)·GPIO
#define OUTDA3 BIT_ADDR(GPIOC_ODR_Addr, 7) //指向259的外部地址HCT138(A)·GPIO
#define OUTDA4 BIT_ADDR(GPIOC_ODR_Addr, 6) //指向259的外部地址HCT138(B)·GPIO
#define OUTDA5 BIT_ADDR(GPIOD_ODR_Addr, 15) //指向259的外部地址HCT138(C)·GPIO
#define StrobeA BIT_ADDR(GPIOD_ODR_Addr, 14) //259有源低电平使能输入(LE)·初始化是H.锁存:L---→H
#define DataBit BIT_ADDR(GPIOD_ODR_Addr, 13) //259数据输入(D)·GPIO ON/OFF(1/0)
//#define SWAarryRst BIT_ADDR(GPIOD_ODR_Addr, 12) //复位所有输出
锁存器、缓冲器区别:
通常在外围电路中,缓冲器用于输入、锁存器用于输出。
Refer: NI、研华、国产数据采集卡的参数比较_数据采集卡__中国工控网
1、锁存器把信号暂存以维持某种电平状态,只有在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号。通常只有0和1两个值。
2、触发器具有两个自行保持的稳定工作状态,根据不同的输入信号可以置成0或1的状态,输入信号消失后,触发器保持获得的新状态不变。
3、寄存器是用来暂存数码的,它由触发器和控制门电路组成。
4、缓冲器又称三态门,是寄存器的一种,输出既可以是一般二值逻辑电路,即正常的高电平(逻辑1)或低电平(逻辑0),又可以保持特有的高阻抗状态。