1 / 26

第 7 章 串行接口

第 7 章 串行接口. 7.1 串行通信概念 7.2 串行接口的工作方式 7.3 串行接口的波特率 7.4 串行接口的应用 7.5 思考题与习题. 第 7 章 串行接口.

dane-cote
Télécharger la présentation

第 7 章 串行接口

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第7章 串行接口 7.1 串行通信概念 7.2 串行接口的工作方式 7.3 串行接口的波特率 7.4 串行接口的应用 7.5 思考题与习题

  2. 第7章 串行接口 计算机之间的通信有并行通信和串行通信两种。串行通信是一位一位传送数据的,由于串行通信只需要二根传送线,特别适用于长距离通信。在串行通信中,通信的快慢用波特率来表示,在不同的工作模式下,波特率的设置方式也不同,只有正确进行波特率的设置,才能进行可靠的数据通信。串行通信的总线标准有多种,有RS一232C、RS—422、RS一485以及2OmA电流环。RS一232C是最常用的串行接口标准。.MCS一51系列单片机内部有一个全双工的异步通信I/O口,波特率和帧的格式可以通过软件编程来设置。它的串行通信口有四种工作模式:方式0、方式1、方式2和方式3。帧的格式有1O位、11位两种。MCS一51系列单片机的串行通信有着广泛的应用。可以实现单片机与单片机之间或单片机与PC机之间的串行通信,也可以使用单片机的串行通信接口,实现键盘输入和LED、LCD显示器的输出控制,简化电路,节约单片机的硬件资源。应用串行通信接口,还可以进行远程参数检测和控制。

  3. 第7章 串行接口 7.1串行通信概念 通信系统包括数据传送端、数据接收端、数据转换接口和传送数据的线路。单片机、PC机、工作站都可以作为传送、接收数据的终端设备。数据在传送过程中常常需要经过一些中间设备,这些中间设备称为数据交换设备,负责数据的传送工作。数据在通信过程中,由数据的终端设备传送端送出数据,通过调制解调器把数据转换为一定的电平信号,在通信线路上进行传输。通信信息被传输到计算机的接收端时,同样,也需要通过调制解调器把电平信号转换为计算机能接受的数据,数据才能进入计算机。计算机在通信过程中通常使用RS-232接口,通信线路常用双绞线、同轴电缆、光纤或无线电波。数据通信的方式有两种,一种为并行通信,另一种为串行通信。通常根据通信的距离和具体要求决定采用何种通信的方式。一般当通信的距离在15m 到30 m之内,可以采用并行通信方式或串行通信方式,当通信的距离在30m以上时,应采用串行通信方式。MCS-51系列单片机具有并行通信和串行通信两种方式,给单片机在通信中的应用带来极大的方便。

  4. D0 D1 MCS-51 D2 D3 D4 单片机 D5 D6 D7 控制 检测 D0 D1 D2 计算机 D3 D4 外部 D5 D6 设备 D7 选通 状态 第7章 串行接口 7.1串行通信概念 在并行通信中,数据的所有位是同时进行传送的。它的特点是数据传送的速度快,缺点是需要比较多的传送数据线,有多少位数据就需要多少根线,而且数据传送的距离有限,在单片机中,一般常常应用于CPU与LED、LCD显示器的连接,或CPU与A/D、D/A转换器之间的数据传送等并行接口方面。图7.1所示为MCS-51系列单片机与外部设备之间的数据并行通信的连接方法。

  5. MCS-51 单片机(1) RXD TXD GND GND MCS-51 单片机(2) TXD RXD GND 第7章 串行接口 7.1串行通信概念 在串行通信中,数据是按一定的顺序一位一位地传送的。串行通信时只需要两根传送线,可以利用电话线进行通信,特别适用于长距离通信,非常方便,价格低。图7.2所示为MCS-51系列单片机之间的串行通信的连接方法。

  6. 移位寄存器 数据接收器移位寄存器 第7章 串行接口 7.1串行通信概念 在串行通信时,计算机内部的并行数据传送到内部移位寄存器中,然后数据被逐位移出形成串行数据,通过通信线传送到接收端,再将串行数据逐位送入移位寄存器后转换成并行数据存放在计算机中。进行串行通信的接收端和发送端的计算机,必须有一些约定,必须有相同的传送速率和采用统一的编码方法,接收端的计算机必须知道发送端的计算机发送了哪些信息,发送的信息是否正确,如果有错如何通知对方重新发送。发送端的计算机必须知道接收端的计算机是否正确接收到信息,是否需要重新发送,这些约定叫做串行通信协议或规程。通信的双方遵守了这些协议才能正确地进行数据通信。 串行异步通信时,数据是一帧一帧传送的,不需要同步时钟,通信方法的示意图如图7.3所示。

  7. 第7章 串行接口 7.1串行通信概念 在异步通信中,异步数据发送器先送出一个起始位,再送出具有一定格式的串行数据位、奇偶校验位和停止位。 在没有进行通信时,通信线上处于“1”状态。当数据发送器要发送一个字符数据时,首先发送一个起始位信号“0”,数据接收器检测到这个“0”,就开始准备接收。所以起始位的作用就是表示字符传送的开始,同时还被用作同步接收端的时钟,以保证以后的接收正确。起始位后面是数据位,数据位的个数可以有5、6、7或8位数据,数据位从最低位开始传送。数据位之后发送奇偶校验位,它只占据一位,通信双方在通信时须约定一致的奇偶校验方式,用于有限差错检测。奇偶校验位或数据位(在没有奇偶校验时)之后发送停止位,停止位有1位、1位半和2位,它一定是“1”,停止位用来表示一个字符数据的结束。数据接收器收到停止位后,知道前一个字符传送结束,同时也为接收下一个字符作准备,如果再收到“0”信号,就表示有新的字符要传送,否则就表示目前的通信结束。 串行通信中,数据在通信线路两端的设备之间传送的方式通常有三种:单工、半双工和全双工。单工为单向配置,只允许数据按照一个固定的方向传送,通信线的一端为发送端,另一端为接收端。半双工为半双向配置,允许数据向任何一个方向传送,但每次只能有一个站发送,另一个站接收。通信线两端的每一端都由一个发送设备和一个接收设备组成,通过接收和发送开关使设备与线路接通,接收与发送开关是由软件控制的电子开关,通信线两端的设备通过半双工通信协议进行功能的切换。全双工为全双向配置,允许同时双向传送数据。在半双工通信方式中,由于发送、接收方式的切换需要时间,效率比较低。而在全双工通信中,数据可以同时双向传送,效率比较高。但是,通信线两端的通信设备都必须有完整、独立的发送器和接收器。

  8. 第7章 串行接口 7.2 串行接口的工作方式 在MCS-51单片机芯片内部有一个全双工的串行口,它可以通过单片机内部的定时器/计数器和串行口控制寄存器,用软件设置的方式以4种工作模式和不同的波特率进行工作。

  9. 第7章 串行接口 7.2.1串行接口的结构接口 在MCS-51单片机内部的串行接口,有二个物理上独立的发送缓冲器和接收缓冲器。发送缓冲器只能写入信息,不能被读出,用于发送信息。接收缓冲器只能读出信息,不能被写入,用于接收信息。这两个缓冲器共用一个地址:99H。另外,在串行接口内部还有二个特殊的寄存器SCON、PCON,用于控制串行接口的工作方式和波特率。

  10. 第7章 串行接口 7.2.1串行接口的结构接口 1.串行接口控制寄存器SCON • 串行接口控制寄存器SCON的地址为98H,8个二进制位。可以对串行接口的工作方式、接收发送和串行接口的工作状态标志进行设置。其格式如下。

  11. 7.2.1串行接口的结构接口 其中: SM0、SM1:用于控制串行接口的工作方式 SM0、SM1=00,定义为串行接口工作方式0,移位寄存器方式,用于I/O口扩展; SM0、SM1=01,定义为串行接口工作方式1,8位UART,波特率可变; SM0、SM1=10,定义为串行接口工作方式2,9位UART,波特率为fosc/64或fosc/32; SM0、SM1=11,定义为串行接口工作方式3,9位UART,波特率可变; SM2:用于方式2、方式3时的多机通讯控制 SM2=1,允许多机通讯。多机通讯规定,在方式2、方式3的情况下,接收第9位数据D8=1,表示本帧为地址值,若D8=0,表示本帧为数据值,不使RI=1。在方式1的情况下,按接收到有效的停止位时,使RI=1。 SM2=0,在方式0时,必须使SM2=0 REN:允许串行接收控制位 REN=1,允许接收信息 REN=0,不允许接收信息 TB8:是工作方式2、工作方式3中,发送的第9位数据。它既可以作为数据的奇偶校验位,也可以作为多机通讯中的地址帧或数据帧的标志。 RB8: 是工作方式2、工作方式3中,接收的第9位数据。它既可以作为约定的奇偶校验位,也可以作为多机通讯中的地址帧或数据帧的标志。在工作方式1中,当SM2=0时,RB8的内容是已接收到的停止位。在工作方式0中,不使用RB8。 TI:发送中断标志位。在工作方式0时,发送完8位数据后,由硬件置TI=1,向CPU申请发送中断。CPU在响应中断后,要由软件置TI=0。在其它工作方式时,在发送停止位开始时由硬件置TI=1,并向CPU申请发送中断。CPU在响应中断后,也要由软件置TI=0。 RI:接收中断标志位。在工作方式0时,接收完8位数据后,由硬件置RI=1,向CPU申请接收中断。CPU在响应中断后,要由软件置RI=0。在其它工作方式时,在接收停止位的中途时由硬件置RI=1,并向CPU申请发送中断。CPU在响应中断后,也要由软件置RI=0。 发送中断与接收中断是用同一中断源,在全双工通讯方式中,要用软件来判别是发送中断请求还是接收中断请求。

  12. 第7章 串行接口 7.2.1串行接口的结构接口 2. 电源控制寄存器PCON 电源控制寄存器PCON的地址为87H,没有位寻址功能。可以对单片机实现电源控制管理,其中有一位对串行接口的工作实现控制。其格式如下。 其中PCON.7位SMOD,为波特率倍增位,当SMOD=1时,使串行接口的波特率加倍。其余几位用于电源的控制。

  13. 第7章 串行接口 7.2.2串行接口的工作方式 通过对串行接口控制寄存器SCON的SM0、SM1二位的设定,可以定义串行接口的4种工作方式。 1.工作方式0 串行接口工作方式0为同步移位寄存器输入输出方式,波特率是固定的,为f0SC/12。串行数据由RXD(P3.0)端输入输出,同步移位脉冲由TXD(P3.1)端输出,发送、接收8位数据,低位在先。工作方式0不能用于串行同步通讯中,主要是使串行端口和外接的移位寄存器结合起来扩展单片机的并行输入输出端口。 当要发送的数据写入串行口发送缓冲器SBUF时,串行口将8位数据从RXD端输出,以工作方式0发送数据时,发送完数据后置中断标志TI=1,TXD端输出同步脉冲。一帧数据发送完毕,各控制端均恢复原状态,只有TI保持高电平,呈中断申请状态。在下一次发送数据前,须由软件将TI清零。 当要接收数据时,在REN=1、RI=0的条件下,便启动串行口接收数据。此时RXD为串行输入端,TXD为同步脉冲输出端。接收到一帧数据后,置中断标志RI=l,呈中断申请状态,再次接收数据,须由软件将TI清零。

  14. 7.2.1串行接口的结构接口 起始位 8位数据 停止位 2.工作方式1 串行接口工作方式1为8位异步通讯接口,传送-帧数据有1O位,1位起始位(低电平信号),8位数据位(先低位后高位),1位停止位(高电平信号)。其格式如下: 当把8位数据写入发送缓冲器SBUF,便启动串行接口发送数据,数据由TXD端输出。串行接口能够自动地在数据的前后插入1位起始位和1位停止位,组成10位一帧的数据,在发送移位脉冲的作用下依次从TXD端发送。8位数据发送后,在停止位开始时使TI=1,通知CPU发送下一帧数据。发送时的移位时钟是由定时器T1送达的溢出信号经16或32分频(由SM0D位决定)取得,所以波特率是可变的。 在REN=1时,接收器以所选波特率的16倍速采样RXD端的状态,接收移位脉冲的频率和发送频率相同。在没有信号到来之前,RXD端状态为1。当采样到RXD端从1到0的跳变时就启动接收器接收,先复位内部16位分频计数器,实现时间同步。在接收过程中,接收到的值是3次采样中至少二次相同的值,以保证输入的数据可靠无误。 接收完一帧数据后,在RI=0、SM2=0或接收到的停止位为1,则接收数据有效,将接收移位寄存器内的数据装入SBUF中,停止位装入SCON寄存器的RB8中,并置RI=1。若不能满足RI=0、SM2=0或接收到的停止位为1的条件,则接收的数据丢失。中断标志RI必须由软件清零。

  15. 7.2.1串行接口的结构接口 3.工作方式2 串行接口工作方式2为9位异步通讯接口,传送-帧数据有11位,1位起始位(低电平信号),8位数 据位(先低位后高位),1位可编程位,1位停止位(高电平信号)。其格式如下: 起始位 9位数据 停止位 发送时可编程位TB8根据需要设置为0或1,TB8既可以作为多机通讯中的地址标志位,也可以作为数据的奇偶校验位,在接收数据时,可编程位送入SCON寄存器中的RB8位。在工作方式2下,波特率只有二种:f0SC/64和f0SC/32,由SMOD的值决定。 发送时,数据由TXD端输出,第九位数据是SCON中的TB8,数据写入SBUF后,即启动发送器发送。发送完一帧信息后,置TI=1,要发送下一帧信息前,TI必须由软件清零。 在REN=1时,数据由RXD端输入,共接收11位数。接收器以波特率的16倍的速率采样RXD的电平,在检测到RXD的电平从高到低的负跳变时,启动接收器接收信息。在接收过程中,若检测到的起始位值不是0,则复位接收器,在接收到RXD端的下一个负跳变信号时重新启动接收器。若检测到的起始位值是O,开始接收本帧的信息。在接收完一帧信息后,且RI=0、SM2=0或接收到的第九位数据为1时,8位数据写入接收缓冲器,第九位数据写入SCON寄存器的RB8,并置TI=1,若上述条件不满足时,接收的数据丢失,也不置TI=1。

  16. 第7章 串行接口 7.2.1串行接口的结构接口 4.工作方式3 串行接口工作方式3也是9位异步通讯接口,传送-帧数据有11位,1位起始位(低电平信号),8位数据位(先低位后高位),1位可编程位,1位停止位(高电平信号)。但波特率与工作方式2不同,只有一种。

  17. 第7章 串行接口 7.3 串行接口的波特率 MCS一51单片机的串行通信波特率是随着串行口的工作方式不同而不同。波特率除了与单片机系统的振荡频率fosc、电源控制寄存器PCON的SM0D位有关外,还与定时器T1的设置状态有关。只有正确进行波特率的设置才能使单片机正常工作。 1. 四种工作方式下的波特率计算 串行口工作方式O时:波特率固定不变,它与系统的振荡频率fosc的大小有关,其值为fosc/12。 串行口工作方式2时:波特率有两种固定值。 当SM0D=1时,波特率=2SM0D/64×fosc=fosc/32 当SM0D=0时,波特率=2SM0D/64×fosc=fosc/64 串行口工作方式1和方式3时:波特率是可变的,可以根据应用的需要灵活地设置波特率,对于波特率的设置,关键是要计算定时器T1的溢出率。 波特率=2SMOD/32×定时器T1的溢出率

  18. 第7章 串行接口 7.3 串行接口的波特率 2. 定时器T1的溢出率计算 定时器的溢出率是指在1秒钟内进行计数产生溢出的次数。定时器的溢出率与定时器的工作模式有关,可以改变单片机内部的特殊功能寄存器TM0D中的T1方式字段中的M1、M0二位,即TM0D.5和TMOD.4位,选择定时器工作的四种工作模式中一种进行工作。在串行口通信中,一般都使定时器T1工作在模式2,我们只讨论定时器T1在工作模式2时的溢出率计算。 在定时工作方式2时,T1为8位自动装入定时器,由TL1进行计数。TL1的计数输入来自于内部的时钟脉冲,每隔12个系统时钟周期(—个机器周期),内部电路将产生—个脉冲使TL1加1,当TL1增加到FFH时,再增加1,TL1就产生溢出。因此定时器T1的溢出与系统的时钟频率fosc有关,也与每次溢出后TL1重新装载值N有关。N值越大,定时器T1的溢出率也就越大。当N=FFH时,那么每隔12个时钟周期,定时器T1就溢出一次。一般情况下,定时器T1溢出一次所需要的时间为: (28—N)×12时钟周期=(28—N)×12/fosc(秒) 于是,定时器每秒所溢出的次数为:定时器T1的溢出率=fosc/(12×(28—N))式中的N为时间常数,即TH1的预置值。 例如,系统的时钟频率fosc=12MHz,TH1的预置值N=E6H,定时器T1在工作模式2下的溢出率为:12×106/12/(28—E6H)≈38461.5次/秒

  19. 第7章 串行接口 7.3 串行接口的波特率 3. SM0D位对波特率的影响 在MCS—51单片机串行通信的波特率设置中,SMOD位的选择会影响波特率的准确性。 因为:波特率=2SMOD/32×定时器T1的溢出率=2SMOD/32×fosc/(12×(28—N)) 所以设波特率为2400,fosc=12MHz,当:SM0D=0时 预置常数N=256—2SMOD×fosc/(波特率×32×12)=256—2O×12×106/(2400×32×12)≈243=F3H将此值装入TH1,实际的波特率为: 波特率=2SMOD×fosc/(32×12×(28一N))=2O×12×106/(32×12×(28—F3H))≈2403.8 由此造成的波特率误差为:波特率误差=(2400一2403.8)/240O=0.16% SM0D=1时 预置常数N=256—2SMOD×fosc/(波特率×32×12)=256—2×12×106/(2400×32×12)≈230=E6H 将此值装入TH1,实际的波特率为:波特率=2SMOD×fosc/(32×12×(28一N))=2×12×106/(32×12×(28—E6H))≈2403.8 由此造成的波特率误差为:波特率误差=(2400一2403.8)/240O=0.16% 但是当fosc=6MHz时,通过计算,有:SMOD=0时,波特率的误差为7% SMOD=1时,波特率的误差为0.16%

  20. 第7章 串行接口 7.3 串行接口的波特率 所以单片机的波特率设置要考虑到SMOD和波特率大小。表7.1是常用波特率,供参考。

  21. 第7章 串行接口 7.4 串行接口的应用 应用MCS—51单片机的串行接口,可以扩展单片机的输入输出端口,可以实现单片机之间的串行异步通信,也可以在多个单片机之间进行串行异步通信,还可以在单片机和PC机之间进行串行通信。应用串行接口可以进行数据通信,也可以进行实时控制和信息的检测。总之,串行通信接口有着极其广泛的应用。 7.4.1 串行接口工作方式0的I/O扩展应用 在串行接口工作方式0状态下,单片机为同步移位寄存器输入输出方式。主要是和外接的移位寄存器结合扩展I/O口。可以利用串行接口的RXD、TXD二个端口实行I/O口的扩展应用,增加单片机的输入输出端口,充分发挥串行口的功能。

  22. 第7章 串行接口 7.3 串行接口的波特率 1. 74LS164集成电路的应用 74LS164是14芯8位串入并出移位寄存器,它的逻辑功能见表7.2,引脚排列图见7.4。 说明:H=高电平(稳定态),L=低电平(稳定态) X=不定状态(高电平、低电平、转换) QAo、QBo、..QHo为在稳定状态输入条件建立之前的电平 QAn QBn ..QGn为在最近的时钟↑转换前的QA、QB等的电平, 表示移一位。

  23. 第7章 串行接口 14 13 12 11 10 9 8 74LS164 1 2 3 4 5 6 7 7.3 串行接口的波特率

  24. 第7章 串行接口 7.3 串行接口的波特率 清除 A 串行输入 B 时钟 QA QB QC QD QE QF QG QH 图7.5 74LS164时序

  25. 第7章 串行接口 P1.1 P1.0 P3.0 8031 9 8 1,2 74LS164 3 4 5 6 10 11 12 13 9 8 1,2 74LS164 3 4 5 6 10 11 12 13 7.3 串行接口的波特率

  26. 第7章 串行接口 7.5 思考题与习题 1.叙述计算机通讯的基本概念。 2.叙述MCS-51单片机的串行接口结构、工作方式。 3.如何设置MCS-51单片机的串行接口的工作方式、波特率? 4.利用MCS-51单片机的串行接口设计有十六个键的键盘,画出电原理图,并叙述其工作原理。 5.如何实现单片机与PC机的串行通讯?

More Related