嵌入式第6章3MCS-51的串行接口

上传人:tia****nde 文档编号:248112305 上传时间:2024-10-22 格式:PPT 页数:77 大小:1.19MB
返回 下载 相关 举报
嵌入式第6章3MCS-51的串行接口_第1页
第1页 / 共77页
嵌入式第6章3MCS-51的串行接口_第2页
第2页 / 共77页
嵌入式第6章3MCS-51的串行接口_第3页
第3页 / 共77页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,6.3 MCS-51,的串行接口,6.3.1,串行通信基础,计算机与外部设备或计算机与计算机之间的数据交换称为通信。通信分为并行通信与串行通信两种基本方式。,并行通信,:将数据的各位,用多条数据线同时进行传送,,,外加地址线和通信控制线。优点是传输速率高,缺点是,长距离传输成本高,可靠性差,只适用于近距离传输。,串行通信,:将数据分成,1,位,1,位的形式在一条传输线上逐,个地传送,。优点是传输线少,长距离传送时成本低,缺,点是传输速率低。,6.3.1,串行通信基础,(a),并行通信方式,(b),串行通信方式,图,4.10,并行和串行通信方式,6.3.1,串行通信基础,1.,串行通信的种类,根据数据传输方式的不同,可将串行通信分为同步 通信和异步通信。,1),同步通信,同步通信是一种数据连续传输的串行通信方式,通信时发送方把需要发送的多个字节数据和校验信息连接起来,组成数据块。,发送时,发送方只需在数据块前插入,1,2,个特殊的同步字符,然后按特定速率逐位输出,(,发送,),数据块内的各位数据。,接收方在接收到特定的同步字符后,也按相同速率接收数据块内的各位数据。,6.3.1,串行通信基础,典型的同步通信格式如下:,在这种通信方式中,数据块内的各位数据之间没有间,隔,传输效率高;,发送、接收双方必须保持同步,(,使用同一时钟信号,),,,且数据块长度越大,对同步要求就越高。,同步通信设备复杂,成本高,一般只用在高速数字通,信系统中。,同步字符,1,同步字符,2,N,个字节的连续数据,校验信息,1,校验信息,2,6.3.1,串行通信基础,2),异步通信,异步通信是以字符帧为单位进行传输。,每帧数据由,4,部分组成:起始位,(,占,1,位,),、数据位,(,占,位,),、奇偶校验位,(,占位,也可以没有校验,位,),、停止位,(,占,1,或,2,位,),。,图,4.11,中给出的是,8,位数据位、,1,位奇偶校验位和,1,位,停止位,加上,1,位起始位,共,11,位组成一个传输帧。,6.3.1,串行通信基础,图,4.11,异步通信字符帧格式,6.3.1,串行通信基础,发送方:传送时先输出起始位“”作为联络信号,接下来的是数据位和奇偶校验位,停止位“,1”,表示一个字符的结束。其中,数据的低位在前,高位在后。字符之间允许有不定长度的空闲位。,接收方:传送开始后,接收设备不断检测传输线的电平状态,当收到一系列的“,1”(,空闲位或停止位,),之后,检测到一个“”,说明起始位出现,就开始接收所规定的数据位和奇偶校验位以及停止位。,异步通信的特点:所需传输线少,设备开销较小,在单片机控制系统中得到广泛的应用。但每个字符要附加,2,3,位用于起止位,各帧之间还有间隔,因此传输效率不高。,6.3.1,串行通信基础,2.,串行通信数据传输方向,根据串行通信数据传输的方向,可将串行通信系统传输方式分为:,单工方式、半双工方式和全双工方式,,如图,4.12,所示。,图,4.12,数据传输方式,6.3.1,串行通信基础,1),单工:数据传输仅能从发送设备传输到接收设备。,2),半双工:两个串行通信设备之间只有一条数据线,,数据传输可以沿两个方向,但,需要分时进行,。,3),全双工:是指两个串行通信设备之间,可以同时进行,接收和发送,。,3,种方式中,全双工方式的效率最高;,半双工方式配置和编程相对灵活,传输成本较低 ;,串行通信设备常选用半双工方式。,6.3.1,串行通信基础,3.,波特率,数据的传输速率可以用波特率表示。,波特率是信号每秒变化的次数,,单位是:符号,/s,比特率是每秒传送二进制数的位数,单位是:,(bit/s,或,kbit/s),。,如每秒传送,240,个字符,而每个字符格式包含,10,位这时的波特率为,10,位,(bit)240,个,/s = 2400 bit/s,。,在异步串行通信中,接收方和发送方应使用相同的波特率,才能成功传送数据。,6.3.2,串行接口的基本结构,MCS-51,单片机内部有一个全双工异步串行,I/O,接口。,MCS-51,串行接口的内部简化结构如图,4.13,所示。,图,4.13 MCS-51,串行接口结构图,6.3.2,串行接口的基本结构,P3.0,是串行数据接收端,RXD,,,P3.1,是串行数据发送端,TXD,。,串行接口的结构,由串行接口控制电路、发送电路和接收电路,3,部分组成。,发送电路,由发送缓冲器,(SBUF),、发送控制电路组成,用于串行接口的发送。,接收电路,由接收缓冲器,(SBUF),、接收控制电路组成,用于串行接口的接收。,两个数据缓冲器,(SBUF),在物理上相互独立,在逻辑上却占用同一字节地址,99H,。,6.3.3,串行接口的控制与实现,单片机串行接口工作方式是通过初始化设置,将两个相应控制字分别写入串行控制寄存器,SCON(98H),和电 源控制寄存器,PCON(97H),即可。,1.,和串行接口有关的,特殊功能寄存器,1),数据缓冲器,(99H),发送缓冲器:只管发送数据,,CPU,写入,SBUF,的时候,(MOV SUBF,,,A),即为发送;,接收缓冲器:只管接收数据,,CPU,读取,SBUF,的过程,(MOV A,,,SUBF),即为接收。,6.3.3,串行接口的控制与实现,发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。所以可同时发送数据、接收数据。,对于发送缓冲器,因为发送时,CPU,是主动的,不会产生重叠错误。,接收缓冲器是,双缓冲结构,,以避免在接收下一帧,数据之前,,CPU,未能及时响应接收器的中断,没有把上一帧数据读走,就会丢失前一个字节的内容。,6.3.3,串行接口的控制与实现,2),串行接口控制寄存器,SCON (98H),用于控制串行接口的工作状态,其格式如下:,位,D7,D6,D5,D4,D3,D2,D1,D0,字节地址,SCON,SM0,SM1,SM2,REN,TB8,RB8,TI,RI,98H,位地址,9FH,9EH,9DH,9CH,9BH,9AH,99H,98H,6.3.3,串行接口的控制与实现,(1) SM0,和,SM1,:用于设置串行接口的工作方式,,2,位可选择,4,种工作方式,如表,4-3,所示。其中,,UART,是通用异步接收和发送器的英文缩写, 是晶振频率。,表,4,-,3,串行接口的工作方式设置,/64,或,SM0,SM1,方,式,功能说明,波特率,0,0,0,移位寄存器,/12,0,1,1,8,位,UART,可变,1,0,2,9,位,UART,/32,1,1,3,9,位,UART,可变,6.3.3,串行接口的控制与实现,(2) REN,:允许串行接收位。由软件置位或清零。,REN=1,时,串行接口允许接收数据;,REN=0,时,则禁止接收。,(3) TB8,:在方式,2,或方式,3,中,是发送数据的第,9,位。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧,/,数据帧的标志位。,(4) RB8,:在方式,2,或方式,3,中,是接收到数据的第,9,位,作为奇偶校验位或地址帧,/,数据帧的标志位。在方式,1,时,若,SM2=0,,则,RB8,是接收到的停止位。,6.3.3,串行接口的控制与实现,(5) TI,:发送中断标志位。由内部硬件使,TI,置“,1”,,向,CPU,发中断申请。必须用软件将其清“,0”,,取消此中断申请。,(6) RI,:接收中断标志位。由内部硬件使,RI,置“,1”,,向,CPU,发中断申请。必须用软件将其清“,0”,,取消此中断申请。,(7) SM2,:为多机通信控制位,主要用于方式,2,和方式,3,。通过控制,SM2,,可以实现多机通信。,7.3.2,多机通信接口,1,多机通信原理,串行口控制寄存器,SCON,中的,SM,2,为多机通信接口控制位。串行口以方式,2,或,3,接收时,若,SM,2,为,1,,则仅当接收到的第,9,位数据,RB,8,为,1,时,数据才装入,SBUF,,置位,RI,,请求,CPU,对数据进行处理;当,SM,2,为,0,时,则接收到一个数据后,不管第,9,位数据,RB,8,是,0,还是,1,,都将数据装入接收缓冲器,SBUF,并置位中断标志,RI,,请求,CPU,处理。,发送:先发送地址帧(,TB8=1,),,再发送数据帧(,TB8=0,)。,MCS-51,单片机多机通信系统举例,TXD,RXD,8031,主机,TXD RXD,8031,0#,从机,TXD RXD,8031,1#,从机,TXD RXD,8031,2#,从机,发送分二步:,1.,先发送地址,(,第九位为,1,即,TB8=1),所有子机都能接收,2.,再发送数据,(,第九位为,0,即,TB8=0),只有地址指定的子机接收,接收分二步:,1.,待接收状态 置,SM2=1,只接收,RB8=1,的信息帧,即地址信息,2.,收到的地址与本机符合时,置,SM2=0,即可接收数据信息,因为,:,数据帧的,RB8=0,6.3.3,串行接口的控制与实现,(8),电源控制寄存器,PCON (97H),其中只有,1,位,SMOD,与串行接口工作有关,格式如下:,(9) SMOD,:波特率系数控制位。在串行接口方式,1,、方式,2,、方式,3,时,波特率与,SMOD,有关,当,SMOD=1,时,波特率加倍,否则不加倍。复位时,,SMOD=0,。,PCON,的地址为,97H,,不能位寻址,需要字节传送。,位,D7,D6,D5,D4,D3,D2,D1,D0,字节地址,PCON,SMOD,97H,6.3.3,串行接口的控制与实现,2.,串行接口的工作方式,串行接口可由,SCON,中的,SM0,、,SM1,设置,4,种工作方式。,1),方式,0,串行接口为,同步移位寄存器的输入,/,输出方式,,而不是,通信方式,可外接移位寄存器,用于扩展并行,I/O,接口。,注意:数据都由,RXD(P3.0),引脚输入或输出,,TXD,引脚,总是用于输出同步移位脉冲。,发送和接收均为,8,位数据,低位在先,高位在后。波特,率固定为,/12,。,6.3.3,串行接口的控制与实现,2),方式,0,输出,方式,0,时输出时序如图,4.14,所示,。,图,4.14,方式,0,输出时序,6.3.3,串行接口的控制与实现,当执行任何一条写,SBUF,的指令时,就启动了串行接口的发送过程,(,如,MOV SBUF,,,A),。,内部的定时逻辑在,SBUF,写入数据之后,经过一个完整的机器周期,输出移位寄存器中输出位的内容送,RXD,引脚输出;,移位脉冲由,TXD,引脚输出,它使,RXD,引脚输出的数据移入外部移位寄存器。,当数据的最高位,D7,位移出后,停止发送数据和移位脉冲,就完成了,1B,的输出,并把中断标志,(TI),置“,1”,。,如要再发送下一字节数据,必须用软件先将,TI,清“,0”,。,6.3.3,串行接口的控制与实现,3),方式,0,输入,方式,0,时输入时序如图,4.15,所示。,当,SCON,中的接收允许位,REN=1,和,RI=0,时,就会启动一次串行接口接收过程。,串行数据从,RXD,引脚输入,移位脉冲由,TXD,引脚输出。,当接收完一帧数据后,由硬件将输入移位寄存器中的内容写入,SBUF,,并把中断标志,(RI),置“,1”,。,如要再接收数据,就再用软件将,RI,清“,0”,。,6.3.3,串行接口的控制与实现,方式,0,时输入时序如图,4.15,所示。,图,4.15,方式,0,输入时序,6.3.3,串行接口的控制与实现,4),方式,1,串行接口为,波特率可变的,8,位数据的异步通信接口。,TXD,为数据发送引脚,,RXD,为数据接收引脚。,传送,1,帧数据为,10,位,其中,,1,位起始位,(0),,,8,位数据位,(,低位在先,),,,1,位停止位,(1),。,方式,1,的波特率由定时器,(T1),的溢出率和,SMOD,的状态决定。,6.3.3,串行接口的控制与实现,5),方式,1,输出,方式,1,的发送时序如图,4.16,所示。,图,4.16,方式,1,的发送时序,6.3.3,串行接口的控制与实现,执行一条写,SBUF,的指令就启动了发送过程。,在发送移位时钟的作用下,从,TXD,引脚先送出起始位,(0),,然后是,8,位数据位,最后是停止位,(1),。,1,帧,10,位数据发送完后,将中断标志,(TI),置“,1”,,向,CPU,申请中断。,如要再发送下一字节数据,必须用软件先将,TI,清“,0”,。,6.3.3,串行接口的控制与实现,6),方式,1,输入,软件使,REN=1,和,RI=0,时,就启动了接收过程。,接收器以所选择波特率的,16,倍速率采样,RXD,引脚电平,,检测到,RXD,引脚输入电平发生负跳变时,说明起始位有,效,将其移入输入移位寄存器,并开始接收这,1,帧信息,的其余位。,接收过程中,将每个数据位宽度分成,16,个状态,并在中,间的第,7,、,8,、,9,状态时对,RXD,采样,采样数据从输入移,位寄存器右边移入,起始位移至输入移位寄存器最左边,时,控制电路进行最后一次移位。,6.3.3,串行接口的控制与实现,当,RI=0,,且,SM2=0(,或接收到的停止位为“,1”),时,将接收到的,9,位数据的前,8,位数据装入接收,SBUF,,第,9,位,(,停止位,),进入,RB8,,并置,RI=1,,向,CPU,请求中断。如要再接收数据,就再用软件将,RI,清“,0”,。,图,4.17,方式,1,的接收时序,6.3.3,串行接口的控制与实现,7),方式,2,和方式,3,串行接口为,9,位数据的异步通信接口。,TXD,为数据发送引脚,,RXD,为数据接收引脚。,传送,1,帧数据为,11,位。其中,1,位起始位,(0),,然后是,8,位数据位,(,低位在先,),,第,10,位是,SCON,中的,TB8,或,RB8,,最后,1,位是停止位,(1),。,方式,2,的波特率固定为晶振频率的,1/64,或,1/32,,方式,3,波特率由定时器,(T1),的溢出率和,SMOD,的状态决定。,6.3.3,串行接口的控制与实现,8),方式,2,和方式,3,输出,方式,2,和方式,3,的发送时序如图,4.18,所示。,图,4.18,方式,2,和方式,3,的发送时序,6.3.3,串行接口的控制与实现,CPU,向,SBUF,写入数据时,就启动了发送过程。,SCON,中的,TB8,写入输出移位寄存器的第,9,位,,8,位数据装入,SBUF,。,发送开始时,先把起始位,0,输出到,TXD,引脚,然后是,9,位数据位,最后是停止位,(1),。,1,帧,11,位数据发送完后,将中断标志,(TI),置“,1”,,向,CPU,申请中断。,如要再发送下一字节数据,必须用软件先将,TI,清,0,。,6.3.3,串行接口的控制与实现,9),方式,2,和方式,3,输入,方式,2,和方式,3,的接收时序如图,4.19,所示。,图,4.19,方式,2,、方式,3,的接收时序,6.3.3,串行接口的控制与实现,软件使,REN=1,和,RI=0,时,就启动了接收过程。,接收器就以所选频率的,16,倍速率开始采样,RXD,引脚的电平状态,当检测到,RXD,引脚发生负跳变时,说明起始位有效,将其移入输入移位寄存器,开始接收这,1,帧数据。,接收时,将每个数据位宽度分成,16,个状态,并在中间的第,7,、,8,、,9,状态时对,RXD,采样,采样数据从右边移入输入移位寄存器,在起始位,0,移到最左边时,控制电路进行最后一次移位。,6.3.3,串行接口的控制与实现,当,RI=0,,且,SM2=0(,或接收到的第,9,位数据为“,1”),时,接收到的数据装入接收缓冲器和,RB8(,接收数据的第,9,位,),,置,RI=1,,向,CPU,请求中断。,如要再接收数据,就再用软件将,RI,清“,0”,。,如果条件不满足,则数据丢失,且不置位,RI,,继续搜索,RXD,引脚的负跳变。,6.3.3,串行接口的控制与实现,3.,波特率的计算,串行通信双方对发送或接收数据的波特率事先要约定好保持一致。,MCS-51,单片机的波特率设置与工作方式有关,其中方式,0,和方式,2,的波特率是固定的,而方式,1,和方式,3,的波特率是可变的,由定时器,T1,的溢出率和,SMOD,的状态决定。,6.3.3,串行接口的控制与实现,各种方式的波特率计算由以下公式确定:,方式,0,的波特率,= /12,方式,2,的波特率,=(2SMOD/64),方式,1,的波特率,=(2SMOD/32)(T1,溢出率,),方式,3,的波特率,=(2SMOD/32)(T1,溢出率,),6.3.3,串行接口的控制与实现,当,T1,作为波特率发生器时,常使,T1,工作在自动重装初值的,8,位定时器方式,并禁止,T1,中断。,这种方式可避免重新设定定时初值而产生波特率误差。,TH1,从初值计数到产生溢出,它每秒溢出的次数称为溢出率。,T1,溢出率,=/12256-(TH1),6.3.3,串行接口的控制与实现,在单片机的应用中,相同机种单片机的波特率很容易达到一致,只要晶振频率相同,可以采用完全一致的设置参数。,异机种单片机的波特率设置较难达到一致,这时的设计原则应使两个通信设备之间的波特率误差小于,2.5%,。,常用的串行接口波特率、晶振频率以及各参数的关系如表,4-4,所示。,6.3.3,串行接口的控制与实现,表,4-4,常用波特率、晶振频率与定时器,(T1),的参数关系,串口工作方式,及波特率,/(bit/s),fosc/MHz,SMOD,定时器,(T1),C/T,工作方式,初值,方式,0,1MHz,12,无关,方式,2,375kHz,12,1,无关,方式,1,方式,3,62.5 kHz,12,1,0,2,FFH,19.2 kHz,11.0592,1,0,2,FDH,9600Hz,11.0592,0,0,2,FDH,4800Hz,11.0592,0,0,2,FAH,2400Hz,11.0592,0,0,2,F4H,1200Hz,11.0592,0,0,2,E8H,6.3.4,用串行接口扩展并行,I/O,接口,串行接口工作在方式,0,时用于扩展并行,I/O,接口 。,74LS164,为一个,1,位串行输入,8,位并行输出的移位寄存器,,TXD,引脚输出的移位脉冲将,RXD,引脚输出的数据,(,低位在先,),逐位移入,74LS164,,扩展,8,个,LED,指示灯。,74LS165,为一个,8,位并行输入,1,位串行输出的移位寄存器,,TXD,引脚输出的移位脉冲将,74LS165,的,8,位并行输入的数据,(,低位在先,),逐位移入,RXD,引脚,扩展,8,个按键。,图,4.20,为一个串行接口扩展并行,I/O,接口方案,。,6.3.4,用串行接口扩展并行,I/O,接口,【,例,】,【,功能,】,如图,4.20,所示的,8,个,LED,指示灯,指示,8,个按键闭合状态,有键按下时对应的指示灯亮。,图,4.20,串行接口扩展并行,I/O,接口方案,6.3.4,用串行接口扩展并行,I/O,接口,【,实现程序,】,SIO,:,MOVSCON,,,#10H,;,REN=1,,,RI=0,,,SM0=0,,,SM1=0,,,;串行口工作在方式,0,且启动接收过程,LOOP,:,CLR P1.0,;允许并行读入按键到,74LS165,S/=0,;有按键的位读数为,0,SETB P1.0,;允许串行移位,,S/=1,CLR RI,;启动接收,JNB RI,,,$,;若,RI=0,,,8,位数据未接收完,等待,MOV A,,,SBUF,;若,RI=1,,,8,位数据接收完,读入,A,CLR TI,;清发送标志,准备发送,MOV SBUF,,,A,;启动发送,输出数据位,0,,,;,将点亮对应位,LED,JNB TI,,,$,;,8,位数据未发送完,等待,SJMP LOOP,;,8,位数据发送完,循环,6.3.5,串行通信接口标准,除了满足波特率、工作方式和特殊功能寄存器的设定外,串行通信双方必须采用相同的接口标准,才能进行正常的通信。,由于不同设备串行接口的信号线定义、电气规格等特性都不尽相同,因此要使这些设备能够互相连接,需要统一的串行通信接口。,下面介绍常用的,RS-232C,和,RS-485,串行通信接口标准。,6.3.5,串行通信接口标准,1. RS-232C,接口,RS-232C,定义了数据终端设备,(DTE),与数据通信设备,(DCE),之间的物理接口标准。接口标准包括引脚定义、电气特性和电平转换几方面内容:,1),引脚定义,RS-232C,接口规定使用,25,针“,D”,型口连接器,常用,9,针“,D”,型口连接器替代,25,针连接器。连接器引脚定义如图,:,6.3.5,串行通信接口标准,RS-232C,接口主要信号线的功能定义如表,4-5,所示。,表,4-5 RS-232C,标准接口主要引脚定义,插针序号,信号名称,功能,1,DCD,载波检测,2,RXD,接收数据,(,串行输入,),3,TXD,发送数据,(,串行输出,),4,DTR,DTE,就绪,(,数据终端准备就绪,),6.3.5,串行通信接口标准,插针序号,信号名称,功能,5,SGND,信号接地,6,DSR,DCE,就绪,(,数据建立就绪,),7,RTS,请求发送,8,CTS,允许发送,9,RI,振铃指示,6.3.5,串行通信接口标准,2),电气特性,RS-232C,采用负逻辑电平,规定,DC(-3,-15V),为逻辑,1,,,DC(+3,+15V),为逻辑,0,。,通常,RS-232C,的信号传输最大距离为,30m,。,最高传输速率为,20kbit/s,。,RS-232C,的逻辑电平与通常的,TTL,和,MOS,电平不兼容,为了实现与,TTL,或,MOS,电路的连接,要外加电平转换电路。,6.3.5,串行通信接口标准,3) RS-232C,电平与,TTL,电平转换驱动电路,常见的,TTL,到,RS-232C,的电平转换器有,MC1488,、,MC1489,和,MAX 202/232/232A,等芯片。,图,4.22 MAXM 202 / 232 / 232A,内部逻辑功能,6.3.5,串行通信接口标准,2. RS-485,接口,RS-232C,推出的时间较早,传输速率慢,传输距离短,无法满足许多工业现场的使用要求。,EIA,相继公布了,RS-449,、,RS-423,、,RS-422,和,RS-485,等替代标准。,RS-485,以其优秀的特性、较低的成本在工业控制领域得到了广泛的应用。,6.3.5,串行通信接口标准,1),引脚定义,RS-485,使用两种标准接口连接器,,37,针“,D”,型口连接器和,9,针“,D”,型口连接器,主要信号线的功能定义如表,4-6,所示。,表,4-6 RS-422,标准接口主要引脚定义,插针序号,信号名称,功能,1,Shield,屏蔽地,2,RTS+,请求发送,+,3,RTS,-,请求发送,-,4,TXD+,发送数据,+,5,TXD,-,发送数据,-,6,CTS+,允许发送,+,7,CTS,-,允许发送,-,8,RXD+,接收数据,+,9,RXD,-,接收数据,-,6.3.5,串行通信接口标准,2),电气特性,RS-485,工作于半双工方式,采用一对平衡差分信号线。,RS-485,是一种多发送器标准,在通信线路上最多可以使用,32,对差分驱动器,/,接收器。,驱动器输出电平,DC(-1.5,-6V),为逻辑“,1”,,,DC(+3,+15V),为逻辑“,0”,。,接收器输入差分电压在,-200mV,以下时为逻辑“,1”,,在,+200mV,以上时为逻辑“,0”,。,通常,RS-485,的信号传输最大距离为,1200m,,最高传输速率为,10Mbit/s,。,6.3.5,串行通信接口标准,3) RS-485,电平与,TTL,电平转换驱动电路,RS-485,的驱动接口部分通常由,Maxim,公司生产的差分平衡器收发芯片,MAX 481/483/485/487/489,等,每种型号的芯片内部均集成了一个驱动器和一个接收器。,MAX 481/483/485/487,为,8,引脚封装,引脚功能说明如下。,6.3.5,串行通信接口标准,(1) RO,:接收器输出;,(2),:接收器输出使能,引脚为“,0”,,允许接收器,,引脚为输出“,1”,,接收器输出被禁止;,(3) DE,:驱动器输出使能,引脚为“,1”,,允许驱动器工,作,引脚为“,0”,,驱动器工作被禁止;,(4) DI,:驱动器输入;,(5) GND,:接地端;,(6) A,:接收器非反相输入和驱动器非反相输出端;,(7) B,:接收器反相输入和驱动器反相输出端;,(8) VCC,:电源端,电压范围可以是,4.75,5.25V,;,6.3.5,串行通信接口标准,其引脚分布与典型工作电路如图,4.23,所示:,图,4.23 MAX 481/ 483/ 485/487,引脚图及接口示意图,6.3.6,单片机串行接口通信技术举例,1.,单片机与单片机之间的双机通信,双机之间通信应考虑接口电路、通信协议和程序编,制等几个方面问题。,1),接口电路,TTL,电平通信接口:系统之间的距离在,1m,范围内,RS-232C,通信接口:系统之间的距离在,30m,范围内,RS-485,通信接口:系统之间的距离在,1200m,范围内,6.3.6,单片机串行接口通信技术举例,双机通信根据通信距离和抗干扰性,可选择,TTL,电平直连,,RS-232C,和,RS-485,等接口方法如图,4.24,所示。,(a) TTL,电平传输通信接口电路,b) RS-232C,通信接口电路,图,4.24,双机通信接口电路,6.3.6,单片机串行接口通信技术举例,(c) RS-485,通信接口电路,图,4.24,双机通信接口电路,6.3.6,单片机串行接口通信技术举例,2),通信协议,TTL,电平直连,,RS-232C,双机通信的软件设计方法是一样的。,RS-485,双机通信是半双工方式,在单片机系统发送或接收数据前,应先将,MAX485,的发送门或接收门打开。,当,P1.0=1,时,发送门打开,接收门关闭;当,P1.0=0,时,接收门打开,发送门关闭。,6.3.6,单片机串行接口通信技术举例,下面以图,4.24(a)(b),为接口电路,规定双机通信协议如下:,(1),通信的甲、乙双方均可发送和接收;,(2),约定采用串行口方式,1,进行通信,,1,帧信息为,10,位;,(3),波特率为,2400Bd,,,T1,工作在定时器方式,2,,振荡频,率选用,11.0592MHZ,,查表可得,TH1=TL1=0F4H,,,PCON,寄存器的,SMOD,位为“,0”,;,6.3.6,单片机串行接口通信技术举例,(4),设甲机是发送方,乙机是接收方。当甲机发送时,,先发送一个“,0AAH”,联络信号,乙机收到后回答一,个“,55H”,应答信号,表示同意接收;,(5),假定数据块长度为,100B,,数据放在起始地址为,1000H,的片外,RAM,中,一个数据块发送完毕后立即,发送“校验和”;,(6),若两者相等,说明接收正确,乙机回答,0FH,;若两,者不相等,说明接收不正确,乙机回答,0F0H,,请求,重发。,6.3.6,单片机串行接口通信技术举例,归纳联络信号,并以为指令格式定义如表,4-7,所示。,信号名称,伪指令,信号常量,说明,READY,EQU,0AAH,主机开始通信发出呼叫信号,OK,EQU,55H,从机准备好,表示同意接收数据,SUCC,EQU,0FH,数据发送成功,ERRO,EQU,0F0H,数据传送错误,LENTH,EQU,64H,发送,/,接收数据块长度,ADDR,EQU,1000H,发送,/,接收数据存储起始地址,6.3.6,单片机串行接口通信技术举例,3),程序实现,收发数据采用的是查询方式,程序实现如下。,【,甲机发送程序,】,START,:,CLR EA,MOV TMOD,,,#20H,;定时器,1,置为方式,2,MOV TH1,,,#0F4H,;装载定时器初值,波特率,2400,MOV TL1,,,#0F4H,MOV PCON,,,#00H,SETB TR1,;启动定时器,MOV SCON,,,#50H,;设定串口方式,1,,且准备接收应答信号,TLP1,:,MOV SBUF,,,#READY,;发联络信号“,0AAH”,JNB TI,,,$,;等待,1,帧发送完毕,CLR TI,;允许再发送,JNB RI,,,$,;等待乙机的应答信号,CLR RI,;允许再接收,MOV A,,,SBUF,;乙机应答后,读至,A,XRL A,,,#OK,;判断乙机是否准备完毕,JNZ TLP1,;乙机未准备好,继续联络,6.3.6,单片机串行接口通信技术举例,TLP2: MOV DPTR,,,#ADDR,;乙机准备好,设定数据块地址指针初值,MOV R7,,,#LENTH,;设定数据块长度初值,MOV R6,,,#00H,;清校验和单元,TLP3: MOVX A,,,DPTR,MOV SBUF,,,A,;发送一个数据字节,ADD A,,,R6,;求校验和,MOV R6,,,A,;保存校验和,INC DPTR,JNB TI,,,$,CLR TI,DJNZ R7,,,TLP3,;整个数据块是否发送完毕,MOV SBUF,,,R6,;发送校验和,JNB TI,,,$,CLR TI,JNB RI,,,$,;等待乙机的应答信号,CLR RI,MOV A,,,SBUF,;乙机应答,读至,A,XRL A,,,#SUCC,;判断乙机是否接收正确,JNZ TLP2,;乙机应答“错误”,转重新发送,RET,;乙机应答“正确”,返回,6.3.6,单片机串行接口通信技术举例,【,乙机接收程序,】,START,:,CLR EA,MOV TMOD,,,#20H,MOV TH1,,,#0F4H,MOV TL1,,,#0F4H,MOV PCON,,,#00H,SETB TR1,MOV SCON,,,#50H,;设定串口方式,1,,且准备接收,RLP1,:,JNB RI,,,$,;等待甲机的联络信号,CLR RI,MOV A,,,SBUF,;收到甲机信号,XRL A,,,#READY,;判是否为甲机联络信号,JNZ RLP1,;不是甲机联络信号,再等待,MOV SBUF,,,#OK,;是甲机联络信号,发应答信号,JNB TI,,,$,CLR TI,MOV DPTR,,,#ADDR,;设定数据块地址指针初值,MOV R7,,,#LENTH,;设定数据块长度初值,MOV R6,,,#00H,;清校验和单元,6.3.6,单片机串行接口通信技术举例,RLP2,:,JNB RI,,,$,CLR RI,MOV A,,,SBUF,MOVX DPTR,,,A,;接收数据存储,INC DPTR,ADD A,,,R6,;求校验和,MOV R6,,,A,DJNZ R7,,,RLP2,;判数据块是否接收完毕,JNB RI,,,$,;完毕,接收乙机发来的校验和,CLR RI,MOV A,,,SBUF,XRL A,,,R6,;比较校验和,JZ GOOG,;校验和相等,跳至发正确标志,MOV SBUF,,,#ERRO,;校验和不相等,发错误标志,JNB TI,,,$,;转重新接收,CLCR TI,GOOD: MOV SBUF,,,#OK,RET,6.3.6,单片机串行接口通信技术举例,单片机与,PC,组合构成的,分布控制系统,是工控系统的一个重要发展方向。,在系统中,单片机一般称为下位机,通常用来完,成数据的采集和上传。,由,PC,、网络设备、数据库服务器组成的后台应用部分则统称为上位机,,对下位机的上传数据进行分析并处理。,6.3.6,单片机串行接口通信技术举例,如图,4.25,所示的热表控制分布式工控系统。,图,4.25,热表控制分布式工控系统,6.3.6,单片机串行接口通信技术举例,1),硬件的接口电路,MAX485,的使能端,,DE,由,AT89C51,的,P2.7,控制。,单片机的晶振选用,11.0592MHz,。,如图,4.26,所示,,PC,的接口直接接到,RS-232,串口即可。,图,4.26,单片机与,MAX485,接口电路,6.3.6,单片机串行接口通信技术举例,2),软件设计,PC,应用软件在视窗,Windows,系统下采用简单易学的,Visual Basic(,简称,VB),编程。,VB,提供了具有强大功能的通信控件,MSCOMM,,文件名为,MSCOMM.vbx,。该控件可设置串行通信的数据发送和接收,对串口状态及串口通信的信息格式和协议进行设置。,6.3.6,单片机串行接口通信技术举例,假设每台,PC,管理,4,块热表,仅作主机呼叫,单片机应答判断后,向上传输热量值的,通信协议如下:,(1),通信的甲、乙双方均可发送和接收;,(2),单片机约定采用串行接口方式,3,进行通信,波特率,为,9600Bd,。,(3),待机时热表单片机为接收状态,接收到呼叫后判断,是否呼叫本机;是,向主机传输热量值,否,不作,响应。主机接收到返回值在界面显示。超时提示自,动退出。,6.3.6,单片机串行接口通信技术举例,【PC,程序实现,(VB,程序语言,)】,Public dealy As string,;定义延时参数,Sub Form_Load(),MSComm.CommPort=1,;设置接口数,MSComm.PortOpen=TURE,;开接口,MSComm.Settings=“9600,,,N,,,8,,,1”,;设置通信参数,Timer.interval=1000,;设置定时时间,End Sub,Sub Send_Click1(),;读取热表,1,的主机程序,;读其他,3,个热表的程序相似,Dim Istring as string,MSComm.InBufferCount=0,;输入缓冲区置零,MSComm.Output=“1”,;呼叫热表,1,Timer.Enabled=true,;使能定时器,Do,DoEvents(),;等待接收数据,6.3.6,单片机串行接口通信技术举例,If dealy=“dl” then,;判断是否超时,Goto exitsub,End if,Loop Until(MSComm.InBufferCount=6),TxtReceive.text=MSComm.Input,;接收到数据显示,Timer.Enabled=FALSE,MSComm.InBufferCount=0,Exitsub:,MsgBox “,超时!无数据返回!”,Timer1.Enabled=FALSE,End Sub,Sub Exit_Click(),MSComm.PortOpen=FALSE,UnLoad Me,End Sub,6.3.6,单片机串行接口通信技术举例,【,热表,1,单片机程序实现,】,【,说明,】,热量值以,ASCII,码存储于,40H45H,ORG 2000H,MAIN,:,MOV SP,60H,MOV TMOD,,,#20H,;在,11.0592MHz,下,串行接口波特率,MOV TH1,,,#0FDH,;,9600bps,,方式,3,MOV TL1,,,#0FDH,MOV PCON,,,#00H,SETB TR1,MOV SCON,,,#0D8H,LOOP:JBC RI,,,RECEIVE,;接收到数据后立即发出去,CLR P2.7,;,MAX485,接收使能端有效,NOP,SJMP LOOP,6.3.6,单片机串行接口通信技术举例,RECEIVE,:,MOV A,,,SBUF,CJNE A,“1”,LOOP,;判断是否呼叫本机,SETB P2.7,;,MAX485,发送使能端有效,NOP,MOV R1,,,#06H,MOV R0,,,#40H,SCYCLE,:,LCALL SDATA,;发送热量值,调用发送子程序,INC R0,DJNZ R1,,,SCYCLE,;发送完毕?,LJMP LOOP,SDATA:MOV A,,,R0,;发送子程序,MOV SBUF,,,A,SWAIT:JBC TI,,,SEXIT,SJMP SWAIT,SEXIT,:,RET,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!