第8章串行口通信.ppt
《第8章串行口通信.ppt》由会员分享,可在线阅读,更多相关《第8章串行口通信.ppt(91页珍藏版)》请在三一办公上搜索。
1、2,第8章 串行口通信,3,主要内容,8.1 串行通信的概念8.2 串行口1的相关寄存器8.3 串行口1的工作方式8.4串行口1通信中波特率的设置8.5 串行口2的相关寄存器8.6串行口2的工作方式8.7 串行口的应用8.8 RS-232串行标准8.9 RS485串行接口8.10 SPI串行接口概述8.11 SPI串行数据通信8.12 SPI接口的应用,4,8.1 串行通信的概念,串行通信是按一位一位的顺序传送数据,串行通信方式又分为同步通信和异步通信两种。,同步通信:发送方和接收方用同一个时钟控制信号,5,8.1 串行通信的概念,异步通信是一种将数据以一个字符为单位进行传送的通信方式,传送一
2、个字符又称为一帧信息,发送与接收之间无时钟信号控制,发送和接收的速率要求相同,起始位:位于一帧数据的开头,逻辑“0”电平信号,用来通知接收设备开始接收一帧信息,数据位:紧跟起始位之后的是数据位,对51内核单片机来说,低位在前,高位在后,第9位:常用于对串行通信数据进行奇偶校验,停止位:逻辑“1”电平信号,应大于或等于一个位数据的时间。在发送完一帧信息后,用于发送的数据线一直处于高电平状态,等待再次发送,6,8.1 串行通信的概念,串行通信可分为单工、半双工和全双工3种方式,单工方式只有一根数据线,数据只能按照一个固定的方向传送,半双工方式的数据可以由甲向乙传送,也可以由乙向甲传送,但是不能在两
3、个方向上同时传送,全双工方式可以在同一时刻实现双向传送。,在串行通信中,用波特率衡量通信速度的快慢。波特率是指每秒钟传送的二进制数的位数,单位:位/秒(b/s或Kb/s)字节/秒(bps),波特率(bps)=1个字符的二进制位数 Bps,7,8.1 串行通信的概念,STC12C5A60S2单片机具有2个UART工作方式的串行口,接收缓冲器SBUF地址:99H,发送缓冲器SBUF地址:99H,串行口1,接收缓冲器S2BUF地址:9BH,发送缓冲器S2BUF地址:9BH,串行口2,8,8.2 串行口1的相关寄存器,STC12C5A60S2单片机的串行口1 与8个特殊功能寄存器相关,串行控制寄存器S
4、CON电源控制寄存器PCON辅助寄存器AUXR独立波特率发生器寄存器BRT唤醒控制寄存器WAKE_CLKO中断寄存器IE、IP、IPH。,9,8.2 串行口1的相关寄存器,1.串行控制寄存器SCON,地址为98H,可进行位寻址,SM0/FE:寄存器PCON中的SMOD0位为1时,该位用于帧错误检测(FE)。当检测到停止位无效时,硬件会将该位置1,必须由软件清零,SMOD0位为0时,SM0、SM1两位一起确定串行口1的工作方式,SM2:在方式0中,该位必须为0;在方式2和方式3中,该位为1时,只有接收到的第9位数据RB8位为1时,接收才能有效。在方式1中,该位为1时,只有正确接收到停止位时,接收
5、才能有效,REN:允许串行接收控制位。当该位为1时,允许接收信息;当该位为0时,禁止接收信息。,TB8:发送数据的第9位,RB8:接收数据的第9位,TI:串行口1发送中断请求标志位,RI:串行口1接收中断请求标志位,10,8.2 串行口1的相关寄存器,2.电源控制寄存器PCON,地址为87H,SMOD:波特率倍频选择位。该位置1,串行口1工作在方式1、2、3时波特率加倍;该位为0,各工作方式的波特率不加倍,SMOD0:帧错误检测有效控制位。该位置1,SCON寄存器中的SM0/FE位用于FE功能;该位为0,SCON寄存器中的SM0/FE位用于方式选择。,11,8.2 串行口1的相关寄存器,3.辅
6、助寄存器AUXR,地址为8EH,UART_M0 x6:串行口1方式0的通信速度控制位。UART_M0 x6=0,方式0的波特率为系统时钟频率的12分频;UART_M0 x6=1,方式0的波特率为fosc/2。,BRTR:独立波特率发生器运行控制位。BRTR=0时,不允许独立波特率发生器工作;BRTR=1时,允许独立波特率发生器工作,BRTx12:独立波特率发生器计数控制位。BRTx12=0时,独立波特率发生器的计数时钟源为系统时钟频率fosc的12分频;BRTx12=1,独立波特率发生器的计数时钟源为系统时钟频率。,S1BRS:串行口1的波特率发生器选择位。S1BRS=0时,选择定时/计数器T
7、1作为串行口1的波特率发生器;S1BRS=1时,选择独立波特率发生器作为串行口1的波特率发生器,12,8.2 串行口1的相关寄存器,4.独立波特率发生器寄存器BRT,地址为9CH,独立波特率发生器是专门用于控制串行通信速度的定时器,与定时/计数器T1工作于方式2的情况相似。BRT用于保存重装时间常数的一个8位寄存器,注意:串行口2:只能使用独立波特率发生器控制发送与接收,串行口1:既可以选择T1作为波特率发生器,也可以选择独立波特率发生器。串行口1和串行口2不能同时使用独立波特率发生器,,13,8.2 串行口1的相关寄存器,5.唤醒控制寄存器WAKE_CLKO,地址为8FH,RXD_PIN_I
8、E=0时,禁止P3.0/RxD引脚的下降沿置位RI,也禁止RxD引脚唤醒掉电模式;RXD_PIN_IE=1时,允许P3.0/RxD引脚的下降沿将RI置1,并且RxD引脚的下降沿能够唤醒掉电模式,14,8.3 串行口1的工作方式,8.3.1方式0,串行口1工作在方式0,作同步移位寄存器使用,UART_M0 x6:串行口1方式0的通信速度控制位。UART_M0 x6=0,方式0的波特率为系统时钟频率的12分频;UART_M0 x6=1,方式0的波特率为fosc/2。,15,8.3 串行口1的工作方式,8.3.1方式0,串行口数据由RxD引脚输入或输出,同步移位脉冲通过TxD引脚输出,发送、接收均为
9、8位数据,发送过程:,在TI=0的条件下,执行MOV SBUF,A指令,启动发送,注意:发送顺序:低位在前,高位在后发送完一帧数据后,由硬件将发送中断标志位TI置1,向CPU发出中断请求。若要再次发送数据,必须先通过程序将TI位清0。,16,8.3 串行口1的工作方式,8.3.1方式0,串行口数据由RxD引脚输入或输出,同步移位脉冲通过TxD引脚输出,发送、接收均为8位数据,接收过程:,在RI=0的条件下,接收允许控制位REN置1时,处于接收状态接收完一帧数据后,硬件将接收到的数据存入接收缓冲器SBUF,并将中断标志位RI置1,向CPU发出中断请求,注意:接收顺序:先收到的是低位,后收到的是高
10、位若要继续接收数据,必须先通过程序将RI位清0。,17,8.3 串行口1的工作方式,8.3.2方式1,8位数据,低位在前高位在后,发送过程:,在TI为0的条件下,执行将数据写入SBUF的指令时,启动发送过程。在内部移位脉冲的控制下,TxD引脚首先发送起始位、8位数据、停止位,发送完毕后TI置1,向CPU发出中断请求,18,8.3 串行口1的工作方式,8.3.2方式1,接收过程:,在RI为0、接收允许控制位REN被置1的条件下,CPU处于接收状态。当硬件检测到RxD引脚由高电平变为低电平时,开始接收一帧数据,并同步波特率发生器。,19,8.3 串行口1的工作方式,8.3.2方式1,接收过程:,(
11、1)RI=0(2)SM2=0或接收到的停止位为1时 硬件自动将接收到的数据装入接收缓冲器SBUF,同时将停止位写入RB8,置中断标志位RI为1,向CPU提出中断请求。,若不满足两个条件,接收到的数据无法装入接收缓冲器SBUF,数据丢失。,注意:无论满足这两个条件与否,接收控制器将继续检测RxD引脚,接收下一帧数据,所以在接收的过程中,应及时清接收中断标志位RI,以免数据丢失,20,8.3 串行口1的工作方式,8.3.3方式2、方式3,方式2 与方式3唯一的区别在于方式2的波特率是固定的,而方式3的波特率与波特率发生器有关,方式1与方式3的区别是:方式1是8位的串行异步通信、方式3是9位串行异步
12、通信,21,8.3 串行口1的工作方式,8.3.3方式2、方式3,发送过程:,将发送中断标志位TI清0,并通过位传送指令将第9位数据写入TB8中,然后执行MOV SBUF,A指令,启动发送过程。一帧数据发送完毕,硬件将发送中断标志位TI置1,22,8.3 串行口1的工作方式,8.3.3方式2、方式3,接收过程:,允许控制位REN被置1后处于接收状态。接收到的第9位(而不是停止位)装入到RB8位中,注意:在方式2和方式3中,SM2为1时,只有接收到的第9位数据RB8位为1时,接收才能有效,23,8.3 串行口1的工作方式,8.3.4 多机通信,在多机通信中方式2和方式3更适合主从通信,主机的SM
13、2位清0,从机的SM2位置1,通信过程举例,(1)主机向从机发送某一从机的地址,发送前将TB8位置1,然后进入接收状态,(2)各从机接收到主机送出的地址信息后,与本机地址相符时,表示被选中,将本机地址回发给主机(TB8位为0),执行CLR SM2指令。未被选中的从机,SM2位依然为1,接收不到TB8位为0的数据信息。,24,8.3 串行口1的工作方式,8.3.4 多机通信,在多机通信中方式2和方式3更适合主从通信,主机的SM2位清0,从机的SM2位置1,通信过程举例,(3)主机收到从机回发的地址后,检验是否与主机先前发送的地址一致,若不同,说明发送过程出现错误,再回到第(1)步,若相同,可以发
14、出指令或数据信息(TB8位为0)。,(4)从机正确地接收到主机所发送到的指令或数据信息后,回发先前约定好的应答信号给主机,同时将SM2位重新置1,以便从机能够接收主机再次发送地址信息,本次主机与从机通信过程结束。,理论上,一个主机可以与256个从机通信,但由于每个单片机引脚的输入阻抗及总线上阻抗的存在,总线上所允许并联从机的数量要受到限制。如果主机与过多的从机连接时,波特率应设置的低一些以减少通信错误,25,8.4串行口1通信中波特率的设置,(1)方式0,辅助寄存器AUXR,UART_M0 x6=0时,波特率是fosc/12,UART_M0 x6=1时,波特率是fosc/2,26,8.4串行口
15、1通信中波特率的设置,(2)方式2,电源控制寄存器PCON,波特率=(2SMOD/64)fosc,SMOD=0时,波特率=fosc/64,当SMOD=1时,波特率=fosc/32,SMOD=0时,波特率=fosc/64,当SMOD=1时,波特率=fosc/32,27,8.4串行口1通信中波特率的设置,(3)方式1和方式3,波特率=2SMOD(定时/计数器T1的溢出率/32),SMOD=0时,波特率=T1的溢出率/32,当SMOD=1时,波特率=T1的溢出率/16,T1x12=0时,T1的溢出率=(fosc/12)/(256-THl),T1x12=1时,T1的溢出率=fosc/(256-TH1)
16、,28,8.4串行口1通信中波特率的设置,(3)方式1和方式3,波特率=2SMOD(独立波特率发生器的溢出率/32),BRTx12=0时,独立波特率发生器的溢出率=(fosc/12)/(256-BRT),BRTx12=1时,独立波特率发生器的溢出率=fosc/(256-BRT),29,8.4串行口1通信中波特率的设置,(3)方式1和方式3,T1x12=0,T1工作在方式2时,几种波特率所对应T1的重装初值,30,8.5 串行口2的相关寄存器,与串行口2相关的寄存器有:,1.串行口2的控制寄存器S2CON,地址为9AH,不能位寻址,2.辅助寄存器AUXR波特率加倍控制位S2SMOD,S2SMOD
17、位为0时,串行口2的波特率不加倍,S2SMOD位为1时,串行口2的波特率加倍,31,8.5 串行口2的相关寄存器,与串行口2相关的寄存器有:,3.辅助寄存器AUXR1,4.独立波特率发生器寄存器BRT,5.中断寄存器IE、IE2、IP2、IP2H,S2_P4位为0时,TxD2为P1.3,RxD2为P1.2,S2_P4位为1时,TxD2为P4.3,RxD2为P4.2,6.发送缓冲器S2BUF与接收缓冲器S2BUF 共用同一个地址9BH,32,8.6串行口2的工作方式,8.6.1 方式0,当S2SM0、S2SM1为00时,串行口2工作在方式0,波特率=fosc/12 仅有这一种情况,8位数据低位在
18、前,高位在后通过RxD2 引脚接收或发送数据,TxD2引脚输出同步移位时钟,33,8.6串行口2的工作方式,8.6.2 方式1,当S2SM0、S2SM1为01时,串行口2工作在方式1,TxD2引脚发送、RxD2引脚接收,一帧数据包含一个起始位、8个数据位和一个停止位,停止位存放在S2CON寄存器的S2RB8位,34,8.6串行口2的工作方式,8.6.2 方式1,波特率=(2S2SMOD/32)独立波特率发生器的溢出率,BRTx12=0时,独立波特率发生器的溢出率=(fosc/12)/(256-BRT),BRTx12=1时,独立波特率发生器的溢出率=fosc/(256-BRT),35,8.6串行
19、口2的工作方式,8.6.3 方式2,当S2SM0、S2SM1为10时,串行口2工作在方式2,TxD2引脚发送、RxD2引脚接收,一帧数据包含一个起始位、9个数据位和一个停止位,发送时,第9位数据位来自S2CON寄存器中的S2TB8位,接收时,第9位数据装入S2CON寄存器中的S2RB8位,S2SMOD位为0时,波特率=fosc/64,S2SMOD位为1时,波特率=fosc/32,36,8.6串行口2的工作方式,8.6.4 方式3,当S2SM0、S2SM1为11时,串行口2工作在方式3,TxD2引脚发送、RxD2引脚接收,一帧数据包含一个起始位、9个数据位和一个停止位,发送时,第9位数据位来自S
20、2CON寄存器中的S2TB8位,接收时,第9位数据装入S2CON寄存器中的S2RB8位,波特率的设定与方式1相同,37,8.7 串行口的应用,1.串行口1的初始化,(1)设置SCON寄存器中各个相关位,由SM0、SM1两位确定工作方式,将TI、RI清0,如果需要接收,将REN位置1;(2)设置合适的波特率,即设置定时/计数器T1的工作方式、给TL1、TH1赋初值,启动T1工作;使用独立波特率发生器时,给BRT赋初值,并初始化AUXR寄存器的BRTR及BRTx12两位;(3)根据需要确定是否需要开放中断及中断优先级;(4)编写相应的中断或查询方式的服务程序。,38,8.7 串行口的应用,2.串行
21、口2的初始化,(1)即设置S2CON寄存器中的各个相关位的值,由S2SM0、S2SM1两位确定工作方式,S2RI、S2TI两位清0。如果允许接收,将S2REN位置1;(2)设置独立波特率发生器。初始化AUXR寄存器中的BRTx12、S2SMOD等位,将初值装入BRT寄存器;(3)将AUXR中的BRTR位置1,启动独立波特率发生器工作;(4)根据需要设置中断优先级,开放中断 ES2、EA;(5)编写相应的中断或查询方式的服务程序。,39,【例81】STC12C5A60S2单片机的串行口1与一片8位串入并出的芯片74HC164连接,驱动一组发光二极管,使发光二极管从右至左延时轮流显示。,分析:74
22、HC164是一个串行输入并行输出的移位寄存器,Q0Q7是并行输出端,Dsa、Dsb为串行输入端。CP为时钟输入端。复位端,低电平有效,当复位端输入低电平时清除移位寄存器的值,强制所有的输出为低电平,设STC12C5A60S2单片机的系统时钟频率为12MHz,串行口1工作在方式0。对SCON寄存器赋初值为00H,40,(1)汇编程序:ORG 0000H LJMP MAIN ORG 0100HMAIN:MOV SP,#0BFH;初始化堆栈指针 MOV SCON,#00H;串行口1工作在方式0 MOV A,#0FEH;LED显示码存A寄存器START:MOV SBUF,A;启动发送过程LOOP:JN
23、B TI,LOOP;判断发送是否完毕 CLR TI;发送完毕,将TI位清0 ACALL DELAY;延时 RL A;发光二极管显示码左移一位 SJMP START,41,DELAY:MOV R7,#0BDH;500ms的延时程序DL1:MOV R6,#0E6HDL0:MOV R5,#21H DJNZ R5,$DJNZ R6,DL0 DJNZ R7,DL1 RET END,42,(2)C语言程序:#include#include/声明本征函数库void DELAY();/延时函数void main()unsigned char j;SCON=0 x00;/串行口1工作在方式0j=0 xFE;/L
24、ED显示码for(;)SBUF=j;/启动发送过程 while(!TI);/等待发送完毕 TI=0;DELAY();/延时500ms j=_crol_(j,1);/循环左移一位,43,void DELAY()/延时500ms函数 unsigned char a,b,c;for(c=189;c0;c-)for(b=230;b0;b-)for(a=33;a0;a-);,44,【例82】利用STC12C5A60S2单片机的串行口1外接一片8位的并入串出芯片74HC165,用于扩展并行输入,如图所示。,分析:74HC165是一种并入串出的芯片,其中D0D7为并行数据输入端,DS为串行数据输入端,Q7为
25、串行输出端,为串行互补输出端。,当并行输入允许引脚 输入为低时,从D0至D7引脚并行输入的数据被输入到内部移位寄存器内,而当 为高时,并行输入禁止,移位寄存器的数据在CP引脚输入的时钟脉冲上升沿的控制下,向右移动一位DSQ0 Q1 Q7,Q7的状态出现在第9引脚上。,设串行口1工作在方式0,SCON寄存器的内容为00H。,45,(1)汇编程序段如下:MOV SCON,#00000000B CLR P1.7;并行输入允许 NOP;等待引脚状态稳定 NOP NOP NOP NOP NOP SETB P1.7;禁止并行输入 NOP;等待引脚状态稳定 NOP NOP NOP NOP NOP,CLR R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串行口 通信
链接地址:https://www.31ppt.com/p-4750506.html