[信息与通信]第7章 串行口.ppt

上传人:音乐台 文档编号:2001111 上传时间:2019-01-30 格式:PPT 页数:62 大小:1.84MB
返回 下载 相关 举报
[信息与通信]第7章 串行口.ppt_第1页
第1页 / 共62页
[信息与通信]第7章 串行口.ppt_第2页
第2页 / 共62页
[信息与通信]第7章 串行口.ppt_第3页
第3页 / 共62页
亲,该文档总共62页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[信息与通信]第7章 串行口.ppt》由会员分享,可在线阅读,更多相关《[信息与通信]第7章 串行口.ppt(62页珍藏版)》请在三一文库上搜索。

1、1,第7章 AT89S51单片机的 串行口,1,2,2,第7章 目录 7.1 串行口的结构 7.1.1 串行口控制寄存器SCON 7.1.2 特殊功能寄存器PCON 7.2 串行口的4种工作方式 7.2.1 方式0 7.2.2 方式1 7.2.3 方式2 7.2.4 方式3 7.3 多机通信,3,7.4 波特率的制定方法 7.4.1 波特率的定义 7.4.2 定时器T1产生波特率的计算 7.5 串行口的应用 7.5.1 双机串行通信的硬件连接 7.5.2 串行通信设计需要考虑的问题 7.5.3 双机串行通信软件编程 7.5.4 PC机与单片机的点对点串行通信接口设计 7.5.5 PC机与多个单

2、片机的串行通信接口设计,4,串行口的基本概念 1)串行口为全双工的通用异步收发(UART)接口。 2)全双工就是两个单片机之间串行数据可同时双 向传输。 3)异步通信,就是收、发双方使用各自的时钟控 制发送和接收过程,这样可省去收、发双方的 一条同步时钟信号线,连接简单且易实现。 思考题:若要发送数据55H.试比较并行发送、异 步串行发送和同步串行发送的区别。,5,图7-1 串行口的内部结构图,5,为串行口提供发送、接收的基准时钟信号,发送缓冲器 只写,接收缓冲器 只读,对串口实现集中控制: 选择工作模式 多机通信控制 ,7.1 串行口的结构,数据的拼装 发送中断产生,数据的拆包 串并转换 接

3、收使能 接收中断产生,6,7.1.1 串行口控制寄存器SCON 字节地址98H,可位寻址,位地址为98H9FH。 SCON的所有位都可进行位操作清“0”或置“1”。 图7-2 串行口控制寄存器SCON的格式 (1)SM0、SM1串行口4种工作方式选择位,6,7,(2)SM2多机通信控制位 方式0: SM2必须为0。 方式1: SM2 = 1,只有收到有效的停止位时才会激活RI; SM2 = 0, 只要收到8位数据则激活RI; 方式2及方式3: SM2 = 1 只接收地址帧,即接收到的第9位数据 (RB8)为“1”时,才使RI置“1”,产生中 断请求,并将接收到的前8位数据送入 SBUF。 对于

4、数据帧(RB8=0)则直接丢弃。 SM2 = 0 数据帧、地址帧均可接收,并产生中断。,7,8,(3)REN允许串行接收位。 由软件置“1”或清“0”。 REN=1,允许串行口接收数据。 REN=0,禁止串行口接收数据。,8,(4)TB8发送的第9位数据 方式0、方式1:不使用 方式2、方式3:TB8是要发送的第9位数据,其值由软件 置“1”或清“0”。 在双机串行通信时,一般作为奇偶校验位 使用; 在多机串行通信中用来表示主机发送的 是地址帧还是数据帧,TB8=1为地址帧, TB8=0为数据帧。,9,(5)RB8接收的第9位数据 方式0:不用; 方式1: 存接收到的停止位; 方式2和方式3:

5、 RB8存放接收到的第9位数据。 (6)TI发送中断标志位,9,TI =1,表示一帧数据发送结束。 TI必须由软件清“0”。,RI接收中断标志位 RI = 1,表示一帧数据接收完毕。RI必须由软件清“0”。 方式0: 接收完第8位数据时,RI由硬件置“1”。 其他工作方式: 串行接收到停止位时,该位置“1”。,方式0: 串行发送的第8位数据结束时TI由硬件置“1”; 其他方式: 串行口发送停止位开始时置TI 为“1”。,10,7.1.2 特殊功能寄存器PCON 字节地址为87H,不能位寻址。格式如图7-3所示。,10,图7-3 特殊功能寄存器PCON的格式,11,SMOD:波特率选择位。 例如

