Arduino与Proteus仿真实例MCP23017IO扩展器驱动仿真
Arduino与Proteus仿真实例-MCP23017-I/O扩展器驱动仿真
MCP23017-I/O扩展器驱动仿真
1、MCP23017介绍
MCP23017/MCP23S17 (MCP23X17) 器件系列为 I2C 总线或 SPI 应用提供 16 位通用并行 I/O 扩展。两种设备仅在串行接口上有所不同:
- MCP23017——I2C 接口
- MCP23S17——SPI 接口
MCP23X17 由多个 8 位配置寄存器组成,用于输入、输出和极性选择。系统主站可以通过写入 I/O 配置位(IODIRA/B) 来启用 I/O 作为输入或输出。每个输入或输出的数据保存在相应的输入或输出寄存器中。输入端口寄存器的极性可以用极性反转寄存器反转。所有寄存器都可以被系统主机读取。
16 位 I/O 端口在功能上由两个 8 位端口(PORTA 和 PORTB)组成。 MCP23X17 可以通过 IOCON.BANK 配置为在 8 位或 16 位模式下工作。有两个中断引脚,INTA 和 INTB,它们可以与它们各自的端口相关联,或者可以逻辑或运算在一起,以便在任一端口导致中断时两个引脚都将激活。中断输出可以配置为在两种情况下激活(互斥):
- 当任何输入状态与其对应的输入端口寄存器状态不同时。这用于向系统主机指示输入状态已更改。
- 当输入状态与预配置的寄存器值(DEFVAL 寄存器)不同时。
中断捕获寄存器在中断发生时捕获端口值,从而保存导致中断的条件。上电复位 (POR) 将寄存器设置为其默认值并初始化器件状态机。硬件地址引脚用于确定设备地址。

MCP23017的I2C地址由A0、A1、A3决定,如下表所示:

2、仿真电路原理图

3、仿真代码实现
本次仿真使用的开源库如下:
1 | #include <Adafruit\_MCP23X08.h> |
4、仿真结果

文章来源: https://iotsmart.blog.csdn.net/article/details/121077947
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 秋意寒!
评论