第9章MCS51单片机扩展IO接口设计课件_第1页
第9章MCS51单片机扩展IO接口设计课件_第2页
第9章MCS51单片机扩展IO接口设计课件_第3页
第9章MCS51单片机扩展IO接口设计课件_第4页
第9章MCS51单片机扩展IO接口设计课件_第5页
已阅读5页,还剩143页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章MCS-51扩展I/O接口设计在单片机的I/O口线不够用的情况下,可以借助外部器件对I/O口进行扩展。可供选用的器件很多,方案也有多种。

(1)并行总线扩展的方法(2)串行口扩展方法(3)I/O端口模拟串行方法I/O接口是MCS-51与外设交换数字信息的桥梁。1第9章MCS-51扩展I/O接口设计在单片9.1I/O接口并行扩展概述I/O接口电路应满足以下要求:1.实现和不同外设的速度匹配2.输出数据锁存I/O电路应具有数据锁存器,以保证接收设备接收。3.输入数据三态缓冲数据总线可“挂”有多个数据源,为不发生冲突,只允许当前时刻正在进行数据传送的数据源使用数据总线,其余的数据源应处于隔离状态。29.1I/O接口并行扩展概述I/O接口电路应满足以下要I/O数据的几种传送方式为实现和不同的外设的速度匹配,I/O接口必须根据不同外设选择恰当的I/O数据传送方式。I/O数据传送的几种传送方式是:(1)同步传送(2)查询传送(3)中断传送。3I/O数据的几种传送方式为实现和不同的外设的速度匹配,I/O接口和I/O端口I/O端口:简称I/O口,指具有端口地址的寄存器或缓冲器。I/O接口:是指单片机与外设间的I/O接口芯片。一个I/O接口芯片可以有多个I/O端口:(1)数据口(2)命令口(3)状态口I/O端口编址是给所有I/O接口中的寄存器编址。4I/O接口和I/O端口I/O端口:简称I/O口,指具有端口地并行总线扩展I/O接口①访问扩展I/O口的方法与访问数据存储器完全相同,使用相同的指令,所有扩展的I/O口与片外数据存储器统一编址。②利用并行总线扩展的方法扩展外部并行I/O口时,必须注意P0,P2口的负载问题,若负载能力不够,必须进行总线驱动能力扩展。③扩展外部并行I/O口对外设的硬件具有依赖性(驱动功率、电平匹配、干扰抑制、隔离等)。5并行总线扩展I/O接口①访问扩展I/O口的方法与访问数据存4.3.3可编程并行I/O接口64.3.3可编程并行I/O接口6778255A应用实例88255A应用实例88255A各端口的地址A口:0111111111111100B7FFCHB口:0111111111111101B7FFDHC口:0111111111111110B7FFEH控制:0111111111111111B7FFFH98255A各端口的地址A口:0111111111118255的应用例:从8255A的A口读入数据,送到8255A的B口输出解:MOVDPTR,#7FFFHMOVA,#90H;MOVX@DPTR,AMOVDPTR,#7FFCHMOVXA,@DPTRMOVDPTR,#7FFDHMOVX@DPTR,A108255的应用例:从8255A的A口读入数据,送到8255A9.4用锁存器或缓冲器扩展并行I/O口利用TTL或CMOS电路的缓冲驱动器(74244、74245)和锁存器(74273、74373、74377),通过P0口构成各种类型的输入/输出口。这些类型的芯片具有数据缓冲或锁存功能,但没有地址线和读写控制线,仅有数据输入/输出线和选通控制端。因此这类芯片扩展并行I/O口的方法与扩展数据存储器不同。其选通端应由地址线和控制线的组合控制。119.4用锁存器或缓冲器扩展并行I/O口扩展并行输出口带数据使能端正边沿触发的高速D触发器7437712扩展并行输出口带数据使能端正边沿触发的高速D触发器743扩展并行输出口三态正边沿触发的高速D触发器7437413扩展并行输出口三态正边沿触发的高速D触发器7437413141415159.5用MCS-51的串行口扩展并行口169.5用MCS-51的串行口扩展并行口16用74LS164扩展并行输出口例9-8编写将内部RAM单元30H、31H的内容经串行口由74LS164并行输出子程序。START:MOVR7,#02H ;设置要发送的字节个数 MOVR0,#30H ;设置地址指针 MOVSCON,#00H;设置串行口为方式0SEND:MOVA,@R0 MOVSBUF,A;启动串行口发送过程WAIT: JNBTI,WAIT ;1帧数据未发完,循环等待CLRTI INCR0 ;取下一个数DJNZR7,SEND ;未完,发完从子程序返回 RET17用74LS164扩展并行输出口例9-8编写将内部RAM单元用74LS165扩展并行输入口例9-7从16位扩展口读入5组数据(每组二个字节),并把它们转存到内部RAM20H开始的单元中。18用74LS165扩展并行输入口例9-7从16位扩展口读入5MOVR7,#05H;设置读入组数MOVR0,#20H;设置内部RAM数据区首址START:CLRP1.0 ;并行置入数据,S/L*=0 SETBP1.0 ;允许串行移位,S/L*=1MOVR1,#02H ;设置每组字节数,即外扩 ;74LS165的个数RXDAT:MOVSCON,#10H;设串口方式0,允许接收,启动WAIT:JNBRI,WAIT;未接收完一帧,循环等待 CLRRI ;清RI标志,准备下次接收MOVA,SBUF ;读入数据MOV@R0,A ;送至RAM缓冲区INCR0 ;指向下一个地址DJNZR1,RXDAT;未读完一组数据,继续DJNZR7,START ;5组数据未读完重新并行置入…… ;对数据进行处理19MOVR7,#05H;设置读入组数START:串行扩展总线接口技术一、串行扩展特点:⑴最大程度发挥最小系统的资源功能。⑵简化连接线路,缩小印板面积。⑶扩展性好,可简化系统的设计。⑷串行扩展的缺点:

