《串行口及应用》PPT课件.ppt

上传人:牧羊曲112 文档编号:5457017 上传时间:2023-07-09 格式:PPT 页数:76 大小:1.18MB
返回 下载 相关 举报
《串行口及应用》PPT课件.ppt_第1页
第1页 / 共76页
《串行口及应用》PPT课件.ppt_第2页
第2页 / 共76页
《串行口及应用》PPT课件.ppt_第3页
第3页 / 共76页
《串行口及应用》PPT课件.ppt_第4页
第4页 / 共76页
《串行口及应用》PPT课件.ppt_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《《串行口及应用》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《串行口及应用》PPT课件.ppt(76页珍藏版)》请在三一办公上搜索。

1、2023/7/9,1,第8章 串行口及应用,2023/7/9,2,内容,串行通信基础知识,8.1,80C51单片机的串行口,8.2,串行口的应用,8.3,2023/7/9,3,8.1 串行通信基础知识,8.1.1 计算机对外通信方式,计算机与计算机之间、计算机与外设之间的数据交换称为通信。计算机通信有两种基本方式:并行通信和串行通信。,数据的各位被同时传送的通信方法称为并行通信。,图8-1 并行通信收发设备连接示意图 图8-2 并行通信传送时序图,并行通信的特点是控制简单,传输速度快。由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。,2023/7/9,4,串行通信是将数据字节

2、分成一位一位的形式在一条传输线上逐个地传送。,串行通信具有传输线少,长距离传送时成本低,抗干扰能力强等优点,对于单片机来说,其所占用的引脚资源少。但串行通信数据的传送控制比并行通信复杂。,2023/7/9,5,8.1.2 串行通信的基本概念,1.串行通信的方式,(1)异步通信,异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。,2023/7/9,6,异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的。,为了实现异步传输字符的同步,采用的办法是使

3、传送的每一个字符都以起始位“0”开始,以停止位“1”结束。这样,传送的每一个字符都用起始位来进行收发双方的同步。停止位和间隙作为时钟频率偏差的缓冲,即使双方时钟频率略有偏差,总的数据流也不会因偏差的积累而导致数据错位。,2023/7/9,7,异步通信的每帧数据由4部分组成:起始位(占1位)、字符代码数据位(占58位)、奇偶校验位(占1位,也可以没有校验位)和停止位(占1或2位)。图8-6中给出的是7位数据位、1位奇偶校验位和一位停止位,加上固定的1位起始位,共10位组成一个传输帧。传送时数据的低位在前,高位在后。字符之间允许有不定长度的空闲位。起始位“0”作为联络信号,它告诉接收方传送的开始,

4、接下来的是数据位和奇偶校验位、停止位、“1”表示一个字符的结束。,异步通信的特点是不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加起止位、停止位,各帧之间还有间隔,因此传输效率不高。,2023/7/9,8,(2)同步通信,同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。,2023/7/9,9,2.串行通信的传输方向,串行通信根据数据传输的方向及时间关系可分为单工、半双工和全双工。传输方向示意图如图8-10所示。,(1)单工:是指数据传输

5、仅能沿一个方向,不能实现反向传输。(2)半双工:是指数据传输可以沿两个方向,但需要分时进行。(3)全双工:是指数据可以同时进行双向传输。,2023/7/9,10,3.串行通信的错误校验,在通信过程中往往要对数据传送的正确与否进行校验。校验是保证准确无误传输数据的关键。常用的校验方法有奇偶校验、代码和校验及循环冗余码校验。,(1)奇偶校验在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。当约定为奇校验时,数据位与校验位中“1”的个数之和应为奇数;当约定为偶校验时,数据位与校验位中“1”的个数之和应为偶数。接收方与发送方的校验方式应一致。接收字符时,对“1”的个数进行校验,若发现收、发双方不一

6、致,则说明数据传输过程中出现了差错。,(2)代码和校验代码和校验是发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,相符则无差错,否则即认为传送过程中出现了差错。,(3)循环冗余校验这种校验是通过某种数学运算实现有效信息与校验位之间的循环校验,常用于对磁盘信息的传输、存储区的完整性校验等。这种校验方法纠错能力强,广泛应用于同步通信中。,2023/7/9,11,4.信号的调制与解调,计算机的通信要求传送的是数字信号。在远程数据通信时,通常要借用公用电话

