单片机(AT89C51)的串行接口及串行通信(包含实验)

 单片机(AT89C51)的串行接口及串行通信是非常重要的一项技术,我们需要有深度的解刨才可以理解透彻,既然进来了我肯定不会让你失望,点个小赞再走吧。

                                                   

 正式进入串口通信前我们需要了解什么是通信?

计算机与外界信息交换称为通信。通信的基本方式可分为并行通信串行通信(本次的主角):

  1. 并行通信是数据的各位同时发送或同时接收;并行通信-------优点:传送速度快           缺点:不便长距离传送   
  2. 串行通信是数据的各位依次逐位发送或接收;串行通信-------优点:便于长距离传送    缺点:传送速度较慢

目录

异步通信和同步通信

异步通信

同步通信

串行通信波特率

串行通信的制式

单工制式(Simplex)

半双工制式(Half Duplex)

全双工制式(Full Duplex)

串行通信的校验

串行口特殊功能寄存器

 串行口特殊功能寄存器

串行数据缓冲器SBUF

串行控制寄存器SCON

电源控制寄存器PCON

串行工作方式

串行工作方式0(同步移位寄存器工作方式)

        (1)数据发送

        (2)数据接收

串行工作方式1

           (1)数据发送

           (2)数据接收

串行工作方式2、方式3

          数据发送和接收:

      串行口四种工作方式的比较

 常用波特率与其相关参数间的关系

 实验


异步通信和同步通信

 串行通信按同步方式可分为异步通信同步通信

异步通信

  • 异步通信依靠起始位停止位保持通信同步。

  • 异步通信数据传送按帧传输,一帧数据包含起始位、数据位、校验位和停止位

  • 优点:异步通信对硬件要求较低,实现起来比较简单、灵活,适用于数据的随机发送/接收;

  • 缺点:因每个字节都要建立一次同步,即每个字符都要额外附加两位,所以工作速度较低

  • 在单片机中主要采用异步通信方式

同步通信

  • 同步通信依靠同步字符保持通信同步。

  • 同步通信是由12个同步字符和多字节数据位组成,同步字符作为起始位以触发同步时钟开始发送或接收数据;多字节数据之间不允许有空隙,每位占用的时间相等;空闲位需发送同步字符。

  • 同步通信传输速度较快,但要求有准确的时钟来实现收发双方的严格同步,对硬件要求较高,适用于成批数据传送

串行通信波特率

  • 波特率bps(bit per second) 定义:   每秒传输数据的位数,即:1波特 = 1/秒(1bps

  • 波特率的倒数即为每位传输所需的时间。 

  • 相互通信的甲乙双方必须具有相同的波特率,否则无法成功地完成串行数据通信。

串行通信的制式

串行通信按照数据传送方向可分为三种制式:

单工制式(Simplex)

单工制式是指甲乙双方通信时只能单向传送数据,发送方和接收方固定。 

                       

半双工制式(Half Duplex)

半双工制式是指通信双方都具有发送器和接收器,既可发送也可接收,但不能同时接收和发送,发送时不能接收,接收时不能发送。

                    

全双工制式(Full Duplex)

全双工制式是指通信双方均设有发送器和接收器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收时也能发送。

                  

串行通信的校验

  1. 奇偶校验
  2. 累加和校验
  3. 循环冗余码校验Cyclic Redundancy Check,简称CRC

 

                                                            

串行口特殊功能寄存器

80C51系列单片机有一个全双工的串行口,这个口既可以用于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存器使用。

89C51有一个全双工的串行接口,既可以作为串行异步通信(UART)接口,也可以作为同步移位寄存器方式下的串行扩展接口。UART具有多机通信功能。

串行口的基本组成

  串行口特殊功能寄存器由主要的三部分组成:串行数据缓冲器SBUF串行控制寄存器SCON和电源控制寄存器PCON

 串行口特殊功能寄存器

串行数据缓冲器SBUF

      在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H,用同一寄存器名SBUF。

      在物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。

      发送时,只需将发送数据输入SBUFCPU将自动启动和完成串行数据的发送。

      接收时CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接收数据

串行控制寄存器SCON

SCON

SCON

D7

D6

D5

D4

D3

D2

D1

D0

位名称

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

位地址

9FH

9EH

9DH

9CH

9BH

9AH

99H

98H

功能

工作方式

选择

多机通信控制

接收  允许

发送 第9

接收 第9

发送 中断

接收 中断

               ① SM0 SM1 —— 串行口工作方式选择位。

工作方式

SM0

SM1

方式

功能

波特率

0

方式0

移位寄存器方式

fosc/12

0

1

方式1

8位异步通信方式

可变

1

0

方式2

9位异步通信方式

fosc/32fosc/64

1

1

方式3

9位异步通信方式

可变

               ② SM2 —— 多机通信控制位。

               ③ REN —— 允许接收控制位。REN=1,允许接收。

               ④ TB8 —— 方式2和方式3中要发送的第9位数据。

               ⑤ RB8 —— 方式2和方式3中要接收的第9位数据。

               ⑥ TI  —— 发送中断标志。

               ⑦ RI  —— 接收中断标志。

电源控制寄存器PCON

PCON

PCON

D7

D6

D5

D4

D3

D2

D1

D0

位名称

SMOD

GF1

GF0

PD

IDL

          注:SMOD=1,串行口波特率加倍。PCON寄存器不能进行位寻址。

串行工作方式

80C51串行通信共有4种工作方式,由串行控制寄存器SCONSM0 SM1决定。

串行工作方式0(同步移位寄存器工作方式

RXDP3.0)端作为数据移位的输入/输出端,TXDP3.1)端输出移位脉冲。