6、:方式1的波特率计算公式为 方式1波特率 = 定时器T1的溢出率 当SMOD = 1时,要比SMOD = 0时的波特率加倍,所以也称SMOD位为波特率倍增位。,11,12,7.2 串行口的4种工作方式 7.2.1 方式0 方式0:同步移位寄存器输入/输出方式。 用途:该方式并不用于两个AT89S51单片机之间的异步串 行通信,而是用于串行口外接移位寄存器,扩展并 行I/O口。 数据帧格式:8位数据为一帧,无起始位和停止位,先发送 或接收最低位。 速率:波特率固定,为fosc/12。 图7-4 方式0的帧格式,12,13,1方式0发送 (1)方式0发送过程,13,CPU执行一条将数据写入发送缓冲

7、器SBUF的指令,产生一个正脉冲,触发串行数据的发送( fosc/12的固定波特率) (低位在前) (RXD输出数据) (TXD输出同步移位脉冲),8位数据发送完成,TI置1,14,14,图7-5 方式0发送时序,15,图7-6 外接串入并出移位寄存器74LS164扩展的并行输出口 即串到并的转换,15,2,1,1,1,2,3,1,2,3,4,5,6,7,(2)方式0发送应用举例,8,16,2方式0接收 (1)方式0接收过程,16,向SCON寄存器写入控制字 (方式0,REN=1,RI = 0),产生一个正脉冲,触发串行口开始接收数据 ( fosc/12的固定波特率采样) (低位在前) (RX

8、D为数据输入端) (TXD输出同步移位脉冲),8位数据接收完成,RI置1,17,图7-7 方式0接收时序,18,(2)方式0接收应用举例 图7-8为串行口外接两片8位并行输入串行输出的寄存器74LS165扩展两个8位并行输入口的电路。 当74LS165的S/ 端由高到低跳变时,并行输入端的数据被置入寄存器;当S/ = 1,且时钟禁止端(第15脚)为低电平时,允许TXD(P3.1)串行移位脉冲输入,这时在移位脉冲作用下,数据由右向左方向移动,以串行方式进入串行口的接收缓冲器中。,18,19,19,图7-8 扩展74LS165作为并行输入口,1 0 1 0 1 0 1 0,1 0 1 0 1 0

9、1 0,1 0 1 0 1 0 1 0,1 0 1 0 1 0 1 0,时钟禁止端 :0,上升沿,串行输出端,串行输入端,20,7.2.2 方式1 方式1为双机串行通信方式,如图7-9所示。 当SM0、SM1=01时,串行口设为方式1的双机串行通信。TXD脚和RXD脚分别用于发送和接收数据。 图7-9 方式1双机串行通信的连接电路,20,21,数据帧格式:一帧数据为10位,1个起始位(0),8个 数据位,1个停止位(1),先发送或接收 最低位。 图7-10 方式1的帧格式 速率:波特率可变。波特率由下式确定: 方式1波特率 = 定时器T1的溢出率 式中,SMOD为PCON寄存器的最高位的值(0

10、或1)。,21,22,图7-11 方式1发送时序,22,1方式1发送时序 发送过程的开始是由CPU执行一条写SBUF的指令启动的。,内部信号,TI在发送停止位开始时置1,注意:1)TX时钟的频率就是发送的波特率。 2)发送开始时,内部发送控制信号SEND 变为有效, 将起始位向TXD脚(P3.0)输出,此后每经过一 个TX时钟周期,便产生一个移位脉冲,并由TXD 引脚输出一个数据位。,23,图7-12 方式1接收时序,23,接收开始:当检测到起始位的负跳变,则开始接收。 接收定时信号: 接收移位时钟(RX时钟):完成串口内部的移位寄存 器的移位,完成串并转换。 位检测器采样脉冲:采样RXD,确

