串口通信原理及操作流程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6
单片机串口原理图
7
波特率和定时器初值的设定
波特率:每秒传输二进制代码的位数。(1波特=1位/ 秒,单位bps(位/秒))
串行口4种工作方式对应波特率:
(见P131)
(串口常用工作方式1)
电源管理寄存器PCON
SMOD-串口通信波特率有关
SMOD=0:串口方式1,2,3时,波特率正常
SMOD=1:串口方式1,2,3时,波特率加倍
实现的硬件设备较为复杂
3
单片机串口
4
串行通信接口总线标准
测控系统中,计算机通信主要采用异步串行通信方式,常用的异 步总线标准有三种:
●RS-232(RS-232A RS-232B RS-232C)
●RS-449 (RS422 RS423 RS485)
●20mA电流环
这里重点介绍RS-232
RS-232C:速率:20Kbit/S,

COM2
XTAL1
GND
V-
C5
XTAL2 GND
C1=C2=C3=C4=C5=1F
13
51单片机串行口结构
<1>51单片机串行口是可编程全双工的通信接口,能同时进行数据的发送和 接收, 也可作为同步移位寄存器使用。
<2>51单片机串行口组成: 1. 两个独立的串行数据缓冲寄存器SBUF(一个发送缓冲寄存器,一个
20
串口初始化程序分析
#include<reg52.h> #define uchar unsigned char uchar a,flag; void init() { TMOD=0x20; //设置定时器 1 为模式 2
TH1=0xfd; //装初值设定波特率
TL1=0xfd;
TR1=1; //启动定时器
11
MCS—51之间的双机通信
RXD TXD GND
8xx51
TXD GND
8xx51
12
51单片机与计算机的通信
+5V
VCC
EA
TXD RXD
1
T1IN
R1IN
R1OUT
T1OUT
RST
C 1
C1
C 1
1
6 7
2
8
3 4
9 5
89C51
C 2
C2
C 2
V+ VCC
MAX232
C3
+5V C4
PC机 COM1
串行口通讯原理及操作流程
1
并行与串行通信方式比较
并行通信方式
8位数据同时传送 数据传输速度快 传输线多 长距离传输成本高 数据传输较为简单
wenku.baidu.com
串行通信方式 8位数据顺位传送 数据传输速度相对较慢 传输线少 长距离传输成本低 数据传输控制较为复杂
2
异步与同步串行通信方式
异步串行通信方式
同步串行通信方式
不要求收发双方时钟严格一致
每个字符要附加2~3位(起始位、 校验位、停止位)
各帧之间有任意间隔,位之间间 隔一定
用于单片机和单片机,单片机与 计算机之间通信
发送方时钟对接收方时钟的直接控 制,使双方完全同步
每个字符之间不留空隙,既保持位 同步关系也保持字符同步关系
以特定的位组合01111110作为帧的 开始和结束标志
时 器
中断
T1
RI
接收控制器
接收
SBUF (99H)
输入移位寄存器
RXD(P3.0)
15
串行口控制寄存器SCON
SM0 SM1 SM2
REN
TB8 RB8 TI
RI
方式选择 多机控 串行接收 欲发的 收到的 发送中 接收中
制 允许/ 禁 第九位 第九位 断有/ 断有/

无无
SM0.SM1:串行口工作方式控制位。
18
串行口方式1编程与实现
串行口工作方式1数据形式: 10位数据,1位起始位(0),8位数据
位(最低位在前,最高位在后),1位停止位(1)。 帧之间可有空闲也可无空闲。 数据输出时序图:
19
串口初始化设置:<1>确定T1的工作方式(编程 TMOD寄存器)<2>计算T1的初值,装载TH1,TL1; <3>启动T1(编程TCON中的TR1位)<4>确定串行 口工作方式(编程SCON寄存器)<5>串行口工作 在中断方式时,进行中断设置(编程IE,IP寄存 器) 数据输入时序图:
接收缓冲寄存器 2.发送控制器 3.接受控制器 4.输入移位寄存器 5.若干控制门电路
单片机通过特殊功能寄存器SBUF对串行接收或串行发送寄存器进行访问, 两个寄存器共用一个地址,但在物理意义上是两个独立的寄存器。
14
串行口基本结构
发送
SBUF (99H)
控制门
TXD(P3.1)
发送控制器

TI
A
flag=0;
SBUF=a; //将数据原样发回
while(!TI); //等待数据发完
TI=0;
ES=1; //退出进再开串行中断
}
}
22
}
中断函数程序分析
void serial() interrupt 4 //串行中断函数 {
P1=SBUF; //将数据发送给 P1 口显示(测试用) a=SBUF; //收取数据 flag=1; //标志置位 RI=0; }

TXD

GND

较远距离传送电 路
RXD TXD
RXD
TXD
GND
GND
RXD TXD GND
微机其他 设备


RXD

TXD

GND
10
接 微 机口
远距离传送电路
调电 电调
制话 话制
解分 分解
调机 机调


接微 机

数字信号通过调制器变成模拟信号通过电话线传送到 对方,接收方通过解调器将模拟信号转换成数字信号 接收。
RI:接收中断标志位。接收前,必须用软件清零,接 收过程中RI保持零电平,接收完一帧数据后由 片内硬件自动置“1”。如果再接收必须用软件清 零。
17
SM2:多机通信控制位 主要用于方式2、3。在不同串口工作方式下,通
过控制SM2,可以实现多机通信。
SM2作用: 在方式2,3中,发送机SM2=1(程序设置). 接收机SM2=1,若RB8=1,激活RI,引起接收中断RB8=0, 不激活RI,不引起接断。SM2=0,无论RB8=1还是RB8=0 均激活RI引起接收中断。在方式 0 中, SM2应置为0。 在方式1中, 当接收时SM2=1, 则只有收到有效停止位 才激活RI。
TI溢出率:
T1定时器溢出的频率,即 TI定时器每次溢出所需
时间T的倒数1/T。
8
常用波特率初值表
注:
串口方式1定时器1方式2
常用晶振11.0592(MHZ) 波特率9600 SMOD=0
初值: TL0=0xfd
TH0=0xfd 十进制数:(253)
9
近距离传送电路
RXD TXD GND
微机

RXD
23
24
最大通信距离: 15m
RS422:
10Mbit/s: 300m
90Kbit/s: 1200m
5
RS-232电平与TTL电平的转换
<1>计算机为 RS-232电平信号 ,单片机为TTL电 平信号(TXD P3.1口 发送 RXD P3.0口 接收) <2>计算机与单片机的通信根本在于不同电平信号 之间的转换和传输
SM0=0; //串口通信模式设置
SM1=1;
REN=1; //串口允许接收数据
EA=1; //开总中断
ES=1; //开串行中断
21
}
主函数分析
void main()
{
init();
while(1)
{ if(flag==1) //如果有数据则进入这个语句 { ES=0; //进入发送数据时先关闭串行中断
0 0---方式0,
0 1---方式1
1 0---方式2,
1 1---方式3
REN:串行接收允许位。
0---禁止接收, 1---允许接收
TB8: 在方式2,3中,TB8是发送机要发送的第9位数据。
16
RB8:在方式2,3中,RB8是接受机收到的第9位数据, 该数据来自发送机的TB8。
TI:发送中断标志位。发送前必须用软件清零,发 送过程中TI保持零电平,发送完一帧数据后,由 硬件置 “1”,如果再发送,必须用软件再清零。
相关文档
最新文档