《80C51单片机 MCS-51串行接口.ppt》由会员分享,可在线阅读,更多相关《80C51单片机 MCS-51串行接口.ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第九章串行接口第九章串行接口 9.1 9.1 串行口与串行通信串行口与串行通信 9.2 MCS-519.2 MCS-51单片机的串行接口单片机的串行接口 9.3 519.3 51单片机串行口的工作方式单片机串行口的工作方式9.19.1串行口与串行通信串行口与串行通信串行通信的格式及约定(如:同步方式、通讯速率、串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平数据块格式、信号电平等)不同,形成了多种等)不同,形成了多种串行通信的协议与接口标准。串行通信的协议与接口标准。常见的有:常见的有:通用异步收发器通用异步收发器(UART)UART)本课程介绍的串口本课程介绍的串口通用串行
2、总线通用串行总线(USBUSB)I2CI2C总线总线CANCAN总线总线SPISPI总线总线RS-485RS-485,RS-232CRS-232C,RS422ARS422A标准标准等等等等一、串行通信的基本特征一、串行通信的基本特征串行通信的基本特征是数据逐位顺序进行传送串行通信的基本特征是数据逐位顺序进行传送二、串行通信的协议与接口标准二、串行通信的协议与接口标准三、全双工串行接口三、全双工串行接口(UART)UART)数据通信的数据通信的几个术语:几个术语:并行:数据各位同时进行传送并行:数据各位同时进行传送 串行:数据逐位顺序进行传送串行:数据逐位顺序进行传送全双工全双工:(:(串行通信
3、串行通信)收收/发可同时进行发可同时进行 半双工半双工:(:(串行通信串行通信)收收/发不可同时进行发不可同时进行异步串行通信异步串行通信:以字符为单位进行传送以字符为单位进行传送 同步串行通信同步串行通信:以数据块以数据块为单位进行传送为单位进行传送 波特率波特率(bps.):bps.):单位时间传送的位数单位时间传送的位数9.2 9.2 MCS-51MCS-51单片机的串行接口单片机的串行接口SBUF(发)发)SBUF(收)收)发送控制器发送控制器 TI接收控制器接收控制器 RI移位寄存器移位寄存器波波特特率率发发生生器器T1 1A累累加加器器(门门)移位寄存器移位寄存器RxDTxD去申请
4、中断去申请中断引脚引脚引脚引脚一、一、51单片机的串行接口结构图单片机的串行接口结构图二、串行口的结构二、串行口的结构两个同名的两个同名的接收接收/发送缓冲寄存器发送缓冲寄存器SBUFSBUF 指令指令 MOV SBUFMOV SBUF,A A 启动一次数据发送启动一次数据发送,可可向向SBUFSBUF再发送下一个数再发送下一个数 指令指令 MOV AMOV A,SBUF SBUF 完成一次数据接收完成一次数据接收,SBUFSBUF可再接收下一个数可再接收下一个数接收接收/发送数据发送数据,无论是否采用中断方式无论是否采用中断方式 工作工作,每接收每接收/发送一个数据都必须用指发送一个数据都必
5、须用指 令对令对 RI/TI RI/TI 清清0 0,以备下一次收,以备下一次收/发。发。串行口相关的串行口相关的SFR(SCON,PCON)SFR(SCON,PCON)SM0 SM1 SM2 REN TB8 RB8 TI R1SCONSCON SM0SM0,SM1SM1:串行口串行口4 4种工作方式的选择位。种工作方式的选择位。0 0 0 0 方式方式0 0:8 8位移位寄存器位移位寄存器I/O,I/O,波特率固定为波特率固定为 f foscosc/12/12 0 1 0 1 方式方式1 1:8 8位位UARTUART(1+8+11+8+1位),波特率可变位),波特率可变,按公按公式计算式计
6、算 1 0 1 0 方式方式2 2:9 9位位UARTUART(1+8+1+11+8+1+1位),波特率固定位),波特率固定=f foscosc x1/32x1/32或或1/641/64 1 1 1 1 方式方式3 3:9 9位位UARTUART(1+8+1+11+8+1+1位),波特率可变,位),波特率可变,按公式计算按公式计算 SM2SM2:串行口多机通信控制位串行口多机通信控制位 (作为方式(作为方式2 2、方式、方式3 3的附加控制位)的附加控制位)三、串行口控制寄存器三、串行口控制寄存器SCON(98H)SCON(98H)RI,TIRI,TI:串行口收串行口收/发数据申请中断标志位发
7、数据申请中断标志位 1 1 申请中断;申请中断;0 0 不申请中断不申请中断 TB8TB8:方式方式2 2、3 3中,是要发送的第中,是要发送的第9 9位数据。位数据。多机通信中多机通信中,TB8=0 TB8=0 表示发送的是数据;表示发送的是数据;TB8=1 TB8=1 表示发送的是地址。(奇偶校验)表示发送的是地址。(奇偶校验)RB8RB8:在方式在方式2 2、3 3中,是收到的第中,是收到的第9 9位数据。位数据。在多机通信中在多机通信中,用作区别地址帧用作区别地址帧/数据帧的数据帧的 标志。(奇偶校验)标志。(奇偶校验)SM0 SM1 SM2 REN TB8 RB8 TI R1 REN
8、REN:串行口接收允许控制位串行口接收允许控制位 =1=1 表示允许接收;表示允许接收;=0=0 禁止接收。禁止接收。SCONSCONSMOD GF1 GF0 PD 1DL四、电源控制寄存器四、电源控制寄存器 PCONPCON(97H97H)特殊功能寄存器特殊功能寄存器PCONPCON不能按位寻址不能按位寻址 SMODSMOD:在串行口工作方式在串行口工作方式 1 1、2 2、3 3 中,中,是是波特率加倍位波特率加倍位 =1=1 时,波特率加倍时,波特率加倍 =0=0 时,波特率不加倍。时,波特率不加倍。(在在PCONPCON中只有这一个位与串口有关中只有这一个位与串口有关)GF1,GF0G
9、F1,GF0:用户可自行定义使用的通用标志位用户可自行定义使用的通用标志位PCONPCON PDPD:掉电方式控制位掉电方式控制位 =0=0:常规工作方式。常规工作方式。=1 =1:进入掉电方式进入掉电方式:振荡器振荡器停振停振 片内片内RAMRAM和和SRFSRF的值保持不变的值保持不变 P0P0P3P3口维持原状。口维持原状。程序程序停止停止 只有复位能使之退出掉电方式。只有复位能使之退出掉电方式。SMOD GF1 GF0 PD IDLPCONPCON IDLIDL:待机方式待机方式(空闲方式空闲方式)控制位控制位 =0 =0:常规工作方式。常规工作方式。=1 =1:进入待机方式:进入待机
10、方式:振荡器振荡器继续振荡继续振荡 中断、定时器、串口功能继续有效中断、定时器、串口功能继续有效 片内片内RAMRAM和和SRFSRF保持不变保持不变 CPUCPU状态保持状态保持、P0P0P3P3口维持原状口维持原状 程序程序停顿停顿。中断和复位能退出待机中断和复位能退出待机,继续后面的程序。继续后面的程序。SMOD GF1 GF0 PD 1DLPCONPCON PDPD:掉电控制位掉电控制位 =0=0:常规方式。常规方式。=1 =1:掉电方式掉电方式:振荡器振荡器停振停振片内片内RAMRAM和和SRFSRF不变不变P0P0P3P3口维持原状口维持原状程序程序停止停止只有复位能退出掉电只有复
11、位能退出掉电 IDLIDL:待机控制位待机控制位 =0 =0:常规方式。常规方式。=1 =1:待机方式:待机方式:振荡器振荡器继续振荡继续振荡中断中断,定时器定时器,串口有效串口有效片内片内RAMRAM和和SRFSRF不变不变CPUCPU状态状态,P0P0P3P3维持原状维持原状程序程序停顿停顿。中断和复位能退出待机中断和复位能退出待机,继续继续后面的程序。后面的程序。SMOD GF1 GF0 PD 1DLPCONPCON一、工作方式一、工作方式0 0:8 8位移位寄存器位移位寄存器I/OI/O方式方式发送:发送:SBUFSBUF中的串行数据由中的串行数据由RxDRxD逐位移出;逐位移出;Tx
12、DTxD输出移位时钟,频率输出移位时钟,频率=fosc1/12fosc1/12;每送出每送出8 8位数据位数据 TITI就自动置就自动置1 1;需要用软件清零需要用软件清零 TITI。接收:串行数据由接收:串行数据由RxDRxD逐位移入逐位移入SBUFSBUF中;中;TxDTxD输出移位时钟,频率输出移位时钟,频率=fosc1/12fosc1/12;每接收每接收 8 8位数据位数据RIRI就自动置就自动置1 1;需要用软件清零需要用软件清零 RIRI。9.3 519.3 51单片机串行口的工作方式单片机串行口的工作方式经常配合经常配合“串入并出串入并出”“并入串出并入串出”移位移位 寄存器一起
13、使用扩展接口(第六章)。寄存器一起使用扩展接口(第六章)。方式方式0 0工作时,多用查询方式编程:工作时,多用查询方式编程:发送:发送:MOV SBUFMOV SBUF,A A 接收:接收:JNB RIJNB RI,$JNB TI JNB TI,$CLR RI$CLR RI CLR TI MOV A,SBUF CLR TI MOV A,SBUF工作方式工作方式0 0:8 8位移位寄存器位移位寄存器I/OI/O方式方式(续续)复位时复位时,SCON SCON 已经被清零已经被清零,缺省值缺省值:方式方式0 0。接收前接收前,务必先置位务必先置位 REN=1 REN=1 允许接收数据。允许接收数据
14、。串行口方式串行口方式0 0的扩展应用的扩展应用经常用到经常用到串行口常用工作方式串行口常用工作方式0 0扩展出并行扩展出并行I/OI/O口,口,工作方式工作方式1 1、2 2、3 3则常用于串行通信则常用于串行通信A AB BCLKCLKh g f e d c b ah g f e d c b aCLRCLRA AB BCLKCLKCLRCLRA AB BCLKCLKCLRCLR+5V+5V74LS16474LS16474LS1647474LS164LS164是是串入并出串入并出芯片;芯片;7474LS165LS165是是并入串出并入串出芯片芯片h g f e d c b ah g f e
15、d c b ah g f e d c b ah g f e d c b a+5V+5V共阳共阳LED LED 数码管数码管VCCVCCTxDTxDRxDRxD51单片机单片机共阳极共阳极h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh h共阳共阳LEDLED数码管数码管公共端公共端(字位字位)接高电平,接高电平,笔划笔划(字段字段)置为低电平置为低电平就被点亮了就被点亮了h g f e d c b ah g f e d c b a累加器累加器 A0C0H=0C0H=“0 0”比如要显示比如要显示“0 0”须令须令a b c d e f a
16、 b c d e f 为为“0 0”电平,电平,g hg h为为“1 1”电平。电平。再再比如要显示比如要显示“3 3”须令须令a b c d g a b c d g 为为“0 0”电平,电平,e f he f h为为“1 1”电平。电平。0B0H=0B0H=“3 3”例:利用串行口例:利用串行口工作方式工作方式0 0扩展出扩展出8 8位并行位并行I/OI/O口,驱动共阳口,驱动共阳LEDLED数码管显示数码管显示0 09 9。A AB BCLKCLKh g f e d c b ah g f e d c b aCLRCLR+5V+5VVCCVCCTxDTxDRxDRxD51单片机单片机74LS
17、164共阳共阳LEDLED数码管数码管根据上图编写的通过串行口和74LS164 驱动共阳LED数码管(查表)显示0-9数字的子程序:DSPLY:MOV DPTR,#TABLE MOVC A,A+DPTR MOV SBUF,A JNB TI,$CLR TI RETTABLE:DB 0C0H,0F9H,0A4H DB 0B0H,99H,92H DB 82H,0F8H,80H,90Hh g f e d c b ah g f e d c b a累加器累加器 A1 1 0 0 0 0 0 01 1 0 0 0 0 0 00C0H=0C0H=“0 0”1 0 1 1 0 0 0 01 0 1 1 0 0
18、0 00B0H=0B0H=“3 3”共阳极共阳极h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh h常用于串行通讯。除发常用于串行通讯。除发/收收8 8位数据外,还位数据外,还 在在D0D0位前有一个起始位位前有一个起始位“0 0”;在在D7D7位后有一个停止位位后有一个停止位“1 1”。方式方式1 1工作时:工作时:发送端自动添加一个起始位和一个停止位;发送端自动添加一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位。接收端自动去掉一个起始位和一个停止位。二、工作方式二、工作方式1 1:8:8位位UART(1+8+1UART(
19、1+8+1位位)波特率可变波特率可变 波特率可变波特率可变 用定时器用定时器T1T1作波特率发生器:作波特率发生器:公式:波特率公式:波特率 =(2 2SMODSMOD/32/32)T1T1的溢出率的溢出率波特率波特率=(2=(2SMODSMOD/32)/32)T1T1的溢出率的溢出率 溢出率:溢出率:T1T1溢出的频繁程度溢出的频繁程度 即:即:T1T1溢出一次所需时间的倒数。溢出一次所需时间的倒数。初值初值 X=2 2n n-2 2SMOD SMOD foscfosc32 32 波特率波特率 1212 波特率波特率 =2 2SMOD SMOD foscfosc32 32 12(2 12(2
20、n n-X)-X)其中:其中:X X 是定时器初值是定时器初值 表格有多种表格有多种,晶振也不止一种晶振也不止一种串口串口波特率波特率(方式方式1,3)foscSMOD位位(PCON中中)定时器定时器T1C/T方式方式初值初值192006MHz1020FEH96006MHz1020FDH48006MHz0020FDH24006MHz0020FAH12006MHz0020F4H6006MHz0020E8H1106MHz00272H常用波特率和常用波特率和T1T1初值查表初值查表RxDRxD引脚为接收端,引脚为接收端,TxDTxD引脚为发送端引脚为发送端,由波特率由波特率 发生器发生器T1T1控制
21、发送速度控制发送速度,不同于方式不同于方式0 0:收:收/发都发都 需要由需要由TxDTxD送出移位时钟送出移位时钟。T1T1作波特率发生器时作波特率发生器时初始化包括初始化包括:选选定时器工作方式定时器工作方式2 2(TMODTMOD选选8 8位自动重装位自动重装););将计算将计算(或查表或查表)出的初值出的初值X X赋给赋给TH1,TL1;TH1,TL1;启动启动T1(SETB TR1);T1(SETB TR1);对对T1T1不要开中断不要开中断 !工作方式工作方式1 1的接收的接收/发送发送串行口的初始化包括串行口的初始化包括:对对SCONSCON选工作方式选工作方式 对对PCONPC
22、ON设设波特率加倍位波特率加倍位“SMODSMOD”(缺省值缺省值=0)=0)如果是接收数据如果是接收数据,仍要先置仍要先置“1 1”RENREN位位 SM0 SM1 SM2 REN TB8 RB8 TI R1SCONSCON SM0SM0,SM1SM1:串行口工作方式选择位。串行口工作方式选择位。0 1 0 1:方式方式1 1,8 8位位UARTUART(1+8+11+8+1位)位)RENREN:串行口接收允许位。串行口接收允许位。REN=1 REN=1 允许接收允许接收串行口控制寄存器串行口控制寄存器SCONSCON 0 1 0 1 0 0 0 0 TB8TB8,RB8RB8,TITI,R
23、IRI等位由运行中间的情况等位由运行中间的情况 决定,可先写成决定,可先写成 “0 0”SM2SM2:串行口多机通信控制位串行口多机通信控制位,作为方式作为方式2 2、3 3 的附加控制位,此处不用,可写成的附加控制位,此处不用,可写成“0 0”由于波特率固定由于波特率固定,常用于单片机间通讯。常用于单片机间通讯。数据由数据由8+18+1位组成,通常附加的一位位组成,通常附加的一位 (TB8/RB8)TB8/RB8)用于用于“奇偶校验奇偶校验”。三、工作方式三、工作方式2 2:9 9位位UART(1+8+1+1UART(1+8+1+1位位)两种波特率两种波特率 方式方式2 2的波特率的波特率
24、=foscfosc 2 2SMODSMOD/64/64 即即:f foscosc 1/32 1/32 或或 f foscosc 1/64 1/64 两种两种奇偶校验是检验串行通信双方传输的数据正确与奇偶校验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正否的一个措施,并不能保证通信数据的传输一定正确。确。换言之:如果换言之:如果奇偶校验发生错误,表明数据传输奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝不等于数一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。据传输完全正确。奇校验:奇校验:8 8位有效数据连同位有效数据连同1 1位附
25、加位中,位附加位中,二进制二进制“1 1”的个数为奇数的个数为奇数 偶校验:偶校验:8 8位有效数据连同位有效数据连同1 1位附加位中,位附加位中,二进制二进制“1 1”的个数为偶数的个数为偶数约定接收采用约定接收采用奇校验奇校验 若接收到的若接收到的9 9位数据中位数据中“1 1”的个数为奇数,的个数为奇数,则表明接收正确,取出则表明接收正确,取出8 8位有效数据即可;位有效数据即可;若接收到的若接收到的9 9位数据中位数据中“1 1”的个数为偶数,的个数为偶数,则表明接收出错!应当进行出错处理。则表明接收出错!应当进行出错处理。约定发送采用约定发送采用奇校验奇校验 若发送的若发送的8 8位
26、有效数据中位有效数据中“1 1”的个数为偶数,的个数为偶数,则要人为添加一个附加位则要人为添加一个附加位“1 1”一起发送;一起发送;若发送的若发送的8 8位有效数据中位有效数据中“1 1”的个数为奇数,的个数为奇数,则要人为添加一个附加位则要人为添加一个附加位“0 0”一起发送。一起发送。采用采用偶校验时,处理方法与奇校验相反偶校验时,处理方法与奇校验相反 回顾:回顾:程序状态字寄存器程序状态字寄存器PSWPSW中有一个奇偶状态位中有一个奇偶状态位 P PCYACF0RS0OVPRS1PSW.7PSW.0 P(PSW.0):P(PSW.0):奇偶状态位。奇偶状态位。P=1 P=1 表示目前累
27、加器中表示目前累加器中 “1 1”的个数为奇数的个数为奇数 P=0 P=0 表示目前累加器中表示目前累加器中 “1 1”的个数为偶数的个数为偶数CPUCPU随时监视着随时监视着AccAcc的的“1 1”的个数并自动反映在的个数并自动反映在 P P工作方式工作方式2 2 的奇偶校验用法的奇偶校验用法四、工作方式四、工作方式3 3 9 9位位UART(1+8+1+1UART(1+8+1+1位位)波特率可变波特率可变 串口方式串口方式3 3和方式和方式2 2唯一的区别是波特率机制不同。唯一的区别是波特率机制不同。方式方式2 2的波特率固定为时钟周期的的波特率固定为时钟周期的3232或或6464分频,分频,不可变。此工作方式与其他串行通讯设备连接困不可变。此工作方式与其他串行通讯设备连接困难,因此不常用。难,因此不常用。方式方式3 3的的波特率可变,按前面的公式计算:波特率可变,按前面的公式计算:波特率波特率=(2=(2SMODSMOD/32)/32)T1T1的溢出率的溢出率 波特率波特率 =2 2SMOD SMOD foscfosc32 32 12(2 12(2n n-X)-X)其中:其中:X X 是定时器初值是定时器初值
限制150内