片机的串行接口及串行通信V.ppt
《片机的串行接口及串行通信V.ppt》由会员分享,可在线阅读,更多相关《片机的串行接口及串行通信V.ppt(106页珍藏版)》请在三一办公上搜索。
1、第7章 单片机的串行接口及串行通信,掌握串行通信的基本概念掌握单片机串行通信接口的结构掌握串行通信控制寄存器掌握单片机串行通信的工作方式掌握串行通信的应用及编程方法,学习目标,7.1 串行通信基础7.2 串行口的结构与工作原理7.3 串行口的控制寄存器7.4 单片机串行通信工作方式7.5 单片机串行通信接口技术,主要内容,7.1 串行通信基础,通信:通常把控制器与外部设备或控制器与控制器之间的数据传送称为通信。串行通信就是数据按位顺序进行串行传送,最少只需一根传输线即可完成,一般成本低但速度较慢。串行通信分为异步和同步两种方式。同步通信方式在单片机系统中使用较少,所以本节只介绍异步通信。,7.
2、1.1 异步串行通信的字符格式,异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。异步串行通信在时钟控制下每次发送一位数据,若干个位组成字符帧,一个完整的字符帧完成一个字符的发送,一个字符接另一个字符的传送就实现了发送与接收设备间的数据通信。,起始位开始一个字符传送的标志位。数据位起始位之后传送的数据信号位。奇偶效验位用于对字符的传送作正确性检查。停止位用以标志一个字符的结束。位时间发送1位数据所需时间。帧(frame)从起始位开始到停止位结束的全部内容称 为一帧。,下图给出了一个字符帧的异步串行通信格式:,单片机的异步串行通信根据通信距离、抗干扰性能的要求,信号的形式可
3、选择TTL电平传输、RS-232电平传输、RS-422A或RS-485差分传输等信号形式进行串行数据的传输。单片机串行口控制器的输入、输出信号均为TTL电平。这种信号传输形式受传输距离限制,抗干扰性能差,不能进行远距离通信。对于远距离的系统与系统之间的串行通信,通常将TTL电平变换为RS-232电平或采用差分形式来实现,如RS-232、RS-422A、RS-485等标准来实现串行通信传输。,7.1.2 异步串行通信的信号形式,单工(Simplex)形式:数据传送是单向的,通信双方中一方固定为接收端、一方固定为发送端。半双工(Half-duplex)形式:数据传送是双向的,但任何时刻只能由其中的
4、一方发送数据,另一方接收数据,发送和接收不能同时进行。全双工(Full-duplex)形式:数据传送是双向的,且可以同时发送和接收数据。,7.1.3 串行通信的数据通路形式,分时:半双工一个缓冲器同时:全双工两个缓冲器,4.串行通信接口,发送方式,CPU,发送寄存器SBUF,0,1,发送时钟:,接收方式,CPU,接收时钟,接收数据寄存器SBUF,度量一个数据通信系统通信能力的方法有两种,即波特率和数据传输率。波特率:指单位时间内线路变化次数,反映了数据的调制信号波形变换的频繁程度。单位是“波特”(baud)。数据传输率:指单位时间内传送的信息量,以每秒钟传送格式位的数量来表示。单位是“比特/秒
5、”(bps)。,7.1.4 串行通信的数据传输速率,1波特=1bps(位/秒),波特率和数据传输率两者相似但不等同,只有当采用基波传输时两者的数值相同。即:,1.波特率bps 表征数据位的宽度同步:Baud=Tclk=Rclk异步:发Baud=收BaudTclk=nBaud;Rclk=mBaud2.数据帧每位作用同步:D0D7异步:0,D0D7,(P),1,采样频率,3.数据包:每一帧数据作用用户名、密码、长度、DATA1、DATA2等 ADR4.硬件连接:,232,MCU,TTL电平,MCU,MCU,MCU,232,TTL电平,负逻辑,TTL电平,0:00.3V+8V+15V1:2.75V
6、15V8V,7.1 串行通信基础7.2 串行口的结构与工作原理7.3 串行口的控制寄存器7.4 单片机串行通信工作方式7.5 单片机串行通信接口技术,主要内容,在单片机芯片中,通用异步接收和发送器UART(Universal Asynchronous ReceiverTransmitter)已作为一个功能部件集成在其中,构成一个串行通信口。5l系列单片机的串行口是一个可编程的全双工串行通信接口,通过软件编程,其帧格式可设置为8位、10位和11位,数据传输率可以灵活设置,使用非常方便灵活。,7.2 串行口的结构与工作原理,7.2.1 串行口结构,主要由两个物理上独立的接收、发送缓冲器SBUF(占
7、用同一地址99H);一个输入移位寄存器、一个串行控制寄存器SCON和一个波特率发生器组成。接收器是双缓冲结构;发送器为单缓冲器,因为发送时CPU是主动的,不会产生重叠错误。,7.2.2 工作原理,发送数据时:CPU向输出缓冲器SBUF写入数据,同时启动数据串行发送,在波特率发生器产生的发送时钟控制下,按照预先设置的帧格式逐位由TXD端输出发送数据。,接收数据时:UART通过对RXD引脚信号的采样来确认串行数据,若检测到数据发送起始位,则其后对RXD引脚每间隔一定时间进行采样,采样到的数据在接收时钟控制下以移位方式存入输入移位寄存器,当数据接收完成或检测到停止位时,则完成了一个字符帧的接收,输入
8、移位寄存器的内容被送入接收缓冲器SBUF,并置相应的标志位。,注意:在串行通信中,收发双方的数据传输率必须一致,否则接收方接收的数据会产生混乱。,当一帧数据发送完毕(即发送缓冲器空),硬件置位发送中断标志位TI(SCON.1)。这样就可以采用中断或查询的方式来可发送下一个数据,采用查询方式发送数据的过程为:发送一个数据查询TI发送下一个数据(先发后查)当一帧数据接收完成后(接收缓冲器满),硬件自动置位接收中断标志RI(SCON.0)。同样可以采用中断或查询的方式来可接收下一个数据,采用查询方式接收数据的过程为:查询RI读入一个数据查询RI读下一个数据(先查后收),内部逻辑结构:发送器:8位 8
9、位 8位 Tclk TI=1 Tclk/n=Baud(f)(n个发送时钟周期发送一位数据)接收器 8/10/11 8位 RI=1 8位 RclkmBaud,T_SHIFT_Reg,SFR(A),T_BUF(SBUF),CPU,TXD(P3.1),SFR(A),R_SHIFT_Reg,R_BUF(SBUF),RXD(P3.0),m/2 0,m个,7.1 串行通信基础7.2 串行口的结构与工作原理7.3 串行口的控制寄存器7.4 单片机串行通信工作方式7.5 单片机串行通信接口技术,主要内容,与串行通信有关的控制寄存器是:SCON:串行控制寄存器。PCON:电源控制寄存器。IE:中断允许寄存器。,
10、7.3 串行口的控制寄存器,7.3.1 串行控制寄存器SCON,SCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志,字节地址为98H:,SM0和SM1为工作方式选择位,可选择四种工作方式:,SM2,多机通信控制位,主要用于方式2和方式3。当接收机的SM2=1时可以利用收到的RB8来控制是否激活RI(RB80时不激活RI,收到的信息丢弃;RB81时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走)。当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。通过控制SM
11、2,可以实现多机通信。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1。在方式0时,SM2必须是0。REN,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。,TB8,在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。在双机通信时,可以用作数据的奇偶校验位;或在多机通信中,作为地址帧/数据帧的标志位(一般约定:TB8=0为数据帧,TB8=1为地址帧)。在方式0和方式1中,该位未用。RB8,在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。,TI,
12、发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1。TI=1表示帧发送结束,其状态既可供软件查询使用,也可用于请求中断。发送中断被响应后,必须由软件复位。RI,接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1。RI=1表示帧接收结束。其状态既可供软件查询使用,也可用于请求中断。RI亦必须由软件清“0”。,7.3.2 电源控制寄存器PCON,PCON(字节地址为87H)中只有一位SMOD与串行口工作有关:,SMOD(PCON.7)波特率倍增位。在串行口方式1、方式2、
13、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。,其格式如下:,7.3.3 中断允许寄存器IE,这个寄存器已在中断一节介绍过,其中ES位为串行中断允许位:ES=0 禁止串行中断 ES=1 允许串行中断,7.1 串行通信基础7.2 串行口的结构与工作原理7.3 串行口的控制寄存器7.4 单片机串行通信工作方式7.5 单片机串行通信接口技术,主要内容,51系列单片机的串行口共有4种工作方式,4种工作方式基本情况如下表所示:,7.4 单片机串行通信工作方式,7.4.1 串行口工作方式0,方式0时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出
14、口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。1、工作方式说明:方式0输出:发送过程以写SBUF寄存器开始。当八位数据传送完,TI被硬件自动置1,这时方可再发下一帧数据。,方式0输入:接收时必须先置REN为1(允许接收)并且使RI=0,当八位数据接收完毕,RI被硬件置1,此时,可通过读SBUF指令,将串行数据读入。,2.应用举例:例6-1 利用串行口,使接到CD4094输出端的8只发光二极管,从左向右依次点亮,并反复循环。分析:使用串口方式0实现数据的移位输入输出时,实际上是把串行口
15、变成为并行口使用。串行口作为并 行口输出使用时,要有“串入并出”的移位寄存器(例 如CD4094或74LS164、74HC164等)配合,按此要求 所设计的电路原理图如下图所示:,发送过程可叙述如下:数据预先写入串行口数据缓冲器,然后从串行口RXD端,在移位时钟脉冲(TXD)的控制下,逐位移入CD4094。当8位数据全部移出后,SCON寄存器的发送中断TI被自动置“1”。其后主程序就可用中断或查询的方法,通过设置STB状态的控制,把CD4094的内容并行输出。,使用C51编程语言编写的程序代码如下:/*/*功能说明:*/*查询方式发送数据,使用CD4094扩展IO接口点亮二极管*/*/#inc
16、lude#define uchar unsigned char/定义P1.0引脚用于控制CD4094的STB引脚sbit STB=P10;/*延时函数*/void delay(int a)int i,j;for(i=0;ia;i+)for(j=0;j255;j+);,/*主函数*/void main()uchar rec;SCON=0 x00;/串行口工作方式0 ES=0;/禁止串行中断rec=0 x80;/发光管从左边亮起while(1)STB=0;/关闭并行输出if(rec=0 x00)rec=0 x80;,SBUF=rec;/串行输出while(!TI);/查询SBUF数据是否已经发送完
17、毕 TI=0;/清除发送TI标志STB=1;/开启并行输出delay(10);/状态维持时间TI=0;/清发送中断标志rec=rec1;/继续,7.4.2 串行口工作方式1,方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。,方式1传送的数据格式,2.方式1数据的发送与接收 数据发送由一条CPU写入发送寄存器SBUF的指令启动。8位数据在串行口由硬件自动加入起始位和停止位组成完整的帧格式。在内部移位脉冲作用下,由TXD端串行输出。一帧数据发送完后,TXD输出线维持“1”状态,并将SCON寄存器的TI置
18、“1”,通知CPU可发送下一个数据。,2.方式1数据的发送与接收接收数据时,当SCON的REN位为允许接收状态时,串行口采样RXD端,当采样到从“1”向“0”状态跳变时,就认定是接收到起始位。随后在移位脉冲的控制下,把收到的数据位移入输入移位寄存器,直到停止位到来之后把停止位送入RB8中,输入移位寄存器的数据送入接收缓冲器(SBUF)中,并置位中断标志位RI,通知CPU从SBUF取走接收到的一个字符。,3.波特率的设定 方式1的波特率是可变的,以定时器T1作波特率发器使用,其值由定时器1的计数溢出率来决定,其公式为:其中SMOD为PCON寄存器的最高位的值,其值为1或0.当定时器1作波特率发生
19、器使用时,选用方式2(即8位自动加载方式)。因为方式2具有自动加载功能,可以避免通过程序反复装入初值所引起的定时误差,使波特率更加稳定。假定计数初值为X,则波特率计算公式为:,4.串口初始化程序 方式1中串口初始化一般按以下步骤来编写:(1)设置串口工作方式;(2)确定定时器1的工作方式;(3)确定波特率倍增器的值;(4)确定定时器1的初值;(5)确定数据发送和接收方式,若采用中断方式必须设置相应的中断控制位,若采用采用查询方式则 必须禁止串口中断;(6)启动定时器1。,例6-2 某51单片机系统的主频为11.0592MHZ,现拟以工作方式1与外部设备进行串行数据通信,波特率为2400,试编写
20、该单片机串口初始化程序。分析:因串口采用方式1,不考虑多机通信,接收允许则SCON控制字为50H;定时器1作波特率发生器使用时,选用方式2,不考虑定时器0,则TMOD控制字应为20H;若波特率特率倍增器有效,即SMOD=1,PCON=80H;定时器的初值:,采用查询方式接收和发送数据的初始化子程序可用C51编写为:Void initial_mode1_ check(void)SCON=0 x50;/串口方式1、SM2=0、接收收允许 TMOD=0 x20;/定时器1设定为方式2 PCON=0 x80;/设置波特率为2400bps,SMOD=1 TH1=0Xe8;/设置定时器1的初值 TL1=0
21、Xe8;/设置定时器1重新装载值 ES=0;/禁止串口中断 TR1=1;/启动定时器1,串口控制器开始工作,若采用中断方式接收和发送数据的初始化子程序可用C51编写为:Void initial_mode1_int(void)SCON=0 x50;/串口方式1、SM2=0、接收允许TMOD=0 x20;/定时器1设定为方式2PCON=0 x80;/设置波特率为2400bps,SMOD=1TH1=0Xe8;/设置定时器1的初值TL1=0Xe8;/设置定时器1重新装载值ES=1;/允许串口中断 PS=1;/串口中断为高优先级TR1=1;/启动定时器1,串口控制器开始工作,5.串行接口调试 串行口通信
22、程序的调试相对比较复杂,只有当通信双方的硬件和软件都正确无误时,才能实现成功通信。当调试中出现无法正常通信的问题时,首先应检查硬件是否工作正常,通常可能表现为:通信接口芯片损坏,通信线路接触不良等。为了迅速准确查明通信中的故障点,可采用编制测试程序的方法配合查找硬件问题。一般按照以下步骤进行检查:1)本机发送通路检查:本机发送通路检查一般断开串口连接线,编写测试程序连续发送字符“55H”或“AAH”,通过检测发送引脚的信号是否正常,来确定本机数据发送通路是否工作正常。,假设串口初始化程序与例6-2一致并采用查询发送方式,用C51编写的测试程序如下:#include void initial_m
23、ode1_ check(void);void main(void)initial_mode1_ check();/调用串口初始化程序 while(1)/程序不断发送0 xAA SBUF=0 xAA;while(TI!=1);TI=0;注:为了减少篇幅,本程序直接调用了例6-2的串口初始化程序,后面的例子采用同样的方法,不再做说明。,(2)本机回环自检:指断开本机与外部设备的串口连接线,把本机的数据发送和数据接收端短接,即采用自发自收的方式来确认本机的收发通路都是正常的。用C51编写的测试程序如下:#include void initial_mode1_check(void);void main
24、(void)initial_mode1_look();/调用串口初始化程序 while(1)SBUF=0 xAA;/发送0 xAA while(TI!=1);/等待发送完成 TI=0;while(RI!=1);/等待接收数据/接收数据若不是0 xAA,则停止发送数据 while(SBUF!=0 xAA);RI=0;,(3)联机检查:指两台设备串口连接线接好后的通信.通路的检查,一般通过发送一个约定的检验字并要求对方有一个约定的回应方式,如果回应正确则表明通信信道顺畅。例如约定检验字为AAH,回应字也为AAH,用C51 编写的测试程序与本机回环自检的程序可以完全一致。,7.应用程序举例例6-3
25、设有甲乙两台单片机系统,均采用11.0592MHz的晶振,采用串行口进行通信,数据传输率为2400bps。甲机将存储于外部RAM起始地址为0100H的8个数据发送给乙机,乙机把接收到的8个数据存储于一个定位于片内寄存器的数组中。乙机接收完数据后将存储于外部RAM起始地址为0100H的8个数据发送给甲机,甲机也将接收的8个数据也存储于定位于片内寄存器的数组中,甲机再将存储于外部RAM起始地址为0100H的8个数据发送给乙机,实现循环往复的通信过程。为了保证通信数据的准确无误,需要在发送数据之前检查通信通道是否顺畅。,分析:单片机串行通信的程序设计,一般可采用查询方式或中断方式两种,这个例子相对任
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串行 接口 通信

链接地址:https://www.31ppt.com/p-6176587.html