串行接口及串行通信技术.doc

上传人:赵** 文档编号:50928932 上传时间:2022-10-16 格式:DOC 页数:11 大小:218.50KB
返回 下载 相关 举报
串行接口及串行通信技术.doc_第1页
第1页 / 共11页
串行接口及串行通信技术.doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《串行接口及串行通信技术.doc》由会员分享,可在线阅读,更多相关《串行接口及串行通信技术.doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第9章 串行接口及串行通信技术U 难点 串行通信的四种工作方式 要求掌握: 串行通信的控制寄存器 串行通信的工作方式0和方式1 了解: 串行通信的基础知识 串行通信的工作方式2和方式3 9.1 串行通信的基础知识 9.2 MCS-51单片机串行通信的控制寄存器 9.3 MCS-51单片机串行通信工作方式 9.1 串行通信的基础知识 串行数据通信要解决两个关键技术问题,一个是数据传送,另一个是数据转换。所谓数据传送就是指数据以什么形式进行传送。所谓数据转换就是指单片机在接受数据时,如何把接收到的串行数据转化为并行数据,单片机在发送数据时,如何把并行数据转换为串行数据进行发送。9.1.1 数据传送

2、单片机的串行通信使用的是异步串行通信,所谓异步就是指发送端和接收端使用的不是同一个时钟。异步串行通信通常以字符(或者字节)为单位组成字符帧传送。字符帧由发送端一帧一帧地传送,接收端通过传输线一帧一帧地接收。 1. 字符帧的帧格式 字符帧由四部分组成,分别是起始位、数据位、奇偶校验位、停止位。如图9.1所示:1) 起始位:位于字符帧的开头,只占一位,始终位逻辑低电平,表示发送端开始发送一帧数据。2) 数据位:紧跟起始位后,可取5、6、7、8位,低位在前,高位在后。3) 奇偶校验位:占一位,用于对字符传送作正确性检查,因此奇偶校验位是可选择的,共有三种可能,即奇偶校验、偶校验和无校验,由用户根据需

3、要选定。4) 停止位:末尾,为逻辑“1”高电平,可取1、1.5、2位,表示一帧字符传送完毕。图9.1 字符帧格式 异步串行通信的字符帧可以是连续的,也可以是断续的。连续的异步串行通信,是在一个字符格式的停止位之后立即发送下一个字符的起始位,开始一个新的字符的传送,即帧与帧之间是连续的。而断续的异步串行通信,则是在一帧结束之后不一定接着传送下一个字符,不传送时维持数据线的高电平状态,使数据线处于空闲。其后,新的字符传送可在任何时候开始,并不要求整倍数的位时间。 2. 传送的速率 串行通信的速率用波特率来表示,所谓波特率就是指一秒钟传送数据位的个数。每秒钟传送一个数据位就是1波特。即:1波特1bp

4、s(位/秒)在串行通信中,数据位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制。时钟频率高,则波特率高,通信速度就快;反之,时钟频率低,波特率就低,通信速度就慢。9.1.2 数据转换 MCS-51单片机只能处理8位的并行数据,所以在进行串行数据的发送时,要把并行数据转换为串行数据。而在接收数据时,只有把接收的串行数据转换成并行数据,单片机才能进行处理。 能实现这种转换的设备,称为通用异步接收发送器(Universal Asynchronous Receiver /Transmitter)。这种设备已集成到单片机内部,称为串行接口电路。串行接口电路为用户提供了两个串行口缓冲寄存器(SB

5、UF),一个称为发送缓存器,它的用途是接收片内总线送来的数据,即发送缓冲器只能写不能读。发送缓冲器中的数据通过TXD引脚向外传送。另一个称为接收缓冲器,它的用途是向片内总线发送数据,即接收缓冲器只能读不能写。接收缓冲器通过RXD引脚接收数据。因为这两个缓冲器一个只能写,一个只能读,所以共用一个地址99H。串行接口电路如图9.2所示。图9.2 MCS-51串行口寄存器结构9.2 MCS-51单片机串行通信的控制寄存器 1. 串行口控制寄存器(SCON) SCON是MCS-51单片机的一个可位寻址的专用寄存器,用于串行数据通信的控制。单元地址为98H,位地址为98H9FH。寄存器的内容及位地址表示