数据吞吐容量较小,信号传输速度较慢,但随着CPU芯片工作频率的提高,以及串行扩展芯片功能的增强,这些缺点将逐步淡化。20串行扩展总线接口技术一、串行扩展特点:⑴最大程度发挥最小系串行扩展总线接口技术二、串行扩展方式分类:1、一线制一线制的典型代表为Dallas公司推出的单总线(1-wire)。21串行扩展总线接口技术二、串行扩展方式分类:1、一线制一线制的串行扩展总线接口技术2、二线制:二线制的典型代表为philips公司推出的I2C总线(SMBus)。22串行扩展总线接口技术2、二线制:二线制的典型代表为串行扩展总线接口技术⑴由Motorala公司推出的SPI(SerialperipheralInterface);⑵由NS公司推出的Microwire/PLUS。3、三线制23串行扩展总线接口技术⑴由Motorala公司推出的SPI(串行扩展总线接口技术虚拟串行扩展概念:用通用I/O口来模拟串行接口,构成虚拟的串行扩展接口。只要严格控制模拟同步信号,并满足串行同步数据传送的时序要求,就可满足串行数据传送的可靠性要求。24串行扩展总线接口技术虚拟串行扩展概念:用通用I/O口I2C总线I2C总线是一种具有自动寻址、高低速设备同步和仲裁等功能的高性能串行总线,能够实现完善的全双工数据传输。I2C总线只有两根信号线:数据线SDA和时钟线SCL。各节点供电可以不同,但需共地,另外SDA和SCL需分别接上拉电阻。I2C总线传输速率为100kb/s(改进后的规范为400kb/s),总线驱动能力为400pF。25I2C总线I2C总线是一种具有自动寻址、高低速设备同步和仲裁I2C总线26I2C总线26一、I2C总线的接口电路结构I2C总线由数据线SDA和时钟线SCL构成。SDA和SCL都是双向传输线,平时均处于高电平备用状态,只有当需要关闭I2C总线时,SCL线才会箝位在低电平。27一、I2C总线的接口电路结构I2C总线由数据线SDA二、I2C总线信号定义28二、I2C总线信号定义28三、I2C总线的数据传送29三、I2C总线的数据传送29三、I2C总线的数据传送应答信号在第9个时钟位上出现,接收器在SDA线上输出低电平为应答信号(A),输出高电平为非应答信号(A)。30三、I2C总线的数据传送应答信号在第9个时钟位上出现三、I2C总线的数据传送当主控器作为接收器接收被控器送来的最后一个数据时,必须给被控器发送一个非应答信号(A),令被控器释放SDA线,以便主控器可以发送停止信号来结束数据的传输。I2C总线上的应答信号是比较重要的,在编制程序时应该着重考虑。31三、I2C总线的数据传送当主控器作为接收器接四、I2C总线数据传输协议总线节点的寻址字节:主机产生起始信号后,发送的第一个字节为寻址字节。该字节的头7位(高7位)为从机地址,最后位(LSB)决定了报文的方向:0表示主机写信息到从机,1表示主机读从机中的信息。当发送了一个地址后,系统中每个器件都将头7位与自己的地址比较,如果一样器件会应答主机的寻址,至于是接收还是发送由R/W位决定。32四、I2C总线数据传输协议总线节点的寻址字节:四、I2C总线数据传输协议从机地址由一组固定位和一组可编程位部分构成。例如,某些器件有4个固定的位(高4位)和3个可编程的地址位(低3位),那么同一总线上共可以连接8个相同的器件。器件地址SLAR/WA0A1

A2DA0DA1DA2DA3D7D0从机地址和1位方向位构成了I2C总线器件的寻址字节SLA。引脚地址33四、I2C总线数据传输协议从机地址由一组固定位和一组I2C总线数据传输协议种类型号SLA引脚地址备注静态RAMPCF8570/711010A2A1A0R/W3位数字引脚地址A2A1A0PCF8570C1011A2A1A0R/W3位数字引脚地址A2A1A0E2PROMPCF85821010A2A1A0R/W3位数字引脚地址A2A1A0AT24C021010A2A1A0R/W3位数字引脚地址A2A1A0AT24C041010A2A1P0R/W2位数字引脚地址A2A1AT24C081010A2P1P0R/W1位数字引脚地址A2AT24C0161010P2P1P0R/W无引脚地址,A2A1A0悬空处理I/O口PCF85740100A2A1A0R/W3位数字引脚地址A2A1A0PCF8574A0111A2A1A0R/W3位数字引脚地址A2A1A0LED/LCD驱动控制器SAA106401110A1A0R/W2位数字引脚地址A1A0PCF8576011100A0R/W1位数字引脚地址A0PCF8578/79011110A0R/W1位数字引脚地址A0ADC/DACPCF89511001A2A1A0R/W3位数字引脚地址A2A1A0日历时钟PCF8583101000A0R/W1位数字引脚地址A034I2C总线数据传输协议种类型号SLA引脚地址备注静态RAMPI2C总线数据传输的格式地址字节和数据字节都是高位在前,低位在后。35I2C总线数据传输的格式地址字节和数据字节都是高位在前,低位I2C总线数据传输的格式(1)主控器的写数据操作格式Adata2Adata1ASLAWSAdata2Adata1ASLAWS…PAdataNAdataN-1PA/AdataNAdataN-1(2)主控器的读数据操作格式Adata2Adata1ASAdata2Adata1ASLARS…AdataNAdataN-1PAdataNAdataN-1无论哪种工作方式,都是由主控器来启动总线,发送寻址字节和终止运行;在I2C总线接口的外围器件中,器件内部有多个地址空间时,其读写操作都有地址自动加1功能。36I2C总线数据传输的格式(1)主控器的写数据操作格式Ada五、51单片机与I2C总线的接口37五、51单片机与I2C总线的接口37六、I2C总线数据传送软件包

MCS-51只能采用虚拟I2C总线方式,并且只能用于单主系统,虚拟I2C总线接口可用通用I/O口中任一端线充任,数据线定义为SDA,时钟线定义为SCL。MCS-51单主系统虚拟I2C总线软件包由二大类共9个归一化子程序组成。二大类程序分别为典型信号模拟子程序和数据传送通用子程序。38六、I2C总线数据传送软件包MCS-51只能采用虚1、典型信号模拟子程序I2C总线数据传送时,有起始位(S)、终止位(P)、发送0代表应答位(A)、发送1代表非应答位(A)等信号。391、典型信号模拟子程序I2C总线数据传送时,有起始位主程序在主程序初始化中,应有如下的语句: SDA BIT P1.7 SCL BIT P1.6 MTD EQU 30H;MTD发送数据缓冲区首址 MRD EQU 40H;MRD接收数据缓冲区首址 SLA EQU 60H;SLA寻址字节SLAR/W的存放单元NUMBYTEQU 61H;NUMBYT传送字节数存放单元40主程序在主程序初始化中,应有如下的语句:401)启动I2C总线子程序STA:STA:SETB SDASETB SCL;起始条件建立时间大于4.7μsNOPNOPCLR SDANOP ;起始条件锁定时间大于4μsNOPCLR SCL;箝住总线,准备发送数据RET411)启动I2C总线子程序STA:STA:SETB 2)停止I2C总线子程序STOPSTOP:CLR SDASETB SCL;发送停止条件的时钟信号NOP ;停止总线时间大于4μsNOPSETB SDA;停止总线NOPNOPCLRSDACLRSCLRET422)停止I2C总线子程序STOPSTOP:CLR 3)发送应答位信号子程序MACKMACK:

CLR SDASETBSCLNOP ;即SCL为高,时间大于4.0μsNOPCLR SCLSETBSDARET433)发送应答位信号子程序MACKMACK:CLR 4)发送非应答位信号子程序MNACKMNACK:SETBSDASETBSCLNOP NOPCLRSCLCLRSDARET444)发送非应答位信号子程序MNACKMNACK:SET2、I2C总线数据传送的模拟子程序I2C总线的数据操作除了基本的启动(STA)、终止(STOP)、发送应答位(MACK)、发送非应答位(MNACK)外,还应有应答位检查(CACK)、发送一字节(WRBYT)、接收一字节(RBYT)、发送N字节(WRNBYT)和接收N字节(RDNBYT)这5个子程序。452、I2C总线数据传送的模拟子程序I2C总线的数据操(1)应答位检查子程序CACKCACK:SETBSDA;置SDA为输入方式 SETBSCL;使SDA上数据有效 CLRF0;预设F0=0MOVC,SDA;输入SDA引脚状态JNCCEND;正常应答转CEND,且F0=0SETBF0;无正常应答,F0=1CEND:CLRSCL;子程序结束,使SCL=0RET用F0作标志位,正常应答位后,F0=0;否则F0=1。46(1)应答位检查子程序CACK用F0作标志位,正常应答位后(2)发送一字节数据子程序WRBYT初始化要发送的位送C1or0?送“1”送“0”8位送完?RET10NY47(2)发送一字节数据子程序WRBYT初始化要发送的位送C1调用该子程序前,将要发送的数据送入A中。占用资源R0、C。WRBYT:MOV R0,#08HWLP:RLCA JC WR1 AJMP WR0WLP1:DJNZ R0,WLP RETWR1:SETB SDA SETB SCL NOP NOP

