收藏 分享(赏)

第二章 MCS-51单片机串行接口.ppt

上传人:hwpkd79526 文档编号:8271401 上传时间:2019-06-17 格式:PPT 页数:47 大小:1.04MB
下载 相关 举报
第二章 MCS-51单片机串行接口.ppt_第1页
第1页 / 共47页
第二章 MCS-51单片机串行接口.ppt_第2页
第2页 / 共47页
第二章 MCS-51单片机串行接口.ppt_第3页
第3页 / 共47页
第二章 MCS-51单片机串行接口.ppt_第4页
第4页 / 共47页
第二章 MCS-51单片机串行接口.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

1、2.7 串行接口,教学目的: 1、了解单片机串行通信的基本概念与串行 通讯程序的编制 2、掌握单片机的串行通信工作及方式字的设定 3、掌握51单片机串行口的四种工作方式和对应的波特率的设定方法 重点:单片机串行口的四种工作方式和对应的波特率的设定方法 难点:串口的工作及方式字的设定,实际应用中,计算机的CPU与其外部设备之间常常要进行信息的交换,计算机之间也需要交换信息,所有这些信息的交换均称为“通信”。,1、通信的基本方式,并行通信,并行通信:是指数据的各位同时进行传送的方式特点:传输速度快,但当距离较远,位数又多时导致了通讯线路复杂且成本高,如图所示。,2.7.1 串行通信的基本概念,串行

2、通信,串行通信:是指数据一位一位地顺序传送 特点:通讯线路简单,只要一对传输线就可以实现通讯,并可以利用电话线,从而大大地降低了成本,特别适用于远距离通讯,但传送速度慢,如图所示。,2、串行通信中数据的传送方向,单工通信方式,半双工通信方式,全双工通讯方式,A端为发送站,B端为接收站,数据仅能从A站发至B站,数据可以从A发送到B,也可以由B发送到A。不过同一时间只能作一个方向的传送,其传送方式由收发控制开关K来控制。,每个站(A、B)既可同时发送,又可同时接收。,3、串行通讯的两种基本方式,异步通信,同步传送,数据,数据,数据,数据,数据,数据,在异步数据传送中,CPU与外设之间事先必须约定两

3、项事宜:,字符格式。双方要约好字符的编码形式,奇偶校验形式、 以及起始位和停止位的规定。,波特率(Baud rate)。波特率是衡量位传送速率的指标,它要求发送站和接收站都要以相同的数据传送速率工作。,4、波特率,例:假设传送速率是120字符/秒,假如每一个字符为10位,则其传送的波特率为:10位/字符120字符/秒=1200位/秒=1200波特,定义:每秒钟传送二进制代码的位数。 单位:波特,b/s(bps)。,注意:波特率和有效数据传送率并不一致。如上述字符帧的10位中真正有效的数据位只有8位;所以,有效数据位的传送速率为: 8120=960位/秒 。,串行通信的基本特征是数据逐位顺序进行

4、传送 串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平等)不同,形成了多种串行通信的协议与接口标准。 常见的有: 通用异步收发器(UART) 51系列单片机的串口形式 通用串行总线(USB) I2C总线 CAN总线 SPI总线 RS-485,RS-232C,RS422A标准等等,2.7.2 串行口的结构,1、串行口结构,两个同名的接收/发送缓冲寄存器SBUF指令 MOV SBUF,A 启动一次数据发送,可向SBUF再发送下一个数指令 MOV A,SBUF 完成一次数据接收,SBUF可再接收下一个数,接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对

5、RI/TI 清0,以备下一次收/发。,串行口相关的SFR(SCON,PCON), SM0,SM1:串行口4种工作方式的选择位。0 0 方式0:8位同步移位寄存器,波特率固定为 fosc/120 1 方式1:10位UART(1+8+1位), 波特率可变,按公式计算1 0 方式2:11位UART(1+8+1+1位),波特率固定=fosc x(1/32)或(1/64)1 1 方式3:11位UART(1+8+1+1位),波特率可变,按公式计算,2、串行口控制寄存器SCON(98H),SM0,SM1,SM2,TB8,RB8,RI,REN,SCON.7,SCON.0,SCON.6,TI, SM2:串行口多

