C51的串行通信.ppt
《C51的串行通信.ppt》由会员分享,可在线阅读,更多相关《C51的串行通信.ppt(101页珍藏版)》请在三一办公上搜索。
1、第6章 80C51的串行通信接口,主要内容:串行接口技术及其与外设连接,教学建议,串行接口扩展外设是嵌入式系统应提倡的理念。需要指出的是,这些接口知识具有普遍意义,在其他类型的嵌入式系统里同样有用。,教学目的,通过本章学习:了解嵌入式系统接口技术的概念熟悉和掌握串行接口扩展外设的思想和方法,6.1 80C51的通信接口技术,在计算机系统中,CPU和外部通信有两种通信方式:并行通信和串行通信。并行通信,即数据的各位同时传送;串行通信,即数据一位一位顺序传送。,8.2.1 串行通讯的基本知识,图6.1 两种通信方式的示意图,特点,并行通信:需要多根传输线传输速度快,但传输线数量多,成本高,适合近距
2、离传输。串行通信:传输数据的各位在一条传输线上传送,能够节省传输线,在数据位数很多且远距离数据传送时,比较经济;缺点是传送速度比并行通信要慢。,串行通信的分类,按照串行数据的时钟控制方式,串行通信可分为同步通信和异步通信两类。异步通信(Asynchronous Communication)在异步通信中,数据通常是以字符为单位组成字符帧传送的。字符帧由发送端一帧一帧地发送,每一帧数据是低位在前,高位在后,通过传输线被接收端一帧一帧地接收。发送端和接收端可以由各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。,字符帧(Character Frame),字符帧也叫数据帧,由起始位、
3、数据位、奇偶校验位和停止位等四部分组成,图6.2 异步通信的字符帧格式,字符帧(Character Frame)格式,起始位:位于字符帧开头,只占一位,低电平,用于向接收设备表示发送端开始发送一帧信息。数据位:紧跟起始位之后,用户根据情况可取5位、6位、7位或8位,低位在前、高位在后。奇偶校验位:位于数据位之后,仅占一位,用来表征串行通信中是采用奇校验还是偶校验。停止位:位于字符帧最后,高电平。通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已经发送完,也为发送下一帧做准备。在串行通信中,两相邻字符帧之间可以没有空闲位,也可以有若干空闲位,这由用户来决定。,波特率(baud rate
4、),波特率为每秒钟传送二进制数码元的数目。波特率用于表征数据传输的速度,波特率越高,数据传输速度越快;波特率和字符的实际传输速率不同,字符的实际传输速率是每秒内所传字符帧的帧数,和字符帧格式有关。通常,异步通信的波特率为50-9600bit/s。异步通信的优点是不需要传送同步时钟,字符帧长度不受限制,故设备简单。缺点是字符帧中因包含起始位和停止位而降低了有效数据的传输效率。,同步通信(Synchronous Communication),同步通信是一种连续串行传送数据的通信方式,一次通信只传输一帧信息。这里的信息帧和异步通信的字符帧不同,通常有若干个数据字符。,图6.3 同步通信的字符帧格式,
5、串行通信的制式,在串行通信中数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为:单工(simplex)半双工(half duplex)全双工(full duplex)三种制式。,图6.4 单工、半双工和全双工三种制式示意图,串行通信的接口电路,能够完成异步通信的硬件电路称为UART,即通用异步接收器/发送器(Universal Asynchronous Receiver/Transmitter);能够完成同步通信的硬件电路称为USRT(Universal Synchronous Receiver/Transmitter);既能够完成异步又能同步通信的硬件电路称为USART(Univ
6、ersal Synchronous Asynchronous Receiver/Transmitter)。,串行通信总线标准及其接口,RS-232C是使用最早、应用最多的一种异步串行通信总线标准。它是美国电子工业协会(EIA)1962年公布、1969年最后修定而成的。其中RS表示Recommended Standard,232是该标准的标识号,C表示最后一次修定。RS-232C主要用来定义计算机系统的一些数据终端设备(DTE)和数据电路终接设备(DCE)之间的电气性能。RS-232C串行接口总线适用于:设备之间的通信距离不大于15米,传输速率最大为20kB/s。,(1)RS-232C信息格式标
7、准,RS-232C采用串行格式,该标准规定:信息的开始为起始位,信息的结束为停止位;信息本身可以是5、6、7、8位再加一位奇偶位。如果两个信息之间无信息,则写“1”,表示空。,图6.5 RS-232C信息格式,(2)RS-232C电平转换器,RS-232C规定了自己的电气标准,由于它是在TTL电路之前研制的,所以它的电平不是+5V和地,而是采用负逻辑,即:逻辑“0”:+5V-+15V逻辑“1”:-5V-15V因此,RS-232C不能和TTL电平直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏。常用的电平转换集成电路是传输线驱动器MC1488和传输线接收器MC1489。,(3)RS-23
8、2C总线规定,RS-232C标准总线为25根,采用标准的D型25芯插头座。与PC机联机通信时一般采用9针的接插件将串行口的信号送出。接插件的引脚信号如表6.1所示。,表6.1 接插件的引脚信号,在计算机进行串行通信时,选择接口标准必须注意以下两点:,通信速度和通信距离通常的标准串行接口,都有满足可靠传输时的最大通信速度和传送距离指标,但这两个指标具有相关性,适当降低传输速度,可以提高通信距离。抗干扰能力通常选择的标准接口,在保证不超过其使用范围时都有一定的抗干扰能力,以保证可靠的信号传输。但在一些工业测控系统,通信环境十分恶劣,因此在通信介质选择、接口标准选择时,要充分考虑抗干扰能力,并采取必
9、要的抗干扰措施。,6.2 80C51的串行接口,80C51内部有一个可编程全双工串行通信接口,它具有UART的全部功能;该接口不仅可以同时进行数据的接收和发送,也可做同步移位寄存器使用;该串行口有4种工作方式,帧格式有8位、10位和11位,波特率可由软件设置,由片内的定时/计数器产生。,80C51串行口结构,80C51内部有两个独立的接收、发送缓冲器SBUF,SBUF属于特殊功能寄存器。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,二者共用一个字节地址(99H)。,图6.6 串行口结构示意图,与80C51串行口有关的特殊功能寄存器,串行口数据缓冲器SBUF分为发送SBUF和接收SBU
10、F,两个在物理上独立发送SBUF用于存放待发送的8位数据,写入SBUF将同时启动发送;接收SBUF存放已接收成功的8位数据,供CPU读取。,SBUF,SCON,PCON,串行口数据缓冲器SBUF,两个SBUF共用一个地址99H,通过读、写指令来区别对接收或发送缓冲器所进行的操作;写数据到发送SBUF指令:MOVSBUF,A读取接收SBUF数据指令:MOVA,SBUFCPU在写SBUF时,就是修改发送缓冲器;读SBUF时,就是读接收缓冲器的内容。,串行口控制寄存器SCON,特殊功能寄存器SCON用来控制串行口的工作方式和状态,由软件设置单片机用何种工作方式;该寄存器字节地址为98H,可以位寻址;
11、单片机复位时,所有位全为0。,图6.7 SCON的各位定义,SCON的各位的说明:,SM0、SM1:串行方式选择位。,表6.2 SM0、SM1的功能定义,SCON的各位的说明(续):,SM2:多机通信控制位用于方式2和方式3中在方式2和方式3处于接收时,若SM2=1,且接收到的第9位数据RB8为0时,不激活RI;若SM2=1,且RB8=1时,则置RI=1;在方式2、3处于接收或发送方式,若SM2=0,不论接收到第9位RB8为0还是为1,TI,RI都以正常方式被激活;在方式1处于接收时,若SM2=1,则只有收到有效的停止位后,RI置1;在方式0中,SM2应为0。,SCON的各位的说明(续):,R
12、EN:允许串行接收位由软件置位或清零;REN=1时,允许接收;REN=0时,禁止接收。TB8:发送数据的第9位在方式2和方式3中,由软件置位或复位;可做奇偶校验位。RB8:接收数据的第9位与TB8相对应。,SCON的各位的说明(续):,TI:发送中断标志位在方式0中,发送完8位数据后,由硬件置位;在其他方式中,发送停止位之初由硬件置位。因此TI是发送完一帧数据的标志,可以用指令JBC TI,rel来查询是否发送结束。TI=1时,也可向CPU申请中断,响应中断后都必须由软件清除TI。RI:接收中断标志位在方式0中,接收完8位数据后,由硬件置位;在其他方式中,接收停止位的中间由硬件置位。同TI一样
13、,也可以通过JBC RI,rel来查询是否接收完一帧数据。RI=1时,也可申请中断,响应中断后都必须由软件清除RI。,电源及波特率选择寄存器PCON,PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,不可位寻址,字节地址为87H。在HMOS的8051单片机中,PCON除了最高位以外大多数位都未做定义。与串行通信有关的只有D7位(SMOD),该位为波特率倍增位当SMOD=1时,串行口波特率增加一倍,当SMOD=0时,串行口波特率为设定值;当系统复位时,SMOD=0。,图6.8 PCON的各位定义,80C51串行的工作方式,80C51的串行口有4种工作方式,通过对SCON中的SM1、
14、SM0位来决定。方式0:同步移位寄存器方式,用于扩展并行I/O接口。特点为:一帧8位数据,无起始位和停止位;RXD:数据输入/输出端;TXD:同步脉冲输出端,每个脉冲对应一个数据位;波特率固定,B=fosc/12如:fosc=12MHz,B=1Mbit/s,每位数据占1s。,发送操作,当一个数据写入发送缓冲器SBUF时,启动发送,串行口将8位数据以fosc/12的波特率从RXD引脚输出(低位在前)发送完后置中断标志TI为1,请求中断;在再次发送数据之前,必须由软件清TI为0;发送时序如图6.9(a)所示,图6.10 方式0用于扩展I/O口输出,具体接线图如图6.10所示。其中74LS161为串
15、入并出移位寄存器。,接收操作,在满足REN=1和RI=0的条件下,串行口即开始从RXD端以fosc/12的波特率输入数据(低位在前);当接收完8位数据后,置中断标志RI为1,请求中断;再次接收数据之前,必须由软件清RI为0;接收时序如图6.9(b)所示,图6.11 方式0用于扩展I/O口输入,具体接线图如图6.11 所示。其中74LS165为并入串出移位寄存器。,方式1,方式1是串行口为波特率可调的10位通用异步通信方式一帧数据10位:8位数据位,1个起始位(0),1个停止位(1);RXD:接收数据端,TXD:发送数据端;波特率:用T1作为波特率发生器,B=(2SMOD/32)T1溢出率,图6
16、.12 10位的帧格式,发送操作,当TI=0时、执行“MOV SBUF,A”指令后启动发送操作;发送电路会自动在8位发送字符前后分别添加1位起始位和停止位,并在移位脉冲作用下在TxD线上依次发送一帧信息;发送完后,维持TxD线为高电平并置中断标志TI为1;TI需由软件复位;,接收操作,接收时,由REN置1允许接收;接收器以所选用波特率的16倍的速率对RxD引脚进行采样。当采样1到0的跳变时,再连续采样8次,如果采样值都为0,表示接收到有效起始位,否则起始位无效,重新启动接收过程;确认接收到起始位后,就开始接收本帧的其余数据,在每一位信息的中间时刻采样3次,取其中两次以上相同的值为该位信息的接收
17、值,以保证可靠接收;,接收操作(续),在接收到停止位时,接收电路必须满足两个条件:RI=0,接收到的停止位为1 或者 SM2=0,才能把接收到的8位数据存入SBUF(接收)中,把停止位送入RB8中,同时置位中断标志RI,发串口中断请求,完成一帧接收过程。若不满足上述条件,所接收到的一桢信息将丢失,接收器复位,并从新开始检测负跳变,以便接收下一帧信息。方式1接收时,应先用软件清除RI或SM2标志,方式2和方式3,方式2和方式3都是11位UART方式,由SCON中的SM0、SM1两位编码确定;一帧数据为11位:9位数据位,1个起始位(0),1个停止位(1),第9位数据位在TB8/RB8中,常用作校
18、验位和多机通讯标识位。RXD:接收数据端,TXD:发送数据端。波特率:方式2:B=(2SMOD/64)fosc方式3:B=(2SMOD/32)T1溢出率,图6.14 11位的帧格式,发送操作,发送时,先根据通信协议由软件设置TB8,然后用指令将要发送的数据写入SBUF,启动发送器;写SBUF的指令,除了将8位数据送入SBUF外,同时还将TB8装入发送移位寄存器的第9位,并通知发送控制器进行一次发送;一帧信息就从TXD发送,在送完一帧信息后,TI被自动置1;在发送下一帧信息之前,TI必须由中断服务程序或查询程序清0。,接收操作,当REN=1时,允许串行口接收数据;数据由RXD端输入,接收11位的
19、信息;当接收器采样到RXD端的负跳变、并判断起始位有效后,开始接收一帧信息;当接收器接收到第9位数据后,必须同时满足以下两个条件:RI=0,SM2=0 或接收到的第9位数据为1,则接收数据有效,8位数据送入SBUF,第9位送入RB8,并置RI=1;若不满足上述两个条件,则信息丢失。请注意:与方式1不同,方式2和3中装入RB8的是第9位数据,而不是停止位。所接收的停止位的值与SBUF、RB8和RI都没有关系,利用这一特点可用于多机通信中。,图6.15(a)方式1发送时序图,图6.15(b)方式1发送时序图,方式2/3发送与接收时序如图6.15所示,80C51串行口的波特率,在串行通信中,收发双方
20、对传送的数据速率即波特率要有一定的约定;80C51单片机的串行口通过编程可以有4种工作方式。其中,方式0和方式2的波特率是固定的,方式1和方式3的波特率可变,由定时器T1的溢出率决定。,方式0的波特率,在方式0中,波特率为时钟频率的1/12,即:串行口方式0波特率=fosc/12,固定不变。,方式2的波特率,在方式2中,波特率由波特率系数和系统时钟频率fosc决定。当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32。即:,在方式1和方式3下,波特率由定时器T1的溢出率和波特率系数共同决定。即:,方式1和方式3的波特率,方式2波特率=,方式1和方式3的波特率=溢出
21、率,方式1和方式3的波特率计算,T1为方式2的时间常数:X=28-t/T溢出时间:t=(28-X)T=(28-X)12/foscT1溢出率=1/t=fosc/12(28-X)波特率B=(2SMOD/32)fosc/12(28-X)串行口方式1、3,根据波特率选择T1工作方式,计算时间常数。T1选方式2:TH1=X=28-fosc/122SMOD/(32B)T1选方式1用于低波特率,需考虑T1重装时间常数时间。,串行口初始化编程格式:,SIO:MOVSCON,#控制状态字;写方式字且TI=RI=0(MOVPCON,#80H);波特率加倍(MOVTMOD,#20H);T1作波特率发生器(MOVTH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 串行 通信

链接地址:https://www.31ppt.com/p-5417027.html