51单片机串行通信原理

计算机通信

计算机通信:计算机与外部设备或计算机之间的信息交换。基本的通信方式有两种。

  1. 并行通信:将传送数据字节的各位用多条数据线同时进行传送。优点:控制简单,传输速度快。缺点:由于传输线较多,长距离传送成本高且接收方的各位同时接受困难。
  2. 串行通信:所传送的数据各位按顺序一位一位地发送或接收。优点:传输线少,成本低。缺点:控制复杂。

串行通信

异步通信

通信的发送与接收设备使用自己的时钟控制数据的发送和接收过程(两个时钟尽可能一致)。
数据或字符是一帧一帧地传送的。先用一个起始位0表示字符的开始,然后是8位数据,规定低位在前,高位在后。其后是奇偶校验位,此位通过对数据奇偶性的检查,可用于判别字符传送的正确性(可省略)。最后是停止位,用以表示字符的结束。

同步通信

发送方时钟对接收方时钟的完全控制,保持位同步关系也保持字符同步关系。

数据传送速率

波特率: 每秒钟传送二进制代码的位数
单位:位/秒,bps
传输距离随传输速率增加而减少。
调制解调器:由于距离太远时,要先采用调制器把数字信号转换位模拟信号,并加以放大在传送。在接收时,在用解调器把模拟信号转换成数字信号在送入计算机接口。

传输方向

单工:数据传输仅能沿一个方向
半双工:数据传输可以沿两个方向,但要分时进行。
全双工:数据可以同时进行双向输出


单片机串行口

内部硬件结构:两个物理上独立的接受、发送缓冲器SBUF。发送缓冲器只能写入不能读出。接收缓冲器只能读出不能写入。

串行口特殊功能寄存器

串行口控制寄存器SCON

符号字节地址位名称位名称位名称位名称位名称位名称位名称位名称复位值
SCON98HSM0/FESM1SM2RENTB8RB8TIRI0000 0000
  1. RI:接收中断标志位。在方式0时,接收完第8位数据时,RI由硬件自动置1。在其他方式中,串行接收到停止位时,该位置1。RI=1,表示一帧数据接收完毕,并申请中断,要求CPU从接收SBUF取走数据。RI必须用软件清0。
  2. TI:发送中断标志位。。在方式0时,发送完第8位数据时,TI由硬件自动置1。在其他方式中,串行发送停止位的开始时,该位置1。TI=1,表示一帧数据发送完毕,并申请中断,在 CPU响应中断后,在中断服务程序中向SBUF写入要发送的下一帧数据。TI必须用软件清0。
  3. RB8:接收的第9位数据。在方式1时,若SM2=0,RB8接收到的停止位。在方式0中。不使用RB8.
  4. TB8:发送的第9位数据。其值由软件置1或清0。在双机串行通信时,一般作为奇偶校验位使用;在多级串行通信中用来表示主机发送的是地址帧还是数据帧,TB9=1为地址帧,TB8=0为数据帧。在方式0和方式1中,不使用TB8。
  5. REN:允许串行接受位。由软件置1或清0。REN=1,允许串行口接收数据;REN=0,禁止串行口接收数据。
  6. SM2:多机通信控制位。在方式2和方式3时进行。如果SM2=1,则只有当接收到的第九位数据(REB)为1时,才使RI置1,产生中断请求,并将接收到的前8位数据送入SBUF,当接收到的第九位数据位0时,则将接收到的前8位数据丢弃;如果SM2=0,则将前8位数据送入SBUF中,并使RI置1。
  7. SM0/SM1:方式选择位
SM0SM1工作方式功能说明波特率
00方式08位同步移位寄存器常用于扩展I/O口fosc/12
01方式110位URAT8位数据、起始位、结束位可变(由定时器控制)
10方式211位URAT8位数据、起始位0、结束位1和奇偶校验位fosc/32或fosc/64
11方式311位URAT8位数据、起始位0、结束位1和奇偶校验位可变(由定时器控制)

fosc=晶振的频率。
URAT=异步通信寄存器


电源控制寄存器PCON

符号字节地址位名称位名称位名称位名称位名称位名称位名称位名称复位值
PCON87HSMODSMOD0POFGF1GF0PDIDL0xx1 0000

仅SMOD、SMOD0两位与串口有关

  1. SMOD0:帧错位检测有效控制位。当SMOD0=1时,SCON寄存器中的SM0/FE位用于FE(帧错误检测)功能。当SMOD0=0时,SCON寄存器中的SM0/FE位用于SM0功能。
  2. SMOD:波特率选择位。(波特率倍增位):在方式2时,SMOD=1要比SMOD=0时的波特率加倍。

波特率的设定与计算

  1. 方式0
    波 特 率 = f o s c 12 波特率=\frac{f_{osc}}{12} =12fosc
  2. 方式2
    波 特 率 = 2 S M O D 64 × f o s c 波特率=\frac{2^{SMOD} }{64} \times{f_{osc }} =642SMOD×fosc
    串行口工作在方式2时,波特率仅与SMOD位的值有关。
  3. 方式1和方式三
    波 特 率 = 2 S M O D 32 × 定 时 器 T 1 的 溢 出 率 波特率=\frac{2^{SMOD} }{32} \times{定时器T1的溢出率} =322SMOD×T1
    T1常设置为方式2定时,即8位重装入方式,并且不允许T1中断。可以避免软件重装初值带来的定时误差。
    定 时 器 1 的 溢 出 率 = 1 溢 出 周 期 = 1 ( 256 − X ) × T c y = f o s c 12 × ( 256 − X ) 定时器1的溢出率=\frac{1 }{溢出周期}=\frac{1}{(256-X)\times{T_{cy}}}=\frac{f_{osc}}{12\times{(256-X)}} 1=1=(256X)×Tcy1=12×(256X)fosc
    式中Tcy为系统机器周期;X为初值

PC与多个单片机通信

  1. 采用RS-232标准总线通信
  2. 采用RS-422标准总线通信

串口如何使用

串行口工作之前,应对其初始化

  1. 确定T1的工作方式(TMOD);
  2. 计算T1的初值,装载TH1,TL1;
  3. 启动T1(TCON中的TR1位)
  4. 确定串行口控制(SCON)
    中断设置(IE,IP寄存器)
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页