本章学习目标 : 了解并行通信与串行通信的含义...

64
本本本本本本 本本本本本本本本本本本本本本 本本本本本本本本 本本本本本本本本本本 本本本本本本本本本本本本本本本 SCON 本 PCON 本 SMOD 本 本本本本本本本 4 本本本本本 本本本本 1 本本 2 本本 3 本本本本本本本 本本 RS-232C RS-422A 本 RS485 本本本本 本本本本本本本本本本本本本本本本 本本本本本本本本本本本 本本本本本本本本本本本本本 5 5 本 本本本本本本 本 本本本本本本

Upload: osgood

Post on 05-Jan-2016

125 views

Category:

Documents


7 download

DESCRIPTION

第 5 章 串行口与通信. 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON 的 SMOD 位 能区分串行口的 4 种工作方式, 熟悉方式 1 、方式 2 、方式 3 程序的编制方法 知道 RS-232C 、 RS-422A 和 RS485 基本性能 理解双机通信和多机通信的基本过程 能读懂教材中的控制实例,学会编写同等难度的控制程序. 5.1串行通信的基础知识. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

本章学习目标 :了解并行通信与串行通信的含义理解波特率的概念,学会波特率的计算方法能按要求正确设置特殊功能寄存器 SCON和 PCON的SMOD 位能区分串行口的 4 种工作方式, 熟悉方式 1 、方式 2 、方式 3 程序的编制方法知道 RS-232C、 RS-422A和 RS485 基本性能理解双机通信和多机通信的基本过程能读懂教材中的控制实例,学会编写同等难度的控制程序

第第 55 章 串行口与通信章 串行口与通信

Page 2: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.1串行通信的基础知识

在实际应用中, 80C51 单片机经常要与外设进行信息交换;单片机与单片机之间或单片机与计算机之间往往也要交换信息,这些信息交换都可以称为通信。

并行通信:并行通信:数据的各位同时送出。占用数据的各位同时送出。占用 I/OI/O 多,速度快。多,速度快。

串行通信:串行通信:数据的各位逐位送出。线路简单,速度慢。数据的各位逐位送出。线路简单,速度慢。

数据通信的传输方式数据通信的传输方式 :: 并行通信和串行通信并行通信和串行通信

传送数据 1101 0010B 时并行通信和串行通信的示意图。

Page 3: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.1.1串行通信的制式

按照信息传送的方向,串行通信可分为 3 种制式。

1 .单工制式

2 .半双工制式

3 .全双工制式

Page 4: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.1.2串行通信的方式

串行通信有两种基本的通信方式:同步通信与异步通信。1. 异步通信 (Asynchronous Communication) 在异步通信中,数据通常是以字符 ( 或字节 ) 为单位组成字符帧传送的。字符帧由发送端逐帧发送,接收端逐帧接收。发送端和接收端由各自的时钟来控制。这两个时钟源可以彼此独立、互不同步。 在帧格式中,一个字符由 4 个部分组成:起始位、二进制数据位、奇偶校验位和停止位。下图给出了典型的异步帧格式。

Page 5: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.1.2串行通信的方式

2 .同步通信( Synchronous Communication) 同步通信在发送一组数据时,只在开始用 1~2 个同步字符作为双方取得同步的号令,然后连续发送整组数据。不像异步通信那样将字符一个一个地分开来传送。格式下图所示。

Page 6: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.1.3串行通信的传输速率

所谓传输速率就是指每秒传输多少位,传输速率也称波特率( bps )。 如果数据传送的速率是 120帧 / 秒,每个帧包含 10 位,则波特率为 10×120=1200 bps ,于是每位传送的时间 T=1/1200=0.833ms 标准波特率系列为110、 300、 600、 1200、 1800、 2400、 4800、 9600和 19200bps 。

Page 7: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.1.4调制解调器(MODEM 又称猫)

在进行远程异步串行数据通信时,二进制的数据位在传输时会出现畸变,可以利用调制解调器解决这个问题。 利用调制解调器进行数据远距离串行通信的过程如下图所示。

Page 8: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.2串行口的基本结构和工作方式

5.2.1串行口的基本组成

全双工的串行通信口,可同时接收和

发送。

接收和发送缓冲器SBUF在物理上共用一个地址 99H。

发送缓冲器 SBUF只能写入不能读出

接收缓冲器 SBUF只能读出不能写入

Page 9: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.2.2串行口的特殊功能控制寄存器