11、定串行位的数值。,2方式1接收,24,位检测器采样的原理: 1)采样频率:频率是RX时钟的16倍,即以波特率的16倍速 率采样RXD 脚状态。 2)起始位的采样和确定: 当采样到RXD端从1到0的负跳变时就启动检测器。 接收的值是3次连续采样(第7、8、9个脉冲时采样)取两 次相同的值,以确认起始位(负跳变)的开始,较好地消 除干扰引起的影响。 3)数据位的采样和确定: 每一位数据,也都进行3次连续采样(第7、8、9个脉冲 采样),接收的值是3次采样中至少两次相同的值。,25,一帧数据接收后,确认接收有效的条件: (1)RI = 0,即上一帧数据接收完成时,RI = 1发出的中 断请求已被响应

12、,SBUF中的数据已被取走,说明 “接收SBUF”已空。 (2)SM2 = 0或SM2 = 1且收到的停止位 = 1(方式1时) 满足上述两个条件,则将接收到的数据装入SBUF 和RB8(装入的是停止位),且中断标志RI置“1”。 若不同时满足两个条件,收的数据不能装入SBUF, 该帧数据将丢弃。,25,26,7.2.3 方式2 方式2:为9位异步通信接口。 数据格式:每帧数据为11位,1位起始位0,8位数据位 (先低位),1位可程控为1或0的第9位数据 和1位停止位。 图7-13 方式2、方式3的帧格式 方式2波特率 = fosc,26,发送帧:该位来自TB8 接收帧:该位存RB8,27,1

13、方式2发送 1)先根据通信协议由软件设置TB8(如奇偶校验位或多机通 信的地址/数据标志位); 2)然后将要发送的数据写入SBUF,即启动发送。TB8自动 装入第9位数据位,逐一发送。 3)发送完毕,使TI位置“1”。 图7-14 方式2和方式3发送时序,27,28,【例7-1】方式2发送在双机串行通信中的应用 双机通讯,以TB8作为奇偶校验位,偶校验发送。数据写入SBUF之前,先将数据的偶校验位写入TB8 第2组的工作寄存器区的R0作为发送数据区地址指针。 PIPTI: PUSH PSW ;现场保护 PUSH Acc SETB RS1 ;选择第2组 CLR RS0 ;工作寄存器区 CLR T

14、I ;发送中断标志清“0” MOV A,R0 ;取数据 MOV C,P ;校验位送TB8, 采用偶校验 MOV TB8,C ;P=1,校验位TB8=1, ;P=0,校验位TB8=0,28,29,MOV SBUF ,A ;A数据发送,同时发TB8 INC R0 ;数据指针加1 POP Acc ;恢复现场 POP PSW RETI ;中断返回 2方式2接收 SM0、SM1=10,且REN = 1时,以方式2接收数据。 1)数据由RXD端输入,接收11位信息。 2)当位检测逻辑采样到RXD的负跳变,判断起始位有效, 便开始接收一帧信息。 3)在接收完第9位数据后,需满足以下两个条件,才能将接 收到的

15、数据送入SBUF(接收缓冲器):,29,30,(1)RI = 0,意味着接收缓冲器为空。 (2)SM2 = 0或SM2 = 1且接收到的第9位数据位RB8 = 1。,当满足上述两个条件时,收到的数据送SBUF(接收缓冲器),第9位数据送入RB8,且RI置“1”。若不满足这两个条件,接收的信息将被丢弃。,图7-15 方式2和方式3接收时序,31,【例7-2】方式2接收在双机通信中的应用。 双机通信发送的数据进行偶校验接收 1组寄存器区的R0为数据缓冲区指针)。 PIRI: PUSH PSW ;保护现场 PUSH Acc SETB RS0 ;选择1组 CLR RS1 ;寄存器区 CLR RI ;清

16、除中断接收标志 MOV A,SBUF ;将接收到数据送到累加器A,31,32,JNC L1 ;C=0,收的字节1的个数为偶数跳L1处 JNB RB8,ERP ;C=1 (前提), 如RB8=0, ;则出错,跳ERP出错处理 AJMP L2 L1: JB RB8,ERP ;C=0(前提),再判RB8=1 ;则出错,跳ERP出错处理 L2: MOV R0,A ;C=0,RB8=0或C=1,RB8=1, ;接收数据正确,存入数据缓冲区 INC R0 ;数据缓冲区指针增1,为下次接收做准备 POP Acc ;恢复现场 POP PSW RETI,32,C=0,C=1,计算奇偶校验位与接收的相同,MOV

