文档介绍:208 第 9章串口通信 概述单片机与外界进行信息交换,称为通信。通信有并行通信和串行通信两种基本方式。并行通信是多位数据同时被发送或接收, 如图 9-1(a) 所示; 串行通信则是数据逐位依次被发送或接收,如图 9-1(b) 所示。并行通信和串行通信各有其优缺点,具体如表 9-1 所列。(a )并行通信(b )串行通信图 9-1 通信方式表 9-1 并行通信和串行通信的特点通信方式优点缺点并行通信多位数据同时传输,传送速度快线路位数多,不便长距离传送串行通信适合长距离通信,节省传输线路,有一定的纠错能力多位数据逐位依次传输,传送速度较慢 串行通信串行通信适合长距离、节省传输线、有纠错能力的突出优点, 使其逐渐成为单片机与其它系统通信的主要方式。串行通信又细分为异步通信和同步通信, 单片机主要采用异步通信方式。 1 、异步通信异步通信数据按帧传输, 一帧数据包含起始位、数据位、校验位和停止位。异步通信凭借传输信息中设置的起始位、停止位来保持通信同步。异步通信对硬件要求不高,容易实现且灵活,适用于数据的随机发送/ 接收,但因传送一个字节的数据就要建立一次同步, 加上起始位、校验位和停止位, 使得工作速度相对较低。 2 、同步通信同步通信传输的信息,是由 1~2 个同步字符和多字节数据位组成。同步字符用于保持通信同步并作为起始位, 用以触发同步时钟开始发送或接收数据; 多字节数据之间不能有空隙,每位占用的时间相等。同步通信传输速度快,但需要准确的时钟来实现收发双方的严格同步,硬件要求高,多用于批量数据传送。 串行通信的制式串行通信按照数据传送方向的不同,有三种传输方式: 1 、单工制式单工传输, 是指通信双方传输信息时, 只能从发送方单方向传送数据给接收方, 如图 9-2 所示。图 9-2 单工通信 209 2 、半双工制式半双工传输, 是指通信双方都有接收器和发送器, 都能够进行数据的发送和接收, 但不能在同一时刻接收和发送数据,即发送时不能接收,接收时不能发送。如图 9-3 所示。图 9-3 半双工通信 3 、全双工制式全双工传输, 是指通信双方均设有发送器和接收器, 通信信道相互独立, 既有发送信道又有接收信道。因此, 全双工传输可实现通信双方数据的同时发送和接收, 即发送时可以接收,接收时也可以发送。如图 9-4 所示。图 9-4 全双工通信 51 单片机内部的串行接口是全双工的,即它能同时发送和接收数据。发送缓冲器只能写入而不能读出, 接收缓冲器只能读出而不能写入。串行口还具有接收缓冲功能, 即从接收缓冲器中读出前一个已收到的字节数据之前, 就可以开始接收第二字节数据了。串行口的内部结构如图 9-5 所示。图 9-5 串行口结构示意图单片机知识:串口缓冲器 SBUF 串口缓冲器 SBUF ,是在物理上彼此独立的两个缓冲器:一个是接收缓冲器,用于存放接收到的数据; 另一个是发送缓冲器, 用于存放待发送的数据。所以, 数据的发送和接收可以同时进行。两个缓冲器共用一个地址 99H ,通过对 SBUF 的读、写语句,可以区分当前进行的操作是针对接收缓冲器还是发送缓冲器:如果 CPU 在写 SBUF ,操作的对象就是发送缓冲器;而 CPU 在读 SBUF 时,操作的对象就是接收缓冲器了。例如: SBUF=send[i]; // 发送第 i 个数据 buffer[i]=SBUF; // 接收数据 单片机间的串口通信功能说明: 单片机 a 与单片机 b, 通过串行口进行通信。a 机发送数据,b 机接收 a 机发送 210 的数据,并进行相应处理。按键 K1 每按下一次,连接在 b机 引脚的蜂鸣器就报警鸣响一次, 同时, 连接在 b机 引脚的发光二极管 D1 闪烁一次。按键 K2 按下一次, 连接在 b机 引脚的蜂鸣器报警鸣响两次,同时,连接在 b机 引脚的发光二极管 D1 闪烁两次。硬件说明: 1、硬件电路连接如图 9-6 所示,单片机 a的 引脚( TXD ) ,连接到单片机 b的 引脚( RXD )。 2 、按键 K1 和 K2 分别连接到单片机 a的 和 引脚;图 9-6 双机串口通信硬件连接图程序清单如下: // 双机串口通信, a 机发送数据程序#include <reg5 2 .h> #define uchar unsigned char sbit k1=P1^0; sbit k2=P1^1; uchar i =0 ; //************************************************************ void delay(uchar i) // 延时子函数{ u