与串行口有关的特殊功能寄存器有SBUF、 SCON、 PCON,与串行口中断有关的特殊功能寄存器有 IE、 IP. 1 .串行口发送 / 接收缓冲器 SBUF( 99H) 2 .串行口控制寄存器 SCON SCON的各位的定义和功能如下:

Page 10: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

SM0、 SM1 : 串行口工作方式选择位(内容见 5.2.3 节)。SM2 : 多机通信控制位。具体用法见 5.3.3 节。REN : 串行接收允许位。由软件置 1 或清 0 。软件置 1 时,串行口允许接收,清 0 后禁止接收。TB8 : 在方式 2 和方式 3 中是发送的第 9 位数据。RB8 : 在方式 2 和方式 3 中是接收的第 9 位数据。TI : 发送中断标志位。发送结束时由硬件置位。该位必须用软件清零。RI : 接收中断标志位。结束接收时由硬件置位。该位必须用软件清零。

Page 11: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

3.电源控制寄存器 PCON

串行口借用了电源控制寄存器 PCON的最高位。 PCON是 8 位寄存器,字节地址为 87H,不可进行位寻址。它的低 4 位全部用于 80C51/80C31子系列单片机的电源控制。只有最高位 SMOD位用于串行口波特率系数的控制。当 SMOD= l 时,方式 1 、 2 、 3 的波特率加倍,否则不加倍。 PCON的格式如下:

Page 12: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.2.3串行口的四种工作方式

80C51单片机串行口有 4 种工作方式,用特殊功能寄存器 SCON中的 SM0、 SM1两位进行设定,见表5-1。

Page 13: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

( 1 )特点 用于串行 I/O 口扩展,有固定的波特率,为 fOSC/12 。 同步发送 / 接收功能,由 TXD 提供移位脉冲, RXD 用作数据输入 / 输出通道。 发送接收 8 位数据,低位在前,高位在后。( 2 )发送操作 由指令 MOV SBUF, A 启动发送操作,发送时由 TXD 输出移位脉冲, RXD 发送 SBUF 中的数据。发送完 8 位数据后, TI 自动置1 ,请求中断。要继续发送时, TI 必须由指令清 0( CLR TI )。( 3 )接收操作 在 RI=0 的前提下,用指令置 REN=1 ,可以启动一帧数据的接收。同样由 TXD 输出移位脉冲,由 RXD 接收串行数据。接收完一帧 RI

自动置 1 ,请求中断。想继续接收时要用指令清除 RI 。

1 .方式 0

Page 14: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

2.方式 1

( 1 )特点 8 位异步串行通信 UART 接口。 帧结构为 10 位,包括起始位 0 , 8 位数据位, 1 位停止位。 波特率由软件设置,由 T1 的溢出率决定。( 2 )发送操作 由指令 MOV SBUF, A 启动 A 中的数据从 TXD 端异步发送。发送完一帧数据后, TI 自动置 1 ,请求中断。要继续发送时, TI 必须由指令清 0( CLR TI )。( 3 )接收操作 在 RI=0 的前提下,用指令置 REN=1 ,启动一帧数据的接收。串行口采样 RXD ,当采样到 1至 0 的跳变时,表明接到串行数据的起始位,开始接收一帧数据,直到停止位到来时,把停止位送到 RB8

中,此时 RI 自动置 1 ,请求中断并通知 CPU从 SBUF 中取走已接收到的数据 。想继续接收时要用指令清除 RI 。

Page 15: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

方式 2 和方式 3 具有多机通信功能,两种方式除了波特率设置不同外,其余功能完全相同。( 1 )特点 8 位异步串行通信 UART接口。帧结构为11位,包括起始位 0 , 8 位数据位, 1 位可编程位 TB8/RB8, 1 位停止位。 方式 2 的波特率固定,由 PCON中的 SMOD位选择,当 SMOD=0时,波特率为 fOSC/64;当 SMOD=1时,波特率为 fOSC/32; SMOD位状态用软件设置。见表 5-1。

3.方式 2和方式 3

Page 16: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

( 2 )发送操作 发送操作前,用指令定义 TB8(如作为奇偶校验位或地址 / 数据标志位),由指令 MOV SBUF, A 将 A 中的数据送入 SBUF后启动发送操作;在发送操作中,已定义的 TB8位能自动加入待发送的 8 位数据之后构成第 9 位,这样组成的一帧完整数据自动从 TXD端异步发送;发送完成后, TI自动置 1 ,请求中断。要继续发送时, TI必须由指令清 0 ( CLR TI)。 在多机通信的发送操作中,用 TB8作地址 / 数据标志位。 TB8=1,地址帧; TB8=0,数据帧。

3.方式 2和方式 3

Page 17: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

