单片机--串行口.doc

上传人:飞****2 文档编号:54337944 上传时间:2022-10-28 格式:DOC 页数:23 大小:4.24MB
返回 下载 相关 举报
单片机--串行口.doc_第1页
第1页 / 共23页
单片机--串行口.doc_第2页
第2页 / 共23页
点击查看更多>>
资源描述

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

1、第十章 MCS51串行通信接口技术微机联网: 单片机与单片机;单片机与其他微机之间实现信息共享;典型的计算机测量与控制系统构成:一个典型集散式(DCS)控制系统的构成10.1 串行通信基础数据通信方式:并行通信与串行通信并行通信:一次传输8(16、32Bit)8根数据线,1根控制线,1根状态线,地线,共11根; 特点:速度快,适合近距离传输 计算机并口,打印机,8255 串行通信: 数据一位一位地发送 ,一根发送线,一根接受线,地线,共3根特点:硬件方便,适合距离远,速度要求不高的场合分类:同步串行通信和异步串行通信一、 异步通信:串行通信就是将并行的数据分开后,一位一位地发送出去,接收方也是

2、一位一位地接收数据,这就需要通信的双方有一个协议,什么时候开始发送,什么时候发送完毕;接收方收到的信息是否正确等,而这些信息只能以电平的高低来表示,构成这些位的数据称为一帧。异步串行通信规定了传输数据的结构即帧格式:起始位 数据位 奇偶校验位 停止位 1 起始位:在数据发送线上规定无数据时电平为1,当要发送数据时,首先发送一个低电平0,表示数据传送的开始,这就是起始位。2 数据位:真正要传送的数据,可以是8位、10位等多位,数据位是由地位开始,高位结束;3 奇偶校验:数据发送完后,发送奇偶校验位,以检验数据传送的正确性,这中方法是有限的,但是容易实现。4 停止位:表示数据传送的结束,可以是一位

3、或两位。帧格式: 二、 同步通信同步通信先发送一个字符,作为同步字符,之后便连续发送数据,数据之间不能有间隔,直到数据发送完毕。速度要比异步通信快通用异步接受/发送器(UNIVERSAL ASYNCHRONOUS RECEIVER/TRANSMITTER):UART:8250 6850 三、 单工、半双工、全双工通信方式按通信进行的过程,分为:单工、半双工、全双工通信方式1 单工方式一端是发送端,另外一端是接收端:接收器发送器2 半双工发式每端口由一个发送器和接收器,通过开关连接在线路上,数据可以双方交换,但不能同时发送和接收.接收器发送器发送器接收器 3. 全双工方式发送器接收器接收器发送器

4、 通信双方用两个独立的收发器单独连接,可以同时发送和接收数据,因而提高了速度。4 波特率单位时间内传送的信息量。以每秒传送的位为单位:电传机:10字符/秒,1个字符11位, 波特率位:1011=110(波特)位宽:传送过程中平均每位占用时间 Td = 9.1ms(1/110)10.2串行通信总线标准及接口在测控系统中,计算机通信主要采用异步串行通信方式,常用的异步串行通信接口标准有三种:RS-232(RS-232A RS-232B RS-232C)RS-449 (RS422 RS423 RS485)20mA电流环一、 通信方式的选取1 通信速率和通信距离 这两个方面是相互制约的,降低通信速率,

5、可以提高通信距离 RS-232C:速率:20Kbit/S,最大通信距离:15m RS422: 10Mbit/s, :300m 90Kbit/s, :1200m2 抗干扰能力 采用标准的通信接口,本身具有一定的抗干扰能力,但是工业现场的情况往往很恶劣,因而要根据具体情况进行选择。 RS232C:一般场合 RS422: 共模信号比较强 光纤: 电磁干扰较强二、 RS232C简介美国电子工业协会(EIA)公布的一种异步通信标准:RS232C标准:设备之间通信的距离不大于15米最大传输速率20KB/S采用负逻辑:“1” 5V 15V “0” +5V + 15V不带负载时输出电平:25V +25V输出短

