在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → 教你如何使用labview与单片机串口通信

教你如何使用labview与单片机串口通信

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:2.96M
  • 下载次数:21
  • 浏览次数:185
  • 发布时间:2020-09-03
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
该文档十分详细的描述了LABVIEW与单片机进行串口通信的方法,包含一部分程序
LabⅤIEW虚拟仪器数据采集与串口通信测控应用实战 停止按钮( Stop buton),将标题改为“关闭程序 vsA资源名称 设计的程序前面板,如图13-3所示。 AsRL1;工ESTR 框图程序设计—添加函数 进入框图程序设计界面,在设计区的空白处单击 鼠标右键,显示函数选板( Functions)。添加的所有函数 及其布置如图13-4所示。 关闭程序 发送字 详细步骤介绍如下。 (1)添加一个配置串口函数:编程( Programming) 图13-3程序前面板 仪器IO( Instrument i/O)→串口( Serial)→VISA配置串口( VISA Configure Serial Port) 江S真R幽 ource kam 上1e 生1Fart Until Next ms Multipl 四H Sabc yLF凵 图13-4框图程序函数添加与布置 (2)添加4个数值常量:编程( Programming)→数值( Numeric)→数值常量(数值常量 ( Numeric Constant,值分别为9600(波特率)、8(薮据位)、0(校验位,无)、1(停止位)。 (3)添加两个关闭串口函数:编程( Programming)→仪器IO( Instrument l/o)→串口 ( Serial)→VISA关闭( VISA Close) (4)添加一个循环结构:编程( Programming)→结构( Structures)→ While循环(Whie Loop)。添加理由:随时监测串口接收缓冲区的数据。 以下添加的函数或结构放置在 While循环结构框架中。 (5)添加一个时钟函数:编程( Programming)→定时( Timing)→等待下一个整数倍 毫秒( Wait Until Next ms Multiple)。添加理由:以一定的周期监测串口接收缓冲区的数据。 (6)添加一个数值常量:编程( Programming)→数值( Numeric)→数值常量( Numeric Constant),将值改为500(时钟频率值)。 (⑦)添加一个ⅥSA串口字节数函数:编程( Programming)→仪器IO( Instrument lo)→ 串口( Serial)→ⅥISA串口字节数( VISA Bytes at Serial Port),标签为“ Property Node” (8)添加一个数值常量:编程( Programming)→数值( Numeric)→数值常量( Numeric Constant),将值为0(比较值)。 (9)添加一个比较函数:编程( Programming)→比较( Comparison)→不等于?(Not Equal?)。添加理由:只有当串口接收缓冲区的数据个数不等于0时,才将数据读入到接收区。 (10)添加一个布尔函数:编程( Programming)→布尔( Boolean)→非(Not)函数。 添加理由:当关闭程序时,将关闭按钮真(True)变为假( False),退岀循环。如果将循 -284 第13章 Labview串口通信程序设计 环结构的条件端子囫设置为“真时停止( Stop if True)”囫,则不需要添加非(Not)函数。 (11)添加两个条件结构:编程( Programming)→结构( Structures)→条件结构(Case Structure)。添加理由:发送字符时,需要单击按钮“发送字符”,因此需要判断是否单击了 发送按钮;接收数据时,需要判断串口接收缓冲区的数据个数是否不为0 (12)添加一个串口写入函数:编程( Programming)→仪器IO( Instrument I/o)→串 口( Serial)→ⅥSA写入( VISA Write),并拖入条件结构(上)的真(True)选项框架中 (13)添加一个串口读取函数:编程( Programming)→仪器IO( Instrument/o)→串 口( Serial)→ⅥISA读取(Ⅵ ISA Read),并拖入条件结构(下)的真(True)选项框架中 (14)将字符输入控件图标(标签为“发送区:”)拖入条件结构(上)的真(Tπe)选项框 架中,将字符显示控件图标(标签为“接收区:”)拖入条件结构(下)的真(Tue)选项框架中。 (15)分别将确定(OK)按钮控件图标(标签为“确定按钮( OK Button)”)、停止(Stop) 按钮控件图标(标签为“停止按钮( Stop Button”)拖入循环结构框架中 框图程序设计—连线 使用连线工具,将所有函数连接起来,如图13-5所示 r吗 w四 J 收区 日 图13-5框图程序连线 (1)将VSA资源名称( VISa resource name)函数的输出端口分别与串口配置(VISA 函数、串口读取( VISA Read)函数的输入端口VsA资源名称( VISA resource name)hie Configure Serial Port)函数、串口字节数( VISA Bytes at Serial Port)函数、串口写入(VSAW (2)将数值常量9600、8、0、1分别与串口配置( VISA Configure Serial Port)函数的输 入端口波特率( baud rate)、数据比特( data bits)、奇偶( parity)、停止位( stop bits)相连。 (3)将数值常量(值为500)与等待下一个整数倍毫秒( Wait Until Next ms Multiple)函 数的输入端口毫秒倍数( millisecond multiple)相连 4)将确定按钮图标“ OK Button”与条件结构(上)的选择端子?相连。 (5)将串口字节数(Ⅵ SA Bytes at Serial Port)函数的输出端口 Number of bytes at Serial port与不等于?( Not Equal?)函数的输入端口x相连 将串口字节数( VISA Bytes at Serial Port)函数的输出端口 Number of bytes at Serial port 与串口读取( VISA Read)函数的输入端口字节总数( byte count)相连 (6)将数值常量(值为0)与不等于?( Not equal?)函数的输入端口y相连 (⑦)将不等于?( Not equal?)函数的输出端口x!=y?与条件结构(下)的选择端子?相连。 (8)在条件结构(上)中将字符输入控件图标(标签为“发送区:”)与串口写入(VISA 285 LabⅤIEW虚拟仪器数据采集与串口通信测控应用实战 Write)函数的输入端口写入缓冲区( write buffer)相连 (9)在条件结构(下)中将串口读取( VISA Read)函数的输出端口读取缓冲区( read buffer) 与字符显示控件图标(标签为“接收区:”)相连。 (10)将停止按钮( Stop button)函数与非(Not)函数的输入端口x相连 (11)将非(Not)函数的输出端口,not.x?与循环结构的条件端子囫相连。 (12)在条件结构(上)中将串口写入(Ⅵ IISA Write)函数的输出端口vISA资源名称输 出(Ⅴ ISA resource name out)与串口关闭( VISA Close)函数(上)的输入端口ⅤISA资源名 称( VISA resource name)相连。 (13)在条件结构(下)中将串口读取( VISA Read)函数的输出端口ⅤSA资源名称输 出与关闭串口函数 VISA Close(下)的输入端口ⅤSA资源名称相连。 (14)进入两个条件结构的假( False)选项,将ⅥISA资源名称函数的输出端口分别与串 口关闭(Ⅵ ISA Close)函数(上、下)的输入端口ⅤISA资源名称相连,如图13-6所示。 运行程序 进入程序前面板,保存设计好的Ⅵ程序。单击快捷工具栏“运行(Run)”按钮,运行 程序。 两台计算机同时运行本程序 在一台计算机程序窗体中发送字符区输入要发送的字符,比如“收到信息请回字符 abc123”,单击“发送字符”按钮,发送区的字符串通过COM1口发送出去 如果联网通信的另一台计算机程序收到字符,则返回字符串,如“收到,abc123”;如果 通信正常该字符串将显示在接收区中 程序运行界面如图13-7所示。 E ISA- OK 接收区 VISA Resource Name 6ASRLI 收到,abel g1 收到信息诘回字符abl 回 关的序了发送字符 图13-6框图程序连线 图13-7程序运行界面 单双串口互通信程序 如果只有一台计算机且具有两个串口,那么可以通过串口线将两个串口直接连接起来, 如图13-8所示,编写程序实现双串口互通信。 图13-9是单PC双串口互通信程序的前面板 图13-10是单PC双串口互通信程序的后面板 第13章 Labview串口通信程序设计 ○O (b) 图13-8双串口直接连接 接收数据区 石河子大学 接收端口号 发送数据区 石河子大字 发送端口号 图13-9单PC双串口互通信程序的前面板 园送端囗号 送数据(殴送数据区 abs c 瞼收端口号 VISA Close 收数据区 ial Port 废送数据 图13-10单PC双串口互通信程序的后面板 13.2个与单片机串口通信程序设计 目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机 287 LabⅤIEW虚拟仪器数据采集与串口通信测控应用实战 往往只负责数据的采集和通信,而上位机通常以基于图形界面的 Windows系统为操作平台。 为便于査询和保存数据,还需要数据库的支持,这种应用的核 心是数据通信,它包括单片机和上位机之间、客户端和服务器 日日 之间以及客户端和客户端之间的通信,而单片机和上位机之间 数据通信则是整个系统的基础。 单片机和PC的通信是通过单片机的串口和PC串口之间 ii]⑥动分 的硬件连接实现的。 图13-11所示是本设计使用的单片机实验板。有关单片机实图13-1单片机实验板 验板的详细信息请查询电子开发网htp:/ww.dzkfw.com/。 3.2.1PC与单片机串口通信程序设计硬件线路 如图13-12所示,数据通信的硬件上采用3线制,将单片机和PC串口的3个引脚(RXD TXD、GND)分别连在一起,即将PC和单 片机的发送数据线TXD与接收数据RXD 交叉连接,两者的地线GND直接相连,而 其他信号线,如握手信号线均不用,采用软 RXD TXD 件握手的方式,这样既可以实现预定的任务 又可以简化电路设计 图13-12PC与单片机串口通信线路 但由于单片机的TTL逻辑电平和 RS-232C的电气特性完全不同,RS-232C的逻辑0电平规定为+3V~+15V之间,逻辑1电平 为-3V~-15V之间,因此在将PC和单片机的RXD和TXD交叉连接时必须进行电平转换 这里使用的是MAX232电平转换芯片 单片杋系统有LED显示器模块、继电器输岀模块、蜂鸣器模块等。 13.22PC与单片机串口通信程序设计任务 利用 Keil o51和 Labview编写程序实现PC与单片机串口通信。 任务要求有以下几方面。 设计任务 PC通过串行口将数字(00,01,02,03.,FF,十六进制)发送给单片机,单片机收到 后回传这个数字,PC接收到回传数据后显示出来,若发送的数据和接收到的数据相等,则串 行通信正确,否则有错误。启始符是数字00,结束符是数字FF。 设计任务二 (1)测试通信状态。 先在文本框中输入字符串“Hell”,单击“测试”按钮,将字符串“Hell”发送到单片机, 若PC与单片机通信正常,在PC程序的文本框中显示字符串“OK!”,否则显示字符串“ ERROR!” (2)循环计数 单击“开始”按钮,文本框中数字从0开始累加,0、1、2、3.,并将此数发送到单片机 第13章 Labview串口通信程序设计 的显示器上显示。当累加到10时,回到0重新开始累加,依次循环。任何时候,单击“停止” 按钮,PC程序中和单片杋显示器都停止累加;再单击“开始”按钮,接着停下的薮继续累加。 (3)控制指示灯 在单片机继电器接线端子的两个通道上分别接上两个指示灯,在PC程序画面上选择指 示灯号,如1号灯,单击画面“打开”按钮,单片机上1号灯亮,同时蜂鸣器响;单击画面 关闭”按钮,1号灯灭,蜂鸣器停止响,同样控制2号灯的亮灭(蜂鸣器同时动作)。 单片机和PC通信,在程序设计上涉及两个部分的内容。 是单片机的C51程序,二是PC的串口通信程序和界面的编制 13.2.3任务实现 13.2.3.1利用 Keil ce51实现单片机与PC串口通信任务 Keil c51软件是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体, 支持汇编、PLM语言和C语言的程序设计,界面友好,易学易用 启动 Keil o51,出现编辑界面 建立一个新工程 单击 Project菜单,在弹出的下拉菜单中选中 New Project选项,出现 Create New Project 对话框,然后选择要保存的路径、文件夹,输入工程文件的名字,如 pc com(后缀名默认), 单击“保存”按钮 这时会弹出一个“ Select Device for Target Target1”对话框,要求用户选择单片机的型号, 可以根据使用的单片机来选择, Keil o51几乎支持所有的51核的单片机。这里选择 Atmel的 89C51。选择89C51之后,右边一栏是对这个单片机的基本的说明,然后单击“确定”按钮。 编写程序 单击“File”菜单,再在下拉菜单中单击“New”选项。此时光标在编辑窗口里闪烁,这 时可以键入用户的应用程序了,但建议首先保存该空白的文件 单击菜单上的“Fie”项,在下拉菜单中选中“ Save as”选项,在“文件名”栏右侧的编辑框 中键入欲使用的文件名,同时,必须键入正确的扩展名,如 pc com. c,然后单击“保存”按钮。 如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。 回到编辑界面后,单击“ Target1”前面的“+”号,再在“ Source group1”上单击鼠 标右键,弹出快捷菜单,然后单击“ Add File to Group‘ Source group1'”。 选中 pc con,c,然后单击“Ad”按钮,再单击“ Close”按钮。此时注意到“ Source Group 文件夹中多了一个子项“ pc com.c”。子项的多少与所增加的源程序的多少相同 现在,请输入C语言源程序, 在输入程序时,读者可以发现事先保存待编辑的文件的好处,即KeiC51会自动识别关 键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率 289 LabⅤIEW虚拟仪器数据采集与串口通信测控应用实战 编译程序 单击“ Project”菜单,在下拉菜单中选择“ Options for Target‘ Target 1’”选项,出现对 话框;选择 Output选项卡,选中“ Create HEX files”项,单击“确定”按钮 再单击“ Project”菜单,在下拉菜单中选择“ Built target”选项(或者使用快捷键F7) 进行编译。若有错淏会在 output窗口提示,可根据此提示,找岀错误并修改,直至编译通过, 如图13-13所示。 PcEDm-请iiom2-[: DucumgnIt and SnttinExLLi主gum置 y Dormant &LpE canE DEil. edit Yie braisxt lebc Peripherals Teal, Sits lindow Help x 由日自立A%2角 晶(⑤①因 巴西 Tarcet 手 neruda taUs,D 言了t deeJ是E HainE Enenloru=0al;//片机送字节的长度 tachi aud:[16]{0,020,H',e,"'21,"以/环记数dd】刚指示 tInder1】腔制缩示灯器ad2]字铜 chat Enlil0] Txet0x03,0xsd,0,09,D;0;043,0k,D曲);段皆整 P2F27:/码曾+位 呢吾】“://为信世备中 uchar reCeive”m:/收副的节数 uchar uc send 围面图是的 目山:"mma: ervating hoa file Erom"pe_eom" BG_Gomm-0 Error(s), 0 warning(s) PAB人cm人幽 L 388 IE 图13-13KeiC51编译界面 至此,用KeiC51上做了一个完整工程,其中,生成一个编程器烧写文件 pc com.hex。 烧录程序 将AT89C51芯片安装在编程器插座上,运行编程器程序。 选择单片机芯片类型ATr89C51,读λ Intel hex文件 pc com.hex,执行自动编程指令, 将 pc com. hex文件烧录入AT89C51芯片中 将烧录好的AT89C51芯片安装到单片机实验板上,就可以用串口调试助手程序对它进行 测试了 以下是完成单片机与PC串口通信任务1的C51参考程序: pragma db code include<reg 5l.h> define uchar unsigned char oid rece(void) void init(void) uchar re[ 171 /*主程序* void main(vold) 第13章 Labview串口通信程序设计 uchar temp do i while(ri==o) temp-sBUF if(temp==0X00) freed; 3 else break. i while(1); /*串口初始化* void init(void) TMOD=0x20 ∥定时器1-方式2 PCON=Ox 80 ∥电源控制 SCON=0x50 方式1 TLI=OxF3 THI=OxF3 22.1184MHz晶振,波特率为48000xf396000xfa192000xfd TR1=1; /*接收返回数据*/ void rece(void) char i. 0 do while(rI==0) reli]SBuF RI=0: SBUF==] while(TI==0); TI=0: } while(rei-1]!=255); 13.2.3.2利用 Labview实现PC与单片机串口通信任务 建立新程序 启动 NI Labview程序,选择新建(New)选项中的ⅥI项,建立一个新Ⅵ程序。 291 【实例截图】
【核心代码】

标签:

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警