您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > V1.2 第7章 80C51单片机的串行口及串行总线扩展宋121116
第7章80C51单片机的串行口及串行总线扩展7.1串行通信基本知识7.280C51单片机的串行口7.380C51单片机的串行口应用7.4单片机的串行总线扩展7.1串行通信基本知识单片机与外界进行信息交换的过程统称为通信。不同的通信方式下CPU与外设之间的连线结构和数据传送方式是不同的,这样就导致了不同的通信方式的特点和适用范围也不同。7.1.1基本通信方式及特点根据CPU与外设之间连线结构和数据传送方式的不同,将通信方式分为并行通信和串行通信。并行通信是指数据的各位同时发送或接收,每个数据位使用单独的一条导线,并行通信的特点是各数据位同时传送,传送速度快、效率高,但并行数据传送需要较多的数据线。串行通信是指数据一位接一位顺序发送或接收。串行通信的特点是数据传送按位顺序进行,最少只需一根传输线即可完成,成本低但速度慢,一般适用于较长距离传送数据。7.1.2串行通信的数据传送方式1.单工方式两个通信设备之间的数据传送方向是单向的。2.半双工形式两个通信设备之间的数据传送是双向的,但对一个设备而言,其发送和接收不能同时进行。3.全双工方式两个设备之间的数据传送是双向的,两串行通信设备之间的数据传送可向两个方向传送,且可同时进行发送和接收数据。7.1.3串行通信的分类根据数据传送时的编码格式不同,串行通信又分为异步通信和同步通信两种方式。1.同步通信所有设备都使用同一个时钟,称为同步时钟。在数据传送时,以若干个数据字符(称为数据块)为1帧进行传输,每帧包括同步字符、数据块和校验字符CRC。2.异步通信异步通信是指在串行通信中,接收设备和发送设备有各自的时钟信号,异步通信以字符为单位进行数据传送,不过通信中这些时钟频率必须保持一致。7.1.4串行通信的波特率衡量串行通信系统中数据传输的快慢程度。波特率:指每秒钟传送信号的数量,单位为波特(B,Baud)。比特率:每秒钟传送二进制数的信号数(即二进制数的位数),单位是bps(bitpersecond)或写成b/s(位/秒)。在单片机串行通信中,传送的信号是二进制信号,因此波特率与比特率数值上相等,单位采用bps。例如,通信双方每秒钟所传送数据的速率是960字符/秒,每一字符包含10位(1个起始位、8个数据位、1个停止位),则波特率为960×10=2400b/s=2400B7.280C51单片机的串行口80C51单片机带有一个全双工的串行通信接口,可作:通用异步接收/发送器UART同步移位寄存器网络通信7.2.1MCS-51单片机串行口的结构数据发送、接收使用两个物理上独立的同名的接收/发送缓冲寄存器SBUF(字节地址都是99H)。发送缓冲寄存器只能写入数据不可以读出数据,收缓冲寄存器只可以读出数据不可以写入数据,两个缓冲器功能的确定用读、写指令加以区分。执行MOVSBUF,A指令启动一次数据发送执行MOVA,SBUF指令完成一次数据接收无论是采用中断方式还是查询方式工作,每接收/发送一个数据都必须用指令对RI/TI清0,以备下一次收/发。7.2.2MCS-51单片机串行口控制SCON和PCON专门用来对串行口进行设置。1.串行口控制寄存器SCON字节地址为98H,可按位寻址。SCONZ(98H)位地址D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI9FH9EH9DH9CH9BH9AH99H98HSM0,SM1:工作方式控制位。00时,串口方式0,8位同步移位寄存器,仅用于扩展I/O口时使用,其波特率为fosc/12。01时,串口方式1,为10位UART,其波特率为可变,由定时器控制。10时,串口方式2,为11位UART,其波特率为fosc/64或fosc/32。11时,串口方式3,为11位UART,其波特率为可变,由定时器控制。串行口的这4种工作方式中,方式0并不用于通信,而是通过外接移位寄存器芯片实现扩展I/O口的功能,该方式又称为移位寄存器方式;方式1、2、3都是异步通信方式。方式1一帧信息由10位组成,用于双机通信;方式2和3每帧信息都是11位,其区别仅在于波特率不同。方式2和3主要用于多机通信,也可用于双机通信。RB8:在方式0时,RB8不用。在方式1时,SM2=0,RB8接收的是停止位。在方式2、3中,用于存放收到的第9位数据;在双机通信中,作为奇偶校验;在多机通信中,用作区别地址帧/数据帧的标志。TB8:在方式2、3中,是要发送的第9位数据;在双机通信中,用于对接收到的数据进行奇偶校验;在多机通信中,用作判断地址帧/数据帧,TB8=0表示发送的是数据TB8=1表示发送的是地址。TI:发送中断标志位,用于指示一帧信息发送是否完成,可位寻址。方式0时发送完第8位数据后由硬件自动置位TI。其他方式下,开始发送停止位时硬件自动置位TI。TI置位表示一帧信息发送完成,同时申请中断。TI在发送数据前必须由软件清零。RI:接收中断标志位,用于指示一帧信息是否接收完成,也可位寻址。在串行接收(不考虑SM2)时,在方式0时接收完第8位数据后,或在其他方式接收到停止位的中间时刻由硬件置位RI,RI置位表示一帧信息接收完毕,并发出中断申请。它也必须由软件清零。SM2:为多机通信控制位,允许工作在方式2和方式3的单片机实现多机通信。在工作方式2或方式3时:若SM2=1:当接收到的第9位数据(RB8)为0时,不启动接收中断标志RI,即RI=0,并将接收到的前8位数据丢弃;当RB8=1时,把接收到的前8位数据送入SBUF,且置RI=1,发出中断申请,接收数据有效。当SM2=0:不管第9位是0还是1,都将接收到的前8位数据送入SBUF,并发出中断申请。在工作方式1时:若SM2=1,当接收有效停止位时,置RI=1,数据有效;没有接收到有效停止位时,RI=0,数据无效。在工作方式0时:SM2不用,应设置为0。REN:接收允许控制位,用于控制是否允许接收数据。REN=0时,表示禁止接收数据;REN=1时表示允许接收数据。该位的置位/清零由软件控制。2.电源控制寄存器PCONPCON,地址为87H。SMOD为波特率加倍位,在计算串行方式1、2、3的波特率时,SMOD=0时波特率不加倍;SMOD=1时波特率加倍。系统复位时默认为SMOD=0。PCON(98H)D7D6D5D4D3D2D1D0SMOD———GF1GF0PDIDL3.串行通信的工作方式(1)工作方式0当SM0SM1=00时,串行口工作在方式0。串行口在工作方式0下为8位同步移位寄存器输入/输出方式,波特率固定为fOSC/12。工作方式0下,串行口的发送条件是TI=0;接收条件是TI=0且REN=1(允许接收数据)。串行数据由RxD(P3.0)逐位移出/移入(低位在先,高位在后);TxD(P3.1)输出移位时钟,频率为系统时钟频率fosc的1/12。发送/接收数据时,每送出/接收8位数据TI/RI自动置1;需要用软件清零TI/RI。(2)工作方式1SM0SM1=01,波特率可变,10位异步通信方式,RxD为接收端,TxD为发送端。波特率由定时/计数器的溢出率及PCON.7决定。该方式下,发送或接收一帧信息包括1个起始位0,8个数据位和1个停止位1。SBUF中的串行数据由RXD逐位移入;TXD输出串行数据。数据移入/移出的频率=(2SMOD/32)T1(或T0)的溢出率。发送/接收数据时,每送出/接收8位数据TI/RI自动置1;需要用软件清零TI/RI。工作时,发送端自动添加一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位。方式1发送工作过程:CPU执行一条MOVSBUF,A指令,则启动了串行口发送,串行口自动在8个串行数据位的前、后分别插入1位起始位(0)和1位停止位(1),构成10位数据帧,然后按设定的波特率依次从TxD上输出起始位、数据位、停止位,数据从TxD输出。一帧信息发送完毕之后,硬件置发送中断标志TI=1,表示发送缓冲区内容已发送完毕,并向CPU申请中断。方式1接收工作过程:在RI=0且REN=1条件下启动,此时接收器开始工作。当接收电路采样到输入信号从1到0的负跳变时,确认是开始位0,就启动接收控制器接收数据。控制器发出内部移位脉冲将RxD上的数据逐位移入移位寄存器,当8位数据及停止位全部移入后,再进行操作。为了避免时钟差异的影响,控制器将位的传送时间分成16等分,位检测器在7、8、9三个状态采样RxD3次,3次采样中至少2次相同的值被确认为数据。接收操作时:①若RI=0、SM2=0,将8位数据装入接收数据缓冲器SBUF,停止位装入RB8,并置RI=l,向CPU发出中断请求信号;②若RI=0、SM2=1,则只有在停止位为1时才发生上述操作;③若RI=0、SM2=1,且停止位为0,则所接收的数据不装入SBUF,即数据丢失;④若RI=1,则所接收的数据在任何情况下都不装入SBUF,即数据丢失。无论出现哪一种情况,跳变检测器将继续采样RxD引脚上的负跳变,以便接收下一帧信息。移位器采用移位寄存器和SBUF双缓冲结构,以避免在接收后一帧数据之前,CPU尚未及时响应中断而将前一帧数据取走,造成两帧数据重叠。采用双缓冲结构后,前、后两帧数据进入SBUF的时间间隔至少有10个机器周期。在后一帧数据送入SBUF之前,CPU有足够的时间将前一帧数据取走。(3)工作方式2和工作方式3都是11位异步接收/发送方式。发送或接收的一帧信息由11位组成。其中,1位起始位、9位数据位和1位停止位。方式2的波特率固定为fosc/64方式3的波特率为=(2SMOD/32)T的溢出率方式2的接收/发送过程类似于方式1,所不同的是,它比方式1增加了一位“第9位”数据(TB8/RB8),用于“奇偶校验”。奇校验规定8位有效数据连同1位附加位中,二进制数“1”的个数为奇数;偶校验规定8位有效数据连同1位附加位中,二进制数“1”的个数为偶数。奇校验时,若发送的8位有效数据中“1”的个数为偶数,则要人为在附加位中添加一个“1”一起发送;若发送的8位有效数据中“1”的个数为奇数,则要人为在附加位中添加一个“0”一起发送。约定接收采用奇校验时,若接收到的9位数据中“1”的个数为奇数,则表明接收正确,取出8位有效数据即可;若接收到的9位数据中“1”的个数为偶数,则表明接收出错,应当进行出错处理。采用偶校验时,处理方法与奇校验类似。奇偶校验并不能保证通信数据的传输一定正确。即如果奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。4.串行通信的波特率设置方式0的波特率为晶振频率的1/12。方式2的波特率为:波特率=(2SMOD/64)×fosc方式1和方式3的波特率波特率=(2SMOD/32)×定时器的溢出率定时器的溢出率=1/产生溢出所需的时间=(fOSC/12)/(2NTC)其中:N为定时器T1/T0的位数,TC为定时器T1/T0的预置初值。经验证,当时钟频率选用11.0592MHz时,容易获得标准的波特率,所以很多单片机系统选用这个晶振频率。定时器T1在方式2时的常用波特率及初值常用波特率/bpsfosc/MHzSMODTH1初值1920011.05921FDH960011.05920FDH480011.05920FAH240011.05920F4H120011.05920E8H7.380C51单片机的串行口应用例1应用串行口控制的键盘和显示的硬件电路图如图,试编写程序。开始初始化显示键盘初始化扫描有键按下吗?延时10ms是否抖动?键盘扫描,判断是那个键按下,相应寄存器赋偏址差值显示子程序串行口控制的键盘和显示的程序流程图ORG0000HSJMPMAINORG0030HMAIN:NOPCSHX:SETBP3.3;开放显示MOVR7,#06H;显示位数MOVR0,#00H;R0初始化MOVDPTR,#CSTAB;字形代码表首地址DL0:MOVA,R0;加上偏移量MOVCA,@A+DPTR;取出
本文标题:V1.2 第7章 80C51单片机的串行口及串行总线扩展宋121116
链接地址:https://www.777doc.com/doc-3382453 .html