单片机串行口介绍

Posted 谢维开

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机串行口介绍相关的知识,希望对你有一定的参考价值。

介绍


 

串行口是单片机与外界进行信息交换的工具,8051单片机的通信方式有两种:

      并行通信:数据的各位同时发送或接收。       串行通信:数据一位一位次序发送或接收。

 

串行通信的方式


 

异步通信

  • 用一个起始位0表示字符的开始,用停止位1表示字符的结束,中间夹着8个数据位,字符能一个接一个传送
  • CPU与外设之间必须有字符格式和波特率两项规定
  1. 字符格式规定能使双方把0和1串理解成同一种意义,原则上自由制定,通用角度使用标准如ASCII
  2. 波特率即数据传输速率,每秒传送的二进制位数,如120字符/s,每个字符10数位,则传送波特率为1200波特

同步通信

去掉了开始结束标志提高速度,但由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。

通信方向

 

在串行通信中,把通信接口只能发送或接收的单向传送办法叫单工传送;把数据能双向传递称为双工传送。半双工传送两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。全双工传送是能同时发送接收。

 

串行接口结构


 

  • 51单片机一个可编程的全双工串行通信接口。可用作异步通信方式(UART),与串行传送信息的外部设备相连接。或用于通过同步或异步标准通信协议进行全双工的8051多机系统,使用TTL或CMOS移位寄存器来扩充I/O口。
  • 8051单片机通过管脚RXD(P3.0,串行数据接收端)和管脚TXD(P3.1,串行数据发送端)与外界通信。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。

 

串行口的控制与状态寄存器


 

串行口控制寄存器 SCON

用于定义串行口的工作方式及实施接收和发送控制,字节地址为98H

D7 D6 D5 D4 D3 D2 D1 D0
SM0 SM1 SM2 REN TB8 RB8 TI
RI

 

 SM0、SM1:串行口工作方式选择位

SM0、SM1 工作方式 功能描述 波特率
0 0 方式0 8位移位寄存器 Fosc/12
0 1 方式1 10位UART 可变
1 0 方式2 11位UART Fosc/64或fosc/32
1 1 方式3 11位UART
可变

 

 

串行口的工作方式


 

方式0

  • 为移位寄存器输入/输出方式。可外接移位寄存器以扩展I/O口,也能外接同步输入/输出设备。8位串行数据者是从RXD输入或输出,TXD用来输出同步脉冲。
  • 输出:发送完毕后终端标志T1硬件置位。(同其他)
  • 输入:当 RI =0和REN =1同时满足开始接收,接收到第八位后数据移至寄存器,硬件置位RI。

                              

方式1

  • 为波特率可变的10位异步通信方式。
  • 输出:当执行一条指令将数据写入发送缓冲SBUF时,就启动发送,发送完一帧硬件置位T1
  • 输入:检测1-0跳变,使用前用软件清零RI和SM2

 

方式2

  • 为固定波特率的11位UART方式。它比方式1增加了一位可程控为1或0的第9位数据。
  • 输出:11位,附加第九位是SCON的TB8位,可作为多机通信中地址/数据信息标志位、奇偶校正位。别的同其他
  • 输入:123同

方式3

     为波特率可变的11位UART方式。除波特率外,其余与方式2相同。

 

波特率选择


 

方式0:方式0的波特率固定为主振频率的1/12。

方式2:波特率由 PCON 中的SMOD位决定

          波特率=2SOMD/64*fosc,SMOD=0或1

 

方式1和3:

             波特率=定时器T1溢出率

             T1溢出率= T1计数率/产生溢出所需的周期数

             

T1计数率取决于它工作在定时器状态还是计数器状态。

  • 当工作于定时器状态时,T1计数率为fosc/12;
  • 当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。

产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。

  • 定时器T1工作于方式0:溢出所需周期数=8192-x
  • 定时器T1工作于方式1:溢出所需周期数=65536-x
  • 定时器T1工作于方式2:溢出所需周期数=256-x

        因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。

 

以上是关于单片机串行口介绍的主要内容,如果未能解决你的问题,请参考以下文章

求助:单片机串行口输出的数据是啥类型

演示STC89xx系列单片机串行口功能 (8-bit/9-bit)

单片机如何同时开定时器中断和串行口中断?

8051单片机实战分析(以STC89C52RC为例) | 12 - 串行口中断的使用

我看的是郭天祥老师的51单片机C语言教程,关于“串行口打印在调试程序中的应用”一节中

51单片机的中断优先级及中断嵌套