1、第第8 8章章 80C5180C51串行扩展技术串行扩展技术 本章要点本章要点串行扩展特点串行扩展特点串行扩展方式分类串行扩展方式分类虚拟串行扩展慨念虚拟串行扩展慨念移位寄存器串行扩展方式移位寄存器串行扩展方式80C51 I/O80C51 I/O虚拟串行接口虚拟串行接口I I2 2C C总线串行扩展技术总线串行扩展技术I I2 2C C总线扩展总线扩展I/OI/O口通用器件口通用器件PCF8574PCF8574虚拟虚拟I I2 2C C总线扩展总线扩展AT24CXXAT24CXX系列系列E E2 2PROMPROM教 材 张志良主编 单片机原理与控制技术(第2版)机械工业出版社8-1 串行扩展
2、概述串行扩展概述一、一、串行扩展特点串行扩展特点 最大程度发挥最小系统的资源功能最大程度发挥最小系统的资源功能。原来由并行扩展占用的原来由并行扩展占用的P0P0口、口、P2P2口资源,直口资源,直接用于接用于I/OI/O口。口。简化连接线路,缩小印板面积简化连接线路,缩小印板面积。扩展性好,可简化系统的设计扩展性好,可简化系统的设计。串行扩展的缺点串行扩展的缺点:数据吞吐容量较小,信号传输速度较慢,但数据吞吐容量较小,信号传输速度较慢,但随着随着CPUCPU芯片工作频率的提高,以及串行扩展芯片芯片工作频率的提高,以及串行扩展芯片功能的增强,这些缺点将逐步淡化。功能的增强,这些缺点将逐步淡化。1
3、 1、一线制一线制二、二、串行扩展方式分类串行扩展方式分类一线制的典型代表为一线制的典型代表为DallasDallas公司推出的单总线公司推出的单总线(1-wire1-wire)。)。2 2、二线制二线制二线制的典型代表为二线制的典型代表为philipsphilips公司推出的公司推出的I I2 2C C总线总线(Intel Integrated Circuit BUSIntel Integrated Circuit BUS)。)。三线制(不包括片选线)主要有两种:三线制(不包括片选线)主要有两种:由由MotoralaMotorala公司推出的公司推出的SPISPI(Serial Serial
4、 peripheral Interfaceperipheral Interface););由由NSNS公司推出的公司推出的Micro wire/PLUSMicro wire/PLUS。3 3、三线制三线制 SPI SPI的时钟线是的时钟线是SCKSCK,数据线,数据线MOSIMOSI(主发从(主发从收)、收)、MOSOMOSO(主收从发),主从器件的(主收从发),主从器件的MOSIMOSI和和MOSOMOSO是同名端相连。是同名端相连。由于该两类器件无法通过数据传输线寻址,由于该两类器件无法通过数据传输线寻址,因此,必须由因此,必须由MCU I/OMCU I/O线单独寻址,连到扩展器线单独寻址
5、,连到扩展器件的片选端件的片选端CSCS(若只扩展一片,可将扩展芯片(若只扩展一片,可将扩展芯片CSCS接地)。接地)。Micro wire/PLUS Micro wire/PLUS的时钟线是的时钟线是SKSK,数据线,数据线为为SISI和和SOSO,但,但SISI、SOSO依照主器件的数据传送方向依照主器件的数据传送方向而定,主器件的而定,主器件的SOSO与所有扩展器件数据输入端与所有扩展器件数据输入端DIDI或或SISI相连;主器件的相连;主器件的SISI与所有扩展器件数据输出与所有扩展器件数据输出端端DODO或或SOSO相连。相连。4 4、80C51 80C51 移位寄存器串行扩展移位寄
6、存器串行扩展 80C51 80C51的的UART(UART(Universal Asynohronous Universal Asynohronous Receiver/Transmitter)Receiver/Transmitter)有有4 4种工作方式,其中方种工作方式,其中方式式0 0为同步移位寄存器工作方式,通过移位寄存方为同步移位寄存器工作方式,通过移位寄存方式,可将串行数据并行输出,也可以将并行数据式,可将串行数据并行输出,也可以将并行数据串行输入。串行输入。三、三、虚拟串行扩展概念虚拟串行扩展概念 用通用用通用I/OI/O口来模拟串行接口,构成虚拟的口来模拟串行接口,构成虚拟的串
7、行扩展接口。串行扩展接口。只要严格控制模拟同步信号,只要严格控制模拟同步信号,并满足串行同步数据传送的时序要求,就可满并满足串行同步数据传送的时序要求,就可满足串行数据传送的可靠性要求。足串行数据传送的可靠性要求。8-2 80C518-2 80C51移位寄存器移位寄存器串行扩展技术串行扩展技术一、一、移位寄存器串行扩展方式移位寄存器串行扩展方式 80C5180C51串行方式串行方式0 0时,串行口作为同时,串行口作为同步移位寄存器使用。步移位寄存器使用。TXDTXD端(端(P3.1P3.1)发)发出移位脉冲,频率为出移位脉冲,频率为fosc/12fosc/12,RXDRXD端端(P3.0P3.
8、0)输入输出数据)输入输出数据。1 1、80C5180C51扩展并行输出口扩展并行输出口 74LS164 74LS164为为串入并出串入并出移位寄存器,其中移位寄存器,其中A A、B B为为串行数据串行数据输输入入端,端,Q QA A、Q QB B、Q QH H为为并行数据并行数据输输出端(出端(Q QA A为为高位),高位),CLKCLK为为同同步步时钟输时钟输入端,入端,CLRCLR为输出清为输出清0 0端。若不需将输出数据清端。若不需将输出数据清0 0,则,则CLRCLR端接端接VccVcc。80C5180C51串行方式串行方式0 0归一化子程序:归一化子程序:单字节串行输出子程序单字节
9、串行输出子程序 单字节串行输入子程序单字节串行输入子程序 多字节串行输出子程序多字节串行输出子程序 多字节串行输入子程序多字节串行输入子程序二、二、串行方式串行方式0 0归一化子程序归一化子程序 所谓所谓归一化子程序归一化子程序,即,即通用或标准化操作子程序通用或标准化操作子程序,将将80C5180C51串行方式串行方式0 0所有应用操作归纳成几个基本的输入所有应用操作归纳成几个基本的输入输出子程序,并使这些标准子程序具有规范的入口条件输出子程序,并使这些标准子程序具有规范的入口条件和出口状态。应用时,只要设置相应的入口和出口,调和出口状态。应用时,只要设置相应的入口和出口,调用归一化子程序,
10、就能达到串行输入输出的目的。用归一化子程序,就能达到串行输入输出的目的。80C5180C51虚拟串行虚拟串行I/OI/O口归一化子程序:口归一化子程序:单字节虚拟串行输出子程序单字节虚拟串行输出子程序 单字节虚拟串行输入子程序单字节虚拟串行输入子程序 多字节虚拟串行输出子程序多字节虚拟串行输出子程序 多字节虚拟串行输入子程序多字节虚拟串行输入子程序三、三、80C51 I/O80C51 I/O虚拟串行接口虚拟串行接口 利用利用80C5180C51通用通用I/OI/O口虚拟移位寄存器工作方式实口虚拟移位寄存器工作方式实现串行扩展,只需现串行扩展,只需用任一通用用任一通用I/OI/O口代替口代替RX
11、DRXD和和TXDTXD,设,设为为VRXDVRXD和和VTXDVTXD。【例【例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灯亮灯亮,其余暗其
12、余暗LOOP:CLR PIOX1 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 ;【例【例8-28-2】电路如图电路如图8-68-6所示,所示,fosc=12MHzfosc=12MHz,要求每,要求每隔隔10ms10ms,检测键,检测键K0K0K7K7状态,并存入内状态,并存入内R
13、AM 2FHRAM 2FH。设。设虚拟串行接口归一化子程序已存在虚拟串行接口归一化子程序已存在ROMROM中。中。解:解:ORG 0000H ORG 0000H ;复位地址复位地址 LJMP STAT LJMP STAT ;转初始化程序转初始化程序 ORG 000BH ORG 000BH ;T0;T0中断入口地址中断入口地址 LJMP IT0 LJMP IT0 ;转转T0T0中断服务子程序中断服务子程序 VRXD BIT P1.0 VRXD BIT P1.0 VTXD BIT P1.1 VTXD BIT P1.1 PIOX2 BIT P1.2 PIOX2 BIT P1.2 ORG 0100H
14、ORG 0100H ;初始化程序首地址初始化程序首地址STAT:MOV TMOD,#01H STAT:MOV TMOD,#01H ;置置T0T0定时器方式定时器方式1 1 MOV TH0,#0D8H MOV TH0,#0D8H ;置置T0T0定时初值定时初值10ms10ms MOV TL0,#0F0H MOV TL0,#0F0H ;SETB TR0 SETB TR0 ;启动启动T0T0 SETB ET0 SETB ET0 ;T0;T0开中开中 SETB EA SETB EA ;CPU;CPU开中开中 LJMP WORK LJMP WORK ;转主程序并等待转主程序并等待T0T0中断中断 ORG
15、 1000H ORG 1000H ;T0;T0中断服务子程序首地址中断服务子程序首地址IT0:MOV TH0,#0D8H IT0:MOV TH0,#0D8H ;重置重置T0T0定时初值定时初值10ms10ms MOV TL0,#0F0H MOV TL0,#0F0H ;PUSH Acc PUSH Acc ;保护现场保护现场 PUSH PSW PUSH PSW ;INPUT:LCALL VUARTI INPUT:LCALL VUARTI ;调用虚拟串行输入子程序调用虚拟串行输入子程序 MOV 2FH,A MOV 2FH,A ;存键存键K0K0K7K7状态数据状态数据 POP PSW POP PSW
16、 ;恢复现场恢复现场 POP Acc POP Acc ;RETI RETI ;1 1、扩展连接方式扩展连接方式 8-38-3 I I2 2C C总线串行扩展技术总线串行扩展技术一、一、I I2 2C C总线串行扩展概述总线串行扩展概述 具有具有I I2 2C C总线结构的器件,不论总线结构的器件,不论SRAMSRAM、E E2 2PROMPROM、ADC/DACADC/DAC、I/OI/O口或口或MCUMCU,均可通过,均可通过SDASDA、SCLSCL连接连接(同名端相连)。(同名端相连)。无无I I2 2C C总线结构的器件,如总线结构的器件,如LED/LCDLED/LCD显示器、键显示器
17、、键盘、码盘、打印机等也可通过具有盘、码盘、打印机等也可通过具有I I2 2C C总线结构的总线结构的I/OI/O接口电路成为串行扩展器件。接口电路成为串行扩展器件。2 2、器件寻址方式器件寻址方式I I2 2C C总线器件地址总线器件地址SLASLA格式如下:格式如下:具有具有I I2 2C C总线结构的器件在器件总线结构的器件在器件出厂时已经给出厂时已经给定了器件的地址编码定了器件的地址编码。SLASLAD7 D6 D5 D4 D3 D2 D1 D0D7 D6 D5 D4 D3 D2 D1 D0DA3DA3DA2DA2DA1DA1DA0DA0A2A2A1A1A0A0R/WR/W器件固有地址
18、编码器件固有地址编码器件引脚地址器件引脚地址读读/写写 DA3DA3DA0 DA0 4 4位位器器件件地地址址是是I I2 2C C总总线线器器件件固固有有的的地地址址编编码码,器件出厂时就已给定,用户不能自行设置。器件出厂时就已给定,用户不能自行设置。A2A1A0 3A2A1A0 3位引脚地址用于相同地址器件的识别位引脚地址用于相同地址器件的识别。若。若I I2 2C C总线上总线上挂有相同地址的器件,或同时挂有多片相同器件时,可用硬件连挂有相同地址的器件,或同时挂有多片相同器件时,可用硬件连接方式对接方式对3 3位引脚位引脚A2A1A0A2A1A0接接VccVcc或接地,形成地址数据。或接
19、地,形成地址数据。R/W R/W 数据传送方向数据传送方向。R/W=1R/W=1时,主机接收(读);时,主机接收(读);R/W=0 R/W=0时,主机发送(写)。时,主机发送(写)。表表8-1 8-1 常用常用I I2 2C C器件地址器件地址SLASLA种类种类型号型号器件地址器件地址SLASLA引脚地址备注引脚地址备注静态静态RAMRAMPCF8570/71PCF8570/711010 A2 A1 A0 R/W1010 A2 A1 A0 R/W3 3位数字引脚地址位数字引脚地址A2A1A0A2A1A0PCF8570CPCF8570C1011 A2 A1 A0 R/W1011 A2 A1 A
20、0 R/W3 3位数字引脚地址位数字引脚地址A2A1A0A2A1A0E E2 2PROMPROMPCF8582PCF85821010 A2 A1 A0 R/W1010 A2 A1 A0 R/W3 3位数字引脚地址位数字引脚地址A2A1A0A2A1A0AT24C02AT24C021010 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
21、P0 R/W1010 A2 P1 P0 R/W1 1位数字引脚地址位数字引脚地址A2A2AT24C016 AT24C016 1010 P2 P1 P0 R/W1010 P2 P1 P0 R/W无引脚地址,无引脚地址,A2A1A0A2A1A0悬空处理悬空处理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/LCDL
22、ED/LCD驱动控制器驱动控制器SAA 1064SAA 10640111 0 A1 A0 R/W0111 0 A1 A0 R/W2 2位数字引脚地址位数字引脚地址A1A0A1A0PCF8576PCF85760111 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位数字引脚地址位数字
23、引脚地址A2A1A0A2A1A0日历时钟日历时钟PCF8583PCF85831010 0 0 A0 R/W1010 0 0 A0 R/W1 1位数字引脚地址位数字引脚地址A0A05 5、I I2 2C C总线时序总线时序 一一次次完完整整的的数数据据传传送送过过程程应应包包括括:起起始始(S S)、发发送送寻寻址址字字节节(SLA SLA R/WR/W)、应应答答、发发送送数数据据、应应答、答、发送数据、应答、终止(、发送数据、应答、终止(P P)。)。80C5180C51只只能能采采用用虚虚拟拟I I2 2C C总总线线方方式式,并并且且只只能能用用于于单单主主系系统统,虚虚拟拟I I2 2
24、C C总总线线接接口口可可用用通通用用I/OI/O口口中中任任一一端端线线充充任任,数数据据线线定定义义为为VSDAVSDA,时时钟钟线线定定义义为为VSCLVSCL。二、二、80C5180C51单主系统虚拟单主系统虚拟I I2 2C C总线软件包总线软件包 80C51 80C51单主系统虚拟单主系统虚拟I I2 2C C总线软件包总线软件包VIICVIIC可由二大可由二大类共类共9 9个归一化子程序组成。二大类程序分别为个归一化子程序组成。二大类程序分别为典典型信号模拟子程序型信号模拟子程序和和数据传送通用子程序数据传送通用子程序。1 1、典型信号模拟子程序典型信号模拟子程序 对于虚拟对于虚
25、拟I I2 2C C总线,有几个重复应用的典型信号,可根总线,有几个重复应用的典型信号,可根据据I I2 2C C总线时序要求,编制这些典型信号子程序:总线时序要求,编制这些典型信号子程序:启动信号启动信号STATSTAT 终止信号终止信号STOPSTOP 发送应答位发送应答位(A)MACK(A)MACK 发送应答非位发送应答非位(A)NACK(A)NACK 检查应答位检查应答位CACKCACK2 2、数据传送通用子程序数据传送通用子程序 数数据据传传送送通通用用子子程程序序是是应应用用典典型型信信号号模模拟拟子子程程序序(起起始始、终终止止、应应答答和和检检查查应应答答)并并按按I I2 2
26、C C总总线线数数据据传传送送时时序序要要求求编编制的子程序。制的子程序。发送一字节数据子程序发送一字节数据子程序WR1BWR1B 接收一字节数据子程序接收一字节数据子程序RD1BRD1B 发送发送N N个字节数据子程序个字节数据子程序WRNBWRNB 接收接收N N个字节数据子程序个字节数据子程序RDNBRDNB 按照按照I I2 2C C总线数据传送时序要求,一次完整的数据发送过总线数据传送时序要求,一次完整的数据发送过程应包括起始(程应包括起始(S S)、发送寻址字节()、发送寻址字节(SLA R/WSLA R/W)、应答、发)、应答、发送数据、应答、送数据、应答、发送数据、应答、终止(
27、、发送数据、应答、终止(P P),其格式如),其格式如下:下:S SSLASLAW WA Adata1data1A A data2data2A AdataNdataNA AP P 其中,红色部分由主器件发送,从器件接收;黑色部分其中,红色部分由主器件发送,从器件接收;黑色部分由从器件发送,主器件接收。由从器件发送,主器件接收。发送发送N N个字节数据子程序个字节数据子程序WRNBWRNB入口条件入口条件:伪指令定义伪指令定义NUMBNUMB、SLASLA、MTDMTD单元地址;单元地址;发送数据字节数存内发送数据字节数存内RAM NUMBRAM NUMB单元;单元;发送寻址字节存内发送寻址字节
28、存内RAM SLARAM SLA单元;单元;发送数据依次存放在首址为发送数据依次存放在首址为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单元单元)L
29、CALL WR1B LCALL WR1B ;发送寻址字节发送寻址字节 LCALL CACK LCALL CACK ;检查应答位检查应答位 JB F0,WRNB0 JB 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,WRNB
30、 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 N个字节数据子程序个字节数据子程序RDNBRD
31、NB S SSLASLAR RA Adata1data1A Adata2data2A AdataNdataNA A P P 其中,红色部分由主器件发送,从器件接收;黑色其中,红色部分由主器件发送,从器件接收;黑色部分由从器件发送,主器件接收。部分由从器件发送,主器件接收。入口条件入口条件:伪指令定义伪指令定义NUMBNUMB、SLASLA、MRDMRD地址;地址;接收数据字节数存内接收数据字节数存内RAM NUMBRAM NUMB单元;单元;接收寻址字节存内接收寻址字节存内RAM SLARAM SLA单元单元。出口状态出口状态:接收:接收N N个字节依次存在首址个字节依次存在首址MRDMRD的
32、内的内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 WR1B LCALL WR1B ;发送接收寻址字节发送接收寻址字节 LCALL CACK LC
33、ALL 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 DJNZ R3,ACK ;判判N N个数据接收完毕否个数据接收完毕否?未完转发送应答位未完转发送应答位 LCALL NACK LC
34、ALL 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 ;转接收下一字节数据转接收下一字节数据 VIIC VIIC软件包共有软件包共有9 9个归一化子程序组成。个归一化子程序组成。VIICVIIC软软件件包包仅仅适适用用单单
35、主主系系统统即即主主方方式式下下I I2 2C C总总线线外外围围扩扩展展。且且应应fosc6MHzfosc6MHz,若若foscfosc6MHz6MHz,则则应应相相应应调调整整NOPNOP指令个数,以满足指令个数,以满足I I2 2C C总线数据传送时序要求。总线数据传送时序要求。VIICVIIC软软件件包包可可嵌嵌入入到到80C51 80C51 ROMROM中中任任一一空空间间,作作为为I I2 2C C总总线扩展应用程序设计的软件支持平台。线扩展应用程序设计的软件支持平台。在在应应用用VIICVIIC软软件件包包初初始始化化中中,应应对对软软件件包包中中标标记记符符号号用用伪指令定义。
36、伪指令定义。VIICVIIC软软件件包包占占用用资资源源:F0F0、CyCy、AccAcc、R1R1、R1R1、R3R3。在在调调用用VIICVIIC软软件件包包之之前前,若若涉涉及及这这些些存存储储单单元元中中原原有有数数据据尚尚需需保保存存,应应采采取取保保护护现现场场措措施施,在在调调用用结结束束后后恢恢复复现现场。场。3 3、虚拟虚拟I I2 2C C总线软件包总线软件包VIICVIIC小结小结一、一、I I2 2C C总线扩展总线扩展I/OI/O口通用器件口通用器件PCF8574PCF85748-4 8-4 虚拟虚拟I I2 2C C总线扩展总线扩展I/OI/O口口1 1、引脚功能引
37、脚功能 PCF8574PCF8574是是一一个个带带有有中中断断输输出出的的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:I I2 2C C总线接口;总线接口;INTINT:中中断断请请求求输输出出,低低电电平平有有效效,开漏输出;开漏输出;V VDDDD、V VSSSS:电源端、接地端;:电源端、接地端;2 2、电路设计电路设计PCF8574P
38、CF8574与与80C51 I80C51 I2 2C C总线接口应用电路。总线接口应用电路。PCF8574PCF8574的的器器件件地地址址是是01000100,A2A1A0A2A1A0为为引引脚脚地地址址,全全接接地地时时为为000000,R/W=1R/W=1时时,接接收收寻寻址址字字节节SLASLAR R=41H=41H=01000001B=01000001B;R/W=0R/W=0时时,发发送送寻寻址字节址字节SLASLAW W=40H=01000000B=40H=01000000B。3 3、寻址字节寻址字节 当当PCF8574PCF8574输入端输入端P0P0P7P7电平状态改变时,中电
39、平状态改变时,中断请求输出端断请求输出端INTINT会出现低电平(滞后时间约会出现低电平(滞后时间约4 4 s s),可触发),可触发80C5180C51产生中断。在对产生中断。在对PCF8574PCF8574进行一次读写操作后,进行一次读写操作后,INTINT端撤销中断请求,复端撤销中断请求,复位为高电平。位为高电平。4 4、中断请求中断请求5 5、数据输入数据输入/输出操作格式输出操作格式 输出操作输出操作S SSLASLAW WA APOdataPOdataA AP P 输入操作输入操作S SSLASLAR RA APIdataPIdataA AP P 其中,红色部分由其中,红色部分由8
40、0C5180C51发送,发送,PCF8574PCF8574接收;黑色接收;黑色部分由部分由PCF8574PCF8574发送,发送,80C5180C51接收。接收。二、二、PCF8574PCF8574应用实例应用实例【例例8-38-3】图图8-148-14为为PCF8574 PCF8574 四四键键四四LEDLED应应用用电电路路,PCF8574 PCF8574 P0P0P3P3为为键键信信号号K0K0K3K3输输入入端端,P4P4P7P7为为LEDLED控控制制信信号号D0D0D3D3输输出出端端,要要求求当当键键K0K0K3K3按按下下后后,相相应应LED LED D0D0D3D3亮亮,设设
41、VIICVIIC软软件件包包已已装装入入ROMROM。解:编制程序如下:解:编制程序如下:主程序:主程序:VSDA EQU P1.0 VSDA EQU P1.0;定义虚拟定义虚拟I I2 2C C总线数据线端口总线数据线端口 VSCL EQU P1.1 VSCL EQU P1.1;定义虚拟定义虚拟I I2 2C C总线时钟线端口总线时钟线端口 SLA EQU 50H SLA EQU 50H ;定义发送定义发送/接收寻址字节内接收寻址字节内RAMRAM存储单元为存储单元为50H50H NUMB EQU 51H NUMB EQU 51H ;定义发送定义发送/接收数据字节数接收数据字节数N N内内R
42、AMRAM存储单元为存储单元为51H51H MTD EQU 30H MTD EQU 30H ;定义发送数据内定义发送数据内RAMRAM存储区首地址为存储区首地址为30H30H MRD EQU 40H MRD EQU 40H ;定义接收数据内定义接收数据内RAMRAM存储区首地址为存储区首地址为40H40HWORK:MOV MTD,#0FFH WORK:MOV MTD,#0FFH;PCF8574;PCF8574初始化初始化,置置P0P0P3P3输入态输入态,D0,D0D3D3灯灭灯灭 MOV SLA,#40H MOV SLA,#40H ;置发送寻址字节置发送寻址字节 MOV NUMB,#1 MO
43、V NUMB,#1 ;置发送字节数置发送字节数 LCALL WRNB LCALL WRNB ;FFH;FFH写入写入PCF8574PCF8574 SETB EA SETB EA ;CPU;CPU开中开中 SETB EX1 SETB EX1 ;INT1;INT1开中开中 SETB IT1 SETB IT1 ;置置INT1INT1边沿触发方式边沿触发方式 SJMP$SJMP$;等待等待PCF8574 P0PCF8574 P0P3P3口状态变化触发中断口状态变化触发中断中断服务子程序:中断服务子程序:VINT:MOV SLA,#41H VINT:MOV SLA,#41H ;置接收寻址字节置接收寻址字
44、节 MOV NUMB,#1 MOV NUMB,#1 ;置接收字节数置接收字节数 LCALL RDNB LCALL RDNB ;读读PCF8574PCF8574口状态口状态 MOV A,MRD MOV A,MRD ;读接收数据读接收数据 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,
45、#1 MOV NUMB,#1 ;置发送字节数置发送字节数 LCALL WRNB LCALL WRNB ;输出控制信号输出控制信号 RETI RETI ;1 1、引脚功能引脚功能8-5 8-5 虚拟虚拟I I2 2C C总线扩展总线扩展 AT24CXX AT24CXX系列系列E E2 2PROMPROM一、一、I I2 2C C总线总线E2PROME2PROM芯片芯片AT24C02AT24C02SDASDA、SCLSCL:I I2 2C C总线接口总线接口A2A2A0A0:地址引脚:地址引脚TESTTEST:测试端,高电平有效:测试端,高电平有效V VDDDD、V VSSSS:电源端、接地端:电
46、源端、接地端2 2、电路设计电路设计 A A2 2 A A1 1 A A0 0TESTTEST E E2 2PROMPROM的的写写入入时时间间一一般般需需要要5 510ms10ms,页页写写缓缓冲冲器器具具有有SRAMSRAM性性质质,可可快快速速写写入入,先先将将CPUCPU输输入入的的数数据据暂暂存存页页写写缓缓冲冲器器内内,然然后后慢慢慢慢写写入入E E2 2PROMPROM中中。但但一一次次写写入入数数据据,受受到到该该芯芯片片页页写写缓缓冲冲器器容容量量的的限限制制,若若超超出出容容量量或或超超出出页页内内地地址址,都都将将导导致致出出错错。应应将将超超出出部部分分,隔隔 5 51
47、0ms10ms重新启动一次写操作。重新启动一次写操作。AT24C02 AT24C02页写缓冲器为页写缓冲器为8B8B,页内地址为,页内地址为000000111111。3 3、寻址字节寻址字节 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
48、 4、页写缓冲器页写缓冲器 写操作格式写操作格式 5 5、数据读数据读/写操作格式写操作格式S SSLASLAW WA ASADRSADRA A data1data1 A 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接收;接收;黑色部分由黑色部分由AT24CXXAT
49、24CXX发送发送,80C5180C51接收。接收。写入读出单元子地址写入读出单元子地址 读出操作读出操作 解:解:二、二、扩展扩展AT24C02AT24C02应用举例应用举例VAT24W:MOV SLA,#10100000BVAT24W:MOV SLA,#10100000B;置写置写AT24C02AT24C02寻址字节寻址字节 MOV NUMB,#9 MOV NUMB,#9 ;置写入数据字节数置写入数据字节数N+1(N+1(多一个片内子地址多一个片内子地址)MOV MTD,#50H MOV MTD,#50H ;置写置写AT24C02AT24C02片内子地址首址片内子地址首址SADR(30H)
50、=50HSADR(30H)=50H MOV R0,#10H MOV R0,#10H ;置置8 8个数据原存放区首址个数据原存放区首址 MOV R1,#31H MOV R1,#31H ;置置8 8个数据串行发送存放区首址个数据串行发送存放区首址 MOV R2,#8 MOV R2,#8 ;置数据个数置数据个数MOVLP:MOV A,R0 MOVLP:MOV A,R0 ;将将8 8个数据依次移入个数据依次移入31H31H38H38H MOV R1,A MOV R1,A ;INC R0 INC R0 ;INC R1 INC R1 ;DJNZ R2,MOVLP DJNZ R2,MOVLP ;LCALL