移位数据的发送和接收以8位为一帧,不设起始位和停止位,无论输入/输出,均低位在前高位在后。

其帧格式为:

• • •

D0

D1

D2

D3

D4

D5

D6

D7

• • •

       注:方式0可将串行输入输出数据转换成并行输入输出数据

        (1)数据发送

串行口作为并行输出口使用时,要有“串入并出”的移位寄存器配合。

                                        

在移位时钟脉冲(TXD)的控制下,数据从串行口RXD端逐位移入74HC164 SASB端。

8位数据全部移出后,SCON寄存器的TI位被自动置1。其后74HC164的内容即可并行输出。74HC164 CLR为清0端,输出时CLR必须为1,否则74HC164 Q0Q7输出为0。

        (2)数据接收

串行口作为并行输入口使用时,要有并入串出的移位寄存器配合。

                                             

74HC165 S/L端为移位/置入端,当S/L=0时,从Q0Q7并行置入数据,当S/L=1时,允许从QH端移出数据。

80C51串行控制寄存器SCON中的REN=1时,TXD端发出移位时钟脉冲,从RXD端串行输入8位数据。当接收到第8位数据D7后,置位中断标志RI,表示一帧数据接收完成。

串行工作方式1

方式1一帧10位的异步串行通信方式,包括1个起始位,8个数据位和一个停止位

其帧格式为:

起始

D0

D1

D2

D3

D4

D5

D6

D7

停止

           (1)数据发送

发送时只要将数据写入SBUF,在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式。然后在移位脉冲的作用下,由TXD端串行输出。一帧数据发送完毕,将SCON中的TI1

           (2)数据接收

接收时,在REN=1前提下,当采样到RXD10跳变状态时,就认定为已接收到起始位。随后在移位脉冲的控制下,将串行接收数据移入SBUF中。一帧数据接收完毕,将SCON中的RI1,表示可以从SBUF取走接收到的一个字符。

串行工作方式2、方式3

        方式23是一帧11位的串行通信方式,即1个起始位,8个数据位,1个可编程位TB8/RB81个停止位。

        其帧格式为:

起始

D0

D1

D2

D3

D4

D5

D6

D7

TB8/RB8

停止

          注:可编程位TB8/RB8既可作奇偶校验位用,也可作控制位(多机通信)用,其功能由用户确定。 

          数据发送和接收:

数据发送和接收与方式1基本相同,区别在于方式2把发送/接收到的第9位内容送入TB8/RB8

        波特率:方式2波特率固定,即fosc/32和fosc/64。  如用公式表示则为:

                          波特率=2^SMOD    fosc/64

      串行口四种工作方式的比较

工作方式

帧 格 式

波 特 率

方式0

8位全是数据位,没有起始位、停止位

固定,即每个机器周期传送一位数据

方式1

10,其中1位起始位,8位数据位,1位停止位

不固定,取决于T1溢出率和SMOD

方式2

11,其中1位起始位,9位数据位,1位停止位

固定,2SMOD×fosc /64

方式3

同方式2

同方式1

 常用波特率与其相关参数间的关系

 实验(https://blog.csdn.net/weixin_45629315/article/details/105810753

最后相信大家肯定对单片机串口通信有了新的了解,这正是我努力的源泉,希望对你们的学习有所帮助。

鄙人不才,如有错误,请指出,万分感谢!!!!

                          

No pains No results 

版权声明:本文为CSDN博主「Be Moster」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45629315/article/details/105717414

生成海报
点赞 0

Be Moster

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

串口通信之————IIC(软件驱动)

B站账号:小光学嵌入式 ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大二学生。⏩最近开始系统性补习STM32基础知识,规划有:串口通信&#xf

STM32串口发送接收数据

1.串口通信 我用的32是stm32f10x最小系统没有UART4和UART5 USART : 通用同步异步收发器 UART : 通用异步收发器 nRTS : 请求发送 nCTS : 请求接收 区别:USART指单片机的一个IO端

ESP8266 无限重启踩坑

最近做了一个电子墨水屏万年历,在移植屏幕代码时遇到了esp8266无限软复位的问题,如果你的串口打印是以下图片所示,那么恭喜你问题解决了。 造成软复位的原因是因为,程序里有死循环&#xf

Lin总线通信在STM32作为主机代码以及从机程序

距离上次做资料准备已经过去六天了。最近在学车,上周末就没有开电脑。这周开始进行了Lin通信的代码整理,目前是可以正常通信的了,采用的是增强型校验方式。后期再进一步跟进研究。。。更新一博,留