( 3 )接收操作 在 RI=0的前提下,用指令置 REN=1,启动一帧数据的接收,将接收数据的第 9 位送入 RB8。该数据能否接收,要由 SM2和 RB8的状态决定:SM2=0时,串行口不看 RB8状态,无条件接收。SM2=1是多机通信方式,接收到的 RB8是地址 / 数据标志位:

若 RB8=1,接收的信息是地址,此时 RI自动置1 ,串行口接收发送来的数据。

若 RB8=0,接收的信息是数据。对于 SM2=1的从机, RI不置 1 ,此数据丢失;对于 SM2=0的从机, SBUF自动接收发来的数据。

3.方式 2和方式 3

Page 18: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

80C51单片机常与其它 51单片机或 PC机进行串行通信。

80C51单片机串行接口的信号电平为 TTL类型,抗干扰能力差,传输距离短。为了提高串行通信的可靠性,延长通信距离,工程设计人员一般采用标准串行接口,如 RS-232C、 RS-422A和 RS-485等。这三种接口最初都是由美国电子工业协会( EIA)制订并发布的。

5.3串行通信的常用标准接口

Page 19: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.3.1 RS-232C接口

RS-232C (又称 EIA RS-232-C )是目前 PC 机与通信工业中应用最广泛的一种串行接口。图 5-7 是利用 RS-232C通过电话网实现远程通信的示意图。

图 5-7 RS-232C 通过电话网实现远程通信的示意图

Page 20: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

1.接口信号

RS-232C是 EIA在 1969年推出的。全名是“数据终端设备 DTE (如计算机和各种终端机)和数据通讯设备 DCE

(如调制解调器 MODEM )之间串行二进制数据交换接口技术标准”。它适合于数据传输速率在 0~ 20 000bps范围内的通信。

图 5-8 RS-232C 串口结构

Page 21: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

目前较为常用的 RS-232C有 9针串口( DB9 )和 25

针串口( DB25 ),结构分别如图 5-8 所示。在保证通信准确性的前提下,如果通信距离较近 (小于 12米 ) ,可以用电缆线直接连接,图 5-9 是这种连接方式的示意图;若距离较远,需附加调制解调器( MODEM ),见图 5-7 。

图 5-9 近程通信示意图

Page 22: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

实际上 DB25 中有许多引脚很少使用,在计算机与终端通讯中一般只使用 3-9条引线。最常用的 9条引线的信号内容见表 5-2 所示。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连。传输线采用屏蔽双绞线。如图 5-10

所示。

图 5-10 RS-232C 串口结构

Page 23: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

表 5-2 DB9和 DB25 的常用信号脚说明

Page 24: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

2.逻辑电平

RS-232C 是早期为促进公用电话网络进行数据通信而制定的标准。它采用负逻辑,即-3V~ -15V规定为“ 1” ;+3V~ +15V规定为“ 0” ;-3V~ +3V 为过渡区,不做定义。

Page 25: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

3.电平转换芯片与接口电路

RS- 232C 信号的电平和单片机串口信号的电平不一致,必须进行二者之间的电平转换。常用芯片有MC1488( TTL转换成 RS- 232C 信号)、 MC1489( RS- 232C 信号转换成 TTL )等。另一种常用的集成电平转换芯片 MAX232 可以实现 RS- 232C

/ TTL电平的双向转换,它只使用单一的+ 5V电源供电,配接 4个 1μF电解电容即可完成 RS- 232电平与 TTL电平之间的转换。其原理图如图 5-11 所示。转换完毕的串口信号 TXD、 RXD直接和 80C51 的串行口连接。

Page 26: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

图 5-11 电平匹配原理图

注: 1. 为提高电路抗干扰能力, C1~ C4 要用钽电容 1.0μF/16V ,且尽 量靠近MAX232 ; 2. MAX232对噪声很敏感,在 VCC与 GND 之间加 C5=0.1μF ,起去耦作用

Page 27: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

1 .性能特点 RS-485以良好的抗噪声干扰性,长距离传输特性和多站能力等优点成为首选的串行接口。表现为: 接口信号电平比 RS-232C低( ±1.5V~ ±6V),不易损坏接口电路芯片,且该电平与 TTL电平兼容,可方便与 TTL 电路连接。 RS-485传输数据的速度较快,最高速率达到 10Mbps 。 采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性能好。 最大传输距离标准值为 4000英尺,折合 1219米,实际上可达 3000米。 RS-485接口允许在总线上同时连接 32个发送器和 32个接收器,即具有多站能力,这样用户可以利用单一的 RS-485接口方便地建立起设备网络。 因 RS-485接口组成的半双工网络一般只需二根连线,所以 RS-485接口均采用屏蔽双绞线传输。 RS-485接口连接器采用 DB9的 9 芯插头座。与智能终端 RS-485接口采用 DB9(孔);与键盘连接的键盘接口 RS-485采用 DB9(针)。