7、网。但是电话网是为3003400Hz的音频模拟信号设计的,对二进制数据的传输是不合适的。为此,在发送时需要对二进制数据进行调制,使之适合在电话网上传输。在接收时,需要进行解调,以将模拟信号还原成数字信号。,2023/7/9,12,利用调制器(Modulator)把数字信号转换成模拟信号,然后送到通信线路上去,再由解调器(Demodulator)把从通信线路上收到的模拟信号转换成数字信号。由于通信是双向的,调制器和解调器合并在一个装置中,这就是调制解调器MODEM。如图8-11所示。,图中,调制器和解调器是进行数据通信所需的设备,因此把它叫做数据通信设备(Data Communications

8、Equipment,简称DCE)。计算机是终端设备(Data Terminal Equipment,简称DTE),通信线路是电话线,也可以是专用线。,2023/7/9,13,5.波特率(Baud Rade),在异步通信中,发送方和接收方必须保持相同的波特率才能实现正确的数据传送。波特率是指单位时间内传送的信息量,即每秒钟传送的二进制位数(也称为比特率),单位是bps,即位/秒。波特率越高,数据传输速度越快,但和字符的实际传输速率不同。字符的传输速率是指每秒钟内所传输字符帧数,和字符格式有关。常用的标准波特率是:110波特、300波特、600波特、1200波特、2400波特、4800波特、960

9、0波特和19200波特等。例如,在异步通信中使用1位起始位,8位数据位,无奇偶校验位,1位停止位,即一帧数据长度位10bit,如果要求数据传送的速率是1秒送120帧字符,则传送波特率为1200波特。,2023/7/9,14,6.串行通信的协议,通信协议是指单片机之间进行信息传输时的一些约定,约定的内容包括数据格式、同步方式、波特率、校验方式等。为了保证计算机之间能够准确、可靠地通信,相互之间必须遵循统一的协议,在通信之前一定要设置好。,2023/7/9,15,串行通信接口标准,从本质说,通信是CPU与外部设备间交换信息的一种方式。所有的串行通信接口电路都是以并行数据形式与CPU连接、而以串行数

10、据形式与外部设备进行数据传送。它们的基本功能都是从外部设备接收串行数据,转换为并行数据后传送给CPU;或从CPU接收并行数据,转换成串行数据后输出给外部设备。能够实现异步通信的硬件电路称为通用异步接收器/发送器(Universal Asynchronous Receive/Transmitter,简称UART)。能够实现同步通信的硬件电路称为通用同步接收器/发送器(Universal Synchronous Receive/Transmitter,简称USRT)。,2023/7/9,16,所谓接口标准,就是明确的定义若干条信号线,使接口电路标准化、通用化。采用标准接口,可以方便地把计算机、外部

11、设备和测量仪器等有机的联系起来,并实现其间的通信。在单片机控制系统中,常用的串行通信接口标准有:RS-232C、RS-422A、RS-485等总线接口标准。,2023/7/9,17,1RS-232C总线,RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(Recommended Standard)代表推荐标准,232是标识号,C代表RS232的最早一次修改(1969)。1969年修订为RS-232C,1987年修订为EIA-232D,1991年修订为EIA-232E,1997年又修

12、订为EIA-232E。由于修改的不多,所以人们习惯于早期的名字“RS-232C”。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。接口标准包括机械特性、功能特性和电气特性几方面内容。,2023/7/9,18,(1)机械特性,RS-232C接口规定使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。一般的应用中并不一定用到RS-232C标准的全部信号线,所以在实际应用中常常使用9针连接器替代25针连接器。计算机的COM1和COM2使用的是9针连接器。连接器引脚定义如图8-12所示。图中所示为阳头定义,通常用于计算机侧,对应的阴头用于连接线侧。,

