【关键词"> 【关键词" />
欢迎来到天天文库
浏览记录
ID:24071377
大小:52.50 KB
页数:4页
时间:2018-11-12
《labview 和单片机串口通信方法的研究 》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Labview和单片机串口通信方法的研究韩金燕淮安信息职业技术学院计算机与通信工程学院江苏淮安223003【文章】介绍了Labvie8pt0pt;mso-layout-grid-align:none"class=MsoNormal>【关键词】Labvie8pt0pt;mso-layout-grid-align:none"class=MsoNormal>:TP274.2:A1串口通信简介在各种测控应用中,上下位机之间的数据通信都是必需的,有各种各样的计算机外部通信协议和技术标准可供选择,比如RS-232、RS-485
2、、CAN总线、LIN总线、Lon0cm0pt;mso-layout-grid-align:none"class=MsoNormal>RS-232-C是美国电子工业协会制定的一种双机串行通信物理接口标准,常用的数据传输速率是9600波特,最高可达115200波特。受驱动器电容负载的限制和单端信号传送存在共地噪声和不能抑制共模干扰的影响,一般用于20m以内的短距离通信。2Labvie0cm0pt;mso-layout-grid-align:none"class=MsoNormal>Labvie0cm0pt;mso-la
3、yout-grid-align:none"class=MsoNormal>3计算机串口的测试程序常见的计算机串口采用的是RS-232C标准,共九根针,在不需要数据流控制的简单使用情况下,只有2(接收)、3(发送)、5(地)三根针有用,用导线把2、3脚短路,用来验证计算机串口以及线缆的功能是否正常,这相当于计算机自己接收自己发送的数据,如果收发数据一致,说明具备串口通信的硬件基础。测试程序程序框图如图2所示,首先调用“VISA配置”函数,设置9600波特率,8位数据,无奇偶校验、1位停止位,在soNormal>运行时
4、,先选择“1”资源,再点击“运行”按钮,在发送区输入字符点击“发送”按钮,同样的数据在“接收区”出现,前面板和运行情况如图3所示。4串口通信协议由于不同的设备具有不同的控制属性,并且通信数据量较大,为保证通信能可靠的持续进行,必须制定通信协议。上位机向下位机发送各种指令或数据,下位机根据收到的命令完成数据的采集处理并上传或对各种设备做出控制,可见通信的数据量并不大,为此,制定了这样的通信协议,每次通信都由上位机发起,下位机只是被动的等待命令,下位机不能主动发起对话,上位机发送的命令或数据都包括在一帧内,每次对话都是
5、一帧数据,由多个数据组成,分别是帧头、命令、两字节数据长度、数据、帧尾。其中帧头、帧尾采用不常用的数字0x5a和0xa5。数据长度用来确保通信的完整,因为数据中间也可能出现0x5a和0xa5这两个特殊数字,但它们仍是数据,不能认为是新的一帧数据的开始或结束,所以需要发送数据长度这个信息告诉下位机应该接收多少数据以免通信中断,数据长度的取值包括帧头、命令和数据长度自己,也就是在数据个数的基础上再加上四。而数据根据不同的命令又有一个或多个字节,比如继电器的动作无非是开或者关,只需要一个字节,但是128*64点阵的液晶屏
6、图片显示数据则多达1024个字节,所以数据长度用两个字节分别表示高低8位,数据帧格式如表1所示。单片机收到命令后需要向上位机返回数据的情形只有一种,那就是上传室温、光照强度和按键状态,此外其他的电路控制并不需要返回任何数据,所以对于下位机向上位机发出的数据帧比较特殊,可以没有数据长度等冗余信息,只按照一定的格式发数据就是了,但是上、下位机必须约定这个数据帧内哪些是室温哪些是光照以及如何利用,如表2所示,温度采用4个字节,分别是十位、个位、十分位、百分位,光照2个字节,分别是高8位和低2位,按键1个字节,用编码来表示
7、2个按键的4种组合。数据帧中对各电路控制命令的编码值分配如表3所示,有的命令没有数据参图3程序运行情况图1串口函数的路径图2串口测试程序框图057软件开发Softent电子制作数,有的只有一个字节的参数,有的多个字节的参数。5下位机的串口通信程序下位机采用STC90C58AD单片机作为控制器,采用串口中断的方式接收上位机发来的数据帧,解析其中的命令并执行,串口中断设定为最高优先级,串口中断服务程序代码[4]如下,为了满足通信中大量数据的暂存需求,在XDATA空间设置了一个长度为1030的接受缓存区recbuf数组,
8、其中存放的数据格式符合前面的通信协议数据帧格式,reum是接受计数器变量,用于指示当前接受的数据个数,busy、sending、recing分别是程序标志,供本程序和其他子程序参考使用。voidUART_Isr()interrupt4using1{if(RI){RI=0;if(SBUF==0x5A){recing=1;sending=0;if((recbuf
此文档下载收益归作者所有