CLR SCL CLRSDA AJMP WLP1WR0:CLR SDA SETBSCL NOP NOP CLR SCL AJMP WLP148调用该子程序前,将要发送的数据送入A中。占用资源R0、C。 (3)从SDA上接收一字节数据子程序RDBYT初始化自SDA接收1位送C8位收完?RETNY送C中位toA使SCL=0,继续收49(3)从SDA上接收一字节数据子程序RDBYT初始化自SDA(3)从SDA上接收一字节数据子程序RDBYT从SDA上读取的一字节存放在R2或A中。占用资源R0、R2和C。RDBYT:MOVR0,#08HRLP:SETBSDA SETBSCLNOP MOVC,SDA MOVA,R2 RLCA MOVR2,A CLRSCLNOP DJNZR0,RLP RET50(3)从SDA上接收一字节数据子程序RDBYT从SDA上读取(4)向被控器发送N字节数据子程WRNBYT在使用本子程序时,须调用STA、STOP、WRBYT和CACK子程序,而且应在片内RAM中分配好这些地址。51(4)向被控器发送N字节数据子程WRNBYT(4)向被控器发送N字节数据子程WRNBYT初始化启动I2C总线应答位?发送数据初始化NY送地址字节检查应答位发送一字节应答位?YN发送完?Y发送停止位N52(4)向被控器发送N字节数据子程WRNBYT初始化启动I2WRNBYT:MOV R3,NUMBYT LCALLSTA MOV A,SLA LCALLWRBYT LCALLCACK JB F0,WRNBYT MOV R1,#MTDWRDA: MOV A,@R1 LCALLWRBYT LCALLCACK JB F0,WRNBYT INC R1 DJNZ R3,WRDA LCALLSTOP RET53WRNBYT:MOV R3,NUMBYT53(5)从外围器件读取N字节数据子程序RDNBYT54(5)从外围器件读取N字节数据子程序RDNBYT54(5)从外围器件读取N字节数据子程序RDNBYT初始化启动I2C总线应答位?接收缓冲器初始化NY送地址字节检查应答位接收一字节接收完?N发送应答位Y发送非应答位、停止位55(5)从外围器件读取N字节数据子程序RDNBYT初始化启动IRDNBYT: MOV R3,NUMBYT LCALLSTA MOV A,SLAR LCALLWRBYT LCALLCACK JB F0,RDNBYTRDN: MOVR1,#MRDRDN1: LCALLRDBYT MOV @R1,A DJNZ R3,ACK LCALLMNACK LCALLSTOP RETACK: LCALLMACK INC R1 SJMP RDN156RDNBYT: MOV R3,NUMBYT56I2C总线接口的数码管驱动芯片SAA106457I2C总线接口的数码管驱动芯片SAA10645758585959I2C总线接口的数码管驱动芯片SAA1064引脚ADR模拟电平引脚ADR数字化从地址寻址命令A1A0D7D6D5D4D3A1A0R/W写读GND(0V)0001110001/070H71H3/8VCC0101110011/072H73H5/8VCC1001110101/074H75HVCC(5V)1101110111/076H77H60I2C总线接口的数码管驱动芯片SAA1064引脚ADR引脚AI2C总线接口的数码管驱动芯片SAA106461I2C总线接口的数码管驱动芯片SAA106461I2C总线接口的数码管驱动芯片SAA1064SC位、SB位和SA位构成一个指针,用于装入控制字节和4个显示段码(字形码),且子地址自动增量(AI),主控器对其可快速初始化。62I2C总线接口的数码管驱动芯片SAA1064I2C总线接口的数码管驱动芯片SAA1064控制字节各位功能说明:C0=0,静态模式,即连续显示数字位1和数字位2。C0=1,动态模式,即变换显示数字位1+3和数字位2+4。C1=0/1,数字位1+3为空/不空。C2=0/1,数字位2+4为空/不空。C3=1,所有段输出打开以进行段测试。C4=1,段输出电流加3mA。C5=1,段输出电流加6mA。C6=1,段输出电流加12mA。

63I2C总线接口的数码管驱动芯片SAA1064控制字节各位功能I2C总线接口的数码管驱动芯片SAA1064SAA1064的写数据操作格式为:SLA:SAA1064写命令SLAW;00H:首地址;COM:控制命令数据;LED1-LED4:4个显示位的共阳极段选码数据

64I2C总线接口的数码管驱动芯片SAA1064SAA1064的4.6总线接口扩展总线种类繁多,可分为局部总线、系统总线和通信总线。通信总线是系统之间或CPU与外设之间进行通信的一组信号线。通信总线接口按电气标准及协议来分包括RS-232、RS-422、RS-485、MODEM、USB、IEEE1394、CAN、Internet网络芯片等,它们在不同的领域得到了广泛的应用。这里主要介绍MCS-51单片机应用系统中常用的通信总线标准及接口。654.6总线接口扩展总线种类繁多,可分为局部4.6.1RS-232C总线标准与接口电路

EIARS-232C是异步串行通信中应用最广泛的标准总线,是美国EIA(ElectronicIndustriesAssociation,电子工业联合会)开发公布的通信协议。适合于数据传输速率在0~20kb/s范围内的通信,包括了按位串行传输的电气和机械方面的规定。在微机通信接口中被广泛采用。664.6.1RS-232C总线标准与接口电路EIA4.6.1RS-232C总线标准与接口电路1.电气特性(1)采取不平衡传输方式,是为点对点(即只用一对收、发设备)通信而设计的;(2)采用负逻辑。(3)适用于传送距离不大于15m,速度不高于20kb/s的本地设备之间通信的场合。674.6.1RS-232C总线标准与接口电路1.电气特性4.6.1RS-232C总线标准与接口电路DSR:数据装置准备好;DTR:数据终端准备好;RTS:请求发送;CTS:允许发送;DCD:接收线信号检出;RI:振铃指示;TXD:发送数据;RXD:接收数据;SGND、PGND:地线,SGND(信号地)、PGND(保护地)。684.6.1RS-232C总线标准与接口电路DSR:数据装4.6.1RS-232C总线标准与接口电路4.电平转换

