第7章 AT89S51串行口及串行通信技术前几章所涉及的数据传送方式都是并行传送,如AT89S51和外接8位数据的并行传送。
这时外设和单片机间的距离都很短,若很长的话,要实行并行的形式显然要用很多的电缆线,这在布线和经济上都不是适合的。
因此,本章引入串行传送方式,只用一根数据线传送数据的位信号,同时加上一些通信控制信号线,以满足远距离数据传送的需要,如因特网终端和客户端之间的数据通信。
在相同条件下,串行传送速度比并行慢,串行是在牺牲速度的基础上节省成本的。
本章的知识点如下:1.了解数据通信中的并行/串行、同步/异步、单工/双工以及波特率的概念。
2.掌握为什么双机通信时要有通信协议以及通信协议的主要内容。
3.了解AT89S51串行接口的基本结构。
4.理解串行接口控制寄存器SCON 各个位的含义。
5.掌握串行接口的4种工作方式及其实际应用,掌握不同工作方式下的波特率计算方法。
6.理解串行接口中断的概念。
7.了解AT89S51与PC 机间的硬件系统及设计。
重点:1.不同工作方式下的波特率计算。
2.串口收/发数据的协议及流程。
3.串口4种工作方式的应用。
难点:1.AT89S51串行接口的基本结构。
2.MAX232和PC 机的通信。
7.1 串行通信基本知识 本节介绍串行通信的基本介绍,同时介绍通信中常用到的“波特率”的概念,为以下各节学习作基础。
7.1.1 数据通信1. 通信:计算机的CPU 与外设间的信息交换,计算机与计算机间的信息交换。
2. 分类及各方式的特点(1) 并行通信定义:数据的各位同时进行传送(发送或接收)的通信方式。
特点:优点——传送速度快;缺点——数据多少位就要多少根传送线,对于位数多,传送远的通信不合适。
(2) 串行通信定义:数据是一位一位按顺序传送的通信方式。
特点:优点——只需一对传输线(如电话线),大大降低了传送成本,适合于远距离通信;缺点——传送速度相对较慢。
闽江学院电子系 薛小铃对AT89S51单片机,它可以利用P3.0(RXD)和P3.1(TXD)实现串行通信。
并行通信和串行通信方式的连接方法如图7-1所示。
图7-1 两种通信方式的连接方法7.1.2 串行通信的传输方式 串行通信的传输方向通常有如下三种: 单工:数据在发送器→接收器间单方向的传送。
半双工:两端的通信设备都具有发送器和接收器,数据可以向两端的任一方向传送,但是,在同一时刻每端只允许一个方向传送数据(相反设备有效),要么甲站发送乙站接收,要么甲站接收而乙站发送。
全双工:数据可以双向传送,两端间具有独立的通信回路,可以同时接收和传送。
串行通信中,数据传输方式如图7-2所示。
图7-2 串行通信传输方式7.1.3 异步通信和同步通信串行通信有两种基本通信方式:同步通信和异步通信。
1. 异步通信在异步通信中,数据是一帧一帧(包括一个字符代码或一字节数据)传送的,89S5189S51闽江学院电子系 薛小铃每一帧的数据格式如图7-3所示。
图7-3 异步通信数据格式在帧格式中,一个字符由四个部分组成:起始位、数据位、奇偶校验位和停止位。
首先是一个起始为(0),然后是5位--8位数据,接下来是奇偶校验位(可省略),最后是停止位(1)。
(1) 起始位:位于开头,只占一位,用逻辑口通知接收设备发送端开始发送一帧信息,若不传送字符帧,始终保持为1。
(2) 数据位:紧跟起始位之后,可以是5位、6位、7位或8位数据,且低位在前,高位在后。
传送ASCII 字符,则常取7位。
(3) 奇偶校验位:位于数据位之后,只占一位,用于有限差错检测,通信双方要约定一定的校验方式,起始位和奇偶校验位包含逻辑1的个数为偶数,则为偶校验,否则为奇校验。
也可用这一位(1/0)来确定这一帧中的字符所代表信息的性质(地址/数据等)。
该位可以省略。
(4) 停止位:位于末尾,为逻辑1高电平,通常可取1位、1.5位或2位,表示一帧字符已发送完毕,也为下一帧字符做准备。
只要接收到“0”,就意味下一帧字符的开始。
若发送一字符帧完之后,并不马上发送下一帧,那么这两帧字符间就要用“1”隔开,称为空闲位。
图7-2(b)就表示了这一特性。
2. 同步通信同步通信是一种连续按顺序串行传送数据的通信方式,一次通信只传送一帧信息,和异步通信中的字符帧不同,一帧的信息是连续的数据信息。
同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步字符SYNC 来指示,其数据格式如图7-4所示,图的上半部分是双同步字符帧结构,图的下半部分是单同步字符帧结构。
闽江学院电子系 薛小铃图7-4 同步通信数据格式同步字符的插入可以是单同步字符方式或双同步字符方式,如图7-4所示,然后是连续的数据块。
同步字符可以由用户约定,当然也可以采用ASCII 码中规定的SYNC 代码,即16H。
在国际标准中,通常用“EB90H”作为双同步字符。
按同步方式通信时,先发送同步字符,接收方检测到同步字符后,即准备接收数据。
在同步传送时,要求用时钟来实现发送端与接收端之间的同步。
为了保证接收正确无误,发送方除了传送数据外,还要同时传送时钟信号。
同步传送可以提高传输速率(达56kb/s 或更高),但硬件比较复杂。
3. 波特率(Baud rate )波特率即数据传送速率,表示每秒钟传送二进制代码的位数,其单位是b/s 。
它亦称为比特数bps (bit per second )。
波特率是串行通信的重要指标,表示数据传输的速度,如异步通信中,数据传送速率120字符帧/s ,一个字符帧包含10b ,则波特率=120字符帧/s*10b/字符帧=1200b/s说明:(1) 每位代码的传输时间T d 为波特率的倒数。
如以上例子的 (2) 字符帧的传送速率是指每秒钟所传字符帧的帧数。
如一个字符帧为10b ,另一个为11b ,则字符帧的传送速率分别为1200/10=120帧/s ,1200/11=109.09帧/s 。
可见,波特率相同字符帧的传送速率并一定相同,它和帧格式有关。
7.1.4 串行通信过程 1. 串←→并转换 解决的问题:把要发送的并行数据串行化,把接收的数据并行化。
原则:低位在前,高位在后。
具体转换原理如图7-5和图7-6所示。
闽江学院电子系 薛小铃图7-5 发送时的并-串转换图7-6 接收时的串-并转换2. 设备同步以同步时钟控制发送和接收设备的同步,有效的控制通信线路上的信号变化,从而确保发送数据被正确接收。
同时,要保证通信双方采用统一的编程方法(格式相同)和能产生相同的传送速率,从而保证bps 一致。
比如,起始位可起到设备同步的作用。
7.2 串行口及应用 第二章的学习,我们知道AT89S51单片机除4个并行I/O 口外,还有一个可编程全双工的异步串行通信接口。
它有两个功能:①具有UATR 的全部功能;②作移位寄存器实现单片机系统点对点通信和单片机与微机的单机或多机通信。
本节的内容包括串行口的结构、工作方式(涉及到SCON 、PCON )及应用。
7.2.1 AT89S51串行口1. 结构AT89S51单片机的串行口结构简图如图7-6所示。
它由三部分组成:时钟部分、异步接收部分和异步发送部分。
闽江学院电子系 薛小铃图7-7 串行口内部结构示意简图(1) 时钟部分在7.1节学习,已知异步串行通信数据的传送(发送/接收)是在时钟控制下进行的,由第6章可知:晶振f OSC 经过12分频(得到机器周期)可以控制定时/计数器T1,产生定时时间,它的倒数即所谓的溢出率,即T1可以作为串行通信的波特率发生器,T1溢出率经2分频或不分频后又经16分频可作为异步接收/发送的时钟信号,它又可以作为输入移位寄存器的时钟,可见移位脉冲和异步传送同步,即移位脉冲的频率和异步传送的波特率相同。
由图7-7可以看出,T1溢出是2分频还是不分频后再16分频,取决于SMOD 控制寄存器:若SMOD=1,则不分频;若SMOD =0,则2分频。
(2) 异步接收部分当“1到0跳变检测器”检测到RXD 线上有效电平时,便可确认RXD 线上出现了起始位,它的值为0。
输入移位寄存器开始接收RXD 线上的一帧数据,并装载到接收SUBF 中,一帧字符接收之后就自动去掉起始位并使RI =1,从而向CPU 提出中断请求,CPU 响应中断后,可以通过“MOV A,SBUF ”指令把接收到的字符送入累加器A 中。
至此,一帧字符的接收结束,根据需要还可进行下一步的接收。
(3) 异步发送部分(双缓冲结构)当有指令“MOV SBUF,A ”时,SBUF 开始装载由A 送来的一帧数据,然后在移位脉冲控制下,一位一位地从TXD 线上送出字符帧,发送完毕,TI 自动置位。
说明:接收和发送中都有SBUF ,它们共同占有一个地址99H ,CPU 根据不同指令对它们进行读/写操作。
2. 串行口控制字及控制寄存器AT89S51单片机的可编程串行口有2个控制寄存器SCON 和PCON ,可以选择串行口的通信方式和波特率。
(1) SCON (98H )AT89S51串行通信的方式选择、接收和发送控制以及串行口的状态标志等均由闽江学院电子系 薛小铃特殊功能寄存器SCON 控制和指示,其控制字格式如图7-8所示。
图7-8 串行口控制寄存器SCON①SM0和SM1(SCON.7,SCON.6)——串行口工作方式选择位。
两个选择位对应4种通信方式,如表7-1所示。
其中,f OSC 是振荡频率。
②SM2:多机通信控制位。
主要用于方式2和方式3。
③REN :接收控制位(串行口开关)。
由软件置1或清0,只有当REN =1时才允许接收,相当于串行接收的开关;若REN =0,则禁止接收。
在串行通信接收控制过程中,如果满足RI =0和REN =1(允许接收)的条件,就允许接收,一帧数据就装载入接收SBUF 中。
④TB8:发送数据的第9位。
⑤RB8:接收数据的第9位。
⑥TI :发送中断标志。
在一帧数据发送完时被置位。
在方式0串行发送第8位结束或其他方式串行发送到停止位的开始时由硬件置位,可用软件查询。
它同时也申请中断,TI 置位意味着向CPU 提供“发送缓冲器SBUF 已空”的信息,CPU 可以准备发送下一帧数据。
串行口发送中断被响应后,TI 不会自动清0,必须由软件清0。
⑦RI :接收中断标志。
在接收到一帧有效数据后由硬件置位。
在方式0中,第8位数据发送结束时,由硬件置位;在其他三种方式中,当接收到停止位中间时由硬件置位。
RI =1,申请中断,表示一帧数据接收结束,并已装入接收SBUF 中,要求CPU 取走数据。
CPU 响应中断,取走数据。
RI 也必须由软件清0,清除中断申请,并准备接收下一帧数据。
闽江学院电子系 薛小铃(2) PCON (87H )电源控制寄存器PCON 中只有SMOD 位与串行口工作有关,如图7-9所示。