51单片机通信

 一、串口通信实验

## 1.通信的基本概念 通信的方式可以分为多种,按照数据传送方式可分为串行通信和并行通 信。按照通信的数据同步方式,可分为异同通信和同步通信。按照数据的传输方 向又可分为单工、半双工和全双工通信。### 1.1 串行通信与并行通信 (1)串行通信: 串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占 据一个固定的时间长度。如下图所示: ![alt text](image.png)串行通信的特点:传输线少,长距离传送时成本低,且可以利用电(2)并行通信:通常是将数据字节的各位用多条数据线同时进行传送,通常是 8 位、16 位、32 位等数据一起传输。如下图所示:![alt text](image-1.png)并行通信的特点:控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难,抗干扰能力差。### 1.2 异步通信与同步通信 (1)异步通信 异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。如下图所示:![alt text](image-2.png)![alt text](image-3.png)异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加 2~3 位用于起止位,各帧之间还有间隔,因此传输效率不高。(2)同步通信 同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同 步。如下图所示:![alt text](image-4.png)### 1.3 单工、半双工与全双工通信 (1)单工通信 单工是指数据传输仅能沿一个方向,不能实现反向传输。 (2)半双工通信 半双工是指数据传输可以沿两个方向,但需要分时进行。 (3)全双工通信 全双工是指数据可以同时进行双向传输。### 1.4 通信速率 >衡量通信性能的一个非常重要的参数就是通信速率,通常以比特率(Bitrate)来表示。比特率是每秒钟传输二进制代码的位数,单位是:位/秒( bps)。>如常见的通信传输中,用 0V 表示数字 0,5V 表 示数字 1,那么一个码元可以表示两种状态 0 和 1,所以一个码元等于一个二 进制比特位,此时波特率的大小与比特率一致;如果在通信传输中,有 0V、 2V、 4V 以及 6V 分别表示二进制数 00、 01、 10、 11,那么每个码元可以表示四 种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候 的波特率为比特率的一半。由于很多常见的通信中一个码元都是表示两种状态, 所以我们常常直接以波特率来表示比特率.## 2.单片机串口介绍### 2.1串口通信简介串口通信(Serial Communication),是指外设和计算机间通过数据信号线、 地线等按位进行传输数据的一种通信方式,属于串行通信方式。#### (1)接口标准 串口通信的接口标准有很多,有 RS-232C、 RS-232、 RS-422A、 RS-485 等。 常用的是 RS-232 和 RS- RS-232C 接口规定使用 25 针连接器,简称 DB25,连接器的尺寸及每个插 针的排列位置都有明确的定义,如下图所示:![alt text](image-5.png) RS-232C 还有一种 9 针的非标准连接器接口,简称 DB9。串口通信使用的大 多都是 DB9 接口。DB25 和 DB9 接头有公头和母头之分,其中带针状的接头是 公头,而带孔状的接头是母头。9 针串口线的外观图如下图所示:![alt text](image-6.png)#### RS-232C标准接口引脚定义![alt text](image-7.png)RS-232C 对逻辑电平也做了规定,如下: 在 TXD 和 RXD 数据线上 1.逻辑 1 为-3~-15V 的电压2.逻辑 0 为 3~15V 的电压 在 RTS、CTS、DSR、DTR 和 DCD 等控制线上: 1.信号有效( ON 状态) 为 3~15V 的电压 2.信号无效( OFF 状态) 为-3~-15V 的电压#### (2)通信协议 RS232 的通信协议比较简单,通常遵循 96-N-8-1 格式。“96”表示的是通信波特率为 9600。“N”表示的是无校验位,“8”表示的是数据位数为 8 位,“1”表示的是 1 位停止位,串口通讯的一个数据包从起始信号开始,直到停止信号结束。 #### (3)串口内部结构![alt text](image-8.png)### 2.2 串口相关寄存器>SM2:多机通信控制位,主要用于方式 2 和方式 3。当 SM2=1 时可以利用收到 的 RB8 来控制是否激活 RI(RB8=0 时不激活 RI,收到的信息丢弃;RB8=1 时收 到的数据进入 SBUF,并激活 RI,进而在中断服务中将数据从 SBUF 读走)。当 SM2=0 时,不论收到的 RB8 为 0 和 1,均可以使收到的数据进入 SBUF,并激活 RI (即此时 RB8 不具有控制 RI 激活的功能)。通过控制 SM2,可以实现多机通信。 REN:允许串行接收位。由软件置 REN=1,则启动串行口接收数据;若软件置 REN=0,则禁止接收。 TB8:在方式 2 或方式 3 中,是发送数据的第 9 位,可以用软件规定其作用。 可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。 在方式 0 和方式 1 中,该位未用到。 RB8:在方式 2 或方式 3 中,是接收到数据的第 9 位,作为奇偶校验位或地 址帧/数据帧的标志位。在方式 1 时,若 SM2=0,则 RB8 是接收到的停止位。 TI:发送中断标志位。在方式 0 时,当串行发送第 8 位数据结束时,或在其 它方式,串行发送停止位的开始时,由内部硬件使 TI 置 1,向 CPU 发中断申请。 在中断服务程序中,必须用软件将其清 0,取消此中断申请。 RI:接收中断标志位。在方式 0 时,当串行接收第 8 位数据结束时,或在其 它方式,串行接收停止位的中间时,由内部硬件使 RI 置 1,向 CPU 发中断申请。 也必须在中断服务程序中,用软件将其清 0,取消此中断申请。 SMOD:波特率倍增位。在串口方式 1、方式 2、方式 3 时,波特率与 SMOD 有 关,当 SMOD=1 时,波特率提高一倍。复位时,SMOD=0。 ### 2.3串口工作方式 #### 方式 0 方式 0 时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输 入或输出口。数据由 RXD(P3.0)引脚输入或输出,同步移位脉冲由 TXD(P3.1) 引脚输出。发送和接收均为 8 位数据,低位在先,高位在后。波特率固定为 fosc/12。对应的输入输出时序图如下所示: ①方式 0 输出 ![alt text](image-9.png) ②方式 0 输入 ![alt text](image-10.png) #### 方式 1 方式 1 是 10 位数据的异步通信口。TXD 为数据发送引脚,RXD 为数据接收引 脚,传送一帧数据的格式如下所示。其中 1 位起始位,8 位数据位,1 位停止位。 ![alt text](image-13.png) ①方式 1 输出 ![alt text](image-15.png) ②方式 1 输入 ![alt text](image-16.png) 方式 2 和方式 3 方式 2 或方式 3 时为 11 位数据的异步通信口。TXD 为数据发送引脚,RXD 为 数据接收引脚。 发送开始时,先把起始位 0 输出到 TXD 引脚,然后发送移位寄存器的输出位 (D0)到 TXD 引脚。每一个移位脉冲都使输出移位寄存器的各位右移一位,并由 TXD 引脚输出。第一次移位时,停止位“1”移入输出移位寄存器的第 9 位上, 以后每次移位,左边都移入 0。当停止位移至输出位时,左边其余位全为 0,检 测电路检测到这一条件时,使控制电路进行最后一次移位,并置 TI=1,向 CPU 请求中断。 ②方式 2、方式 3 输入 接收时,数据从右边移入输入移位寄存器,在起始位 0 移到最左边时,控制 电路进行最后一次移位。当 RI=0,且 SM2=0(或接收到的第 9 位数据为 1)时, 接收到的数据装入接收缓冲器 SBUF 和 RB8(接收数据的第 9 位),置 RI=1,向 CPU 请求中断。如果条件不满足,则数据丢失,且不置位 RI,继续搜索 RXD 引脚 的负跳变。 

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值