实验八串口(UART)实验目的1、掌握8051单片机串口UART的工作原理;2、掌握串口助手的使用。实验设备与文件PC机、stc89c52实验箱、USB线、stc89c52实验板原理图、串口助手。SWI电源开关电源指示灯LED9LED9VCCO13.2V0.5A保险丝USBIMicroUSB接口+EC2330RAUD+5V470ufInHNlu下载指示灯RIIvcc4.7K自动烧写使能就线AutoDownENAZ828969x8VCCP30VTXDR232P31/RXDRTSDTRAR7300QLDHUDC21001uI12MXCTSHOTCH340C4C1022P22PY供电、程序烧写串口通信三合一模块图1原理图
1 实验八 串口(UART) 一、 实验目的 1、掌握 8051 单片机串口 UART 的工作原理; 2、掌握串口助手的使用。 二、 实验设备与文件 PC 机、stc89c52 实验箱、USB 线、stc89c52 实验板原理图、串口助手。 图 1 原理图
三、实验原理串行异步通信3.18051单片机集成一个全双工通用异步收发(UART:UniversalAsynchronousReceiver/Transmitter)串行。全双工:两个设备之间串行数据可同时双向传输:异步通信:收、发双方使用各自的时钟控制发送和接收,省去收、发双方的同步时钟信号线,使异步串行通信连接更简单且易实现。收、发双方需要协商好波特率和数据格式,如:起始位、数据位、校验位和停正位的定义。第n个字符-第n+1个字符一D2D31D4 D5D6D7DODID2DODI00/10/10/10/10/10/10/10/1100/10/10/1....LT个AY下一个起始位奇偶校验位起始位数据位停止位图2异步通信数据格式波特率是指串行通信中,单位时间传送的二进制位数,单位为bpS。例如:每秒传送200个字符,每个字符1位起始位、8个数据位、1个校验位和1个停止位,则波特率为2200bps。校验位在数据通信过程中保证数据的有效性。发送方在发送过程中,通过对数据位进行某种计算得到校验位,并将数据位和校验位一起发送;接收方在接收到数据后,通过相同的计算得出校验位,再和接收到的校验位做比较,如果相同则说明数据有效,通信正常。如果不同,则说明通信过程中受到了干扰,接收到的数据将被丢弃。如果使用偶校验,数据位和校验位中为“1”位数为偶数;如果使用奇校验,数据位和校验位中为“1”位数为奇数。3.28051单片机串口功能与结构8051单片机的串口内部结构如图3所示,主要由发送缓冲器、发送控制器、输出控制门、接收缓冲器、接收控制器、输入移位寄存器等组成。发送缓冲器和接收缓冲器在物理上是独立的,可同时收发数据。发送缓冲器只写不读,接收缓冲器只读不写,两个缓冲器共用一个特殊功能寄存器字节地址(99H),发送、接收数据可通过查询或中断方式处理。2
2 三、 实验原理 3.1 串行异步通信 8051 单片机集成一个全双工通用异步收发(UART:Universal Asynchronous Receiver/Transmitter)串行口。 全双工:两个设备之间串行数据可同时双向传输; 异步通信:收、发双方使用各自的时钟控制发送和接收,省去收、发双方的 同步时钟信号线,使异步串行通信连接更简单且易实现。收、发双方需要协商好 波特率和数据帧格式,如:起始位、数据位、校验位和停止位的定义。 图 2 异步通信数据格式 波特率是指串行通信中,单位时间传送的二进制位数,单位为 bps。 例如:每秒传送 200 个字符,每个字符 1 位起始位、8 个数据位、1 个校验 位和 1 个停止位,则波特率为 2200bps。 校验位在数据通信过程中保证数据的有效性。发送方在发送过程中,通过对 数据位进行某种计算得到校验位,并将数据位和校验位一起发送;接收方在接收 到数据后,通过相同的计算得出校验位,再和接收到的校验位做比较,如果相同 则说明数据有效,通信正常。如果不同,则说明通信过程中受到了干扰,接收到 的数据将被丢弃。如果使用偶校验,数据位和校验位中为“1”位数为偶数;如 果使用奇校验,数据位和校验位中为“1”位数为奇数。 3.2 8051 单片机串口功能与结构 8051 单片机的串口内部结构如图 3 所示,主要由发送缓冲器、发送控制器、 输出控制门、接收缓冲器、接收控制器、输入移位寄存器等组成。发送缓冲器和 接收缓冲器在物理上是独立的,可同时收发数据。发送缓冲器只写不读,接收缓 冲器只读不写,两个缓冲器共用一个特殊功能寄存器字节地址(99H),发送、 接收数据可通过查询或中断方式处理
4内部总线TXD(P3.1引脚)门发送8?串行口控制寄存器SBUF(99H)发送控制器定时器T串行口中断RIT1接收控制器接收(98H)SBUF文SCON(99H)8RXD(P3.0引脚)输入移位寄存器8图3串口的内部结构3.3相关寄存器从用户使用的角度,8051单片机的串口由三个特殊功能寄存器组成:发送缓冲器和接收缓冲器合起用一个特殊功能寄存器SBUF(串行口数据寄存器),串行口控制寄存器SCON和电源控制寄存器PCON。串行口控制寄存器SCON,字节地址98H,可位寻址,位地址为98H9FH,即SCON的所有位都可用软件来进行位操作清“0”或置“1”D7D6D5D4D3D2D1DOSCONSMOSM1SM2TB8RB8TIRI98HREN位地址9FH9EH9DH9CH9BH9AH99H98H图4串口控制寄存器SCON格式寄存器SCON各位功能(1)SMO、SM1一串口4种工作方式选择SMO、SM1的2位编码对应4种工作方式见表1。表1串口4种工作方式式SMOSMI方功能说明000同步移位寄存器方式(用于扩展1/O口)0118位异步收发,波特率可变(由定时器控制)2109位异步收发,波特率为J664或Js/323119位异步收发,波特率可变(由定时器控制)(2)SM2一多机通信控制位多机通信是在方式2和方式3下进行,因此SM2位主要用于方式2或方式3。3
3 图 3 串口的内部结构 3.3 相关寄存器 从用户使用的角度,8051 单片机的串口由三个特殊功能寄存器组成:发送缓 冲器和接收缓冲器合起用一个特殊功能寄存器 SBUF(串行口数据寄存器),串 行口控制寄存器 SCON 和电源控制寄存器 PCON。 串行口控制寄存器 SCON,字节地址 98H,可位寻址,位地址为 98H~9FH,即 SCON 的所有位都可用软件来进行位操作清“0”或置“1”。 图 4 串口控制寄存器 SCON 格式 寄存器 SCON 各位功能: (1)SM0、SM1—串口 4 种工作方式选择 SM0、SM1 的 2 位编码对应 4 种工作方式见表 1。 表 1 串口 4 种工作方式 (2)SM2—多机通信控制位 多机通信是在方式 2 和方式 3 下进行,因此 SM2 位主要用于方式 2 或方式 3
当串口以方式2或方式3接收时,如SM2=1,则只有当接收到的第9位数据(RB8)为“1”时,才使RI置“1”,产生中断请求,并将收到的前8位数据送入SBUF:当收到的第9位数据(RB8)为“0”时,则将收到的前8位数据丢弃。当SM2=0时,则不论第9位数据是“1”还是“0”,都将接收的前8位数据送入SBUF中,并使RI置“1”,产生中断请求。方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI。方式0时,SM2必须为0。(3)REN一允许串行接收位,由软件置“1”或清“O”。REN=1,允许串行口接收数据。REN=O,禁止串行口接收数据。(4)TB8一发送的第9位数据在方式2和方式3时,TB8是要发送的第9位数据,其值由软件置“1”或清“0”。在双机串行通信时,TB8一般作为奇偶校验位使用;也可在多机串行通信中表示主机发送的是地址顿还是数据顿,TB8=1为地址帧,TB8=0为数据顿。(5)RB8一接收的第9位数据在方式2和方式3时,RB8存放接收到的第9位数据。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。(6)TI一发送中断标志位方式0时,串行发送的第8位数据结束时,TI由硬件置“1”,在其他工作方式中,串行口发送停止位的开始时,置TI为“1”。TI=1,表示1顿数据发送结束。TI位状态可供软件查询,也可申请中断。CPU响应中断后,在中断服务程序向SBUF写入要发送的下一顿数据。注意:TI必须由软件清“0”。(7)RI一接收中断标志位串口在方式0时,接收完第8位数据时,RI由硬件置“1”。在其他工作方式中,串行接收到停止位时,该位置“1”。RI=1,表示一顿数据接收完毕,并申请中断,要求CPU从接收SBUF取走数据。该位状态也可供软件查询。RI必须由软件清“0”。特殊功能寄存器PCON,字节地址为87H,不能位寻址,格式见图5,仅最高位SMOD与串口有关。SMOD位:波特率选择位,当SMOD=1时,比SMOD=O时波特率加倍,所以也称SMOD位为波特率倍增位。D7D6D5D4D3D2D1DOGF1GFOPDIDL87HPCONSMOD图5特殊功能寄存器PCON的格式3.4串口的工作方式8051单片机串口有四种工作方式。方式0,称为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展I/0接口。方式1,8位的异步通信方式,通常用于双机通信。方式2和方式3,9位的异步通信方式,通常用于多机通信。4
4 当串口以方式 2 或方式 3 接收时,如 SM2=1,则只有当接收到的第 9 位数据 (RB8)为“1”时,才使 RI 置“1”,产生中断请求,并将收到的前 8 位数据送 入 SBUF;当收到的第 9 位数据(RB8)为“0”时,则将收到的前 8 位数据丢弃。 当 SM2=0 时,则不论第 9 位数据是“1”还是“0”,都将接收的前 8 位数据 送入 SBUF 中,并使 RI 置“1”,产生中断请求。 方式 1 时,如果 SM2=1,则只有收到有效的停止位时才会激活 RI。 方式 0 时,SM2 必须为 0。 (3)REN—允许串行接收位,由软件置“1”或清“0”。 REN=1,允许串行口接收数据。 REN=0,禁止串行口接收数据。 (4)TB8—发送的第 9 位数据 在方式 2 和方式 3 时,TB8 是要发送的第 9 位数据,其值由软件置“1”或清 “0”。在双机串行通信时,TB8 一般作为奇偶校验位使用;也可在多机串行通 信中表示主机发送的是地址帧还是数据帧,TB8=1 为地址帧,TB8=0 为数据帧。 (5)RB8—接收的第 9 位数据 在方式 2 和方式 3 时,RB8 存放接收到的第 9 位数据。在方式 1,如果 SM2=0, RB8 是接收到的停止位。在方式 0,不使用 RB8。 (6)TI—发送中断标志位 方式 0 时,串行发送的第 8 位数据结束时,TI 由硬件置“1”,在其他工作 方式中,串行口发送停止位的开始时,置 TI 为“1”。TI=1,表示 1 帧数据发送 结束。TI 位状态可供软件查询,也可申请中断。CPU 响应中断后,在中断服务程 序向 SBUF 写入要发送的下一帧数据。注意:TI 必须由软件清“0”。 (7)RI—接收中断标志位 串口在方式 0 时,接收完第 8 位数据时,RI 由硬件置“1”。在其他工作方 式中,串行接收到停止位时,该位置“1”。RI=1,表示一帧数据接收完毕,并 申请中断,要求 CPU 从接收 SBUF 取走数据。该位状态也可供软件查询。RI 必须 由软件清“0”。 特殊功能寄存器 PCON,字节地址为 87H,不能位寻址,格式见图 5,仅最高 位 SMOD 与串口有关。SMOD 位:波特率选择位,当 SMOD=1 时,比 SMOD=0 时波特 率加倍,所以也称 SMOD 位为波特率倍增位。 图 5 特殊功能寄存器 PCON 的格式 3.4 串口的工作方式 8051 单片机串口有四种工作方式。 方式 0,称为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展 I/O 接口。 方式 1,8 位的异步通信方式,通常用于双机通信。 方式 2 和方式 3,9 位的异步通信方式,通常用于多机通信
其中方式1最常用,为双机串行通信方式,如图6所示:TXDRXDRXDTXD51单片机GNDGND图6方式1双机串行通信的连接电路当SMO、SM1=O1时,串行口设为方式1双机串行通信。TXD脚和RXD脚分别用于发送和接收数据。方式1收发一顿数据为10位,1个起始位(0),8个数据位,1个停止位(1),方式1顿格式见图7:先发送或接收最低位(LSB)。起始位停止位D3DOD1D2D5D7D4D6图7方式1的顿格式方式1为波特率可变的8位异步通信接口。波特率由下式确定:2.SMOD方式1波特率=x定时器的溢出率32式中,SMOD为PCON寄存器的波特率选择位(O或1)。串口以方式1输出,数据位由TXD端输出,发送一顿信息为10位,1位起始位0,8位数据位(先低位)和1位停止位1,当CPU执行写数据到发送缓冲器SBUF的命令后,就启动发送。发送时钟TX时钟频率就是发送波特率。发送开始时,内部逻辑将起始位向TXD脚(P3.1)输出,此后每经1个TX时钟周期,便产生1个移位脉冲,并由TXD脚输出1个数据位。8位全发送完后,中断标志位TI置“1”。当采样到RXD端从1到0的负跳变(有可能是起始位)时,就启动接收检测器。当确认起始位有效时,开始接收一帧信息。接收每一位数据时,也都进行3次连续采样,接收的值是3次采样中至少两次相同的值,以保证接收到的数据位的准确性。当一帧数据接收完毕后,必须同时满足以下两个条件,这次接收才真正有效。(1)RI=O,即上一顿数据接收完成时,RI=1发出的中断请求已被响应,SBUF中的数据已被取走,说明“接收SBUF”已空。(2)SM2=0或收到的停止位=1(方式1时,停止位已进入RB8),则将接收到的数据装入SBUF和RB8(装入的是停止位),且中断标志RI置“1”。若不同时满足这两个条件,收到的数据不能装入SBUF,这意味着该帧数据将丢失
5 其中方式 1 最常用,为双机串行通信方式,如图 6 所示: 图 6 方式 1 双机串行通信的连接电路 当 SM0、SM1=01 时,串行口设为方式 1 双机串行通信。TXD 脚和 RXD 脚分别 用于发送和接收数据。 方式 1 收发一帧数据为 10 位,1 个起始位(0),8 个数据位,1 个停止位(1), 先发送或接收最低位(LSB)。方式 1 帧格式见图 7: 图 7 方式 1 的帧格式 方式 1 为波特率可变的 8 位异步通信接口。波特率由下式确定: 方式 波特率 定时器1的溢出率 32 2 1 = SMOD 式中,SMOD 为 PCON 寄存器的波特率选择位(0 或 1)。 串口以方式 1 输出,数据位由 TXD 端输出,发送一帧信息为 10 位,1 位起始 位 0,8 位数据位(先低位)和 1 位停止位 1,当 CPU 执行写数据到发送缓冲器 SBUF 的命令后,就启动发送。发送时钟 TX 时钟频率就是发送波特率。发送开始 时,内部逻辑将起始位向 TXD 脚(P3.1)输出,此后每经 1 个 TX 时钟周期,便 产生 1 个移位脉冲,并由 TXD 脚输出 1 个数据位。8 位全发送完后,中断标志位 TI 置“1”。 当采样到 RXD 端从 1 到 0 的负跳变(有可能是起始位)时,就启动接收检测 器。当确认起始位有效时,开始接收一帧信息。接收每一位数据时,也都进行 3 次连续采样,接收的值是 3 次采样中至少两次相同的值,以保证接收到的数据位 的准确性。当一帧数据接收完毕后,必须同时满足以下两个条件,这次接收才真 正有效。 (1)RI=0,即上一帧数据接收完成时,RI=1 发出的中断请求已被响应,SBUF 中的数据已被取走,说明“接收 SBUF”已空。 (2)SM2=0 或收到的停止位=1(方式 1 时,停止位已进入 RB8),则将接收 到的数据装入 SBUF 和 RB8(装入的是停止位),且中断标志 RI 置“1”。 若不同时满足这两个条件,收到的数据不能装入 SBUF,这意味着该帧数据将 丢失