项目十 串行通信(课件)-《单片机技术应用》同步教学(北理版)
|
28页
|
59人阅读
|
2人下载
普通
内容正文:
项目十 串行通信
任务一 单片机串行口的基本应用
任务二 双机串行通信应用
返回
1
任务一 单片机串行口的基本应用
一、任务描述
通过学习,了解异步通信基本知识,熟悉 51 系列单片机串行口内部结构,掌握串行口通信方式及串行口指令的应用。
二、基础知识
1. 异步串行通信
在串行通信中,数据字节一位一位串行地顺序传送,通过串行接口实现。它的优点是只需一对传送线,大大降低了传送成本,特别适用于远距离通信;其缺点是传送速度较低。
图 10 − 1 所示为串行数据通信方式的连接方法。
下一页
返回
任务一 单片机串行口的基本应用
按照串行数据的时钟控制方式,串行通信分为异步通信和同步通信两类。这里只介绍异步通信。在异步通信中,数据是以字符为单位组成字符帧传送的。发送端和接收端由各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。每一字符帧的数据格式如图 10 − 2 所示。
在帧格式中,一个字符由四个部分组成:起始位、数据位、奇偶校验位和停止位。
2. 波特率
波特率,即数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是位 / 秒( b/s ),常用 bps 表示。
上一页
下一页
返回
任务一 单片机串行口的基本应用
波特率是异步通信的重要指标,表征数据传输的速度,波特率越高,数据传输速度越快,在数据传送方式确定后,以多大的速率发送 / 接收数据,是实现串行通信必须解决的问题。
假设数据传送的速率是 120 字符 / 秒,每个字符格式包含 10 个代码位( 1 个起始位、 1 个停止位、 8 个数据位),则通信波特率为:
120 字符 / 秒 ×10 位 / 字符 =1 200 b/s=1 200 波特
每一位的传输时间为波特率的倒数:
T d =1/1 200=0.833 ( ms )
上一页
下一页
返回
任务一 单片机串行口的基本应用
3. MCS − 51 单片机串行接口内部结构
MCS − 51 内部有一个可编程全双工串行接口,具有 UART (通用异步接收和发送器)的全部功能,通过单片机的引脚 RXD ( P3.0 )、 TXD ( P3.1 )同时接收、发送数据,构成双机或多机通信系统。 MCS − 51 串行口的内部结构,如图 10 − 3 所示。
在图 10 − 3 中,与 MCS − 51 串行口有关的特殊功能寄存器为 SBUF 、 SCON 、 PCON ,下面对它们分别讨论。
( 1 ) 串行口数据缓冲器 SBUF 。 SBUF 是一个特殊功能寄存器,有两个在物理上独立的接收缓冲器与发送缓冲器。发送缓冲器只能写入不能读出,写入 SBUF 的数据存储在发送缓冲器中,用于串行发送;接收缓冲器只能读出不能写入。
上一页
下一页
返回
任务一 单片机串行口的基本应用
两个缓冲器共用一个地址 99H ,通过对 SBUF 的读、写指令来区别是对接收缓冲器还是发送缓冲器进行操作。接收或发送数据,是通过串行口对外的两条独立收发信号线 RXD ( P3.0 )、 TXD ( P3.1 )来实现的。
( 2 ) 串行口控制寄存器 SCON 。 SCON 用来控制串行口的工作方式和状态,字节地址为98H ,可以位寻址。 SCON 的格式如下所示:
SCON ( 98H ) SM0 SMl SM2 REN TB8 RB8 TI RI
SM0 、 SM1 :串行口工作方式选择位,其定义如表 10 − 1 所示。
SM2 :多机通信控制位,用于方式 2 和方式 3 中。
上一页
下一页
返回
任务一 单片机串行口的基本应用
在方式 2 和方式 3 处于接收方式时,若 SM2=1 ,表示置多机通信功能。如果接收到的第 9 位数据 RB8 为 1 ,则将数据装入 SBUF ,并置 RI 为 1 ,向 CPU 申请中断;如果接收到的第 9 位数据 RB8 为 0 ,则不接收数据, RI 仍为 0 ,不向 CPU 申请中断。若 SM2=0 ,不论接收到的第 9 位 RB8 为 0 还是为 l , TI 、 RI 都以正常方式被激活,接收到的数据装入 SBUF 。在方式 1 中,若 SM2=1 ,则只有收到有效的停止位后, RI 置 1 。在方式 0 中, SM2 应为 0 。
REN :允许串行接收位。 REN=l 时,允许接收; REN=0 时,禁止接收。
TB8 :发送数据的第 9 位。在方式 2 和方式 3 中, TB8 是第 9 位发送数据,可做奇偶校验位。
上一页
下一页
返回
任务一 单片机串行口的基本应用
在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定发送地址帧时, TB8为 1 ,发送数据帧时, TB8 为 0 。
RB8 :接收数据的第 9 位。在方式 2 和方式 3 中, RB8 是第 9 位接收数据。
TI :发送中断标志位。在方式 0 中,发送完 8 位数据后,由硬件置位;在其他方式中,在发送停止位时由硬件置位。因此, TI 是发送完一帧数据的标志,当 TI=l 时,向 CPU 申请串行中断,响应中断后,必须由软件清除 TI 标志位。
RI :接收中断标志位。在方式 0 中,接收完 8 位数据后,由硬件置位;在其他方式中在接收停止位的中间点由硬件置位。
上一页
下一页
返回
任务一 单片机串行口的基本应用
接收完一帧数据时 RI=l ,向 CPU 申请中断,响应中断后,必须由软件清除 RI 标志位。
( 3 ) 电源及波特率选择寄存器 PCON 。 PCON 主要是为 CHMOS 型单片机的电源控制而设置的专用寄存器,字节地址为 87H 。
D7 D6 D5 D4 D3 D2 D1 D0
PCON ( 87H ) SMOD SMOD0 LVDF POF GF1 GF0 PD IDL
PCON 的最高位 SMOD 为串行口波特率的倍增位。在方式 1 、 2 和 3 时,串行通信的波特率与 SMOD 有关。当 SMOD=l 时,通信波特率加倍,当 SMOD=0 时,波特率不变。其他各位为掉电方式控制位,在此不再赘述。
上一页
下一页
返回
任务一 单片机串行口的基本应用
三、串行口工作方式与波特率设置
1. 串行口工作方式 1 介绍
51 系列单片机的串行口有 4 种工作方式,通过 SCON 中的 SM1 、 SM0 位来决定,如表 10 − 1 所示。其中方式 0 常用于扩展 I/O 口,在此不作介绍,本应用中采用工作方式 1 。方式 1 为波特率可调的 8 位通用异步通信接口。发送或接收一帧信息为 10 位,分别为起始位 0 , 8 位数据位和 1 位停止位 1 。
2. 波特率设置
在串行通信中,收发双方必须采用相同的数据传输速度,即采用相同的波特率。
上一页
下一页
返回
任务一 单片机串行口的基本应用
AT89S51单片机的串行口有 4 种工作方式,其中方式 0 和方式 2 的波特率是固定的,方式 1 和方式 3的波特率是可变的,由定时器 T1 的溢出率决定。
四、单片机串行口通信测试
1. 硬件电路
图10−4 将单片机的发送端(P3.1)与接收端(P3.0)接在一起,可以测试单片机的串口通信功能。设单片机主频为12 MHz,波特率为62.5 kb/s。程序执行后,8 个发光二极管闪烁表示通信正常。
上一页
下一页
返回
任务一 单片机串行口的基本应用
2. 程序清单
查 表 10−2 可知定时器采用工作方式 2,初值为 FFH,程序如下:
ORG 0000H
MOV TMOD,#20H ;定时器 1 设为工作方式 2
MOV TL1,#0FFH
MOV TH1,#0FFH ;置定时器初值
SETB TR1 ;启动 T1
MOV SCON,#50H ;串口设置为方式 1,REN=1
STA:CLR TI ;清发送标志
上一页
下一页
返回
任务一 单片机串行口的基本应用
MOV P0,#00H ;送亮灯信号
ACALL DELAY ;调延时子程序
MOV A,#0FFH
MOV SBUF,A ;发送灭灯信号
JXFS: JNB TI,JXFS ;发送等待
JXJS: JNB RI,JXJS ;接收等待
CLR RI ;清接收标志
MOV A,SBUF ;接收数据
MOV P0,A ;接收送据(灭灯信号)送 P0 口
上一页
下一页
返回
任务一 单片机串行口的基本应用
ACALL DELAY ;调延时子程序
SJMP STA ;重复
DELAY: MOV R0,#0FFH ;延时子程序
DAL: MOV R1,#0FFH
DAL1: DJNZ R1,DAL1
DJNZ R0,DAL
RET
END
上一页
下一页
返回
任务一 单片机串行口的基本应用
3. 程序分析
(1) MOV SBUF,A:将累加器内容送串口缓冲区,此指令执行后,单片机执行数据发送功能,串行数据从 P3.1 输出。
(2) JXFS:JNB TI,JXFS:数据发送完后,TI 被自动置 1。此指令查询 TI 是否为 1,即是否发送完成,若未完则继续查询等待,直到发送完毕,TI 置 1。
(3) JXJS:JNB RI,JXJS:接收等待。数据接收完毕,RI 被置 1,执行下面指令。
上一页
下一页
返回
任务一 单片机串行口的基本应用
(4) CLR RI:接收完毕,清接收完成标志。
(5) MOV A,SBUF:将接收至缓冲区的数据送入累加器 A。
(6) 此程序采取查询通信中断标志位方式编写。查询时计算机处于等待状态,工作效率较低,可采取中断方式提高 CPU 工作效率。
上一页
返回
任务二 双机串行通信应用
一、任务描述
通过简单双机通信实训,掌握单片机通信的基本方法,能够用查询与中断两种方式进行通信编程。
二、基础知识
1. 串行通信的制式
在串行通信中按照数据传送方向,串行通信可分为单工、半双工和全双工三种制式。
(1) 单工制式。在单工制式中,只允许数据向一个方向传送,通信的一端为发送器,另一端为接收器。
下一页
返回
任务二 双机串行通信应用
(2) 半双工制式。在半双工制式中,系统每个通信设备都由一个发送器和一个接收器组成,允许数据向两个方向中的任一方向传送,但每次只能有一个设备发送,即在同一时刻,只能进行一个方向传送,不能双向同时传输。
(3) 全双工制式。在全双工制式中,数据传送方式是双向的,允许同时双向传送数据。在实际应用中,异步通信通常采用半双工制式,这种用法简单、实用。
2. 串行口工作方式 2 、方式 3 介绍
在工作方式 2、方式 3 下,串行口为 9 位异步通信接口,发送、接收一帧信息为 11 位:
上一页
下一页
返回
任务二 双机串行通信应用
即 1 位起始位(0)、8 位数据位、1 位奇偶校验位和 1 位停止位(1)。传送波特率与 SMOD有关。其数据帧格式如下所示:
(1) 数据发送。串行口工作于方式 2、方式 3 进行数据发送时,数据由 TXD 端输出,附加的第 9 位数据为 SCON 中的 RB8(由软件设置)。用指令将要发送的数据写入 SBUF,即可启动发送器。送完一帧信息时,TI 由硬件置 1。
(2) 数据接收。当 REN=1 时,允许接收。与方式 1 相同,CPU 开始不断采样 RXD,将8 位数据送入 SBUF 中,接收到的第 9 位数据送入 RB8 中,当同时满足 RI=0,SM2=0 或接收到第 9 位数据为 1 这三个条件时,置 RI=1,否则接收数据无效。
上一页
下一页
返回
任务二 双机串行通信应用
三、利用两台单片机实现近距离通信
1. 硬件电路
当两个单片机距离较近时,甲、乙两机的发送端与接收端分别直接相连,两机共地。执行程序时,甲机将亮灯信号发送给乙机,若通信正常,乙机接收到信号后点亮 8 个发光二极管。乙机采用查询与中断两种工作方式。电路主频为 12 MHz,通信波特率为 62.5 kb/s。
双机通信实训简化电路如图 10−5 所示。
上一页
下一页
返回
任务二 双机串行通信应用
2. 程序清单
3. 程序分析
(1) 在进行双机通信时,两机应采用相同的工作方式和波特率。
(2) 甲机采用查询方式发送数据。
(3) 乙机采用查询与中断两种方式接收数据。采用中断方式接收时,当接收完一字节数据后,RI 被置 1,串行口申请中断,串行口中断程序入口地址为 0023H。
上一页
返回
图 10 - 1
返回
图 10 - 2
返回
图 10 - 3
返回
表 10 - 1
返回
图 10 - 4
返回
表 10 - 2
返回
图 10 - 5
返回
$$