单片机应用技术 (C语言版) 第8章 串行通信接口 2019/5/31
第8章 MCS-51单片机串行通信接口 目 录 8.1 串行通信基本知识 8.2 串行口控制器 8.3 串行口工作方式 目 录 8.1 串行通信基本知识 8.2 串行口控制器 8.3 串行口工作方式 8.4 波特率的制定方法 8.5 串行通信的接口电路 8.6 串口的C51编程与应用 2019/5/31
8.1 串行通信基本知识 8.1.1 概述 老式打印机接口 并行通信: 数据的各位同时传送。 特点: 控制简单,传输速度快。 接受设备 发送设备 询问 应答 特点: 控制简单,传输速度快。 传输线多,长距离传输成本高。 2019/5/31
串行通讯: 数据一位一位顺序传送。 特点: 传输线少,长距离传送时成本低,但控制复杂。 接受设备 发送设备 D7 D0 顺序传送 2019/5/31
串行通讯三种制式 8.1.2 串行传输方式 单工通讯: 数据单向传送。 半双工通讯: 数据可分时双向传送。 全双工通讯: 发送器 接收器 时间2 发送器 接收器 时间1 半双工通讯: 数据可分时双向传送。 全双工通讯: 可同时进行发送和接收。 发送器 接收器 2019/5/31
波特率 在串行通信中,对数据传送速度有一定要求。波特率表示每秒传送的位数,单位为b/s。 问:为什么串行通信的双方波特率必须相同? 答:只有波特率相同的情况下才能保证收/发双发获取相同的数据,否则就会有误差。 2019/5/31
一、异步通信(Asynchronous Communication) 发送与接收设备使用各自的时钟控制数据的发送和接收。采用独立的移位脉冲控制,并不需要同步脉冲 。 以帧为单位进行传输; 每帧数据之间的间隙可以任意。 2019/5/31
异步通信的数据格式 : 异步通信的特点: (1)不要求收发双方采用同步脉冲,实现容易; (2)设备开销较小; (3)每帧数据要附加启/停位和间隙,传输效率不高。 2019/5/31
二、同步通信Synchronous Communication 建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。传送的字符间不留间隙,即保持位同步,也保持字符(帧)同步关系。 计 算 机 乙 甲 1 数据 时钟 2019/5/31
先发送一个或两个同步字符,使发送与接收取得同步,然后再顺序发送数据。数据块的各个字符间取消起始位和停止位。 典型的同步通信格式: 同步字符1 同步字符2 N个字节的连续数据 校验信息1 校验信息2 先发送一个或两个同步字符,使发送与接收取得同步,然后再顺序发送数据。数据块的各个字符间取消起始位和停止位。 特点:通信速度得以提高 ,但控制较为复杂。 2019/5/31
串行接口(总线)种类 根据串行通信格式及约定(如同步方式、通信速率、数据块格式等)不同,形成了许多串行通信接口标准,如常见的: UART(串行异步收发器)用于控制计算机与串行设备的芯片,集成在主板上(串口设置COM等) ; USB(通用串行总线接口); RS-232、RS-485接口; 2019/5/31
I2C(集成电路间的串行总线)PHILIPS公司两线式串行总线,用于连接微控制器及其外围设备的同步串行总线; SPI(串行外部设备接口)Motorola公司推出的,在CPU和外围低速器件之间进行同步串行数据传输;用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线 。 2019/5/31
8.2 串行口结构及控制器 一、MCS-51串行口结构 MCS-51有一个可编程的全双工串行通信接口。 2019/5/31
低位在先 SBUF :两个物理上独立的接收、发送缓冲器。存放收/发数据。 收/发过程由单片机自动完成。 在程序中: a=SBUF; (接收数据) SBUF=b; (发送数据) 低位在先 2019/5/31
二、与串行口有关的特殊功能寄存器 1.串口控制寄存器SCON 用于定义串口的工作方式和反映串行口状态,其字节地址为98H,复位后SCON=0,可位寻址格式为: D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN TB8 RB8 TI RI 2019/5/31
SM0和SM1(SCON.7、SCON.6):串行口工作方式选择位。 功能说明 波特率 方式0 同步移位寄存器 fosc/12 1 方式1 8位数据UART 可变(T1溢出率/32或/16) 方式2 9位数据UART fosc/64或 fosc/32 方式3 2019/5/31
SM2(SCON.5):多机通信控制位,在方式2或3中使用。 REN(SCON.4):允许接收控制位,由软件置1或清0。 2019/5/31
TB8(SCON.3):发送数据的第9位。可用作校验位或地址/数据标识位。(方式2,3中用) RB8(SCON.2):接收数据的第9位。 (方式2,3中用) TI(SCON.1):发送中断标志。发送中TI=0;一帧结束,TI=1,此时须软件清零; RI(SCON.0):接收中断标志。接收中RI=0;一帧结束,RI=1,此时须软件清零. 2019/5/31
电源控制寄存器PCON (地址为87H)中只有SMOD位与串行口工作有关。 --- SMOD(PCON.7):波特率倍增位。串行口工作于方式1、方式2和方式3时,当SMOD=1时,串行口波特率加倍。复位值为0。PCON寄存器不能进行位寻址。 2019/5/31
8.3 串行口的工作方式 一、 串行口工作方式0 方式0为同步移位寄存器输入/输出方式,常用于扩展I/O口。 方式0不适用于两个单片机之间的数据通信,主要用途是与外部移位寄存器相连。RXD为数据输入或输出;TXD为移位时钟,作为外接部件的同步信号。 在这种方式下,收/发的数据为8位,低位在前,无起始位、奇偶校验位及停止位,波特率是固定的。 2019/5/31
串转并74LS164 发送电路 接收电路 2019/5/31
并转串74LS165 SH/LD高时移位,低时置数 2019/5/31
1.格式:一帧8位,无起始位和停止位,SM2=0, 2.波特率B = fosc/12 如:fosc=12MHz,B=1MHz。 3.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。 接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。 方式0收发时序 RI 2019/5/31
注:发送和接收数据全部由单片机硬件完成,我们要做的就是设置好工作方式,然后将发送的数据写入SBUF;或从SBUF 中读出数据。 串口方式0举例 2019/5/31
二、 串行口工作方式1 方式1真正用于串行发送或接收,为10位通用异步接口。TXD与RXD分别用于发送与接收数据。 二、 串行口工作方式1 方式1真正用于串行发送或接收,为10位通用异步接口。TXD与RXD分别用于发送与接收数据。 单片机与单片机、单片机与计算机、计算机与计算机串口通信时,基本都选择方式1 。 2019/5/31
发送:写入SBUF并启动发送,发送结束,置TI=1。 接收:当用软件置REN=1时,检测到RXD引脚发生负跳变时,开始接受。 (a) 发送时序 发送:写入SBUF并启动发送,发送结束,置TI=1。 接收:当用软件置REN=1时,检测到RXD引脚发生负跳变时,开始接受。 当满足(1) RI=0; (2)收到停止位为1 (或SM2=0)时, 数据8位装入SBUF, 置RI=1,且第9位停止位进入RB8中;若两条件不满足,信息将丢失。 波特率:用T1作为波特率发生器,B=(2SMOD/32)×T1溢出率。 (b) 接收时序 2019/5/31
8.4 波特率的制定方法 SM0 SM1 工作方式 功能说明 波特率 方式0 同步移位寄存器 fosc/12 1 方式1 8位数据UART 8.4 波特率的制定方法 SM0 SM1 工作方式 功能说明 波特率 方式0 同步移位寄存器 fosc/12 1 方式1 8位数据UART 可变(T1溢出率/32或/16) 方式2 9位数据UART fosc/64或 fosc/32 方式3 2019/5/31
1.方式0的波特率 方式0的波特率=fosc/12 2019/5/31
??? 2. 方式1的波特率 (1)T1作波特率发生器 在最典型应用中,定时器T1选用定时器方式2,n=8 方式1波特率= ×(T1溢出率) 2. 方式1的波特率 (1)T1作波特率发生器 在最典型应用中,定时器T1选用定时器方式2,n=8 波特率B=(2SMOD /32)×fosc/[12×(28-C)] C= 28-fosc/12×2SMOD/(32×B) 因计算复杂,一般用查表方法。 ??? 方式1波特率= ×(T1溢出率) 2019/5/31
表8.2 定时器1产生的常用波特率表 2019/5/31
例 若51单片机的时钟振荡频率为11.0592MHz,选用T1为方式2定时作为波特率发生器,波特率为2400b/s,求初值。 解:查表8.2:为F4H。 时钟振荡频率选11.0592 MHz,计算过程无余数, 可使初值为整数,从而产生精确的波特率。 2019/5/31
补充:串口初始化(设置产生波特率的定时器1、串口控制和中断控制) 步骤: 1、确定T1的工作方式(编程TMOD); 串口应用 补充:串口初始化(设置产生波特率的定时器1、串口控制和中断控制) 步骤: 1、确定T1的工作方式(编程TMOD); 2、计数T1的初值,装载TH1,TL1; 3、启动T1(编程TCON中的TR1); 4、确定串行口工作方式(编程SCON); 5、串行口工作在中断方式时,进行中断设置(编程IE,IP)。 不能位寻址 2019/5/31
举例: TMOD=0x20; TH1=0xfd; TR1=1; SM0=0; SM1=1; REN=1; EA=1; 或者: ES=1; SCON=0x50; 一定写在SM0和SM1的下面 2019/5/31
串口应用 串口方式1举例: 2019/5/31
8.5 串行通信的接口电路 8.5.1 RS-232C接口 RS-232C接口是使用最早、应用最多的一种异步串行通信总线标准。 8.5 串行通信的接口电路 8.5.1 RS-232C接口 RS-232C接口是使用最早、应用最多的一种异步串行通信总线标准。 2019/5/31
(1)机械特性 表8.3 9针RS-232C接口器引脚定义 2019/5/31
串行通信电平:单片机串行口的输入、输出均为TTL电平。特点:抗干扰性差,传输距离短( 1.5米之内),传输效率低。 数字值: 1 0 TTL电平: +5V 0V 2019/5/31
如果想提高串行通信的可靠性,增大串行通信的距离和提高传输效率,在实际中都采用标准串行接口—RS-232,RS-485 RS232串行接口总线通信距离1.5m—15m 数字值: 1 0 232电平: -3V~-15V +3V~+15V 2019/5/31
串行通信电平转换:要完成PC机(RS232电平)与单片机的数据通信必须进行电平转换。MAX232芯片可实现51单片机与PC机的RS-232C之间的电平转换。 2019/5/31
PC机与单片机串行通信的接口电路 采用MAX232接口的串行通信电路 2019/5/31
MAX232芯片简介 MAX232芯片:是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片。 MAX232芯片的功能: MAX232内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232C输出电平所需的±10V电压。所以,采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。 2019/5/31
(a) 引脚图 (b) 接线图 图8.9 MAX232接口芯片 2019/5/31
8.5.2 RS-485接口 RS-232串行通信时,经常受到外界的电气干扰而发生信号错误。RS-485不受此影响。 RS-485传输距离长、速度快,传输速率最大可达10 Mb/s,最大距离可达1200 m。 2019/5/31
2019/5/31
本章小结 本章介绍了单片机串行口基本组成与应用。 通信方式有串行通信和并行通信,串行通信又分为同步通信和异步通信。 MCS-51单片机有一个全双工UART(串行通信接口),工作方式有4中,方式0为移位寄存器方式,主要用来进行串行与并行数据的转换,方式1、2、3为通用的异步传送方式。 2019/5/31