6、如下: 位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H 位符号 SM0 SM1 SM2 REN TB8 RB8 TI RI 各位的说明如下:1) SM0 、SM1串行口工作方式选择位其状态组合和对应工作方式为: SM0 SM1 工作方式0 0 方式00 1 方式11 0 方式21 1 方式32) SM2允许方式2、3的多机通信控制位在方式2和3中,若SM21且接收到的第九位数据(RB8)为1,才将接收到的前8位数据送入接收SBUF中,并置位RI产生中断请求;否则丢弃前8位数据。若SM20,则不论第九位数据(RB8)为1还是为0,都将前8位送入接收SBUF中,并产生中断请

7、求。方式0时,SM2必须置0。3) REN允许接收位REN0 禁止接收数据REN1 允许接收数据4) TB8发送数据位8在方式2、3时,TB8的内容是要发送的第9位数据,其值由用户通过软件来设置。5) RB8接收数据位8在方式2、3时,RB8是接收的第9位数据。在方式1时,RB8是接收的停止位在方式0时,不使用RB86) TI发送中断标志位在方式0时,发送完第8位数据后,该位由硬件置位。在其它方式下,于发送停止位之前,由硬件置位。因此,TI1表示帧发送结束,其状态既可供软件查询使用,也可请求中断。TI由软件清“0”。7) RI接收中断标志位在方式0时,接收完第8位数据后,该位由硬件置位。在其它

8、方式下,于接收到停止位之前,该位由硬件置位。因此,RI1表示帧接收结束,其状态既可供软件查询使用,也可请求中断。RI由软件清“0”。 2. 电源控制寄存器(PCON) PCON不可位寻址,字节地址为87H。它主要是为CHMOS型单片机80C51的电源控制而设置的专用寄存器。其内容如下:位序 D7 D6 D5 D4 D3 D2 D1 D0 位符号 SMOD / / / GF1 GF0 PD IDL 与串行通信有关的只有D7位(SMOD),该位为波特率倍增位,当SMOD=1时,串行口波特率增加一倍,当SMOD=0时,串行口波特率为设定值。当系统复位时,SMOD=0。 3. 中断允许控制寄存器(IE

9、) 此寄存器在第六章已经介绍过,在此不作赘述。9.3 MCS-51单片机串行通信工作方式 串行口的工作方式由SM0和SM1确定,编码和功能如表8-1所示。表8-1 串行口工作方式SM0 SM1 方式 功能说明 波特率 0 0 方式0 移位寄存器方式 fosc/12 0 1 方式1 8位UART 可变 1 0 方式2 9位UART fosc/64 或者fosc/32 1 1 方式3 9位UART 可变 方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由T1的溢出率决定。9.3.1 串行工作方式0串行口工作在方式0时,串行口作同步移位寄存器使用。以RXD(P3.0)端作为数据的输

10、入或输出端,而TXD(P3.1)提供移位的时钟脉冲。外接移位寄存器,实现数据并行输入或输出。工作在方式0时,波特率为fosc/12,即一个机器周期移位一次。 1. 数据输出(发送) 当数据写入SBUF后,数据从RXD端在移位脉冲(TXD)的控制下,逐位移入74LS164,74LS164能完成数据的串并转换。当8位数据全部移出后,TI由硬件置位,发生中断请求。若CPU响应中断,则从0023H单元开始执行串行口中断服务程序,数据由74LS164并行输出。其接口逻辑如图9.3所示。由逻辑图可知,通过外接74LS164,串行口能够实现数据的并行输出。 图9.3 外接移位寄存器输出 2. 数据输入(接收

11、) 要实现接收数据,必须首先把SCON中的允许接收位REN设置为1。当REN设置为1时,数据就在移位脉冲的控制下,从RXD端输入。当接收到8位数据时,置位接收中断标志位RI,发生中断请求。其接口逻辑如图9.4所示。由逻辑图可知,通过外接74LS165,串行口能够实现数据的并行输入。 图9.4 外接移位寄存器输入 【例8-1】使用74LS164的并行输出端接8支发光二极管,利用它的串入并出功能,把发光二极管从左到右依次点亮,并反复循环。假定发光二极管为共阴极接法。图9.5 电路设计 解:电路如图9.5。软件部分如下: ORG0000H LJMPMAIN ORG1000H MAIN:MOVSCON