13、图8-12 DB-25(阳头)和DB-9(阳头)连接器定义,2023/7/9,19,(2)功能特性,RS-232C接口的主要信号线的功能定义如表8-1所示。,表8-1 RS-232C接口的主要信号线的功能定义,2023/7/9,20,(3)电气特性,RS-232C采用负逻辑电平,规定逻辑1为DC-3V-15V,逻辑0为DC+3V+15V。-3 V+3V为过渡区,不作定义。注意:RS-232C的逻辑电平与通常的TTL和MOS电平不兼容。为了实现与TTL或MOS电路的连接,要外加电平转换电路。RS-232C发送方和接收方之间的信号线采用多芯信号线,要求多芯信号线的总负载电容不能超过2 500pF。

14、通常,RS-232C的传输距离为几十米,传输速率小于20Kbps。,2023/7/9,21,(4)过程特性,过程特性规定了信号之间的时序关系,以便正确地接收和发送数据。如果通信双方均具备RS-232C接口,则二者可以直接连接,不必考虑电平转换问题。但是对于单片机与计算机通过RS-232C的连接,必须考虑电平转换问题,因为80C51系列单片机串行口不是标准RS-232C接口。,2023/7/9,22,2023/7/9,23,(5)RS-232C电平与TTL电平转换驱动电路,80C51单片机串行口与PC机的RS-232C接口不能直接对接,必须进行电平转换,常见的TTL到RS-232C的电平转换器有

15、MC1488、MC1489和MAX232等芯片。MC1488输入为TTL电平,输出为RS232电平;MC1489输入为RS-232电平,输出为TTL电平。MC1488的供电电压为12V,MC 1489的供电电压为+5V。MC1488和MC 1489的逻辑功能如图8-15所示。,2023/7/9,24,MC 1488和MC 1489与RS-232电平转换如图8-16所示。,2023/7/9,25,近来一些系统中,愈来愈多地采用了自升压电平转换电路。各厂商生产的此类芯片虽然不同,但原理类似,并可代换。其主要功能是在单+5V电源下,有TTL信号输入到RS-232C输出的功能,也有RS-232C输入到

16、TTL输出的功能。如RS-232C双工发送器/接收器接口电路MAX232,它能满足RS-232C的电气规范,且仅需要+5V电源,内置电子泵电压转换器将+5V转换成-10V+10V。该芯片与TTL/CMOS电平兼容,片内有2个发送器,2个接收器,使用比较方便。MAX232芯片封装如图8-17所示,采用MAX232芯片实现TTL电平和RS232电平转换的电路如图8-18所示。,2023/7/9,26,(6)采用RS-232C接口存在的问题,1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容,故需使用电平转换电路方能与TTL电路连接;2)传输速率较低,在异步传输时,波特率为20

17、kbps;3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱,为了提高信噪比,RS-232C总线标准不得不采用比较大的电压摆幅。4)传输距离有限,最大传输距离标准值为15m,实际上也只能在50m左右。,2023/7/9,27,2.RS-422A接口,串行通信标准RS-422A是平衡型电压数字接口电路的电气标准。,图8-19 RS-422A平衡驱动差分接收电路,RS-422A电路由发送器、平衡连接电缆、电缆终端负载、接收器等部分组成。电路中规定只许有一个发送器,可有多个接收器。RS-422A与RS-232C的主要区别是,收发双方的信号地不

18、再共用。另外,每个方向用于传输数据的是两条平衡导线。所谓“平衡”,是指输出驱动器为双端平衡驱动器。如果其中一条线为逻辑“1”状态,另一条线就为逻辑“0”,比采用单端不平衡驱动对电压的放大倍数大一倍。驱动器输出允许范围是26V。,2023/7/9,28,差分电路能从地线干扰中拾取有效信号,差分接收器可以分辨200mV以上的电位差。若传输过程中混入了干扰和噪声,由于差分放大器的作用,可使干扰和噪声相互抵消。因此可以避免或大大减弱地线干扰和电磁干扰的影响。RS-422A与RS-232C相比,信号传输距离远,速度快。传输距离为120m时,传输速率可达l 0Mbps。降低传输速率(90Kbps)时,传输

19、距离可达1200m。RS-422A与TTL电平转换常用的芯片为传输线驱动器SN75174或MC3487和传输线接收器SN75175或MC3486。,2023/7/9,29,3.RS-485接口,RS-485是RS-422A的变型:RS-422A用于全双工,而RS-485用于半双工。RS-485接口示意图如图8-20所示。,RS-485是一种多发送器标准,在通信线路上最多可以使用32对差分驱动器接收器。如果在一个网络中连接的设备超过32个,还可以使用中间继电器。RS-485的信号传输采用两线间的电压来表示逻辑1和逻辑0。由于发送方需要两根传输线,接收方也需要两根传输线。传输线采用差动信道,所以它