6、路电流: 0.5A最大负载电容: 2500pF TTL电平可以由专用集成电路转换成RS232C标准; 如: MC1488 或 75188 TTL RS232CMC1489 或 75189 RS232C TTL +12V +5VMC1489 MC1488 TTL TTL 12V 由于MC1488需要采用12V电源,一般在单片机通信中大量使用的是只需要+5V电源、具有发送和接收的一体化芯片,如:MAX232、ICL232、ADM202等。 MAX232芯片及接口内部有两路接收器和发送器具有电源变换电路 C5 VCC C3 C1+ V+ +5V 至 +10V (倍压器) C1- C2+ V- +10

7、V 至 10V (电压反向器) C2- +10V C1 10V C2 C4 T1 T1int 11 14 T1out T1 T2int 10 7 T2out R1 R1out 12 13 R1in R2 R2out 9 8 R2int MAX232原理图 电源变换电路:C1,C2,C3,C4,V+,V;MCS51 RXDTXDGNDMAX232MCS51 TXD RXD GNDMAX232 T1in T1out R1out R1in MCS51双机通信(利用MAX232)三、 调制与解调RS232C通信距离很短,RS422通信距离不过1200米;更长距离需采用调制与解调。10.3 MCS-51

8、的串行口的结构8051有一个可编程的全双工串行通信接口,它可作UART用,也可作同步移位寄存器,其帧格式可有8位、10位或ll位,并能设置各种波特率,给使用者带来很大的灵活性。一、结 构805l通过引脚RXD(P30,串行数据接收端)和引脚TXD(P3.l,串行数据发送端)与外界进行通信。其内部结构简化示意图如图所示。串行口内部结构示意图图中有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H,可同时发送、接收数据。发送缓冲器只能写入,不能读出,接收缓冲器只能读出、不能写入。 串行发送与接收的速率与移位时钟同步。8051用定时器T1作为串行通信的波特率发生器,T1溢出率经2分频(

9、或不分频)又经16分频作为串行发送或接收的移位脉冲。移位脉冲的速率即是波特率。 从图中可看出,接收器是双缓冲结构,在前个字节被从接收缓冲器SBUF读出之前,第二个字节即开始被接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前个字节CPU未读取时会丢失前一个字节。 串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的,当向SBUF发“写”命令时(执行MOV SBUF,A指令),即是向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI1。 在满足串行口接收中断标志位RISCON00的条件下,置允许接收位REN(SCON4)1就会启动接收一帧

10、数据进入输入移位寄存器,并装载到接收SBUF中,同时使RIl。当发读SBUF命令时(执行MOV A,SBUF指令),即是由接收缓冲器(SBUF)取出信息通过8051内部总线送CPU。对于发送缓冲器,因为发送时CPU是主动的,不会发生重迭错误,所以不需要用双缓冲结构来保持最大传送速率。二、串行口控制字及控制寄存器8051串行口是一个可编程接口,对它的编程只用两个控制字分别写入特殊功能寄存器:串行口控制寄存器SCON(98H)和电源控制寄存器PCON(97H)个即可。 1SCON(98H)8051串行通信的方式选择、接收和发送控制以及串行口的状态标志等均由特殊功能寄存器SCON控制和指示。其控制字

11、格式如图所示:SCOND7 D6 D5 D4 D3 D2 D1 D0 98HSM0SM1SM2RENTB8RB8TIRI (1) SM0和SMl 串行口工作方式选择位。两个选择位对应4种通信方式(见表2),其个fosc是振荡频率。表2 串行口的工作方式SM0SM1工作方式 说 明 波 特 率00方式0同步移位寄存器 fosc/201方式110位异步收发由定时器1控制10方式211位异步收发fosc/32或fosc/6411方式311位异步收发由定时器1控制 (2) SM2 多机通信控制位,主要用于方式2和方式3。若置SM21,则允许多机通信。多机通信协议规定,第9位数据(D8)为l,说明本帧数

12、据为地址帧;若第9位为0,则本帧为数据帧。当一个8051(主机)与多个8051(从机)通信时,所有从机的SM2位都置1。主机首先发送的一帧数据为地址,即某从机机号,其中第9位为1、被寻地址的某个从机接收到数据后,将其中第9位装入RB8。从机依据收到的第9位数据(RR8个)的值来决定从机可否再接收主机的信息,若(RB8)0,说明是数据帧,则使接收中断标志位RI0,信息丢失;若RB81,说明是地址帧,数据装入SBUF并置RI1,中断所有从机被寻址的目标从机清除SM2以接收主机发来的一帧数据。其他从机仍然保持SM21。 若SM20,即不属于多机通信情况,则接收一帧数据后不管第9位数据是0还是1都置R