12、,#00H;串行口工作在方式0 CLRES;禁止串行中断 MOVA, #80H;发光二极管从左边亮起 DELR:CLRP1.0;关闭并行输出 MOVSBUF, A;串行输出 WAINT:JNBTI, WAIT;状态查询 SETBP1.0;开启并行输出 ACALLDELAY;调用延时子程序 CLRTI;清发送中断标志 RRA;发光右移 AJMPDELR;继续 EDN 9.3.2 串行工作方式1方式1为10位为一帧的异步串行通信方式。其帧格式为1个起始位、8个数据位和1个停止位。如图9.6所示。 图9.6 方式1的帧格式 1. 数据输出(发送) 数据写入SBUF后,开始发送,此时由硬件加入起始位和

13、停止位,构成一帧数据,由TXD串行输出。输出一帧数据后,TXD保持在高电平状态下,并将TI置位,通知CPU可以进行下一个字符的发送。 2. 数据输入(接收) 当REN=1且接收到起始位后,在移位脉冲的控制下,把接收到的数据移入接收缓冲寄存器(SBUF)中,停止位到来后,把停止位送入RB8中,并置位RI,通知CPU接收到一个字符。 3. 波特率的设定 工作在方式1时,其波特率是可变的,波特率的计算公式为:其中,SMOD为PCON寄存器最高位的值,其值为1或0。当定时器1作波特率发生器使用时,选用工作方式2(即自动加载定时初值方式)。选择方式2可以避免通过程序反复装入定时初值所引起的定时误差,使波

14、特率更加稳定。假定计数初值为X,则计数溢出周期为: 溢出率为溢出周期的倒数。则波特率的计算公式为: 实际使用中,波特率是已知的。因此需要根据波特率的计算公式求定时初值X。用户只需要把定时初值设置到定时器1,就能得到所要求的波特率。 4. 应用举例(用方式1实现双机串行通信) (1)通信双方的硬件连接作为应用系统首先要研究通信双方如何连接。一种办法是把两片8051的串行口直接相连,一片8051的TXD与另一片的RXD相连,RXD与另一片的TXD相连,地与地连通。由于8051串行口的输出是TTL电平,两片相连所允许的距离极短。 (2)通信双方的软件约定通信双方除了在硬件上进行连接外,在软件还必须作

15、如下约定:作为发送方,必须知道什么时候发送信息,发什么,对方是否收到,收到的内容有没有错误,要不要重发,怎样通知对方结束。作为接收一方,必须知道对方是否发送了信息,发的是什么,收到的信息是否有错误,如果有错误怎样通知对方重发,怎样判断结束等等。这些规定必须在编程之前确定下来。为实现双机通信,我们规定如下:l 假定A机为发送机,B机为接收机。l 当A机发送时,先送一个“AA”信号,B机收到后回答一个“BB”信号,表示同意接收。l 当A机接收到“BB”后,开始发送数据,每发送一次求一次“检查和”,假定数据块长16个字节,起始地址为30H,一个数据块发送完后再发出“检查和”。l B机接收的数据并转存

16、到数据区,起始地址也为30H,同时每接收一次也计算一次“检查和”,当一个数据块收齐后,再接收A机发来的“检查和”,并将它与B机的“检查和”进行比较。若两者相等,说明接收正确,B机回答一个00;若两者不相等,说明接收不正确,B机回答一个FF,请求重发。l A机收到00的答复后,结束发送。若收到的答复非0,则重新将数据发送一次。l 双方均以1200波特的速率传送。假设晶振频率为6MHz ,计算定时器1的计数初值: 为使波特率不倍增,设定PCON寄存器的SMOD=0,则PCON00H (3)基本的通信程序 设计程序框图如图9.7所示。 图9.7 双机通信程序结构图根据结构图设计出下述通信程序:A机通