20、的干扰抑制性极好。又因为它的阻抗低,无接地问题,所以传输距离可达1 200m,传输速率可达1Mbps。,图8-20 RS-485接口示意图,2023/7/9,30,RS-485是一点对多点的通信接口,一般采用双绞线的结构。普通的PC机一般不带RS485接口,因此要使用RS-232C/RS-485转换器。对于单片机可以通过芯片 MAX485来完成TTL/RS-485的电平转换。在计算机和单片机组成的RS-485通信系统中,下位机由单片机系统组成,主要完成工业现场信号的采集和控制。上位机为普通的PC机,负责监视下位机的运行状态,并对其状态信息进行集中处理,以图文方式显示下位机的工作状态以及工业现场

21、被控设备的工作状况。系统中各节点(包括上位机)的识别是通过设置不同的站地址来实现的,广泛使用于集散控制系统中。,2023/7/9,31,RS-485采用一对双绞线,输入/输出信号不能同时进行(半双工),MAX485芯片的发送和接收功能转换是由芯片的和DE端控制的。RE=0时,允许接收;RE=1时,接收端R高阻。DE=1时,允许发送;DE=0时,发送端A和B高阻。在单片机系统中常把和DE接在一起用单片机的一个I/O线控制收发。图8-22中当P1.0=1时经反相器为0,MAX485处于接收状态,当P1.0=0时经反相器为1,MAX485处于发送状态。由于单片机各端口复位后处于高电平状态,图8-22

22、中P1.0=1经反相器保证了上电时MAX485处于接收状态。RS-232C串口对单片机串口接收和发送是透明的,无须控制。RS-485串口需由单片机控制收发。图8-22中发送数据时P1.0=0,接收数据时P1.0=1。,2023/7/9,32,MCS-51单片机内部有1个功能很强的全双工串行口,可同时发送和接收数据。它有4种工作方式,可供不同场合使用。波特率由软件设置,通过片内的定时/计数器产生。接收、发送均可工作在查询方式或中断方式,使用十分灵活。,8.2 80C51单片机的串行口,2023/7/9,33,串行口的结构,串行口内部结构如上图,两个物理上独立的接收和发送缓冲器,可同时收、发数据。

23、两个缓冲器共用一个特殊功能寄存器字节地址:SBUF(99H)。控制寄存器共两个:特殊功能寄存器SCON和PCON。,2023/7/9,34,SBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。两个缓冲器只用一个字节地址99H,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。CPU写SBUF,就是修改发送缓冲器;读SBUF,就是读接收缓冲器。串行口对外也有两条独立的收发信号线RXD(P3.0)和TXD(P3.1),因此可以同时发送、接收数据,实现全双工传送。,串行口数据缓冲器SBUF,2023/7/9,35,串行口控制寄存器SCON,SCON寄存器用来

24、控制串行口的工作方式与状态,它可以位寻址。在复位时所有位被清0,字节地址为98H。SCON的格式为:,2023/7/9,36,SM0、SM1串行口4种工作方式的选择位 SM0 SM1 方式 功 能 说 明 0 0 0 移位寄存器方式(用于扩展并行I/O口)0 1 1 8位异步收发,波特率可变(由定时器控制)1 0 2 9位异步收发,波特率为fosc/64或fosc/32 1 1 3 9位异步收发,波特率可变(由定时器控制),2023/7/9,37,SM2 多机通信控制位 用于方式2或方式3中。当串行口以方式2或方式3接收时,如果SM2=1,只有当接收到的第9位数据(RB8)为“1”时,才将接收