RS-232C采用负逻辑,为了能够同计算机接口或终端的TTL器件连接,必须在RS-232C与TTL电路之间进行电平和逻辑关系的变换。MAX232芯片是Maxim公司生产的低功耗、单电源、双RS-232发送/接收器,可实现TTL到EIA的双向电平转换。其引脚排列如下图所示。694.6.1RS-232C总线标准与接口电路4.电平转换EIARS-232C与单片机系统的接口70EIARS-232C与单片机系统的接口704.6.2RS-422/RS-485总线标准与接口电路1.RS-422串行总线标准

RS-422由RS-232发展而来,是一种单机发送、多机接收的单向、平衡的通信总线标准。传输速率可达10Mb/s,传输距离延长到1220m(速率低于100kb/s时),并允许在一条平衡总线上最多连接10个接收器。2.RS-485串行总线标准

EIA在RS-422的基础上制定了RS-485标准,增加了多点、双向通信能力。RS-485总线标准采用平衡发送和差分接收,能检测低至200mV的电压,具有抑制共模干扰的能力,数据传输可达千米以上。714.6.2RS-422/RS-485总线标准与接口电路14.6.2RS-422/RS-485总线标准与接口电路3.平衡传输

RS-422,RS-485的数据信号采用差分传输方式,也称做平衡传输,它使用一对双绞线,将其中一条线定义为A,另一条线定义为B。收、发端通过平衡双绞线将AA与BB对应相连,当在接收端AB之间有大于+200mV的电平时,输出逻辑1,小于200mV时,输出逻辑0。724.6.2RS-422/RS-485总线标准与接口电路34.6.2RS-422/RS-485总线标准与接口电路电气特性:RS-485标准采用正逻辑,1.5V~6V表示“1”,6V~1.5V表示“0”,二线双端半双工差分电平发送与接收,传输距离1.2km,最高数据传输速率可达10Mb/s功能与规程特性:网络媒介采用双绞线、同轴电缆或光纤,安装简易,电缆数量、连接器、中继器、滤波器使用数量较少(每个中继器可延长线路1.2km),网络成本低廉。734.6.2RS-422/RS-485总线标准与接口电路电4.6.2RS-422/RS-485总线标准与接口电路

单片机与RS-485总线标准之间必须进行转换,常用的转换芯片有MAX485,SN5176等。MAX485芯片是MAXIM公司的电平转换芯片,其引脚如右图所示。744.6.2RS-422/RS-485总线标准与接口电路第9章MCS-51扩展I/O接口设计在单片机的I/O口线不够用的情况下,可以借助外部器件对I/O口进行扩展。可供选用的器件很多,方案也有多种。

