1 / 27

第九章 MCS-51串行接口 9.1 串行口与串行通信 9.2 MCS-51 单片机的串行接口 9.3 51 单片机串行口的工作方式

第九章 MCS-51串行接口 9.1 串行口与串行通信 9.2 MCS-51 单片机的串行接口 9.3 51 单片机串行口的工作方式. 9.1 串行口与串行通信. 一、串行通信的基本特征. 串行通信的基本特征是数据逐位顺序进行传送. 二、串行通信的协议与接口标准. 串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平 …… 等)不同,形成了多种串行通信的协议与接口标准。 常见的有: ☞ 通用异步收发器 (UART) —— 本课程介绍的串口 ☞ 通用串行总线( USB ) ☞ I2C 总线 ☞ CAN 总线 ☞ SPI 总线

whitley
Download Presentation

第九章 MCS-51串行接口 9.1 串行口与串行通信 9.2 MCS-51 单片机的串行接口 9.3 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串行接口 9.1 串行口与串行通信 9.2 MCS-51单片机的串行接口 9.3 51单片机串行口的工作方式

  2. 9.1串行口与串行通信 一、串行通信的基本特征 串行通信的基本特征是数据逐位顺序进行传送 二、串行通信的协议与接口标准 串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平……等)不同,形成了多种串行通信的协议与接口标准。 常见的有: ☞通用异步收发器(UART)——本课程介绍的串口 ☞通用串行总线(USB) ☞I2C总线 ☞CAN总线 ☞SPI总线 ☞RS-485,RS-232C,RS422A标准……等等

  3. 三、全双工串行接口(UART) ☞数据通信的几个术语: 并行:数据各位同时进行传送 串行:数据逐位顺序进行传送 ☞全双工:(串行通信)收/发可同时进行 半双工:(串行通信)收/发不可同时进行 ☞异步串行通信:以字符为单位进行传送 同步串行通信:以数据块为单位进行传送 波特率(bps.):单位时间传送的位数

  4. 9.2 MCS-51单片机的串行接口 一、51单片机的串行接口结构图 引脚 SBUF(发) (门)移位寄存器 TxD 波特率发生器T1 发送控制器 TI A累加器 1 接收控制器 RI 引脚 SBUF(收) 移位寄存器 RxD 去申请中断

  5. 二、串行口的结构 ☞两个同名的接收/发送缓冲寄存器SBUF 指令 MOV SBUF,A 启动一次数据发送,可向SBUF再发送下一个数 指令 MOV A,SBUF 完成一次数据接收,SBUF可再接收下一个数 ☞接收/发送数据,无论是否采用中断方式 工作,每接收/发送一个数据都必须用指 令对 RI/TI 清0,以备下一次收/发。 ☞串行口相关的SFR(SCON,PCON)

  6. 三、串行口控制寄存器SCON(98H) SCON SM0 SM1 SM2 REN TB8 RB8 TI R1 ☞ SM0,SM1:串行口4种工作方式的选择位。 0 0 方式0:8位移位寄存器I/O,波特率固定为 fosc/12 0 1 方式1:8位UART(1+8+1位),波特率可变,按公式计算 1 0 方式2:9位UART(1+8+1+1位),波特率固定=fosc x1/32或1/64 1 1 方式3:9位UART(1+8+1+1位),波特率可变,按公式计算 ☞ SM2:串行口多机通信控制位 (作为方式2、方式3的附加控制位)

  7. SCON SM0 SM1 SM2 REN TB8 RB8 TI R1 ☞ RI,TI:串行口收/发数据申请中断标志位 =1 申请中断; =0 不申请中断 ☞ RB8:在方式2、3中,是收到的第9位数据。 在多机通信中,用作区别地址帧/数据帧的 标志。(奇偶校验) ☞ TB8:方式2、3中,是要发送的第9位数据。 多机通信中,TB8=0 表示发送的是数据; TB8=1 表示发送的是地址。(奇偶校验) ☞ REN:串行口接收允许控制位 = 1 表示允许接收; = 0 禁止接收。

  8. 四、电源控制寄存器 PCON(97H) ——特殊功能寄存器PCON不能按位寻址—— PCON SMOD — — — GF1 GF0 PD 1DL ☞ SMOD:在串行口工作方式 1、2、3 中, 是波特率加倍位 =1 时,波特率加倍 =0 时,波特率不加倍。 (在PCON中只有这一个位与串口有关) ☞ GF1,GF0:用户可自行定义使用的通用标志位

  9. PCON SMOD — — — GF1 GF0 PD IDL ☞ PD:掉电方式控制位 =0:常规工作方式。 =1:进入掉电方式: 振荡器停振 片内RAM和SRF的值保持不变 P0—P3口维持原状。 程序停止 只有复位能使之退出掉电方式。

  10. PCON SMOD — — — GF1 GF0 PD 1DL ☞ IDL:待机方式(空闲方式)控制位 =0:常规工作方式。 =1:进入待机方式: 振荡器继续振荡 中断、定时器、串口功能继续有效 片内RAM和SRF保持不变 CPU状态保持、P0—P3口维持原状 程序停顿。 中断和复位能退出待机,继续后面的程序。

  11. PCON SMOD — — — GF1 GF0 PD 1DL ☞ PD:掉电控制位 =0:常规方式。 =1:掉电方式: 振荡器停振 片内RAM和SRF不变 P0—P3口维持原状 程序停止 只有复位能退出掉电 ☞ IDL:待机控制位 =0:常规方式。 =1:待机方式: 振荡器继续振荡 中断,定时器,串口有效 片内RAM和SRF不变 CPU状态,P0—P3维持原状 程序停顿。 中断和复位能退出待机,继续后面的程序。

  12. 9.3 51单片机串行口的工作方式 一、工作方式0:8位移位寄存器I/O方式 ☞发送:SBUF中的串行数据由RxD逐位移出; TxD输出移位时钟,频率=fosc1/12; 每送出8位数据 TI就自动置1; 需要用软件清零 TI。 ☞接收:串行数据由RxD逐位移入SBUF中; TxD输出移位时钟,频率=fosc1/12; 每接收 8位数据RI就自动置1; 需要用软件清零 RI。

  13. 工作方式0:8位移位寄存器I/O方式(续) ☞经常配合“串入并出”“并入串出”移位 寄存器一起使用扩展接口(第六章)。 ☞方式0工作时,多用查询方式编程: 发送:MOV SBUF,A 接收:JNB RI,$ JNB TI,$ CLR RI CLR TI MOV A, SBUF ☞复位时,SCON 已经被清零,缺省值: 方式0。 ☞接收前,务必先置位 REN=1 允许接收数据。

  14. 串行口方式0的扩展应用——经常用到 串行口常用工作方式0扩展出并行I/O口, 工作方式1、2、3则常用于串行通信 +5V VCC TxD RxD AB AB AB CLK CLK CLK CLR CLR CLR 74LS164 74LS164 74LS164 h g f e d c b a h g f e d c b a h g f e d c b a 51单片机 共阳LED 数码管 +5V 74LS164是串入并出芯片;74LS165是并入串出芯片

  15. h g f e d c b a a 共阳LED数码管 公共端(字位)接高电平, 笔划(字段)置为低电平 就被点亮了 f b g e c d h 共阳极 ☞比如要显示“0” 须令a b c d e f 为“0” 电平,g h为“1”电平。 累加器 A h g f e d c b a ☞再比如要显示“3” 须令a b c d g 为“0” 电平,e f h为“1”电平。 0C0H = “0” 0B0H = “3”

  16. 例:利用串行口工作方式0扩展出8位并行I/O口,驱动共阳LED数码管显示0—9。例:利用串行口工作方式0扩展出8位并行I/O口,驱动共阳LED数码管显示0—9。 +5V VCC TxD RxD AB CLK CLR 74LS164 h g f e d c b a 51单片机 共阳LED数码管

  17. h g f e d c b a a 根据上图编写的通过串行口和 74LS164 驱动共阳LED数码管 (查表)显示0-9数字的子程序: DSPLY:MOV DPTR, #TABLE MOVC A, @A+DPTR MOV SBUF, A JNB TI, $ CLR TI RET TABLE:DB 0C0H,0F9H,0A4H DB 0B0H,99H,92H DB 82H,0F8H,80H,90H f b g e c d h 共阳极 累加器 A h g f e d c b a 1 1 0 0 0 0 0 0 0C0H = “0” 1 0 1 1 0 0 0 0 0B0H = “3”

  18. 二、工作方式1:8位UART(1+8+1位)波特率可变 ☞常用于串行通讯。除发/收8位数据外,还 在D0位前有一个起始位“0”; 在D7位后有一个停止位“1”。 ☞方式1工作时: 发送端自动添加一个起始位和一个停止位; 接收端自动去掉一个起始位和一个停止位。 ☞波特率可变 ——用定时器T1作波特率发生器: 公式:波特率 =(2SMOD/32)T1的溢出率

  19. 波特率=(2SMOD/32)T1的溢出率 ☞ 溢出率:T1溢出的频繁程度 即:T1溢出一次所需时间的倒数。 2SMOD  fosc 32  12(2n - X) ☞ 波特率 = 其中:X 是定时器初值 2SMOD  fosc 32  波特率 12 ☞ 初值 X = 2n -

  20. 常用波特率和T1初值查表 ☞表格有多种, 晶振也不止一种

  21. 工作方式1的接收/发送 ☞RxD引脚为接收端,TxD引脚为发送端,由波特率 发生器T1控制发送速度,不同于方式0:收/发都 需要由TxD送出移位时钟。 ☞串行口的初始化包括: 对SCON选工作方式 对PCON设波特率加倍位“SMOD”(缺省值=0) 如果是接收数据,仍要先置“1”REN位 ☞T1作波特率发生器时初始化包括: 选定时器工作方式2(TMOD选8位自动重装); 将计算(或查表)出的初值X赋给TH1,TL1; 启动T1 (SETB TR1); 对T1不要开中断 !!

  22. 串行口控制寄存器SCON SCON SM0 SM1 SM2 REN TB8 RB8 TI R1 0 1 0 1 0 0 0 0 ☞ SM0,SM1:串行口工作方式选择位。 0 1 :方式1,8位UART(1+8+1位) ☞ SM2:串行口多机通信控制位,作为方式2、3 的附加控制位,此处不用,可写成“0” ☞ REN:串行口接收允许位。 REN=1 允许接收 ☞ TB8,RB8,TI,RI等位由运行中间的情况 决定,可先写成 “0”

  23. 三、工作方式2: 9位UART(1+8+1+1位)两种波特率 ☞由于波特率固定,常用于单片机间通讯。 数据由8+1位组成,通常附加的一位 (TB8/RB8)用于“奇偶校验”。 ☞方式2的波特率 = fosc  2SMOD/64 即: fosc 1/32 或 fosc 1/64 两种

  24. ☞奇偶校验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。☞奇偶校验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。 换言之:如果奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。 ☞奇校验:8位有效数据连同1位附加位中, 二进制“1”的个数为奇数 偶校验:8位有效数据连同1位附加位中, 二进制“1”的个数为偶数

  25. ☞约定发送采用奇校验 若发送的8位有效数据中“1”的个数为偶数, 则要人为添加一个附加位“1”一起发送; 若发送的8位有效数据中“1”的个数为奇数, 则要人为添加一个附加位“0”一起发送。 ☞约定接收采用奇校验 若接收到的9位数据中“1”的个数为奇数, 则表明接收正确,取出8位有效数据即可; 若接收到的9位数据中“1”的个数为偶数, 则表明接收出错!应当进行出错处理。 采用偶校验时,处理方法与奇校验相反

  26. 工作方式2 的奇偶校验用法 回顾: 程序状态字寄存器PSW中有一个奇偶状态位 P PSW.7 PSW.0 CY AC F0 RS1 RS0 OV P P (PSW.0):奇偶状态位。 P=1 表示目前累加器中 “1”的个数为奇数 P=0 表示目前累加器中 “1”的个数为偶数 CPU随时监视着Acc的“1”的个数并自动反映在 P

  27. 四、工作方式3 9位UART(1+8+1+1位) 波特率可变 串口方式3和方式2唯一的区别是波特率机制不同。 ☞方式2的波特率固定为时钟周期的32或64分频,不可变。此工作方式与其他串行通讯设备连接困难,因此不常用。 ☞方式3的波特率可变,按前面的公式计算: 波特率=(2SMOD/32)T1的溢出率 2SMOD  fosc 32  12(2n - X) ☞ 波特率 = 其中:X 是定时器初值

More Related