第6章 串行接口(课件)- 《单片机技术及应用》同步教学(西安科大版)
2024-07-10
|
50页
|
38人阅读
|
1人下载
普通
内容正文:
第6章 MCS-51单片机的串行接口
主要内容
MCS-51单片机片内集成了一个全双工通用异步串行口(Universal Asynchronous Receive/Transmitter,UART)。MCS-51单片机与外部设备进行通信有两种方式:并行通信和串行通信。当采用串行通信的方式进行通信时,便需要通过串行口来实现。
所谓全双工通用异步串行口,就是说该口可以同时进行接收数据和发送数据,由于其内部的接收缓冲器和发送缓冲器都是完全独立的。
wyx
6.1 串行通信概述
2024/7/10
第6章 MCS-51单片机的串行接口
6.1.1 计算机通信的两种方式
随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是将计算机技术与通信技术相结合,实现计算机与外部设备或计算机与计算机之间的信息的交换。计算机通信有两种方式:并行通信和串行通信。
并行通信是将数据字节的各位用多条数据线同时进行传送,其收发设备连接线路如图6-1所示。
wyx
2
从图6-1中可以看到,在进行并行通信时,需要传送的数据位有多少位,就需要多少根数据线。同时,除了数据位以外还需要两根通信联络控制线:询问线和应答线。在发送数据前,发送设备需要向接收设备发送询问信号:是否准备就绪;当数据接收到后,接收设备同样需要向发送设备发送应答信号:已经接收完成。
并行通信的特点:控制简单,传输速度快。但是由于传输线路比较多,当进行远距离传输时成本较高、线路较复杂、容易出现错误。适用于近距离、传送速度高的场合。
当传输的距离大于30m时,一般情况选择串行通信。串行通信是将数据字节一位一位的形式在一条传输线上逐个的传送。其收发设备连接线路如图6-2所示。
2024/7/10
3
第6章 MCS-51单片机的串行接口
wyx
2024/7/10
4
第6章 MCS-51单片机的串行接口
在进行串行通信中,数据发送设备先将需要发送的数据由并行形式转换为串行形式,然后再一位一位地放在传输线上顺序传送。在接收设备上,又将接收到的串行形式数据转换成并行形式。
串行通信具有控制较复杂、传输速度慢等缺点,但其传输线路少、抗干扰能力强、成本低,适合长距离传送。
wyx
对于串行通信,数据信息和控制信息都是通过一条线上进行传送。根据发送设备和接收设备时钟的配置方式可以把串行通信分为:异步通信和同步通信。
(1) 异步通信
异步通信是指发送设备和接收设备在使用的过程中是使用各自的时钟控制发送和接收过程。为使双方能够收发协调,要求发送设备和接收设备的时钟频率尽可能一致。
异步通信是以字符(构成的帧)为单位进行传送,字符与字符之间的间隙(时间间隔)是任意的,但是每个字符中的各位是以固定的时间间隔进行传送。通过使传送的每一个字符都以起始位“0”开始,以停止位“1”结束从而让发送设备和接收设备能够在收发数据上尽可能的实现同步(误差在允许的 范围内)。异步通信的帧格式如图6-3所示。
2024/7/10
5
6.1.2串行通信的基本概念
第6章 MCS-51单片机的串行接口
1 串行通信的方式
wyx
从上图可以看出,异步通信的每一帧数据由四个部分组成:起始位(1位)、数据位(5-8位)、奇偶校验位(1位,也可以没有校验位)、停止位(1位)。图中所示的是由1位起始位、6位数据位、1位奇偶校验位、1位停止位,总共9位组成了一个传输的字符。
数据进行传送时需要满足低位在前、高位在后。字符之间允许有不定长度的空闲位。在发送间隙,即空闲时,通信线路总是处于逻辑“1”状态。当检测到起始位“0”时,便告诉接收设备传送字符开始了,后面就是数据位和奇偶校验位,最后检测到停止位“1”,表示一个字符已经接收完毕。
2024/7/10
6
第6章 MCS-51单片机的串行接口
wyx
2024/7/10
7
第6章 MCS-51单片机的串行接口
异步通信的特点:不要求收放双方时钟的严格一致,易于实现,但是每个字符都要求有起始位和停止位,并且字符和字符间有空闲位,传输效率不高。
(2) 同步通信
同步通信要求收发双方具有同频同相的同步时钟信号,只需在传送数据的最前面附加特定的同步字符,使发收双方建立同步,此后便在同步时钟的控制下逐位发送或接收。同步通信的格式如图6-4所示。
wyx
7
为了表示数据传输的开始,发送设备先发送一个或两个特殊字符,该字符称为同步字符。当发送设备和接收设备达到同步后,就可以一个字符接一个字符地发送一大块数据,而不再需要用起始位和停止位了,这样可以明显地提高数据的传输速率。
采用同步方式传送数据时,在发送过程中,收发双方还必须用一个时钟进行协调,用于确定串行传输中每一位的位置。接收数据时,接收设备可利用同步字符使内部时钟与发送设备保持同步,然后将同步字符后面的数据逐位移入,并转换成并行格式,供CPU读取,直至收到结束符为止。
8
第6章 MCS-51单片机的串行接口
wyx
串行通信根据数据传输的方向和时间关系可以分为:单工、半双工和全双工。如图6-5所示。
单工:是指数据传输仅能沿一个方向,不能实现反向传输,如图6-5(a)所示;
半双工:是指数据传输可以沿两个方向,但是要分时进行,如图6-5(b)所示;
全双工:是指数据传输可以同时进行双向传输,如图6-5(c)所示。
2024/7/10
9
2 串行通信的传输方向
第6章 MCS-51单片机的串行接口
wyx
在通信过程中,往往需要对传送的数据是否正确进行校验。常用的校验方法有奇偶校验以及代码和校验。
(1) 奇偶校验
在传送的数据中,数据位尾随的1位为奇偶校验位。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数应为偶数。接收字符时,对“1”的个数进行校验,若发现与约定的不一致,则说明传送数据过程中出现了差错。
(2)代码和校验
代码和校验是发送设备将所发数据块求和(或各字节异或),产生一个字节的校验字符附加到数据块末尾。接收方接收数据同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送设备的“校验字符”进行比较,相符则无差错,否则即认为传送过程中出现了差错。
2024/7/10
10
第6章 MCS-51单片机的串行接口
3 串行通信中的错误校验
wyx
2024/7/10
11
第6章 MCS-51单片机的串行接口
4.波特率
波特率(也称为比特率)是指单位时间内传送的信息量,即每秒钟传送的二进制位数,单位是位/秒,即bit/s(bps)。波特率越高,传送速度也就越快。字符的传输速率是指每秒钟内所传送的字符帧数,与字符的格式息息相关。常见标准的波特率是:110bit/s、300bit/s、600bit/s、1200bit/s、2400bit/s、4800bit/s、9600bit/s等。
例如,在异步通信中,字符中包括1位起始位、7位数据位、1位奇偶校验位、1位停止位,要求数据传送的速率是每秒30个字符,那么传送的波特率为300bps。
5. 串行通信中的协议
通信协议就是单片机之间进行信息传送之前的一些约定,约定的内容大致包括:数据格式、同步方式、波特率、校验方式等。
wyx
采用标准接口,可以方便地把计算机、外围设备和测量仪器等有机地联系起来,并且能够实现其间的通信。常用的串行通信接口标准有:RS-232C、RS-485、RS-422A等总线接口。
1. RS-232C接口
RS-232C是美国电子工业协会( Electrical Industrial Association,EIA)于1993年提出的串行通信接口标准,主要用于模拟信道传输数字信号的场合。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。
RS-232C采用负逻辑,将-3V~-15V规定为逻辑“1”,+3V ~+15V规定为逻辑“0”,介于-3~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在±(3~15)V之间。最高传输率为19.2Kbps,传输距离一般不超过15米。RS-232C采用标准的DB-25连接器,也可采用DB-9连接器,如图6-6所示:
2024/7/10
12
第6章 MCS-51单片机的串行接口
6.1.3 串行通信中常用的接口标准
wyx
2024/7/10
13
第6章 MCS-51单片机的串行接口
采用RS-232C接口存在的问题:传输距离短,传输速率低;有电平偏移,通信距离较大时,收发双方的地电位差别较大,在信号地上将有较大的地电流并产生压降;抗干扰能力差,其在电平转换时采用单端输入输出,在传输过程中有干扰和噪声混在正常的信号中。
wyx
2. RS-422A接口
RS-422A标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。由于接收器采用高输入阻抗和发送驱动器比RS232C更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接256个节点,即一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422A支持点对多的双向通信。接口示意图如图6-7所示。
从上图可以看出,双向输出有4根线,实际上还有一根信号地线,共5根线。RS-422A输出驱动器为双端平衡驱动器。如果其中一条线为逻辑“1”状态,另一条线就为逻辑“0”,比采用单端不平衡驱动对电压的放大倍数大一倍。差分电路能从地线干扰中获取有效信号,差分接收器可以分辨200mV以上电位差。若传输过程中混入了干扰和噪声,由于差分放大器的作用,可使干扰和噪声相互抵消。因此可以避免或大大减弱地线干扰和电磁干扰的影响。RS-422A传输速率(90Kbps)时,传输距离可达1200米。
RS-422A与RS-232C相比,信号传输距离更远,速度更快。
2024/7/10
14
第6章 MCS-51单片机的串行接口
wyx
2024/7/10
15
第6章 MCS-51单片机的串行接口
3. RS-485接口
RS-485是RS-422A的变型:RS-422A用于全双工,而RS-485则用于半双工。其接口示意图如图6-8所示。
wyx
RS-485是一种多发送器标准,在通信线路上最多可以使用32对差分驱动器或接收器。如果在一个网络中连接的设备超过32个,还可以使用中继器。
RS-485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,很少使用,现在多采用的是两线制接线方式。RS-485的信号传输采用两线间的电压来表示逻辑1和逻辑0,并且采用差分信号负逻辑,+2V~+6V表示“0”,-2V~+6V表示“1”。由于发送设备需要两根传输线,接收设备也需要两根传输线,传输线采用差动信道,所以它的干扰抑制性极好。又因为它的阻抗低,无接地问题,所以传输距离可达1200米,传输速率可达1Mbps。
16
第6章 MCS-51单片机的串行接口
wyx
MCS-51单片机内的串行通信接口是一个全双工通用异步串行口(UART)。还可以作为同步移位寄存器使用,其帧长度可以是8位、10位或11位,通过TXD和RXD两个引脚与外界进行通信。
6.2.1 MCS-51串行口结构
2024/7/10
17
第6章 MCS-51单片机的串行接口
6.2 串行口结构及控制
MCS-51单片机串行口内部结构如图6-9所示。
wyx
从上图可以看出,结构里包含两个物理上独立的发送缓冲器SBUF和接收缓冲器SBUF,两者共用同一地址99H,可以同时进行发送数据和接收数据。CPU通过不同的操作指令来区分两个寄存器,而不会由于同一地址出现混乱。
发送缓冲器SBUF只能写入,不能读出;接收缓冲器SBUF只能读出,不能写入。此时,定时器/计数器T1作为波特率发生器使用,T1的溢出率先进行2分频或不分频再进行16分频得到系统的移位时钟。
串行口的启动由CPU对SBUF进行读或写。当CPU向SBUF发出“读”信号时,执行一条MOV A,SBUF指令,此时接收控制器在接收脉冲的作用下,对RXD引脚进行检测,直到检测到起始位后,就连续接收一帧数据并且自动的去掉起始位,将有效的数据位逐位的移进移位寄存器中,控制接收器将RI置1,通知CPU数据已经移入到移位寄存器中了,再将数据送入接收缓冲器SBUF中,最后再将其送给累加器A中。
当CPU向SBUF发出“写”信号时,执行一条MOV SBUF,A指令,此时CPU将准备好的数据写入发送缓冲器SBUF中,通过TXD引脚发送一帧数据。发送完后,使得发送中断标志位TI置1,通知CPU数据已经发送完毕。
2024/7/10
18
第6章 MCS-51单片机的串行接口
wyx
MCS-51单片机串行口的控制是通过对两个寄存器的编程来实现:串行口控制寄存器SCON和电源选择寄存器PCON。
1.串行口控制寄存器SCON
SCON是一个特殊功能控制器,字节地址为98H,能够进行位寻址(位地址98H-9FH)。SCON是用来设定串行口的工作方式、接收/发送控制位以及设置状态标志位。其格式如图6-10所示。
2024/7/10
19
第6章 MCS-51单片机的串行接口
6.2.2 MCS-51串行口的控制
SM0、SM1:串行口工作方式选择位。根据编码共有四种工作方式可供选择,如表6-1所示。
wyx
SM2:多处理机通信允许位。用于方式2和方式3。
方式0下,SM2=0。
方式1下,SM2=1,此时只有接收到有效的停止位,RI才置1。
方式2和方式3下,SM2=1,允许多机通信,此时接收机处于地址筛选的状态。可以利用接收到的第9位数据(RB8)来对地址进行筛选:当RB8=1时,说明接收到的这一帧数据是地址帧,地址信息可以进入接收数据缓冲器SBUF中,同时使RI=1,从而在中断服务程序中对其与地址号进行比较;当RB8=0时,说明接收到的这一帧数据不是地址帧,直接丢弃,RI仍旧为0。
2024/7/10
20
第6章 MCS-51单片机的串行接口
SM0 SM1 工作方式 说明 波特率
0 0 方式0 8位同步移位寄存器
0 1 方式1 10位UART 可变,T1或T2提供
1 0 方式2 11位UART、可多机 或
1 1 方式3 11位UART、可多机 可变,T1或T2提供
wyx
SM2=0时,不允许进行多机通信。不管接收到的第9位数据(RB8)是0还是1,都可以将数据送入接收数据缓冲器SBUF中,同时使RI=1,一般这种情况总是将第9位数据作为检验位来使用。
REN:允许串行接收位。当REN=1时,允许串行接收;当REN=0时,禁止串行接收。可用软件置位和清0。
TB8:方式2和方式3中发送数据的第9位。可以用作奇偶校验位也可以作为地址帧/数据帧的标志位。方式0和方式1不使用此位。
RB8:方式2和方式3中接收数据的第9位。可以用作奇偶校验位也可以作为地址帧/数据帧的标志位。方式0下,不用RB8(SM2=0);方式1下,也不用RB8(SM2=0,进入RB8的是停止位)。
TI:发送中断标志位。在方式0中,当串行发送第8位数据结束时,或者在其它三种方式下,串行发送停止位时,由硬件使TI位置1,向CPU发出中断申请。在中断服务程序中,必须用软件对其清0,取消中断申请。
RI:接收中断标志位。在方式0中,当串行接收第8位数据结束时,或者在其它三种方式下,串行接收停止位时,由硬件使RI位置1,向CPU发出中断申请。在中断服务程序中,必须用软件对其清0,取消中断申请。
2024/7/10
21
第6章 MCS-51单片机的串行接口
wyx
2. 电源控制寄存器PCON
PCON主要是为单片机的电源控制而设置的专用寄存器,其字节地址为87H,不能进行位寻址,其中只有一位SMOD与串行口有关,格式如图6-11所示。
SMOD:波特率加倍位。当SMOD=0,波特率不加倍;当SMOD=1,波特率加倍。在方式1、方式2、方式3下,波特率与SMOD有关。复位时,SMOD=0。
GF1、GF0:两个通用工作标志位,用户可以自由使用。
PD:掉电模式设定位。当PD=0时,单片机处于正常工作状态;当PD=1时,单片机处于掉电模式,可由外部中断或硬件复位模式唤醒,进入掉电模式后,外部晶振停振,CPU、定时器、串行口全部停止工作,只有外部中断工作。在该模式下,只有硬件复位和上电能够唤醒单片机。
IDL:空闲模式设定位。当IDL=0时,单片机处于正常工作状态;当IDL=1时,单片机进入空闲模式,除CPU不工作外,其余仍继续工作,在空闲模式下可以由任何一个中断或硬件复位唤醒。
2024/7/10
22
第6章 MCS-51单片机的串行接口
wyx
6.3 串行口的工作方式
6.3.1 方式0
当SM0、SM1设置为00时,串行口工作在方式0下,这种方式串行口是作为8位同步移位寄存器,数据传输的波特率固定为fosc/12。数据由RXD引脚输入或输出,同步移位时钟由TXD引脚输出。发送/接收的数据都是8位,数据传输时遵循的原则:低位在前,高位在后。其传输的字符帧格式如图6-12所示:
正如前面已经提到的,MCS-51单片机串行口的工作方式由SM0和SM1位决定,可设置成方式0、方式1、方式2、方式3共四种工作方式。
2024/7/10
23
第6章 MCS-51单片机的串行接口
1. 发送过程
当CPU执行一条将数据写入数据缓冲器SBUF的指令MOV SBUF,A时,启动串行口的发送过程。写入指令后,经过一个完整的机器周期Tcy,当发送脉冲有效后,移位寄存器的内容逐个送到RXD(P3.0)引脚串行移位输出。移位脉冲由TXD(P3.1)引脚输出,它使得RXD引脚上输出的数据能够移入外部移位寄存器中。
当数据最高位移出移位寄存器的输出位时,再移位一次就完成了一个字节的输出,此时使得中断标志位TI置1。如果还要发送下一个字节数据,就要用软件将TI清0。方式0发送过程的时序如图6-13所示。
wyx
23
2024/7/10
24
第6章 MCS-51单片机的串行接口
串行口要扩展并行输出时,需要“串入并出”的移位寄存器的配合,比如74HC164或CD4094。74HC164与单片机的线路连接如图6-14所示。
从图中可以看出,单片机的串行口工作在方式0下,可以通过外接串行输入并行输出的移位寄存器来实现“串入并出”扩展串行口。TXD作为移位脉冲输出口,RXD作为串行数据的输出口。
DSA和DSB是互为选通控制的串行输入端:数据通过两个输入端之一串行输入,任一输入端可以用作高电平使能端,控制另一输入端的数据输入;两个输入端或者链接在一起,或者把不用的输入端接高电平,一定不能悬空。MR引脚为主复位输入端,低电平有效。
wyx
24
2. 接收过程
当REN=1,且接收中断标志位RI=0时,启动接收过程。经过一个完整的机器周期Tcy后,当发送脉冲有效后,数据由RXD(P3.0)引脚输入,移位脉冲由TXD(P3.1)输出。在最后一次移位即将结束时,将接收移位寄存器的内容送入接收数据缓冲器SBUF中,并且使接收中断标志位RI置1。如果还要接收下一个字节数据,就要用软件将RI清0。方式0接收过程的时序如图6-15所示。
2024/7/10
25
第6章 MCS-51单片机的串行接口
串行口要扩展并行输入串行输出时,需要“并入串出”的移位寄存器的配合,比如74HC165。 74HC165与单片机的线路连接如图6-16所示。
wyx
QH为串行移位输出引脚:74HC165移出的串行数据QH经由RXD端串行输入,同时由TXD端提供移位时钟脉冲CP。SH/LD是移位/置数引脚:当SH/LD=0时,允许并行输入;当SH/LD=1时,允许串行移位。
2024/7/10
26
第6章 MCS-51单片机的串行接口
wyx
6.3.1 方式1
2024/7/10
27
第6章 MCS-51单片机的串行接口
当SM0、SM1设置为01时,串行口工作在方式1。在这种方式下,串行口作为10位异步通信口,数据传输的波特率由T1的溢出率决定。TXD引脚和RXD引脚分别用来发送数据和接收数据。发送/接收的数据都是10位:1位起始位(0)、8位数据位、1位停止位(1)。数据传输时遵循的原则:低位在前,高位在后。其传输的字符帧格式如图6-17所示:
1. 发送过程
当CPU执行一条将数据写入数据缓冲器SBUF的指令MOV SBUF,A时,启动串行口的发送过程。当发送移位脉冲的同步下,从TXD引脚发送10位的数据,先送出的是起始位,然后是8位的数据位,最后发送1位停止位。当10位数据发送完毕后,由软件使TI置1。方式1下,发送过程的时序如图6-18所示。
wyx
2024/7/10
28
第6章 MCS-51单片机的串行接口
2. 接收过程
当REN=1,且接收中断标志位RI=0时,启动接收过程。接收器以选择波特率的16倍速率采样RXD引脚的电平,对每一位时间的第7、8、9个计数状态的采样值用多数表决法,当两次或两次以上的采样值相同时,采样值接收,当检测到RXD引脚输入电平发生负跳变时,说明起始位有效,将其移入输入移位寄存器中,开始接收这一帧信息。当一帧信息接收完毕,必须同时满足以下两个条件,说明此次的接收才是有效的。
RI=0;
SM2=0或者接收到的停止位为1。
方式1接收过程的时序如图6-19所示。
wyx
接收过程中,接收到的位从右边移入,当起始位移到最左边时,接收控制器将控制进行最后一次移位,把接收到的9位数据送入接收数据缓冲器SBUF和RB8中,并且使接收中断标志位RI置1。当RI=1时,向CPU发出中断申请信号,请求CPU把数据及时读走。
3. 波特率
当串行口工作在方式1下,其波特率是由定时器/计数器T1的溢出率和PCON的SMOD位决定。方式1的波特率为:
2024/7/10
29
第6章 MCS-51单片机的串行接口
定时器/计数器T1的溢出率就是溢出周期的倒数。当定时器/计数器T1作为波特率发生器使用时,通常使其工作在方式2下,方式2是8位自动重装定时器/计数器,更加精确。T1产生的各种常用的溢出率如表6-2所示。
那么此时,溢出周期为:(6-2)
wyx
1. 发送过程
其中,fosc是时钟频率,X为定时器/计数器T1的计数初值。每过256-X个机器周期,T1就溢出一次。
所以方式1的波特率为:
2024/7/10
30
第6章 MCS-51单片机的串行接口
波特率(Kbit/s) (MHz) SMOD 定时器T1的工作方式 重新装入初值
56.8 11.0592 1 2 FFH
19.2Kbit/s 11.0592 1 2 FDH
9.6Kbit/s 11.0592 0 2 FDH
4.8Kbit/s 11.0592 0 2 FAH
2.4Kbit/s 11.0592 0 2 F4H
1.2Kbit/s 11.0592 0 2 E8H
0.6Kbit/s 11.0592 0 2 D0H
wyx
【例6-1】 若时钟频率为11.059MHz,串行口工作于方式1,波特率为4800bit/s,写出用T1作为波特率发生器的方式控制字和计数初值。
解:设T1为方式2定时,并且选择SMOD=0
那么T1作为波特率发生器的方式控制字:GATE=0,C/T=0,M1M0=10。方式控制寄存器TMOD:20H。
根据方式1的波特率求解公式及已知条件有:
从中解得X==FAH。
只要把FAH装入TH1和TL1,则能使其波特率为4800bit/s。
2024/7/10
31
第6章 MCS-51单片机的串行接口
wyx
当SM0、SM1设置为10时,串行口工作在方式2下,这种方式串行口是作为11位异步通信口,数据传输的波特率为fosc/32或fos/64。TXD引脚和RXD引脚分别用来发送数据和接收数据。发送/接收的数据都是11位:1位起始位(0)、8位数据位、1位附加位(发送时为SCON中的TB8,接收时为SCON中的RB8)、1位停止位(1)。数据传输时遵循的原则:低位在前,高位在后。其传输的字符帧格式如图6-20所示:
2024/7/10
32
第6章 MCS-51单片机的串行接口
6.3.3 方式2
wyx
1. 发送过程
当CPU执行一条将数据写入数据缓冲器SBUF的指令时,启动串行口的发送过程。开始发送后一个机器周期,移位脉冲有效时,从TXD引脚发送11位的数据,先送出的是起始位,然后是9位的数据位,最后发送1位停止位。
第一次移位时,停止位“1”移入输出移位寄存器的第9位上 ,以后每次移位,左边都移入0。当停止位移至输出位时,左边其余位全为0,当检测电路检测到这一条件时,使控制电路进行最后一次移位,并置TI=1,向CPU请求中断。方式2下,发送过程的时序如图6-21所示。
2024/7/10
33
第6章 MCS-51单片机的串行接口
wyx
2. 接收过程
当REN=1,且接收中断标志位RI=0时,启动接收过程。接收器以选择波特率的16倍速率采样RXD引脚的电平,对每一位时间的第7、8、9个计数状态的采样值用多数表决法,当两次或两次以上的采样值相同时,采样值接收,当检测到RXD引脚输入电平发生负跳变时,说明起始位有效,将其移入输入移位寄存器中,开始接收这一帧信息。当一帧信息接收完毕,必须同时满足以下两个条件,说明此次的接收才是有效的。
RI=0,接收缓冲器SUBF是空的;
SM2=0或者接收到的停止位为1。
方式2接收过程的时序如图6-22所示。
2024/7/10
34
第6章 MCS-51单片机的串行接口
wyx
当SM0、SM1设置为11时,串行口工作在方式3下。这种方式下串行口被作为11位的异步通信口,其发送过程和接收过程与方式2一样。与方式2不同,方式3的波特率是可变的,是由定时器/计数器T1的溢出率和PCON的SMOD位决定的,即:
2024/7/10
35
第6章 MCS-51单片机的串行接口
6.3.4 方式3
由于定时器T1是可编程的,可选择的波特率范围比较大,因此,串行口的方式1和方式3是最常用的工作方式。
wyx
MCS-51单片机的串行口控制器SCON中设有多处理机通信位SM2(SCON.5),通过这一特性可以实现主机与多个从机之间的串行通信。图6-23为多机通信的线路连接图,左边的MCS-51为主机,其余剩下的都是从机,所有从机统一编号,每台从机被赋予唯一的一个地址。
2024/7/10
36
第6章 MCS-51单片机的串行接口
6.3.5 多机通信方式
从图中可以看出,主机的TXD与所有从机的RXD连接,从机所有的TXD都与主机的RXD连接。从机的地址分别为01H、02H、03H。系统中只有一个主机,其余都是从机。主机发送的信息可以被所有从机接收,任何一个从机发送的信息只能由主机接收。从机和从机之间不能进行相互的直接通信,从机和从机之间的通信只能经过主机才能实现。
wyx
当多处理机通信位SM2=1时,则表示进行多机通信。如果从机接收到的第9位数据(RB8)为1,则将发来数据的前8位送入接收数据缓冲器SBUF中,并且使中断标志RI=1,向CPU发出中断申请;如果接收到的第9位数据为0,直接将数据丢弃。
当SM2=0时,无论接收到的第9位数据(RB8)为0还是1,都将数据送入接收数据缓冲器SBUF中,并且使RI=1,发出中断申请。
根据单片机串口的这一特性,主机和从机之间的通信过程如下:
(1) 各从机初始化程序允许从机的串行口中断,将串行口编程为方式2或方式3接收,即11位异步通信方式,且SM2=1和REN=1,从机处于只处于多机通信且接收地址帧的状态。
(2) 在主机和某个从机通信之前,先将从机地址发送给各个从机,接收才传送数据。主机给从机发送地址时,其中第9位数据位置1,数据(命令)帧的第9位为0。当主机向从机发送地址帧时,所有从机在SM2=1、RB8=1和RI=0时,接收主机发来的从机地址,进入相应的中断服务程序,在中断服务程序中,各从机将接收的地址与本机的地址比较,以便确认是否为被寻址的从机。若为本机地址,被寻址从机通过指令将SM2清0,以便正常接收主机的数据帧;若地址不相符,则保持SM2=1的状态。
2024/7/10
37
第6章 MCS-51单片机的串行接口
wyx
(3) 接收主机发送数据(命令)帧,数据帧的第9位为0,此时各从机接收的RB8=0,只有地址相符合的从机(即SM2=0的从机)才能激活中断标志位RI位,从而进入中断服务程序,在中断服务程序中接收主机发送来的数据(命令)。与主机发来的地址不相符的从机,其SM2=1,又RB8=0,因此不能激活中断标志RI位,也就不能接收主机发送来的数据帧,从而保证主机与从机之间通信的正确性。此时主机与建立联系的从机已经设置为单机通信方式,即在进行通信过程中,通信的双方都要保持发送数据的第9位(TB8=0),防止其他从机误接收数据帧。
(4) 结束数据通信并为下一次的多机通信做好准备,在多机通信系统中每个从机都被设置唯一的一个地址。
2024/7/10
38
第6章 MCS-51单片机的串行接口
wyx
在使用串行口之前,都需要对其进行初始化编程,主要的过程如下:
(1) 确定T1的工作方式,对工作方式寄存器TMOD进行编程;
(2) 根据定时时间或者计数值,计算T1的计数初值,并且将其送入TH1和TL1中;
(3) 启动T1,对控制寄存器TCON中的TR1位进行编程;
(4) 确定串行口的工作方式,对串行口控制寄存器SCON进行编程;
(5) 当串行口工作在中断方式下时,需要对中断控制寄存器IE和IP进行设置。
2024/7/10
39
第6章 MCS-51单片机的串行接口
6.3.6 串行口初始化编程步骤
wyx
在实际应用中,单片机与PC机之间的通信非常普遍。这个过程中,单片机系统主要的任务是采集现场的物理参数,并且将采集到的数据发送给PC机;PC机的主要任务就是对接收到的数据进行显示、统计或者存档,以供后期使用。
PC机上至少有一个标准的RS-232C串行接口,用于与另一台PC机通信或者与具有标准RS-232C的串行接口的外围设备通信。那么为了与具有标准RS-232C串行接口的PC机进行通信,单片机芯片的引脚电平必须用电平转换器转换成RS-232C的电平,比如MAX232,并且用9针的标准连接器输出。
单片机的TXD与RXD引脚由连接器连接时,有两种连接方式:直通连接方式、交叉连接方式。如图6-24所示。
2024/7/10
40
第6章 MCS-51单片机的串行接口
6.4 串行口应用举例
6.4.1 单片机与PC通信设计
wyx
2024/7/10
41
第6章 MCS-51单片机的串行接口
wyx
【例6-2】 编程实现单片机向PC机传送32字节的数据,起始地址为50H。
协议:采用串行口方式1实现通信,每帧信息为10bit;波特率为1200bps;T1工作在定时器方式2;晶振的振荡频率采用11.0592MHz;PCON控制器的SMOD位为0。
启动发送的条件:当PC机向单片机发送“E1”命令,请求单片机传送数据,单片机正确接收到“E1”命令后,将数据缓冲区的内容传送给PC机。
分析:当T1工作在定时器方式2下,晶体振荡频率为11.0592MHz,波特率为1200bps,SMOD位为0,查表6-2,可知此时T1的初值:TH1=TL1=0E8H。
程序如下:
单片机端程序:
ORG 0000H
JMP MAIN
ORG 0023H
JMP SINT
ORG 0040H
2024/7/10
42
第6章 MCS-51单片机的串行接口
wyx
MAIN: MOV SP,#4FH ;重新给堆栈指针设初值(SP)=4FH
MOV TMOD,#20H ;设置T0,GATE=0、C/T=0、M1M0=10
MOV SCON,#50H ;设置串行口控制寄存器SCON
MOV TH1,#0E8H ;设置T1的初值
MOV TL1,#0E8H
SETB TR1 ;启动定时器
MOV R3,#00H ;置测试初值
SETB ES ;开放串行口中断允许位
SETB EA ;开放CPU总中断
SJMP $
SINT: PUSH ACC ;保护现场
PUSH PSW
JNB RI,QUIT ;判断接收完否?
CLR RI
MOV A,SUBF ;接收联络信号
CJNE A,#0E1H,QUIT ;判断联络信号是否为E1
CALL UPDATA ;调用UPDATA,缓冲区更新
CALL TX16 ;更新完,发送数据
QUIT: POP PSW
POP ACC
RETI
2024/7/10
43
第6章 MCS-51单片机的串行接口
wyx
TX16: MOV R7,#32 ;共发送32个数据
MOV R0,#50H ;设置32个数据的首地址
L1: MOV SBUF,@R0 ;发送数据
JNB TI,$ ;发送完否?
CLR TI
INC R0
DJNZ R7,L1 ;32个数据发送完毕?
RET
UPDATA:MOV R7,#32
MOV R0,#50H
MOV A,R4
L2: MOV @R0,A
INC A
INC R0
INC R4
DJNZ R7,L2
RET
END
2024/7/10
44
第6章 MCS-51单片机的串行接口
wyx
1. 同步方式应用
当MCS-51单片机的串行口工作在方式0时,串行口是以同步方式进行操作。通过外接“串入并出”或者“并入串出”的器件,可以实现串行口的扩展输入/输出口。
【例6-3】 利用MCS-51单片机串行口外接74HC164“串入并出”移位寄存器扩展8位的并行输出口,外接74HC165“并入串出”移位寄存器扩展8位并行输入口。下图6-21中74HC164的8位并行输出口的每一位都接一个发光二极管,74HC165的8个并行输入口的每一位都接一个开关,试编程实现从8位并行输入口读入开关的状态值,使闭合开关对应的发光二极管点亮。
2024/7/10
45
第6章 MCS-51单片机的串行接口
6.4.2 单片机串行口的其他设计
wyx
解:分析:对于74HC164来说,P1.0与TXD通过或门和CP连接,那么当P1.0=0,TXD引脚发出时钟脉冲信号起作用,此时将数据缓冲器SBUF里的数据移入74HC164。
对于74HC165来说,当P1.0=0,TXD引脚发出时钟脉冲信号起作用;当P1.2=0,74HC165将并行输入口开关上的信号装载到寄存器内;当P1.2=1时,此时74HC165将寄存器内的数据串行输出。
启动接收过程:使74HC165串行输出;当P1.0=0,使74HC164同时串行输入。启动发送过程:使74HC164串行输入。
具体汇编程序如下:
ORG 0000H ;定位程序从0000H开始存放
LJMP MAIN ;跳转到主程序
ORG 0023H ;串行口中断服务的起始地址
LJMP S_SRV ;跳转到串行口中断服务程序
MAIN: MOV SP,#0CFH ;设置堆栈指针
SETB P1.0 ;禁止74HC164
CLR P1.1 ;运行74HC165
CLR P1.2 ;并行装载74HC165
SETB P1.2 ;74HC165中数据串行输出
MOV SCON,#10H ;串行口口方式0,允许接收
SETB ES ;开串行口中断
SETB EA ;开总中断
SJMP $ ;等待中断
wyx
S_SRV:JNB RI,SEND ;当RI=0时,跳转到SEND
CLR RI;
MOV A,SBUF ;启动接收过程
CLR P1.0 ;允许74HC164
SETB P1.1 ;禁止74HC165
MOV SBUF,A ;将接收到的数据发送给74HC164
RETI
SEND: CLR TI ;发送中断标志位清0
SETB P1.0 ;禁止74HC164
CLR P1.1 ;允许74HC165
CLR P1.2 ;并行装载74HC165
SETB P1.2 ;74HC165中数据串行输出
SETB REN ;启动,74HC165发送数据
RETI ;单片机接收
2024/7/10
47
第6章 MCS-51单片机的串行接口
wyx
2. 异步方式应用
当MCS-51单片机的串行口工作在方式1、方式2和方式3时,串行口是以异步方式进行操作。在这种方式下,不仅能够实现单片机与单片机点对点的通信,还可以实现三个及三个以上的单片机之间的通信。
串行口的方式1与方式3很近似,它们的波特率设置是一样,不同之处在于方式3比方式1多了一个数据附加位(程控位),可以作为奇偶校验位,也可以作为发送地址帧和数据帧的标志位。
串行口的方式2与方式3发送数据和接收数据过程基本一样,仅仅是波特率不同,发送和接收11位信息:开始为1位低电平的起始位,中间8位数据位,之后为1位程控位(由发送的TB8决定),最后是1高电平的停止位。
【例6-4】 将片内RAM区的60H~6FH中的数据串行发送,并且要求用第9个数据位作奇偶校验位,假设晶体振荡器频率为11.0592MHz,波特率为2400bps,试编写串行口以方式3的发送程序。
解:分析:由于fosc=11.0592MHH ,并且方式3的波特率为2400bps,串行口工作在方式3下,假设定时器/计数器T1工作在方式2下,电源控制寄存器PCON中的SMOD=0,可以通过
得到X=F2H,也可以通过查表6-2同样也可以得到。
2024/7/10
48
第6章 MCS-51单片机的串行接口
wyx
要求用TB8作为奇偶校验位,在数据写入发送缓冲器之前,先将数据的奇偶位P写入TB8,这时,第9位数据作奇偶校验用,并且发送采用中断方式。具体汇编程序如下:
ORG 0000H
LJMP MAIN ;上电,跳转至主程序
ORG 000BH
SJMP SERVER ;转中断服务程序
ORG 0030H ;主程序的起始地址为0030H
MAIN: MOV SP,#0CFH ;设置堆栈指针
MOV SCON,#0C0H ;设置串口方式3发送
MOV TMOD,#20H ;T1以模式2定时
MOV TL1,#0F2H ;设置T1的计数初值
MOV TH1,#0F2H
SETB TR1 ;T1开始运行
SETB ES ;开串行口中断
SETB EA ;开CPU总中断
MOV R0,#60H ;片内RAM区发送数据的首地址
MOV R7,#16 ;总共需要发送16个数据
MOV A,@R0
MOV C,PSW.0
MOV TB8,C ;送奇偶标志位到TB8
MOV SBUF,A ;启动发送数据
SJMP $ ;等待中断
2024/7/10
49
第6章 MCS-51单片机的串行接口
wyx
2024/7/10
50
第6章 MCS-51单片机的串行接口
SERVER:JBC RI,ENDT ;接收完毕RI=1,中断返回
CLR TI ;清除发送中断标志位
INC R0 ;修改数据地址
MOV A,@R0
MOV C,P
MOV TB8,C
MOV SBUF,A ;发送下一个数据
DJNZ R7,ENDT ;判断数据块是否发送完
CLR ES;否则,禁止串行口中断
ENDT: RETI ;中断返回
wyx
9
6
5
1
25
14
13
1
$$
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。