8051单片机的异步串行通信技术 联系客服

发布时间 : 星期一 文章8051单片机的异步串行通信技术更新完毕开始阅读

第八章 8051单片机的异步串行通信技术

第一节 概述

计算机与外界的信息交换称为通信。常用通信方式有两种:并行通信与串行通信,简称并行传送和串行传送。并行传送具有传送速度快,效率高等优点,但传送多少数据位就需要多少根数据线,传送成本高;串行传送是按位顺序进行数据传送,最少仅需要一根传输线即可完成,传送距离远,但传送速度慢。串行通信又分同步和异步两种方式。同步通信中,在数据传送开始时先用同步字符来指示(常约定1—2个),并由同时传送的时钟信号来实现发送端和接收端同步,即检测到规定的同步字符后,接着就连续按顺序传送数据。这种传送方式对硬件结构要求较高。在单片机异步通信中,数据分为一帧一帧地传送,即异步串行通信一次传送一个完整字符,字符格式如图8—1所示:

图8—1 异步串行通信的字符格式 一个字符应包括以下信息:

1. 起始位:对应逻辑0(space)状态。发送器通过发送起始位开始一帧字符的传送。 2. 数据位:起始位之后传送数据位。数据位中低位在前,高位在后。数据位可以是5、6、7、8位。

3. 奇偶校验位:奇偶校验位实际上是传送的附加位,若该位用于用于奇偶校验,可校检串行传送的正确性。奇偶校验位的设置与否及校验方式(奇校验还是偶校验)由用户需要确定。 4. 停止位:用逻辑1(mark)表示。停止位标志一个字符传送的结束。停止位可以是1、1.5或2位。

串行通信中用每秒传送二进制数据位的数量表示传送速率,称为波特率。

1波特=1bps(位/秒)

例如数据传送速率是240帧/秒,每帧由一位起始位、八位数据位和一位停止位组成,则传送速率为:

10×240=2400位/ 秒=2400波特

单片机的串行通信主要采用异步通信传送方式。在串行通信中,按不同的通信方向有单工传送和双工传送之分,如图8—2所示:

甲机 乙机 (a)单工传送 甲机 乙机 (b)双工传送 甲机 乙机 (c)全双工传送

图8—2 单片机串行通信方向示意

图8—2(a)中,甲.乙两机只能单方向发送或接收数据; 图8—2(b)中,甲机和乙机能分时进行双向发送和接收数据; 图8—2(c)中,甲,乙两机能同时双向发送和接收数据。

第二节 8051串行口的基本结构

MCS—51系列单片机串行口结构框图如图8—3所示:

图8—3 8051串行口结构框图

一、串行口缓冲寄存器SBUF

图8—3中SUBF是串行口缓冲寄存器,发送SBUF和接收SBUF地址同为99H,但由于发送SBUF不能接收数据, 接收SBUF也不具有发送功能,故二者工作互不干扰。当CPU向SBUF写入时,数据进入发送SBUF,同时启动串行发送;CPU读SBUF时,实际上是读接收SBUF数据。 二、串行通信控制寄存器

与串行通信有关的控制寄存器主要是串行通信控制寄存器SCON。SCON是8051的一个可以位寻址的专用寄存器,用于串行数据通信的控制。SCON的单元地址98H,位地址9FH—98H。寄存器内容及位地址表示如下: SCON 位地址 位符号 9F SM0 9E SM1 9D SM2 9C REN 9B TB8 9A RB8 99 TI 98 RI 各位功能说明如下:

位符号 SM0,SM1 功 能 说 明 SM0,SM1──串行口工作方式选择位: SM0 SM1 工作方式 功 能 0 0 0 8位数码传送,波特率固定,为f晶振/12。 0 1 1 10位数码传送,波特率可变。 1 0 2 11位数码传送,波特率固定,为f晶振/64或f晶振/32。 1 1 3 11位数码传送,波特率可变。 SM2 SM2──多机通信控制位: 当串行口以方式2或方式3接收时,如SM2=1,则只有当接收到的第九位数据(RB8)为1,才将接收到的前8位数据送入接收SBUF,并使RI位置1,产生中断请求信号;否则将接收到的前8位数据丢弃。而当SM2=0时,则不论第九位数据为0还是为1,都将前8位数据装入接收SBUF中,并产生中断请求信号。对方式0,SM2必须为0, 对方式1,当SM2=1,只有接收到有效停止位后才使RI位置1。 REN REN──允许接收位,用于对串行数据的接收进行控制: REN=0, 禁止接收;REN=1,允许接收。该位由软件置1或清零。 TB8 TB8──发送数据位8: 在方式2和方式3时,TB8是要发送的第9位数据。 RB8 RB8——接收数据位8: 在方式2和方式3中,RB8位存放接收到的第9位数据 TI TI──发送中断标志: 当方式0时,发送完第8位数据后,该位由硬件置位。在其它方式下,于发送停止位之前由硬件置位。因此TI=1,表示帧发送结束。其状态既可供软件查询使用,也可请求中断。 TI位由软件清0。 RI RI──接收中断标志: 当方式0时,接收完第8位数据后,该位由硬件置1。在其它方式下,当接收到停止位时,该位由硬件置位。因此RI=1,表示帧接收结束。其状态既可供软件查询使用,也可以请求中断。RI位由软件清0。