25、到的前8位数据送入SBUF,并置“1”RI,产生中断请求;当接收到的第9位数据(RB8)为“0”时,则将接收到的前8位数据丢弃。如果SM2=0,则不论第9位数据是“1”还是“0”,都将前8位数据送入SBUF中,并置“1”RI,产生中断请求。在方式1时,如果SM2=1,则只有收到停止位时才会激活RI。在方式0时,SM2必须为0。,2023/7/9,38,REN允许串行接收位 由软件置“1”或清“0”。REN=1 允许串行口接收数据。REN=0 禁止串行口接收数据。TB8发送的第9位数据 方式2和3时,TB8是要发送的第9位数据,可作为奇偶校验位使用,也可作为地址帧或数据帧的标志。=1为地址帧,=

26、0为数据帧 RB8接收到的第9位数据 方式2和3时,RB8存放接收到的第9位数据。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。,2023/7/9,39,TI发送中断标志位 串行完一帧信息,由硬件置“1”,TI必须由软件清“0”。RI接收中断标志位 方式0时,接收完第8位数据时,RI由硬件置1。其它工作方式,串行接收到停止位时,该位置“1”。RI=1,表示一帧数据接收完毕,并申请中断,CPU从接收SBUF取走数据。该位状态也可软件查询。RI必须由软件清“0”。,2023/7/9,40,PCON单元地址为97H,不能位寻址。其内容如下:,D7 D6 D5 D4 D3

27、D2 D1 D0,PCON,87H,最高位SMOD为串行口波特率选择位,当SMOD=1时,方式1、2、3的波特率加倍。,电源控制寄存器PCON,2023/7/9,41,串行口的工作方式,80C51单片机的串行口有4种工作方式,分别是方式0、方式1、方式2和方式3。这些工作方式由SCON中的SM0、SMl两位编码决定。,2023/7/9,42,1.方式0,同步移位寄存器输入/输出方式,常用于外接移位寄存器,以扩展并行I/O口。8位数据为一帧,不设起始位和停止位,先发送或接收最低位。波特率固定为fosc/12。帧格式如下:,图8-24 方式0帧格式,2023/7/9,43,1方式0发送 当CPU执

28、行一条将数据写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口即把SBUF中的8位数据以fosc/12的固定波特率从RXD引脚串行输出,低位在先,TXD引脚输出同步移位脉冲,发送完8位数据置“1”中断标志位TI。时序如图8-25所示。,图 8-25 方式0发送时序,2023/7/9,44,串行口扩展并行输出口时,要有“串入并出”的移位寄存器配合(如74HC164或CD4094)。74HC164芯片引脚如图8-26(a)所示。74HC164芯片各引脚功能如下:Q0Q7为并行输出引脚;DSA、DSB为串行输入引脚;CR为清0引脚,低电平时,使74HC 164输出清0;CP为时钟脉冲输入引脚,在

29、CP脉冲的上升沿作用下实现移位。在CP=0,CR=1时74HC164保持原来数据状态不变。,2023/7/9,45,例8-1 单片机与74HC164的电路连接如图8-27所示,在74HC164的并行输出引脚接了8只发光二极管,要求利用74HC164的串入并出功能,将发光二极管依次轮流点亮,并不断循环。试编程。,图8-27 例8-1电路连接图,2023/7/9,46,解:分析:将串行口设置为方式0(SCON=0 x00),利用移位寄存器实现串口数据发送,数据发送通过写SBUF寄存器完成,写入SBUF的8位数据通过RXD逐位发送,移位脉冲通过TXD发送,这些工作全部由硬件完成,而且发送完毕后,硬件

30、会自动将TI置位,因此,在设置好工作模式后,将待发送的字节写入SBUF,然后等待TI置位即可。在发送下一字节前,TI要用软件清零。设待发送的字节变量初值为0 x80,将其通过_crol_函数循环移位并发送时,写入SBUF的字节将会是00000001、00000010、00000100、00001000、00010000、00100000、01000000、10000000,LED将会实现向上滚动的显示效果。,2023/7/9,47,程序设计如下:#include#include#define uint unsigned int#define uchar unsigned charvoid De

31、lay(uint x)/延时子程序 uchar i;while(x-)for(i=0;i110;i+);,void main()/主程序 uchar c=0 x80;SCON=0 x00;/串口为方式0,即移位寄存器输入/输出方式while(1)c=_crol_(c,1);/循环左移一位SBUF=c;/串行输出while(TI=0);/等待发送结束TI=0;/TI清零Delay(400);/延时,实现状态维持,2023/7/9,48,2方式0接收 REN=1,接收数据,REN=0,禁止接收。REN=1,允许接收。向串口的SCON写入控制字(置为方式0,并置“1”REN位,同时RI=0)时,产生

