第8章 51单片机UART串行口通信

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 发送数据完毕后(停止位开始时),TI位被硬件自动置1 – 在启动下次发送前,需通过软件对TI标志清0
写入SBUF
TXD
起始 D0 D1 D2 D3 D4 D5 D6
TI(中断标志)
D7 停止位
8.2.3 串行口的工作方式
➢ 1.方式1-输入
– 在REN=1和RI=0的前提下,接收器以所选择波特率的 16倍速率采样RXD引脚电平
D0 D1 D2 D3 D4 Dห้องสมุดไป่ตู้ D6 D7
TI(中断标志)
8.2.3 串行口的工作方式
➢ 1.方式1
– 10位数据的异步通信方式 – TXD为数据发送引脚 – RXD为数据接收引脚 – 波特率由定时器T1的溢出率决定
8.2.3 串行口的工作方式
➢ 1.方式1-输出
– CPU将待发送的数据写入到SBUF后,单片机自动将数据 从TXD引脚输出
➢ 异步通信 • 特点是不要求收发双方时钟的严格一致,实现容易,设备 开销较小,但每个字符要附加2~3 位用于起止位,各帧 之间还有间隔,因此传输效率不高。以字符(构成的帧) 为单位进行传输
➢ 同步通信 – 特点是以同步字符或特定的位组合“01111110”作为帧 的开始,所传输的一帧数据可以是任意位。所以传输的效 率较高,但实现的硬件设备比异步通信复杂
接线方式: 单片机U1的TXD(P3.1)引脚接单片机U2的RXD(P3.0) 引脚,U1和U2共地,即两块开发板的GND引脚接到一起, 共使用2根杜邦线。
8.3.2 串行口应用实战-单片机U1发送程序
#include <reg52.h>
//共阳极数码管显示译码表:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f unsigned char code smgduan[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,
➢ 异步通信 – 指通信的发送与接收设备使用各自的时钟控制数据的发送 和接收过程 – 以字符(构成的帧)为单位进行传输 – 每帧数据由4部分组成:起始位(占1位)、字符代码数据 位(占5~8 位)、奇偶校验位(占1位,也可以没有校验 位)、停止位(占1或2位)
一个完整串行数据帧



8位数据



