您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机原理与C51程序设计基础教程9
单片机原理与C51语言程序设计基础教程重点内容:串行通信方式简介串口结构介绍MCS-51串口工作方式串行通信接口标准RS-232串口应用实例本章小结第9章串行通信接口单片机原理与C51语言程序设计基础教程一、串行通信方式简介1、串行通信分类按照数据的同步方式,串行通信可以分为同步通信和异步通信两大类。1.异步通信在异步通信中,数据通常以字符为单位组成数据帧进行传送。发送端和接收端由各自的时钟来控制发送和接收。在异步通信中,帧格式一般是由起始位、数据位、校验位、停止位组成,详细介绍如下:(1)起始位:是字符的开始,起始位用“0”以表示数据发送的开始。(2)数据位:紧跟起始位之后,他由5~8位数据组成,低位在前高位在后。(3)奇偶校验位:位于数据位之后,用于保证串行通信的可靠性。(4)停止位:该位是字符的最后一位,用“1”表示,用于向接收端表示一个字符已经发送完毕。在发送数据完毕后发送端信号变成空闲位,为高电平。在数据的发送过程中,两帧数据之间可以有空闲位也可以没有空闲位,可以有一个也可以有多个空闲位。异步通信不需要时钟同步,所需连接设备简单,其缺点是每传送一个字符都包括了起始位、校验位和停止位,故而传送效率比较低。单片机原理与C51语言程序设计基础教程一、串行通信方式简介1、串行通信分类2.同步通信在同步通信方式中一次传送一个数据包,包括同步字符、数据字符和校验字符。其中同步字符位于帧头,用于确认数据字符传送的开始;数据字符位于同步字符后面,数据字符的长度由通信双方决定;校验字符位于数据帧结构的末尾,用于接收端进行数据传送过程中的正确性检验。其中同步字符可以采用统一标准,也可以由通信双方自己确定。例如,在单同步字符帧结构中,同步字符通常采用ASCII码中的SYN(即16H)。同步通信的数据传输速率较高,但是要求发送时钟和接收时钟严格同步,发送端通常把时钟脉冲同时传送到接收端。单片机原理与C51语言程序设计基础教程一、串行通信方式简介2、数据的传输模式在串行通信中数据是在两个站点上进行传送,按照数据传输的方向性,串行通信可以分为单工、半双工和全双工。1.单工单工就是在通信双方的两个站点中,只能有—端发送一端接收,发送端只能进行数据的发送而不能接收、接收端只能进行接收而不能进行发送。数据的流向只是单方向的。2.半双工在半双工通信中,两个通信站点之间只有一个通信回路,数据或者由站点1发送到站点2,或者由站点2发送到站点1。两个站点之间通信只需要一条通信线。3.全双工在全双工的通信方式中,两个站点之间有两个独立的通信回路,可以同时进行发送和接收数据。单片机原理与C51语言程序设计基础教程一、串行通信方式简介3、波特率波特率是串行通信的重要指标,用于表示数据传输的速度,波特率定义为每秒钟传送的二进制位的比特数。在异步通信中,发送一位数据的时间叫作位周期,用T表示。位周期和波特率互为倒数,比如在波特率为9600的通信中,位周期为1/9600即0.000104s。波特率还和系统的时钟频率有关,串行口的工作频率通常为时钟频率的12分频、16分频或者64分频。国际上还规定了一个标准波特率系列,其常见波特率为600、1200、1800、2400、4800、9600、19200、38400、5600和115200等。单片机原理与C51语言程序设计基础教程二串行通信方式简介1、51单片机串行口的硬件结构1.串行口结构51单片机串行口结构如图9.1所示。5l单片机通过引脚RXD(P3.0)串行数据接收端和引脚TXD(P3.l)串行数据发送端与外界进行通信。由图可知,它主要由两个数据缓冲寄存器器SBUF和一个输入移位寄存器组成,其内部还有一个串行控制寄存器SCON和一个波特率发生器(由T1或内部时钟及分频器组成)。在进行通信时,外界的串行数据是通过对引脚RXD(P3.0)输入的。输入数据先逐位进入输入移位寄存器,再送入接收SBUF。在此采用了双缓冲结构,这是为了避免在接收到第二帧数据之前,CPU未及时响应接收器的前一帧中断请求把前一帧数据读走,而造成两帧数据重叠的错误。对于发送器,因为发送时CPU是主动的,不会产生写重叠问题,一般不需要双缓冲器结构,以保持最大传送速率,因此,仅用了SBUF一个缓冲器。图中,TI和RI为发送和接受的中断标志,无论哪个为“1”,只要中断允许,都会引起中断。单片机原理与C51语言程序设计基础教程二串行通信方式简介1、51单片机串行口的硬件结构单片机原理与C51语言程序设计基础教程二串行通信方式简介1、51单片机串行口的硬件结构2.工作原理设有两个单片机串行通信,甲机为发送,乙机为接收,为说明发送和接受过程,以图9.2为例说明。串行通信中,甲机CPU向SBUF写入数据(MOVSBUF,A),就启动了发送过程,A中的并行数据送入了SBUF,在发送控制器的控制下,按设定的波特率,每来一个移位时钟,数据移出一位,由低位到高位一位一位移位发送到电缆线上,移出的数据位通过电缆线直达乙机,乙机按设定的波特率,每来一个移位时钟移入移位,由低位到高位一位一位移入到SBUF;一个移出,一个移进,显然,如果两边的移位速度一致,甲移出的正好被乙移进,就能完成数据的正确传递;如果不一致,必然会造成数据位的丢失。因此,两边的波特率必须一致。单片机原理与C51语言程序设计基础教程二串行通信方式简介1、51单片机串行口的硬件结构当甲机一帧数据发送完毕(或称发送缓冲器空),硬件置位发送中断标志位(SCON.1),该位可作为查询标志;如果设置允许中断,将引起中断,甲的CPU方可再发送下一帧数据。接收到的乙方,需预先设置位REN(SCON.4)即允许接收,对方的数据按设定的波特率由低位到高位顺序进入乙的移位寄存器;当一帧数据到齐(接收缓冲器满),硬件自动置位接收中断标志RI(SCON.0),该位可以做为查询标志;如设置为允许中断,将引起接收中断,乙的CPU方可通过读SBUF(MOVA,SBUF),将这帧数据读入,从而完成一帧数据的传送。单片机原理与C51语言程序设计基础教程二串行通信方式简介1、51单片机串行口的硬件结构由上面的介绍可以得出下面两点结论:(1)查询方式发送的过程:发送一个数据→查询TI→发送下一个数据(先发后查);查询方式接收的过程:查询RI→读入一个数据→查询RI→读下一个数据(先查后收)。以上过程将体现在编程中。(2)无论是单片机之间还是单片机和PC之间,串行通信双发的波特率必须相同。3.波特率的设定在串行通信中,收发双方对发送和接收数据的速率(即波特率)要有一定的约定,51单片机的波特率发生器的时钟来源有两种:一是来自于系统时钟的分频钟,由于系统时钟的频率是固定的,所以此种方式的波特率是固定的;另一种是由定时器T1提供,波特率由T1工作于定时方式2(8位自动重载方式)。波特率是否提高一倍由PCON的SMOD值确定,SMOD=1时波特率加倍。串行口的工作方式中,方式0和方式2采用固定波特率,方式1和方式2采用可变波特率,这些内容将在介绍串口工作方式的时候详细介绍。单片机原理与C51语言程序设计基础教程二串行通信方式简介2、数据缓冲寄存器SBUFSBUF数据缓冲寄存器是一个可以直接寻址的串行口专用寄存器,如图9.3所示,接收与发送缓冲寄存器(SBUF)占用同一个地址99H,其名称也同样为SBUF。CPU与SBUF操作,一方面修改发送寄存器,同时启动数据串行发送;读SBUF操作,就是读接收寄存器,完成数据的接受。从图中可看出,接收缓冲器前还加上一级输入移位寄存器,51系列单片机的这种结构目的在于接收数据时避免发生数据帧重叠现象,以避免出错,这种结构称为双缓冲器结构。而发送数据时就不需要这样的结构,因为发送时,CPU是主动的,不会出现这种现象。单片机原理与C51语言程序设计基础教程二串行通信方式简介3、串行口控制寄存器SCON串行口控制寄存器SCON用于存放串行口的控制和状态信息,其单元地址为98H,为地址为98H~9FH,具有位寻址功能。SCON每一位的定义见表9-1。单片机原理与C51语言程序设计基础教程二串行通信方式简介3、串行口控制寄存器SCON第6、7位是串行口工作方式选择位,串行口共有四个工作方式,各位的状态对应的工作方式见表9-2。单片机原理与C51语言程序设计基础教程二串行通信方式简介4、特殊功能寄存器PCON串行口借用了电源控制寄存器PCON的D7位SMOD作为串行口波特率系数控制位(见表9-3),PCON不可位寻址,直接地址为87H。当SMOD被置为1,且串口工作在模式1、3时,波特率提高1倍波特率加倍。单片机原理与C51语言程序设计基础教程三MCS-51串口工作方式1、方式0方式0是同步移位寄存器输入/输出方式,常用做串行I/O扩展,具有固定的波特率:fosc/12。同步发送或接收,由TXD提供移位脉冲,RXD用做数据输入/输出通道。发送或接收的是8位数据,低位在先,高位在后。首先从写SBUF寄存器开始,启动发送操作。TXD输出移位脉冲,RXD同步串行发送SBUF中的数据。每个机器周期TXD发送一个移位脉冲,每个移位脉冲RXD发送一位数据。发送完8位数据后自动置位TI,请求中断。在RI=0的条件下,置REN=1后,启动一帧数据的接收,由TXD输出移位脉冲,由RXD接收串行数据到SBUF中。每个机器周期TXD发送一个移位脉冲,每个移位脉冲期间RXD接收一位数据,接收一帧数据结束后自动置位RI=1,请求中断。在继续接收下一帧之前,要将上一帧数据取走。该方式多用于接口的扩展,也可以用于短距离的单片机的通信。单片机原理与C51语言程序设计基础教程三MCS-51串口工作方式2、方式1方式1是10位异步通信方式,1位起始位(0),8位数据位,1位停止位(1);可变波特率,由T1的溢出率决定。执行一条以SBUF为目的的寄存器指令后,数据送往发送缓冲器SBUF,SBUF中的数据从TXD端向外发送,在发送数据前先发一位起始位,然后紧跟8位数据位,再发一位停止位,发送完一帧数据后置位T1=1,请求中断。当置位REN时,串行口采样RXD引脚。当采样到1至0的跳变时,确认串行数据帧的起始位,开始接收一帧数据,直到停止位到来时,把停止位送入RB8中,置位RI=1,请求中断,通知CPU从SBUF中取走接收到的数据。单片机原理与C51语言程序设计基础教程三MCS-51串口工作方式3、方式2和方式3方式2和方式3具有多机通信功能,两种方式除了波特率设置不同外,其余完全相同。帧结构为11位,包括1位起始位0,8位数据位,1位校验位TB8/RB8和1位停止位;在方式2中,波特率固定为fosc/64或fosc/32,由PCON寄存器中的SMOD位选择。SMOD=1时,波特率为fosc/32;SMOD=0时,波特率为fosc/64。在方式3中,波特率取决于T1的溢出率。发送数据前,由指令设置TB8(例如作为奇偶校验位或地址/数据标志位),将要发送的数据写入SBUF后启动发送操作。内部逻辑会把TB8装入发送移位寄存器的第9位位置,随8位的数据之后发送出去,发送结束后置位TI。多机通信中,发送时用TB8作地址/数据标识,TB8=1时为地址帧,TB8=0时为数据帧。当置位REN位时,启动接收操作。数据送入移位寄存器,收到的第9位数据RB8,对所接收的数据视SM2和RB8的状态决定是否使RI置1,请求中断。当SM2=0时,不论RB8为何状态,均置位RI,接收数据。当SM2=1时,为多机通信方式,接收到的RB8为地址/数据标识位。当RB8=1时,接收到数据为地址帧,置位RI,接收数据;当RB8=0时,收到数据为数据帧。若SM2=1,RI不置位,丢弃此帧,若SM2=0,则SBUF接收发送来的数据。单片机原理与C51语言程序设计基础教程三MCS-51串口工作方式4、各方式下波特率的计算当T1作为串行口的波特率发生器时,串行口方式1或方式3的波物率由下式确定:波特率=2SMOD×(T1溢出率)/32由于方式2具有自动装载的功能,一般T1选择方式2,此时波特
本文标题:单片机原理与C51程序设计基础教程9
链接地址:https://www.777doc.com/doc-4026578 .html