6、机通信控制位,若SM2=1,则允许多机通信。若第9位数据为1,说明本帧数据为地址;若第9位为0,则本帧为数据帧。SM2=0,即不属于多机通信,则接收一帧数据后,不管第9位数值是0还是1,都置RI=1,接收到的数据装入SBUF中。(作为方式2、方式3的附加控制位),2、串行口控制寄存器SCON(98H),SM0,SM1,SM2,TB8,RB8,RI,REN,SCON.7,SCON.0,TI,SCON.5,SM2, REN:串行口接收允许控制位;REN= 1 表示允许接收;REN= 0 禁止接收。由软件置“1”或清“0”,2、串行口控制寄存器SCON(98H),SM0,SM1,SM2,TB8,RB

7、8,RI,REN,SCON.7,SCON.0,TI,SCON.3,SM2,SCON.4,SCON.2, TB8:方式2、3中,是要发送的第9位数据。多机通信中,TB8=0 表示发送的是数据;TB8=1 表示发送的是地址。(奇偶校验)根据需要由软件置位或复位, RB8:在方式2、3中,是收到的第9位数据。在多机通信中,用作区别地址帧/数据帧的标志。(奇偶校验), TI:发送中断标志。在一帧数据发送完时被置位,串行口收/发数据申请中断标志位,在方式0串行发送到第八位结束时,或其他方式串行发送到停止位的开始时由硬件置位,可用软件查询,必须由软件清“0”。TI1 申请中断; TI0 不申请中断,2、串

8、行口控制寄存器SCON(98H),SM0,SM1,SM2,TB8,RB8,RI,REN,SCON.7,SCON.0,TI,SM2,SCON.1, RI:接收中断标志。在接收到一帧有效数据后由硬件置位,在方式0中第八位数据发送结束时,由硬件置位;在其他方式中,则在接收到停止位中间时由硬件置位,可用软件查询,必须由软件清“0”。RI1 申请中断; RI0 不申请中断, SMOD:在串行口工作方式 1、2、3 中,是波特率倍增位 SMOD=1 时,波特率加倍SMOD=0 时,波特率不加倍。 (在PCON中只有这一个位与串口有关),2、电源控制寄存器PCON(87H),SMOD,PCON.7,PCON

9、.0,2.7.3 串行口工作方式,工作方式0:8位移位寄存器I/O方式(SM0 SM1=00),发送:SBUF中的串行数据由RxD逐位移出,低位在前,高位在后; TxD输出移位时钟,频率=fosc1/12;每送出8位数据 TI就自动置1;需要用软件清零 TI。,接收:串行数据由RxD逐位移入SBUF中;TxD输出移位时钟,频率=fosc1/12;每接收 8位数据RI就自动置1;需要用软件清零 RI。,经常配合“串入并出”“并入串出”移位寄存器一起使用扩展接口,方式0工作时,多用查询方式编程:发送:MOV SBUF,A 接收:JNB RI,$JNB TI,$ CLR RI CLR TI MOV

10、A, SBUF,工作方式0:8位移位寄存器I/O方式(续),复位时,SCON 已经被清零,缺省值: 方式0。,接收前,务必先置位 REN=1 允许接收数据。,数据输出:,数据输入:,74LS164是串入并出芯片;74LS165是并入串出芯片,串行口方式0的扩展应用,CLR用于清0,例1:用并行输入8位移位寄存器74HC165扩展16位并行输入口。(编程实现从16位扩展口读入20个字节数据),S/L负脉冲将并行数据装入,高电平时启动单片机进行数据输入。,MOV R7 , #20MOV R0 , #50HSETB F0 RCV0: CLR P1.0SETB P1.0 RCV1: MOV SCON

