




免费预览已结束,剩余52页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MCS-51单片机串行通信,单片微机原理与接口技术,9.1串行通信概述,9.1.1数据通信设备之间进行的数据交换,如CPU与外设之间进行的数据交换,计算机之间进行的数据交换等,称为数据通信。通信方式有两种:并行通信和串行通信。并行通信是多位数据同时通过多根数据线传送,每一根数据线传送一位二进制代码。其优点是传送速度快,效率高;缺点是硬件设备复杂,数据有多少位,就需要多少根数据线。因此,并行通信适用于近距离通信,如在计算机内部,数据传送都是并行通信。串行通信是数据通过一根数据线,一位一位地传送。其优点是硬件设备简单,只需一对传输线,在远距离通信时就大大降低了成本;其缺点是传输速度慢,效率低。,9.1串行通信概述,9.1.2串行通信方式串行通信有单工通信、半双工通信和全双工通信3种方式。单工通信是指数据只能单方向地从一端向另一端传送。如目前的有线电视节目,只能单向传送;半双工通信是指数据可以双向传送,但任一时刻只能向一个方向传送。即分时双向传送数据;全双工通信是指数据可同时向两个方向传送,全双工通信效率最高,适用于计算机之间的通信。,9.1串行通信概述,9.1.3异步通信和同步通信通信双方要正确地进行数据传输,需要解决何时开始传输,何时结束传输,以及数据传输速率等问题,即解决数据同步问题。实现数据同步,通常有两种方式,一种是异步通信,另一种是同步通信。,9.1串行通信概述,1异步通信在异步通信中,每个数据都是以特定的帧形式传送,数据在通信线上一位一位地串行传送,每帧按先后顺序由以下几部分组成:起始位表示传送一个数据的开始,用低电平表示,占1位。数据位要传送的数据的具体内容,可以是5位、6位或更多,数据从低位开始传送。奇偶校验位为了保证数据传输的正确性,在数据位之后紧跟一位奇偶校验位,用于有限差错检测。当数据不需进行奇偶校验时,此位可省略。,9.1串行通信概述,停止位表示发送一个数据的结束,用高电平表示,占1位、1.5位或2位。线路空闲时,线路处于逻辑“1”等待状态,即空闲位为1。空闲位是异步通信特征之一。异步通信中数据传送格式如图9.1所示。图9.1异步通信数据帧格式,图9.1异步通信数据帧格式,9.1串行通信概述,2同步通信在异步通信中,每一个数据都包含起始位和停止位,占用了传送的时间,当数据量较大时,这一问题更为突出,因此在大量数据传输时采用同步通信方式来实现。同步通信中,通常先发送12个字符作为数据传送的开始,称为同步字符SYNC,并由时钟来实现发送端和接收端同步,即检测到规定的同步字符后,紧接着按顺序传送数据,中间不能有空闲位,也不需要停止位和开始位,仅在数据块开始时用同步字符SYNC来指示,其数据格式如图9.2所示。,9.1串行通信概述,图9.2同步传送的数据格式,9.1串行通信概述,同步字符的多少可以由用户自己规定,当然也可以采用ASCII码中规定的SYNC代码,即16H。接收端收到同步字符后,开始准备接收数据。不过,在同步通信中,为了准确无误地接收数据,发送端和接收端的时钟频率必须一致。在实际中,可通过硬件从发送的信息中提取时钟。当然,发送端的数据编码要包含时钟信息。同步通信传送速度快,传输速率可达56kb/s或更高,但硬件结构比较复杂;异步通信硬件结构比较简单,但传送速度较慢。MCS51单片机采用异步通信方式。,9.1串行通信概述,3波特率波特率是数据传递的速率,指每秒传送二进制数据的位数,单位为位/秒(bit/s)。例9.1假设微型打印机最快的传送速率为30字符/秒,每个字符为10位,计算波特率。解:波特率10b/字符30字符/s300b/s每一位代码的传送时间Td为波特率的倒数:Td1/3003.3ms异步通信的波特率一般在5019200b/s之间,常用于计算机到终端机和打印机之间的通信、直通电报以及无线电通信的数据发送等。,9.2串行口结构与工作原理,9.2.1串行口结构在8051中有一个可编程的全双工串行通信接口,此串行接口既可用作UATR(通用异步接收和发送器),也可用作同步移位寄存器,其帧格式有8位、10位或11位,并能设置各种波特率,很容易地构成双机、多机串行通信接口。该接口的结构简图如图9.3所示。8051的串行口主要由两个物理上独立的串行数据缓冲器SBUF、接收发送控制器、输入输出移位寄存器及其他一些逻辑电路组成。,9.2串行口结构与工作原理,图9.38051串行口组成框图,9.2串行口结构与工作原理,1串行数据缓冲器SBUF(99H)MCS51系列单片机串行口有两个串行数据缓冲器,一个用于发送数据,另一个用于接收数据,可以同时用来发送和接收数据。发送缓冲器只能写入,不能读出。接收缓冲器只能读出,不能写入。两个缓冲器使用同一符号SBUF,共用一个地址99H,根据读、写指令确定访问其中的哪一个。发送数据时,执行一条数据写入SBUF的传送指令(执行“MOVSBUF,A”指令),即是向发送缓冲器SBUF装载并开始有TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI1。在满足串行口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)=1就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使得RI1。当发读SBUF命令时(执行“MOVA,SBUF”指令),便由接收缓冲器(SBUF)取出信息通过8051内部总线送CPU。,9.2串行口结构与工作原理,从结构图中,可以看出接收器是双缓冲器结构,在前一个字节被从接收缓冲器SBUF读出之前,第二个字节即开始接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前一个字节CPU未读取时,会丢失前一个字节。对于发送缓冲器,因为发送时CPU是主动的,不会产生重叠的错误,一般不需要双缓冲器结构来保持最大的传送速率。,9.2串行口结构与工作原理,2串行口控制寄存器SCON(98H)特殊功能寄存器SCON字节地址为98H,可以进行位寻址。8051串行通信的方式选择、接收和发送控制以及串行口的状态标志等均由该寄存器控制或标示,控制字的格式如下:,9.2串行口结构与工作原理,SM0、SM1:串口工作方式选择位。可选择4种工作方式,详细用法如表9.1所示。其中fosc是振荡频率,n为因子,10和11为一帧的总位数,对应的数据位为8和9。,9.2串行口结构与工作原理,9.2串行口结构与工作原理,SM2:多机通信控制位。a用于方式2和方式3。若SM21,则允许多机通信。多机通信协议规定,若第9位数据(RB8)为1,则表明本帧数据为地址帧。否则,若第9位数据(RB8)为0,则表明本帧数据为数据帧。当一个8051(主机)与多个8051(从机)进行通信时,令所有从机的SM2都置1。主机要与某个从机通信,首先发送一个与该从机相一致的地址帧(每个从机的地址必须惟一),且第9位为1,所有从机接收到数据后,将第9位送入RB8中。若RB81,说明是地址帧,将数据装入SBUF,且置RI1,即中断所有从机,若从机判断出该地址帧数据与本机号(地址)一致,则置SM20,准备接收主机发来的数据。其他从机仍然保持SM21。,9.2串行口结构与工作原理,若RB80,说明是数据帧。当从机SM21时,置接收中断标志位RI0,不予理睬该数据帧。当从机SM20时,则不属于多机通信方式,此时不论第9位是0还是1,都置RI1,并将接收到的数据装入SBUF中。b用于方式0和方式1。在方式0时,必须SM10;在方式1时,当SM21,则只有收到有效停止位时,RI才置1,以准备接收下一帧数据。REN:允许串行接收控制位。由软件置1或置0,若REN1时允许接收,REN0时禁止接收。TB8:保存发送数据的第9位。在方式2或方式3中,可由软件置1或置0。既可用于多机通信中作为发送地址帧和数据帧的标志位,也可用于许多通信协议中的奇偶校验位。在方式0或方式1中,该位未用。,9.2串行口结构与工作原理,RB8:保存接收数据的第9位。在方式2或方式3中,保存接收的第9位数据。用于多机通信中作为地址、数据的标志位,RB81表示接收的数据是地址帧,RB80为数据帧;或用作其他通信协议中的奇偶校验位。在方式1中,若SM20,RB8中保存的是已接收到的停止位。在方式0中,该位未用。TI:发送中断标志。在方式0时,发送完第8位数据时,硬件自动置1。在其他方式中,则在刚发送停止位时,硬件自动置1。TI1相当于发送缓冲器SBUF为空,通知CPU可以发送下一帧数据。在任何方式中,TI不会自动清0,必须由软件清0。否则,一个数据可能发送多次。,9.2串行口结构与工作原理,RI:接收中断标志。在方式0时,接收完第8位数据时,硬件自动置1。在其他方式中,则在接收停止位的中间点,硬件自动置1。RI1相当于接收缓冲器SBUF为空,通知CPU可以取走数据。但在方式1中,当SM21时,若未收到有效的停止位,不会对RI置1。RI在任何方式中不会自动清位,必须由软件清0。串行发送中断标志TI和接收中断标志RI是同一个中断源,CPU事先不知道是由TI还是RI产生的中断,因此,在全双工通信中,必须由软件判别是谁引起的中断。另外,8051复位时,SCON的所有位都清0。,9.2串行口结构与工作原理,3电源控制寄存器PCON(87H)电源控制寄存器PCON只有SMOD位与串行接口工作有关,控制字的格式如下:,9.2串行口结构与工作原理,SMOD是波特率倍增位。当SMOD1时,波特率提高一倍。复位时,SMOD0。工作在方式0时,该位无效。,9.2串行口结构与工作原理,9.2.2串行接口的工作方式8051串行接口有4种工件方式,但在串行通信中,一般只用方式1、方式2或方式3,方式0常作为扩展I/O口之用。下面分别介绍。1方式0当SM00,SM10时,串行口工作于方式0。方式0是同步移位寄存器输入/输出方式。其传输的波特率是固定的,等于振荡频率的12分频,即fosc/12,只与振荡频率有关,不能用软件设置。通信的数据帧固定为8位,没有起始位和停止位,先发送或接收低位,后高位。串行接口数据通过RxD(P3.0)发送或接收,而TxD(P3.1)用于提供同步移位脉冲,作为外部器件的同步信号。,9.2串行口结构与工作原理,(1)发送。发送时,假定8051写入一个数据到发送缓冲器SBUF(99H),即执行MOVSBUF,A命令,串行接口将SBUF中的8位数据按波特率为fosc/12从RxD脚输出,低位在前,高位在后。发送完8位数据后,由硬件将TI标志置1。再次发送数据之前,必须由软件将TI清0,方式0发送时序如图9.4(a)所示。(2)接收。接收时,先用软件写SCON(98H),即同时置REN1,置RI0。满足这两个条件,就会启动一次接收过程。此时RXD为数据输入端,TXD为同步信号输出端。串行数据输入的波特率为fosc/12。当接收完8位数据后,由硬件将RI标志置1。当再次接收时,必须由软件将RI标志清0。方式0接收时序如图9.4(b)所示。,9.2串行口结构与工作原理,图9.4串行接口方式0的时序,(a),(b),9.2串行口结构与工作原理,2方式1当SM00,SM11时,串行口工作于方式1。串行接口方式1是10位异步通信接口。其中数据位为8位(低位在先,高位在后),起始位和停止位各占1位。TXD用于发送,RXD用于接收。(1)发送。发送时,当CPU执行一条将数据写入到发送缓冲器SBUF,便启动发送。当发送完一帧数据时,发送中断标志位被置1。发送时序如图9.5(a)所示。(2)接收。当REN1,并同时RI0,接收器对RxD脚信号进行采样,采样频率是波特率的16倍。,9.2串行口结构与工作原理,一旦检测到RxD脚上的起始位,即RxD脚的电平由1变为0时,启动接收器接收数据。先接收起始位,然后接收一帧的其余信息。为了保证接收数据的正确,对每一位数据的检测采用“测三取二”的方法。即把一个位周期分为16个状态,在第7、8、9状态检测RXD引脚上的电平,即是每个电平采样3次,至少两次相同的值才被确认,称之为采3取2,若采样的值不是低电平0,则起始位无效,复位接收电路。在采样到起始位0后的下一个RX时钟周期开始,按照RX时钟频率,依次将RxD上的串行数据采样送到输入移位寄存器中(串行数据变成并行数据)。,9.2串行口结构与工作原理,方式1接收时,必须满足以下的两个条件:一是RI0,即没有中断请求或上一帧数据接收完成时发出的中断请求已被响应,SBUF中存放的上一帧数据已被取走;二是SM20或者接收到的停止位为1,则接收到的这一帧数据有效。将8位数据送入SBUF,停止位送RB8,RI置1。如果上述的条件不满足,则接收到的这一帧数据就会丢失,接收器重新开始检测RXD引脚上的负跳变。方式1接收时序如图9.5(b)所示。,9.2串行口结构与工作原理,图9.5串行接口方式1的时序,(a),(b),9.2串行口结构与工作原理,3方式2和方式3当SM01、SM10时,串行口工作于方式2,当SM01、SM11时,串行口工作于方式3。两种工作方式都是11位异步通信接口,适用于多机通信,它们区别仅仅是:方式2的通信波特率只有两种fosc/32或fosc/64;方式3的通信波特率是可变的。在方式2或方式3下,数据由TXD发送,RXD接收。一帧数据为11位:1位起始位(低电平)、8位数据位(低位在前高位在后)、1位可编程位(第9位数据,用做奇偶校验或地址/数据选择)和1位停止位。与方式1相比,多了一位可编程位。发送时,第9位数据为TB8,接收时,第9位数据送入RB8。,9.2串行口结构与工作原理,图9.6串行接口方式2和方式3的时序,(a)发送,(b)接收,9.2串行口结构与工作原理,(1)发送。操作过程与方式1类似。当执行MOVSBUF,A命令时,便立即启动发送,从起始位开始依次向TxD脚发送发送缓冲器SBUF中的8位数据、附加的第9位数据(SCON中的TB8)和停止位。当一帧数据发送完毕,置TI1。方式2和方式3发送时序如图9.6(a)所示。(2)接收。当REN1,允许接收。接收器开始检测RXD引脚上的信号,检测和接收数据的方法与方式1相似。当接收器收到第9位数据后,若同时满足以下的两个条件:一是RI0,二是接收到第9位数据为1,则接收到数据有效,8位数据装入SBUF,第9位数据装入RB8,并由硬件将RI置位。若不满足这两个条件,则接收到的这一帧数据将丢失,重新开始检测起始位。方式2和方式3接收时序如图9.6(b)所示。方式2或方式3的发送与接收时序与方式1相似,仅仅是多了一位数据TB8或RB8。,9.2串行口结构与工作原理,9.2.3波特率设计设置1.方式0的波特率串行口工作在方式0时,发送和接收的波特率是固定的。波特率都等于振荡频率的1/12。即:波特率=fosc/122.方式2的波特率串行口工作在方式2时,发送和接收的波特率与电源控制寄存器PCON中的SMOD位有关。当SMOD0时,波特率等于振荡频率的1/64;当SMOD1时,波特率等于振荡频率的1/32。即:波特率=fosc2SMOD/64(91)由于PCON无位寻址功能,通常通过以下指令清零或者置1。ANLPCON,#7FH;使得SMOD0ORLPCON,#80H;使得SMOD1,9.2串行口结构与工作原理,3.方式1和方式3的波特率串行口工作在方式1和方式3时,发送和接收的波特率是可变的,它与定时器的溢出速率和SMOD位有关。其波特率由下式确定:波特率=2SMODT1溢出速率/32(92)其中:T1的溢出速率定义为定时时间的倒数,计算公式如下:,9.2串行口结构与工作原理,定时器T1溢出速率,波特率,(93),(94),9.2串行口结构与工作原理,式中:K为定时器T1位数,它和定时器T1的设定方式有关。即:若定时器T1为方式0,则K13;若定时器T1为方式1,则K16;若定时器T1为方式2,则K8;定时器T1作波特率发生器时,通常选用T1工作在方式2定时方式,此时,T1的计数速率为fosc/12(应禁止T1中断)。因为定时器T1在方式2下工作,TH1和TL1分别设定为两个8位重装计数器,这种方式不仅可使得操作方便,也可避免因重装初值而带来的定时误差。表9.2给出了工程设计中定时器T1产生的常用波特率与其他参数之间的关系。可根据表中规律,推算出其他串行口通信波特率。,9.2串行口结构与工作原理,9.38051双机串行异步通信,两台8051单片机可以很方便地通过串口实现异步通信。根据两台单片机的距离,应采用不同的电平标准才能实现正常通信。若两台单片机在1.5米以内,可以采用TTL/CMOS电平;若两台单片机更远,但在15米以内,则可以采用RS232C电平;若采用RS485总线标准,则通信距离可以达到1公里左右。TTL/CMOS电平采用2.4V表示逻辑“1”,采用0.5V表示逻辑“0”。RS232C总线电平标准则是用12V表示逻辑“1”,用12V表示逻辑“0”。因此,与TTL/CMOS电平相比,RS232C总线电平具有更强的抗干扰能力,传送数据的能力更强,通信距离更远。单片机串口采用的是TTL/CMOS电平。而PC机的串口(COM1、COM2)则采用的是RS232C总线电平。,9.38051双机串行异步通信,9.3.1硬件连接8051单片机的串口的输入与输出为TTL/CMOS电平,若通信距离不超过1.5米,可以将两台单片机的串口直接相连,如图9.7所示:,9.38051双机串行异步通信,9.38051双机串行异步通信,若通信距离超过1.5米,在15米以内,则要通过MAX232芯片将TTL/CMOS电平转化为RS232C电平。其电路连接如图9.8所示:,图9.8MAX232芯片将TTL/CMOS电平转化为RS232C电平,9.38051双机串行异步通信,图中,MAX232芯片的11引脚和12引脚分别以TTL/CMOS电平输入输出,其13引脚和14引脚分别以RS232C总线电平输入输出,因此,起到电平转换的作用。,9.38051双机串行异步通信,9.3.2查询方式双机通信设计设有两个8051组成的应用系统通过串口实现互相通信,两台单片机的通信软件都采用查询方式,其设计过程如下:1.具体编程前的准备(1)双机约定:甲机发送信息,乙机接收信息,串行口工作在方式1,波特率为9600b/s。双机通信时,甲机先发一个联络信号“06”以示呼叫,当乙机收到后,回发一个应答信号“66”,表示可以接收信息;回发一个应答信号“99”,表示暂不能接收信息。甲机未收到有效的应答信号,则不停地呼叫;收到乙机的“66”,则将RAM中的数据发送给乙机。发送数据的格式为:,9.38051双机串行异步通信,字节数n:甲机向乙机发送的数据字节数。数据1数据n:甲机向乙机发送的n个字节数据。累加校验和:字节数n,数据1数据n共n+1个字节的算术累加和(向大于“0FFH”的高位进位丢弃)。乙机根据收到的“校验和”判断收到的数据是否都正确。若n个字节都正确,向甲机回发“0B”信号,否则回发“A0”信号。甲机收到“0B”,表明此次任务完成,返回主程序,否则重发所有数据。,9.38051双机串行异步通信,(2)初始化:选用通用的晶体振荡器件,频率为fOSC11.0592MHz;取SMOD0,定时器T1设置模式2工作。根据波特率和定时器T1的初值计算公式或查表9.2,确定计数初值为(TH1)(TL1)0FDH。(3)片内RAM和工作寄存器分配:30H和31H存放发送的数据块首地址,32H存放数据块长度n,R6存放数据累加校验和。,9.38051双机串行异步通信,2.编写程序根据程序框图,写出甲机查询方式发送子程序清单如下:ORG0000HLJMPSTARTORG0050HSTART:MOVSP,#30H;设置堆栈MOVA,#0FFHACALLTXSUB;调用发送子程序;执行其他程序END,9.38051双机串行异步通信,TXSUB:MOVETMOD,#20H;波特率设置MOVETH1,#0FDHMOVETL1,#0FDHSETBTR1MOVSCON,#50H;串行口初始化,方式1并启动接收MOVPCON,#00H;置SMOD0TXINI:MOVDPH,31H;设置DPTR指针MOVDPL,30HMOVR7,32H;送字节数到R7MOVR6,#00H;清累加和寄存器TX06:MOVA,06H;发呼叫信号“06”MOVSUBF,A,9.38051双机串行异步通信,WAIT1:JBCTI,RXANS1;等待发送完一个字节SJMPWAIT1RXANS1:JBCRI,NEXT1;等待接收乙机回答SJMPRXANSNEXT1:MOVA,SBUF;取乙机回答信息CJNEA,#66H,TX06;未收到有效的应答信号,继续呼叫MOVA,R7;发送要传送的字节数MOVSBUF,AADDA,R6;求累加和MOVR6,A;保存累加和WAIT2:JBCTI,TXDATASJMPWAIT2,9.38051双机串行异步通信,TXDATA:MOVXA,DPTR;发送数据MOVSBUF,AADDA,R6;求累加和MOVR6,A;保存累加和INCDPTR;指针指向下一数据WAIT3:JBCTI,NEXT2SJMPWAIT3,9.38051双机串行异步通信,NEXT2:DJNZR7,TXDATA;数据发送未完,继续发送MOVA,R6;数据发送完,则发送累加和MOVSBUF,AWAIT4:JBCTI,RXANS2;等待发送完一个字节SJMPWAIT4RXANS2:JBCRI,NEXT3;等待乙机回答SJMPRXANS2NEXT3:MOVA,SBUF;取回答信息CJNEA,#OBH,TXINI;发送数据有错误,则重发RET;发送正确,则返回主程序,9.38051双机串行异步通信,4.乙机查询方式接收子程序乙机查询方式发送子程序清单如下,其中:30H,31H为存放接收数据缓冲区首地址;R6为累加和寄存器;R7为数据块长度寄存器。ORG0000H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年叉车场(厂)内专用机动车辆作业(叉车司机)模拟考试题(附答案)
- 2025中学“体育节”暨春季田径运动会实施方案
- 门急诊护理交班制度考试试题及答案
- 2025年生活垃圾分类培训考试试题(含答案)
- 2025机动车检测站授权签字人考试试题(含答案)
- 专项安全生产施工方案
- 交规考试题库及答案在线
- 压力管道安全培训课件
- 变压器更换施工方案
- 工商法律知识培训课件
- 温通刮痧技术操作流程图及考核标准
- 教师如何使用AI开展教学DeepSeek使用指南人工智能 课件
- 《企业竞争情报》课件
- 刑事撤案申请书
- 排水证授权委托书范本
- 《矿山隐蔽致灾因素普查规范》解读培训
- 2024年考研英语一阅读理解80篇试题及答案
- 金属非金属地下矿山紧急避险系统建设规范培训
- 新概念第二册单词表(完整版)
- 《商务跨文化交际》课件
- 缺血性心肌病病人护理查房
评论
0/150
提交评论