单片机多机串口通信.docx
摘要本文详细介绍了基于RS-485总线的单片机与多台单片机间的串行通信原理、实现方法和相应的通信硬件、软件设计.该设计是由单片机与单片机组成的主从限制系统,其中单片机做为上位机对下位单片机是实现限制和监视功能.它包括通信和限制两个功能模块.单片机作为下位机在整个系统中属于附属地位,主要用来接收上位机的命令.由于此通信的单片接口是RS232的9针接口,且下位机数目有限(32台).所以本设计采用了RS485总线以及RS232转RS485的协议芯片以满足长距离多机通信,本文讨论了总线接口转换、主从式通信协议设计方法,给出了采用中断式处理的通信过程流程图,并表达了设计过程中必备的绘图软件ProtelDXP的应用,以及编辑源代码软件keiluVisio2的应用实现了单片机对多个单片机组成采集终端的通信与治理.关键词:单片机单片机RS-485通信AbstractThecommunication、realizedmethodandcorrespondingdesignofhardwareandsoftwarebetween单片andmultipleMCUsbasedonRS-485isdescribedindetaiinthearticle.ThisdesignInstroducesapincipalandsubordinatecontrolsystemwhichiscomposedOf单片andsinglechip.Dividedfromitsfunction,itincludestwoparts:communicationandcontrol,inwhich单片isusedasmaster;andMCUsisusedasslavesoastoreceivethesingleorderfromthebusinterfaceconversionandthedesignofmaster-slavecommunicationprotocolisintroducedandTheprogramflowchartofcommunicationwithinterruptprocessisalsogiven.Intheprocessofdesign,theuseofunnecessarypaintersoftwareandcodeeditorsoftwareisdepictedsothatrealizethecommunicationandadministrationbetween单片andmultipleMCUswhichcomposedcollectionterminal.KeyWOrdS:单片MCUsRS-485communication目录摘要AbstractIl第一章绪论5第二章课题实施方案6系统硬件设计6系统软件设计7第三章硬件电路设计13C51单片机结构13100oh-FFFFh15三I/O端口16四定时器/计数器16五中断系统1751单片机引脚功能及其连接1751中断系统19C-51的串行通信20串行接口RS232结构与引脚功能25ProteIDXP2004原理图设计28Protel2004的根本操作28绘制原理图30制作芯片原理图库31第四章软件电路设计34系统的通信协议35C51编程实现单片机与单片机之间的串行通信35总结41致谢42参考文献43第一章绪论单片机由于其具有限制功能强、设计灵活和性能价格比高的特点.因此在工业限制领域得到了广泛的应用,在工业限制领域,计算机的数量有一台变为多台,多台计算机组成了多机系统,计算机分布关系可以分为紧密耦合和松散耦合,主从限制系统是一种松散式的多机系统,计算机之间由通信协议来联系.此时往往需要组成上位机对下位机的通讯系统,由一台上位机去限制多台下位机.主从控制就是一台功能较强的主机和32台左右的从机组成的多机系统.上位机一般是单片机,下位机一般是单片机系统,执行单片机与单片机串行通信的问题.本课题计算机的通信由上位机(主机)限制.主机向各个从机发送命令或者接受从机反应的信息,主机有权修改从机的参数,接受从机的数据,还可以查看从机的状态,可以说主机是主从限制的大脑.在本设计中主机用来监视或查看从机的状态,并向从机发送命令,在系统中起着主导地位.我们通过查看主机界面的状态即可响应的限制发送与接收.从机在系统中处于附属地位,是命令的执行者.从机之间不能直接联系,它们之间必须有主机这个桥梁联系.在设计中我们选用了单片机作为我们的主机,从机为单片机(我们本着可得,性价比采用此选择).但在选择中出现了通讯接口的问题,我们是串型通讯,在单片机和单片机之间,我们需要电平转换,而且考虑到工业运用问题我们需要考虑总的选用,在常用的RS232和RS485中,不能使用双端信号,因此要求使用较高的输出电压,而且其传输距离仅为15米.RS485通信接口的信号传输是用两根线之间的电压表示逻辑1和O的由于发送端两根传送线,而且接受接收端也是两根传送线.这样RS485接受和发送仅需要2根线就完成了传输.由于传输线采用了差动信道,所以它的干扰抑制性好,乂由于它的阻抗低无接地问题.传输距离可高达1200m,传输速度可达IMbPS比拟上面的数据,考虑工业要求,我们采用了RS485方式.第二章课题实施方案系统硬件设计系统全局图:c51单片机串行接口是一个可编程的全双工串行通信接口.它可用作异步通信方式UART),与串行传送信息的外部设备相连接,或用于通过标准异步通信协议进行全双工的C51多机系统也能通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口.C51单片机通过管脚RXD(,串行数据接收端)和管脚TXD(,串行数据发送端)与外界通信.SBUF是串行口缓冲存放器,包括发送存放器和接收存放器.它们有相同名字和地址空间,但不会出现冲突,由于它们两个一个只能被CPU读出数据,一个只能被CPU写入数据图2-1系统结构图在多媒体网络播送系统中,利用单片机与单片机够成的多机通信系统,采用主从式结构:主从限制多个从机,作为从机的单片机不主动发送命令或数据,一切都由主单片机限制;并且在一个多级系统中,只有一台主机,各台从机之间不能相互通信,即使有信息交换也必须通过主从转发.采用RS-485构成的多机通信系统原理框图、在总线末端接一个匹配电阻,吸收总线上的反射信号,使得正常传输信号无毛刺.匹配电阻的取值应该与总线的特性阻抗相当.在总线上没有信号传输时,总线处于悬浮状态,容易受干扰信号的影响.将总线上的差分信号的正端A+和负端B-之间接一网络.当总线上没有传输时,正端A+的电平大约为,负端B-的电平大约为,即使有干扰信号,也很难产生串行通信的起始信号0,从而增加了总线抗干扰的水平.在该系统中,由于采用MAX487差分平衡收发器芯片,半双工传输方式,因此驱动器可接的下位机根据需要最多可扩展至128个.系统软件设计(一)程序设计#include<>#indude<>#include<>#defineucharunsignedchar#defineuintunsignedintucharkey_bpard;ucharD_ADDR;voiddelay(inttt)(uchari;for(;tt>0;tt-)(for(i=0;i<2;i+);ucharGET_KEY(void)(ucharlin_onjin_tw;Pl=OXFO;if(PI&OxOf)!=OxfO)(delay(20);if(PI&OxOf)!=OxfO)(lin_on=Oxfe;while(lin_on&OxlO)!=0)(Pl=lin-on;if(PI&OxOf)!=OxfO)linJw=(PI&OXFO)|OXFO;return(lin_tw)+(lin_on);)else(lin_on=(lin_on«l)10x01;return(O);+voidchose_key(void)(uchari;Pl=OXFO;IF(PiaOxOf)IOxfO)i=GET_KEY();Pl=OXFO;while(PI&0xf0)!0xf0);)swich(i)case136:key_bpard=l;brake;case72:key_bpard=2;brake;case40:key_bpard=3;brake;case24:key_bpard=4;brake;case132:key_bpard=5;brake;case68:key_bpard=6;brake;case36:key_bpard=7;brake;case20:key_bpard=8;brake;case130:key_bpard=9;brake;case66:key_bpard=0;brake;case34:brake;case18:brake;case129:brake;case65:brake;case33:D_ADDR=OxO2;break;case17:D_ADDR=0×01;break;)voidsend-but(void)SBUF=D_ADDR;while(ITI);TI=O;SBUF=key_bpard;while(ITI);Tl=O;delay(3000);)voidmain(void)(IP=OxOO;TM0D=0×21;SCON=OxSO;PCON=OxOO;THI=OXfd;TR1=1;PS=I;EA=I;while(l)CHOSE_key();send_buf();)voidchose(void)interrput4using1(while(RI=O);P2=SBUF;RI=O;#include<>#include<>#include<>#defineucharunsignedchar#defineuintunsignedintucharcount;ucharrbuf3;ucharKEYWORD;uchartab10=0x40,0xf9f0xa4,0x60z0x99f0x92,0x82,0x(8,0x00,0×98;voiddelay(inttt)(uchari;for(;tt>0;tt-)(for(i=0;i<2;i+);voidmain(void)(IP=OXOO;TM0D=0x21;SCON=OxSO;PCON=OxOO;THI=Oxfd;TLI=Oxfd;TR1=1;PS=I;EA=I;ES=I;while(l)KEY_BORD=P1;delay;P2=tabrbufl;)voiddushu(void)interrupt4using1(WhiIe(RI=O);rbufcount=SBUF;RI=O;if(rbufO=O×OI)(count=count+l;if(count>l)(count=0;SBUF=KEY_BORD;while(!TI);TI=O;)else(count=0;)(二)通信协议设计为保证通信进行,首先做到单片机的串行口与主控机串行口的设置保持一致,即数据格式一致、通信波特率相同.如果是多点通信,每个从机要分配一个地址码.系统中协议有三种帧格式:呼叫帧、应答帧和数据帧.呼叫帧由主机发出.应答帧只能由从机发出.当从机收到呼叫帧后,把本机地址和当前状态回发给主机.设置开机自检、自诊断程序,机器不能带病工作:如果需要,还可以设置在工作空闲时或定时自检程序.单片机与单片机构成的多机通信系统采用主从结构.数据通信总是有主机发起.主机处于发送状态”说时从机总是处于“听”状态.假设主机发送的地址信息与本地从机相符,那么接受该数据,否那么,继续“听总线上的数据.假设从机需要发送数据,那么必须等到主机轮询本地从机时,才可以提出请求.这种网络模式下从机不会“侦听其他从机对主机的响应,这样就不会对其他从机产生错误的响应.主从式多机通信协议中,通信速率设为.系统上电或复位后,使所有从机的SM2位置1处于只接收地址帧监听状态.主机向从机发送一帧地址信息,从机接收到地址帧后,将其与本地地址比拟,判断是否一致.假设与本地地址相符,那么去除SM2,同时发送应答帧,进入通信状态;其他与本地地址不相符的从机那么保持SM2位不变,继续监听.主从机均以中断方式进行通信,程序流程如图2-2所示:图2-2通信流程图(三)多机发送是的分时说、听多机传送时,通信协议要合理地协调总线的分时公用,通信波特率的计算要有冗余.采用RS-485总线连接的多个站点,由于485总线是异步半双工的通信总线,在某一个时刻,总线只可能呈现一种状态,即任一时刻只有一个站点在“说",那么数据将在通信总线里碰撞,结果是处于接受状态的站点不能收到正确的数据.在RS-485总线通信网络中,必须限制好每个站点的“听、"说”状态,即收、发状态,对总线的使用权必须进行分配,以使各个从机的发送限制信号在时间上完全隔离,保证能及时、正确地传输数据.要做到总线上设备在时序上的严格配合,必须要遵从一下儿点:1 .复位时,主从机都应该处于接受状态.2 .限制端RE、DE的信号有效脉冲宽应该大于发送或接收一帧信号的宽度.3 .总线上所连接的各从机的发送限制信号在时序上完全隔开.通信方式一般是主节点循环轮询各个从节点.各个从节点都有自己的网络通信识别号,即本机地址.当朱节点的轮询信息中包含自己的网络通信识别号,此从节点对此帧进行应答,其他节点那么忽略此帧,不做处理.第三章硬件电路设计C51单片机结构> 一个8位CPU> 128字节特殊功能存放器(SFR)> 128字节数据存储器(RAM)> 4K字节内部程序存储器(ROM)> 两个16位定时器/计数器> 四组32位可编程的并行I/O端口> 一个串行通信端口> 中断限制系统> 内部振荡器和时钟电路> 系统总线C51单片机内部包含了作为微型计算机所必须的根本功能部件,各功能部件相互独立而融为一体,集成在同一块芯片上.C51内部结构如图3-1所示:-CPU结构(一)算术逻辑部件ALUC51的ALU是一个性能极强的运算器,能进行加、减、乘、除四那么运算,也可进行与、或、非等逻辑运算,还可以实现数据传送、移位、判断和程序转移等功能.(二)定时限制部件C)SCOSC是限制器的核心,能为限制器提供时钟脉冲.(三)专用存放器组1 .程序计数器单片程序计数器单片是一个二进制16位程序地址存放器(编码范围为OOoOH-FFFFH,共64KB),专门用来存放下一条需要执行的指令的内存地址,能自动加Io2 .累力口器ACC累加器ACC是一个专门用来存放操作数或运算结果的8位存放器.3 .通用存放器B通用存放器B是专门为乘法和除法设置的8位存放器,通常用来存放积的高8位或除法的余数.4 .程序状态字PSW程序状态字PSW是用来存放指令执行后有关状态的8位标志存放器,其各位的定义如图3-2所示:PSWOPSWIPSW2PSW3PSW4PSW5PSW6PSW7CyACFORSiRSoOVP图3-2程序状态字各位定义5.堆栈指针SPSP是一个8位存放器,能自动加、减1,专门用来存放堆栈的栈顶地址.遵循“先进后出,后进先出”的规律.6 .数据指针DPTRDPTR是一个16位的存放器,由两个八位存放器DPH和DPL拼装而成.主要用来存放存储器的地址,DPH用来存放高8位,DPL用来存放低8位.二ROM存储器C51内部仅有4KBROM存储器,地址范围为C)C)OoH-C)FFFHoc51可外接ROM,但一定保证片内和片外之和不能超过64KB(即C51有64KB的寻址区OoOoH-FFFFH),在4KB地址范围为OOOOH-OFFFH里还可供片外使用,其取决于限制线EA,如图3-3所示1000H-FFFFH外部ROMOOOOH-OFFFH片内ROMEA= 1片夕卜ROMEA=O图3-3程序存储器地址分配三I/O端口I/O段口是MCS-51单片机对外部实现限制和信息交换的必经之路,是一个过渡的集成电路,用于信息传送过程中的速度匹配和增强他的负载水平.(1)并行I/O端口C51有四个并行I/O端口,分别命名为Po、PkP2和P3,在这四个并行I/O端口中,每个端口都有双向I/O功能.每个端口内部都有一个八位数据输出锁存器和一个八位数据输入缓冲器.四个并行I/O端口作为通用I/O使用是,共有写端口、读端口和读引脚三种操作方式.写端口就是输出数据,是把累加器A或其他存放器中数据传送到端口锁存器中,然后由端口自动从端口引脚线上输出,读端口是把端口锁存器中输出数据读到CPU的累加器.读引脚是输入外部数据的操作,是从端口引脚线上读入外部的输入数据.(2)串行I/O端口C51有一个全双工的可编程串行I/O端口.这个串行I/O端口既可以在程序控制下把CPU的八位并行数据变成串行数据一位一位地从发送数据线Txd发送出去,也可以把串行接收到数据变成八位并行数据送给CPU,而且这种串行发送和串行接受可以单独进行,也可以同步进行.C51串行发送和串行接收利用了P3口的第二功能,即引脚作为串行数据的发送线TXd和引脚作为串行数据的接收线Rxdo串行I/O口的电路结构还包括串行口限制存放器SCON、电源及波特率选择存放器单片ON和串行数据缓冲器SBUF等.四定时器/计数器C51内部有两个16位可编程的定时器/计数器,命名为To和Ti,都由两个8位存放器TH和TL拼装而成.定时器/计数器To和Ti有定时器和计数器两种工作模式.在定时模式下,T.、Ti的计数脉冲可以有单片机时钟脉经12分频后提供,故定时时间和单片机时钟频率有关.在计数模式下,T.、Ti的计数脉冲可以从和引脚上输入.五中断系统中断是指CPU暂停原程序执行转而为外部设备效劳(执行中断效劳程序),并在效劳完后回到原程序执行的过程.中断系统是指能够处理上述中断过程所需要的那局部电路.C51有三个内部中断源和两个外部中断源内部中断源是指两个定时器/计数器中断源和一个串行口中断源,串行口中断源是在串行口每发送完一个八位二进制数据或接受到一组输入数据八位后自动向中断系统提出的.外部中断源通常指外部设备其产生的中断请求信号可以从和(即INTo和INTi)引脚上输入.51单片机引脚功能及其连接一MCS-51单片机引脚功能引脚如图3-4所示0F>1 J F>1 23 F> 1 .-4F>1 .5 F> 1 .6 Pl .7 RST P3.0 F>3.1P3J2 P3 (RXD) 3 F>3 -4 (TXO> F>3.5 (INTO) f=>3,6 (INTI )(T0) F>3.72234m 2345678?二-12LJUIjUU匚 UL 一匚匚 ULJ 匚 UUUUULJ 匚 Dnnnnmnnnnnnnnnnnnn 0987654320987G54321x/ccRO 0 (AOO)q ODDDO>AAAAA AA:0。0§ §Ir->SATX.(二51I,JIJJAJdIU夕i一1:>1P4.图3-4单片机引脚图(一)端口线4*8=32条)1.Po一:功能a:不带片外存储器,P。可以作为通用I/O口使用,一用于传送CPU的输入/输出数据,此时,输入缓冲、输出锁存,不须外接专用锁存器.功能b:带片外存储器,一在CPU访问片外存储器时显示用于传送片外存储器的低8位,然后传送CPU对片外存储器的读写数据.口(一):通用I/O口,用于传送CPU的输入/输出数据.口(一):功能a:通用I/O口,用于传送CPU的输入/输出数据.功能b:与Po口引脚的第二功能相配合,用于输出片外存储器的高8位地址,共同选中片外存储器单元,但并不能像Po口那样还可以传送存储器的读写数据.4.P3口(一):功能a:通用I/O口,用于传送CPU的输入/输出数据.功能b:限制功能端如下表:RXD(串行口输入)TXD(串行口输出)INTO(外部中断0输入)INT1(外部中断1输入)TO(定时计数器0的外部输入)T1(定时计数器1的外部输入)WR(片外数据存储器写选通)RD(片外数据存储器读选通)(二)电源线(2条)Vcc为+5V电源线,Vss为接地线.(三)限制线(6条)1. .ALE/丽赢1址锁存允许/编程线,配合PO引脚的第二功能使用.在访问片外存储器是,C51CPU在一引脚线上输出片外存储器低8位地址的同时还在ALE/PR65砥上输出一个高电位脉冲,用于把这个片外存储器第8位地址锁存到外部专用地址锁存器,一边空出一引脚线去传送随后而来的片外存储器读写数据.在不访问片外存储器时,c51自动在ALE/PROG线ZE输出频率为fosc/6的脉冲序列.2. .Ea/Vpp:允许访问片外存储器/编程电源线.3. PSEN:片外RoM选通线,在执行访问片外ROM的指令MoVC时,c51自动在PWN瓯h产生一个负脉冲,用于为片外ROM芯片的选通.4. RST/VPp:复位/备用电源线,可以使C51处于复位工作状态.5. XTAL1和XTAL2:片内振荡电路输入线.如图3-5所示51中断系统中断是指计算机暂时停止原程序执行转而为外部设备效劳,并在效劳完后自动返回原程序执行的过程.中断由中断源产生,中断源在需要时可以向CPU提出“中断请求.“中断请求通常是一种电信号,CPU一旦对这个电信号进行检测和响应便可自动转入该中断源的中断效劳程序执行,并在执行完后自动返回原程序继续执行,并且中断源不同中断效劳程序的功能也不同.中断系统是指能够实现中断功能的那局部硬件电路和软件程序,对于MCS-51单片机,大局部中断电路都是集成在芯片内部的(即内部中断,包括定时器溢出中断源2个和串行口中断源),只有INT。和INT中断输入线上的中断请求信号产生电路才分散在各中断源电路或接口芯片电路里(即外部中断).而本工程中使用的是串行口中断源.C51的串行通信串行通信是一种能把二进制数据按位传送的通信,故它所需传输线条数极少,特别适用于远程通信之中.一串行通信根底(一)异步通信中的字符帧字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等四局部组成.在串行通信中,发送端一帧一帧发送信息,接收端一帧一帧接收信息.两相邻字符帧之间可以无空闲位,也可以由假设干空闲位,自行定义.图3-7表示每一帧的结构:8位数据起始位奇偶校验停止位0DOD1D2D3D4D5D6D70/11第n字符帧(共11位)图3-7帧结构(二)波特率定义是每秒传送二进制数码的位数,单位是bps位/秒),用于表征数据传输的速度,波特率越高,数据传输速度越快.而实际的字符传输速率是以帧/秒来衡量.(三)通信制式1 .半双工制式:A、B只能是一个发送,一个接收,即一条信号线和一条接地线.2 .全双工制式:A、B两站间有两个独立的通信回路,两站都可以同时发送和接收数据,其两站间至少需要三条传输线:一条用于发送,一条用于接收和一条用于信号地.ZlC-51的串行接口(一)串行口限制存放器SCON和单片ONC-51对串行的限制是通过SCON实现的,也和电源限制存放器单片ON有串行口限制存放器SCoN决定串行口通信工作方式,限制数据的接收和发送,并标示串行口的工作状态等.其位格式为图3-8所示:9FH9EH9DH9CH9BH9AH99H98H3vio3VI1942RENIB8RB8TlRl$CON(98H)SMoSMi相应工作方式说明所用波特率00方式0同步移位存放器fosc/1201方式110位异步收发由定时器限制10方式211位异步收发fosc/52或fosc上411方式311位异步收发由定时器限制图3-8特殊功能存放器SCON其中fosc为晶振频率SM2:多机通讯限制位.在方式0吐SM2一定要等于0.在方式1中,当(SM2)=1那么只有接收到有效停止位时,Rl才置1.在方式2或方式3当(SM2)=1且接收到的第九位数据RB8=0时,Rl才置1.REN:接收允许限制位.由软件置位以允许接收,乂由软件清0来禁止接收.TB8:是要发送数据的第9位.在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0.例如,可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位.RB8:接收到的数据的第9位.在方式.中不使用RB8.在方式1中,假设(SM2)=0,RB8为接收到的停止位.在方式2或方式3中,RB8为接收到的第9位数据.Tl:发送中断标志.在方式。中,第8位发送结束时,由硬件置位.在其它方式的发送停止位前,由硬件置位.Tl置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据.Tl必须用软件清OoRl:接收中断标志位.在方式0,当接收完第8位数据后,由硬件置位.在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说明).Rl置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知.Rl也必须用软件清0.1.方式0在方式。下,串行口的SBUF是作为同步的移位存放器用的.在串行口发送时,“SBUF(发送)”相当于一个并入串出的移位存放器,由C-51的内部总线并行接收8位数据,并从TxD线串行输出此时是在TI=O下进行的CPU通过指令给“SBUF(发送)"送出发送字符后,RxD线上即可发出8位数据,8位数据发送完后Tl由硬件置位,并可向CPU请求中断,CPU响应中断后先用软件使Tl清零,然后再给“SBUF(发送)”送下一帧的数据.在接收操作时,“SBUF(接收)”相当于一个串入并出的移位存放器,从RXD线接收一帧串行数据并把它并行的送入内部总线,此时RI=ORREN=1,接收电路接收到8位数据后,Rl自动置1并发出串行口中断请求,CPU响应后Rl由软件复位.2方式1在方式1下,串行口设定为10位异步通信方式,字符帧中除8位数据外,还可有一位起始位和一位停止位.发送操作时,=0,执行指令后,发送电路就自动在8位发送字符前后分别添加一位起始位和一位停止位,并在移动脉冲作用下在TxD线上依次发送一帧信息,发送完后自动维持TxD线高电平.也由硬件在发送停止位时置位,并由软件将它复位.接收操作时,印=0且REN=1,接收电路对高电平的RxD线采样,当接收电路连续8次采样到RXD线为低电平时,相应的检测器便可确认RXD线上有了起始位,在接收数据第9位时,当Rl=O和SM2=0或接收到的停止位为1,才能把接收到的8位字符存入“SBUF(接收)”中,把停止位送入RB8,并使RI=I和发出串行口中断请求,假设上述条件不满足,那么数据被舍去.3方式2和方式3方式2和方式3都是11位异步收发.两者的差异仅在于通信波特率有所不同方式2的波特率由C51主频f。SC经32或64分频后提供;方式3的波特率有定时器Tl或T2的溢出率经32分频后提供,故它的波特率是可调的.方式2和方式3的发送过程和接收过程类似于方式1,只是在发送数据第9位时,将之预先装入SCON的TB8中,而第9位可由用户自定义.一帧数据发送完后,TI=I,CPU便可通过查询Tl来以同样方法发送下一个字符帧.方式2和方式3的接收过程也和方式1类似.所不同的是:方式1时RB8中存放的是停止位,方式2和方式3时RB8中存放的是数据第9位.因此,方式2和方式3时必须满足接收有效字符的条件变为:Rl=O和SM2=0或者收到的第9位为1,只有上述条件同时满足时接收到的字符才能送入SBUF悌9位数据位才能装入RB8中,并使川:1.电源限制存放器单片ON中只有一位SMOD与串行口工作有关,它的位格式为图3-9所不:PCON(g7H)D7D6D5D4D3D2DlDCrlSMQDIGF1GFOPD图3-9电源限制存放器单片ONSMoD:波特率倍增位.串行口工作在方式1、方式2、方式3时,假设SMC)D=I,那么波特率提升一倍;假设SMoD=O,那么波特率不提升一倍.(二)串行口的通信波特率串行口的通信波特率恰好反映串行口传输数据的速率,通信波特率的选用,不仅和所选通信设备、传输距离有关,还受传输线状况所制约.波特率设计1、方式.的波特率工作方式O时,移位脉冲由机器周期的第6个状态周期S6给此每个机器周期产生一个移位脉冲,发送或接收一位数据.因此,波特率是固定的,为振荡频率的1/12,不受单片ON存放器中SMOD的影响.用公式表示为:工作方式O的波特率二fosc/12(式)2、方式2的波特率工作方式2时,移位脉冲由振荡频率fosc的第二节拍P2时钟(即fosc2)给出,所以,方式2波特率取决于单片ON中的SMOD位的值,当SMODR时,波特率为fosc的1/64;当SMOD211时,波特率为fosc的1/32,用公式表示为;工作方式2波特率二(2smo764)Xfosc(式)3、工作方式1和方式3的波特率在这两种方式下,串行口波特率是由定时器的溢出率决定的,因而波特率也是可变的.相应公式为:定时器TI溢出率二(fosc/12)*1/初值)(式)实际上定时器Tl波特率二(2s×od32) *定时器TI溢出率(式)通常采用方式2,由于定时器Tl在方式2下工作,TH1和TLl分别设定为两个8位重装计数器.表3-1固定波特率与存放器状态波特率f<bcSMOD定时器TlC/T所选方式相应初值串行口方式O6Mhz*串行口方式26Mhz1*方式1或36Mhz102FEH6Mhz102FDH6Mhz002FDH6Mhz002FAH6Mhz002F4H6Mhz002E8H1106Mhz00272H556Mhz002FEEBH(三)串口工作方式2、C的发送接收时序串口工作方式2、3的发送、接收时序如图3-11所示.串行C厉式2和方式3均为“位异步通颗口.SENDTILjUIuUlLiLIIlLljlLffl图3-11发送接收时序图串行接口RS232结构与引脚功能RS232是个人计算机上的通信接口之一,由电子工业协会(EleetrOniCIndustriesAssociation,EIA)所制定的异步传输标准接口.通常RS-232接口以9个引脚(DB-9)或是25个引脚(DB-25)的型态出现如图3-12所示.(这里我们运用DB-9,其针孔意义如图3-13所示)在多数情况下主要使用主通道,对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线.RS-232标准规定的数据传输速率为每秒150、300、600、1200、2400、4800、9600、19200波特.RS-232标准规定,驱动器允许有2500pF的电容负载,通信距离将受此电容限制,例如,采用150pFm的通信电缆时,最大通信距离为15m;假设每米电缆的电容量减小,通信距离可以增加.传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于15m以内的通信,因此单片机无法直接对多个的通信.同时RS232是点对点(即只用一对收、发设备)F位机进行远距离通信.SGTRkD>>>>>>告巧RDT3Dno5-6 7 8 9联载波检测一藤八据发送数据数据终端准备完fiF-S号i磁数据准备完成一图3-12 9针、25针接口图3-13 9针管脚意义RS232的电器特性、逻辑电平和各种信号线功能的规定.在TxD和RxD上:逻辑1:-3V-15V逻辑O:+3V+15V发送数据(TXD)通过TxD终端将串行数据发送到MODEM,(DTEtDCE).接收数据(RXD)-通过RxD线终端接收从MODEM发来的串行数据,(DCEtDTE).以上规定说明了RS232标准对逻辑电平的定义.对于数据(信息码):逻辑“1的电平低于3V,逻辑“0的电平高于+3V.也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于3+3V之间的电压无意义,低于15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在士(315)V之间.RS232与TTL转换:RS232是用正负电压来表示逻辑状态,与TTL以上下电平表示逻辑状态的规定不同.因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIARS-232c与TTL电路之间进行电平和逻辑关系的变换.实现这种变换的方法可用分立元件,也可用集成电路芯片.今使用MAX3162芯片以实现电平间的转换.图375两线制总线拓扑式结构与RS232相比拟RS485有以下几个特点:1. RS-485的电气特性:逻辑“1以两线间的电压差为+(2-6)V表示:逻辑“0”以两线间的电压差为(2-6)V表示.接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接.2. RS-485的数据最高传输速率为10MbPS3. RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干水平增强,即抗噪声干扰性好.4. RS-485最大的通信距离约为1219M,最大传输速率为IOMb/S,传输速率与传输距离成反比,在IooKb/S的传输速率下,才可以到达最大的通信距离,如果需传输更长的距离,需要加485中继器.RS-485总线一般最大支持32个节点,如果使用特制的485芯片,可以到达128个或者256个节点,最大的可以支持到400个节点.因RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站水平等上述优点就使其成为首选的串行接口.由于RS485接口组成的半双工网络,一般只需二根连线,所以RS485接口均采用屏蔽双绞线传输.Pro