1 / 59

本章主要介绍串行通信概念及 51 系列单片机的串行口问题,将具体介绍以下内容: 计算机串行通信基础 ---- 基本概念、标准接口 。

第七章 MCS-51 的串行口. 本章主要介绍串行通信概念及 51 系列单片机的串行口问题,将具体介绍以下内容: 计算机串行通信基础 ---- 基本概念、标准接口 。 51 单片机串行口 ---- 串行口结构、串行口的控制寄存器、串行口的工作方式、应用举例。. 本章学习目标. *** 串行通信概述. 7.1 串行口的结构. 7.2 串行口的 4 种工作方式. 7.3 多机通信. 7.4 串行口的编程和应用. *** 串行通信概述. 1. 异步通信与同步通信. 并行通信方式 — 空 间上区分各位数据及

petra
Download Presentation

本章主要介绍串行通信概念及 51 系列单片机的串行口问题,将具体介绍以下内容: 计算机串行通信基础 ---- 基本概念、标准接口 。

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第七章 MCS-51的串行口 本章主要介绍串行通信概念及51系列单片机的串行口问题,将具体介绍以下内容: 计算机串行通信基础----基本概念、标准接口 。 51单片机串行口----串行口结构、串行口的控制寄存器、串行口的工作方式、应用举例。

  2. 本章学习目标 ***串行通信概述 7.1 串行口的结构 7.2 串行口的4种工作方式 7.3 多机通信 7.4 串行口的编程和应用

  3. ***串行通信概述 1. 异步通信与同步通信 并行通信方式—空间上区分各位数据及 联络控制信号。占用传 输线多,速度快。 通 信 方 式 串行通信方式—时间上区分各位数据及 联络控制信号。占用传 输线少,速度慢。

  4. *2. 串行通信方式 ----信息传输在一个方向上只占用一跟通信线,它既作为数据线,又作为联络线。 异步通信方式—按字符传输 信息各式上分 同步通信方式—按数据块传输

  5. *3. 异步通信方式 第N个字符 第N-1个字符 停止位 停止位 起始位 奇偶校验 7位数据位 1 0 高位 低位

  6. 异步传送方式中字符按帧格式传送。 异步通信方式利用每一帧的起、止信号建立发送和接收之间的同步。 特点: a、每一帧内部各位均采用固定的时间间隔 b、帧与帧之间的间隔是随机的 c、接收机依靠每一帧的起始位和停止位识别字符传送 是否结束,或是一个新字符 d、异步传送时不传送同步时钟脉冲

  7. 在同步通信中,数据或字符开始处是用一同步字符来指示(一般约定为1~2个字符),以实现发送端和接收端同步,一旦检测到约定同步字符,下面就连续按顺序接收数据。在同步通信中,数据或字符开始处是用一同步字符来指示(一般约定为1~2个字符),以实现发送端和接收端同步,一旦检测到约定同步字符,下面就连续按顺序接收数据。 *4.同步通信SYNC(Synchronous Data Communication)

  8. 同步传送方式是一种连续传送方式。 特点: a、在被传送的数据块前加上同步字符SYN; b、数据之间没有间隙; c、传输速度高、容量大; d、发送方在发送数据的同时,要将时钟信号同时传 送。

  9. *5. 串行通信的波特率 波特率(band rate)是异步通信中每秒钟传送的二进制数码的位数(比特数),单位是位/秒。 作用:1、反映串行通信的速率; 2、反映对传输通道的要求:波特率越高,要求的传输 通道的频带宽度就越宽异步通信:波特率为每秒传 送的字符数和每个字符位数的乘积。 例如:数据传送的速率为120个字符每秒,每个字符由1个起始位、8个数据位和1个停止位组成,则其传送波特率为: 10b×120/s=1200b/s=1200波特。 注意:时钟频率和波特率不是同一个概念,时钟频率比波特率高得多。

  10. *6. 串行通信的方式 按照数据传送方向,串行通信可分为半双工(half duplex)制式和全双工(full duplex)制式。 1.半双工制式 在半双工制式下,甲机和乙机之间只有一个通信回路,接收和发送不能同时进行,只能分时发送和接收。 2.全双工制式 在全双工制式下,甲、乙两机之间数据的发送和接收可以同时进行,称为全双工传送。不管哪种形式的串行通信,在两机之间均应有共地线。

  11. 数据流 接收器 发送器 数据流 数据流 *7. 数据传送方向 单工方式 全双工方式 半双工方式

  12. 7.1 串行口的结构 • MCS-51 单片机串行接口的硬件 • P3.0 位的第二功能 —— 收端 RXD • P3.1 位的第二功能 —— 发端 TXD • MCS-51 单片机串行接口的控制 • 寄存器 SCON、PCON、SBUF • 寄存器 IE、IP • MCS-51 单片机串行接口工作方式 • 方式 0 • 方式 2 • 方式 1 • 方式 3

  13. 有两个数据缓冲寄存器SBUF,一个输入移位寄存器,一个串行控制寄存器SCON和一个特殊功能寄存器PCON等组成。有两个数据缓冲寄存器SBUF,一个输入移位寄存器,一个串行控制寄存器SCON和一个特殊功能寄存器PCON等组成。 8 位SBUF是全双工串行接口寄存器, 它是特殊功能寄存器,地址为 99H,不可位寻址;串行输出时为发送数据缓冲器,发送寄存器只写不读,数据从 发送端TXD(P3.1)输出; 串行输入时为接收数 据缓冲器,接收寄存 器只读不写,数据从 接收端 RXD(P3.0) 输入;由指令确定是对发 送寄存器或接收寄存器作用。

  14. 7.1.1 串行口控制寄存器SCON • SM0、SM1 —— 串行接口工作方式定义位 • SM0、SM1 = 00 —— 方式 0,8位同步移位寄存器 • SM0、SM1 = 01 —— 方式 1,10 位异步接收发送 • SM0、SM1 = 10 —— 方式 2,11 位异步接收发送 • SM0、SM1 = 11 —— 方式 3,11 位异步接收发送 注意: 方式 0 的特点,方式 2、方式 3 的差异

  15. 串行口控制寄存器SCON • SM2 —— 多机通信控制位(方式2和3) • SM2 = 0,无多机通信 • SM2 = 1,允许多机通信 • REN —— 串行口接收数据控制位 • REN = 1,允许串行口接收数据 • REN = 0,禁止串行口接收数据 由软件置位或清除

  16. 串行口控制寄存器SCON • TB8 —— 发送串行输出数据的第 9 位 • 双机通信时它可作奇偶校验位;在多机通信中可作为 • 区别地址帧或数据帧的标识位。 • RB8 —— 接收串行输入数据的第 9 位 • 在方式2和方式3中是接收的第9位数据。

  17. 串行口控制寄存器SCON • TI —— 串行口中发送完一组数据后的中断标志 • 若串口发送完一组数据,则由硬件自动置 TI = 1 • 若串口还要发数据,则应手动编程使 TI = 0 • RI —— 串行口中接收完一组数据后的中断标志 • 若串口接收完一组数据,则由硬件自动置 RI = 1 • 若串口还要收数据,则应手动编程使 RI = 0

  18. 7.1.2 特殊功能寄存器PCON • 串行数据传送速率控制寄存器 —— PCON 地址:87H TDL:等待方式位 • SMOD = 0,定义波特率不变 PD:掉电方式 GF1、 GF2通用标志位 • SMOD = 1,定义波特率加倍 注:PCON 寄存器的地址为87H, 仅 b7 位有用,不可位寻址。 ANL PCON,#7FH:对SMOD位清零 ORL PCON,#80H:对SMOD位置位

  19. 方式 波特率 SM0 SM1 功 能 fosc/12 0 0 同步移位寄存器 0 可变 0 1 1 10位异步收发 fosc/64或fosc/32 1 0 2 11位异步收发 可变 1 1 3 11位异步收发 7.2 串行口的4种工作方式 SM0 SM1 串行口工作方式选择位

  20. 7.2.1 方式 0 —— 移位寄存器输入/输出方式 串行口为同步移位寄存器方式 • 非串行通信用方式-扩展并行I/O • 用并入串出移位寄存器扩展并行输入口 • 用串入并出移位寄存器扩展并行输出口 • RXD、TXD 线的作用 • RXD — 串 → 并、并 → 串 数据传送线 • TXD — 同步时钟线,同步时钟为 fosc/12(固定波特率) 注:为应用串行接口扩展并行接口的方式。

  21. 7.2.2 方式 1 —— 10 位异步接收/发送(波特率可变) 串行口为8位异步通信接口 • 方式 1 的数位 • 1 位起始位 — 值 0 • 8 位数据位 — 为有用信息(低位在前,可含 1 位校验位) • 1 位停止位 — 值 1 • 异步传送时的速率设置 • 速率设置的方法 —— 设置定时器 T1 的初值 • 常用波特率: • 用T1作为波特率发生器,B=(2SMOD/32)×T1溢出率。

  22. 方式 1(续) • 异步发送时的工作过程 • 发送条件 —— 清 SCON 中发送中断标志 TI = 0 • 发送指令 —— MOV SBUF,A 注: 需发送的 8 位字节数据送串行数据缓冲器 SBUF 后将启动异步发送开始。 • 起始位 0、停止位 1 在执行发送指令时自动加入 • 发送传输线 —— TXD、GND • 发送 10 位数据结束 —— 发送中断标志 TI = 1 注: 若需继续发送,置TI = 0,送数据到 SBUF

  23. 方式 1(续) • 异步接收时的工作过程 • 接收条件 —— 清 SCON 中接收中断标志 RI = 0 • 置 SCON 中接收控制标志 REN = 1 • 接收传输线 —— RXD、GND • 接收同步位 —— 接收传输线 RXD 有从 1 到 0 的信号 • 接收数据 —— 9 位数据送数据接收器 8 位字节数据送串行数据缓冲器 SBUF 1 位停止位送入 SCON 中的 RB8 = 1 • 接收 10 位数据结束 —— 接收中断标志 RI = 1 注: 若需继续接收,置RI = 0

  24. 7.2.3 方式 2 —— 11 位异步接收/发送(波特率固定) 串行口为9位异步通信接口 • 方式 2 的数位 • 1 位起始位 —— 值 0 • 8 位数据位 —— 为 1 字节有用信息 • 1 位校验位 —— 对有用信息的奇偶校验 • 1 位停止位 —— 值 1 • 异步传送时的速率设置 • 若 PCON 中 SMOD = 0,速率 = fosc/32 • 若 PCON 中 SMOD = 1,速率 = fosc/64

  25. 方式 2(续) • 异步发送时的工作过程 • 基本过程同方式 1 • 1 位校验位在发送前应先置入 SCON 中的 TB8 • 异步接收时的工作过程 • 基本过程同方式 1 • 1 位校验位(第 9 位)送 SCON 中的 RB8 注: RB8 中未存放 1 位停止位

  26. 7.2.4 方式 3 —— 11 位异步接收/发送(波特率可变) • 方式 3 —— 11 位异步接收/发送(波特率可变) • 基本定义同方式 2 • 速率设置同方式 1 注: 方式 0 —— 固定波特率为 fosc/12 方式 2 —— 固定波特率为 fosc/32或fosc/64 上述方式与单片机主频有关 方式 1 —— 可变波特率 方式 3 —— 可变波特率 上述方式与定时器 T1 的初值有关

  27. 7.3 多机通信 • 多个MCS-51单片机可以利用串行口进行多机通信。在多机通信中要保证主机与所选择的从机实现可靠地通信,必须保证串行口具有识别功能。 • 控制寄存器SCON的SM2位就是为满足这一条而设置的多机通信控制位。 • 原理:在串行口以方式2(或方式3)接收时,若SM2=1,表示置多机通信功能位,此时可能出现两种情况: • 接收到的第9位数据为1时,数据才装入SBUF,并置中断标志 RI=1,向CPU发出中断请求。 • 接收到的第9位数据为0时,则不产生中断标志,信息抛弃 若SM2=0,则接收到的第9位数据不论为0还是1,都产生RI=1中断标志,接收到的数据装入SBUF。

  28. 多机通信系统示意图 多机通信的实现,主要靠主、从机之间正确地设置与判断多机通信控制位SM2和发送或接收的第9数据位(D8)。下面简述如何实现多机通信。

  29. (1)主、从机均初始化为方式2或方式3,置SM2=1,允许(1)主、从机均初始化为方式2或方式3,置SM2=1,允许 中断。 (2)主机置TB8=1,发送要寻址的从机地址。 (3)所有从机均接收主机发送的地址,并进行地址比较。 (4)被寻址的从机确认地址后,置本机。SM2=0,向主机 返回地址,供主机核对。 (5)核对无误后,主机向被寻址的从机发送命令,通知从机 接收或发送数据。 (6)通信只能在主、从机之间进行,两个从机之间的通信需 通过主机作中介。 (7)本次通信结束后,主、从机重置SM2=1,主机可再对 其他从机寻址。

  30. 主机程序: ORG 0030H MAIN:MOV SCON,#98H M1: MOV SBUF,#02H L1: JNB TI,$ CLR TI JNB RI,$ MOV A,SUBF XRL A,#02H JZ RHT AJMP M1 例:主机向02号从机发送50H~5FH中的数据;02号从机将接收到的数据放到内RAM30H ~3FH单元中。 • RHT :CLR TB8 • MOV R0,#50H • M1: MOV R7,#10H • L3: MOV A,@R0 • MOV SBUF,A • JNB TI,$ • CLR TI • INC R0 • DJNZ R7,L3 • AJMP MAIN • END

  31. 从机程序: ORG 0030H MAIN: MOV R0,#30H MOV R6,#10H SI: MOV SCON,#0B0H SR1: JNB RI,$ CLR RI SR2: MOV A,SUBF XRL A,#02H JNZ SR1 CLR SM2 MOV SBUF,#02H JNB TI,$ CLR TI • SR3 :JNB RI,$ • CLR RI • JNB TB8,RHT • SETB SM2 • SJMP SR1 • RHT: MOV A,SBUF • MOV @R0 , A • INC R0 • DJNZ R6,SR3 • AJMP SI • END

  32. 7.3 波特率的制定方法 波特率的定义--串行口每秒钟发送(或接收)的位数。 (1)方式0的波特率 在方式0下,串行口通信的波特率是固定的,其值为fosc/12(fosc为主机频率)。 (2)方式2的波特率 在方式2下,通信波特率为fosc/32或fosc/64,根据特殊功能寄存器PCON中SMOD位的状态来决定串行口在那个波特率下工作。选择公式为:

  33. (3)方式1或方式3的波特率 在这两种方式下,串行口波特率是由定时器的溢出率决定的,因而波特率是可变的。波特率的公式为: 式中:K为定时器T1的位数。

  34. 定时器T1产生的常用波特率

  35. 7.3 串行口的编程和应用 • 方式 0 用于扩展并行 I/O口 • 方式 1 和方式 3 仅传送数位不同 • 方式 2 为固定波特率 • 方式 1 和方式 3 均需设置可变波特率

  36. 方式 0 用于扩展并行 I/O口 • 串 → 并方式,扩展并行输出口 • 电路图 8031 串入并出移位寄存器 RXD TXD DATA CLK • 功能线 • RXD —— 接移位寄存器的数据输入端 • TXD —— 接移位寄存器的同步时钟端 注: 注意信号方向

  37. 方式 0 用于扩展并行 I/O口 • 并 →串方式,扩展输入口 • 电路图 8031 并入串出移位寄存器 RXD TXD DATA CLK • 功能线 • RXD —— 接移位寄存器的数据输出端 • TXD —— 接移位寄存器的同步时钟端 注: 注意信号方向

  38. 方式 0 用于扩展并行 I/O口 例10.1:用 8031 的串口外接 1 个串入并出移位寄存器 芯片CD4094 扩展为 8 位并行输出口,并口接 8 个 LED,并循环轮流显示。 • 电路图 P1.0 8031 DATA CLK CD4094 RXD TXD TBS

  39. 方式 0 用于扩展并行 I/O口 • 编程 ORG 0000H LJMP MAIN ORG 0023H LJMP SBR MAIN: MOV SCON,#00XXXX0XB ; 方式 0,TI = 0 SETB EA SETB ES MOV A,#10000000B ; 初值,左边 LED 亮 CLR P1.0 ; CD4094 输出并口关闭 MOV SBUF,A ; 数据传出,产生中断 LOOP: SJMP $

  40. 方式 0 用于扩展并行 I/O口 • 编程(续) SBR: SETB P1.0 ; CD4094 输出并口打开,LED 亮 ACALL DELAY CLR TI ; 手动清中断标志 RR A ; 循环位移 ; 80H、40H、20H、10H、08H … CLR P1.0 ; CD4094 输出并口关闭 MOV SBUF,A ; 数据传出,产生中断 RETI END 注: 延时子程序 DELAY 未给出

  41. 方式 0 用于扩展并行 I/O口 例10.2:用 8031 的串口外接 1 个并入串出移位寄存器 芯片 CD4014 扩展为 8 位并行输入口,并口 接 8 个开关量输入,开关 K 闭合时有效。 • 电路图 8031 K CD4014 RXD DATA TXD CLK P//S P1.1 P1.0

  42. 方式 0 用于扩展并行 I/O口 • 编程 START: JB P1.0,START ; 若 K 未合上则循环查询 SETB P1.1 ; CD4014 并行数据输入有效 MOV SCON,#00X1XXX0B ; 方式 0,REN = 1 允许接收,RI = 0 CLR P1.1 ; CD4014 串行数据输出有效 LOOP: JNB RI,LOOP ; 若 RI = 0 数据未收完 ; 若 RI = 1 数据已收完 CLR RI ; 手动清 RI,准备下次传送数据 MOV A,SBUF

  43. 方式 1 用于串行通信 例10.3:8031串行口双工方式收发 ASCII 字符,最高 1 位用来作奇偶校验位,采用奇校验方式, 波特率为 1200 。 • 工作方式 方式 1, 7 位 ASCII 码,1 位校验码 • 数据区 发送数据区首址 20H,接收数据区首址 40H • 主频选用 fosc = 6MHz • T1 设置 方式 2,初值为 F4H(查表 10.2)

  44. 方式 1 用于串行通信 • 主程序(2 个单片机均有) ORG 0000H LJMP MAIN ORG 0023H LJMP SBR1 MOV TMOD,#20H ; 定时器 T1 设置为方式 2 MOV TL1,#0F4H MOV TH1,#0F4H ; 装定时器 T1 的初值 SETB TR1 ; 启动定时器 T1

  45. 方式 1 用于串行通信 • 主程序(2 个单片机均有) MOV SCON,#50H ; 串口工作方式 1,REN = 1 MOV R0,#20H ; 发数据区首址 MOV R1,#40H ; 收数据区首址 SETB ET1 ; 开 T1 中断 SETB ES ; 开串口中断 SETB EA ; 开总中断 ACALL SOUT ; 调用发送子程序 SJMP $

  46. 方式 1 用于串行通信 • 串行口中断服务程序 SBR1: JNB RI,SEND ACALL SIN ; 若 RI = 1,调用接收子程序 SJMP NEXT SEND: ACALL SOUT ; 若 RI = 0,调用发送子程序 NEXT: RETI

  47. 方式 1 用于串行通信 • 发送子程序 SOUT: MOV A,@R0 MOV C,P CPL C MOV ACC.7,C INC R0 MOV SBUF,A CLR,TI RET

  48. 方式 1 用于串行通信 • 接收子程序 SIN: MOV A,SBUF MOV C,P CPL C ANL A,#7FH MOV @R1,A INC R1 CLR RI RET

  49. 7.3.1 串行口扩展显示器 【例7-1】用8位串入并出移位寄存器74HC164扩展显示器。 7.3 单片机串行口的应用

More Related