32、一个正脉冲,串行口即开始接收数据。RXD为数据输入端,TXD为移位脉冲信号输出端,接收器也以fosc/12的固定波特率采样RXD引脚的数据信息,当收到8位数据时置“1”RI,一帧数据接收完,可进行下一帧数据的接受,时序如图8-28所示。,图8-28 方式0接收时序,2023/7/9,49,方式0下,SCON中的TB8、RB8位没有用到,发送或接收完8位数据由硬件置“1”TI或RI,CPU响应中断。TI或RI须由用户软件清“0”,可用如下指令:CLR TI;TI位清“0”CLR RI;RI位清“0”方式0时,SM2位必须为0。,2023/7/9,50,(a)8位并入/串出移位寄存器74HC165

33、(b)串行口与74HC165配合图8-29 74HC165及其与单片机串行口的配合,如果把能实现并入串出功能的移位寄存器(如74HC165或CD4014)与串行口配合使用,就可以把串行口变为并行输入口使用。,2023/7/9,51,例8-2电路连接如图8-30所示,在AT89C51单片机串行口外接了一片8位并入/串出移位寄存器74HC165,P2口外接了8只发光二极管,74HC165并行输入端连接8位拨码开关,要求编写程序将拨码开关的动作用发光二极管表示出来,开关打在ON位置时二极管亮,打在OFF位置时二极管不亮。,图8-30 例8-2电路连接图,2023/7/9,52,程序设计如下:#inc

34、lude sbit clk=P10;void delay(int N)/延时子程序 int i,j;for(i=0;iN;i+)for(j=0;ji;j+);void main()int xx;while(1)clk=0;,clk=1;/发送移位脉冲SCON=0 x10;/允许串行口接收数据while(RI=0)/等待发送;xx=SBUF;/读取数据RI=0;/清除接收中断标志P2=xx;delay(200);,2023/7/9,53,SM0、SM1=01方式1一帧数据为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。帧格式如下:,2 方式1,方式1帧格式,2023

35、/7/9,54,方式1波特率=(2SMOD/32)定时器T1的溢出率 SMOD为PCON寄存器的最高位的值(0或1)。,式中,SMOD为PCON寄存器最高位(0或1)。定时器T1的溢出率就是溢出周期的倒数,和所采用的定时器工作方式有关。当定时器T1作为波特率发生器使用时,通常选用工作方式2,这是由于方式2可以自动装入定时时间常数(也即计数初值),可避免通过程序反复装入初值所引起的定时误差,使波特率更加稳定,因此,这是一种最常用的方法。,2023/7/9,55,设计数的预置值(初始值)为x,那么每过256-x个机器周期,定时器溢出一次。为了避免因溢出而产生不必要的中断,此时应禁止T1中断。溢出周

36、期为:,溢出率为溢出周期的倒数,所以,2023/7/9,56,在实际使用时,总是先确定波特率,再计算定时器T1的计数初值(常在这种场合称其为时间常数),然后进行定时器的初始化。,表8-3 定时器T1工作于方式2时常用的波特率及计数初值,2023/7/9,57,(1)方式1发送 数据由TXD输出。一帧信息为10位,1位起始位0,8位数据位(先低位)和1位停止位1。当执行一条数据写发送缓冲器SBUF的指令,就启动发送。图中TX时钟的频率就是发送的波特率。发送开始时,内部发送控制信号变为有效。将起始位向TXD输出,此后,每经过一个TX时钟周期,便产生一个移位脉冲,并由TXD输出一个数据位。8位数据位

37、全部发送完毕后,置“1”TI。方式1发送数据的时序,如下图所示。,方式1发送数据时的时序,2023/7/9,58,(2)方式1接收 数据从RXD(P3.0)脚输入。当检测到起始位的负跳变时,开始接收数据。定时控制信号有两种:接收移位时钟(RX时钟,频率和波特率相同)和位检测器采样脉冲(频率是RX时钟的16倍,1位数据期间,有16个采样脉冲),当采样到RXD端从1到0的跳变时就启动检测器,接收的值是3次连续采样(第7、8、9个脉冲时采样)进行表决以确认是否是真正的起始位(负跳变)的开始。当一帧数据接收完,须同时满足两个条件,接收才真正有效。RI=0,即上一帧数据接收完成时,RI=1发出的中断请求

