范例五 基于PCF8574的USB2ISP-DIP28的并行IO扩展实验<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
l 硬件平台:USB2ISP-DIP28和PCF8574
PCF8574是一款I<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2C串行总线转并行IO输出的扩展芯片,带漏极开电路的中断输出,可以兼容大部分的微控制器,完成数据的输入输出,IO带锁存输出,并具有较大的电流驱动能力,可以直接驱动LED。本范例将利用USB2ISP-DIP28适配器的USB转I2C接口功能,完成从I2C总线接口到并行IO的扩展。
l 硬件连线
如下图所示给出了PCF-8574与USB2ISP-DIP28的电路原理图。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
图5.18 PCF-8574的I2C-并口的扩展电路原理图
本例令I2C器件片选引脚A0,A1,A2接地,因此PCF8574的设备地址为0x40,下面是实验搭建的电路。
图5.19 PCF-8574的I2C-并口的扩展实验电路
图5.19中,P0和P1,P4,P5分别接了2个5V直接驱动的发光二极管L1,L2的负正极,用以观察并口的输出电平。INT中断引脚接微控制器的INT端,当外部数据通过P0-P7口输入的时候,PCF8574产生一个边缘信号触发微控制器的中断,在中断服务程序中完成I2C数据的读取。本范例未采用微控制器,INT中断未接,采用手动I2C读取数据。
l 范例步骤
按图5.18和5.19所示,搭建好实物电路,启动USB-ezIO,这里选用I2C接口菜单下的I2C测试模块来完成PCF8574的I2C-并口功能演示,如下所示:
图5.20 I2C协议测试模块
数据输出实验
首先,完成PCF8574的IO的数据输出实验,即通过PCF8574将I2C的串行数据通过P0-P7并行输出。下面是PCF8574的写模式下的时序图。
图5.21 PCF8574的I2C写模式下的时序
从时序图中可以得到第一个指令字节为0x40(写模式),第二、三字节为数据,测试表明PCF8474可以支持连续多字节的输出。这里需要注意的是时序中第一个数据字节的P5为1,而时序图表明P5输出一直为低电平,而事实的测试表明,P5在输出的时候和其他输出位是一样的,因此这个时序图有些问题。我们来看几个例子。例如使得L1,L2均点亮, L2亮L1灭,L1亮L2灭,设置分别如下:
(a)
(b)
(c)
图5.22 (a)(b)(c)为I2C协议测试模块的IO输出设置
得到的实验结果分别如下所示:
(a1) (b1) (c1)
图5.23 (a1)(b1)(c1)为PCF8574的IO输出结果
数据读取实验
为了读取P0-P7口的电平,将P0,P1接高电平,P2,P3接低电平,其余的引脚悬空,来读取PCF8574的P0-P7的电平值,PCF8574的I2C的读时序如下所示:
图5.24 PCF8574读模式下的时序
从时序图可以看到,PCF8574读模式下的设备地址为0x41,因此USB-ezIO模块设置和读取的结果如下:
图5.25 PCF8574的端口数据读取结果
读取的结果是3,即P0,P1高电平,P2,P3低电平,P4-P7低电平,这里注意,P4-P7悬空为什么是低电平,这是因为PCF8574是带锁存输出,当读取输入电平时,读取的是端口的锁存器内部的电平,而不是引脚电平,由于最后一次输出操作输出为0x02,因此,P4-P7的锁存器内的电平均为0,所以读取的结果为3。
文章评论(0条评论)
登录后参与讨论