11、, #10JNB RI , $CLR RIMOV A , SBUFMOV R0 , A,INC R0CPL F0JB F0 , RCV2DEC R7SJMP RCV1 RCV2: DJNZ R7 , RCV0 ,常用于串行通讯。除发/收8位数据外,还在D0位前有一个起始位“0”;在D7位后有一个停止位“1”。,方式1工作时:发送端自动添加一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位。接收时,停止位进入SCON的RB8,工作方式1:10位UART(1+8+1位)波特率可变(SM0 SM1=01),波特率可变用定时器T1作波特率发生器:公式:波特率 =(2SMOD/32)T1的溢出

12、率,TXD与RXD分别用于发送与接收数据,波特率=(2SMOD/32)T1的溢出率, 溢出率:T1溢出的频繁程度即:T1溢出一次所需时间的倒数。, 初值 X = 2n -,2SMOD fosc 32 波特率 12, 波特率 =,2SMOD fosc 32 12(2n - X),其中:X 是定时器初值, 初值 X = 2n -,2SMOD fosc 32 波特率 12, 例:计算波特率:要求用T1工作于方式2来产生波特率1200,已知晶振频率=6MHz。要求出T1的初值:,初值 X = 28 -,20 6106 32 1200 12,= 256 - = 256 - 13.02,6106 4608

13、00, 243 = 0F3H 结果后面要用到,串行发送:(写SBUF启动发送过程),串行接收:(置REN=1启动接收过程),T1作波特率发生器时初始化包括:选定时器工作方式2(TMOD选8位自动重装);将计算(或查表)出的初值X赋给TH1,TL1;启动T1 (SETB TR1);对T1不要开中断 !,工作方式1的接收/发送,串行口的初始化包括:对SCON选工作方式对PCON设波特率加倍位“SMOD”(缺省值=0)如果是接收数据,仍要先置“1”REN位,例:要求T1工作于方式2,使串行口工作在方式1时产生波特率 1200bps,已知fosc = 6MHz。,SM0 SM1 SM2 REN TB8

14、 RB8 TI R1,SCON,0 1 0 1 0 0 0 0,MAIN: ORG 0023HMOV TMOD,#20H SBR1:JNB RI,SENDMOV TL1,#0F3H LCALL SINMOV TH1,#0F3H SJMP NEXTSETB TR1 SEND:LCALL SOUT MOV SCON, #50H NEXT:RETISETB EA SIN: SETB ES RETLCALL SOUT SOUT:SJMP $ RET,发送子程序 接收子程序 SOUT: SIN: MOV A,R0 MOV A,SBUFINC R0 MOV R1, AMOV SBUF, A INC R1C

15、LR TI CLR RIRET RET,例 (续),由于波特率固定,常用于单片机间通讯。数据由8+1位组成,通常附加的一位(TB8/RB8)用于“奇偶校验”。,工作方式2:11位UART(1+8+1+1位)两种波特率,方式2的波特率 = fosc 2SMOD/64 即: fosc 1/32 或 fosc 1/64 两种,奇偶校验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。换言之:如果奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。,奇校验:8位有效数据连同1位附加位中,二进制“1”的个数为奇数偶校验:8位有效数据连

16、同1位附加位中,二进制“1”的个数为偶数,约定接收采用奇校验若接收到的9位数据中“1”的个数为奇数,则表明接收正确,取出8位有效数据即可;若接收到的9位数据中“1”的个数为偶数,则表明接收出错!应当进行出错处理。,约定发送采用奇校验若发送的8位有效数据中“1”的个数为偶数,则要人为添加一个附加位“1”一起发送;若发送的8位有效数据中“1”的个数为奇数,则要人为添加一个附加位“0”一起发送。,采用偶校验时,处理方法与奇校验相反,回顾:程序状态字寄存器PSW中有一个奇偶状态位 P,CY,AC,F0,RS0,OV,P,RS1,PSW.7,PSW.0,P (PSW.0):奇偶状态位。P=1 表示目前累

17、加器中 “1”的个数为奇数P=0 表示目前累加器中 “1”的个数为偶数 CPU随时监视着Acc的“1”的个数并自动反映在 P,工作方式2 的奇偶校验用法, 选用偶校验方式发送PIPL: PUSH PSW ;保护现场PUSH ACC CLR TI ;清发送中断标志以备下次发送MOV A,R0 ;取由R0所指向的单元中的数据MOV C, P ;将奇偶标志位通过C放进TB8MOV TB8, C ;一起发送出去MOV SBUF,A ;启动发送INC R0 ;指针指向下一个数据单元POP ACC ;恢复现场POP PSWRETI ;中断返回,串口方式2 的奇偶校验用法:,选用偶校验方式发送如果 A 中1

