单片机第6章MCS51单片机的串行口.ppt
第六章 MCS-51单片机的串行口,内容提要:,6.1 计算机串行通信基础,6.2 MCS-51单片机的串行口,6.3 单片机串行口应用举例,6.1 计算机串行通信基础,6.1.1 基本概念6.1.2 串行通信的标准接口,6.1.1 基本概念,一、串行通信方式 什么叫串行通信?,在生活中同学们排横队行走 并行;排纵队行走 串行。计算机中在传输信息、数据时也有并行、串行的问题。,1、异步通讯方式,以字符为传送单位用起始位和停止位标识每个字符的 开始和结束字符间隔不固定,只需字符传送时同步。异步通讯常用格式:一个字符帧,异步 发送时钟与接收时钟不一定相等。,2、同步通讯,以一串字符为一个传送单位,字符间不加标识位,在一串字符开始用同步字符标识,硬件要求高,通讯双方须严格同步。,接收设备,发送设备,同步发送设备时钟与接收设备时钟严格一致。,单工,A 发,B 收,半双工,A 发 收,B 收 发,例如:广播电台 收音机,例如:对讲机,二、数据传送模式,单工,单工通讯:数据单向传送。,半双工通讯:数据可分时双向传送。,全双工,A 发 收,B 收 发,例如:电话机,全双工通讯:可同时进行发送和接收。,三、信号的调制于解调,调制器:数字信号转换成模拟信号解调器:模拟信号转换成数字信号,四、串行通信的校验,奇偶校验和校验循环冗余码校验,五、传输速率与传输距离,1、波特率即串行通信速率。b/s、bps 在异步通信中,单位时间内所传送的有效二进制位数波特率。举例、设有一帧信息,1个起始位、8个数据位、1个停止位,传输速率为每秒240个字符。求波特率。解:(181)240=2400 b/s=2400波特。2、传输距离与传输速率的关系:反比关系,6.1.2 串行通信的标准接口,一、RS-232C接口电气特性机械特性功能特性过程特性二、RS-422A接口三、RS-485接口四、20mA电流环接口,6.2.1 MCS-51串行口的结构6.2.2 MCS-51串行口的控制寄存器6.2.3 MCS-51串行口的工作方式,6.2 MCS-51单片机的串行口,6.2.1 MCS-51串行口的结构,单片机内有通用异步接收/发送器 UART。全双工,4种工作方式,波特率可编程设置,可中断,1个全双工串行接口,可同时进行发送和接收。串行接口输入/输出引脚:TXD(P3.1)、RXD(P3.0)数据格式(P.237图):按不同方式,一帧位数 8/10/11 发送/接收时,数据皆低位在前。,一帧字符发送/接收结束,置位标志位(TI/RI)并申请SIO中断。中断控制:中断允许位ES 中断入口:0023H,串行通信接口,发送:,CPU,发送寄存器SBUF,发送时钟:,SBUF 串行发送/接收数据缓冲器 是两个物理单元,共用一个地址(99H),接收:,CPU,接收时钟,接收数据寄存器SBUF,2、PCON 电源管理寄存器,6.2.2 MCS-51串行口的控制寄存器,1、数据缓冲器SBUF发送SBUF和接收SBUF共用一个地址99H。(1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。发送指令:MOVSBUF,A(2)接收SBUF存放已接收成功的8位数据,供CPU读取。读取串行口接收数据指令:MOV A,SBUF,3、串行口控制/状态寄存器SCON(98H),SM0,SM1:选择串行口4种工作方式。SM2:多机控制位,用于多机通讯。REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接 收。TB8:发送的第9位数据位,可用作校验位和地址/数据标识位RB8:接收的第9位数据位或停止位TI:发送中断标志,发送一帧结束,TI=1,必须软件清零RI:接收中断标志,接收一帧结束,RI=1,必须软件清零,串行口的工作方式,表7-1 串行口工作方式,6.2.3 MCS-51串行口的工作方式,一、方式0二、方式1三、方式2和方式3四、波特率的计算,同步移位寄存器方式 波特率固定为fosc/12 RXD 接收发送数据 TXD 产生同步移位脉冲 接收/发送完,置位RI/TI,(要求SM2=0),发送,接收,无起始位,无停止位。可用于并口的扩展。,一、方式0,1.一帧8位,无起始位和停止位。2.RXD:数据输入/输出端。TXD:同步脉冲输出端,每个脉冲对应一个数据位。3.波特率B=fosc/12 如:fosc=12MHz,B=1MHz,每位数据占1s。,4.发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。,5.移位寄存器方式举例,数据从RXD(P3.0)引脚串行输出,低位在先,高位在后;TXD(P3.1)引脚输出移位脉冲,其频率为foc/12;发送完毕后,中断标志位TI为1。如要发送数据,如下所示:MOV SCON,#00H;串行口方式0 MOV SBUF,A;将数据送出 JNB TI,$;等待数据发送完毕,8位UART 波特率为(2SMODT1的溢出率)/32,可变。一帧信息10位。,发送,接收,送 RB8,发送完置位TI。,当接收到数据后,置位RI是有条件的。即:REN=1,RI=0 且SM2=0或SM2=1但是接收到的停止位为1。此时,数据装载SBUF,RI置1,停止位进入RB8。,二、方式1,8位数据异步通讯方式。1.一帧10位:8位数据位,1个起始位(0),1个停止位(1)。2.RXD:接收数据端。TXD:发送数据端。3.波特率:用T1作为波特率发生器,B=(2SMOD/32)T1溢出率。4.发送:写入SBUF,同时启动发送,一帧发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且停止位为1(或SM2=0),将接收数据装入SBUF,停止位装入RB8,并使RI=1;否则丢弃接收数据,不置位RI。,当REN=1,CPU开始采样RXD引脚负跳变信号,若出现负跳变,才进入数据接收状态,先检测起始位,若第一位为0,继续接收其余位;否则,停止接收,重新采样负跳变。数据采样速率为波特率16倍频,在数据位中间,用第7、8、9个脉冲采样3次数据位,并3中取2保留采样值。,9位UART一般用于多机通信。一帧信息11位。,发送,发送完数据置位TI。,接收,接收到有效数据完毕,置位RI的条件:REN=1,RI=0 且SM2=0或接收到第9位数据为1,此时,数据装载SBUF,RI置1,第9位数据(TB8)RB8。,送RB8,三、方式2和方式3,9位数据异步通讯方式。1.一帧为11位:9位数据位,1个起始位(0),1个停止位(1)。第9位数据位在TB8/RB8中,常用作校验位和多机通讯标识位。2.RXD:接收数据端,TXD:发送数据端。3.波特率:方式2:B=(2SMOD/64)fosc。方式3:B=(2SMOD/32)T1溢出率。,4.发送:先装入TB8,写入SBUF并启动发送,发送结束,TI=1。接收:REN=1,允许接收。接收完一帧,若RI=0且第9位 为1(或SM2=0),将接收数据装入接收SBUF,第9 位装入RB8,使RI=1;否则丢弃接收数据,不置 位RI。,方式0、方式2固定。方式0为固定波特率:B=fosc/12方式2波特率:(固定)2SMOD/64 fosc 方式1,方式3可变。波特率=2SMOD/32(T1的溢出率)T1溢出率=单位时间内溢出次数=1/(T1的定时时间)而T1的定时时间t就是T1溢出一次所用的时间。此情况下,一般设T1工作在模式2(8位自动重装初值)。N=28 t/T,t=(28N)T=(28N)12/fosc所以,T1溢出率=1/t=fosc/12(28N),故,波特率=2SMOD/32 fosc/12(256N)。若已知波特率,则可求出T1的计数初值:y=2562SMODfosc/(波特率3212),四、波特率的计算,表6-3 常用的波特率及计算器初值,巩固新课:例、若fosc=6MHz,波特率为2400波特,设SMOD=1,则定时/计数器T1的计数初值为多少?并进行初始化编程。,解:X=2562SMODfosc/(24003212)=242.98243=F3H fosc=11.0592MHz,波特率为2400,设SMOD=0,则 X=F4H。初始化编程:MOV TMOD,#20H MOV PCON,#80H MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1 MOV SCON,#50H,6.3 单片机串行口应用举例,串行口的应用,串行口初始化编程格式:SIO:MOV SCON,#控制状态字;写方式字且TI=RI=0(MOV PCON,#80H);波特率加倍(MOV TMOD,#20H);T1作波特率发生器(MOV TH1,#X);选定波特率(MOV TL1,#X)(SETB TR1)(SETB EA);开串行口中断(SETB ES),一、串行口初始化,二、发送程序,1.查询方式:TRAM:MOV A,R0;取数据 MOVSBUF,A;发送一个字符WAIT:JBCTI,NEXT;等待发送结束SJMPWAITNEXT:INCR0;准备下一次发送SJMPTRAM,2.中断方式:,ORG 0023H;串行口中断入口AJMP SINTMAIN:;初始化编程TRAM:MOV A,R0;取数据MOV SBUF,A;发送第一个字符 H:SJMP H;其它工作 SINT:CLR TI;中断服务程序INC R0MOV A,R0;取数据MOV SBUF,A;发送下一个字符RETI,三、接收程序,REN=1、RI=0等待接收,当RI=1,从SBUF读取数据。1.查询方式:WAIT:JBCRI,NEXT;查询等待SJMPWAITNEXT:MOVA,SBUF;读取接收数据MOVR0,A;保存数据INCR0;准备下一次接收SJMPWAIT,四、串行口方式0,用于扩展单片机的并行I/O接口。串行口实现:并行串行的数据转换74LS165/74LS164实现:串行并行的数据转换。,五、异步通讯程序举例 1.发送程序:将片内RAM 50H起始单元的16个数由串 行口发送。要求发送波特率为系统时钟 的32分频,并进行奇偶校验。,MAINT:MOV SCON,#80H;串行口初始化MOV PCON,#80H;波特率SETBEASETBES;开串行口中断MOV R0,#50H;设数据指针MOV R7,#10H;数据长度LOOP:MOV A,R0;取一个字符MOV C,P;加奇偶校验MOV TB8,CMOV SBUF,A;启动一次发送HERE:SJMPHERE;CPU执行其它任务,ORG 0023H;串行口中断入口AJMP TRANI,TRANI:PUSH A;保护现场PUSH PSWCLR TI;清发送结束标志DJNZ R7,NEXT;是否发送完?CLR ES;发送完,关闭串行口中断 SJMP TENDNEXT:INC R0;未发送完,修改指针MOV A,R0;取下一个字符MOV C,P;加奇偶校验MOV TB8,CMOV SBUF,A;发送一个字符POP PSW;恢复现场POP ATEND:RETI;中断返回,2.接收程序:串行输入16个字符,存入片内RAM的50H起 始单元,串行口波特率为2400(设晶振为11.0592MHz)。,RECS:MOV SCON,#50H;串行口方式1允许接收MOV TMOD,#20H;T1方式2定时MOV TL1,#0F4H;写入T1时间常数MOV TH1,#0F4HSETB TR1;启动T1MOV R0,#50H;设数据指针MOV R7,#10H;接收数据长度 WAIT:JBC RI,NEXT;等待串行口接收SJMP WAITNEXT:MOV A,SBUF;读取接收字符MOV R0,A;保存一个字符INC R0;修改指针DJNZ R7,WAIT;全部字符接收完?RET,3.接收程序:串行输入16个字符,进行奇偶校验。,RECS:MOV SCON,#0D0H;串行口方式3允许接收MOV TMOD,#20H;T1方式2定时MOV TL1,#0F4H;写入T1时间常数MOV TH1,#0F4HSETB TR1;启动T1MOV R0,#50H;设数据指针MOV R7,#10H;接收数据长度 WAIT:JBC RI,NEXT;等待串行口接收SJMP WAITNEXT:MOV A,SBUF;取一个接收字符JNB P,COMP;奇偶校验JNB RB8,ERR;PRB8,数据出错SJMP RIGHT;P=RB8,数据正确COMP:JB RB8,ERRRIGHT:MOV R0,A;保存一个字符INC R0;修改指针DJNZ R7,WAIT;全部字符接收完?CLR F0;F0=0,接收数据全部正确RETERR:SETB F0;F0=1,接收数据出错RET,六、串行口的应用控制,(一)主从机间的通信(二)多机通信接口,(一)主从机间的通信,1双机串行异步通信l 单片机与单片机间的串行异步通信接口设计(如图6-146-16所示)l 单片机与PC系列微机间的异步串行通信接口设计(如图6-17所示),图6-14 两台8031直接通信,图6-15 两台8031采用RS232C总线通信,图6-16 两台8751互传数据,图6-17 8031单片机和PC机通过RS232C总线通信接口图,l 单片机与RS232C接口(1)分离元件电平转换电路,如图6-19所示。(2)集成电路电平转换电路MC1488,1489这两种芯片的引脚如图6-20所示。(3)集成电路电平转换器MC145407。如图6-21所示。,图6-18 RS232C总线上传输的异步通信典型数据格式,表6-4 RS232C信号线及其在DB-25的针脚号,图6-19 分离元件电平转换电路,(a)MC1488(b)MC1489图6-20 MC1488,MC1489引脚,图6-21 MC145407引脚,(a),(b),图6-22 终端/计算机与终端/计算机简化连接形式,(二)多机通信接口,1多机通信原理 串行口控制寄存器SCON中的SM2为多机通信接口控制位。串行口以方式2或3接收时,若SM2为1,则仅当接收到的第9位数据RB8为1时,数据才装入SBUF,置位RI,请求CPU对数据进行处理;当SM2为0时,则接收到一个数据后,不管第9位数据RB8是0还是1,都将数据装入接收缓冲器SBUF并置位中断标志RI,请求CPU处理。,2多机通信程序设计lMCS-51多机通信程序设计以典型的PC机和MCS-51构成的主从式多机系统为例,如图6-23所示,阐述多机通信的程序设计。l PC机多机通信编程格式如表6-5所示其中WLS1,WLS0两位用于设置新发送或接收的字长,详见表6-6;奇偶校验允许位PEN及ESP、跟随校验位的组合见表6-7。l多机通信实例,图6-23 PC机与MCS-51单片机多机通信,表6-5 LCR端口地址,表6-6 WLS1,WLS0两位设置的字长,表6-7 PEN及ESP跟随校验位的组合,小结:1、什么叫串行通信?2、UART叫什么?(通用异步接收/发送器)3、单工、半双工、全双工?4、串口工作用到哪些寄存器?(PCON、SCON、SBUF)5、串口有几种工作方式?6、波特率如何设置?(T1的计数初值如何确定),布置作业:P125 1、2,