13、Il,接收到的数据装入SBUF中。 根据SM2这个功能,可实现多个8051应用系统的串行通信。 在方式1时,若SM21,则只有接收到有效停止位时,RI才置1,以便接受下一帧数据。 在方式0时,SM2必须是0 。 (3) REN 允许接收控制位。由软件置1或清0,只有当RENl时才允许接收,相当于串行接收的开关;若REN0、则禁止接收。 在串行通信接收控制程序中,如果满足RI0,置位REN1(允许接收)的条件,就会启动一次接收过程,一帧数据就装载入接收SBUF中。 (4) TB8 发送数据的第9位(D8)装入TB8中。在方式2或方式3中根据发送数据的需要由软件置位或复位。在许多通信协议中可作奇偶

14、校验位,也可在多机通信中作为发送地址帧或数据帧的标志位。对于后者TB81,说明发送该帧数据为地址;TE80,说明发送该帧数据为数据。在方式0和方式1中,该位末用。 (5) RB8 接收数据的第9位。在方式2或方式3中、接收到的第9位数据放在RB8位。它或是约定的奇偶校验位,或是约定的地址数据标识位,在方式2和3多机通信中,若SM21,如果RB8l,说明收到的数据为地址帧。 在方式1中,若SM20(即不是多机通信情况),RB8中存放的是已接收到的停止位。 在方式0中,该位末用。 (6) TI 发送中断标志。在一帧数据发送完时被置位。在方式0串行发送第8位结束时,或其它方式串行发送到停止位的开始时

15、由硬件置位,可用软件查询。它同时也申请中断,TI置位意味着向CPU提供“发送缓冲器SBUF已空”的信息,CPU可以准备发送下一帧数据。串行口发送中断被响应后,TI不会自动复0,必须由软件清0。 (7)RI 接收中断标志。 在接收到一帧有效数据后由硬件置位。在方式0中,第8位数据发送结束时,由硬件置位;在其它三种方式下,则在接收到停止位中间时由硬件置位。RI1,中请中断。表示一帧数据接收结束,并已装入接收SBUF中,要求CPU取走数据。CPU响应中断,取走数据。RI也必须内软件清0,解除中断申请,并准备接收下一帧数据。 串行发送中断标志TI和接收中断标志RI是同一个中断源,CPU事先不知道是发送

16、中断TI还是接收中断RI产生的中断请求,所以在全双工通信时,必须由软件来判别。 复位时,SCON所有位均清0 。 2PCON(87H) 电源控制寄存器PCON中只有一位SMOD与串行口工作有关,如图所示:PCON D787HSMOD 电源控制寄存器 SMOD 波特率倍增位。在串行口方式1、方式2和方式3时,波特率和2SMOD成正比;即当SMOD1时,波特率提高一倍。复位时,SMOD0。三、串行通信工作方式 根据实际需要,805l串行口可设置为四种工作方式;可有8位,10位和11位帧格式。方式0以8位数据为一帧、不设起始位和停止位,先发送或接收最低位。其帧格式如下:D0D1D2D3D4D5D6D

17、7方式1以10位数据为一帧,设有一个起始位“0”和一个停止位“1”,中间是8位数据。先发送或接收最低位。其帧格式如下:0D0D1D2D3D4D5D6D71方式2和3以11位为1帧传输,设有1个起始位“0”,8个数据位,1个附加第九位和1个停止位“1”,其帧格式为:0D0D1D2D3D4D5D6D7D81附加第九位(D8)由软件置l或清0。发送时在TB8中,接收时送RB8中。 1.串行口方式0方式0为同步移位寄存器输入输出方式,常用于扩展IO口。串行数据通过RxD输入或输出,而TxD用于输出移位时钟,作为外接部件的同步信号,如图为发送电路及时序:这种方式不适用于两个8051之间的直接数据通信,但

