资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第6章 MCS-51 单片机的串行通信,6.1 概述 1.通信 通信:单片机与外界进行信息交换统称为通信。 8051单片机的通信方式有两种: 并行通信:数据的各位同时发送或接收。特点是传送速度快、效率高,但成本高。适用于短距离传送数据。计算机内部的数据传送一般均采用并行方式。 串行通信:数据一位一位顺序发送或接收。特点是传送速度慢,但成本低。适用于较长距离传送数据。计算机与外界的数据传送一般均采用串行方式。,2. 数据通信的制式 单工方式:数据仅按一个固定方向传送。因而这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。 半双工方式:数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收/发开关转换。 全双工方式:允许双方同时进行数据双向传送,但一般全双工传输方式的线路和设备较复杂。 以上三种传输方式都是用同一线路传输一种频率信号, 多工方式:在同一线路上实现资源共享。为了充分地利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分或码分复用技术,即可实现在同一线路上资源共享功能。,3. 串行数据通信的波特率,波特率是指每秒钟传送信号的数量,单位为波特(Baud)。而每秒钟传送二进制数的信号数(即二进制数的位数)定义为比特率,单位是bps(bit per second)或写成b/s(位/秒)。 在单片机串行通信中,传送的信号是二进制信号,波特率与比特率数值上相等。单位采用bps。 例如,异步串行通信的数据传送的速率是120字符/秒,而每个字符规定包含10位数字,则传输波特率为: 120字符/秒 10位/字符=1200位/秒= 1200bps,3. 串行通信的分类,串行数据通信按数据传送方式可分为异步通信和同步通信两种形式:同步方式:以数据块为单位进行数据传送,包括同步字符、数据块和校验字符CRC。优点是数据传输速率较高,缺点是要求发送时钟和接收时钟保持严格同步。数据格式如下图所示。,异步方式:以字符为单位进行数据传送,每一个字符均按固定的字符格式传送,又被称为帧。优点是不需要传送同步脉冲,可靠性高,所需设备简单;缺点是字符帧中因包含有起始位和停止位而降低了有效数据的传输速率。数据格式如下图所示:,6.2 MCS-51的串行口,MCS-51单片机内部有一个全双工的串行通信口(P3.0、P3.1) ,既可作UART(通用异步接收/发送器)用,也可作同步移位寄存器使用,还可用于网络通信,其帧格式可有8位、10位和11位,并能设置各种波特率。 1串行口寄存器结构 (1)两个物理上独立的同名的接收/发送缓冲寄存器SBUF 指令 MOV SBUF,A 启动一次数据发送,向发送缓冲器SBUF写入数据即可发送数据,指令 MOV A,SBUF 完成一次数据接收, 从接收缓冲器SBUF读出数据即可接收数据。 (2)由输入和输出移位寄存器和发送接收控制器等组成。 (3)2个SFR寄存器SCON和PCON,用于串行口的初始化编程。 (4)接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对 RI/TI 清0,以备下一次收/发。,MCS-51串行口的结构如下图所示:,2. 串行通信控制寄存器SCON (98H),SM0,SM1:串行口4种工作方式控制位。 =00:方式0,8位同步移位寄存器,其波特率为fosc/12; =01:方式1,10位UART,其波特率为可变,由定时器控制; =10:方式2,11位UART,其波特率为fosc/64或fosc/32; =11:方式3,11位UART,其波特率为可变,由定时器控制。 其中:fosc为系统晶振频率。 RI,TI:串行口收/发数据申请中断标志位 1 申请中断; 0 不申请中断。,RB8:在方式2、3中,用于存放收到的第9位数据;在双机通信中,作为奇偶校验;在多机通信中,用作区别地址帧/数据帧的标志。RB8=0 表示发送的是数据,RB8=1 表示发送的是地址。 TB8:方式2、3中,是要发送的第9位数据;在双机通信中,用于对接收到的数据进行奇偶校验;在多机通信中,用作判断地址帧/数据帧,TB8=0 表示发送的是数据,TB8=1 表示发送的是地址。 REN:串行口接收允许控制位 = 1: 表示允许接收; = 0: 禁止接收。 SM2:串行口多机通信控制位,作为方式2、方式3的附加控制位。,3中断允许控制寄存器IE (0A8H),0 禁止,1允许,EX0/EX1/ET1/ET0/ES 位:分别是 / ,T0/T1,串行口的中断允许控制位。 =0 :禁止中断; =1 :允许中断。 EA:总的中断允许控制位(总开关): =0 :禁止全部中断; =1 :允许中断。,其中对串行口有影响的位ES。ES为串行中断允许控制位。 ES=1:允许串行中断; ES=0:禁止串行中断。,4. 电源管理寄存器PCON(87H) 不可位寻址。 PCON主要用于实现电源控制而设置的专用寄存器。其格式如下图所示。,SMOD:串行口波特率倍增位 =1:串行口波特率加倍。 =0:串行口波特率不变,系统复位时默认为SMOD=0。,6.3 串行口的工作方式,1. 工作方式0( 8位移位寄存器I/O方式) 发送/接收过程:SBUF中的串行数据由RxD逐位移出/移入(低位在先,高位在后);TxD输出移位时钟,频率=fosc1/12;每送出/接收8位数据 TI/ RI自动置1;需要用软件清零 TI/ RI 。 注意:串行口在方式0下的工作并非是一种同步通信方式,经常配合“串入并出”“并入串出”移位寄存器一起使用,以达到扩展一个并行口的目的。 扩展电路如下图所示。,如要发送数据,查询方式的程序如下: MOV SCON,#00H ;串行口方式0 MOV SBUF,A ;将数据送出 JNB TI,$ ;等待数据发送完毕 CLR TI ;为下次发送作准备 注意:复位时,SCON 已经被清零,缺省值为方式0。 发送条件:TI=0。 接收条件:TI=0,置位 REN=1 (允许接收数据)。 2. 方式1 (波特率可变的10位异步通信方式 ) 发送/接收数据的格式:一帧信息包括1个起始位0,8个数据位和1个停止位1。 发送/接收过程:SBUF中的串行数据由RXD逐位移出/移入;TXD输出移位时钟,频率= (2SMOD/32)T1的溢出率,波特率可变。每送出/接收8位数据 TI/ RI自动置1;需要用软件清零 TI/ RI 。工作时,发送端自动添加一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位。 发送/接收条件:同方式0。,3. 方式2(固定波特率的11位异步接收/发送方式),发送/接收过程:方式2的接收/发送过程类似于方式1,所不同的是它比方式1增加了一位“第9位”数据(TB8/RB8),用于“奇偶校验”。方式2常用于单片机间通信。波特率 = fosc 2SMOD/64 。 发送/接收条件:同方式0。 3. 方式3(可变波特率的11位异步接收/发送方式) 方式3和方式2唯一的区别是波特率机制不同,方式3的波特率=(2SMOD/32)T1的溢出率。,奇偶校验:奇偶校验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。即如果奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。 奇校验规定:8位有效数据连同1位附加位中,二进制“1”的个数为奇数。 偶校验规定:8位有效数据连同1位附加位中,二进制“1”的个数为偶数。 约定发送采用奇校验:若发送的8位有效数据中“1”的个数为偶数,则要人为在附加位中添加一个“1”一起发送;若发送的8位有效数据中“1”的个数为奇数,则要人为在附加位中添加一个“0”一起发送。 约定接收采用奇校验:若接收到的9位数据中“1”的个数为奇数,则表明接收正确,取出8位有效数据即可;若接收到的9位数据中“1”的个数为偶数,则表明接收出错!应当进行出错处理。 采用偶校验时,处理方法与奇校验类似。,串行口的通信波特率,串行口的通信波特率恰到好处地反映了串行传输数据的速率。在MCS-51串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率(T1溢出信号的频率)控制。各种方式的通信波特率如下: 方式0:波特率固定为fosc/12。 其中:fosc系统主机晶振频率 方式2:波特率由PCON中的选择位SMOD来决定,可由下式表示: 波特率=(2SMOD/64)fosc 方式1和方式3:波特率是可变的,由定时器T1的溢出率控制。波特率为: 波特率=(2SMOD/32)定时器T1溢出率 T1溢出率=T1计数率/产生溢出所需的周期 = (fosc/12)/(2KTC)=1 / (12/fosc)(2KTC) 其中:K定时器T1的位数,定时器T1用作波特率发生器时,通常工作在方式2, 所以T1的溢出所需的周期数= 28TC。 TC定时器T1的预置初值。,下表列出了定时器T1工作于方式2的常用波特率及初值。,串口方式0应用编程 例题6 用8051串行口外接CD4094扩展8位并行输出口,8位并行口的各位都接一个发光二极管,要求发光二极管呈流水灯状态(轮流点亮)。 解:硬件连接电路如下图所示。,在开始通信之前,应先对控制寄存器SCON进行初始化。将00H送SCON即设置方式0。数据传送采用查询方式,通过查询TI的状态,来决定是否发送下一帧数据。在串行接收时,通过对RI查询来确定何时接收下一帧数据。程序如下: ORG 1000H START: MOV SCON, #00H; 置串行口工作方式0 MOV A, #80H ; 最高位灯先亮 CLR P1.0 ; 关闭并行输出 OUT0: MOV SBUF, A ; 开始串行输出 OUT1: JNB TI, OUT1; 输出完否?未完,等待; 完了,继续执行 CLR TI ; 完了,清TI标志,以备下次发送,SETB P1.0; 打开并行口输出 ACALL DELAY; 延时一段时间 RR A ; 循环右移 CLR P1.0; 关闭并行输出 SJMP OUT0 ; 循环 DELAY: MOV R7, #250 ; 延时子程序 D1: MOV R6, #250 D2: DJNZ R6, D2 DJNZ R7, D1 RET END,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号