




免费预览已结束,剩余29页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
综合开发实验基于停等式协议的rs232双机通信系统基于停等式协议的rs232双机通信系统设计报告摘要:串行通信是单片机的一个重要应用。本次综合开发实验就是要利用单片机来完成一个系统,实现双片单片机串行通信。通信的结果实用数码管进行显示,为便于观察理解停等式arq协议,分别在主从机设置了一个确认按键和从发按键。两个单片机之间采用rs232进行双机通信。在通信过程中,使用停等式arq通信协议进行通信。关键字:通信 单片机 停等式arq rs232 串行通信一、总体设计31.设计思想32.设计方案33停等式arq协议原理3二、硬件设计71.51单片机串行通信功能72.max232芯片93.数码管的选择104.电源模块125rs232串行线126.整体电路设计13三、软件设计141.串行通信软件实现142奇偶校验的软件实现153.程序流程图17发送端程序流程图17接收方程序流程图184程序设计算法:185c51程序19四、加电调试30五、改进与不足33六、元件清单34一、总体设计1.设计思想:两片单片机之间进行串行通信,发送端通过按键将18发送到接收端,并在接收端显示。同时在发端进行定时,黄灯亮,等待确认信息,5秒后重发,蜂鸣器响。收端收到后进行奇偶校验并点亮相应的灯(正确的绿灯、错误的红灯)。收端通过确认按键将确认信息发送到发端,发端点亮相应的灯,若传输出错,则发端通过重发按键重发。2.设计方案:本次设计,对于两片89c51,采用rs232进行双机通信。发送方的数据由串行口txd段输出,经过电平转换芯片max232将ttl电平转换为rs232电平输出,经过传输线将信号传送到接收端。接收方也使用max232芯片进行电平转换后,信号到达接收方串行口的接收端。接受方接收后,在数码管上显示接收的信息。为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。软件部分,通过通信协议进行发送接收,为实现方便,本系统采用较为简单的停等式arq协议,由于一次放送的信息较少,只用一个8位二进制数,所以采用无连接方式,主机通过按键判断要发送的数值并发送给收端,相应led灯亮,指示灯亮黄灯,表示等待确认,计数器开始计数,5秒后重发。收端收到后进行奇偶校验,相应的指示灯亮,若正确则数码管显示相应的数值,否则显示0,。若正确,收端通过按键将0xff发送给发端,表示正确接收,一次通信结束。否则发送0x00表示不正确,等待重发3停等式arq协议原理:自动重传请求(auto repeat request),通过接收方请求发送方重传出错的数据报文来恢复出错的报文,是通信中用于处理信道所带来差错的方法之一;另外一个方法是信道纠错编码。 传统自动重传请求分成为三种,即停等式(stop-and-wait)arq,回退n帧(go-back-n)arq,以及选择性重传(selective repeat)arq。后两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大时,帧在线路上可以连续地流动,因此又称其为连续arq协议。三者的区别在于对于出错的数据报文的处理机制不同。 在停等式arq中,数据报文发送完成之后,发送方等待接收方的状态报告,如果状态报告报文发送成功,发送后续的数据报文,否则重传该报文。 停等式arq,发送窗口和接收窗口大小均为1,发送方每发送一帧之后就必须停下来等待接收方的确认返回,仅当接收方确认正确接收后再继续发送下一帧。该方法所需要的缓冲存储空间最小,缺点是信道效率很低。 在回退n帧的arq中,当发送方接收到接收方的状态报告指示报文出错后,发送方将重传过去的n个报文。 回退n,发送窗口大于1,接收窗口等于1。允许发送方可以连续发送信息帧,但是,一旦某帧发生错误,必须重新发送该帧及其后的n帧。这种方式提高了信道的利用率,但允许已发送有待于确认的帧越多,可能要退回来重发的帧也越多。 在选择性重传arq中,当发送方接收到接收方的状态报告指示报文出错,发送方只发送传送发生错误的报文。 选择重传协议,发送窗口和接收窗口都大于1。发送方仅重新传输发生错误的帧,并缓存错误帧之后发送的帧。与回退n相比,减少了出错帧之后正确的帧都要重传的开销。 三种arq协议中,复杂性递增,效率也递增。 除了传统的arq,还有混合arq(hybrid-arq)。在混合arq中,数据报文传送到接收方之后,即使出错也不会被丢弃。接收方指示发送方重传出错报文的部分或者全部信息,将再次收到的报文信息与上次收到的报文信息进行合并,以恢复报文信息。 在现代的无线通信中,arq主要应用在无线链路层。比如,在wcdma和cdma2000无线通信中都采用了选择性重传arq和混合arq。 优点:比较简单 。 缺点:通信信道的利用率不高,也就是说,信道还远远没有被数据比特填满。实用的数据链路层协议应考虑到:传输数据的信道不是可靠的(即不能保证所传的数据不产生差错),并且还需要对数据的发送端进行流量控制。在传输过程中不出差错的情况下,接收方在收到一个正确的数据帧后即交付给主机b,同时向主机a发送一个确认帧ack。当主机a收到确认帧ack后才能发送一个新的数据帧,这样就实现了接收方对发送方的流量控制。现在假定数据帧在传输过程中出现了差错。由于通常都在数据帧中加上了循环冗余校验crc,所以节点b很容易检验出收到的数据帧是否会有差错。当发现差错时,节点b 就向主机a发送一个否认帧nak,以表示主机a应当重发出现差错的那个数据帧。如多次出现差错,就要多次重发数据帧,直至收到节点b发来的确认帧ack为止。为此,在发送端必须暂时保存已发送过的数据帧的副本。当通信质量太差时,主机a在重发一定的次数后即不再进行重发,而是将此情况向上一层报告。 有时链路上的干扰很严重,或由于其他一些原因,节点b收不到节点a发来的数据帧,这种情况称为帧丢失。发送帧丢失时节点b当然不会向节点a发送任何应答帧。如果节点a要等到节点b的应答信息后再发送下一个数据帧,那么将永远等待下去,于是就出现了死锁现象。同理,若节点b发过来的应答帧丢失,也会出现这种死锁现象。要解决死锁问题,可在节点a发送完一个数据帧时就启动一个超时定时器。若在超时定时器所设置的定时时间t到了仍收不到节点b的任何应答帧,则节点a就重传前面所发送的这一数据帧。显然,超时定时器设置的定时时间应仔细选择确定。若定时时间选得太短,则还没有收到应答帧就重发了数据帧。若定时选得太长,则要白白浪费许多时间。一般可将定时时间选为略大于从发完数据帧到收到应答帧所需的平均时间。 然而问题并没有完全解决。如果丢失的是应答帧,超时重发将使主机b收到两个同样的数据帧。由于主机b无法识别重复的数据帧,因而在主机b收到的数据中出现了另一种差错-重复帧。要解决重复帧的问题,必须使每一个数据帧带上不同的发送序号。每发送一个新的数据帧就把它的发送序号加1。若节点b收到发送序号相同的数据帧,就表明出现了重复帧。节点b应当丢弃这重复帧,并向节点a发送一个确认帧ack,因为节点 b已经知道节点a还没有收到上一次发过去的确认帧ack(有可能此确认帧在传输过程中出错)。 任何一个编号系统的序号所占用的比特数一定是有限的。因此,经过一段时间后序号就会重复。例如,当发送序号占3比特时,共有8个不同的发送序号,从000到111。 当数据帧的发送序号为111时,下一个发送序号就又是000。因此要进行编号就要考虑序号到底要占用多少比特。序号占用的比特数越少,数据传输的额外开销就越小。对于停止等待协议,由于每发送一个数据帧就停止等待,因此用一比特来编号就够了。这样,数据帧中的发送序号(以后记为n(s),s表示发送)就以0和1交替的方式出现在数据帧中。每发一个新的数据帧,发送序号就和上次发送的不一样。用这样的方法就可以使接收方能够区分开新的数据帧和重发的数据帧了。二、硬件设计1.51单片机串行通信功能图1.stc89c52计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。51单片机的串行接口是一个全双工的接口,它可以作为uart(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:(1)数据缓冲器(sbuf)接受或发送的数据都要先送到sbuf缓存。有两个,一个缓存,另一个接受,用同一直接地址99h,发送时用指令将数据送到sbuf即可启动发送;接收时用指令将sbuf中接收到的数据取出。(2)串行控制寄存器(pcon)scon用于串行通信方式的选择,收发控制及状态指示,各位含义如下:sm0sm1sm2rentb8rb8tirism0,sm1:串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、1、2、3。串行接口工作方式特点见下表sm0sm1工作方式功能波特率 0008位同步移位寄存器(用于i/o扩展)forc/1201110位异步串行通信(uart)可变(t1溢出率*2smod/32)10211位异步串行通信(uart)forc/64或forc/3211311位异步串行通信(uart)可变(t1溢出率*2smod/32)sm2:多机通信控制位。ren:接收允许控制位。软件置1允许接收;软件置0禁止接收。tb8:方式2或3时,tb8为要发送的第9位数据,根据需要由软件置1或清0。rb9:在方式2或3时,rb8位接收到的第9位数据,实际为主机发送的第9位数据tb8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。ti:发送中断标志。发送完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续发送。ri:接收中断标志。接收完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续接收。(3)输入移位寄存器接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收sbuf中。(4)波特率发生器波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器t1作为波特率发生器,t1设置在定时方式。波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。(5)电源控制寄存器pcon其最高位为smod。(6)波特率计算当定时器t1工作在定时方式的时候,定时器t1溢出率=(t1计数率)/(产生溢出所需机器周期)。由于是定时方式,t1计数率= forc/12。产生溢出所需机器周期数=模m-计数初值x。2.max232芯片用8051串行接口通信,如果两台8051单片机之间的距离很近(不超过1.5m),可以采用直接将两台8051单片机的串行接口直接相连,利用其自身的ttl电平(0-5v)直接传输数据信息。如果传输距离较远(超过1.5m),由于传输线的阻抗与分布电容,会产生电平损耗和波形畸变,以至于检测不出数据或数据出错。此时可利用 rs232标准总线接口,将单片机输出的ttl电平转换为rs232标准电平(逻辑1为-15-5v;逻辑0为+5-+15v)。用rs232可将传输距离提高到15m,如果想远距离传输,可以采用rs422或者rs485。该产品是由德州仪器公司( ti )推出的一款兼容 rs232 标准的芯片。由于电脑串口 rs232 电平是 -10v +10v ,而一般的单片机应用系统的信号电压是 ttl 电平 0 +5v,ma x232 就是用来进行电平转换的 ,该器件包含 2 驱动器、 2 接收器和一个电压发生器电路提供 tia/eia-232-f 电平。该器件符合 tia/eia-232-f 标准,每一个接收器将 tia/eia-232-f 电平转换成 5-v ttl/cmos 电平。每一个发送器将 ttl/cmos 电平转换成 tia/eia-232-f 电平。其主要特点如下:1 、单 5v 电源工作2 、 linbicmostm 工艺技术3 、 两个驱动器及两个接收器4 、 30v 输入电平5 、低电源电流:典型值是 8ma6 、符合甚至优于 ansi 标准 eia/tia-232-e 及 itu 推荐标准 v.287 、 esd 保护大于 mil-std-883 (方 法 3015 )标准的 2000v图2.电平转换芯片max2323.数码管的选择七段数码管引脚图数码管使用条件:a、段及小数点上加限流电阻b、使用电压:段:根据发光颜色决定; 小数点:根据发光颜色决定c、使用电流:静态:总电流 80ma(每段 10ma);动态:平均电流 4-5ma 峰值电流 100ma数码管使用注意事项说明:()数码管表面不要用手触摸,不要用手去弄引角;()焊接温度:度;焊接时间:()表面有保护膜的产品,可以在使用前撕下来。这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有led的阳极连接到共同接点com,而每个led的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有led的阴极连接到共同接点com,而每个led的阳极分别为a、b、c、d、e、f、g及dp(小数点),如下图所示。图中的8个led分别与上面那个图中的adp各段相对应,通过控制各个led的亮灭来显示数字。 那么,实际的数码管的引脚是怎样排列的呢?对于单个数码管来说,从它的正面看进去,左下角那个脚为1脚,以逆时针方向依次为110脚,左上角那个脚便是10脚了,上面两个图中的数字分别与这10个管脚一一对应。注意,3脚和8脚是连通的,这两个都是公共脚。4.电源模块:为使用方便,本系统采用usb供电,使用一片7805来提供稳定的5v电源,防止加电的瞬间产生较大的电抖动,影响系统性能。5rs232串行线:rs-232c 标准(协议)的全称是 eia-rs-232c 标准,其中eia (electronic industry association)代表美国电子工业协会,rs(recommeded standard)代表推荐标准,232是标识号,c代表rs232的最新一次修改(1969),在这之前,有rs232b、rs232a。它规定连接电缆和机械、电气特性、信号功能及传送过程。 电气特性eia-rs-232c 对电器特性、逻辑电平和各种信号线功能都作了规定。 在txd和rxd上: 逻辑1(mark)=-3v-15v 逻辑0(space)=+3+15v 在rts、cts、dsr、dtr和dcd等控制线上: 信号有效(接通,on状态,正电压)+3v+15v 信号无效(断开,off状态,负电压)=-3v-15v 以上规定说明了rs-323c标准对逻辑电平的定义。对于数据(信息码):逻辑“1”(传号)的电平低于-3v,逻辑“0”(空号)的电平高于+3v;对于控制信号;接通状态(on)即信号有效的电平高于+3v,断开状态(off)即信号无效的电平低于-3v,也就是当传输电平的绝对值大于3v时,电路可以有效地检查出来,介于-3+3v之间的电压无意义,低于-15v或高于+15v的电压也认为无意义,因此,实际工作时,应保证电平在(315)v之间。 eia rs-232c 与ttl转换:eia rs-232c 是用正负电压来表示逻辑状态,与ttl以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的ttl器件连接,必须在eia rs-232c 与ttl电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如mc1488、sn75150芯片可完成ttl电平到eia电平的转换,而mc1489、sn75154可实现eia电平到ttl电平的转换。max232芯片可完成ttleia双向电平转换。6.整体电路设计最终设计电路如下图3所示,发送方的数据由串行口txd段输出,经过电平转换芯片max232将ttl电平转换为rs232电平输出,经过传输线将信号传送到接收端。接收方也使用max232芯片进行电平转换后,信号到达接收方串行口的接收端。接受方接收后,通过p0口在数码管上显示接收的信息。图3.串行通信电路三、软件设计通过通信协议进行发送接收,发送端通过按键将18发送到接收端,并在接收端显示。同时在发端进行定时,黄灯亮,等待确认信息,5秒后重发,蜂鸣器响。收端收到后进行奇偶校验并点亮相应的灯(正确的绿灯、错误的红灯)。收端通过确认按键将确认信息发送到发端,发端点亮相应的灯,若传输出错,则发端通过重发按键重发。1.串行通信软件实现(1)串行口工作于方式3;采用恒定的波特率。(2)功能:通过主机的按键,将数值发送到从机,并由通信协议保证通信的可靠性。(3)通信协议:停等式arq协议(4)通信过程使用第九位发送奇偶校验位。(5)从机接收到一个数据后,立即进行奇偶校验,若数据没有错误,则返回00h,否则返回ffh。(6)主机发送一个数据后,等待从机返回数据;若为00h,则继续发送下一个数据,若为ffh,则重新发送数据。2奇偶校验的软件实现stc89c52单片机的串行口有种工作方式。方式为移位寄存器方式,用于外接同步设备或扩展口,不算起始位和停止位。方式为位异步串行通讯,方式和方式为位异步串行通讯。方式和方式中的第位是可程控位,即可由软件来确定第位是“”还是“”。也就是说,stc89c52单片机不像某些专用串行芯片,如、等那样,可根据初始化条件自动加入串行通讯中的奇偶校验位发送出去,而是需要软件参与产生奇偶校验位。用软件产生奇偶校验位是根据stc89c52单片机的状态寄存器的定义:当累加器中为的个数为奇数时,否则,来编程的。假定待发送的数据已放入累加器中,可用如下汇编语言来实现(串行口工作于方式): ,; 把奇偶标志送给进位位 ,; 把进位位送给 ,; 把待发送的数据放入串行口 用语言来编写时,因累加器对编程者不透明,则会带来问题。例如,假定待发送的数据已放入变量中,若要从串行口发送出去,想当然地认为使用如下语句即可: ; *语句* *语句* 实际上,条语句并不能可靠地产生奇偶校验位。因为在语句前面的语句所对应的汇编语言中的累加器中为的个数是不确定的,而语句又是不可分割的。语句和对应的汇编语言程序为: ,; 语句 ,; 语句 ,; 语句 ,; 语句 可以看出,只有将语句、放到语句和语句之间时,才能正确地产生奇偶校验位。为了达到这一目的,可引入全局变量相应的语言程序如下: ; * 语句* ; * 语句* ; *语句 * ; *语句* 需要强调的是: 在串行中断服务程序中,一定要设置为全局变量,若设置为局部变量,则可能引起意想不到的后果。 语句和语句尽量不要缩写成: ; * 语句* 而把全局变量省掉。这主要是为了防止编译程序在某种可能的编译优化条件下将语句也省略掉。3.程序流程图发送端程序流程图扫描按键程序初始化主机发送数据,检验和输出完成?n清除标志位相应的灯亮,数码管计时主程序开始收端正确应答结束是否接收方程序流程图主程序开始检验和相等?程序初始化接收数据,计算检验和n发送00h至主机接收完成?n清除标志位发送ffh,重新接收显示4程序设计算法:主机:1、 while(1),初始化,开中断2、 while,循环检测电键动作,直到有电键按下3、 if有电键按下,相应灯亮,记录键值,便于需要时重发,向从机发送相应的数字数码管开始计数,超时后重发,等确认等亮4、 while(!ti)等待传输结束5、 while(!ri)等待接收确认结束6、 判断传输是否正确7、 若正确,正确灯亮,等待灯灭,进入下一循环8、 若不正确,错误灯亮,等确认灯灭9、 循环检测重发按键状态10、若按下,错误灯灭,等待灯亮,蜂鸣器响重发,转到5从机:1、 while(1)大循环,初始化,开中断2、 while(1)ri等待接收结束3、 若正确,正确灯亮,数码管显示相应数字,置sbuf寄存器为正确值4、 若不正确,错误灯亮,置寄存器sbuf为错误值5、 while,ti等待传输结束5c51程序:主机:#include#define uchar unsigned char void init();void send(uchar);void delay(int); /延时1msuchar code tab9 =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f;uchar i,sum;int j;sbit key0 = p10;sbit key1 = p11;sbit key2 = p12;sbit key3 = p13;sbit key4 = p14;sbit key5 = p15;sbit key6 = p16;sbit key7 = p17;/bit key = key0,key1,key2,key3,key4,key5,key6,key7; c51不能进行位寻址sbit led0 = p20;sbit led1 = p21;sbit led2 = p22;sbit led3 = p23;sbit led4 = p24;sbit led5 = p25;sbit led6 = p26;sbit led7 = p27;sbit waiting = p32;sbit right = p33;sbit error = p34;sbit beep = p35;sbit key_resend = p36;uchar keytag = 10; /记录按下的电键uchar var = 0; /用于实现奇偶校验,具体见报告void main() uchar i; while(1)while(1) if(key0=0)delay(10); /延时10ms,去抖动if(key0=0) /电键确实被按下keytag = 0;break;else if(key1=0)delay(10);if(key1=0)keytag = 1;break;else if(key2=0)delay(10);if(key2=0)keytag = 2;break;else if(key3=0)delay(10);if(key3=0)keytag = 3;break;else if(key4=0)delay(10);if(key4=0)keytag = 4;break;else if(key5=0)delay(10);if(key5=0)keytag = 5;break;else if(key6=0)delay(10);if(key6=0)keytag = 6;break;else if(key7=0)delay(10);if(key7=0)keytag = 7;break; init();switch(keytag) /根据按下的电键,点亮相应的灯,并发送数据case 0:led0 = 0;break;case 1:led1 = 0;break;case 2:led2 = 0;break;case 3:led3 = 0;break;case 4:led4 = 0;break;case 5:led5 = 0;break;case 6:led6 = 0;break;case 7:led7 = 0; break;while(1)while(1)send(tabkeytag+1);error = 1; /error灯灭,保证重发时灯正常显示waiting = 0; /等待确认等亮p0 = tab0; /初始化数码管for(i=0;i0;a-)for(b=110;b0;b-);void send(uchar number)number+=var;tb8 = p; /设置奇偶校验位sbuf = number;while(!ti);ti=0; /传送结束从机:#include#define uchar unsigned char#define uint uns
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 运动队战略合同协议
- 水箱安装协议书
- 违建拆除协议书范本
- 演员离职协议书
- 运城奥迪购车合同协议
- 软件销售维护合同协议
- 专业社区物业管理服务协议
- 动迁房买卖居间合同
- 晋江安置协议书
- 房地产公司合同类别
- 2025年度红木家具出口退税申报代理合同
- 红火蚁防治方案
- 2024深圳二手房买卖合同范本:附带房屋检查报告版3篇
- 慢性病管理远程会诊制度设计
- 工程材料与热处理 课件 1金属材料强度与塑性探究
- GB/T 19048-2024地理标志产品质量要求龙口粉丝
- 人教版小学五年级数学下册《第八单元 数学广角-找次品》大单元整体教学设计2022课标
- 医疗器械唯一标识系统
- 安全教育森林防火教案
- 头疗馆转让合同
- GB/T 44947-2024机器状态监测与诊断性能诊断方法
评论
0/150
提交评论