(1)并行总线扩展的方法(2)串行口扩展方法(3)I/O端口模拟串行方法I/O接口是MCS-51与外设交换数字信息的桥梁。75第9章MCS-51扩展I/O接口设计在单片9.1I/O接口并行扩展概述I/O接口电路应满足以下要求:1.实现和不同外设的速度匹配2.输出数据锁存I/O电路应具有数据锁存器,以保证接收设备接收。3.输入数据三态缓冲数据总线可“挂”有多个数据源,为不发生冲突,只允许当前时刻正在进行数据传送的数据源使用数据总线,其余的数据源应处于隔离状态。769.1I/O接口并行扩展概述I/O接口电路应满足以下要I/O数据的几种传送方式为实现和不同的外设的速度匹配,I/O接口必须根据不同外设选择恰当的I/O数据传送方式。I/O数据传送的几种传送方式是:(1)同步传送(2)查询传送(3)中断传送。77I/O数据的几种传送方式为实现和不同的外设的速度匹配,I/O接口和I/O端口I/O端口:简称I/O口,指具有端口地址的寄存器或缓冲器。I/O接口:是指单片机与外设间的I/O接口芯片。一个I/O接口芯片可以有多个I/O端口:(1)数据口(2)命令口(3)状态口I/O端口编址是给所有I/O接口中的寄存器编址。78I/O接口和I/O端口I/O端口:简称I/O口,指具有端口地并行总线扩展I/O接口①访问扩展I/O口的方法与访问数据存储器完全相同,使用相同的指令,所有扩展的I/O口与片外数据存储器统一编址。②利用并行总线扩展的方法扩展外部并行I/O口时,必须注意P0,P2口的负载问题,若负载能力不够,必须进行总线驱动能力扩展。③扩展外部并行I/O口对外设的硬件具有依赖性(驱动功率、电平匹配、干扰抑制、隔离等)。79并行总线扩展I/O接口①访问扩展I/O口的方法与访问数据存4.3.3可编程并行I/O接口804.3.3可编程并行I/O接口68178255A应用实例828255A应用实例88255A各端口的地址A口:0111111111111100B7FFCHB口:0111111111111101B7FFDHC口:0111111111111110B7FFEH控制:0111111111111111B7FFFH838255A各端口的地址A口:0111111111118255的应用例:从8255A的A口读入数据,送到8255A的B口输出解:MOVDPTR,#7FFFHMOVA,#90H;MOVX@DPTR,AMOVDPTR,#7FFCHMOVXA,@DPTRMOVDPTR,#7FFDHMOVX@DPTR,A848255的应用例:从8255A的A口读入数据,送到8255A9.4用锁存器或缓冲器扩展并行I/O口利用TTL或CMOS电路的缓冲驱动器(74244、74245)和锁存器(74273、74373、74377),通过P0口构成各种类型的输入/输出口。这些类型的芯片具有数据缓冲或锁存功能,但没有地址线和读写控制线,仅有数据输入/输出线和选通控制端。因此这类芯片扩展并行I/O口的方法与扩展数据存储器不同。其选通端应由地址线和控制线的组合控制。859.4用锁存器或缓冲器扩展并行I/O口扩展并行输出口带数据使能端正边沿触发的高速D触发器7437786扩展并行输出口带数据使能端正边沿触发的高速D触发器743扩展并行输出口三态正边沿触发的高速D触发器7437487扩展并行输出口三态正边沿触发的高速D触发器7437413881489159.5用MCS-51的串行口扩展并行口909.5用MCS-51的串行口扩展并行口16用74LS164扩展并行输出口例9-8编写将内部RAM单元30H、31H的内容经串行口由74LS164并行输出子程序。START:MOVR7,#02H ;设置要发送的字节个数 MOVR0,#30H ;设置地址指针 MOVSCON,#00H;设置串行口为方式0SEND:MOVA,@R0 MOVSBUF,A;启动串行口发送过程WAIT: JNBTI,WAIT ;1帧数据未发完,循环等待CLRTI INCR0 ;取下一个数DJNZR7,SEND ;未完,发完从子程序返回 RET91用74LS164扩展并行输出口例9-8编写将内部RAM单元用74LS165扩展并行输入口例9-7从16位扩展口读入5组数据(每组二个字节),并把它们转存到内部RAM20H开始的单元中。92用74LS165扩展并行输入口例9-7从16位扩展口读入5MOVR7,#05H;设置读入组数MOVR0,#20H;设置内部RAM数据区首址START:CLRP1.0 ;并行置入数据,S/L*=0 SETBP1.0 ;允许串行移位,S/L*=1MOVR1,#02H ;设置每组字节数,即外扩 ;74LS165的个数RXDAT:MOVSCON,#10H;设串口方式0,允许接收,启动WAIT:JNBRI,WAIT;未接收完一帧,循环等待 CLRRI ;清RI标志,准备下次接收MOVA,SBUF ;读入数据MOV@R0,A ;送至RAM缓冲区INCR0 ;指向下一个地址DJNZR1,RXDAT;未读完一组数据,继续DJNZR7,START ;5组数据未读完重新并行置入…… ;对数据进行处理93MOVR7,#05H;设置读入组数START:串行扩展总线接口技术一、串行扩展特点:⑴最大程度发挥最小系统的资源功能。⑵简化连接线路,缩小印板面积。⑶扩展性好,可简化系统的设计。⑷串行扩展的缺点:

数据吞吐容量较小,信号传输速度较慢,但随着CPU芯片工作频率的提高,以及串行扩展芯片功能的增强,这些缺点将逐步淡化。94串行扩展总线接口技术一、串行扩展特点:⑴最大程度发挥最小系串行扩展总线接口技术二、串行扩展方式分类:1、一线制一线制的典型代表为Dallas公司推出的单总线(1-wire)。95串行扩展总线接口技术二、串行扩展方式分类:1、一线制一线制的串行扩展总线接口技术2、二线制:二线制的典型代表为philips公司推出的I2C总线(SMBus)。96串行扩展总线接口技术2、二线制:二线制的典型代表为串行扩展总线接口技术⑴由Motorala公司推出的SPI(SerialperipheralInterface);⑵由NS公司推出的Microwire/PLUS。3、三线制97串行扩展总线接口技术⑴由Motorala公司推出的SPI(串行扩展总线接口技术虚拟串行扩展概念:用通用I/O口来模拟串行接口,构成虚拟的串行扩展接口。只要严格控制模拟同步信号,并满足串行同步数据传送的时序要求,就可满足串行数据传送的可靠性要求。98串行扩展总线接口技术虚拟串行扩展概念:用通用I/O口I2C总线I2C总线是一种具有自动寻址、高低速设备同步和仲裁等功能的高性能串行总线,能够实现完善的全双工数据传输。I2C总线只有两根信号线:数据线SDA和时钟线SCL。各节点供电可以不同,但需共地,另外SDA和SCL需分别接上拉电阻。I2C总线传输速率为100kb/s(改进后的规范为400kb/s),总线驱动能力为400pF。99I2C总线I2C总线是一种具有自动寻址、高低速设备同步和仲裁I2C总线100I2C总线26一、I2C总线的接口电路结构I2C总线由数据线SDA和时钟线SCL构成。SDA和SCL都是双向传输线,平时均处于高电平备用状态,只有当需要关闭I2C总线时,SCL线才会箝位在低电平。101一、I2C总线的接口电路结构I2C总线由数据线SDA二、I2C总线信号定义102二、I2C总线信号定义28三、I2C总线的数据传送103三、I2C总线的数据传送29三、I2C总线的数据传送应答信号在第9个时钟位上出现,接收器在SDA线上输出低电平为应答信号(A),输出高电平为非应答信号(A)。104三、I2C总线的数据传送应答信号在第9个时钟位上出现三、I2C总线的数据传送当主控器作为接收器接收被控器送来的最后一个数据时,必须给被控器发送一个非应答信号(A),令被控器释放SDA线,以便主控器可以发送停止信号来结束数据的传输。I2C总线上的应答信号是比较重要的,在编制程序时应该着重考虑。105三、I2C总线的数据传送当主控器作为接收器接四、I2C总线数据传输协议总线节点的寻址字节:主机产生起始信号后,发送的第一个字节为寻址字节。该字节的头7位(高7位)为从机地址,最后位(LSB)决定了报文的方向:0表示主机写信息到从机,1表示主机读从机中的信息。当发送了一个地址后,系统中每个器件都将头7位与自己的地址比较,如果一样器件会应答主机的寻址,至于是接收还是发送由R/W位决定。106四、I2C总线数据传输协议总线节点的寻址字节:四、I2C总线数据传输协议从机地址由一组固定位和一组可编程位部分构成。例如,某些器件有4个固定的位(高4位)和3个可编程的地址位(低3位),那么同一总线上共可以连接8个相同的器件。器件地址SLAR/WA0A1

A2DA0DA1DA2DA3D7D0从机地址和1位方向位构成了I2C总线器件的寻址字节SLA。引脚地址107四、I2C总线数据传输协议从机地址由一组固定位和一组I2C总线数据传输协议种类型号SLA引脚地址备注静态RAMPCF8570/711010A2A1A0R/W3位数字引脚地址A2A1A0PCF8570C1011A2A1A0R/W3位数字引脚地址A2A1A0E2PROMPCF85821010A2A1A0R/W3位数字引脚地址A2A1A0AT24C021010A2A1A0R/W3位数字引脚地址A2A1A0AT24C041010A2A1P0R/W2位数字引脚地址A2A1AT24C081010A2P1P0R/W1位数字引脚地址A2AT24C0161010P2P1P0R/W无引脚地址,A2A1A0悬空处理I/O口PCF85740100A2A1A0R/W3位数字引脚地址A2A1A0PCF8574A0111A2A1A0R/W3位数字引脚地址A2A1A0LED/LCD驱动控制器SAA106401110A1A0R/W2位数字引脚地址A1A0PCF8576011100A0R/W1位数字引脚地址A0PCF8578/79011110A0R/W1位数字引脚地址A0ADC/DACPCF89511001A2A1A0R/W3位数字引脚地址A2A1A0日历时钟PCF8583101000A0R/W1位数字引脚地址A0108I2C总线数据传输协议种类型号SLA引脚地址备注静态RAMPI2C总线数据传输的格式地址字节和数据字节都是高位在前,低位在后。109I2C总线数据传输的格式地址字节和数据字节都是高位在前,低位I2C总线数据传输的格式(1)主控器的写数据操作格式Adata2Adata1ASLAWSAdata2Adata1ASLAWS…PAdataNAdataN-1PA/AdataNAdataN-1(2)主控器的读数据操作格式Adata2Adata1ASAdata2Adata1ASLARS…AdataNAdataN-1PAdataNAdataN-1无论哪种工作方式,都是由主控器来启动总线,发送寻址字节和终止运行;在I2C总线接口的外围器件中,器件内部有多个地址空间时,其读写操作都有地址自动加1功能。110I2C总线数据传输的格式(1)主控器的写数据操作格式Ada五、51单片机与I2C总线的接口111五、51单片机与I2C总线的接口37六、I2C总线数据传送软件包

MCS-51只能采用虚拟I2C总线方式,并且只能用于单主系统,虚拟I2C总线接口可用通用I/O口中任一端线充任,数据线定义为SDA,时钟线定义为SCL。MCS-51单主系统虚拟I2C总线软件包由二大类共9个归一化子程序组成。二大类程序分别为典型信号模拟子程序和数据传送通用子程序。112六、I2C总线数据传送软件包MCS-51只能采用虚1、典型信号模拟子程序I2C总线数据传送时,有起始位(S)、终止位(P)、发送0代表应答位(A)、发送1代表非应答位(A)等信号。1131、典型信号模拟子程序I2C总线数据传送时,有起始位主程序在主程序初始化中,应有如下的语句: SDA BIT P1.7 SCL BIT P1.6 MTD EQU 30H;MTD发送数据缓冲区首址 MRD EQU 40H;MRD接收数据缓冲区首址 SLA EQU 60H;SLA寻址字节SLAR/W的存放单元NUMBYTEQU 61H;NUMBYT传送字节数存放单元114主程序在主程序初始化中,应有如下的语句:401)启动I2C总线子程序STA:STA:SETB SDASETB SCL;起始条件建立时间大于4.7μsNOPNOPCLR SDANOP ;起始条件锁定时间大于4μsNOPCLR SCL;箝住总线,准备发送数据RET1151)启动I2C总线子程序STA:STA:SETB 2)停止I2C总线子程序STOPSTOP:CLR SDASETB SCL;发送停止条件的时钟信号NOP ;停止总线时间大于4μsNOPSETB SDA;停止总线NOPNOPCLRSDACLRSCLRET1162)停止I2C总线子程序STOPSTOP:CLR 3)发送应答位信号子程序MACKMACK:

CLR SDASETBSCLNOP ;即SCL为高,时间大于4.0μsNOPCLR SCLSETBSDARET1173)发送应答位信号子程序MACKMACK:CLR 4)发送非应答位信号子程序MNACKMNACK:SETBSDASETBSCLNOP NOPCLRSCLCLRSDARET1184)发送非应答位信号子程序MNACKMNACK:SET2、I2C总线数据传送的模拟子程序I2C总线的数据操作除了基本的启动(STA)、终止(STOP)、发送应答位(MACK)、发送非应答位(MNACK)外,还应有应答位检查(CACK)、发送一字节(WRBYT)、接收一字节(RBYT)、发送N字节(WRNBYT)和接收N字节(RDNBYT)这5个子程序。1192、I2C总线数据传送的模拟子程序I2C总线的数据操(1)应答位检查子程序CACKCACK:SETBSDA;置SDA为输入方式 SETBSCL;使SDA上数据有效 CLRF0;预设F0=0MOVC,SDA;输入SDA引脚状态JNCCEND;正常应答转CEND,且F0=0SETBF0;无正常应答,F0=1CEND:CLRSCL;子程序结束,使SCL=0RET用F0作标志位,正常应答位后,F0=0;否则F0=1。120(1)应答位检查子程序CACK用F0作标志位,正常应答位后(2)发送一字节数据子程序WRBYT初始化要发送的位送C1or0?送“1”送“0”8位送完?RET10NY121(2)发送一字节数据子程序WRBYT初始化要发送的位送C1调用该子程序前,将要发送的数据送入A中。占用资源R0、C。WRBYT:MOV R0,#08HWLP:RLCA JC WR1 AJMP WR0WLP1:DJNZ R0,WLP RETWR1:SETB SDA SETB SCL NOP NOP

CLR SCL CLRSDA AJMP WLP1WR0:CLR SDA SETBSCL NOP NOP CLR SCL AJMP WLP1122调用该子程序前,将要发送的数据送入A中。占用资源R0、C。 (3)从SDA上接收一字节数据子程序RDBYT初始化自SDA接收1位送C8位收完?RETNY送C中位toA使SCL=0,继续收123(3)从SDA上接收一字节数据子程序RDBYT初始化自SDA(3)从SDA上接收一字节数据子程序RDBYT从SDA上读取的一字节存放在R2或A中。占用资源R0、R2和C。RDBYT:MOVR0,#08HRLP:SETBSDA SETBSCLNOP MOVC,SDA MOVA,R2 RLCA MOVR2,A CLRSCLNOP DJNZR0,RLP RET124(3)从SDA上接收一字节数据子程序RDBYT从SDA上读取(4)向被控器发送N字节数据子程WRNBYT在使用本子程序时,须调用STA、STOP、WRBYT和CACK子程序,而且应在片内RAM中分配好这些地址。125(4)向被控器发送N字节数据子程WRNBYT(4)向被控器发送N字节数据子程WRNBYT初始化启动I2C总线应答位?发送数据初始化NY送地址字节检查应答位发送一字节应答位?YN发送完?Y发送停止位N126(4)向被控器发送N字节数据子程WRNBYT初始化启动I2WRNBYT:MOV R3,NUMBYT LCALLSTA MOV A,SLA LCALLWRBYT LCALLCACK JB F0,WRNBYT MOV R1,#MTDWRDA: MOV A,@R1 LCALLWRBYT LCALLCACK JB F0,WRNBYT INC R1 DJNZ R3,WRDA LCALLSTOP RET127WRNBYT:MOV R3,NUMBYT53(5)从外围器件读取N字节数据子程序RDNBYT128(5)从外围器件读取N字节数据子程序RDNBYT54(5)从外围器件读取N字节数据子程序RDNBYT初始化启动I2C总线应答位?接收缓冲器初始化NY送地址字节检查应答位接收一字节接收完?N发送应答位Y发送非应答位、停止位129(5)从外围器件读取N字节数据子程序RDNBYT初始化启动IRDNBYT: MOV R3,NUMBYT LCALLSTA MOV A,SLAR LCALLWRBYT LCALLCACK JB F0,RDNBYTRDN: MOVR1,#MRDRDN1: LCALLRDBYT MOV @R1,A DJNZ R3,ACK LCALLMNACK LCALLSTOP RETACK: LCALLMACK INC R1 SJMP RDN1130RDNBYT: MOV R3,NUMBYT56I2C总线接口的数码管驱动芯片SAA1064131I2C总线接口的数码管驱动芯片SAA1064571325813359I2C总线接口的数码管驱动芯片SAA1064引脚ADR模拟电平引脚ADR数字化从地址寻址命令A1A0D7D6D5D4D3A1A0R/W写读GND(0V)0001110001/070H71H3/8VCC0101110011/072H73H5/8VCC1001110101/074H75HVCC(5V)1101110111/076H77H134I2C总线接口的数码管驱动芯片SAA1064引脚ADR引脚AI2C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论