18、可以通过外接移位寄存器来实现单片机的接口扩展。例如,采用74Lsl64可用于扩展并行输出口,74Ls165可用于扩展输入口。在这种方式下,收发的数据为8位,低位在前,无起始位、奇偶位及停止位,波特率固定为振荡器频率fosc的l12,即: 方式0波特率fosc/12 例如,当晶体振荡频率为12MHz时,则波待率为1Mbs。发送过程中,当执行一个数据写入发送缓冲器SBUF(99H)的指令时,串行口把SBUF中8位数据以fosc12的波待率从RxD(P30)端输出,发送完毕置中断标志TI1,方式0发送时序如图所示.写SBUF指令在S6P1处产生个正脉冲,在下一个机器周期的S6P2处数据的最低位输出到

19、RxD(P30)脚上;在再下一个机器周期的S3、S4、S5输出移位时钟为低电平,而在S6及下一个机器周期的S1、S2为高电平,就这样将8位数据由低位至高位一位一位顺序通过RxD线输出,并在TxD脚上输出fosc12的移位时钟。在写SBUF”有效后的第10机器周期的SlPl将发送中断标志TI置位。图中74Ls164是TTL“串入并出”移位寄存器。接收时,用软件置REN1(同时RI0),即开始接收。接收时序如图所示:当使SCON中的REN1(RI0)时,产生一个正的脉冲,在下个机器周期的S3P1S5P2从TxD(P31)脚上输出低电平的移位时钟,在此机器周期的S5P2对P30脚采样,并在本机器周期

20、的S6P2通过串行口内的输入移位寄存器将采样值移位接收;在同一个机器周期的S6P1到下一个机器周期的S2P2,输出移位时钟为高电平。于是,将数据字节从低位至高位一位一位地接收下来并装入SBUF中,在启动接收过程(即清RI位)将SCON中的RI清0之后的第10个机器周期的S1Pl,RI被置位。这一帧数据接收完毕,可进行下帧接收。 2串行口方式1方式1真正用于实行发送或接收,为10位通用异步接口。TxD与RxD分别用于发送与接收数据,收发一帧数据的格式为:1位起始位、8使数据位(低位在前)、1位停止位,共10位。在接收时停止位进入SC0N的RD8,此方式的传送波特率可调。 串行口方式1的发送和接收

21、时序如图所示: 方式1发送时,数据从引脚TxD端输出,当执行数据写入发送缓冲器SBUF的命令时就启动了发送器开始发送。发送时的定时信号,也就是发送移位时钟(TX时钟),是内部定时器T1送来的溢出信号经过16分频或32分频(取决SMOD的值)而取得的。TX时钟就是发送波特率,可见方式1波特率是可变的。发送开始的同时,SEND变为有效,将起始位向TxD输出,此后每过个TX时钟周期(16分频计数器溢出一次为一个时钟周期,因此,Tx时钟频率由波待率决定)产生一个移位脉冲,并由TXD输出一个数据位,8位数据位全部发送完后,置位TI,并申请中断。再经一个时钟周期SEND失效。 方式1接收时,数据从引脚RX

22、D端输入。接收是在SCON寄存器中REN位置1的前提下,并检测到起始位(RxD上检测到“1”“0”的跳变,即起始位)而开始的。接收时,定时信号有两种:一种是接收移位时钟(RX时钟),它的频率和传送波特率相同,也是由定时器T1的溢出信号经过16或32分频而得到的;另一种是位检测器采样脉冲,它的频率是RX时钟的16倍,亦即在一位数据的期间有16位检测器采样脉冲,为完成检测,以16倍于波特宰的速率对RXD进行采样。为了接收准确无误,在正式接收数据之前,还必须判定这个“l”“0”跳变是否是干扰引起的。为此,在这位中间(即一位时间分成16等份,在第7、8及9等份)连续对RxD采样三次,取其中两次相同的值

