项目8单片机交通灯远程控制系统设计和制作任务8.1认识串行通信接口任务8.2单片机交通灯远程控制系统的设计与仿真下一页任务8.1认识串行通信接口AT89S51单片机有4个并行I/O接口,数据在通过并口进行传输时,数据的各位是同时进行传送。如果数据位数很多,或者传输距离很远的话,所采用的硬件连接线就非常多,也非常复杂,这时候就要采用串行通信。在串行通信接口电路中,只采用一根发送线,一根接收线,能够很方便完成任意两机间的通信,而且也能够完成多机之间的通信以及单片机和上位计算机之间或其他智能设备之间的通信。8.1.1串行通信基础知识8.1.2MCS-51单片机串行口8.1.3串行通信的电平转换8.1.4串行口应用上一页下一页返回8.1.1串行通信基础知识串行通信按照传输数据时所用的时钟控制方式可分为异步通信和同步通信。一、异步通信在异步通信方式中,传送的数据以一个字(即字符)为基本单位,在每一个字符的传送过程中都要插入一些识别信息位和校验信息位,构成一帧字符信息,或称为字符格式。传输时低位在前,高位在后,数据一帧一帧地传送。上一页下一页返回异步通信中,一帧字符信息由四个部分组成:起始位、数据位、奇偶校验位和停止位,如右图所示。起始位:按照串行通信协议的规定,在发送端发送字符时,首先送出一个起始位,一般为低电平,将线路置成逻辑“0”状态,通知接收端应准备接收一个新的字符。字符的起始位被用作同步接收端的时钟,以保证后续的接收过程能正确进行。数据位:数据位紧跟在起始位后,可以是5位(D0~D4)、6位、7位或8位(D0~D7),通常使用7位或8位数据位。在数据位传送时,总是按数据位的高位在后、低位在前的方式进行传送。奇偶校验位:在数据位后,是一个奇偶校验位,用于校验串行传送的正确性。在数据串行传送的过程中,一旦发生奇偶错,即设置奇偶校验位标志,CPU可以读出此标志,进行相应的纠错处理。不需要奇偶校验时,这一位可省去或改为其他的控制位。上一页下一页返回停止位:位于字符帧的最后,它表示一个字符的传送结束,一般为高电平(逻辑“1”)。停止位可以1位、1.5位或2位。接收端接收到停止位后,知道一个字符已传送结束。同时为接收下一个字符做准备。因此,异步通信的一帧可由10位、10.5位或11位构成。有时为了使收发双方都有一定的操作间隙,可以在传送的两个字符之间插入若干空闲位,空闲位同停止位一样也是高电平。在异步通信中,两相邻的字符帧之间需不需要空闲位可以由用户来决定。二、同步通信在同步通信方式中,在每个数据块传送开始时,先用同步字符(SYN)来指示数据块传送的开始,并由发送时钟和接收时钟来使收发双方保持严格同步,接收端在检测到规定的同步字符后,即开始顺序接收同步字符后的连续数据,直至通信告一段落。上一页下一页返回三、波特率异步通信的一个重要指标是波特率,也即每秒传送的二进制数码的位数,单位是bit/s,即位/秒,也可以写作bps。四、串行通信的方向串行通信中,通信双方的数据传输是按照一定的方式进行的,常用的方式有三种:单向(单工)、半双向(半双工)和全双向(全双工)。单工方式:通信的双方只允许一方的数据传输到另一方。半双工方式:通信的双方中的每一方既可发送数据又可以接受数据,但这两种功能不能同时实现。上一页下一页返回(a)单工(b)半双工(c)双工8.1.2AT89S51单片机串行口AT89S5有一个可编程全双工的串行通信接口,具有通用异步接收和发送器UART(UniversalAsynchronousReceiver/Transmitter)的全部功能,能同时进行数据的发送和接收,也可作为同步移位寄存器使用。一、AT89S51单片机串行口的结构AT89S51的串行口主要由两个独立的串行口数据缓冲器SBUF(一个发送缓冲寄存器,一个接收缓冲寄存器),串行口控制寄存器、输入移位寄存器及若干控制门电路组成。基本结构如图所示。上一页下一页返回在AT89S51单片机中,和串行口的设置和控制相关的特殊功能寄存器有二个:SCON和PCON,控制着串行口的工作发式以及波特率,定时器T1作为波特率发生器。AT89S51的串行口属于可编程接口。二、串行口控制寄存器SCON特殊功能寄存器SCON包含串行口的方式选择位,接收发送控制位以及串行口的状态标志,串行口控制字格式如下所示。上一页下一页返回SM0、SM1:是串行口的方式选择位,如下表所示。上一页下一页返回SM2:多机通信控制位。在方式0下,SM2应为0。在方式1下,如果SM2=0,则只有收到有效的停止位时才会激活RI。在方式2和方式3下,如置SM2=1,则只有在收到的第9位数据(RB8)为1时,RI被激活(RI=1,申请中断,要求CPU取走数据);若SM2=0,表示数据接收状态,无论RB8=1还是0,都把接收到的数据送入接收缓冲器,并产生中断请求。REN:允许串行接收位。由软件置位以允许接收。由软件清“0”来禁止接收。TB8:在方式2和3里发送的第九位数据。需要时由软件置位或复位。RB8:在方式2和3里,是接收到的第九位数据。在方式1时,如SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。TI:发送中断标志。由硬件在方式0串行发送第八位结束时置位,或在其他方式串行发送停止位的开始时置位。必须由软件清0。RI:接收中断标志。由硬件在方式0接收到第8位结束时置位,或在其他方式接收到停止位的中间时置位,必须由软件清0。上一页下一页返回三、电源及波特率选择寄存器PCONPCON是AT89S51为电源控制而设置的特殊功能寄存器,其格式如下:上一页下一页返回PCON中与串行口相关的只有SMOD,为波特率倍增位。在方式1、2、3时,串行通信的波特率与SMOD有关。当SMOD=1时,波特率乘以2,。系统在复位时SMOD=0。四、AT89S51单片机串行口的工作方式1.方式0方式0时,串行口工作于同步移位寄存器方式,此时串行口相当于一个并入串出或串入并出的移位寄存器。数据从RXD(P3.0)输入或输出(低位在先,高位在后),TXD(P3.1)输出同步移位时钟,方式0的波特率固定为fosc/12。当执行指令“MOVSBUF,A”或语句“SBUF=0x8F;”时,8位数据自动开始传送。传送完毕后,TI被置1。接收时,必须先使REN=1、RI=0,当8位数据接收完后,RI会置1,此时可由“MOVA,SBUF”,将数据读入累加器。若要再次发送或接收数据,必须用软件将TI或RI清零。方式0时SM1和SM0为00,此时SM2必须为0。这种方式常用于单片机外围接口电路的扩展。上一页下一页返回2.方式1方式1时,串行口工作于异步通信方式,数据帧格式为8位数据,1个起始位、1个停止位共10位。其传输波特率是可变的,和T1的溢出率以及SMOD有关。发送数据时,数据从TXD输出,当数据送入SBUF后立即自动开始发送。发送完一帧数据后,自动将TI置1。接收数据时,需要将REN置1,允许接收,串行口一旦检测到RXD从1变到0时,就确认是起始位,开始接收一帧数据。当RI=0且停止位为1或SM2=0时,停止位进入到RB8,将RI置1,否则信息将丢失。因此在方式1接收时,应该先用软件将RI或SM2清零。方式2和方式3的差别仅仅在于波特率不一样,方式2的波特率是固定的,波特率为2SMOD/64(fosc);方式3的波特率是可变的,波特率=2SMOD/32(T1的溢出率)。上一页下一页返回串行口工作方式2或方式3时,则被定义为9位的异步通信接口。传送一帧信息为11位,其中1位起始位,8位数据位(从低位至高位),1位是附加的可程控为1或0的第9位数据,1位停止位。五、AT89S51串行口的波特率下面分别讨论串行口4种方式的波特率方式0,方式0的波特率为fosc/12,固定不变。方式2,波特率为方式1和方式3,波特率为T1溢出率指的是定时器T1每秒溢出的次数。当T1作波特率发生器时,通常工作在方式2,此时应禁止T1中断从而避免溢出产生不必要的中断。假设初值为X,则溢出周期为,则溢出率为。上一页下一页返回OSCSMOD642fOSCSMOD642f溢出率T1322SMODOSC12X)-(256fX)-(25612OSCf8.1.3串行通信的电平转换单片机的典型的应用领域就是用于工业现场的测控系统。一般用单片机进行现场信息的检测处理,然后把检测到的数据通过串行通信的方式送给其他单片机或上位计算机。工业现场常见的标准接口有RS-232C接口、RS-422接口、RS-485接口以及20mA电流环等。在设计通信接口时要综合考虑选择何种标准接口、传输介质、电平转换问题。电平转换是由于单片机的串行口的信号电平为TTL类型,和标准RS-232C、RS-485接口的电平特性不同,因此需要进行电平转换。上一页下一页返回一、RS-232C串行接口RS-232C接口是使用最早、应用最广泛的一种异步通信总线标准。是美国电子工业协会(EIA)1962年公布,1969年最后修订而成的。它是目前PC与通信工业中应用最广泛的一种串行接口。它适合用于传输速率在0~20kb/s范围内的信号,最大传输距离为15m。如果需要更远的距离,可以加调制解调器。因为串口RS-232C的电气标准不是TTL的+5V(逻辑1)和地(逻辑0),而是负逻辑,即逻辑“1”:-3~-12V;逻辑“0”:+3~+12V。所以AT89S51单片机引脚在和RS-232C接口连接的时候,不能直接连,必须先进行电平转换。通常采用电平转换芯片MAX232就可以实现RS-232C/TTL电平之间电平的双向转换。转换电路如图所示。上一页下一页返回上一页下一页返回8.1.3.2RS-485接口RS-232C串行接口在使用过程中有不少缺点:接口的信号电平较高,容易损坏接口电路芯片;与TTL电平不兼容,必须经过电平转换电路才能与TTL电路相连接;传输距离有限;传输的效率不高;抗噪能力较弱。为解决这些缺点,后来相继出现了一些其他的接口,例如RS-485,其特点如下:1.RS-485的电气特性:以两线间的电压差为+2V~+6V表示逻辑“1”;以两线间的电压差为-2V~-6V表示逻辑“0”,接口信号电平比RS-232C降低了,不容易损坏接口电路的芯片。RS-485接口电平与TTL电平兼容,可方便地与TTL电路连接。2.RS-485的数据传输速度较快,最高可达10Mbps。传输距离可达1.2km。3.工作于半双工方式,抗噪能力较好。上一页下一页返回4.RS-485接口允许同时连接32个收发器,具有多站能力。5.RS-485接口一般采用屏蔽双绞线传输,因为半双工网络只需2根线。RS-485连接器采用DB-9的9芯插头座。单片机串行口和RS-485接口的电平转换只需要一片MAX485芯片就可以了。MAX485接口芯片是Maxim公司的一种RS-485芯片。采用单一电源+5V工作,额定电流为300μA,采用半双工通讯方式。它可以将TTL电平转换为RS-485电平。下图为单片机与RS-485接口的转换电路。上一页下一页返回上一页下一页返回8.1.4串行口应用串行口通信除了必要的硬件电路之外,还包括应用软件。通信软件的编写不仅与通信接口电路的组成有关,而且和通信双方的通信协议也有着密切的关系。因此,要根据具体应用的条件与要求进行串行通信程序的编制。下面举例说明51单片机串行口不同方式下的编程。一、方式0的应用串行口方式0为移位寄存器输入输出方式,74LS164是串入并出的8位移位寄存器,可以用来扩展并口。数据从RXD串行输出,TXD输出移位脉冲(注意这2个引脚的使用,和其它工作方式不同)。当一个数据写入串行口发送缓冲器时(SBUF),串行口即将8位数据以fosc/12的固定波特率从RXD引脚输出,低位在先。发完8位数据置“1”中断标志位TI。本例题扩展一片74LS164实现扩展一个并