38、已被响应,SBUF中的数据已被取走,说明“接收SBUF”已空。SM2=0或收到的停止位=1(方式1时,停止位已进入RB8),则收到的数据装入SBUF和RB8(RB8装入停止位),且置“1”中断标志RI。若这两个条件不同时满足,收到的数据将丢失。,2023/7/9,59,图8-33 方式1接收数据时的时序,2023/7/9,60,例8-3 电路连接如图8-34所示,有两片AT89C51单片机,要求甲单片机的K1按键次数可向乙单片机发送,并在乙单片机P0口所接的数码管上显示出来,显示的数字范围从0到9循环。试编程。,图8-34 例8-3电路连接图,2023/7/9,61,解:分析:两单片机的串行口

39、都工作在方式1。甲机负责对按键次数计数,并将计数的次数通过串口发送给乙机;乙机则负责接收甲方送来的数据,并将其在数码管上显示出来,因此两片单片机的程序要分别编写。,本例中两单片机均工作在串口方式1(即10位异步通信模式)下,程序需要首先进行串口初始化,主要任务是设置产生波特率的定时器1、串口控制和中断控制,具体步骤如下:.设置串口模式(SCON);.设置定时器1的工作方式(TMOD);.计算定时器1的初值(THl/TLl);.启动定时器1(TR1);.如果串口工作在中断方式,还必须设置IE允许ES中断,并编写中断例程。本例甲机程序中设SCON=0 x40(即01000000),乙机程序则设SC

40、ON=0 x50(即01010000),两者都将串口设为方式1,但后者还需将REN(允许接收)位设置为1,因为乙机要接收串口数据,而甲机不需要接收数据。,2023/7/9,62,方式1下波特率由定时器1控制,让定时器1工作在自动重装初值的方式2,波特率计算公式为:波特率=2SMOD晶振频率/12(256-THl)32设波特率为9600b/s,若fosc=11.0592MHz,波特率不倍增,即SMOD=0,PCON=0 x00(SMOD为PCON的最高位)。由波特率计算公式可求得TH1=TL1=0 xFD(即253)。本例中两片单片机的串口均不工作在中断方式,而是使用查询方式,发送方通过循环查询

41、TI标志判断是否发送完成,接收方通过循环查询RI标志判断是否接收到字节。因此发送前要将TI清零,接收前要将RI清零,如果发送成功,硬件会自动将TI置1,如果接收到新字节,硬件也会将RI置1。在每一次收/发时都要注意通过程序将TI和RI再次清零。,2023/7/9,63,甲机程序:#include#define uint unsigned int#define uchar unsigned charsbit K1=P10;uchar NumX=0 x0a;void main()SCON=0 x40;/串口工作在方式1TMOD=0 x20;/T1工作在方式2,8位自动重装载方式PCON=0 x00

42、;/波特率不倍增TH1=0 xfd;/波特率为9600b/sTL1=0 xfd;TI=0;TR1=1;/启动定时器1,while(1)if(K1=0)/按键按下,计数次数加1while(K1=0);NumX=(NumX+1)%11;SBUF=NumX;/发送计数次数while(TI=0);TI=0;,2023/7/9,64,乙机程序:#include#define uint unsigned int#define uchar unsigned charuchar code DSY_CODE=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7