17、信程序:ASTART:MOVTMOD,#20H;设定定时器1工作方式2 MOVTL1,#0F2H;设定计数初值 MOVTH1,#0F2H;计数重装值 MOVPCON,#00H;波特率不倍增 SETBTR1;启动T1 MOVSCON,#50H;设置串行口方式1 ATT1:MOVSBUF, #0AAH;发送“AA” AWAIT1:JBCTI, ARR1;等待一帧发送完 SJMPAWAIT1 ARR1:JBCRI,ARR2;等待应答信号 SJMPARR1 ARR2:MOVA, SBUF XRLA,#0BBH JNZATT1;判断是否是应答信号“00” ATT2:MOVR0, #30H MOVR7,#

18、10 MOVR6,#00H ATT3:MOVSBUF, R0 MOVA,R6 ADDA,R0 MOVR6,A INCR0 AWAIT2:JBCTI,ATT4 SJMPAWAIT2;发送有效数据 ATT4:DJNZR7, ATT3;判断是否传送完毕 MOVSBUF, R6 AWAIT3:JBCTI, ARR3 SJMPAWAIT3 ;等待 ARR3:JBCRI, ARR4 SJMPARR3;等待 ARR4:MOVA, SBUF JNZATT2 AEND:RET B机通信程序: BST ART:MOVTMOD, #20H;设定定时器1工作方式2 MOVTH1,#0F2H;设定计数初值 MOVTL1

19、,#0F2H;计数重装值 MOVPCON,#00H;波特率不倍增 SETBTR1 MOVSCON,#50H BRR1:JBCRI,BRR2 SJMPBRR1;等待 BRR2:MOVA, SBUF;把接收到的数据送入A XRLA,#0AAH;判断接收到数据是否是“AA” JNZBRR1;如果不是继续等待 BTT11:MOVSBUF,0BBH;发送应答信号 BWAIT1:JBCTI, BRR3;等待 SJMPBWAIT1 BRR3:MOVR0, #30H;接收有效数据 MOVR7,#10 MOVR6,#00H BRR4:JBCRI,BRR5 SJMPBRR4 BRR5:MOVA, SBUF MOV

20、R0,A INCR0 ADDA,R6 DJNZR7,BRR4 BWAIT2:JBCRI, BRR6 SJMPBWAIT2 BRR6:MOVA, SBUF XRLA,R6 JZBEND MOVSBUF,#0FFH BWAIT3:JBCTI, BRR3 SJMPBWAIT3 BEND:MOVSBUF, #00H RET 9.3.3 串行工作方式2方式2为11位为一帧的异步串行通信方式。其帧格式为1个起始位、9个数据位和1个停止位。如图9.8所示。 图9.8 方式2的帧格式 在方式2下,字符还是8个数据位,只不过增加了一个第9个数据位(D8),而且其功能由用户确定,是一个可编程位。在发送数据时,应先

21、在SCON的TB8位中把第9个数据位的内容准备好。这可使用如下指令完成:SETB TB8 ;TB8位置“1”CLR TB8 ;TB8位置“0”发送数据(D0D7)由MOV指令向SBUF写入,而D8位的内容则由硬件电路从TB 8中直接送到发送移位器的第九位,并以此来启动串行发送。一个字符帧发送完毕后,将TI位置“1”,其他过程与方式1相同。方式2的接收过程也于方式1基本类似,所不同的只在第9数据位上,串行口把接收到的前8个数据位送入SBUF,而把第九数据位送入RB9. 方式2的波特率时固定的,而且有两种。一种是晶振频率的三十二分之一;另一种是晶振频率的六十四分之一。即fosc/32和fosc/64。如用公式表示则为: 由此公式可知,当SMOD为0时,波特率为fosc/64,当SMOD为1时,波特率为fosc/32。9.3.4 串行工作方式3 方式3同方式2几乎完全一样,只不过方式3的波特率是可变的,有用户来确定。其波特率的确定同方式1。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