第九讲串行口通信课件.ppt
第九讲 串行口通信电子信息学院电子技术教研室,9.1 串行通信基础,串行通信优点:便于长距离传送 缺点:传送速度较慢,计算机与外界信息交换称为通信。 通信的基本方式可分为并行通信和串行通信:,并行通信是数据的各位同时发送或同时接收;,并行通信优点:传送速度快 缺点:不便长距离传送,串行通信是数据的各位依次逐位发送或接收。,两种通信方式的示意图(a) 并行通信;(b) 串行通信,串行通信的基本特征是数据逐位顺序进行传送。 串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平等)不同,形成了多种串行通信的协议与接口标准。常见的有: 通用异步收发器(UART)本课程介绍的串口 通用串行总线(USB) I2C总线 CAN总线 SPI总线 RS-485,RS-232C,RS422A标准等等,9.1.1 串行通信的分类一. 异步通信(Asynchronous Communication)异步通信中数据是以字符为单位组成字符帧传送,每一帧数据低位在前,高位在后。发送端和接收端可由各自独立的时钟来控制数据的发送和接收,互不同步。 字符帧格式:异步通信的重要指标。接收端依靠字符帧格式来判断发送端发送的开始和结束。 优点:对硬件要求较低,实现较简单、灵活,适用于数据的随机发送/接收。 缺点:工作速度较低,每个字节都要建立一次同步(额外附加两位)。单片机主要采用异步通信方式。,1、字符帧(Character Frame)字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等4部分组成。(1) 起始位:位于字符帧开头,只占一位,为逻辑0低电平,用于向接收设备表示发送端开始发送一帧信息。(2) 数据位:紧跟起始位之后,用户根据情况可取5位、6位、7位或8位,低位在前,高位在后。(3) 奇偶校验位:位于数据位之后,仅占一位,用来表征串行通信中采用奇校验还是偶校验,由用户决定。(4) 停止位:位于字符帧最后,为逻辑1高电平。通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已经发送完,也为发送下一帧作准备。,异步通信的字符帧格式(a) 无空闲位字符帧;(b) 有空闲位字符帧,2、波特率(Baud Rate)波特率:每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒。 波特率表征数据传输的速度,波特率越高,数据传输速度越快。 字符的实际传输速率是每秒内所传字符帧的帧数,和字符帧格式有关。通常,异步通信的波特率为509600 b/s。,二. 同步通信(Synchronous Communication)同步通信是一种连续串行传送数据的通信方式,一次通信只传输一帧信息。 同步通信依靠同步字符保持通信同步。 同步通信由12个同步字符和多字节数据字符以及校验字符CRC组成,同步字符作为起始位以触发同步时钟开始发送或接收数据;多字节数据之间不允许有空隙,每位占用的时间相等;空闲位需发送同步字符。 优点:数据传输速率较高,通常可达56000 b/s或更高。 缺点:要求发送时钟和接收时钟必须保持严格同步。,同步通信的字符帧格式(a) 单同步字符帧格式;(b) 双同步字符帧格式,9.1.2 串行通信的制式串行通信按照数据传送方向可分为三种制式:,1、单工制式(Simplex) 单工制式是指甲乙双方通信时只能单向传送数据,发送方和接收方固定。,2、半双工制式(Half Duplex),半双工制式是指通信双方都具有发送器和接收器,既可发送也可接收,但不能同时接收和发送,发送时不能接收,接收时不能发送。,3、全双工制式(Full Duplex),全双工制式指通信双方均设有发送器和接收器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收时也能发送。,9.1.3 串行通信的接口电路异步通信的硬件电路称为UART,即通用异步接收器/发送器(Universal Asychronous Receiver/Transmitter); 同步通信的硬件电路称为USRT(Universal Sychronous Receiver/Transmitter); 异步和同步通信共用的硬件电路称为USART(Universal Sychronous Asychronous Receiver/Transmitter)。,9.2.1 RS-232C接口 RS-232C主要用来定义计算机系统的一些数据终端设备(DTE)和数据电路终接设备(DCE)之间的电气性能。 例如:CRT、打印机与CPU的通信 MCS-51单片机与PC机的通信 RS-232C适用范围:设备间的通信距离不大于15 m 传输速率最大为20 kb/s,9.2 串行通信总线标准及其接口,1. RS-232C信息格式标准RS-232C采用串行格式。 标准规定:信息的开始为起始位,信息的结束为停止位;信息本身可以是5、6、7、8位再加一位奇偶校验位。如果两个信息之间无信息,则写“1”,表示空。,RS-232C信息格式,2. RS-232C电平转换器RS-232C的电气标准采用负逻辑: 逻辑“0”:+5 V+15 V 逻辑“1”:5 V15 V 注意:RS-232C必须进行电平转换后才能和TTL电平直接相连,否则将把TTL电路烧坏。,RS232与TTL之间的电平转换,目前多采用MAX232、MAX202、HIN232等芯片,它们同时集成了RS-232电平与TTL电平之间的互换。,MAX232的引脚图,第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。 8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。 TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。 第三部分是供电。15脚DNG、16脚VCC(+5v)。,TTL/CMOS INPUTS 端口:输入TLL或CMOS信号,一般为0-5V,低电平为零,高电平为VCC。TTL/CMOS OUTPUTS端口:输出TLL或CMOS信号,输出电压一般为0-5V,低电平为零,高电平为VCC。,RS232 OUTPUTS端口:把TTL或CMOS的信号转为RS232的信号输出,输出为正负12V连接到电脑。RS232 INPUTS端口:接收到电脑发出的正负12伏,由RS232输出转为TTL或CMOS信号。MAX232内部有二组RS232转换电路使用时 11-14 13-12为一组. 10-7 8-9为一组,3. RS-232C总线接口RS-232C标准总线为25根,采用标准的D型25芯插头座。现在都采用DB9接口。在最简单的全双工系统中,仅用发送数据、接收数据和信号地三根线即可。对于MCS-51单片机,利用其RXD(串行数据接收端)线、TXD(串行数据发送端)线和一根地线,就可以构成符合RS-232C接口标准的全双工通信接口。,RS-232C总线接口引脚定义 1 ( DCD ) PC机收到远程信号(载波检测) 2 (RXD) PC机接收数据 3 (TXD) PC机发送数据 4 (DTR)PC机准备就绪 5 (SG)信号地 6 (DSR)对方准备就绪 7(RTS) PC机请求接收数据 8 (CTS)双方已切换到接收状态(清除发送) 9(RI) 通知PC机,线路正常,振铃提示,RS232接口电路,4. RS-232C总线接口电路连接,MAX232与串口插座的接法,9.2.2 RS-449、RS-422A、RS-423A标准接口1. RS-449标准接口RS-449是1977年公布的标准接口,可代替RS-232C。 RS-449与RS-232C的主要差别在于信号在导线上的传输方法不同:RS-232C是利用传输信号与公共地的电压差,RS-449是利用信号导线之间的信号电压差,在1219.2 m的24-AWG双绞线上进行数字通信的。 RS-449规定了两种接口标准连接器,一种为37脚,一种为9脚。,2. RS-422A、RS-423A标准接口RS-422A给出了RS-449中对于通信电缆、驱动器和接收器的要求,规定双端电气接口形式,其标准是双端线传送信号。它通过传输线驱动器,将逻辑电平变换成电位差,完成发送端的信息传递;通过传输线接收器,把电位差变换成逻辑电平,完成接收端的信息接收。RS-422A比RS-232C传输距离长、速度快,传输速率最大可达10 Mb/s,电缆的允许长度为12 m。如果采用低速率传输,最大距离可达1200 m。RS-422A和TTL进行电平转换最常用的芯片是传输线驱动器SN75174和传输线接收器SN75175,这两种芯片的设计都符合EIA标准RS-422A,均采用+5 V电源供电。,RS-422A的接口电路如图7.7所示,发送器SN75174将TTL电平转换为标准的RS-422A电平;接收器SN75175将RS-422A接口信号转换为TTL电平。RS-423A和RS-422A文本一样,也给出了RS-449中对于通信电缆、驱动器和接收器的要求,但它给出的是不平衡信号差的规定,而RS-422A给出的是平衡信号差的规定。RS-422标准接口的最大传输速率为100 kb/s,电缆的允许长度为90 m。RS-423A和TTL之间也需要进行电平转换,常用的驱动器和接收器为3691和26L32。其接口电路如图7.8所示。,图7.7 RS-422A接口电平转换电路,图7.8 RS-423A接口电平转换电路,9.2.3 20 mA电流环串行接口20 mA电流环是目前串行通信中广泛使用的一种接口电路。电流环串行通信接口的最大优点是低阻传输线对电气噪声不敏感,而且易实现光电隔离,因此在长距离通信时要比RS-232C优越得多。图7.9是一个实用的20 mA电流环接口电路。它是一个加上光电隔离的电流环传送和接收电路。在发送端,该电路将TTL电平转换为环路电流信号;在接收端,它又将环路电流信号转换成TTL电平。,图7.9 20 mA电流环接口电路,在计算机进行串行通信而要选择接口标准时,必须注意以下两点:(1) 通信速度和通信距离。通常的标准串行接口都要满足可靠传输时的最大通信速度和传送距离指标,但这两个指标具有相关性,适当降低传输速度,可以提高通信距离。例如,采用RS-232C标准进行单向数据传输时,最大的传输速度为20 kb/s,最大的传输距离为15 m。采用RS-422A标准时,最大的传输速度可达10 Mb/s,最大的传输距离为300 m,适当降低传输速度,传输距离可达1200 m。,(2) 抗干扰能力。通常选择的标准接口在保证不超过其使用范围时都有一定的抗干扰能力,以保证可靠的信号传输。但在一些工业测控系统中,通信环境十分恶劣,因此在选择通信介质、接口标准时,要充分考虑抗干扰能力,并采取必要的抗干扰措施。例如在长距离传输时使用RS-422A标准,能有效地抑制共模信号干扰;使用20 mA电流环技术,能大大降低对噪声的敏感程度;在高噪声污染的环境中,通过使用光纤介质可减少噪声的干扰;通过光电隔离可以提高通信系统的安全性。,9.3 MCS-51的串行接口9.3.1 MCS-51串行口结构51系列单片机有一个全双工的串行口,这个口既可以用于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存器使用。 MCS-51内部有两个独立的接收、发送缓冲器SBUF。SBUF属于特殊功能寄存器。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,二者共用一个字节地址(99H)。MCS-51串行口的结构如图7.10所示。,串行口结构示意图,1. 串行口数据缓冲器SBUF在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H,用同一寄存器名SBUF。 在物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。 发送时,只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发送; 接收时,CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接收数据。 SBUF=0 xFF 启动一次数据发送,可向SBUF 再发送下一个数 P1=SBUF 完成一次数据接收,SBUF可再 接收下一个数,2. 串行口控制寄存器SCONSCON用来控制串行口的工作方式和状态,可以位寻址,字节地址为98H。单片机复位时,SCON的所有位全为0。,SCON的各位定义,SM0、SM1:串行方式选择位,其定义如表7.1所示。SM2:多机通信控制位,用于方式2和方式3中。在方式2、3处于接收方式时,若SM2=1, 且接收到的第9位数据RB8为0,则不激活RI;若SM2=1,且RB8=1,则置RI=1。在方式2、3处于接收或发送方式时,若SM2=0,则不论接收到的第9位RB8为0还是为1,TI、RI都以正常方式被激活。在方式1处于接收时,若SM2=1,则只有当收到有效的停止位后,RI才置1。在方式0中,SM2应为0。,REN:允许串行接收位。它由软件置位或清零。REN=1时,允许接收;REN=0时,禁止接收。TB8:发送数据的第9位。在方式2和方式3下,TB8由软件置位或复位,可用做奇偶校验位。在多机通信中,TB8可作为区别地址帧或数据帧的标识位:地址帧时TB8为1;数据帧时TB8为0。RB8:接收数据的第9位。功能同TB8。,TI:发送中断标志位。在方式0下,发送完8位数据后,TI由硬件置位;在其它方式中,TI在发送停止位之初由硬件置位。TI是发送完一帧数据的标志,可以用指令查询是否发送结束。TI=1时,也可向CPU申请中断,响应中断后,必须由软件清除TI。RI:接收中断标志位。在方式0下,接收完8位数据后,RI由硬件置位;在其它方式中,RI在接收停止位的中间由硬件置位。同TI一样,也可以通过指令查询是否接收完一帧数据。RI=1时,也可申请中断,响应中断后,必须由软件清除RI。,串行方式的定义,接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对 RI/TI 清0,以备下一次收/发。,3. 电源及波特率选择寄存器PCONPCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,不可以位寻址,字节地址为87H。在HMOS的8051单片机中,PCON除了最高位以外,其它位都是虚设的。,PCON的各位定义,与串行通信有关的只有SMOD位。SMOD为波特率选择位。在方式1、2和3下,串行通信的波特率与SMOD有关。当SMOD=1时,通信波特率乘2;当SMOD=0时,波特率不变。,9.3.2 MCS-51串行口的工作方式1. 方式0在方式0下,串行口作为同步移位寄存器使用,其波特率固定为fosc/12。串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出。 移位数据的发送和接收以8位为一帧,不设起始位和停止位,无论输入/输出,均低位在前高位在后。 这种方式常用于扩展I/O口。,方式0用于扩展I/O口输出,1) 发送当一个数据写入串行口发送缓冲器SBUF时,串行口将8位数据以fosc/12的波特率从RXD引脚输出(低位在前),发送完置中断标志TI为1,请求中断。在再次发送数据之前,必须由软件清TI为0。74LS164为串入并出移位寄存器(SIPO)。,例:用单片机的串行口外接74LS164,控制8只LED滚动显示。,源程序:#include#include#define uchar unsigned char#define uint unsigned intvoid DelayMS(uint x) uchar i; while(x-) for(i=0; i120; i+);void main( ) uchar c = 0 x80; SCON = 0 x00; /串行模式0 TI = 1; /TI 置 1,while(1) c = _crol_(c,1); SBUF = c; while(TI = = 0); TI = 0; DelayMS(400); ,2) 接收在满足REN=1和RI=0的条件下,串行口即开始从RXD端以fosc/12的波特率输入数据(低位在前),当接收完8位数据后,置中断标志RI为1,请求中断。在再次接收数据之前,必须由软件清RI为0。具体接线图如图7.14所示。其中,74LS165为并入串出移位寄存器(PISO)。串行控制寄存器SCON中的TB8和RB8在方式0中未用。值得注意的是,每当发送或接收完8位数据后,硬件会自动置TI或RI为1,CPU响应TI或RI中断后,必须由用户用软件清0。方式0时,SM2必须为0。,方式0用于扩展I/O口输入,例:用74LS165连接的8位拨码开关从单片机串行口输入控制8只LED的显示。,源程序:#include#include#include#define uchar unsigned char#define uint unsigned intsbit SPL = P25;void DelayMS(uint x) uchar i; while(x-) for(i=0; i120; i+);void main( ) SCON = 0 x10; /串行模式0,允许串口接收,while(1) SPL = 0; /置数,读入并行输入8位数据 SPL = 1; /移位,输入封锁,串行转换 while(RI = =0);/未收到等待 RI = 0; P0 = SBUF; DelayMS(20); ,2. 方式1工作在方式1时,串行口为波特率可调的10位通用异步接口UART。发送或接收的一帧信息包括1位起始位0,8位数据位和1位停止位1。,10位的帧格式,1) 发送 发送时,数据从TXD端输出,当数据写入发送缓冲器SBUF后,启动发送器发送。当发送完一帧数据后,置中断标志TI为1。方式1所传送的波特率取决于定时器1的溢出率和PCON中的SMOD位。2) 接收接收时,由REN置1,允许接收,串行口采样RXD,当采样由1到0跳变时,确认是起始位“0”,开始接收一帧数据。当RI=0,且停止位为1或SM2=0时,停止位进入RB8位,同时置中断标志RI;否则信息将丢失。所以,采用方式1接收时,应先用软件清除RI或SM2标志。,3) 波特率方式1波特率可变,由定时/计数器T1的计数溢出率来决定。 波特率 = 2SMOD (T1溢出率)/ 32 其中SMOD为PCON寄存器中最高位的值,SMOD=1表示波特率倍增。 在实际应用时,通常是先确定波特率,后根据波特率求T1定时初值,因此上式又可写为:,11位的帧格式,3. 方式2方式2下,串行口为11位UART,传送波特率与SMOD有关。发送或接收的一帧数据包括1位起始位0,8位数据位,1位可编程位(用于奇偶校验)和1位停止位1。,可编程位TB8/RB8既可作奇偶校验位用,也可作控制位(多机通信)用,其功能由用户确定。,波特率:方式2波特率固定,即fosc/32和fosc/64。 如用公式表示则为:波特率=2SMOD fosc/64,当SMOD=0时,波特率=20 fosc/64= fosc/64当SMOD=1时,波特率=21 fosc/64= fosc/32,4. 方式3方式3为波特率可变的11位UART通信方式。除了波特率不同以外,方式3和方式2完全相同。,5. 串行口四种工作方式的比较 四种工作方式的区别主要表现在帧格式及波特率两个方面。,9.3.3 MCS-51串行口的波特率串行口工作方式0和方式2的波特率是固定的,方式1和方式3的波特率可变,由定时器1的溢出率决定,下面加以分析。1. 方式0和方式2 在方式0中,波特率为时钟频率的1/12,即fosc/12,固定不变。在方式2中,波特率取决于PCON中的SMOD值:当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32,即波特率= 2SMOD fosc/64。,2. 方式1和方式3在方式1和方式3下,波特率由定时器1的溢出率和SMOD共同决定,即:方式1和方式3的波特率=定时器1溢出率其中,定时器1的溢出率取决于单片机定时器1的计数速率和定时器的预置值。计数速率与TMOD寄存器中的C/位有关。当C/=0时,计数速率为fosc/12;当C/=1时,计数速率为外部输入时钟的频率。,实际上,当定时器1作为波特率发生器使用时,通常是工作在模式2下,即作为一个自动重装载的8位定时器,此时TL1作计数用,自动重装载的值在TH1内。设计数的预置值(初始值)为X,那么每过256X个机器周期,定时器溢出一次。为了避免因溢出而产生不必要的中断,此时应禁止T1中断。溢出周期为12(256X)/fosc。溢出率为溢出周期的倒数,所以波特率=,定时器1产生的常用波特率,9.4 MCS-51单片机之间的通信9.4.1 双机通信硬件电路距离较近的两个MCS-51单片机系统可以将它们的串行口直接相连,实现双机通信。 为了增加通信距离,减少通道和电源干扰,可以在通信线路上采用光电隔离的方法,利用RS-422A标准进行双机通信。,RS-422A双机异步通信接口电路,发送端的数据由串行口TXD端输出,通过74LS05反向驱动,经光电耦合器送到驱动芯片SN75174的输入端。SN75174将输出的TTL信号转换为符合RS-422A标准的差动信号输出,经传输线(双绞线)将信号送到接收端。接收芯片SN75175将差动信号转换为TTL信号,通过反向后,经光电耦合器到达接收机串行口的接收端。每个通道的接收端都有三个电阻:R1,R2,R3。R1为传输线的匹配电阻,取值在100 1 k之间,其它两个电阻是为了解决第一个数据的误码而设置的匹配电阻。值得注意的是,光电耦合器必须使用两组独立的电源,只有这样才能起到隔离、抗干扰的作用。,9.4.2 双机通信软件编程 利用RS-232C标准进行双机通信,甲机发送,乙机接收,甲机的K1按键通过串口发送控制乙机的LED闪烁:1.甲机发送“A”,乙机LED1闪烁;2.甲机发送“B”,乙机LED2闪烁;3.甲机发送“C”,乙机LED1、 LED2闪烁;4.甲机停止发送,乙机LED1、 LED2停止闪烁。(见图),两机采用相同的工作方式1,采用11.0592MHz晶体,甲机SCON=0 x40,乙机SCON=0 x50,TH1=TL1=0 xFD(253),PCON=0 x00(SMOD=0),波特率= = 2O 11.0592/(32 12 (256-253)=9600b/s,甲机源代码:(甲机发送)#include#define uchar unsigned char#define uint unsigned intsbit LED1 = P00;sbit LED2 = P03;sbit K1 = P10;void Delay(uint x) uchar i; while(x-) for(i=0; i120; i+);,/向串口发送字符void putc_to_SerialPort(uchar c) SBUF = c ; while(TI = = 0) ; TI = 0;void main( ) uchar Operation_NO = 0; SCON = 0 x40; /串口工作方式1 TMOD=0 x20; /T1工作方式2 PCON=0 x00; TH1=0 xFD; /波特率9600 TL1=0 xFD; TI= 0; TR1=1;,while(1) if(K1= =0) while (K1= =0); Operation_NO=(Operation_NO+1)%4; switch(Operation_NO) case 0: LED1=LED2=1; break; case 1: putc_to_SerialPort(A); LED1=LED1;LED2=1;break; case 2: putc_to_SerialPort(B); LED2=LED2;LED1=1;break; case 3: putc_to_SerialPort(C); LED1=LED1;LED2=LED2;break; Delay(100); ,乙机源代码:(乙机接收) #include#define uchar unsigned char#define uint unsigned intsbit LED1 = P00;sbit LED2 = P03;void Delay(uint x) uchar i; while(x-) for(i=0; i120; i+);void main( ) SCON = 0 x50; TMOD=0 x20; PCON=0 x00; TH1=0 xFD; /波特率9600 TL1=0 xFD; RI= 0; TR1=1; LED1=LED2=1;,while(1) if(RI) RI=0; switch(SBUF) case A: LED1=LED1;LED2=1; break; case B: LED2=LED2;LED1=1; break; case C: LED1=LED1;LED2=LED2; break; else LED1=LED2=1; Delay(100); ,9.4.3 多机通信MCS-51串行口的方式2和方式3有一个专门的应用领域,即多机通信。通常采用主从式多机通信方式,在这种方式下,要使用一台主机和多台从机,主机发送的信息可以传送到各个从机或指定的从机,各从机发送的信息只能被主机接收,从机与从机之间不能进行通信。,多机通信连接示意图,多机通信的实现,主要依靠主、从机之间正确地设置与判断SM2和发送或接收的第9位数据(TB8或RB8)来完成的。在单片机串行口以方式2或方式3接收时,若SM2=1,表示置多机通信功能位。这时有两种情况: 接收到第9位数据为1,此时数据装入SBUF,并置RI=1,向CPU发中断请求; 接收到第9位数据为0,此时不产生中断,信息将被丢弃,不能接收。若SM2=0,则接收到的第9位信息无论是1还是0,都产生RI=1的中断标志,接收的数据装入SBUF。根据这个功能,就可以实现多机通信。,编程实现多机通信的过程如下:(1) 主机发送一帧地址信息,与所需的从机联络。主机应置TB8为1,表示发送的是地址帧。例如: SCON=0 xD8 ;设串行口为方式3, ; TB8=1,允许接收(2) 所有从机初始化设置SM2=1,处于准备接收一帧地址信息的状态。例如:SCON=0 xF0 ;设串行口为方式3, ;SM2=1,允许接收,(3) 各从机接收到地址信息,因为RB8=1,则置中断标志RI。中断后,首先判断主机送过来的地址信息与自己的地址是否相符。对于地址相符的从机,置SM2=0,以接收主机随后发来的所有信息。对于地址不相符的从机,保持SM2=1的状态,对主机随后发来的信息不理睬,直到发送新的一帧地址信息为止。(4) 主机发送控制指令和数据信息给被寻址的从机。其中,主机置TB8为0,表示发送的是数据或控制指令。对于没选中的从机,因为SM2=1,RB8=0,所以不会产生中断,对主机发送的信息不接收。,9.5 PC机和单片机之间的通信9.5.1 接口设计PC机与单片机之间可以由RS-232C、RS-422A或RS-423等接口相连。在PC机系统内都装有异步通信适配器,利用它可以实现异步串行通信。该适配器的核心元件是可编程的Intel 8250芯片,它使PC机有能力与其它具有标准的RS-232C接口的计算机或设备进行通信。而MCS-51单片机本身具有一个全双工的串行口,因此只要配以电平转换的驱动电路、隔离电路,就可组成一个简单可行的通信接口。同样,PC机和单片机之间的通信也分为双机通信和多机通信。,PC机和单片机最简单的连接是零调制三线经济型。这是进行全双工通信所必须的最少线路。因为MCS-51单片机输入、输出电平为TTL电平,而PC机配置的是RS-232C标准接口,二者的电气规范不同,所以要加电平转换电路。常用的有MAX232。下图给出了采用MAX232芯片的PC机和单片机串行通信接口电路,其中,MAX232与PC机的连接采用的是9芯标准插座。,PC机和单片机串行通信接口,9.5.2 软件编程1. 单片机通信软件MCS-51通过中断方式接收PC机发送的数据,并回送。单片机串行口的工作方式为方式1,晶振为6 MHz,波特率为2400 b/s,定时器1按方式2工作,经计算,定时器预置值为0F3H,SMOD=1。,2. PC机通信软件PC机方面的通信程序可以用汇编语言编写,也可以用其它高级语言,例如VC、VB来编写。 本课程采用宏晶科技STC单片机下载软件 STC_ISP_V479。,习 题 1、 什么是串行异步通信?它有哪几种帧格式?2、 51系列单片机串行口有哪几种工作方式?波特率分别怎样确定 ?3、SBUF 的含义及作用是什么?4、编写两个单片机通信的程序,甲机的K1按键通过串行口通信控制乙机的一位数码管显示”A”,”B”,”C”,”D”;乙机的K2按键通过串行口通信控制甲机的LED闪烁。,