《单片机串行口.ppt》由会员分享,可在线阅读,更多相关《单片机串行口.ppt(93页珍藏版)》请在优知文库上搜索。
1、第第七七章章 串行接口串行接口远程通信的必由之路第第7 7章章 串行接口串行接口 7.1 7.1 串行通信的基本概念串行通信的基本概念 7.2 单片机串行接口及控制寄存器单片机串行接口及控制寄存器 7.3 单片机串行口的工作方式单片机串行口的工作方式 7.4 串行口的应用串行口的应用 第7章 串行接口 MCS-51系列单片机内部有一个功能很强大的全双工异步串行通信接口,该串行口有4种工作方式,以供不同场合使用。波特率可由软件来设置,接收、发送均可工作于查询方式或中断方式,使用十分灵活。 串行口除了能构成双机或多机通信系统外,还可以非常方便地构成并行输入/输出接口,用于串并转换或用于驱动键盘和显
2、示器。 本章将介绍串行通信的概念及单片机串行接口的结构、原理及应用。7.1 串行通信的基本概念 7.1.1 数据通信的概念 计算机的CPU与外部设备之间、计算机与计算机之间的信息交换称为数据通信。基本的数据通信方式有两种,即并行通信和串行通信。 7.1.1 数据通信的概念 1并行通信 并行通信是数据的各位同时进行传送 (发送或接收)的通信方式。其优点是数据传送速度快;缺点是数据有多少位,就需要多少根传送线。 7.1.1 数据通信的概念 2串行通信 串行通信是数据的各位一位一位顺序传送的通信方式。其优点是数据传送线少(利用电话线就可作为传送线),这样就大大降低了传送成本,特别适用于远距离通信;其
3、缺点是传送速度较低。7.1.2 串行通信中数据的传输方式 串行通信中数据的传输方式有单工、半双工、全双工传输方式。 单工传输方式:数据只能单方向地从一端向另一端传送。 半双工传输方式:允许数据向两个方向中的任一方向传送,但每次只允许向一个方向传送。 全双工传输方式:允许数据同时双向传送。全双工通信效率最高,适用于计算机之间的通信。7.1.3 串行通信的两种基本通信方式 异步通信和同步通信 串行通信有两种基本通信方式,即同步通信方式和异步通信方式。1同步通信 在同步通信中,发送器和接收器由同一个时钟控制,如图7-1(a)所示。同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在要传送的
4、数据块开始传送前,用同步字符SYNC来指示,其数据格式如图7-1(b)示。 图同步通信和同步字符 同步传送的优点是可以提高传送速率,但硬件比较复杂。 2异步通信 在异步通信中,发送器和接收器均有各自时钟控制,如图7-2(a)所示。通信时,数据是一帧一帧 (包含一个字符代码或一字节数据)传送的,每一串行帧的数据格式如图7-2(b)所示。图异步通信和帧数据格式图异步通信和帧数据格式 在帧格式中,一个字符由四个部分组成:起始位、数据位、奇偶校验位和停止位。即首先是一个起始位“0”,然后是数据位 (规定低位在前,高位在后),接下来是奇偶校验位 (可省略),最后是停止位“1”。7.1.4 串行通信的传送
5、速率1波特率 通信线路上传送的所有位信号都保持一致的信号持续时间,每一位的宽度都由数据传送速率确定,而传送速率是以每秒传送多少个二进制位来度量的,这个速率叫波特率,它的单位是位/秒(b/s或bps)。波特率对于CPU与外部的通信是很重要的。注意:波特率是衡量传输通道频宽的指标,与时钟频率有关,时钟频率越高,波特率越大。 2允许的波特率误差 假设传递的数据一帧为10位,若发送和接收的波特率达到理想的一致,那么接收方对数据的采样都将发生在每位数据有效时刻的中点。如果接收一方的波特率比发送一方大或小5%,那么对10位一帧的串行数据,时钟脉冲相对数据有效时刻逐位偏移,当接收到第10位时,积累的误差达5
6、0%,则采样的数据已是第10位数据的有效与无效的临界状态,这时就可能发生错位,所以5%是10位一帧串行传送的最大的波特率允许误差。7.1.5 串行通信中的校验 在通信过程中往往要对数据传送的正确与否进行校验。校验是保证准确无误传输数据的关键。常用的校验方法有奇偶校验、和校验等。1奇偶校验 奇偶校验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。 换言之,如果奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。 奇校验:8位有效数据连同1位附加位中,二进制“1”的个数为奇数 偶校验:8位有效数据连同1位附加位中,二进制“1”
7、的个数为偶数2和校验 所谓和校验是发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,相符则无差错,否则即认为传送过程中出现了差错。7.1.6 串行通信的实现 实际上,单片机串行通信的过程是将其内部的并行数据转换成串行数据,通过串行通信线传送,接收方将接收到的串行数据再转换成并行数据送到计算机中。在MCS-51系列单片机中,串并、并串转换是由串行口的移位寄存器来自动完成的。7.2 单片机串行接口及控制寄存器7.2.1 串行接口结构 MCS-51系列单片
8、机串行口由串行控制器电路、发送电路、接收电路三部分组成。其结构如图7-3所示。接收、发送缓冲器SBUF是物理上完全独立的两个位缓冲器,发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,两个缓冲器占用同一个地址(99H)。 图7-3串行接口的结构原理示意图 功能描述 串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行读或写的。当向SBUF发“写”命令时,向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。 指令 MOV SBUF ,A 启动一次数据发送。待这个字节数据发送完成之后,可向SBUF再传送下一个数。功能描述 在接收数据时,一帧数据从
9、RXD端经接收端口进入SBUF之后,串行口发出中断请求,通知CPU接收这一数据。CPU执行一条读指令,就能将接收的数据送入累加器中。与此同时,接收端口接收下一帧数据。 指令 MOV A,SBUF 完成一次数据接收,SBUF可再接收下一个数。7.2.2 串行接口控制 串行通信有关的控制寄存器有串行控制寄存器SCON、电源控制寄存器PCON及中断允许寄存器IE等。 1串行控制寄存器SCON SCON寄存器的字节地址为98H,可位寻址,位地址为98H9FH。SCON用于设定串行接口工作方式、接收发送控制及设置状态标志。SCON格式如下:SCON中的各位含义如下: (1) SM0,SM1串行口的工作方
10、式选择位。 其功能及编码见表7-1。SCON中的各位含义如下: (2) SM2多机通信控制位。 在方式2或方式3中,如果SM2=1,则接收到的第9位数据(RB8)为0时不激活RI,接收到的数据丢失;只有当收到的第9位数据(RB8)为1时才激活RI,向CPU申请中断。如果SM2=0,则不论收到的第9位数据(RB8)为1还是为0,都会将接收的前8位数据装入SBUF中。在方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI;若没有接收到有效的停止位,则RI清零。在方式0中,SM2必须为0。SCON中的各位含义如下: (3) REN允许串行接收控制位。 由软件置位以允许接收,由软件清零时禁止
11、接收。 (4) TB8为发送数据位。 在方式2和方式3时,为要发送的第9位数据。根据需要由软件置位和复位。在多机通信时,TB8的状态用来表示主机发送的是地址或是数据,通常协议规定“0”表示数据,“1”表示地址。SCON中的各位含义如下: (5) RB8为接收数据位。 在方式2和方式3时,为接收到的第9位数据。RB8和SM2,TB8一起,常用于通信控制。在方式1时,如果SM2=0,RB8接收到的是停止位。在方式0时,不使用RB8。SCON中的各位含义如下: (6) TI发送完成标志位。 由片内硬件在方式0串行发送第8位结束时置位,或在其他方式串行发送停止位的开始时置位。必须由软件清零。 当SUB
12、F发送完一个完整的数据帧时TI=1。如果串口中断是开放的,则TI=1时会自动引发中断。用户可以通过中断服务程序向SBUF送下一个要发送的数据。 MOV SBUF,A 中断方式发送数据; 也可以使用查询的方式对TI进行检测,如果TI=1则执行: MOV SBUF,A 否则等待 查询方式发送数据。SCON中的各位含义如下: (7) RI接收完成标志。 由片内硬件在方式0串行接收到第8位结束时置位,或在其他方式串行接收到停止位的中间时置位。必须由软件清零。 当SUBF从RXD接收完一个完整的数据帧时RI=1。 如果串口中断是开放的,则RI=1时会自动引发中断。用户可以通过中断服务程序将SBUF中的数
13、据取出送累加器A。 如果串行口中断未允许,也可以使用查询的方式对RI进行检测,如果RI=1则读取SBUF中的数据,否则等待。2电源控制寄存器PCON 电源控制寄存器PCON能够进行电源控制,其D7位SMOD是串行口波特率设置位。寄存器PCON的字节地址为87H,没有位寻址功能。PCON中各位排列如下:2电源控制寄存器PCON PCON寄存器的D7位为SMOD,称为波特率倍增位。即当SMOD=1时,波特率加倍;当SMOD=0时,波特率不加倍。 通过软件可设置SMOD=0或SMOD=1。因为PCON无位寻址功能,所以,要想改变SMOD的值,可通过执行以下指令来完成: ANL PCON,#7FH ;
14、使SMOD=0 ORL PCON,#80H ;使SMOD=12电源控制寄存器PCON 顺便说明PCON中电源控制各位的功能:CF1和CF0是通用标志位,可由指令置1或清0。PD是掉电方式控制位,PD=1时进入掉电方式,单片机停止一切工作,只有硬件复位可以恢复工作。IDL=1时进入待机方式,可以由中断唤醒。3中断允许控制寄存器IE IE寄存器控制中断系统的各中断的允许与否。其中与串行通信有关的位有EA和ES位,当EA=1且ES=1时,串行中断允许。 有关中断允许寄存器IE的内容,请参阅第五章:5.2.2部分。7.3 单片机串行口的工作方式 串行接口的工作方式有四种,由SCON中的SM0和SM1来
15、定义。在这四种工作方式中,异步串行通信只使用方式1、方式2、方式3。方式0是同步半双工通信,经常用于扩展并行输入/输出口。7.3.1 方式0 串行口工作于方式0下,串行口为8位同步移位寄存器输入/输出口,其波特率固定为fosc/12。数据由RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)端输出,发送、接收的是8位数据,不设起始位和停止位,低位在先,高位在后。其帧格式为:D0D1D2D3D4D5D6D71发送 SBUF中的串行数据由RXD逐位移出;TXD输出移位时钟,频率=fosc/12;每送出8位数据 TI就自动置1;需要用软件清零 TI。 方式0的发送与串入并出移位寄存器(如
16、74LS164,CD4094等)一起使用扩展并行输出口。2接收 串行数据由RXD逐位移入SBUF中;TXD输出移位时钟,频率=fosc/12;每接收 8位数据RI就自动置1;需要用软件清零 RI。 方式0的接收与并入串出移位寄存器(如74LS165,CD4014等)一起使用扩展并行输入接口。注意:在方式0中, TB8位没有用,SM2位(多机通信控制位)必须为0;复位时,SCON 已经被清零,缺省值: 方式0;接收前,务必先置位 REN=1 允许接收数据。3 方式0的波特率 波特率= fosc/12 方式0工作时,多用查询方式编程: 发送:MOV SBUF,A JNB TI,$ CLR TI 接收:JNB RI,$ CLR RI MOV A,SBUF 参考仿真文件:51-74164.DSN7.3.2 方式1 方式1是10位为一帧的全双工异步串行通信方式。共包括1个起始位、8个数据位(低位在先)和一个停止位。TXD为发送端,RXD为接收端,波特率可变。其帧格式为:起始D0D1D2D3D4D5 D6D7停止017.3.2 方式1 1发送 串行口在方式1下进行发送时,数据由TXD端输出,CPU