第13章 LabVIEW串口通信程序设计
图13-6 框图程序连线 图13-7 程序运行界面
6.单PC双串口互通信程序
如果只有一台计算机且具有两个串口,那么可以通过串口线将两个串口直接连接起来,如图13-8所示,编写程序实现双串口互通信。
图13-9是单PC双串口互通信程序的前面板。 图13-10是单PC双串口互通信程序的后面板。
– 287 –
LabVIEW虚拟仪器数据采集与串口通信测控应用实战
COM15 9 43 8 2 7 6 1 5 43 8 2 COM2 1 6 5 43 8 2 1 6 9 7 9 7 (b)( (a)a) (b) 图13-8 双串口直接连接
图13-9 单PC双串口互通信程序的前面板
图13-10 单PC双串口互通信程序的后面板
13.2 PC与单片机串口通信程序设计
目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机
– 288 –
第13章 LabVIEW串口通信程序设计
往往只负责数据的采集和通信,而上位机通常以基于图形界面的Windows系统为操作平台。为便于查询和保存数据,还需要数据库的支持,这种应用的核心是数据通信,它包括单片机和上位机之间、客户端和服务器之间以及客户端和客户端之间的通信,而单片机和上位机之间数据通信则是整个系统的基础。
单片机和PC的通信是通过单片机的串口和PC串口之间
的硬件连接实现的。
图13-11 单片机实验板 图13-11所示是本设计使用的单片机实验板。有关单片机实
验板的详细信息请查询电子开发网http://www.dzkfw. com/。
13.2.1 PC与单片机串口通信程序设计硬件线路
如图13-12所示,数据通信的硬件上采用3线制,将单片机和PC串口的3个引脚(RXD、TXD、GND)分别连在一起,即将PC和单
PC机PC 片机的发送数据线TXD与接收数据RXD
MAX232交叉连接,两者的地线GND直接相连,而
RXDTXDTINTOUT其他信号线,如握手信号线均不用,采用软COM1TXDRXDAT89C51RINROUT件握手的方式,这样既可以实现预定的任务GNDGND 又可以简化电路设计。
图13-12 PC与单片机串口通信线路
但由于单片机的TTL逻辑电平和
RS-232C的电气特性完全不同,RS-232C的逻辑0电平规定为+3V~+15V之间,逻辑1电平为?3V~?15V之间,因此在将PC和单片机的RXD和TXD交叉连接时必须进行电平转换,这里使用的是MAX232电平转换芯片。
单片机系统有LED显示器模块、继电器输出模块、蜂鸣器模块等。
13.2.2 PC与单片机串口通信程序设计任务
利用Keil C51和LabVIEW编写程序实现PC与单片机串口通信。 任务要求有以下几方面。 1.设计任务一
PC通过串行口将数字(00,01,02,03...,FF,十六进制)发送给单片机,单片机收到后回传这个数字,PC接收到回传数据后显示出来,若发送的数据和接收到的数据相等,则串行通信正确,否则有错误。启始符是数字00,结束符是数字FF。
2.设计任务二
(1)测试通信状态。
先在文本框中输入字符串“Hello”,单击“测试”按钮,将字符串“Hello”发送到单片机,若PC与单片机通信正常,在PC程序的文本框中显示字符串“OK!”,否则显示字符串“ERROR!”。
(2)循环计数。
单击“开始”按钮,文本框中数字从0开始累加,0、1、2、3…,并将此数发送到单片机
– 289 –
LabVIEW虚拟仪器数据采集与串口通信测控应用实战
的显示器上显示。当累加到10时,回到0重新开始累加,依次循环。任何时候,单击“停止”按钮,PC程序中和单片机显示器都停止累加;再单击“开始”按钮,接着停下的数继续累加。
(3)控制指示灯。
在单片机继电器接线端子的两个通道上分别接上两个指示灯,在PC程序画面上选择指示灯号,如1号灯,单击画面“打开”按钮,单片机上1号灯亮,同时蜂鸣器响;单击画面“关闭”按钮,1号灯灭,蜂鸣器停止响,同样控制2号灯的亮灭(蜂鸣器同时动作)。
单片机和PC通信,在程序设计上涉及两个部分的内容。
一是单片机的C51程序,二是PC的串口通信程序和界面的编制。
13.2.3 任务实现
13.2.3.1 利用Keil C51实现单片机与PC串口通信任务一
Keil C51软件是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编、PLM语言和C语言的程序设计,界面友好,易学易用。
启动Keil C51,出现编辑界面。
1.建立一个新工程
单击Project菜单,在弹出的下拉菜单中选中New Project选项,出现Create New Project对话框,然后选择要保存的路径、文件夹,输入工程文件的名字,如pc_com(后缀名默认),单击“保存”按钮。
这时会弹出一个 “Select Device for Target ‘Target 1’” 对话框,要求用户选择单片机的型号,可以根据使用的单片机来选择,Keil C51几乎支持所有的51核的单片机。这里选择Atmel 的89C51。选择89C51之后,右边一栏是对这个单片机的基本的说明,然后单击“确定”按钮。
2.编写程序
单击“File”菜单,再在下拉菜单中单击“New”选项。此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但建议首先保存该空白的文件。
单击菜单上的“File”项,在下拉菜单中选中“Save As”选项,在“文件名”栏右侧的编辑框中键入欲使用的文件名,同时,必须键入正确的扩展名,如pc_com.c,然后单击“保存”按钮。
如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。
回到编辑界面后,单击“Target 1”前面的“+”号,再在“Source Group 1”上单击鼠标右键,弹出快捷菜单,然后单击“Add File to Group‘Source Group 1’”。
选中pc_com.c,然后单击“Add ”按钮,再单击“Close ”按钮。此时注意到“Source Group 1”文件夹中多了一个子项“pc_com.c”。子项的多少与所增加的源程序的多少相同。
现在,请输入C语言源程序。
在输入程序时,读者可以发现事先保存待编辑的文件的好处,即Keil C51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。
– 290 –
第13章 LabVIEW串口通信程序设计
3.编译程序
单击“Project”菜单,在下拉菜单中选择“Options for Target‘Target 1’”选项,出现对话框;选择Output选项卡,选中“Create HEX Files”项,单击“确定”按钮。
再单击“Project”菜单,在下拉菜单中选择“Built Target”选项(或者使用快捷键F7),进行编译。若有错误会在output窗口提示,可根据此提示,找出错误并修改,直至编译通过,如图13-13所示。
图13-13 Keil C51编译界面
至此,用Keil C51上做了一个完整工程,其中,生成一个编程器烧写文件pc_com.hex。 4.烧录程序
将AT89C51芯片安装在编程器插座上,运行编程器程序。
选择单片机芯片类型AT89C51,读入Intel Hex文件pc_com.hex,执行自动编程指令,将pc_com.hex文件烧录入AT89C51芯片中。
将烧录好的AT89C51芯片安装到单片机实验板上,就可以用串口调试助手程序对它进行测试了。
以下是完成单片机与PC串口通信任务1的C51参考程序:
# pragma db code # include
– 291 –