0 D0 D1 D2 D3 D4 D5 D6 D7 1
D4 D5
D6 D7 停止位
RI(中断标志)
8.2.3 串行口的工作方式
➢ 1.方式2和方式3
– 11位数据的异步通信口 – 其数据帧格式为起始位1位,数据9位(含1位附加的第9
位,发送时为SCON中的TB8,接收时为RB8),停止位 1位,共11位 – 方式2的波特率固定为晶振频率的1/64或1/32 – 方式3的波特率由定时器T1的溢出率决定 – 方式2和方式3的差别仅在于波特率的选取方式不同 – 除了数据位多出1位外,两种方式的输入与输出时序均与 方式1相同
➢ 代码和校验 – 将所发数据块求和(或各字节异或),产生一个字节的校 验字符(校验和)附加到数据块末尾
➢ 循环冗余校验 – 通过某种数学运算实现有效信息与校验位之间的循环校验
8.1.6 RS-232通信接口
引脚 1 2 3 4 5 6 7 8 9
简写 CD RXD TXD DTR GND DSR RTS CTS RI
19200
11.0592
0
0
11.0592
0
0
11.0592
0
0
11.0592
0
0
11.0592
1
0
62500
12
1
0
定时器T1工作方式
2 2 2 2 2 2
初值
E8H F4H FAH FDH FDH FFH
本章内容:
1
串行通信初步认识
2
2
单片机UART模块
2
3
串行口的应用实战
8.3.1 串行口初始化
➢ 串行通信 – 将数据字节一位一位地在一条传输线上逐个地传送 – 如同一条车道,一次只能一辆车过去 – 串行通信的传输线少,长距离传送时成本低,且可以利用 电话网等现成的设备 – 数据的传送控制比并行通信复杂
8.1.1 并行通信和串行通信
➢ 串行通信 – 由于数据信息、控制信息要按位在一条线上依次传送,为 了对数据和控制信息进行区分,收发双方要事先约定共同 遵守的通信协议 – 通信协议约定的内容包括数据格式、同步方式、传输速率 、校验方式等 – 依发送与接收设备时钟的配置情况串行通信可以分为异步 通信和同步通信
8.2.4 波特率设置
➢ 在串行通信中,收发双方对发送或接收数据的速率要有约定 ➢ 方式0和方式2的波特率是固定的 ➢ 方式1和方式3的波特率是可变的 ➢ 波特率发生器只能由定时器T1或定时器T2产生,而不能由定
时器T0产生 ➢ 方式1下的波特率发生器必须使用定时器方式2,也就是自动
重装载模式
8.2.4 波特率设置
特别注意,在使用T1做波特率发生器的时候,千万不要再使用 T1的中断了
8.3.2 串行口应用实战-单片机与单片机通信
➢ 【例8.1】通过2块开发板编程实现单片机与单片机串口的单工 通信,单片机U1通过串行口TXD将共阴极数码管的字型码发送 到单片机U2的RXD端,单片机U2根据接收到的字型码控制在数 码管循环显示0-9,A-F十六进制数字。
➢ 两个物理上独立的接收、发送缓冲器SBUF ➢ 但占用同一地址0x99
8.2.2 特殊功能寄存器
➢ 1. 工作方式寄存器SCON(地址0x98)
位序号 位符号
D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0 SM1 工作方式
说明
波特率
位序号 位符号
D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN TB8 RB8 TI RI
– SM0和SM1,工作方式选择位 – SM2,多机通信控制位 – REN,允许串行接收位 – TB8,发送数据的第九位 – RB8,接收数据的第九位 – TI,发送中断标志位 – RI,接收中断标志位
8.1.6 USB转串口通信
免断电下载
USB转串口 芯片
本章内容:
1
串行通信初步认识
2
2
单片机UART模块
2
3
串行口的应用实战
8.2.1 串行口结构
SBUF
TXD 控制门
用户程序
TH1 TL1
发送控制器 TI
1
÷16 ÷2
0
T1溢出率
SMOD
接收控制器 RI
SBUF
移位寄存器
去串口中断
≥1
RXD
8.1.2 异步通信和同步通信
➢ 同步通信 – 需要建立发送方时钟对接收方时钟的直接控制,使双方达 到完全同步
– 外同步:
• 在发送方和接收方之间提供单独的时钟线路 • 仅适用于短距离的传输
– 自同步:
• 利用特殊的编码(如曼彻斯特编码),让数据信号携带时钟(同 步)信号
8.1.2 异步通信和同步通信
第8章 51单片机UART串行口通信
51单片机实战指南
本章内容:
1
串行通信初步认识
2
2
单片机UART模块
2
3
串行口的应用实战
8.1.1 并行通信和串行通信
➢ 并行通信 – 将数据字节的各位用多条数据线同时进行传送 – 类似于有8个车道同时可以过去8辆车 – 并行通信控制简单、传输速度快 – 但由于传输线较多,长距离传送时成本高且接收方的各位 同时接收存在困难
0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; void SendByte(unsigned char ch); void Delayms(unsigned int xms);
8.3.2 串行口应用实战-单片机U1发送程序
void main(void)
功能 载波侦测(Carrier Detect)
接收字符(Receive) 发送字符(Transmit) 数据终端准备好(Data Terminal Ready)
地线(Ground) 数据准备好(Data Set Ready) 请求发送(Request To Send)
清除发送(C1ear To Send) 振铃提示(Ring Indicator)
{
int i; SCON = 0x40;
//方式 1, 8-bit UART
TMOD = 0x20; PCON = 0; TH1 = 0xFD;
//定时器1,方式2,自动重装 //设置PCON中的SMOD=0, 波特率不加倍
8.2.2 特殊功能寄存器
➢ 2. 电源管理方式寄存器PCON(地址0x87)
位序号 D7
D6 D5 D4 D3 D2 D1 D0
位符号 SMOD SMOD0 LVDF P0F GF1 GF0 PD IDL
– 位SMOD(PCON.7)波特率倍增位 – 在串行口方式1、方式2、方式3时,波特率与SMOD有关 – 当SMOD=1时,波特率提高一倍。复位时,SMOD=0
– 检测到RXD引脚输入电平发生负跳变时,则说明起始位 有效,将其移入输入移位寄存器,并开始接收这一帧信 息的其余位
– 当一帧数据接收完毕后(接收到停止位的中间时),RI 位被硬件自动置1。
– CPU读取SBUF后,必须通过软件对RI标志清0,才可进 行下一次接收。
RXD 位采样脉冲
起始 D0
D1 D2 D3
➢波特率计算法
➢ 当T1作为波特率发生器时,方式1和方式3的波特率为 ➢ 波特率 = (2SMOD/32)×(T1溢出率) ➢ T1溢出率 = 晶振值 /{12×[256 -(TH1)]}
➢ 可推导出当SMOD = 0时,定时器的重载值计算公式为 ➢TH1 = TL1 = 256 - 晶振值/12 /2/16 /波特率
8.1.1 并行通信和串行通信
➢ 串行通信 – 51单片机引脚P3.0,P3.1 – TXD 串行发送引脚,RXD串行接收引脚 – 由它们组成的通信接口就叫做串行接口,简称串口
RXD 单片机 (5V) TXD
接收 发送
GND
接收 RXD
发送
单片机
TXD (5V)
GND
8.1.2 异步通信和同步通信
➢ (1)配置串行口为模式1(编程SCON寄存器) ➢ (2)配置T1为模式2,即自动重装模式(编程TMOD寄存器) ➢ (3)根据波特率计算或查表T1的初值,装载TH1、TL1,如果
有需要可以使用PCON进行波特率加倍 ➢ (4)启动T1(编程TCON中的TR1位)
串行口如果在中断方式工作时,还要进行中断设置(编程IE、IP 寄存器)。
➢ 和波特率有关的还有一个寄存器,是一个电源管理寄存器 PCON,它的最高位SMOD可以把波特率提高一倍 ➢ TH1 = TL1 = 256 - 晶振值/12 /16 /波特率
8.2.4 波特率设置
➢波特率查表法
波特率(b/s) fosc(MHz) SMOD C/T
1200 2400 4800 9600
0
0
方式0 同步移位寄存器发方式(通常用于扩展IO口)fosc/12
0
1
方式1 10位异步收发器(8位数据)
可变
1
0
方式2 11位异步收发器(9位数据)
1
1
方式3 11位异步收发器(9位数据)
fosc/64或fosc/32 可变
8.2.2 特殊功能寄存器
➢ 1. 工作方式寄存器SCON(地址0x98)
➢ 波特率 – 每秒钟调制信号变化的次数 – 单位是:波特(Baud)
➢ 波特率和比特率不总是相同的,如每个信号(码元)携带1 个比特的信息,比特率和波特率就相同。如1个信号(码元 )携带2个比特的信息,则比特率就是波特率的2倍。
8.1.5 串行通信的错误校验
➢ 奇偶校验 – 数据位尾随的1位为奇偶校验位 – 奇校验 – 偶校验
8.2.3 串行口的工作方式
➢ 1.方式0
– 串行口为同步移位寄存器的输入/输出方式。主要用于扩展 并行输入或输出口
– 数据由RXD(P3.0)引脚输入或输出
– 同步移位脉冲由TXD(P3.1)引脚输出
– 发送和接收均为8位数据,低位在先,高位在后。波特率固 定为fosc/12
方式0输出时序图
写入SBUF RXD(数据) TXD(移动脉冲)
8.1.3 串行通信的传输方向
➢ 单工 – 只允许一方向另外一方传送信息,而另一方不能回传信息
➢ 半双工 – 数据可以在双方之间相互传播,但是同一时刻只能其中一 方发给另外一方
➢ 全双工 – 发送数据的同时也能够接收数据,两者同步进行
8.1.4 传输速率
➢ 比特率 – 每秒钟传输二进制代码的位数 – 单位是:位/秒(bps) – 如每秒钟传送960个字符,而每个字符格式包含10位(1 个起始位、1个停止位、8个数据位),则比特率为10位 × 960/秒= 9600 bps
相关文档
最新文档