17、C,P ;接收到数据字节的奇偶性送入C位,RB8=0,RB8=1,33,ERP: ;出错处理程序段入口 RETI 7.2.4 方式3 SM0、SM1=11时,方式3。为波特率可变的9位异步通信方式,除了波特率外,方式3和方式2相同。方式3发送和接收时序如图7-11和图7-12所示。 方式3波特率 = 定时器T1的溢出率,33,34,7.3 多机通信 多个单片机可利用串行口进行多机通信,经常采用主从式结构。 系统中有1个主机(单片机或其他有串行接口的微机)和多个单片机组成的从机系统。主机的RXD与所有从机的TXD端相连,TXD与所有从机的RXD端相连。从机地址分别为01H、02H和03H。 图7

18、-16 多机通信系统示意图,34,35,主从式的概念: 主从式是指多机系统中,只有一个主机,其余全是从机。主机发送的信息可以被所有从机接收,任何一个从机发送的信息,只能由主机接收。从机和从机之间不能进行直接通信,只能经主机才能实现。,35,36,多机通讯原理(主从机都工作在方式2或方式3):,主机,发地址帧,发数据帧,接收数据帧,发广播帧,开始,结束,从机,接收地址帧,开始,SM2=1,是否本机地址?,否,保持SM2=1,是,SM2=0,收/发数据帧,接收广播帧,SM2=1,结束,37,7.4 波特率的制定方法 串行通信,收、发双方发送或接收的波特率必须一致。 4种工作方式。 方式0和方式2的

19、波特率是固定的; 方式1和方式3的波特率是可变的,由T1溢出率确定。 7.4.1 波特率的定义 波特率的定义:串行口每秒发送(或接收)的位数。 设发送一位所需要的时间为T,则波 特率为1/T。 范围:定时器的不同工作方式,得到的波特率的范围不 一样,这是由T1在不同工作方式下计数位数的 不同所决定。,37,38,7.4.2 串口在不同工作方式下波特率的计算 (1)串口方式0时,波特率固定为时钟频率fosc的1/12,不受 SMOD位值的影响。若fosc = 12 MHz,波特率为 1Mbit/s。 (2)串口方式2时,波特率仅与SMOD位的值有关。 方式2波特率 = fosc 若fosc =

20、12 MHz: SMOD = 0,波特率 = 187.5 kbit/s; SMOD = 1,波特率 为375 kbit/s。 (3)串口方式1或方式3时,常用T1作为波特率发生器,其关系 式为:,38,39,波特率 = 定时器T1的溢出率 (7-1) (4)在实际设定波特率时,T1常设置为方式2定时(自 动装初值),即TL1作为8位计数器,TH1存放备用 初值。 这种方式操作方便,也避免因软件重装初值带来的 定时误差。 设定时器T1方式2的初值为X,则有 定时器T1的溢出率 =,39,(7-2),40,将式(7-2)代入式(7-1),则有 波特率 = (7-3) 由式(7-3)可见,波特率随f

21、osc、SMOD和初值X而变化。 实际使用时,经常根据已知波特率和时钟频率fosc来计算T1的初值X。 为避免繁杂的初值计算,常用的波特率和初值X间的关系常列成表7-2的形式,以供查用。,40,41,表7-2 用定时器T1产生的常用波特率,41,42,对表7-2有两点需要注意: (1)在使用的时钟振荡频率fosc为12MHz或6MHz时,将 初值X和fosc带入式(7-3)中计算出的波特率有一定 误差。消除误差可采用时钟频率11.0592MHz。 (2)如果选用很低的波特率,如波特率选为55,可将定 时器T1设置为方式1定时。但在这种情况下,T1溢出 时,需在中断服务程序中重新装入初值。中断响

22、应时 间和执行指令时间会使波特率产生一定的误差,可用 改变初值的方法加以调整。,42,43,【例7-3】 若时钟频率为11.0592MHz,选用T1的方式2定时作为波特率发生器,波特率为2400bit/s,求初值。 设T1为方式2定时,选SMOD = 0。 波特率 = = 2400 从中解得X = 244 = F4H。 只要把F4H装入TH1和TL1,则T1产生的波特率为2 400bit/s。该结果也可直接从表7-2中查到。 *这里时钟振荡频率选为11.0592MHz,就可使初值为整数,从而产生精确的波特率。,43,44,7.5 串行口的应用 7.5.1 双机串行通信的硬件连接,44,1TTL