5.3.2 RS-485接口

Page 28: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

2、与其它标准接口的对照

表 5-3 列出了 RS-485 与其它标准接口的对照表接口标准 RS-232C RS-422A RS-485

功能 双向,全双工 双向,全双工 双向,半双工

工作方式 单端 差分 差分

逻辑“ 0”电平 3V~ 15V 2V~ 6V 1.5V~ 6V

逻辑“ 1”电平 -3V~ -15V -2V~ -6V -1.5V~ -6V

节点数 1收、 1发 1发 10收 1发 32收

最大传输距离 15米 1219米 1219米

最大传输速率 20Kb/S 10Mb/s 10Mb/s

驱动器加载输出电压 ±5V~ ±15V ±2V ±1.5V

接收器输入电阻 (Ω) 3K~ 7K 4K(最小 ) ≥12K

抗干扰能力 弱 强 强

Page 29: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.4.1应用指导1 .串行通信中的常用波特率

5.4串行口应用与训练

80C51 的四种工作方式中,方式 0 和方式 2 的波特率固定,见表 5-1 和方式 0 、方式 2 的特点。方式 1 和方式 3 的波特率可变,其具体数值由定时器 T1 的溢出率和 SMOD 位共同决定,公式见表 5-1 。 定时器 T1 作波特率发生器时,为了防止溢出中断,应保持 T1 为中断禁止状态。表 5-4 列出了 T1 的常用波特率。

Page 30: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

表 5- 4 T1的常用波特率

Page 31: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

2.利用串行口扩展 I/O口

80C51 单片机串行口方式 0 为同步移位寄存器方式,可进行 8

位并行 I/O 口的扩展。当串行口别无它用时,可通过使用串行输入并行输出移位寄存器(如 74LS164 )扩展并行输出口;或使用并行输入串行输出移位寄存器(如 74LS165 )扩展并行输入口。这种方法不占用片外 RAM 地址,而且还能简化单片机系统的硬件结构。但缺点是操作速度较慢,且扩展芯片越多,速度越慢。

图 5-12 是利用一片 74LS165 扩展 8 位并行输入口的实用电路。当移位 / 置入端 S/ 由“ 1” 变为“ 0” 时,并行输入端的数据被置入寄存器。当 S/= 1 ,且时钟禁止端( 15脚)接地时,在时钟脉冲的作用下,数据由 QA向 QH 方向(即 D7→D0 )移动。

Page 32: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

图 5-12 利用一片 74LS165扩展 8位并行输入口电路

图中 RXD( P3.0 )作为 80C51 的串行输入端与 74LS165 的串行输出端相连, TXD( P3.1 )为移位脉冲输出端,与 74LS165芯片的移位脉冲输入端连接,用一根 I/O 口线 P1.0与 74LS165芯片的 S/相连来控制移位与置位过程。注:图中 74LS165的 SIN引脚为串行输入端,用于两片 74LS165的串行扩展连接。

Page 33: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

3 .串行通信编程基础( 1 )串行口初始化编程 串行口初始化应该包括对 SCON、 PCON和 T1 的初始化。对 T1 的初始化又包含 TMOD 寄存器初始化(将 T1 设置为波特率发生器)、根据波特率求时间常数并对 TH1和 TL1赋值、启动 T1 等过程,串口初始化格式如下,其中加括号的指令可根据情况选择使用: SIO:MOV SCON, # 控制状态字 ;写方式字且 TI=RI=0