43、f,0 x6f;void main()P0=0 x00;SCON=0 x50;/串口工作在方式1,允许接收数据TMOD=0 x20;/T1工作在方式2,8位自动重装载方式PCON=0 x00;/波特率不倍增TH1=0 xfd;/波特率为9600b/sTL1=0 xfd;RI=0;TR1=1;启动定时器1,while(1)if(RI)RI=0;if(SBUF=0,2023/7/9,65,9位异步通信接口。每帧数据均为11位,1位起始位0,8位数据位(先低位),1位可程控的第9位数据和1位停止位。帧格式如下:,3 方式2,方式2波特率=(2SMOD/64)fosc,2023/7/9,66,发送前,

44、先根据通讯协议由软件设置TB8(例如,双机通讯时的奇偶校验位或多机通讯时的地址/数据的标志位)。方式2发送数据波形如图所示。,(1)方式2发送,方式2、3发送数据时序波形,2023/7/9,67,SM0、SM1=10,且REN=1。数据由RXD端输入,接收11位信息。当位检测到RXD从1到0的负跳变,并判断起始位有效后,开始收一帧信息。在接收器完第9位数据后,需满足两个条件,才能将接收到的数据送入SBUF。(1)RI=0,意味着接收缓冲器为空。(2)SM2=0或接收到的第9位数据位RB8=1时。当上述两个条件满足时,接收到的数据送入SBUF(接收缓冲器),第9位数据送入RB8,并置“1”RI。

45、若不满足两个条件,接收的信息将被丢弃。方式2接收数据的时序如图所示。,(2)方式2接收,2023/7/9,68,方式2接收数据的时序,2023/7/9,69,SM0、SM1=11,串口为方式3。波特率可变的9位异步通讯方式,除波特率外,方式3和方式2相同。方式3的时序见方式2。,方式3波特率=(2SMOD/32)定时器T1的溢出率,4 方式3,2023/7/9,70,总结:波特率的制定方法方式0、方式2的波特率是固定的;方式1、方式3波特 率由定时器T1的溢出率来确定。,(a)方式0波特率时钟频率fosc1/12,不受SMOD位的值的影响。若fosc=12MHz,波特率为fosc/12即1Mb

46、/s。(b)方式2波特率=(2SMOD/64)fosc 若fosc=12MHz:SMOD=0 波特率=187.5kb/s;SMOD=1 波特率=375kb/s(c)方式1或方式3时,波特率为:波特率=(2SMOD/32)T1的溢出率,2023/7/9,71,实际设定波特率时,T1常设置为方式2定时(自动装初值)这种方式不仅操作方便,也可避免因软件重装初值而带来的定时误差。此时:,2023/7/9,72,例:设串行接口工作于工作方式3,SMOD0,f=11.059MHz,定时器/计数器1工作于定时器方式2(自动重装载方式),TLl、THl的初值为FDH,试计算波特率。因为定时器/计数器1溢出速率

47、为:1/T11.059106/(256-253)12307194.4 所以波特率为:2307194.4/329599.839600(位/秒),2023/7/9,73,8.3 串行口的应用,例8-4 单片机A的片内RAM中存有从0开始的15个十六进制数,将它们发送给单片机B,并在单片机B中用数码管显示。,在计算机分布式测控系统中,经常要利用串行通信方式进行数据传输。80C51单片机的串行口为计算机间的通信提供了极为便利的条件。串行口的应用编程,可依据串行发送/接收标志位(TI/RI)的状态完成,方法有查询与中断两种方式。,2023/7/9,74,解:分析:这是双机通信,也称为点对点通信,如果两个

48、8051单片机应用系统相距很近,可将其串口直接相连,就可实现双机通信。Proteus仿真电路如图8-36所示。两台单片机采用方式1进行通信,每帧信息为10位,波特率为2400b/s,用T1作为波特率发生器,单片机振荡器频率为11.0592MHz。通信协议设定:通信时首先A机发送“E1”信号,请求传送数据,B机收到请求信号后回答一个“A1”作为应答,表示同意接收。当A机收到应答“A1”后开始发送数据。每发送一个数据字节都要计算“校验和”,假定要发送的数据块长度为15个字节,起始地址在片内RAM的40H单元。先发送数据块长度,然后发送数据,最后发送“校验和”。B机接收数据并转存到片内数据缓冲区,起始地址也为40H,每接到一个数据字节便计算一次“校验和”,当接收完数据块后,再接收A机发来的“校验和”,并将它与B机求出的校验和比较,若两者相等,说明接收正确,B机回答“00H”,若两者不相等,说明接收不正确B机回答“0FFH”,请求重发,A机收到答复为“00H”时,则结束发送,若答复非零,则重新发送。,2023/7/9,75,图8-36 双机通信硬件原理图,2023/7/9,76,Thank You!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号