18、的个数是奇数(P=1),将TB8写成“1”一起发出去;反之:若(P=0)则写TB8=“0”发出去。选用偶校验方式接收若收到的数中P=0,且检查到RB8=0就可能对了若收到的数中P=1,且检查到RB8=1就可能对了若P=0且RB8=1或P=1且RB8=0就一定出错了!,串口方式2 的奇偶校验用法:,SM0 SM1 SM2 REN TB8 RB8 TI R1,SCON,串行口控制寄存器SCON,TB8 RB8, 选用偶校验方式接收:PIPL:PUSH PSW ;保护现场PUSH ACC CLR RI ;清接收中断标志以备下次接收MOV A,SBUF;读进收到的数据MOV C, P ;奇偶标志位C

19、=JNB P,L1JNC L1 ;C=0时转到L1 P=0时转到L1JNB RB8,ERR;P=1时转到L2,若RB8=0“出错”SJMP L2 ;RB8=0 则表明接收正确,转L2L1: JB RB8,ERR;P=0且RB8=1表明“出错”L2: MOV R0, A ;P=0且RB8=0表明接收正确INC R0 ;指针指向下一个数据单元POP ACC ;恢复现场POP PSWRETI ;中断返回ERR:出错处理RETI,工作方式3:当SM0,SM1为11时,串行口工作于方式311位UART(1+8+1+1位) 波特率可变,串口方式3和方式2唯一的区别是波特率机制不同。 方式2的波特率固定为时

20、钟周期的32或64分频,不可变。此工作方式与其他串行通讯设备连接困难,因此不常用。 方式3的波特率可变,按前面的公式计算:,波特率=(2SMOD/32)T1的溢出率, 波特率 =,2SMOD fosc 32 12(2n - X),其中:X 是定时器初值,波特率的设计小结,根据串行口的四种工作方式可知:方式0为移位寄存器方式,波特率是固定的。其波特率为fosc/12。方式2为10位UART,波特率为2SMOD/64fosc。波特率仅与PCON中SMOD的值有关,当SMOD=0时,波特率为fosc/64,当SMOD=1时,波特率为fosc/32。,波特率的设计小结,方式1和方式3的波特率是可变的,

21、由定时器T1的溢出速率控制。方式1和方式3波特率=2SMOD/32(T1溢出率),其中当SMOD=0时,波特率为1/32(T1溢出率),当SMOD=1时,波特率为1/16(T1溢出率)。定时器T1的溢出率定义为单位时间内定时器T1溢出的次数。即每秒钟时间内定时器T1溢出多少次。在串行通讯时,定时器T1作波特率发生器,经常采用8位自动装载方式(方式2),这样不但操作方便,也可避免重装时间常数带来的定时误差。并且T0可使用定时器方式3,这时T1作波特率发生器,定时器T0可拆为两个8位定时/计数器用。,和串行口相关的寄存器 (1) PCON (2) SCON (3) TMOD (4) TCON,串行

22、口设置步骤: (1)决定波特率 (2)设置TMOD (3)对THL和TL1填入初值 (4)启动定时器 (5)决定SCON的值 (6)决定是否产生串行中断,有需要时另依中断设置步骤做好各项程序中断前的准备工作 (7)清除RI、TI标志,并设置REN1,例1:若定时器T1设置成模式2作波特率发生器,已知fosc=6MHz。求可能产生的最高和最低的波特率,例2:串行接口工作在方式1和3时,其波特率与fosc,定时器T1工作模式2的初值及SMOD位的关系如何?设fosc6MHz,现利用定时器T1工作模式2产生的波特率为110b/s,试计算定时器初值。,课堂小节: 1.单片机串行通信的两种方式 2.单片机工作方式字的设定 3.单片机的四种工作方式 4.单片机波特率的设定,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报