单片机的串行口及应用
通信方式:
1.并行通信:数据的各位同时进行传送。速度快、效率高、成本高
2.串行通信:数据一位一位地按顺序进行传送。减少传输线、降低通信成本
按照数据传送方向: 单工、半双工、全双工。一般情况下多数串行口工作在半双工,原因:用法简单。
波特率: 每秒传送二进制属马的位数,单位pbs (位/秒),衡量的是数据的传输速率,常用的波特率有2400bps、4800bps、9600bps…等。接收端和发送端的比特率分别设置时,必须保证两者相同。
串行通信的两种基本通信方式:
1.异步通信;
以字符(或字节)为单位组成的数据帧进行传送。一帧数据由 起始位、数据位、可编程校验位和停止位组成。
组成:起始位、数据位、可编程位、停止位。
同步通信
数据以块为单位连续进行的传送,在传送数据前首先通过同步信号保证发送和接收端同步(该同步信号一般由硬件实现)。然后连续传送整块数据。特点有同步时钟线。
7.2 MCS-51 的串行口控制器
串行口的内部结构
MSC-51 内部有一个可编程的全算公共串行通信接口,可以作为通用异步就收/发送器(UART),也可作为同步移位寄存器,他的数据帧格式可分为 8位、10位、11位3 种。可设置多种不同的波特率。通过引脚RXD(P3.0)、TXD(P3.1)与外界进行通信。结构如图;
虚线框内部是串行口结构,包括 两个数据缓存器 SBUF 串行控制寄存器 SCON 发送和接受引脚。两个SBUF(发送/接收)在物理上是相互独立的,但是公用一个地址(99H),通过读写指令来区分到底是对那个SBUF进行操作。
发送控制器的作用是在 门电路 和 定时器T1 的配合下将SBUF(发)的并行数据转换为串行数据并自动添加起始位、可编程位、停止位。这一过程结束可是发送中断请求标志位TI 自动置1,用于通知CPU已将数据发送到TXD引脚。
接收控制器的作用是在 接收移位寄存器 和 定时器T1 的配合下将来自 RXD引脚 的串行数据转换为并行数据并自动过滤掉 起始位、可编程位、停止位。这一过程结束可是接收中断请求标志位RI 自动置1,用于通知CPU已将数据存入SBUF(收)。
整体来看:发送的数据从SBUF(发)直接发出。接收的数据要先经过接收移位寄存器后才到达SBUF(收),接收完数据到SBUF(收)后接收端可通过接收移位寄存器立即接收下一帧数据。因此发送端为单缓冲结构,发送端为算换从结构,好处是避免在第二帧接受的数据到来时,CPU 未来得及接受地一帧数据而引起两针数据重叠错误。
定时器T1的作用是产生用以接受过程中节拍控制的时钟信号(方波脉冲)。
串行口控制寄存器
两个:串行口控制寄存器SCON、电源控制俱存其PCON
SCON串行口寄存器(98H)
SM2、TB8、RB8 主要用于多机通信.
| SM0 | SM1 | 方式 | 功能说明 |
|---|---|---|---|
| 0 | 0 | 0 | 8位同步移位寄存器方式 |
| 0 | 1 | 1 | 10位数据异步通信方式 |
| 1 | 0 | 2 | 11位数据异步通信方式 |
| 1 | 1 | 3 | 11位数据异步通信方式 |
PCON电源控制寄存器(不可位寻址)
通信波特率的计算
51单片机以定时器1作为波特率信号发生器,其溢出脉冲经过分频单元后送到手法控制器中,分频单元如图:
波特率的计算公式:通讯时钟波特率 = fosc/(12*(2^n - a)) * 2^SMOD/32
晶振频率 fosc 一定后波特率大小取决于 T1 的工作方式 你和计数初值 a,也取决于波特率选择为SMOD。
7.3串行口工作方式0及其应用(8位同步移位寄存器方式)
SM0 SM1 = 00 时为串口工作方式0状态,
串口方式0逻辑示意图
数据帧8位为一帧,先传输低位,后传输高位。无起始位和停止位,都有P3.0引脚出入。通信固定频率为12分频晶振,出供给内部收发逻辑外还通过引脚P3.1输出,作为芯片接口的移位时钟信号。
工作方式 0 并不用于串行通信,而是通过串并转换用于扩展单片机I/O口。方式0通常与移位寄存器芯片配合使用。
实例1 二级管循环显示
/*
*/
7.4串行工作方式1及其应用(10位数据异步通信方式 )
SM0 SM1 = 10 时为串行口工作方式1状态,与方式0相比方式1发生了如下变化
1.通信时钟波特率是可变的,由软件设定为不同速率,其值为:
fosc/(12*(2^n - a)) * 2^SMOD/32
因此,串行口工作方式一 初始化时要设置 TMOD(CATE、C/T、M1、M0)、PCON(SMOD),并确定计数器初值a。
2.发送数据由TXD(P3.1)接收数据RXD(P3.2).需经过接收移位寄存器换从输入,初始化时需设置SCON(RI,TI、REN、SM1,SM0).
数据帧由十位组成,1位起始位 1位终止位 八位数据位。主要用于点对点串行通信
7.5串行工作方式2及其应用(11位数据异步通信方式 )
SM0 SM1 = 10 时为串行口工作方式2;
1.与方式1相比,数据帧有11为组成,1位起始位、8位数据位、1位可编程位、1位停止位。在发送时 TB8 的值可以自动被添加到数据真的第 9 位并随数据帧一起发送。接收时 数据帧的第 9 位可自动被送入 RB8 中第九位数据可有用户安排,可以做为奇偶校验位也可做其他控制位。
2.通信时钟频率是固定的,可由 SMOD 设置为 1/32或1/64晶振频率。即 2^SMOD/64 * fosc 。初始化时仅需要设置PCON。
3.发送完成后(SBUF发 为空),TI自动置1 ;但接收完成后(SBUF收 为空),RI的状态要由 SM2 和 RB8 共同决定。若SM2 = 1,仅当 RB8 = 1 时接受逻辑单元才能使 RI置 1。 若此时RB8 = 0 则接收逻辑单元也无法使RI 置1.。 反之若 SM2 = 0 无论 RB8 为何值,接收逻辑单元都能使 RI 置 1.
7.6 串行工作方式3及其应用(11位数据异步通信方式)
SM0、SM1 = 11 时串行口工作在方式 3。与方式2相比 方式 3 的波特率是可变的。(其余都与方式 2 相同)
fosc/(12 * (2^n - a)) * 2^ SMOD /64
方式3 主要用于要求进行错误校验或者 主从式 系统通信的场合。 每个从机都有各自独立的地址00H、11H等,从机初始化都设置为串口方式 2 或 3,并使 SM2 = REN = 1(多机通信、允许接收),开放串口中断。主机向某从机发送命令时先发送目标从机的地址给所有从机,之后再发送数据或命令信息。主机发送的地址信息的第 9 位为 1 。数据或命令信息的第九位 为 0 .
从机接受到地址信息后。从机接收到的第九位都为 1 ,都能**中断。在中断函数里比对 本机地址与发来的地址对比相符使本机 SM2 为0 . 不相等继续保持为1。