23、电平通信接口,如果两个单片机相距在1.5m之内,它们的串行口可直接相连,缺点:传输距离短、抗干扰能力差、传输速率低。,45,图7-17 RS-232C双机通信接口电路,2RS232电平通信接口,如果两个单片机的距离在1.5m15m之间时,可利用 RS232标准接口实现双机通讯。,缺点:传输速率低(最大20K)、通信距离短、接口处信号 容易产生串扰等。,信号特性:逻辑1为-3-15V,逻辑0为315V,46,3RS-422A双机通信接口 1)收发双方的信号地不再共地,RS-422A采用了平衡驱动和差分 接收的方法。全双工通讯,收发共4条通讯线。 2)两条线上传输的信号电平,当一个表示逻辑“1”(

24、+2 +6V ) 时,另一条一定为逻辑“0” (-2 -6V )。 两条线电压差值大于 200mv 代表 1; 两条线电压差值小于 200mv 代表 0。 3)若传输中,信号中混入干扰和噪声(共模形式),由于差分接 收器的作用,就能识别有用信号并正确接收传输的信息,并使 干扰和噪声相互抵消。,46,47,4)RS-422A能在长距离、高速率下传输数据。它的最 大传输率为10Mbit/s,电缆允许长度为12m,如果 采用较低传输速率时,最大传输距离可达1219m。 5) 为了增加通信距离,可采用光电隔离。,47,48,4RS-485双机通信接口 1)半双工,使用一对差分线; 2) RS-485对

25、于多站互连是十分方便的,很容易实现多 机通信。 3)RS-485允许最多并联32台驱动器和32台接收器。 4)最大传输距离约为1219m,最大传输速率为10Mbit/s。,48,49,5常用器件举例 NVE公司的IL422: 内部带光耦隔离; 422/485方式可做选择; 3.3V/5V接口兼容。,50,7.5.2 串行通信设计需要考虑的问题 单片机的串行通信接口设计时,需考虑如下问题。 (1)首先确定通信双方的数据传输速率。 (2)由数据传输速率确定采用的串行通信接口标准。,50,(3)在通信接口标准允许的范围内确定通信的波特率。为 减小波特率的误差,通常选用11.0592MHz的晶振频率。

26、 (4)根据任务需要,确定收发双方使用的通信协议。 (5)通信线的选择,这是要考虑的一个很重要的因素。通 信线一般选用双绞线较好,并根据传输的距离选择纤 芯的直径。如果空间的干扰较多,还要选择带有屏蔽 层的双绞线。 (6)通信协议确定后,进行通信软件编程。,51,7.5.3 双机串行通信软件编程 串行口的方式13是用于串行通信的,下面介绍双机串行通信软件编程。 说明:下面介绍的双机串行通信的编程实际上与上面介绍的各种串行标准的硬件接口电路无关,因为采用不同的标准串行通信接口仅仅是由双机串行通信距离、传输速率以及抗干扰性能来决定的。,51,52,1串行口方式1应用编程 【例7- 4】 采用方式1

27、进行双机串行通信,收、发双方均采用6MHz晶振,波特 率为2400bit/s。 发送缓冲区地址指针: 78H、77H单元为发送缓冲区首地址指针, 76H、75H单元为发送缓冲区末地址指针,其单元内容减1为 末地址。 发送缓冲区地址:2000H203FH。 通讯协议:先发地址帧,再发数据帧; 接收方在接收时使用一个标志位来区分接收的是地址还 是数据,然后将其分别存放到指定的单元中。,53,发送方查询方式发送地址帧,用中断方式发送数据帧。 接收方采用中断方式接收。 (1)甲机发送程序 中断方式的发送程序如下: ORG 0000H ;程序初始入口 LJMP MAIN ORG 0023H ;串行中断入