23、进行判断所检测的值。这样能较好地消除干扰的影响。当确认是真正的起始位“0”后,就开始接收一帧数据。当一帧数据接收完毕后,必须同时满足以下两个条件、这次接收才真正有效。 RI0,即上一帧数据接收完成时,RI1发出的中断请求已被响应,SBUF中数据已被取走。由软件使RI0,以便提供“接收SBUF已空”的信息。 SM20或收到的停止位为1(方式1时停止位进入RB8),则将接收到的数据装入串行口的SBUF和RB8(RB8装入停止位),并置位RI;如果不满足接收到的数据不能装入SBUF,这意味着该帧信息将会丢失。值得注意的是:在整个接收过程中,保证RENl是一个先决条件。只有当REN1,才能对RXD进行

24、检测。 3串行口方式2和方式3 串行口工作在方式2和方式3均为每帧11位异步通信格式,由TxD和RXD发送与接收(两种方式操作是完全一样的,所不同的只是特波率)。每帧11位;l位起始位,8位数据位(低位在前),1位可编程的第9数据位和1位停止位。发送时,第9数据位(TB8)可以设置为1或0,也可将奇偶位装入TB8,从而进行奇偶校验;接收时,第9数据位进入SCON的RB8。方式2和方式3的发送、接收时序如图所示。其操作与方式1类似。 发送前,先根据通信协议由软件设置TB8(如作奇偶校验位或地址数据标志位),然后将要发送的数据写入SBUF,即能启动发送过程。串行口能自动把TB8取出,并装入列第9位

25、数据的位置,再逐一发送出去。发送完毕,使TIl。接收时,使SCON中的REN1,允许接收。当检测到RXD端有“1”到“0”的跳变(起始位)时开始接收9位数据,送入移位寄存器(9垃)。半满足RI0且SM20或接收到的第9位数据为1时,前8位数据送入SBUF,附加的第9位数据送入SCON中的RB8,置RI为1;否则,这次接收无效。 四、波特率设计 在串行通信中,收发双方对发送或接收的数据速率要有一定的约定,我们通过软件对SC0N串行口编程可约定四种工作方式。其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器Tl的溢出率来决定。 串行口的四种工作方式对应三种波特率。由于输

26、入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不同。 1方式0的波特率 方式0波特率fosc12 2方式2的波特率串行口方式2波特率的产生与方式0不同,即输入的时钟源不同,其时钟输入部分见图所示:控制接收与发送的移位时钟由振荡频率fosc的P2时钟(即fosc2)给出,所以,方式2波特率取决于PCON中SMOD位的值:当SMOD0时,波特率为fosc的六十四分之一;若SMOD1,则波特率为fosc的三十二分之一。即 方式2的波特率2SMODfosc64 3方式1和方式3的波特率 方式1和方式3的移位时钟脉冲由定时器T1的溢出率决定,因此8051串行口方式1和方式3的波特率由定时器T1

27、的溢出率与SMOD值同时决定。 方式1、3波特率T1的溢出率/n当SMOD0时,n32;SMOD=1时n=16。所以,可用下式确定方式1、3的波特率 方式1、3波特率(T1溢出速率)其中,T1溢出速率取决于T1的计数速率(计数速率fosc12)和T1预置的初值。T1采用模式1时,波特率公式如下: 串行方式1、3波持率216一初值 定时器T1作波特率发生器使用时,通常选用定时器模式2(自动重装初值定时器)比较实用。要设置定时器T1为定时方式(使C/T0),让T1计数内部振荡脉冲,即计数速率为fosc12(注意应禁止T1中断,以免溢出而产生不必要的中断)。先设定THl和TLl定时计数初值为x,那么

28、每过“28X”个机器周期,定时器T1就会产生一次溢出。因此T1溢出速率为:T1溢出速率(256 X)串行方式1、3波持率 由此可以计算定时器T1模式2下的初值。 例:805l单片机时钟振荡频率为110592MHz,选用定时器T1模式2作波特率发生器,波持率为2400波特求初值。 解:设置波特率控制位(SMOD)= 0 2400 2400 = 所以: (TH1)(TL1) F4H 系统晶体振荡频率选为110592MHz就是为了使初值为整数,从而产生精确的波特率。 如果串行通信选用很低的波特率,可将定时器T1置于模式0或模式1,即13位或16位定时方式;但在这种情况下,T1溢出时,需用中断服务程序重装初值,中断响应时间和执行指令时间会使波特率产生一定的误差,可用改变初值的办法加以调整。

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

当前位置:首页 > 教育专区 > 教案示例

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

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