51单片机串口通信

1.通信方式分类

(1)并行通信
发送方和接收方用多根数据线连接,多位数据同时发送。传输线多,长距离传输时成本大。
51单片机串口通信_第1张图片
(2)串行通信
单根数据线发送数据,逐位发送。长距离传送成本低,但控制相对复杂。
在这里插入图片描述

串行通信又可分为:异步串行通信同步串行通信

异步串行通信:所谓“异步”,指的是双方设备使用各自的时钟,以字符为单位传输,采用一种特殊的格式称为“帧”(如下图),且各字符之间的间隙不等。51单片机串口通信_第2张图片
一帧数据由起始位,数据位,校验位和停止位构成。

常态下,数据线上为高电平。起始位为低电平,也就是说,起始位出现,表示有一帧数据要传输了。

校验方式有奇偶校验和校验循环冗余校验三种方式。

其中“和校验”是指,对数据块求和,产生一个字节的校验数据存到数据块末尾,接收方接受数据时对数据块再求和,和末尾的校验数据比较,不一致就表示传输发生错误。

同步串行通信:双方的时钟严格一致,传送的字符数据间没有间隙,双方实现同步。

2.RS232和TTL电平的转换

RS232是美国电子工业协会于1962年发布的串行通信接口标准,RS即Recomend Standard,推荐标准,232为标示号。RS232用的是负电平逻辑,-3V ~ -15V 为1,+3 ~ +15V为0。

TTL是Transistor-Transistor Logic的简写,晶体管-晶体管逻辑。工作电压5V。规定:

  • 对于输出电路:电压大于等于(≥)2.4V为逻辑1;电压小于等于(≤)0.4V为逻辑0;
  • 对于输入电路:电压大于等于(≥)2.0V为逻辑1;电压小于等于(≤)0.8V为逻辑0;

RS232和TTL接口不仅有工作电压的不同。RS232传输速率低,传输距离不长,采用共地传输产生共模干扰。二者之间需要通过转换芯片转换电平,如MAX232。

MAX232外围电路图:
51单片机串口通信_第3张图片
上半部分为电源转换电路,下半部分为发送和接收部分。

注意输入输出要一一对应。从T1in输入就要从T1out输出,从R1in输入就要从R1out输出。

3.波特率

波特率是衡量串行数据传输速率的指标,和比特率一个单位,即每秒传输了多少位,bit per second,bps。

波特率的计算公式

51单片机串口通信_第4张图片

计算定时器装入的初值

设初值为X,那么定时器就是每计 256-X 个数溢出一次。

首先根据晶振频率计算计一个数需要的时间。

如11.0592MHz,12个时钟周期等于一个机器周期,所以计一个数需要的时间为频率11.0592MHz的倒数再乘上12,即12/11059200(s)。

那么定时器溢出一次的时间就是 12/11059200*(256-X)。作个倒数就是溢出率。

接着根据采用的波特率和选择的工作方式SMOD,代入上面相应的计算公式,就可以计算出初值X了。此时计算出的X为十进制,然后转成16进制。

常用波特率初值表:
51单片机串口通信_第5张图片

为什么51系列单片机的晶振会用11.0592MHz这个神奇的数?

因为如果采用整数如12MHz或6MHz的话,计算出的初值就不是一个整数,导致定时出现累积误差。试来试去,用11.0592MHz能非常准确地计算出定时器的初值。只要是标准的通信速率,算出来的初值都是整的。

你可能感兴趣的:(单片机)