《片机串行接口及》PPT课件.ppt

上传人:sh****n 文档编号:13139593 上传时间:2020-06-05 格式:PPT 页数:169 大小:662.50KB
返回 下载 相关 举报
《片机串行接口及》PPT课件.ppt_第1页
第1页 / 共169页
《片机串行接口及》PPT课件.ppt_第2页
第2页 / 共169页
《片机串行接口及》PPT课件.ppt_第3页
第3页 / 共169页
点击查看更多>>
资源描述
第7章51单片机串行接口及应用,MCS-51单片机中有一个串行通信I/O口,通过该串行口可以实现与其它计算机以及外设之间的串行通信。MCS-51单片机的串行通信有着广泛的应用,不但可以实现单片机之间或单片机和PC机之间的串行通信,也可以使用单片机的串行通信接口,实现键盘输入和LED、LCD显示器输出的控制,简化电路,节约单片机的硬件资源;应用串行通信接口,还可以进行远程参数检测和控制。本章首先介绍串行通信的基础知识,然后详细介绍MCS-51单片机的串行口及其应用。,7.1串行通信概述,在实际应用中,计算机与外部设备之间,计算机与计算机之间之间常常要进行信息交换,所有这些信息的交换均称为“通信”。通信的基本方式分为并行通信和串行通信两种。MCS-51单片机具有并行通信和串行通信两种通信方式,给单片机在通信中的应用带来了极大方便。,并行通信是构成数据信息的各位同时进行传送的通信方式,例如8位数据或16位数据并行传送。图7-1(a)为并行通信方式的示意图。其特点是传输速度快,缺点是需要多条传输线,当距离较远、位数又多时,导致通信线路复杂且成本高。在单片机中,一般常常用于CPU与LED、LCD显示器的连接,CPU与A|D、D|A转换器之间的数据传送等并行接口方面。,串行通信是数据一位接一位地顺序传送。图7-1(b)为串行通信方式的示意图。其特点是通信线路简单,只要一对传输线就可以实现通信(如电话线),从而大大地降低了成本,特别适用于远距离通信。缺点是传送速度慢。,由图7-1可知,假设并行传送N位数据所需时间为T,那么串行传送的时间至少为NT,实际上总是大于NT的。,在串行通信时,机内的并行数据传送到内部移位寄存器中,然后数据被移位寄存器形成串行数据,通过通信线传送到接收端,再将串行数据逐位移入移位寄存器后转换成并行数据存放在机中。进行串行通信的接收端和发送端的计算机,必须有一定的约定,必须有相同的传送速率并采用同一的编码方法,接收端的计算机必须知道发送端的计算机发送了那些信息,发送的信息是否正确,如果有错如何通知对方重新发送。发送端的计算机必须知道接收端的计算机是否正确接收到信息,是否需要重新发送,这些约定称为串行通信协议或规程。通信双方遵守这些协议才能正确地进行数据通信。,7.1.1串行通信的分类,按照串行通信的时钟控制方式,串行通信可分为异步传送和同步传送两种基本方式。1.异步通信(AsynchronousCommunication)异步传送的特点是数据在线路上的传送不连续,在传送时,数据是以字符为单位组成字符帧进行传送的。字符帧由发送端一帧一帧地发送,每一帧数据位均是低位在前高位在后,通过传输线被接收端一帧一帧地接收。发送端和接收端可以由各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。,在异步通信中,接收端是依靠字符帧格式来判断发送端是何时开始发送,何时结束发送的。字符帧格式是异步通信的一个重要指标,是CPU与外设之间事先的约定。(1)字符帧(CharacterFrame)字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位4个部分组成。图7-2为异步传送的字符帧格式。,起始位:位于字符帧开始,起始位为0信号,只占1位,用于表示发送字符的开始;数据位:紧接起始位之后的就是数据位,它可以是5位、6位、7位或8位,传送时低位在先、高位在后;奇偶校验位:数据位后面的1位为奇偶校验位,可0可1,可要也可以不要,由用户决定;停止位:位于字符帧最后,它用信号1来表示1帧字符发送的结束,可以是1位、1位半或2位。,在串行通信中,两相邻字符帧之间,可以没有空闲位,也可以有若干空闲位,这由用户来决定。图7-2(a)为无空闲位的字符帧,图7-2(b)有空闲位的字符帧。图中数据位为7位。,例如,采用串行异步通信方式传送ASCII码字符5,规定为7位数据位,1位偶校验位,1位停止位,无空闲位。由于5的ASCII码为35H,其对应7位数据位为0110101,如按低位在前、高位在后顺序排列应为1010110。前面加1位起始位0,后面配上偶校验位1位0,最后面加1位停止位1,因此传送的字符格式为0101011001,其对应的波形如图图7-3所示。,(2)波特率(Baudrate)串行通信的快慢用波特率来表示,51系列单片机串行口有4种工作方式,波得率也随之不同,波得率和帧格式可以通过软件编程来设置,必须正确进行波得率的设置,才能进行可靠的数据通信。,波特率是异步通信的另一个重要指标。波特率就是数据的传送速率,即每秒钟传送二进制数码的位数,单位为位/秒(b/s),也叫波特数。但波特率与字符的实际传送速率不同,字符的实际传送速率(字符帧/秒)是每秒内所传送的字符帧数,和字符帧格式有关。通常异步通信的波特率为509600b/s。异步通信要求要求发送端与接收端的波特率必须一致。,波特率与字符的传送速率(字符/秒)之间存在如下关系:波特率=位/字符字符/秒=位/秒。例如,假设字符传送的速率为120字符/秒,而每1个字符为10位,那么传送的波特率为:10位/字符120字符/秒=1200位/秒=1200波特,典型串行传输的波特率有110、150、300、1200、2400、4800、9.6K、19.2K、28.8K33.6Kbps。每1位二进制位的传送时间Td就是波特率的倒数,例如上例中Td=1/1200=0.833ms。,异步通信的优点是不需要传送同步时钟,字符帧的长度不受限制,设施简单;缺点是字符帧中因包含起始位和停止位而降低了有效数据的传输速率。,2.同步通信(SynchronousCommunication)在异步传送中,每1个字符帧都要用起始位和停止位作为字符开始和结束的标志,占用了一定的时间。同步通信是一种连续串行传送数据的通信方式,1次通信只传输一帧信息,即1次传送1组数据。这里的信息帧和异步通信的字符帧不同,通常有若干个数据字符,如图7-4所示。图7-4(a)为单同步字符帧结构,图7.4(b)为双同步字符帧结构,但它们均由同步字符SYN、数据字符和校验字符CRC三部分组成,数据字符间没有空闲位。在同步通信中,同步字符可以采用统一的标准格式,也可以由用户约定。,使用同步通信方式,可以实现高速度、大容量的数据传送,其缺点是要求发送时钟和接收时钟保持严格同步。故发送时钟除应和发送波特率保持一致外,还应把它同时传送到接收端去。,7.1.2串行通信的制式在串行通信中数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为单工(simplex)、半双工(halfduplex)和全双工(fullduplex)三种制式。图7-5为三种制式的示意图。,(1)单工制式在单工制式下,通信线的一端接发送器,一端接接收器,数据只能按照一个固定的方向传送,如图7-5(a)所示,A端为发送站,B端为接收站,数据仅能从A站发至B站。这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。,(2)半双工制式:数据可实现双向传送,但不能同时进行,在半双工制式下,系统的每个通信设备都由一个发送器和一个接收器组成,数据既可从A站发送到B站,也可以由B站发送到A站。不过在同一时间只能作1个方向的传送,即只能一端发送,一端接收,如图7-5(b)所示。其收/发开关一般是由软件控制的电子开关。实际的应用采用某种协议实现收/发开关转换。,(3)全双工制式:全双工通信系统的每端都有发送器和接收器,可以同时发送和接收,即数据可以在两个方向上同时传送,如图7-5(c)所示。一般全双工传输方式的线路和设备较复杂。在实际应用中,尽管多数串行通信接口电路具有全双工功能,但一般情况下,多工作于半双工制式下,这种用法简单、实用。,7.1.3信号的调制和解调,通信系统包括数据传送端、数据接收端、数据转换接口和传送数据的线路。单片机、PC机、工作站以及外设都可以作为传送、接收数据的终端设备。数据在传送过程中常常需要一些中间设备,这些中间设备称为数据交换设备,负责数据的传送工作。数据在通信过程中,由数据的终端设备传送端送出数据,通过调制解调器把数据转换为一定的电平信号,在通信线路上进行传输。通信信息被传输到计算机的接收端时,同样,也需要通过调制解调器把电平信号转换为计算机能接受的数据,数据才能进入计算机。,计算机通信是数字信号的通信,它要求传送线的频带很宽。在长距离通信时,传输线(通常电话线)很难具有足够宽的频带,如果用数字信号经过传送线直接通信,信号就会畸变。因此要在发送端用调制器(Modulator)把数字信号转换为模拟信号,在接收端用解调器(Demodulator)检测此模拟信号,再把它转换成数字信号。调制方法有很多种,FSK(FrequencyShiftKeying)是1种常用的调制方法,它把数字信号的“1”与“0”调制成不同频率的模拟信号,调制和解调此处不作详述,请参阅有关资料。,7.1.4串行通信的接口电路,串行接口电路的种类和型号很多。能够完成异步通信的硬件电路称为UART,即通用异步接收器/发送器(UniversalAsychronousReceiver/Transmitter);能够完成同步通信的硬件电路称为USRT(UniversalSychronousReceiver/Transmitter);既能够完成异步通信又能同步通信的硬件电路称为USART(UniversalSychronousAsychronousReceiver/Transmitter)。,从本质上说,所有的串行接口电路都是以并行数据形式与CPU接口,以串行数据形式与外部逻辑接口。它们的基本功能都是从外部逻辑接收串行数据,转换成并行数据后传送给CPU,或从CPU接收并行数据,转换成串行数据后输出到外部逻辑。计算机在通信过程中,通常使用RS-232C等接口,通信线路常用双绞线、同轴电缆、光纤或无线电波。,7.2串行通信总线标准及其接口,在单片机应用系统中,数据通信多采用异步串行通信。在设计通信接口时,必须根据需要选择标准接口,同时,要考虑传输介质、电平转换等问题。8051芯片内有一个全双工的串行接口,该串行接口不仅可以和终端、系统主机等进行通信,而且也可以作为单片机之间的通信口,大大拓宽了其应用范围。,但8051的串行接口,输入/输出均为TTL电平。这种以TTL电平传输数据的方式,抗干扰性差,传输距离短。为了提高串行通信的可靠性,增大通信距离,可采用标准串行接口。,标准串行通信接口电路有多种,异步串行通信接口主要有RS-232C接口;RS-422A、RS-423A接口以及20mA电流环等类型。采用标准接口后,能够方便地把单片机和外设、测量仪器等有机地结合起来,从而构成一个测控系统。例如当需要单片机和PC机通信时,通常采用RS-232C接口进行电平转换。下面对上述几种接口电路进行简单介绍。,7.2.1RS-232C接口,RS-232C是美国电子工业协会(EIA)1962年公布,1969年最后修定而成的通信协议。其中,RS表示RecommendedStandard,232是该标准的标识号,C表示最后一次修定。RS-232C串行接口总线适用于:设备之间的通信距离不大于15m,传输速率不大于20kb/s的通信领域,是使用最早、应用较多的一种异步串行通信总线标准。,它包括了按位串行传输的电气和机械方面的规定。适应于数据终端设备(DTE)和数据电路终接设备(DCE)之间的接口。其中DTE主要包括计算机和各种终端机,而DCE的典型代表是调制解调器。,例如CRT、打印机与CPU的通信大都采用RS-232C接口,MCS-51单片机与PC机的通信也是采用该种类型的接口。由于MCS-51系列单片机本身有一个全双工的串行接口,因此该系列单片机用RS-232C串行接口总线非常方便。,1.RS-232C信息格式标准RS-232C采用串行格式,如图7-6所示。该标准规定:信息的开始为起始位,信息的结束为停止位;信息本身可以是5、6、7、8位再加一位奇偶校验位。如果两个信息之间无信息,则写“1”,表示空。,2.RS-232C总线规定及其电平转换器RS-232C是1种有25个引脚的连接器,标准总线为25根,采用标准的D型25芯插头座。在微机通信中,通常被使用的RS-232C接口信号只有9根引脚,在此不作赘述。,RS-232C规定了自己的电气标准,它的每一个引脚的规定以及对各种信号的电平规定都是标准的,因而便于互相连接。由于它是在TTL电路之前研制的,所以它的电平不是+5V和地,而是采用负逻辑,即逻辑“0”:+3V+15V;逻辑“1”:-3V-15V。因此,RS-232C不能和TTL电平直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏,实际应用时必须注意!常用的电平转换集成电路是传输线驱动器MC1488和传输线接收器MC1489,如图7-7所示。,MC1488内部有三个与非门和一个反相器,供电电压为12V,输入为TTL电平,输出为RS-232C电平。MC1489内部有4个反相器,供电电压为+5V,输入为RS-232C电平,输出为TTL电平。,3.RS-232C使用注意事项实际应用中,RS-232C应注意以下两点:(1)远距离和近距离通信时,所需使用的信号线是不同的。远距离通信时,一般要加调制解调器,使用的信号线较多。而近距离通信时,不采用调制解调器,通信双方可以直接连接,这种情况下,只需要几根信号线即可。最简单的情况,仅用发送数据、接收数据和信号地三根线即可实现全双工异步通信。,(2)在实际应用中,计算机和数字通信设备(如调制解调器)之间通信时,是通过计算机串行口与通信设备连接的。因此,从RS-232标准的角度来看,可以把计算机串行口视为计算机终端设备。RS-232规定的信号线,也就是计算机串行口与通信设备进行连接所使用的信号线。对于MCS-51单片机,利用其RXD(串行数据接收端)线、TXD(串行数据发送端)线和一根地线,就可以构成符合RS-232C接口标准的全双工通信口。,7.2.2RS-449、RS-422A、RS-423A标准接口,RS-232C虽然应用广泛,但因为推出较早,在现代通信系统中存在以下缺点:数据传输速率慢,传输距离短,未规定标准的连接器,接口处各信号间易产生串扰。鉴于此,EIA制定了新的标准RS-449,该标准除了与RS-232C兼容外,在提高传输速率,增加传输距离,改善电气性能等方面有了很大改进,1.RS-449标准接口RS-449是1977年公布的标准接口,在很多方面可以代替RS-232C使用。RS-449与RS-232C的主要差别在于信号在导线上的传输方法不同:RS-232C是利用传输信号与公共地的电压差,RS-449是利用信号导线之间的信号电压差,在1219.2m的24-AWG双铰线上进行数字通信。RS-449规定了两种接口标准连接器,一种为37脚,一种为9脚。,RS-449可以不使用调制解调器,它比RS-232C传输速率高,通信距离长,且由于RS-449系统用平衡信号差传输高速信号,所以噪声低,又可以多点或者使用公共线通信,故RS-449通信电缆可与多个设备并联。,2.RS-422A、RS-423A标准接口RS-422A文本给出了RS-449中对于通信电缆、驱动器和接收器的要求,规定双端电气接口形式,其标准是双端线传送信号。它具体通过传输线驱动器,将逻辑电平变换成电位差,完成发送端的信息传递;通过传输线接收器,把电位差变换成逻辑电平,完成接收端的信息接收。RS-422A比RS-232C传输距离长、速度快,传输速率最大可达10Mb/s,在此速率下,电缆的允许长度为12m,如果采用低速率传输,最大距离可达1200m。,RS-422A和TTL进行电平转换最常用的芯片是传输线驱动器SN75174和传输线接收器SN75175,这两种芯片的设计都符合EIA标准RS-422A,均采用+5V电源供电。RS-422A的接口电路如图7-8所示,发送器SN75174将TTL电平转换为标准的RS-422A电平;接收器SN75175将RS-422A接口信号转换为TTL电平。,RS-423A和RS-422A文本一样,也给出了RS-449中对于通信电缆、驱动器和接收器的要求。RS-423A给出了不平衡信号差的规定,而RS-422A给出的是平衡信号差的规定。RS-422标准接口的最大传输速率为100kb/s,电缆的允许长度为90m。RS-423A也需要进行电平转换,常用的驱动器和接收器为3691和26L32。其接口电路如图7-9所示。,7.2.320mA电流环路串行接口,20mA电流环是目前串行通信中广泛使用的一种接口电路。电流环串行通信接口的最大优点是低阻传输线对电气噪声不敏感,而且易实现光电隔离,因此在长距离通信时要比RS-232C优越得多。图7-10是一个实用的20mA电流环接口电路。它是一个加上光电隔离的电流环传送和接收电路。在发送端,将TTL电平转换为环路电流信号,在接收端又转换成TTL电平。,通过介绍以上接口介绍,可以看出,在计算机进行串行通信时,选择接口标准必须注意以下几点:(1)可靠性。传输的信息不允许出现错误,在串行通道的各个环节上都要保证有高可靠性的传输,满足特定环境要求的接口标准选择尤其重要。,(2)通信速度和通信距离。通常的标准串行接口,都要满足可靠传输时的最大通信速度和传送距离指标,但这两个指标具有相关性,适当降低传输速度,可以提高通信距离,反之亦然。例如,采用RS-232C标准进行单向数据传输时,最大的传输速度为20kb/s,最大的传输距离为15m。而采用RS-422A标准时,最大的传输速度可达10Mb/s,最大的传输距离为300m,适当降低传输速度,传输距离可达1200m。,(3)抗干扰能力。通常选择的标准接口,在保证不超过其使用范围时都有一定的抗干扰能力,以保证可靠的信号传输。但在一些工业测控系统中,通信环境十分恶劣,因此在通信介质选择、接口标准选择时,要充分考虑抗干扰能力,并采取必要的抗干扰措施。例如在长距离传输时,使用RS-422A标准,能有效地抑制共模信号干扰;使用20mA电流环技术,能大大降低对噪声的敏感程度。在高噪声污染的环境中,通过使用光纤介质可减少噪声的干扰,通过光电隔离可以提高通信系统的安全性。,例如在计算机测控系统中,数据通信主要采用异步串行通信方式。在设计通信接口时,必须根据需要选择标准接口,并考虑传输介质、电平转换和通信控制芯片等问题,以保证通信的可靠性、通信速度、通信距离和抗干扰能力。,7.351单片机的串行接口,MCS-51单片机内部有1个功能很强的可编程全双工串行通信接口,可同时发送和接收数据。它不仅可以作UART用,也可以作同步移位寄存器用,还可以非常方便地构成1个或多个并行输入/输出口,或作串并转换,用来驱动键盘与显示器。,该串行接口有4种工作方式,帧格式有8位、10位、11位,其帧格式和波特率均可通过软件编程设置,接收、发送均可工作在查询方式或中断方式,使用十分灵活。本节仅介绍MCS-51单片机中的串行接口的结构、工作方式及其波特率。,MCS-5l单片机的串行口主要由两个独立的数据缓冲器SBUF、一个输入移位寄存器PCON(9位)、一个串行控制寄存器SCON和一个波特率发生器T1等组成。其结构见图7-11。,7.3.1串行口的结构,实现单片机的串行口的引脚是RXD(P3.0)引脚和TXD(P3.1)引脚。控制单片机串行口接收/发送的控制寄存器共有三个,即特殊功能寄存器SBUF、SCON和PCON。数据缓冲器SBUF用于存放接收和欲发送的数据,串行控制寄存器SCON用来存放串行口的控制和状态信息。定时器/计数器T1作串行口的波特率发生器,其波特率是否增倍由电源和波特率控制寄存器PCON的最高位控制。,1.串行口数据缓冲器SBUFSBUF是两个在物理上独立的接收、发送寄存器,是可以直接寻址的专用寄存器。一个用于存放接收到的数据,另一个用于存放欲发送的数据,可同时发送和接收数据。两个缓冲器共用一个地址99H,通过对SBUF的读、写指令来区别是对接收缓冲器还是发送缓冲器进行操作。CPU在写SBUF时,就是修改发送缓冲器;读SBUF,就是读接收缓冲器的内容。接收或发送数据,是通过串行口对外的两条独立收发信号线RXD(P3.0)、TXD(P3.1)来实现的,因此可以同时发送、接收数据,其工作方式为全双工制式。,串口的接收/发送端具有缓冲的功能,由SBUF特殊功能寄存器实现该功能。接收缓冲器是双缓冲的,它是为了避免在接收下一帧数据之前,CPU未能及时响应接收器的中断,把上帧数据读走,而产生两帧数据重叠的问题而设置的双缓冲结构。对于发送缓冲器,由于发送时CPU是主动的,不会产生两帧数据写重叠的问题,同时为了保持最大传输速率,MCS-51的发送缓冲器为单缓冲。,2.电源和波特率控制寄存器PCONPCON是一个特殊功能寄存器,其字节地址为87H,只能进行字节寻址,不能按位寻址。PCON是为在CHMOS结构的51系列单片机上实现电源控制而附加的,对HMOS的5l系列单片机,只用了最高位,其余位都是虚设的。其格式如下:,PCON的最高位D7位作为SMOD,是串行口波特率的选择位。在工作方式1、2、3时,串行通信的波特率与SMOD有关。当SMOD=1时,波特率加倍,当SMOD=0时,波特率不变。例如在工作方式2下,若SMOD=0时,则波特率为64;当SMOD=1时,波特率为32,恰好增大一倍。系统复位后,SMOD位为0。其他各位用于电源管理在此不作赘述。,3.串行口控制寄存器SCON深入理解SCON各位的含义,正确地用软件设定或修改SCON的各位是使用MCS-51串行口的关键。该专用寄存器的主要功能是选择串行口的工作方式、接收和发送控制以及串行口的状态标志指示等,可以位寻址,字节地址为98H。收发双方都有对SCON的编程,单片机复位时,SCON的所有位全为0。SCON的各位含义如下:,(1)SM0SM1(SCON.7、SCON.6):串行口的工作方式选择位。串行口的工作方式及功能如表7-1所示。(2)REN(SCON.4):串行口允许禁止接收控制位,由软件置位与复位。REN=1时,允许串行口接收数据;REN=0时,禁止串行口接收数据。,(3)TB8(SCON.3):方式2、3中TB8是要发送的第9位(帧格式中的D8位)数据,可由软件置位或复位,可做奇偶校验位。在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时,TB8为1,数据帧时,TB8为0。,(4)RB8(SCON.2):方式2、3中RB8是接收到的第9位(帧格式中的D8位)数据。可由软件置位或复位,可做奇偶校验位。在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时,RB8为1,数据帧时,RB8为0。方式1中,如果SM20,RS8是接收到的停止位,方式0中不使用这一位。,(5)SM2(SCON.5):多机通信允许控制位,主要用于方式2和方式3中。在方式2和方式3处于接收方式时,若SM2=1,则接收到的第9位数据(RB8)为0时,不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;RB8为1时,才将接收到的前8位数据送入SBUF,并置位RI产生中断请求。在方式2、3处于接收或发送方式时,若SM2=0,不论接收到的第9位RB8为0还是为1,都将前8位数据装入SBUF中,并产生中断请求。,在方式l下,当SM2=0时,停止位进入RB8后才会激活RI使之置位;若SM2=l时,则只有收到有效的停止位(为1)且进入RB8后,才会激活RI使之置l,否则RI清0。在方式l下,通常将SM2设置为0。在方式0下,SM2必须设置为0,不用TB8和RB8位。,(6)TI(SCON.1):发送中断标志位,在一帧数据发送完后被置位。方式0时,发送完8位数据后,由硬件置位;其它方式,在停止位开始发送时,由硬件置位。因此,TI是发送完一帧数据的标志,可以用指令JBCTI,rel来查询是否发送结束。TI被置位后可向CPU申请中断。响应中断后,无论任何方式都必须由软件将TI清零。,(7)RI(SCON.0):接收中断标志位,在接收到一帧数据后由硬件置位。方式0时,接受完8位数据后,由硬件置位;其它方式,在接收到停止位的一半时由硬件将RI置位(还应考虑SM2的设定)。同TI一样,也可以通过JBCRI,rel来查询是否接收完一帧数据。RI被置位后,可向CPU申请中断,CPU响应中断后,从SBUF取出数据。但在方式1中,当SM2=1时,若未收到有效的停止位,则不会对RI置位。无论任何方式都必须由软件将RI清零。SCON的所有位复位时被清零。,4.串行通信过程串行通信包括数据的接收和数据的发送,串行通信的过程如下:(1)接收数据的过程当CPU允许接收(即SCON的REN位置1)且接收中断标志RI位复位时,就启动一次接收过程。接收数据时,外界数据通过引脚RXD(P3.0)串行输入,数据的最低位首先进入输入移位器,一帧数据接收完毕再并行送入缓冲器SBUF中,同时将接收中断标志位RI置1。当用软件将输入的数据读走并将RI位复位后,才能再开始下一帧数据的输入过程。这个过程重复进行直至所有数据接收完毕。,(2)发送数据的过程当发送中断标志TI位复位后,CPU执行任何一条写SBUF指令,就启动一次发送过程。CPU在执行写SBUF指令的同时启动发送控制器开始发送数据,被发送的数据由TXD(P3.1)引脚串行输出,首先输出最低位。当一帧数据发送完即发送缓冲器空时,CPU自动将发送中断标志TI位置位。当用软件将TI复位,同时又将下一帧数据写入SBUF后,CPU再次重复上述过程直到所有数据发送完毕。,5.串行通信的编程串行口需初始化后,才能完成数据的输入、输出。其初始化过程如下:(1)按选定串行口的操作模式设定SCON的SM0、SM1两位二进制编码。(2)对于操作模式2或3,应根据需要在TB8中写入待发送的第9位数据。(3)若选定的操作模式不是模式0,还需设定接收/发送的波特率。设定SMOD的状态,以控制波特率是否加倍。若选定操作模式1或3,则应对定时器T1进行初始化以设定其溢出率。,7.3.2串行口的工作方式,MCS-51串行口的工作方式选择、中断标志、可编程位的设置、波特率的增倍均是通过两个特殊功能寄存器SCON和PCON来控制的。MCS-51的串行口有4种工作方式,通过SCON中的SM1、SM0位来决定,如表7-1所示。不同的工作方式,有不同的应用,其帧格式也不同,其帧格式见图7-12。四种工作方式中,串行通信只使用方式1、2、3。方式0不能用于串行同步通信中,经常将串行端口与外接移位寄存器结合起来,用于扩展单片机的并行输入/输出口。,1.工作方式0当SM0=0、SM1=0时,串行口选择为方式0,这种方式为同步移位寄存器式输入输出方式,其帧格式见图7-12(a)。在这种方式下,8位数据从RXD(P3.0)引脚串行输入或输出,同步移位时钟由TXD(P3.1)引脚输出,波特率固定为fosc/12,即每一个机器周期输出或输入一位数据。该方式是以8位数据为一帧,没有起始位和停止位,先发送或接收最低位。这种方式主要用于扩展单片机的并行输入输出口。,(1)方式0发送当一帧数据写入串行口发送缓冲器SBUF时,串行口将8位数据以fosc/12的波特率从RXD引脚输出(低位在前),8位数据发送完置中断标志TI为1,TXD输出同步脉冲。一帧数据发送完毕,各控制端均恢复原状态,只有TI保持为1,请求中断。在再次发送数据之前,必须由软件清TI为0。,将单片机的TXD和RXD接到外部的一个8位串入并出(74LS164)寄存器,就可以使用方式0输出数据。串行口方式0发送的具体电路如图7-13所示。其中,74LS164为串入并出移位寄存器,1、2脚为串行数据输入端,3、4、5、6、10、11、12、13为并行数据输出端,8脚为时钟信号(上升延有效),7为地,14接+5V电源,9为选通端,低电平清零,高电平选通。74LS164能完成数据的串并转换。串行口的数据通过RXD引脚送到164的输入端,串行口输出的移位时钟通过TXD引脚加到164的时钟端。使用另一条I/O线P1.0控制164的输出允许选通端CLR(也可以将164的选通端直接接高电平)。,图7-13方式0发送连线,当数据写入SBUF后,在移位脉冲(TXD)的控制下,数据从RXD端逐位移入74LS164。当8位数据全部移出后,TI由硬件置位,发生中断请求。若CPU响应中断,则开始执行串行口中断服务程序,数据由74LS164并行输出。此时,方式0可用于扩展I/O口输出。根据图7-13所示的硬件连接方法,串行口方式0发送数据程序片段如下:,MOVSCON,#00H;选方式0SETBPl.0;选通74LSl64MOVA,#DATA;将发送的数据送AMOVSBUF,A;数据写入SBUF并启动发送WAIT:JNBTI,WAIT;等待一个字节数据发送完CLRTI;发送完毕,清除TI中断标志CLRP1.0;关闭164选通若还要继续发送新的数,只要使程序返回到第二条指令处即可。,(2)方式0接收,在满足REN=1和RI=0(软件设定)的条件下,便启动串行接口接收数据。此时,RXD为串行输入端,TXD为同步脉冲输出端。串行口开始从RXD端以fosc/12的波特率输入数据(低位在前),当接收完8位数据后,置中断标志RI为1,请求中断。在再次接收数据之前,必须由软件清RI为0。串行控制寄存器SCON中的TB8和RB8在方式0中未用。值得注意的是,每当发送或接收,完8位数据后,硬件会自动置TI或RI为1,CPU响应TI或RI中断后,必须由用户用软件清0。方式0时,SM2必须为0。串行口方式0接收的基本连线方法如图7-14所示。其中,74LS165为并入串出移位寄存器。74LSl65的移位时钟仍由串行口的TXD端提供,74LS165的串行输出数据送到RXD端作为串行口的数据输入,输入端口上的8位数据从RXD引脚读进来。端口线P1.0作为74LS165的接收和移位控制端,当=0时,允许74LSl65置入并行数据;当=1时,允许165串行移位输出数据。当编程选择串行口方式0,并将SCON的REN位置位允许接收,就可,开始一个数据的接收过程。此时,方式0可用于扩展I/O口输入。,根据图7-14所示的硬件连接方法,串行口方式0接收数据程序片段如下:MOVR0,#50H;R0作片内RAM地址指针MOVR7,#02H;R7作为接收字节计数指针RQ:CLRP1.0;允许74LSl65置入并行数据NOPSETBP1.0;允许74LSl65串行移位输出数据MOVSCON,#10H;设串行口方式0,,开放接收允许RQ1:JNBRI,RQ1;等待接收一帧数据CLRRI;清RI中断标志MOVA,SBUF;读SBUFMOVR0,A;存入片内RAMINCR0DJNZR7,RQ;所有字节未接收完,继续循环,2.工作方式1,当SM0=0、SM1=1时,串行口被定义为方式l。该方式规定发送或接收10位为一帧,即一个起始位0、8个数据位、一个停止位1,波特率可以改变。波特率由SMOD位和T1的溢出率决定。其帧格式见图7.12(b)。此时,串行口为波特率可调的10位通用异步通信接口UART。UART通过TXD引脚传送数据到外部,RXD引脚则接收外面所送过来的串行数据。串行口采用该方式时,特别适合于点对点,的单片机之间异步通信。(1)数据发送任何一条“写入SBUF”指令,都可启动一次发送,数据由TXD端输出。串行接口能够自动地在数据的前后添加一个起始位(为0)和一个停止位,组成10位一帧的数据,在发送移位脉冲的作用下依次从TXD端发送。每经过一个移位脉冲,由TXD输出一个数据位,当8位数据全部送完后,使中断标志TI置1,同时置TXD=1作为停止位发送出去,通知CPU发送下一帧数据。,发送时的移位脉冲由定时器1的溢出信号经16或32分频取得(SMOD位决定)。(2)数据接收当REN=1,RI=0时,接收器以所选波特率的16倍速检测RXD端的状态,接受移位脉冲的频率和发送频率相同。在没有数据送达前,RXD端的状态为1,若在RXD(P3.1)引脚上检测到一个由“1”到“0”负跳变信号,确认是起始位“0”,立即启动一次接收。为了保证接收到的信号的可靠性,单片机内部设置一个位检测器。,位检测器在一个16分频计数器的控制下工作,每启动一次接收,硬件首先将16分频计数器复位,使输入位的边沿与计数器满后翻转的时刻对齐,以实现同步。计数器的16个状态把每一位的时间分为16份,在第7、8、9状态时,位检测器对RXD端采样。取这3个状态是为了防止当发送端与接收端的波特率有差异时,保证通信不产生错位或漏码。由于这3个状态理论上对应于每一位的中央段,当发送端与接收端的波特率有差异时,虽然数据会发生偏移,但只要这种差异在允许范围内,就不至于产生错位或漏码。,在上述3个状态下,取得3个采样值,用3取2的表决方法确定接收的数据是否有效,当3个采样值中至少有2个一致时该数据才被接收。如果所接收的第一位不是0,说明它不是一帧数据的起始位,该位被放弃,接收电路被复位,再重新对RXD进行上述采样过程。若起始位有效(为0),就将其移入输入移位寄存器中,然后再接收这一帧中的其它位。接收完一帧数据后,当RI=0,且SM2=0或RI=0,且接收到的停止位为1时,接收数据有效,将接收移位寄存器内的8位数据并行装入SBUF,停止位置入SCON寄存器的RB8(SCON.2)中,,同时将RI置1。若不满足上述条件,则接收的数据信息将丢失。所以,方式1接收时,应先用软件清除RI或SM2标志。此后,接收控制器又将重新再采样测试RXD出现的负跳变,以接收下一帧数据。3.方式2、方式3当SM0=1、SM1=0时,串行口被定义为方式2,当SM0=1、SM1=1时,串行口被定义为方式3。方式2下,串行口为11位通用异步接口UART,这种方式可接收或发送11位数据,传送波特率与PCON的最高位SMOD有关。,发送或接收的一帧数据包括1位起始位0,8位数据位,1位可编程位(D8)和1位停止位1,共11位,比方式1增加了一个数据位,其余相同。第9个数据位即D8位具有特别的用途,可以通过软件来控制它,用于奇偶校验,也可与特殊功能寄存器SCON中的SM2位配合,使MCS-51单片机的串行口适用于多机通信,其帧格式见图7-12(c)。如果串行口工作于接收状态,当接收一帧数据时,单片机硬件自动将接收到的D8位内容送往SCON.2中,即RB8。如果串行口工作于发送状态,当发送数据时,单片机硬件自动将,SCON.3中内容(即为TB8)作为一帧数据的D8位发送出去。串行口方式3和方式2除了波特率规定不同之外,其它的性能完全一样,都是ll位的帧格式。方式2的波特率只有fosc32和fosc64两种,而方式3的波特率是可变的。方式3也适合于多机通信。串行口方式2和方式3的与方式l相比主要区别在第9个数据位上。(1)数据发送发送时,先根据通信协议由软件设置TB8,然后用指令将要发送的数据写入SBUF,启动发送器。任何一条“写入SBUF”指令,都可,启动一次发送,并把TB8的内容装入发送寄存器的第9位(附加位),使信号有效,发送开始。在发送过程中,先自动添加一个起始位放入TXD,然后每经过一个TX时钟(由波特率决定)产生一个移位脉冲,由TXD输出一个数据位。当最后一个数据位(附加位)送完之后,撤消,并使TI置位,同时置TXD=l作为停止位,使TXD输出一个完整的异步通信字符的格式。在发送下一帧信息之前,TI必须由中断服务程序或查询程序清0。(2)数据接收接收部分与方式1类似。当REN=1且消除RI后,,硬件将自动检测RXD(P3.1)上的信号,若检测到由l至0的跳变,立即启动一次接收。首先,判断是否为一个有效的起始位。对RXD的检测仍是以波特率的16倍速率采样,并在每个时钟周期的中间(第7、8、9计数状态)对RXD连续采样3次,取两次相同的值进行判决。若不是起始位,则此次接收无效,重新检测RXD;若是有效起始位,就在每一个RX时钟周期里接收一位数据。在一帧数据收齐后,若满足RI=0,且SM2=0或RI=0,且接收到的第9位数据为1时,接收数据有效,将接收移位寄存器内的8位数据并行装入SBUF,第9,位数据置入SCON寄存器的RB8(SCON.2)中,同时将RI置1。若不满足上述条件,则丢失已收到的一帧信息,不再恢复,也不置位RI。此后,无论那种情况都将重新检测RXD的负跳变。注意:与方式1不同之处是,串行口工作于方式2和方式3时,进入RB8的是第9位数据,而不是停止位。接收到的停止位的值与SBUF、RB8或RI是无关的。这一个特点可用于多机通信。(3)用第9位数据作奇偶校验位在数据通信中由于传输距离较远,数据信号在传送过程中会产生畸变,从而引起误码。,为了保证通信质量,除了改进硬件之外,通常要在通信软件上采取纠错的措施。常用的一种简单方法是,用“检查和”作为第9位数据(称奇偶校验位),将其置入TB8位同8位有效数据一同发送出去。在接收端用第9位数据来核对所接收到的数据是否正确。具体用法如下:例如:发送端发送一个数据字节及其奇偶校验位的程序段。TT:MOVSCON,#80H;串口方式2MOVA,#DATA;取待发送的数据A,MOVC,PSW.0;奇偶标志位置入TB8MOVTB8,CMOVSBUF,A;启动一次发送LOOP:JBCTI,NEXT;一帧数据发送完否?SJMPLOOPNEXT:RET在方式2、方式3的发送过程中,将8位有效数据中的8个位内容之和置入TB8,作为,奇偶校验位同有效数据一块发送出去。因此,作为接收的一方应设法取出该奇偶位进行核对,相应的接收程序段应为:RR:MOVSCON,#90H;方式2允许接收LOOP:JBCRI,RECN;等待接收SJMPLOOPRECN:MOVA,SBUF;读入接收的一帧数据JBPSW.0,ONE;判断接收端的奇偶值,JBRB8,ERR;判发送端的奇偶值SJMPREXTONE:JNBRB8,ERRREXT:;接收正确处理ERR:;接收有错处理将接收到的一个有效数据从SBUF转移到Acc中时,会产生奇偶值将PSW.0置1或清0,而RB8中的内容为发送端所发送数据的奇偶值,两个奇偶值应相等,否则接收到的有效数据,有错。若发现错误要及时通知对方重发。7.3.3各种方式波特率的设置在串行通信中,收发双方对传送的数据速率,即波特率要有一定的约定,MCS-51单片机的串行口工作于不同的工作方式其波特率的设置也应有所不同。串行口通过编程可以有4种工作方式,其中,方式0和方式2的波特率是固定的,方式1和方式3的波特率可变,由定时器1的溢出率决定,下面分别说明。1方式0和方式2在方式0时,每个机器周期发送或接收一位数据,,因此波特率固定为振荡频率的l12,且不受SMOD位的控制。方式2的波特率要受PCON中SMOD位的控制,当SMOD设置为0时,波特率为振荡频率的164,即等于/64;若SMOD设置为1时,则波特率等于32。因此,方式2的波特率可用下式表示:波特率=fosc2SMOD/64例如,石英振荡器频率为12MHz时,SMOD=1,则波特率为375Kbps2方式1和方式3,MCS-51单片机串行口工作于方式1或方式3时,其波特率由定时器/计数器T1的溢出率与SMOD位共同控制。方式1或方式3的波特率可表示为上式中,当SMOD=0时,波特率不增倍;当SMOD=1时,波特率增倍。定时器溢出率为1s内发生溢出的次数,取决于计数速率和定时器的计数值。计数速率与TMOD寄存器的设置有关,当=0时,为定时器工作方式0,计数速率等于;当=1时,为计数器工作方式2,计数速率取决于外部输入,时钟的频率,但不能超过,使用时通常将T1设置为定时器工作方式。定时器/计数器T1的计数值等于M-X,X为计数初值,M为定时器/计数器的最大计数值,与操作模式有关。使用时可以让T1工作于模式1、模式0,也可以工作于模式2。为了避免由于软件装载引起的误差,通常将T1设置为操作模式2,作为波特率发生器。T1工作于模式2时,TL1作为计数用,TH1用于存放计数初值,当TL1计满溢出时,TH1中的值将自动重装到TL1中,这样避免了由于软件装载而引起的操作误差。,当T1作为波特率发生器并工作于模式2时,其计数初值(装载值)的确定方法如下:设T1的计数初值为X,=0(T1为定时方式)时,那么每过256-X个机器周期,定时器T1就会产生一次溢出。则T1的溢出周期为:溢出周期=定时时间=(256-X)溢出率为溢出周期之倒数,将上式代入波特率的计算公式得:波特率由上式可得定时器T1的计数初值(装载值)为:,许多单片机系统选用时钟频率为11.0592MHz的晶体振荡器,这样易获得标准的波特率。表7-2列出了定时器T1工作于方式2常用波特率及初值。表7-2常用波特率和定时器T1(工作于方式2)初值,例7.1选用T1作波特率发生器,工作于操作模式2,波特率为2400波特。已知fosc=11.0592MHz,设波特率控制位SMOD=0,不增倍,求计数初值X。解:X=256-2011.0592106(3842400)=244=F4H所以,TH1=TL1=F4H。7.4单片机串行接口的应用通过对串行口的SCON控制寄存器编程可以选择4种工作方式。工作方式0的应用可以实现并行输入/输出口的扩展,工作方式1、,工作方式2、工作方式3的应用可以实现串行接口的双机通信,工作方式2、3的应用还可以实现串行接口的多机通信。下面详细介绍各工作方式的使用方法。7.4.1方式0的I/O口扩展应用串行口工作在方式0,可以扩展并行输入口和并行输出口。有关内容前面已经介绍过,这里提请大家在应用时应注意以下两点:1.串行口工作在方式0时,外接一个“并入串出”的移位寄存器(如74LSl65)就可扩展一个并行输入口。所用的移位寄存器必须有,预置/移位控制端,由单片机的一个输出端子加以控制。通信过程为先由8位输入口置数到移位寄存器,然后再串行移位,从而实现由单片机的串行口到数据缓冲器的传送,最后将数据由接收缓冲器读入CPU。(2)串行口工作在方式0时,外接一个“串入并出”的移位寄存器(如74LSl64)就可扩展一个并行输出口。所用的移位寄存器应该有输出允许控制端,并且由单片机的一个输出端子加以控制。这样可以避免在数据串行输出时引起并行输出端出现不稳定的输出。,7.4.2串行口在双机通信中的应用单片机之间的通信主要可分为双机通信和多级通信。串行口方式1适用于点对点的异步通信,可以实现串行接口的双机通信。方式2、方式3也可以实现串行接口的双机通信。1.双机通信硬件电路根据单片机双机通信距离、抗干扰性等要求,可以选择直接TTL电平传输、RS-232-C、RS-422A等串行接口方法。假定通信双方都使用8051的串行口,如果两个MCS-51单片机系统距离较近(1m内),那么,就可以将它们的串行口直接相连,实现双机通信,两者的硬件连接如图7-15所示。当距离较远时(30m内),可以采用标准接口电路,图7-16为采用RS-232-C的双机异步通信接口电路。为了增加通信距离,减少通道和电源干扰,可以在通信线路上采用光电隔离的方法,利用RS-422A标准进行双机通信,实用的RS-422A双机异步通信接口电路如图7-17所示。发送端的数据由串行口TXD端输出,通过74LS05反向驱动,经光电耦合器送到驱动芯片SN75174的输入端。SN75174将输出的,TTL信号转换为符合RS-422A标准的差动信号输出,经传输线(双绞线)将信号送到接收端。接收芯片SN75175将差动信号转换为TTL信号,通过反向后,经光电耦合器到达接收机串行口的接收端。每个通道的接收端都有三个电阻:R1,R2,R3。R1为传输线的匹配电阻,取值在1001k之间,其它两个电阻是为了解决第一个数据的误码而设置的匹配电阻。值得注意的是,光电耦合器必须使用两组独立的电源,只有这样才能起到隔离、抗干扰的作用。,2.双机通信软件编程约定要实现双方的通信还必须编写双方的通信程序。编写程序应遵守双方的约定,通信双方的软件约定如下。发送方:应知道什么时候发送信息、发送的内容对方是否收到、收到的内容是否错误、要不要重发、怎样通知对方发送结束等。接收方:必须知道对方是否发送了信息、发的是什么、收到的信息是否有错、如果有错怎样通知对方重发、怎样判断结束等等。发送和接收双方的数据帧格式、波特率必须一致。,这些约定必须在编程之前确定下来,这种约定叫做“规程”或“协议”。只有在这些协议确定以后,才能进行程序的编写。对于双机异步通信的程序通常采用两种方法:查询方式和中断方式。在很多应用中,双机通信的接收方都采用中断的方式来接收数据,以提高CPU的工作效率;发送方仍然采用查询方式发送。下面介绍方式1和方式2的参考程序。3.方式1参考程序发送方采用查询方式发送,接收方采用中断方式接收。,(1)甲机发送编程将甲机片内60H6FH单元的数据块从串行口发送,在发送之前将数据块长度发送给乙机,当发送完16个字节后,再发送一个累加校验和。定义双机串行口按方式1工作,晶振为11.059MHz,波特率为2400b/s,定时器1按方式2工作。经计算或查表7.2得到定时器预置值为0F4H,SMOD=0。参考发送子程序如下:MOVTMOD,#20H;设置定时器1为方式2,MOVTL1,#0F4H;设置预置值MOVTH1,#0F4HSETBTR1;启动定时器1MOVSCON,#50H;设置串行口为方式1,允许接收START:MOVR0,#60H;设置数据指针MOVR5,#10H;设置数据长度MOVR4,#00H;累加校验和初始化MOVSBUF,R5;发送数据长度,WAIT1:JBCTI,TRS;等待发送AJMPWAIT1TRS:MOVA,R0;读取数据MOVSBUF,A;发送数据ADDA,R4MOVR4,A;形成累加和INCR0;修改数据指针WAIT2:JBCTI,CONT;等待发送一帧数据AJMPWAIT2CONT:DJNZR5,TRS判断数据块是否发送完,WAIT3:JBCTI,WAIT4;等待发送AJMPWAIT3WAIT4:JBCRI,READ;等待乙机回答AJMPWAIT4READ:MOVA,SBUF;接收乙机数据JZRIGHT;00H,发送正确,返回AJMPSTART;发送出错,重发RIGHT:RET(2)乙机接收乙机接收甲机发送的数据,并存入以2000H,开始的片外数据存储器中。首先接收数据长度,接着接收数据,当接收完16个字节后,接收累加和校验码,进行校验。数据传送结束后,根据校验结果向甲机发送一个状态字,00H表示正确,0FFH表示出错,出错则甲机重发。接收采用中断方式。设置两个标志位(7FH,7EH位)来判断接收到的信息是数据块长度、数据还是累加校验和。参考接收程序如下:ORG0023HLJMPINTS;转串行口中断程序,ORG0100HCSH:MOVTMOD,#20H;设置定时器1为方式2MOVTL1,#0F4H;设置预置值MOVTH1,#0F4HSETBTR1;启动定时器1MOVSCON#50H;串行口初始化SETB7FH;置长度标志位为1SETB7EH;置数据块标志位为1MOV31H,#20H;规定外部RAM的起始地址,MOV30H,#00HMOV40H,#00H;清累加和寄存器SETBEA;允许串行口中断SETBESLJMPMAIN;MAIN为主程序,根据用户要求编写.INTS:CLREA;关中断,CLRRI;清中断标志PUSHA;保护现场PUSHDPHPUSHDPLJB7FH,CHANG;判断是数据块长度吗?JB7EH,DATA;判断是数据块吗?SUM:MOVA,SBUF;接收校验和CJNZA,40H,ERR;判断接收是否正确MOVA,#00H;二者相等,正确,向甲机发送00H,MOVSBUF,AWAIT1:JNBTI,WAIT1CLRTISJMPRETURN;发送完,转到返回ERR:MOVA,#0F
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!