《第6章串行接口09.ppt》由会员分享,可在线阅读,更多相关《第6章串行接口09.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第6章 UARTUART串行接口串行接口 教学目的:了解80C51系列单片机UART串行接口的结构、原理及应用;能够采用查询方式进行串行通信。教学重点:1.UART串行接口的工作原理;2.UART串行接口的4种工作方式的编程、应用。教学难点:1.多机通信方式2.波特率值的设置61 串行通信概述图6-1基本通信方式图示并行通信与串行通信并行通信:所传送数据的各位同时发送或接收。串行通信:所传送数据的各位按顺序一位一位地发送或接收。6.1.1 同步通信和异步通信方式 1.异步通信ASYNC 数据或字符是以固定的帧格式一帧(Frame)一帧地传送,从起始位、数据位到停止位就构成 完整的一帧,不同的
2、系统定义有不同的帧格式。图6-2 一种11位异步通信的帧格式 2.同步通信SYNC 用一同步字符来指示通信的开始(常约定12个),以实现发送端和接收端的同步。图6-3 一种同步通信的帧格式 6.1.2 串行通信的数据传送速率 在串行通信中数据传送速率的单位用波特率(Baud rate)表示,其意义是每秒钟传送多少位二进制数。6.1.3 6.1.3 串行通信的方式串行通信的方式单单工:只允许单方向传送,只需一条数据线。半双工:接收和发送分时双向进行,只需一条数据线。l全双工:甲、乙两机之间数据的发送和接收可以同时 进行,通信必须使用二根数据线。l 图6-4 通信方式示意图 6.1.4 通信协议计
3、算机之间进行数据传输时的一些约定,包括通信方式、帧格式、波特率、命令码的约定等。62 80C51串行口简介 6.2.1 6.2.1 串行口结构与工作原理串行口结构与工作原理80C51的串行口是一个可编程的全双工串行通信接口,通过软件编程它可以做通用异步接收和发送器UART(Universal Asynchronous ReceiverTransmitter),也可做同步移位寄存器用。其帧格式可设置8位、10位或11位,并能设置不同的波特率。图 65 串行口结构框图 串行口组成:两个数据缓冲寄存器SBUF、一个输入移位寄存器、波特率发生器以及串行控制寄存器SCON等组成。l串行口的接收发送操作:
4、首先对串行口初始化。发送时CPU写SBUF,一方面修改发送寄存器,同时启动数据串行发送到TXD端,发送完毕后置标志位TI;接受时置允许接收位才开始接受操作,接受完毕置位RI,这时CPU可以读SBUF,即读接收到的数据。l发送操作:数据写入发送缓冲寄存器SBUF(99H),串行口即把数据以设定的波特率从TXD端送出(低位在前),发送完后置中断标志TI=1。l MOV TMOD,#datal MOV SBUF,#datal JNB TI,$l CLR TIl RETl接收操作:REN是串行口接收器允许接收控制位。当RI=0,软件置REN为1时,即开始从RXD端以设定的波特率输入数据(低位在前),当
5、接收到数据时,置中断标志RI=1。RECV:MOV TMOD,#data CLRRI SETBREN JNB RI,$MOVA,SBUF CLR RI RET6.2.2 6.2.2 串行口寄存器串行口寄存器1)串行口的接收发送缓冲区SBUF:是两个独立的物理空间,只能字节寻址。2)串行口控制寄存器SCON:串行口工作方式的设置和数据传输的控制,可位寻址。lSM0、SM1:串行方式选择位 SM0 SM1 工作方式 功能 波特率 0 0 0 1 1 0 1 1 方式0方式1方式2方式3 8位同步移位寄存器10位UART11位UART11位UART fosc/12可设置fosc/64和fosc/32
6、可设置lSM2:在方式2和方式3中主要用于多机通信控制。当串行口以方式2或方式3 接收时,若SM21,且接收到第9位RB8为0时,则RI不置“1”,不接收主机发来的数据;若SM21,且RB8为1时,RI置“1”,并将接收到的8位数据送SBUF。若SM20时,则不论RB8为0还是为1,都将收到的8位数据送入SBUF中,并置RI为“1”。SM0SM1SM2RENTB8RB8TIRI在方式1中,当处于接收时,若SM21,则只有收到有效的停止位时,RI才置1。在方式0中,SM2应置0。lREN:允许串行接收位。由软件置位或清除。REN1时,允许接收;REN0时,禁止接收。lTB8:发送数据的第9位。在
7、方式2或方式3中,根据需要由软件置位或复位。在多机通信中可作为区别地址帧或数据帧的标识位,一般约定地址帧时TB8为1,数据帧时TB8为0。双机通信时它可作奇偶校验位。lRB8:接收数据的第9位。在方式2或方式3中,双机通信是奇偶位,多机通信是地址数据标识位。lTI:发送中断标志位。发送完一帧数据后由硬件置位,必须由软件来清除。lRI:接收中断标志位。接受完一帧数据后由硬件置位,必须由软件来清除。3)电源控制寄存器PCON PCON的最高位SMOD是串行口波特率倍增位。当SMOD1时,波特率加倍,复位时,SMOD0。直接地址为87 H,不可位寻址。SMOD6.2.3 80C516.2.3 80C
8、516.2.3 80C516.2.3 80C51的帧格式的帧格式的帧格式的帧格式l80C51串行口通过编程可设置4种工作方式,三种帧格式。方式0以8位数据为一帧,不设起始位和停止位,先发送或接收最低位。l 方式1以10位为一帧传输,设有一个起始位“0”,8个数据位和一个停止位“1”。l 方式2和3以11位为一帧传输,设有1个起始位“0”,8个数据位,1个可编程位(第九数据位)D8和1个停止位“1”。6.2.4 6.2.4 波特率的设置波特率的设置 l1)方式0和方式2的波特率l 在方式0时,每个机器周期发送或接收一位数据,因此波特率固定为时钟频率的112。l方式2的波特率 2 2)方式方式1
9、1和方式和方式3 3的波特率的波特率l方式l和方式3的波特率由定时器T1的溢出率与SMOD值决定 l 方式1和方式3的波特率 T1溢出率 定时器T1作波特率发生器使用时,通常是选用自动重装载方式,即方式2。在方式2中,TL1作计数用,而自动重装载的值放在TH1内,设计数初值为X,那么每过256-X个机器周期,定时器1就会产生一次溢出。为了避免因溢出而产生不必要的中断,此时应禁止T1中断。波特率为溢出周期之倒数,所以 (2)(1)溢出周期为:63 串行通信工作方式 l6.3.1 方式0l用作同步移位寄存器,以8位数据为一帧,发送/接收低位在先,数据由RXD(P3.0)端输入或输出,同步移位脉冲由
10、TXD(P3.l)端送出,波特率固定为 fosc12。这种方式常用于扩展IO 口。6.3.2 方式1l串行口为10位通用异步接口。数据帧格式为l位起始位“0”,8位数据位和1位停止位“1”。波特率由指令设置,T1溢出率决定。l发送操作:当数据写入发送缓冲器SBUF时,就启动发送器发送数据从引脚TXD端输出。当发送完一帧数据后,TI标志=1,并申请中断,通知CPU可以发送下一个数据。l接收操作:当RI=0,软件置REN为1时,串行口采样RXD,确认串行数据的起始位后开始接收一帧数据,直到停止位的到来。若SM2初始清零,则接收到停止位后硬件置RI=1,可以从SBUF中读取接收数据;若SM2初始置1
11、,则只有接收到有效停止位后硬件置RI=1。l 6.3.3 方式2和方式3 11位异步通信接口。发送或接收一帧信息包括l位起始位“0”、8位数据位、1位可编程位TB8/RB8和1位停止位“1”。方式2波特率与SMOD有关,方式3波特率取决于T1溢出率。l发送操作:发送前,先根据通信协议由软件设置TB8(如作奇偶校验位或地址数据标识位),然后执行任何一条以SBUF作为目的寄存器的写指令即启动发送器,同时TB8自动装到发送移位寄存器的第9位位置上,从TXD端输出一帧数据,发送完毕,TI标志=1。多机通信中,TB8=1为地址帧;TB8=0为数据帧。l接收操作:先置位REN为1,使串行口处于允许接收状态
12、,同时还要将RI清0。在满足这个条件的前提下,再根据SM2的状态和所接收到的RB8的状态决定是否会使RI置1,并申请中断,接收数据。当SM20时,不管RB8为0还是为1,RI都置1,此串行口将接收发来的信息。当SM21,且RB8为l时,表示在多机通信情况下,接收的信息为地址帧,此时RI置1。串行口将接收发来的地址。当SM21,且RB8为0时,表示接收的信息为数据帧,但不是发给本从机的,此时RI不置1,因而SBUF中所接收的数据帧将丢失。6.3.4 6.3.4 多机通信多机通信 图6-6多机通信连接图64 串行口应用举例 l例1、用并行输入8位移位寄存器74HC165扩展8位并行输入口。编程实现
13、从8位扩展口读入10个字节数据,并把它们转存到内部RAM的60H69H中。l解:在此采用74HC165与单片机相接实现I/O口扩展,单片机与74HC165的具体接线图见图6-7。图6-7 利用串行口扩展输入接口l按题意编程如下:l MOV R7,10 ;设置读入字节数l MOV R0,60H ;设片内RAM指针lRCV0:CLR P10 ;允许并行置入数据l SETB P10 ;允许串行移位l MOV SCON,10H ;设串行口方式0 并启动接收lJNB RI,;等待接收一帧数据lCLR RI ;清接收中断标志lMOV A,SBUF ;取缓冲器数据lMOV R0,A ;保存数据lINC R0
14、lDJNZ R7,RCV0 ;判是否已读入预定的字节数l ;对读入数据进行处理 例例2 2用两片用两片8 8位串入并出移位寄存器位串入并出移位寄存器74HC16474HC164扩展扩展1616位输出接口。图位输出接口。图6-86-8是利用是利用74HC16474HC164(也可选用其他同(也可选用其他同样功能的样功能的CMOSCMOS器件)扩展的器件)扩展的1616位发光二极管接口电路。位发光二极管接口电路。编程使这编程使这1616个发光二极管交替为间隔点亮状态,循环个发光二极管交替为间隔点亮状态,循环交替时间为交替时间为2 2秒钟。秒钟。l 图6-8 利用串行口扩展输出接口l按题意编程如下:
15、lST:MOV SCON,00H ;设串行口方式0 lMOV A,55H;二极管间隔点亮初值lLP2:MOV R0,2 ;输出口字节数lCLR P1.0 ;对74HC164清零,熄灭发光二极管lSETB P1.0 ;允许数据串行移位lLP1:MOV SBUF,A ;启动串行口发送 lJNB TI,;等待一帧发送结束lCLR TI ;清串行口发送中断标志lDJNZ R0,LP1;判预定字节数发送完否lLCALL DEL2s;调延时2s子程序(略)lCPL A ;交替点亮二极管lSJMP LP2;循环显示例3、由AT89S51作为甲机和乙机的双机异步通信的连接线路见图6-9。已知fOSC 11.0
16、592MHz,采用定时器1方式2作波特率发生器,波特率要求为2400,则定时器初始预置值TH1TL10F4H。编程把甲机片内RAM 40H4FH单元中的数据块从串行口输出到乙机,并存入乙机片外300H30FH单元。接收过程中要求判奇偶校验标志RB8。若出错置F0标志为1;若正确置F0标志为0,然后返回,要求采用工作方式3发送和接收。解:根据波特率计算T1的时间常数,T1工作在方式2。设SMOD=0,已知波特率2400,由(2)式计算出T1的时间常数 X=F4H 甲机发送子程序SENT:MOV TMOD,20H ;设置定时器1为方式2 MOV TL1,0E8H ;设预置值 MOV TH1,0E8
17、H SETB TR1 ;启动定时器1 MOV SCON,0C0H ;设置串行口为方式3 MOV PCON,00H ;SMOD0 MOV R0,50H ;设数据块指针 MOV R7,l0H ;设数据长度10H TRS:MOV A,R0 ;取数据送A MOV C,P MOV TB8,C ;奇偶位P送TB8 MOV SBUF,A ;数据送SBUF,启动 发送WAIT:JNB TI,$;判 一 帧 是 否 发 送 完 CLR TI INC R0 ;更新数据单元 DJNZ R7,TRS;循 环 发 送 至 结 束 RET ;返回乙机接收子程序RECV:MOV TMOD,20H ;设置定时器 1为方式2
18、MOV TL1,0E8H ;设预置值 MOV TH1,0E8H SETB TR1 ;启动定时器1 MOV SCON,0C0H ;设置串行口为方式3 MOV PCON,00H ;SMOD0 MOV DPTR,3000H ;设置数据块指针 MOV R7,10H ;设数据块长度 SETB REN ;允许接受 WAIT:JNB RI,$;判一帧是否接受完 CLR RI MOV A,SBUF ;读入一帧数据 JNB PSW.0,PZ ;奇偶位P为0则转 JNB RB8,ERR ;P1,RB80则出错 SJMP YES ;二者全为1则正确 PZ:JB RB8,ERR ;P0,RB81则出错YES:MOVX DPTR,A ;正确,存放数据 INC DPTR ;修改地址指针 DJNZ R7,WAIT ;判数据块接收完否 CLR PSW.5 ;接收正确,且接收完清F0标志 RET ;返回ERR:SETB PSW.5 ;出错置F0标志为1 RET ;返回