(MOV PCON, #80H) ;波特率加倍 (MOV TMOD, #20H ) ; T1 作波特率发生器

( MOV TH1, #X ) ;选定波特率 ( MOV TH1, #X )

( SETB TR1) ;启动 T1

( SETB EA) ;开串行口中断 ( SETB ES)

Page 34: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

( 2 )发送程序

发送程序可以采用中断和查询两种方式设计。查询方式:TRAM : MOV A,@R0 ;取数据 MOV SBUF, A ;发送一个字符WAIT : JBC TI, NEXT ;等待发送结束 SJMP WAIT

NEXT : INC R0 ;准备下一次发送 SJMP TRAM

Page 35: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

中断方式: ORG 0023H ;串行口中断入口

AJMP SINT

MAIN : … ;初始化编程 TRAM : MOV A,@R0 ;取数据

MOV SBUF, A ;发送第一个字符 SJMP $ ;其它工作 SINT: CLR TI ;中断服务程序

INC R0

MOV A,@R0 ;取数据MOV SBUF, A ;发送下一个字符RETI

Page 36: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

( 3 )接收程序 与发送相类似,接收也可以采用中断和查询两种方式设计。 当 REN=1、 RI=0时 80C51处于等待接收状态;一旦检测到RI=1, 80C51 开始从 SBUF 读取数据。 查询方式: WAIT : JBC RI, NEXT ;查询等待

SJMP WAIT

NEXT : MOV A, SBUF ;读取接收数据MOV @R0, A ;保存数据INC R0 ;准备下一次接收SJMP WAIT

Page 37: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.4.2 基本训练

1 .初始化训练 要求:某 80C51 单片机通信系统,晶振频率为 12MHz ,要求串行口发送 8

位数据,波特率 1200bmp ,请编写它的初始化程序。思路与计算:要选择串行口和定时器 T1 的工作方式,计算时间常数并赋值给TH1、 TL1 。我们可以利用表 5- 1 中求波特率的公式:

Page 38: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

初始化程序: MOV SCON, #40H ;串口工作于方式 1

MOV PCON, #80H ; SMOD=1

MOV TMOD, #20H ; T1 作定时器,工作于方式 2

MOV TH1, #0CCH ;装入时间常数初值 MOV TL1 , #0CCH ;自动重装时间常数 CLR ET1 ;禁止 T1 中断 SETB TR1 ;启动 T1 波特率发生器 总结:用上述公式计算出的波特率不为整数,近似取整后,波特率也就不能精确地等于 1200bps 。但在异步传送中,每接收一个字符实际上都要整步一次,因此这点微小误差并不影响收发。

Page 39: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

要求:利用 80C51 的串行口实现一个数据块的发送。设发送数据区首地址为 58H ,数据块长度(字节数)为 10 ,串行口工作于方式1 ,波特率 1200bps ,晶振频率为 11.0592MHz 。思路:串行口工作于方式 1 时,波特率要编程设定。通常使 T1 工作在方式 2 ,当波特率取 1200bps 时,可以查表或计算时间常数初值,得 0E8H( SMOD=0 时)。发送子程序 TRAM 清单: TRAM:MOV TMOD, #20H ; T1 工作在方式 2

MOV TH1, #0E8H ;装入时间常数初值 MOV TL1, #0E8H ;自动重装时间常数

2 .串行传送训练

Page 40: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

CLR ET1 ;禁止 T1 中断 SETB TR1 ;启动 T1 波特率发生器 MOV SCON, #40H ;串口工作于方式 1

MOV PCON, #00H ; SMOD=0 ,该指令可不写 MOV R1, #58H ;数据发送区首址送 R1

MOV R5, #10 ;发送长度送 R5

LOOP:MOV A,@R1 ;发送一帧数据 MOV SBUF, A

WAIT: JBC TI, NEXT ;发送等待,发完一帧转去 NEXT

SJMP WAIT

NEXT: INC R1 ;准备取下一数据 DJNZ R5, LOOP ;数据块发完?未发完转 LOOP

RET ;发完,结束< 想一想 > 发送等待时为什么不用“ JB TI, NEXT” 指令,而用“ JBC TI

, NEXT” 指令?

Page 41: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.4.3 课题与实训 10 串行输出控制彩灯

一.实训目的1 .熟悉 74LS164 的使用,掌握串行口的基本应用方法。2 .学习串行口的扩展技术,掌握串行口相关寄存器的设定方法。3 .掌握串行口扩展显示器的电路设计原理和编程方法二.课题要求 利用一片 AT89C51芯片,使之工作于方式 0 。在其串口扩展一片 74LS164 控制 8个 LED ,要求使用建表方式,控制 LED

闪烁,其闪烁规律为: 8个 LED 作左移 2次,闪 2次;右移 2

次,闪 2次。闪烁间隔 0.2 秒。

Page 42: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

三.背景知识1. 74LS164 是串行输入并行输出移位寄存器,接在 80C51 的串行口,可以实现对 8 位并行数据的控制。2. 80C51与 74LS164 连接时, RXD( P3.0 )作为串行输出与74LS164 的数据输入端( 1、 2 )相连, TXD( P3.1 )作为移位脉冲输出与 74LS164 的时钟脉冲输入端( 8 )相连, 74LS164的

CLR 端( 9 )通过电阻、电容接在电源和地上。

Page 43: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

四.硬件电路

图 5-13 串行输出控制彩灯硬件电路

Page 44: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

ORG 0000H

AJMP MAIN

ORG 0100H

MAIN:MOV SCON, #00H ;串口工作于方式 0

START:MOV DPTR, #TABLE ;指向 TABLE表LOOP: CLR A ;清除 A

MOVC A,@A+DPTR ;从 TABLE表取数据 CJNE A, #05H, NEXT ;取到结束码 05H?没有跳到 NEXT

AJMP START ;结束,重新开始NEXT: CPL A ;取到数据反相 MOV SBUF, A ;向串口发送LOOP1: JBC TI, LOOP2 ;发送结束?是,跳到 LOOP2

AJMP LOOP1 ;没结束,再检测LOOP2: ACALL DELAY ;延时 0.2 秒 INC DPTR ;指向下一地址 AJMP LOOP

五.软件设计 ( 参考程序如下: )

Page 45: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

DELAY:MOV R7,#4 ;延时 0.2SD1 : MOV R6,#20 D2 : MOV R5,#123 NOP DJNZ R5,$ DJNZ R6,D2 DJNZ R7,D1 RETTABLE: DB 01H, 02H, 04H, 08H DB 10H, 20H, 40H, 80H DB 01H, 02H, 04H, 08H DB 10H, 20H, 40H, 80H DB 00H, 0FFH, 00H, 0FFH DB 80H, 40H, 20H, 10H DB 08H, 04H, 02H, 01H DB 80H, 40H, 20H, 10H DB 08H, 04H, 02H, 01H DB 00H, 0FFH, 00H, 0FFH DB 05H END

六.总结与思考1. 74LS164无输出控制端,故串行输入过程中,输出端会不断地变化。所以一般应在74LS164 和输出装置之间加接输出控制门,以保证串行输入结束后再输出数据。2 .如果不用建表方式,如何实现?

Page 46: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

5.5.1 单片机与显示器的串行通信 例:某车间拟设置一块生产进度显示板,显示当天已完成的产品数量(不超过 256 ),所需的产量数据,要从主单片机传送到显示板,请帮助设计相应的传送程序。 分析与设计 该任务中,每当生产线上完成一台合格产品时,通过自动计数装置向主单片机外部中断输入端送出一个低电平“ 0” ,作为请求中断信号;主单片机响应中断后,在中断服务程序中,将产量值(存放在 50H 中)加 1 ,并通过串口将其送给显示板。 显示版接收主单片机送来的显示数据。显示板的 CPU平时运行显示程序,显示当前的产量 (产量数据存放在数据存储区 50H 单元中 ) 。只有当显示板的串口接收到主单片机发来的显示数据时,才会因串口中断,转去执行中断服务程序,以便将新接收到的产量数据存放到 50H 单元中,再返回到主程序执行显示程序。

5.5 单片机串行口应用举例

Page 47: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

1 .主单片机⑴主程序发送端的主程序要完成外部中断和串行口的初始化工作,然后等待外部中断。 ORG 0000H

AJMP MAIN

ORG 0013H

AJMP SUBG ;中断入口 ORG 0100H

MAIN:MOV 50H, #00H ;当天产量从 0 开始 MOV SP, #60H

SETB IT1 ;采用边沿触发方式 MOV SCON, #40H ;串口工作于方式 1 ,禁止接收 MOV PCON, #00H ;波特率不加倍 MOV TMOD, #20H; T1 工作于方式 2

软件设计

Page 48: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

MOV TH1, #0E8H ;波特率为 1200bps

MOV TL1, #0E8H

SETB EX1 ;开中断 SETB EA ;开中断 SETB TR1 ;打开波特率发生器 AJMP $ ;等待中断⑵中断服务子程序 当外部中断申请中断时,表示生产线上已完成一台成品,因此中断服务程序的任务就是将产量单元 50H加 1 ,并将加 1 后的数值从串口输出。程序如下: ORG 0200H

SUBG: PUSH ACC

INC 50H

MOV A, 50H

MOV SBUF, A

Page 49: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

WAIT: JBC TI, NEXT

SJMP WAIT

NEXT: POP ACC

RETI

2 .显示板的 CPU

⑴主程序主程序的初始化部分与发送端基本相同,只是要将 SCON 的禁止接收改成允许接收。并且要一边执行显示程序,一边等待中断。显示程序从略,可参看第 6 章。 ORG 0000H

AJMP MAIN

ORG 0023H

AJMP SUBG ;串口中断入口 ORG 0100H

MAIN:MOV 50H, #00H ;当天产量从 0 开始 MOV SP, #60H

Page 50: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

MOV SCON, #50H ;串口工作于方式 1 ,允许接收 MOV PCON, #00H ;波特率不加倍 MOV TMOD, #20H; T1 工作于方式 2

MOV TH1, #0E8H ;波特率为 1200bps

MOV TL1, #0E8H

SETB ES ;开串口中断 SETB EA ;开中断 SETB TR1 ;打开波特率发生器 WAIT: ACALL DISPLAY ;转显示子程序 AJMP WAIT ;等待中断

Page 51: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

⑵中断服务子程序当接收端的串口收到单片机发来的数据时,串口申请中断。在中断服务程序中,要保护现场,将新接收到的产量数据存放到 50H 单元中,再返回主程序。 ORG 0200H

SUBG: PUSH ACC

CLR RI

MOV A , SBUF

MOV 50H , A

NEXT: POP ACC

RETI

Page 52: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

一.实训目的1 .学习双机通信的常识。2 .掌握双机通信程序状态字的设置方法。3 .学习双机通信程序的编制方法。二.课题要求 利用 2片 AT89C51芯片,一片用作发送器,记作 89C51-T ,用来读入 P1

口指拨开关的状态;另一片用作接收器,记作 89C51-R ,用来接收 89C51-T

发送过来的指拨开关的状态,并将其在 89C51-R 输出的 8个 LED上显示出来。三.背景知识1 .双机通信 如果两个 80C51 单片机相距很近,将它们的串行口直接相连,即可实现双机通信。采用图 5-14 所示的两个 80C51 串行口直接相连的方法,通信距离只限于 1.5m 以内。如果要增加通信距离,可以在两个单片机之间采用标准异步串行接口连接,如使用 RS-232C、 RS-422A及 RS-485 等串行接口总线。

5.5.2 课题与实训 11 双机通信

Page 53: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

2 .通信协议 在双机通信或多机通信时,通常要规定通信协议。所谓通信协议是指通信双方的一种约定。它对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程。本实训所用的两片 AT89C51芯片,一个只作输入,另一个只作输出,形式非常简单,不用规定通信协议。

图 5-14 双机通信简图

Page 54: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

四.硬件电路

图 5-15 双机通信硬件电路

Page 55: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

参考程序如下:AT89C51-T 的发送程序 ORG 0000H

AJMP MAIN

ORG 0100H

MAIN:MOV SP, #50H ;设定堆栈区 MOV SCON, #40H ;串行口工作在方式 1 ,禁止接收 MOV TMOD,#20H ;定时器 1 工作在方式 2

MOV TL1,#0E8H ;波特率为 1200

MOV TH1,#0E8H ; SETB TR1 ;启动定时器 1

MOV 30H,#0FFH ;设定指拨开关初值 MOV P1, #0FFH ; P1 口设为输入状态READ:MOV A,P1 ;读入指拨开关值 CJNE A,30H,KEY ;输入值改变则跳至 KEY

AJMP READ ;否则继续读指拨开关值

五.软件设计

Page 56: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

KEY:MOV 30H,A ;存指拨开关新值 MOV SBUF,A ;送串行口发送WAIT: JBC TI,READ ;查看是否送完 AJMP WAIT

END

AT89C51-R 的接收程序 ORG 0000H

AJMP MAIN

ORG 0100H

MAIN:MOV SP, #50H ;设定堆栈区 MOV SCON, #50H ;串行口工作在方式 1 ,允许接收 MOV TMOD,#20H ;定时器 1 工作在方式 2

MOV TL1,#0E8H ;波特率为 1200

MOV TH1,#0E8H

SETB TR1 ;启动定时器 1

READ: JBC RI,UART ;是否接收到数据,收到则跳到 UART

AJMP READ

Page 57: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

UART:MOV A,SBUF ;收到的数据送 A

MOV P1,A ;发送至 P1 口 AJMP READ

END

六.总结与提高

在编写串行口应用程序时应注意这样几个问题:必须对串行口进行初始化。具体包括 SCON、 PCON 和波特率的设定。在接收和发送一个字节完毕后必须用软件清除中断标志。本实训采用软件查询方式编程,请尝试用中断方式实现该功能。

Page 58: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

串行口的方式 2 和方式 3具有多机通信功能,能实现一台主单片机和若干从单片机构成的多机分布控制系统,其连接方式如图 5-16 所示。

图 5-16 多机通信示意图

5.5.3 多机通信

Page 59: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

多机通信时,充分利用单片机 SCON 中的多机通信控制 SM2 位。当从机 SM2=1 时,从机只接收主机发来的地址帧(特点是第 9 位为 1

),对数据帧不予理睬;当从机 SM2=0 时,从机可以接收主机发来所有信息。过程如下:置所有从机的 SM2=1 ,都处于只接收地址的状态。 主机发送一帧地址(前 8 位是地址值,第 9 位为 1 ,表示该帧信息是地址)。 所有从机接到地址帧后,转去执行中断,目的是将接收到的地址与自身地址相比较,二者相同,则 SM2=0 ,否则, SM2=1 。 由于被呼叫从机已令 SM2=0 ,所以它可以接收主机接下来传送的所有数据,实现与主机的通信。 被呼叫从机通信完成后,置 SM2=1 ,恢复多机通信的原始状态。

Page 60: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

本章小结

80C51 单片机有一个全双工的串行口,它既可用于网络通信,也能实现串行异步通信,还可作为同步移位寄存器使用,应用非常灵活。 80C51 单片机的串行接口能完成以下基本任务:( 1 )实现数据格式化:在异步通信方式下,对来自 CPU 的普通并行数据,接口自动生成起止的帧数据格式。( 2 )进行串-并转换:这是串行接口电路的重要任务。它能把计算机处理的并行数据与串行口所需的串行数据进行转换。

Page 61: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

( 3 )控制数据传输速率:串行通信接口电路具有对数据传输速率——波特率进行选择和控制的能力。 串行口有四种工作方式:方式 0 、方式 1 、方式 2 、方式 3 ,其中方式 0 常用于接口扩展,波特率固定;方式 1 常用于一般数据传送,波特率可调;方式 2 和方式 3 常用于双机或多机通信,方式 2 的波特率固定( SMOD 确定后);方式 3 的波特率可调。 80C51 单片机作串行通信时,为提高通信质量,常采用标准串行接口 RS-232C、 RS-422A或 RS-485 等。其中 RS-232C 应用广泛,但传输距离短,只有几十米;而 RS-485抗干扰能力强,接线简单,传输距离能达到 1200 米。 在工业控制系统中,采用单片机与 PC 机组合的形式构成的分布式控制系统是今后多点现场工控系统的一个重要的发展方向。

Page 62: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

1 .什么是串行通信和并行通信?各有何特点?2 .按照信息传送方向来分,串行通信有哪几种工作制式? 80C51

单片机采用哪种工作制式?3 .什么是同步通信和异步通信?4 .什么叫波特率?在 80C51 单片机中有几种产生波特率的方法?串行通信对波特率有什么基本的要求?5 . 80C51 单片机的 UART 中有哪些方式采用异步数据传输?哪些方式采用同步数据传输?6 . 80C51 单片机串行口有几种工作方式?由什么寄存器决定?7 .串行缓冲寄存器 SBUF 有什么作用?简述串行口接收和发送数据的过程。8 .串行通信时为什么一般采用标准接口?你知道的标准接口有哪些?

思考题与习题

Page 63: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

9 . RS-232C 和 RS-485 的信号逻辑电平各是什么?在与 80C51 单片机通信时,中间是否都要加装逻辑电平转换芯片?10 .某 80C51 单片机控制系统,主振频率为 12MHz ,要求串行口发送数据为 8 位,波特率为 1200bps ,请编写它的初始化程序。11 .串行口控制寄存器 SCON中 TB8、 RB8 起什么作用?在什么方式下使用?12 .请编程将内 RAM 40H 单元中的数据从串行口移位输出至串入并出芯片 74LS164 ,输出完成后置位 P1.0 。13 .利用 80C51 的串行口 UART 实现一个数据块的接收。设接收数据缓冲区的首地址为 40H ,接收数据长度为 10H

,串行口工作于方式 2 (设 SMOD=1 )。

Page 64: 本章学习目标 : 了解并行通信与串行通信的含义 理解波特率的概念,学会波特率的计算方法 能按要求正确设置特殊功能寄存器 SCON 和 PCON

14 .设以串行方式 1 进行数据传送, fosc=6MHz ,波特率为 2400bps (设 SMOD=1 )。发送的 8 个数据依次存在外 RAM首址 4000H 单元中,先发送数据长度,后发送 8个数据,请编写发送子程序。15 .在 5.4.2 节的串行传送训练中如果增加奇偶校验功能,软件该如何设计?(提示:因发送的是 8 位数据字节,故奇偶校验位需另外安排,不能采用方式 1 工作状态,可以采用UART 的方式 3 :把 TB8 嵌入发送程序中作奇偶校验位。波特率设置和发送缓冲区不变。)