1、第第8 8章章 89C5189C51总线扩展技术总线扩展技术本章要点本章要点串行扩展特点串行扩展特点串行扩展方式分类串行扩展方式分类虚拟串行扩展慨念虚拟串行扩展慨念移位寄存器串行扩展方式移位寄存器串行扩展方式80C51 I/O虚拟串行接口虚拟串行接口I2C总线串行扩展技术总线串行扩展技术I2C总线扩展总线扩展I/O口通用器件口通用器件PCF8574虚拟虚拟I2C总线扩展总线扩展AT24CXX系列系列E2PROM .并行扩展总线组成并行扩展总线组成(地址、数据、控制总线地址、数据、控制总线)并行扩展寻址方式(线选法、译码法)并行扩展寻址方式(线选法、译码法)并行扩展并行扩展EPROM 并行扩展并
2、行扩展E2PROM 并行扩展并行扩展RAM 用用74系列芯片并行扩展系列芯片并行扩展I/O口口 扩展总线驱动能力扩展总线驱动能力. 89C5189C51系列单片机有很强的外部扩展能力。系列单片机有很强的外部扩展能力。外部扩展可分为外部扩展可分为并行扩展并行扩展和和串行扩展串行扩展两大形式。两大形式。 早期的单片机应用系统以采用并行扩展为多,早期的单片机应用系统以采用并行扩展为多,近期的单片机应用系统以采用串行扩展为多。近期的单片机应用系统以采用串行扩展为多。 外部扩展的器件可以有外部扩展的器件可以有ROMROM、RAMRAM、I/OI/O口和口和其他一些功能器件,扩展器件大多是一些常规芯其他一
3、些功能器件,扩展器件大多是一些常规芯片,有典型的扩展应用电路,可根据规范化电路片,有典型的扩展应用电路,可根据规范化电路来构成能满足要求的应用系统。来构成能满足要求的应用系统。.8-1 串行扩展概述串行扩展概述一、一、串行扩展特点串行扩展特点 最大程度发挥最小系统的资源功能最大程度发挥最小系统的资源功能。 原来由并行扩展占用的原来由并行扩展占用的P0P0口、口、P2P2口资源,直口资源,直接用于接用于I/OI/O口。口。 简化连接线路,缩小印板面积简化连接线路,缩小印板面积。 扩展性好,可简化系统的设计扩展性好,可简化系统的设计。 串行扩展的缺点串行扩展的缺点: : 数据吞吐容量较小,信号传输
4、速度较慢,但数据吞吐容量较小,信号传输速度较慢,但随着随着CPUCPU芯片工作频率的提高,以及串行扩展芯片芯片工作频率的提高,以及串行扩展芯片功能的增强,这些缺点将逐步淡化。功能的增强,这些缺点将逐步淡化。.1 1、一线制一线制二、二、串行扩展方式分类串行扩展方式分类一线制的典型代表为一线制的典型代表为DallasDallas公司推出的单总线公司推出的单总线(1-wire1-wire)。)。.2 2、二线制二线制二线制的典型代表为二线制的典型代表为philipsphilips公司推出的公司推出的I I2 2C C总线总线(Intel Integrated Circuit BUSIntel In
5、tegrated Circuit BUS)。)。.三线制(不包括片选线)主要有两种:三线制(不包括片选线)主要有两种: 由由MotoralaMotorala公司推出的公司推出的SPISPI(Serial Serial peripheral Interfaceperipheral Interface);); 由由NSNS公司推出的公司推出的Micro wire /PLUSMicro wire /PLUS。3 3、三线制三线制. SPI SPI的时钟线是的时钟线是SCKSCK,数据线,数据线MOSIMOSI(主发从(主发从收)、收)、MOSOMOSO(主收从发),主从器件的(主收从发),主从器件的
6、MOSIMOSI和和MOSOMOSO是同名端相连。是同名端相连。 由于该两类器件无法通过数据传输线寻址,由于该两类器件无法通过数据传输线寻址,因此,必须由因此,必须由MCU I/OMCU I/O线单独寻址,连到扩展器线单独寻址,连到扩展器件的片选端件的片选端CSCS(若只扩展一片,可将扩展芯片(若只扩展一片,可将扩展芯片CSCS接地)。接地)。 Micro wire /PLUS Micro wire /PLUS的时钟线是的时钟线是SKSK,数据线,数据线为为SISI和和SOSO,但,但SISI、SOSO依照主器件的数据传送方向依照主器件的数据传送方向而定,主器件的而定,主器件的SOSO与所有扩
7、展器件数据输入端与所有扩展器件数据输入端DIDI或或SISI相连;主器件的相连;主器件的SISI与所有扩展器件数据输出与所有扩展器件数据输出端端DODO或或SOSO相连。相连。.4 4、80C51 80C51 移位寄存器串行扩展移位寄存器串行扩展 80C51 80C51的的UART(Universal Asynohronous UART(Universal Asynohronous Receiver/Transmitter)Receiver/Transmitter)有有4 4种工作方式,其中方种工作方式,其中方式式0 0为同步移位寄存器工作方式,通过移位寄存为同步移位寄存器工作方式,通过移位寄
8、存方式,可将串行数据并行输出,也可以将并行数方式,可将串行数据并行输出,也可以将并行数据串行输入。据串行输入。.三、三、虚拟串行扩展概念虚拟串行扩展概念 用通用用通用I/OI/O口来模拟串行接口,构成虚拟的口来模拟串行接口,构成虚拟的串行扩展接口。串行扩展接口。只要严格控制模拟同步信号,只要严格控制模拟同步信号,并满足串行同步数据传送的时序要求,就可满并满足串行同步数据传送的时序要求,就可满足串行数据传送的可靠性要求。足串行数据传送的可靠性要求。.8-2 89C518-2 89C51移位寄存器移位寄存器串行扩展技术串行扩展技术一、一、移位寄存器串行扩展方式移位寄存器串行扩展方式 80C5180
9、C51串行方式串行方式0 0时,串行口作为时,串行口作为同步移位寄存器使用。同步移位寄存器使用。TXDTXD端(端(P3.1P3.1)发出移位脉冲,频率为发出移位脉冲,频率为fosc/12fosc/12,RXDRXD端(端(P3.0P3.0)输入输出数据)输入输出数据。.1 1、80C5180C51扩展并行输出口扩展并行输出口 74LS164 74LS164为为串入并出串入并出移位寄存器,其中移位寄存器,其中A A、B B为串行数据输入为串行数据输入端,端,Q QA A、Q QB B、Q QH H为并行数据输出端(为并行数据输出端(Q QA A为高位),为高位),CLKCLK为同为同步时钟输入
10、端,步时钟输入端,CLRCLR为输出清为输出清0 0端。若不需将输出数据清端。若不需将输出数据清0 0,则,则CLRCLR端接端接VccVcc。.2 2、80C5180C51扩展并行输入口扩展并行输入口 74LS165 74LS165为为并入串出并入串出移位寄存器,移位寄存器,A A、B B、H H为并行输入端为并行输入端(A A为高位),为高位),Q QH H为串行数据输出端,为串行数据输出端,SERSER为串行数据输入端,为串行数据输入端,CLKCLK为同步时钟输入端,为同步时钟输入端,S/LS/L为预置控制端。为预置控制端。S/L=0S/L=0时,锁存并行时,锁存并行输入数据;输入数据;
11、S/L=1S/L=1时,可进行串行移位操作。时,可进行串行移位操作。.80C5180C51串行方式串行方式0 0归一化子程序:归一化子程序: 单字节串行输出子程序单字节串行输出子程序 单字节串行输入子程序单字节串行输入子程序 多字节串行输出子程序多字节串行输出子程序 多字节串行输入子程序多字节串行输入子程序二、二、串行方式串行方式0 0归一化子程序归一化子程序 所谓所谓归一化子程序归一化子程序,即,即通用或标准化操作子程序通用或标准化操作子程序,将将80C5180C51串行方式串行方式0 0所有应用操作归纳成几个基本的输入所有应用操作归纳成几个基本的输入输出子程序,并使这些标准子程序具有规范的
12、入口条件输出子程序,并使这些标准子程序具有规范的入口条件和出口状态。应用时,只要设置相应的入口和出口,调和出口状态。应用时,只要设置相应的入口和出口,调用归一化子程序,就能达到串行输入输出的目的。用归一化子程序,就能达到串行输入输出的目的。.80C5180C51虚拟串行虚拟串行I/OI/O口归一化子程序:口归一化子程序: 单字节虚拟串行输出子程序单字节虚拟串行输出子程序 单字节虚拟串行输入子程序单字节虚拟串行输入子程序 多字节虚拟串行输出子程序多字节虚拟串行输出子程序 多字节虚拟串行输入子程序多字节虚拟串行输入子程序三、三、80C51 I/O80C51 I/O虚拟串行接口虚拟串行接口 利用利用
13、80C5180C51通用通用I/OI/O口虚拟移位寄存器工作方式实口虚拟移位寄存器工作方式实现串行扩展,只需现串行扩展,只需用任一通用用任一通用I/OI/O口代替口代替RXDRXD和和TXDTXD,设,设为为VRXDVRXD和和VTXDVTXD。.四、四、移位寄存器串行扩展应用移位寄存器串行扩展应用 80C5180C51移位寄存器串行扩展应用,只需根据移位寄存器串行扩展应用,只需根据标准化的电路形式连接,设置好入口条件,然后标准化的电路形式连接,设置好入口条件,然后调用串行方式调用串行方式0 0归一化子程序或虚拟串行接口归归一化子程序或虚拟串行接口归一化子程序,即可完成扩展应用。一化子程序,即
14、可完成扩展应用。.【例【例8-18-1】电路如图】电路如图8-58-5所示,所示,fosc = 12MHzfosc = 12MHz,要求,要求发光二极管从左向右依次点亮,点亮时间为发光二极管从左向右依次点亮,点亮时间为1 1秒,不秒,不断循环。设串行方式断循环。设串行方式0 0归一化子程序已存在归一化子程序已存在ROMROM中。中。 .解:解: PIOX1 BIT P1.0 PIOX1 BIT P1.0 ; ;定义定义PIOX1PIOX1WORK: MOV A,#10000000B WORK: MOV A,#10000000B ; ;置置D7D7灯亮灯亮, ,其余暗其余暗LOOP: CLR P
15、IOX1 LOOP: CLR PIOX1 ;74LS164;74LS164输出全输出全0,0,灯全暗灯全暗 LCALL UART0 LCALL UART0 ; ;调用单字节串行输出子程序调用单字节串行输出子程序 LCALL DLY1s LCALL DLY1s ; ;调用延时调用延时1 1秒子程序秒子程序( (略略) ) RR A RR A ; ;右移右移 SJMP LOOP SJMP LOOP ; ;.1 1、扩展连接方式扩展连接方式 8-38-3 I I2 2C C总线串行扩展技术总线串行扩展技术一、一、I I2 2C C总线串行扩展概述总线串行扩展概述. 具有具有I I2 2C C总线结构
16、的器件,不论总线结构的器件,不论SRAMSRAM、E E2 2PROMPROM、ADC/DACADC/DAC、I/OI/O口或口或MCUMCU,均可通过,均可通过SDASDA、SCLSCL连接连接(同名端相连)。(同名端相连)。 无无I I2 2C C总线结构的器件,如总线结构的器件,如LED/LCDLED/LCD显示器、键显示器、键盘、码盘、打印机等也可通过具有盘、码盘、打印机等也可通过具有I I2 2C C总线结构的总线结构的I/OI/O接口电路成为串行扩展器件。接口电路成为串行扩展器件。.2 2、器件寻址方式器件寻址方式I I2 2C C总线器件地址总线器件地址SLASLA格式如下:格式
17、如下: 具有具有I I2 2C C总线结构的器件在器件总线结构的器件在器件出厂时已经出厂时已经给定了器件的地址编码给定了器件的地址编码。SLASLAD7 D6 D5 D4 D3 D2 D1 D0D7 D6 D5 D4 D3 D2 D1 D0DA3DA3DA2DA2DA1DA1DA0DA0A2A2A1A1A0A0R/ WR/ W器件固有地址编码器件固有地址编码器件引脚地址器件引脚地址读读/写写 DA3DA3DA0 4DA0 4位器件地址是位器件地址是I I2 2C C总线器件固有的地址编码总线器件固有的地址编码,器件出厂时就已给定,用户不能自行设置。器件出厂时就已给定,用户不能自行设置。 A2A
18、1A0 3A2A1A0 3位引脚地址用于相同地址器件的识别位引脚地址用于相同地址器件的识别。若。若I I2 2C C总线上总线上挂有相同地址的器件,或同时挂有多片相同器件时,可用硬件挂有相同地址的器件,或同时挂有多片相同器件时,可用硬件连接方式对连接方式对3 3位引脚位引脚A2A1A0A2A1A0接接VccVcc或接地,形成地址数据。或接地,形成地址数据。 R/W R/W 数据传送方向数据传送方向。R/W=1R/W=1时,主机接收(读);时,主机接收(读); R/W=0R/W=0时,主机发送(写)。时,主机发送(写)。.表表8-1 8-1 常用常用I I2 2C C器件地址器件地址SLASLA
19、种类种类型号型号器件地址器件地址SLASLA引脚地址备注引脚地址备注静态静态RAMRAMPCF8570/71PCF8570/711010 A2 A1 A0 R/ W1010 A2 A1 A0 R/ W3 3位数字引脚地址位数字引脚地址A2A1A0A2A1A0PCF8570CPCF8570C1011 A2 A1 A0 R/ W1011 A2 A1 A0 R/ W3 3位数字引脚地址位数字引脚地址A2A1A0A2A1A0E E2 2PROMPROMPCF8582PCF85821010 A2 A1 A0 R/ W1010 A2 A1 A0 R/ W3 3位数字引脚地址位数字引脚地址A2A1A0A2A
20、1A0AT24C02AT24C021010 A2 A1 A0 R/ W1010 A2 A1 A0 R/ W3 3位数字引脚地址位数字引脚地址A2A1A0A2A1A0AT24C04AT24C041010 A2 A1 P0 R/ W1010 A2 A1 P0 R/ W2 2位数字引脚地址位数字引脚地址A2A1A2A1AT24C08AT24C081010 A2 P1 P0 R/ W1010 A2 P1 P0 R/ W1 1位数字引脚地址位数字引脚地址A2A2AT24C016 AT24C016 1010 P2 P1 P0 R/ W1010 P2 P1 P0 R/ W无引脚地址,无引脚地址,A2A1A0
21、A2A1A0悬空处理悬空处理I/OI/O口口PCF8574PCF85740100 A2 A1 A0 R/ W0100 A2 A1 A0 R/ W3 3位数字引脚地址位数字引脚地址A2A1A0A2A1A0PCF8574APCF8574A0111 A2 A1 A0 R/ W0111 A2 A1 A0 R/ W3 3位数字引脚地址位数字引脚地址A2A1A0A2A1A0LED/LCDLED/LCD驱动控制器驱动控制器SAA 1064SAA 10640111 0 A1 A0 R/ W0111 0 A1 A0 R/ W2 2位数字引脚地址位数字引脚地址A1A0A1A0PCF8576PCF85760111
22、0 0 A0 R/ W0111 0 0 A0 R/ W1 1位数字引脚地址位数字引脚地址A0A0PCF8578/79PCF8578/790111 1 0 A0 R/ W0111 1 0 A0 R/ W1 1位数字引脚地址位数字引脚地址A0A0ADC/DACADC/DACPCF8951PCF89511001 A2 A1 A0 R/ W1001 A2 A1 A0 R/ W3 3位数字引脚地址位数字引脚地址A2A1A0A2A1A0日历时钟日历时钟PCF8583PCF85831010 0 0 A0 R/ W1010 0 0 A0 R/ W1 1位数字引脚地址位数字引脚地址A0A0.3 3、接口电气结构
23、接口电气结构 I I2 2C C总线端口输出为开漏结构,总线上必须总线端口输出为开漏结构,总线上必须外接上拉电阻外接上拉电阻RpRp,其阻值通常可选,其阻值通常可选5 510K10K。4 4、总线驱动能力总线驱动能力 由于由于I I2 2C C总线器件均为总线器件均为CMOSCMOS器件,总线具有器件,总线具有足够的电流驱动能力。足够的电流驱动能力。 I I2 2C C总线的电容负载能力为总线的电容负载能力为400 pF400 pF(通过驱(通过驱动扩展可达动扩展可达4000pF4000pF)。)。 I I2 2C C总线传输速率为总线传输速率为100Kb/s100Kb/s(改进后的规(改进后
24、的规范为范为400 Kb/s400 Kb/s)。)。.5 5、I I2 2C C总线时序总线时序 一次完整的数据传送过程应包括:起始(一次完整的数据传送过程应包括:起始(S S)、)、发送寻址字节(发送寻址字节(SLA R/WSLA R/W)、应答、发送数据、应)、应答、发送数据、应答、答、发送数据、应答、终止(、发送数据、应答、终止(P P)。)。. 80C5180C51只能采用虚拟只能采用虚拟I I2 2C C总线方式,并且只能总线方式,并且只能用于单主系统,虚拟用于单主系统,虚拟I I2 2C C总线接口可用通用总线接口可用通用I/OI/O口中任一端线充任,数据线定义为口中任一端线充任,
25、数据线定义为VSDAVSDA,时钟,时钟线定义为线定义为VSCLVSCL。二、二、80C5180C51单主系统虚拟单主系统虚拟I I2 2C C总线软件包总线软件包 80C51 80C51单主系统虚拟单主系统虚拟I I2 2C C总线软件包总线软件包VIICVIIC可由二可由二大类共大类共9 9个归一化子程序组成。二大类程序分别为个归一化子程序组成。二大类程序分别为典型信号模拟子程序典型信号模拟子程序和和数据传送通用子程序数据传送通用子程序。.1 1、典型信号模拟子程序典型信号模拟子程序 对于虚拟对于虚拟I I2 2C C总线,有几个重复应用的典型信号,可根总线,有几个重复应用的典型信号,可根
26、据据I I2 2C C总线时序要求,编制这些典型信号子程序:总线时序要求,编制这些典型信号子程序: 启动信号启动信号STATSTAT 终止信号终止信号STOPSTOP 发送应答位发送应答位(A)MACK(A)MACK 发送应答非位发送应答非位(A)NACK(A)NACK 检查应答位检查应答位CACKCACK2 2、数据传送通用子程序数据传送通用子程序 数据传送通用子程序是应用典型信号模拟子程序(起始、数据传送通用子程序是应用典型信号模拟子程序(起始、终止、应答和检查应答)并按终止、应答和检查应答)并按I I2 2C C总线数据传送时序要求编总线数据传送时序要求编制的子程序。制的子程序。 发送一
27、字节数据子程序发送一字节数据子程序WR1BWR1B 接收一字节数据子程序接收一字节数据子程序RD1BRD1B 发送发送N N个字节数据子程序个字节数据子程序WRNBWRNB 接收接收N N个字节数据子程序个字节数据子程序RDNBRDNB . 按照按照I I2 2C C总线数据传送时序要求,一次完整的数据发送过总线数据传送时序要求,一次完整的数据发送过程应包括起始(程应包括起始(S S)、发送寻址字节()、发送寻址字节(SLA R/WSLA R/W)、应答、)、应答、发送数据、应答、发送数据、应答、发送数据、应答、终止(、发送数据、应答、终止(P P),其格),其格式如下:式如下:S SSLAS
28、LAW WA Adata1data1A A data2data2A AdataNdataNA AP P 其中,红色部分由主器件发送,从器件接收;黑色部分其中,红色部分由主器件发送,从器件接收;黑色部分由从器件发送,主器件接收。由从器件发送,主器件接收。 发送发送N N个字节数据子程序个字节数据子程序WRNBWRNB入口条件入口条件: 伪指令定义伪指令定义NUMBNUMB、SLASLA、MTDMTD单元地址;单元地址; 发送数据字节数存内发送数据字节数存内RAM NUMBRAM NUMB单元;单元; 发送寻址字节存内发送寻址字节存内RAM SLARAM SLA单元;单元; 发送数据依次存放在首址
29、为发送数据依次存放在首址为MTDMTD的内的内RAMRAM中。中。占用资源占用资源:AccAcc、R1R1、R2R2、R3R3、CyCy、F0F0。.WRNB: MOV R3,NUMB WRNB: MOV R3,NUMB ; ;取发送数据字节数取发送数据字节数N(N(存在内存在内RAM NUMBRAM NUMB单元单元) )WRNB0:LCALL STAT WRNB0:LCALL STAT ; ;启动启动I2CI2C总线总线 MOV A,SLA MOV A,SLA ; ;读发送寻址字节读发送寻址字节( (存在内存在内RAM SLARAM SLA单元单元) ) LCALL WR1B LCALL
30、WR1B ; ;发送寻址字节发送寻址字节 LCALL CACK LCALL CACK ; ;检查应答位检查应答位 JB F0,WRNB0JB F0,WRNB0; ;应答不正常应答不正常, ,返回重发返回重发 MOV R1,#MTD MOV R1,#MTD ; ;应答应答(A)(A)正常正常, ,取发送数据存储区首址取发送数据存储区首址WRDA: MOV A,R1 WRDA: MOV A,R1 ; ;读一个字节发送数据读一个字节发送数据 LCALL WR1B LCALL WR1B ; ;发送一个字节发送一个字节 LCALL CACK LCALL CACK ; ;检查应答位检查应答位 JB F0,
31、WRNB JB F0,WRNB ; ;应答不正常应答不正常, ,返回重发返回重发 INC R1 INC R1 ; ;应答应答(A)(A)正常正常, ,指向发送数据下一字节指向发送数据下一字节 DJNZ R3,WRDA DJNZ R3,WRDA ; ;判判N N个数据发送完毕否个数据发送完毕否? ?未完继续未完继续 LCALL STOP LCALL STOP ;N;N个数据发送完毕个数据发送完毕, ,发送结束信号发送结束信号 RET RET ; ;. 按照按照I I2 2C C总线数据传送时序要求,接收总线数据传送时序要求,接收N个字节数据应个字节数据应按下列格式编程:按下列格式编程:接收接收N
32、 N个字节数据子程序个字节数据子程序RDNBRDNB S SSLASLAR RA Adata1data1A Adata2data2A AdataNdataNA A P P 其中,红色部分由主器件发送,从器件接收;黑色其中,红色部分由主器件发送,从器件接收;黑色部分由从器件发送,主器件接收。部分由从器件发送,主器件接收。入口条件入口条件: 伪指令定义伪指令定义NUMBNUMB、SLASLA、MRDMRD地址;地址; 接收数据字节数存内接收数据字节数存内RAM NUMBRAM NUMB单元;单元; 接收寻址字节存内接收寻址字节存内RAM SLARAM SLA单元单元。出口状态出口状态:接收:接收N
33、 N个字节依次存在首址个字节依次存在首址MRDMRD的内的内RAMRAM中。中。占用资源占用资源:AccAcc、R1R1、R2R2、R3R3、CyCy、F0F0。.RDNB: MOV R3,NUMB RDNB: MOV R3,NUMB ; ;取接收数据字节数取接收数据字节数N(N(存在内存在内RAM NUMBRAM NUMB单元单元) )RDNB0: LCALL STAT RDNB0: LCALL STAT ; ;启动启动I2CI2C总线总线 MOV A,SLA MOV A,SLA ; ;读接收寻址字节读接收寻址字节( (存在内存在内RAM SLARAM SLA单元单元) ) LCALL WR
34、1B LCALL WR1B ; ;发送接收寻址字节发送接收寻址字节 LCALL CACK LCALL CACK ; ;检查应答位检查应答位 JB F0,RDNB0 JB F0,RDNB0 ; ;应答不正常应答不正常, ,返回重新开始返回重新开始RDA0: MOV R1,#MRD RDA0: MOV R1,#MRD ; ;应答应答(A)(A)正常正常, ,取接收数据存储区首址取接收数据存储区首址RDA1: LCALL RD1B RDA1: LCALL RD1B ; ;接收一个字节数据接收一个字节数据 MOV R1,A MOV R1,A ; ;存一个字节数据存一个字节数据 DJNZ R3,ACK
35、DJNZ R3,ACK ; ;判判N N个数据接收完毕否个数据接收完毕否? ?未完转发送应答位未完转发送应答位 LCALL NACK LCALL NACK ;N;N个数据接收完毕个数据接收完毕, ,发送应答非位发送应答非位(A)(A) LCALL STOP LCALL STOP ; ;发送终止信号发送终止信号 RET RET ; ;子程序结束返回子程序结束返回ACK: LCALL MACK ACK: LCALL MACK ; ;发送应答位发送应答位(A)(A) INC R1 INC R1 ; ;指向下一接收数据存储单元地址指向下一接收数据存储单元地址 SJMP RDA1 SJMP RDA1 ;
36、 ;转接收下一字节数据转接收下一字节数据. VIIC VIIC软件包共有软件包共有9 9个归一化子程序组成。个归一化子程序组成。 VIIC VIIC软件包仅适用单主系统即主方式下软件包仅适用单主系统即主方式下I I2 2C C总线外围扩总线外围扩展。且应展。且应fosc6MHzfosc6MHz,若,若foscfosc6MHz6MHz,则应相应调整,则应相应调整NOPNOP指令个数,以满足指令个数,以满足I I2 2C C总线数据传送时序要求。总线数据传送时序要求。 VIIC VIIC软件包可嵌入到软件包可嵌入到80C51 ROM80C51 ROM中任一空间,作为中任一空间,作为I I2 2C
37、C总总线扩展应用程序设计的软件支持平台。线扩展应用程序设计的软件支持平台。 在应用在应用VIICVIIC软件包初始化中,应对软件包中标记符号用软件包初始化中,应对软件包中标记符号用伪指令定义。伪指令定义。 VIIC VIIC软件包占用资源:软件包占用资源:F0F0、CyCy、AccAcc、R1R1、R1R1、R3R3。在。在调用调用VIICVIIC软件包之前,若涉及这些存储单元中原有数据软件包之前,若涉及这些存储单元中原有数据尚需保存,应采取保护现场措施,在调用结束后恢复现尚需保存,应采取保护现场措施,在调用结束后恢复现场。场。3 3、虚拟虚拟I I2 2C C总线软件包总线软件包VIICVI
38、IC小结小结.一、一、I I2 2C C总线扩展总线扩展I/OI/O口通用器件口通用器件PCF8574PCF85748-4 8-4 虚拟虚拟I I2 2C C总线扩展总线扩展I/OI/O口口1 1、引脚功能引脚功能 PCF8574 PCF8574是一个带有中断输出的是一个带有中断输出的8 8位准双向位准双向I/OI/O口口I I2 2C C总线扩展芯片。总线扩展芯片。 A2A2A0A0:地址引脚;:地址引脚; P0P0P7P7:8 8位准双向位准双向I/OI/O口,驱动口,驱动能力能力I IOLOL = 25mA = 25mA,I IOHOH300300 A A; SDASDA、SCLSCL
39、:I I2 2C C总线接口;总线接口; INTINT:中断请求输出,低电平有:中断请求输出,低电平有效,开漏输出;效,开漏输出; V VDDDD、V VSSSS:电源端、接地端;:电源端、接地端;.2 2、电路设计电路设计PCF8574PCF8574与与80C51 I80C51 I2 2C C总线接口应用电路。总线接口应用电路。 PCF8574 PCF8574的器件地址是的器件地址是01000100,A2A1A0A2A1A0为引脚为引脚地址,全接地时为地址,全接地时为000000,R/W=1R/W=1时,接收寻址时,接收寻址字节字节SLASLAR R=41H =01000001B=41H =
40、01000001B;R/W=0R/W=0时,发送时,发送寻址字节寻址字节SLASLAW W=40H =01000000B=40H =01000000B。3 3、寻址字节寻址字节. 当当PCF8574PCF8574输入端输入端P0P0P7P7电平状态改变时,中电平状态改变时,中断请求输出端断请求输出端INTINT会出现低电平(滞后时间约会出现低电平(滞后时间约4 4 s s),可触发),可触发80C5180C51产生中断。在对产生中断。在对PCF8574PCF8574进行一次读写操作后,进行一次读写操作后,INTINT端撤销中断请求,复端撤销中断请求,复位为高电平。位为高电平。4 4、中断请求中
41、断请求5 5、数据输入数据输入/ /输出操作格式输出操作格式 输出操作输出操作S SSLASLAW WA APOdataPOdataA AP P 输入操作输入操作S SSLASLAR RA APIdataPIdataA AP P 其中,红色部分由其中,红色部分由80C5180C51发送,发送,PCF8574PCF8574接收;黑色接收;黑色部分由部分由PCF8574PCF8574发送,发送,80C5180C51接收。接收。.二、二、PCF8574PCF8574应用实例应用实例【例【例8-38-3】图】图8-148-14为为PCF8574 PCF8574 四键四四键四LEDLED应用电路,应用电
42、路,PCF8574 P0PCF8574 P0P3P3为键信号为键信号K0K0K3K3输入端,输入端,P4P4P7P7为为LEDLED控制信号控制信号D0D0D3D3输出端,要求当键输出端,要求当键K0K0K3K3按下后,相应按下后,相应LED D0LED D0D3D3亮,设亮,设VIICVIIC软件包已装软件包已装入入ROMROM。.解:编制程序如下:解:编制程序如下:主程序:主程序: VSDA EQU P1.0 VSDA EQU P1.0 ; ;定义虚拟定义虚拟I I2 2C C总线数据线端口总线数据线端口 VSCL EQU P1.1 VSCL EQU P1.1 ; ;定义虚拟定义虚拟I I
43、2 2C C总线时钟线端口总线时钟线端口 SLA EQU 50H SLA EQU 50H ; ;定义发送定义发送/ /接收寻址字节内接收寻址字节内RAMRAM存储单元为存储单元为50H50H NUMB EQU 51H NUMB EQU 51H ; ;定义发送定义发送/ /接收数据字节数接收数据字节数N N内内RAMRAM存储单元为存储单元为51H51H MTD EQU 30H MTD EQU 30H ; ;定义发送数据内定义发送数据内RAMRAM存储区首地址为存储区首地址为30H30H MRD EQU 40H MRD EQU 40H ; ;定义接收数据内定义接收数据内RAMRAM存储区首地址为
44、存储区首地址为40H40HWORK:MOV MTD,#0FFH WORK:MOV MTD,#0FFH ;PCF8574;PCF8574初始化初始化, ,置置P0P0P3P3输入态输入态,D0,D0D3D3灯灭灯灭 MOV SLA,#40H MOV SLA,#40H ; ;置发送寻址字节置发送寻址字节 MOV NUMB,#1 MOV NUMB,#1 ; ;置发送字节数置发送字节数 LCALL WRNB LCALL WRNB ;FFH;FFH写入写入PCF8574PCF8574 SETB EA SETB EA ;CPU;CPU开中开中 SETB EX1 SETB EX1 ;INT1;INT1开中开
45、中 SETB IT1 SETB IT1 ; ;置置INT1INT1边沿触发方式边沿触发方式 SJMP $ SJMP $ ; ;等待等待PCF8574 P0PCF8574 P0P3P3口状态变化触发中断口状态变化触发中断.中断服务子程序:中断服务子程序:VINT:MOV SLA,#41H VINT:MOV SLA,#41H ; ;置接收寻址字节置接收寻址字节 MOV NUMB,#1 MOV NUMB,#1 ; ;置接收字节数置接收字节数 LCALL RDNB LCALL RDNB ; ;读读PCF8574PCF8574口状态口状态 MOV A,MRD MOV A,MRD ; ;读接收数据读接收数
46、据 SWAP A SWAP A ; ;低低4 4位状态移至高位状态移至高4 4位位 ORL A,#0FH ORL A,#0FH ; ;低低4 4位保持输入态位保持输入态 MOV MTD,A MOV MTD,A ; ;控制信号存入发送数据首地址单元控制信号存入发送数据首地址单元 MOV SLA,#40H MOV SLA,#40H ; ;置发送寻址字节置发送寻址字节 MOV NUMB,#1 MOV NUMB,#1 ; ;置发送字节数置发送字节数 LCALL WRNB LCALL WRNB ; ;输出控制信号输出控制信号 RETI RETI ; ;.1 1、引脚功能引脚功能8-5 8-5 虚拟虚拟I
47、 I2 2C C总线扩展总线扩展 AT24CXXAT24CXX系列系列E E2 2PROMPROM一、一、 I I2 2C C总线总线E2PROME2PROM芯片芯片AT24C02AT24C02SDASDA、SCLSCL:I I2 2C C总线接口总线接口A2A2A0A0:地址引脚:地址引脚TESTTEST:测试端,高电平有效:测试端,高电平有效V VDDDD、V VSSSS:电源端、接地端:电源端、接地端.2 2、电路设计电路设计 A A2 2 A A1 1 A A0 0TESTTEST. E E2 2PROMPROM的写入时间一般需要的写入时间一般需要5 510ms10ms,页写缓冲,页写
48、缓冲器具有器具有SRAMSRAM性质,可快速写入,性质,可快速写入,先将先将CPUCPU输入的数输入的数据暂存页写缓冲器内,然后慢慢写入据暂存页写缓冲器内,然后慢慢写入E E2 2PROMPROM中。中。但一次写入数据,受到该芯片页写缓冲器容量的但一次写入数据,受到该芯片页写缓冲器容量的限制,若超出容量或超出页内地址,都将导致出限制,若超出容量或超出页内地址,都将导致出错。应将超出部分,隔错。应将超出部分,隔 5 510ms10ms重新启动一次写重新启动一次写操作。操作。 AT24C02AT24C02页写缓冲器为页写缓冲器为8B8B,页内地址为,页内地址为000000111111。3 3、寻址
49、字节寻址字节 AT24CXX AT24CXX的器件地址是的器件地址是10101010,A2A1A0A2A1A0为引脚地址,为引脚地址,全接地时为全接地时为000000。R/W=1R/W=1时,读寻址字节时,读寻址字节SLASLAR R =10100001B=A1H=10100001B=A1H;R/W=0R/W=0时,写寻址字节时,写寻址字节SLASLAW W =10100000B=A0H=10100000B=A0H。4 4、页写缓冲器页写缓冲器. 写操作格式写操作格式 5 5、数据读数据读/ /写操作格式写操作格式S SSLASLAW WA ASADRSADRA A data1data1 A
50、Adata2data2A A dataNdataN A A P P 读操作格式读操作格式 S SSLASLAW WA A SADRSADR A A P P S S SLASLAR RA A data1data1 A A data2data2 A A dataNdataN A A P P 其中,其中,红色红色部分由部分由80C5180C51发送发送,AT24CXXAT24CXX接收;接收;黑色部分由黑色部分由AT24CXXAT24CXX发送发送,80C5180C51接收。接收。 写入读出单元子地址写入读出单元子地址 读出操作读出操作 .【例【例8-48-4】按图】按图8-15(b),8-15(b