28、口 LJMP COM_INT,54,MAIN: MOV SP,#53H ;设置堆栈指针 MOV 78H,#20H ;设发送的数据块首、末地址 MOV 77H,#00H MOV 76H,#20H ;设发送的数据块首、末地址 MOV 75H,#40H ACALL TRANS ;调用发送子程序 HERE: SJMP HERE TRANS:MOV TMOD,#20H ;T1工作方式2 MOV TH1,#0F3H ;设置计数器初值 MOV TL1,#0F3H MOV PCON,#80H ;波特率加倍 SETB TR1 ;接通计数器计数,54,ORG 1000H,主程序,定时器波特率设置,55,MOV S

29、CON,#40H ;设置串行口工作方式 MOV IE,#00H ;先关中断, 用查询方式发送地址帧 CLR F0 ; 清数据发送结束标志 MOV SBUF,78H ;发送首地址高8位 WAIT1:JNB TI,WAIT1 CLR TI MOV SBUF,77H ;发送首地址低8位 WAIT2:JNB TI,WAIT2 CLR TI MOV SBUF,76H ;发送末地址高8位 WAIT3:JNB TI,WAIT3 CLR TI,55,MOV SBUF,75H ;发送末地址低8位 WAIT4: JNB TI,WAIT4 CLR TI,56,MOV IE,#90H ;打开中断允许寄存器, ;采用中

30、断方式发送数据 MOV DPH,78H ;缓冲区首址送DPTR MOV DPL,77H MOVX A,DPTR MOV SBUF,A ;发送首个数据 WAIT: JNB F0,WAIT ;发送等待 RET,56,57,COM_INT: CLR TI ;关发送中断标志位TI INC DPTR ;数据指针加1, 准备发送 :下个数据 MOV A,DPH ;判断当前被发送的数据 ;的地址是不是末地址 CJNE A,76H,END1 ;不是末地址则跳转 MOV A,DPL ;同上 CJNE A,75H,END1 SETB F0 ;数据发送完, 置1标志位 CLR ES ;关串行口中断 CLR EA ;

31、关中断 RET ;中断返回,57,发送完成处理,是末地址,58,END1: MOVX A,DPTR ;将要发送的数据送累加器, ;准备发送 MOV SBUF,A ;发送数据 RETI ;中断返回 END (2)乙机接收程序。 中断方式的接收程序如下: ORG 0000H LJMP MAIN ORG 0023H LJMP COM_INT ORG 1000H,58,59,MAIN: MOV SP,#53H ;设置堆栈指针 ACALL RECEI ;调用接收子程序 HERE: SJMP HERE RECEI: MOV R0,#78H ;设置地址接收区 MOV TMOD,#20H ;设置定时器/计数器

32、工作方式 MOV TH1,#0F3H ;设置波特率 MOV TL1,#0F3H MOV PCON,#80H ;波特率加倍 SETB TR1 ;开计数器 MOV SCON,#50H ;设置串行口工作方式 MOV IE,#90H ;开中断 CLR F0 ;地址/数据标志位清0 CLR 7FH ; 接收完成标志清0,60,WAIT: JNB 7F,WAIT ;查询标志位等待接收 RET COM_INT: PUSH DPL ;压栈, 保护现场 PUSH DPH PUSH Acc CLR RI ;接收中断标志位清0 JB F0,R_DATA ;判接收的是数据还是 ;地址, F0=0为地址 MOV A,S

33、BUF ;接收数据 MOV R0,A ;将地址帧送指定的寄存器,60,F0=0,地址帧,F0=1, 数据帧,R_DATA,61,DEC R0 CJNE R0,#74H,RETN SETB F0 ;置标志位, 地址接收完毕 RETN: POP Acc ;出栈, 恢复现场 POP DPH POP DPL RETI ;中断返回 R_DATA:MOV DPH,78H ;数据接收程序区 MOV DPL, 77H MOV A,SBUF ;接收数据 MOVX DPTR,A ;送指定的数据存储单元中,61,R0=74H 地址没收完,R0=74H 地址收完,62,INC 77H ;地址加1 MOV A,77H ;判当前接收数据的地址是否向高8位进位 JNZ END2 ; INC 78H END2: MOV A,76H CJNE A,78H,RETN;判是否最后一帧, 不是则继续 MOV A,75H CJNE A,77H,RETN;是最后一帧则各种标志位清0 CLR ES CLR EA SETB 7FH SJMP RETN ;跳入返回子程序区 END,62,是最后一帧的处理,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1