基于LabVIEW的PC机与单片机串口通信.docx
- 文档编号:20723864
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:21
- 大小:410.76KB
基于LabVIEW的PC机与单片机串口通信.docx
《基于LabVIEW的PC机与单片机串口通信.docx》由会员分享,可在线阅读,更多相关《基于LabVIEW的PC机与单片机串口通信.docx(21页珍藏版)》请在冰豆网上搜索。
基于LabVIEW的PC机与单片机串口通信
课程设计任务书
学生:
晓宁郁彭亚斌吴冰
专业班级08820220882021
指导教师:
谊华
工作单位:
航空大学
题目:
基于LabVIEW的PC机与单片机串口通信
初始条件:
要求对单片机课程知识有所了解,同时熟悉labview软件的运用,同时了解基本的串口通信原理。
指导教师签名:
________________年月日
系主任(或责任教师)签名:
______________年月日
摘要
介绍一种基于LabVIEW7.0语言的AVRAT90系列单片机与PC机的串口通信技术,在体温检测中得到应用,并取得良好效果。
关键词:
LabVIEW7.0语言;AVRAT90系列中一片机;PC机;串口通信技术
Abstract:
WeintroducetheapplicationofserialportcommunicationtechnologybasedonPCmachinewithLabVIEW7.0languageandAVRAT90seriesSCMinbodytemperatureexamination.Andithasgoodeffect.
Keywords:
LabVIEw7.0language;AVRAT90seriesSCM;PCmachine;Serialportcommunicationtechnology
4.3.框图程序设计——添加函数与连线12
第一章绪论
在计算机分布式测控系统中,经常要利用串行通信方式进行数据通信。
它包括单片机和上位机之间、客户端和服务器之间以及客户端和客户端之间的通信,而单片机和上位机之间数据通信则是整个系统的基础。
串行通信是一种常用的数据传输方法,虽然它的传输速度慢,但由于它占用的通信线路少、成本低、容易实现等优点,在数据通信方式上仍占有重要地位。
目前,串口通信程序的开发,在Windows操作系统下一般用VB、VC、VFDelphi等等许多高级语言编写。
当用VB、VC、VF,开发串行通信程序时,开发人员不得不面对非常烦琐的API函数编程;而Delphi没有自带的串口通信控件,在它的帮助文档里也没有提及串口通信,这也给编程人员带来许多不便,其他高级语言也是如此。
可见,用文本语言编串口通信程序较为复杂,花费的时间较长。
利用LabVIEW7.0开发PC机与单片机的串口通信程序是一种更为简捷的方法。
第二章软件实现
2.1LabVIEW应用软件概述
LabVIEW是一个工业标准的图形化开发环境,它结合了图形化编程方式的高性能与灵活性以及专为测试测量与自动化控制应用设计的高端性能与配置功能,能为数据采集、仪器控制、测量分析与数据显示等各种应用提供必要的开发工具。
因此,LabVIEW通过降低应用系统开发时间与项目筹建成本帮助科学家与工程师们提高工作效率。
LabVIEW被广泛应用于各种行业中,包括汽车、半导体、航空航天、交通运输、高校实验室、电信、生物医药与电子等无论在哪个行业中,工程师与科学家们都可以使用LabVIEW创建功能强大的测试测量与自动化控制系统,在产品开发中进行快速原型创建与仿真工作。
在产品生产过程中,工程师们也可以利用LabVIEW进行生产测试,监控各个产品生产过程。
总之,LabVIEW可用于各行各业产品开发的阶段。
由于LabVIEW能够为用户提供简明、直观、易用的图形编程方式,能够将繁琐复杂的语言编程简化成为以菜中提示方式选择功能,并且用线条将各种功能连接起来,十分省时简便。
与传统的编程语言比较,LabVIEW图形编程方式能够节省85%以上的程序开发时间,其运行速度却几乎不受影响,体现出了极高的效率。
使用虚拟仪器产品,用户可以根据实际生产需要重新构筑新的仪器系统。
例如,用户可以将原有的带有RS232接口的仪器、VXI总线仪器以及GPIB仪器通过计算机,联接在一起,组成各种各样新的仪器系统,由计算机进行统一管理和操作[1,2]。
2.2LabVIEW串口通信模块
在LabVIEW7.0中,对串行口进行控制的方式通常有两种:
一是利用LabVIEW功能模块的lnstrument1/0-﹥VISA子模块;二是直接利用LabVIEW功能模块lnstrument1/0一>Serial子模块,该程序库中包含进行串行通信操作的一些功能模块这正符合本软件开发的需要
2.3LabVIEW通信模块的属性
表
(1)给出了本系统用到的几个通信模块的基本属性的描述
2.4串口通信程序结构
本程序主要采用顺序结构实现,具体流程描述如下:
(1)初始化串口。
据实际需要选择并打开com口,打开串口时根据双方协议设置波特率、数据位、奇偶校验位、停止位、缓冲区大小等。
如果打开串口无误,指小灯亮;否则提小串口出错,并关闭串口。
初始化成功后,退出第一桢,进入第二桢。
(2)输入命令字到串口。
因双方约定单片机输入的命令字为}一六进制的55(ASCⅡ码字符表示为U),故在程序框图中输入的字串若用ASCⅡ码字符表示为U,用HI;X进制表示为55。
若写入的命令字有误,或写入串口模块打不开,出现出错提小,重新要求打开串口。
(3)延时因涉及在操作系统的几层间传递信息,加之从主机发送命令到单片机,单片机判断为正确命令后返回数据给主机是需要一定的时间的,故这一步进行延时等待。
延时时间可视情祝而定,只要大于单片机回送给主机的时间就行。
具体执行时间可由LabVIEW工具菜中栏下的advanced下的profile来确定程序运行时间。
若不加以延时程序会有出错提示。
(4)显示部分,主要程序代码如图二所示根据需要进行图形及表格显示。
为能准确计算被测信号的频率值,使前面板横轴表示的时间尽可能准确,在显示图形GraphIJU用bundle进行处理。
实践表明:
通过这种处理方式,可使被测信号的频率值误差在百分之三以。
在数组显示用一个重构数组函数将单片机送来的数据构建成一个10行8列的数组,后利用两层for循环实现数组的行列显示。
第三章程序设计
设计思路:
本设计分单片机和PC机两部分进行编程。
在单片机方面,使用汇编语言,用中断方式接收和发送数据。
单片机有五个终端源,本设计使用串行口中断请求标志RI或TI,当串行口接收完一帧串行数据时置位RI或当发送完一帧串行数据时置位TI,向CPU申请中断;在PC机方面,PC机数据的接收和发送采用VisualBasic中的通讯控件MSC0MM。
设计中使用LED数码管显示发送或接收到数据;使用4
6的矩阵式键盘发送数据。
3.1单片机通信的设计
单片机完成通信数据的收发功能主要分为2个步骤。
串口波特率的设定
通常使用单片机的串口时,选用的晶振比较固定,常用于何微机通信的波特率也相对固定。
本设计设定通讯波特率为9600。
串口初始化
串口初始化主要是设置产生波特率的定时器1、串行口控制和串口的中断控制。
具体步骤如下。
●确定定时器1的工作方式——写TMOD寄存器。
●计算定时器1的初值——装载TH1、TL1。
●启动定时器1——写TCON中的TR1位。
●确定串口的控制——写SCON。
●使用串口中断方式时,开CPU和中断源——写IE寄存器。
本设计设定定时器T1工作在模式2,串行口工作于方式3。
3.2PC机通信的设计
MSC0MM控件不需要用户对通讯底层进行操作。
它有事件驱动通讯和查询通讯两种方式。
本设计中采用事件驱动方式,即接收缓冲区每接受规定字符数产生一次MSCOMM—OnC0Mm事件,发送时设置不产生该事件。
3.3输入显示程序设计
设计中使用7段LED数码管显示发送或接收到数据;使用4
6的矩阵式键盘发送数据。
程序可分为三个模块。
键输入模块:
扫描键盘、读取一次键盘并将键值存入键值缓冲单元。
显示模块:
将显示单元的容在显示器上动态显示。
主程序:
调用键输入模块和显示模块。
键盘扫描中,向列扫描码地址逐列输出低电平,然后从行码地址读回。
如果有键按下,则相应行的地址应为低,如果无键按下,由于上拉的作用,行码为高。
这样就可以通过输出的列码和读取的行码来判断按下的是什么键了,由于在建的闭合和断开过程中有一个抖动期,抖动时间长短和开关的机械特性有关,一般为5~10ms,为了保证CPU对键的闭合做一次且仅一次的处理,在编程时要有一定的延时,本设计设定了30ms的延时来防止按键抖动。
程序框图如下:
主程序框图读键输入子程序框图
N
Y
YN
N
Y
LED显示流程图
否
是
3.4单片机收发程序
单片机发送数据流程图单片机接收数据流程图
否
是
3.5PC机收发程序
PC机发送数据流程图PC机接收数据流程图
否否
是是
3.6硬件连接
图一:
图二:
图三:
第四章利用LabVIEW实现PC与单片机串口通信任务
4.1.建立新VI程序
启动NILabVIEW程序,选择新建(New)选项中的VI项,建立一个新VI程序。
4.2.程序前面板设计
在前面板设计区空白处单击鼠标右键,显示控件选板(Controls)。
(1)添加一个字符串输入控件:
控件(Controls)→新式(Modern)→字符串与路径(String&Path)→字符串输入控件(StringControl),将标签改为“发送数据(十六进制)”,在该控件上单击鼠标右键,在弹出的快捷菜单中选择“十六进制显示(HexDisplay)”。
(2)添加一个字符串显示控件:
控件(Controls)→新式(Modern)→字符串与路径(String&Path)→字符串显示控件(StringIndicator),将标签改为“返回数据(十六进制)”,在该控件上单击鼠标右键,在弹出的快捷菜单中选择“十六进制显示(HexDisplay)”。
(3)添加一个字符显示控件:
控件(Controls)→新式(Modern)→字符串与路径(String&Path)→字符串显示控件(StringIndicator),将标签改为“通信状态”。
(4)添加一个串口资源检测控件:
控件(Controls)→新式(Modern)→I/O→VISA资源名称(VISAresourcename);单击控件箭头,选择串口号,如ASRL1:
或COM1。
图4.2-1程序前面板
(5)添加一个确定按钮控件:
控件(Controls)→新式(Modern)→布尔(Boolean)→确定按钮(OKButoon),将标题改为“发送”。
(6)添加一个停止按钮控件:
控件(Controls)→新式(Modern)→布尔(Boolean)→停止按钮(StopButoon),将标题改为“关闭”。
设计的程序前面板如图4.2-1所示。
4.3.框图程序设计——添加函数与连线
进入框图程序设计界面,在设计区的空白处单击鼠标右键,显示函数选板(Functions)。
(1)添加一个配置串口函数:
编程(Programming)→仪器I/O(InstrumentI/O)→串口(Serial)→VISA配置串口(VISAConfigureSerialPort)。
(2)添加4个数值常量:
编程(Programming)→数值(Numeric)→数值常量(NumericConstant),值分别为4800(波特率)、8(数据位)、0(校验位,无)、1(停止位)。
(3)添加一个While循环结构:
编程(Programming)→结构(Structures)→While循环(WhileLoop)。
(4)添加一个关闭串口函数:
编程(Programming)→仪器I/O(InstrumentI/O)→串口(Serial)→VISA关闭(VISAClose)。
(5)在While循环结构中添加一个条件结构:
编程(Programming)→结构(Structures)→条件结构(CaseStructure)。
(6)在条件结构中添加一个顺序结构:
编程(Programming)→结构(Structures)→层叠式顺序结构(StackedSequenceStructure)。
将其帧(Frame)设置为4个(序号0-3)。
设置方法:
选中StackedSequenceStructures上边框,单击鼠标右键,执行在后面添加帧(AddFrameAfter)选项3次。
(7)在顺序结构的Frame0中添加一个串口写入函数:
编程(Programming)→仪器I/O(InstrumentI/O)→串口(Serial)→VISA写入(VISAWrite)。
(8)将控件“发送数据(十六进制)”的图标拖入顺序结构的Frame0中,分别将确定按钮(OKButton)、停止按钮(StopBuffon)的图标拖入循环结构中。
(9)将VISA资源名称(VISAresourcename)函数的输出端口分别与串口配置(VISAConfigureSerialPort)函数、串口写入(VISAWrite)函数(在顺序结构Frame0中)、串口关闭(VISAClose)函数的输入端口VISA资源名称(VISAresourcename)相连。
(10)将数值常量4800、8、0、1分别与VISA配置串口(VISAConfigureSerialPort)函数的输入端口波特率(baudrate)、数据位(databits)、奇偶(parity)、停止位(stopbits)相连。
(11)右键选择循环结构的条件端子,设置为“真时停止(StopifTrue)”,图标变为。
将停止按钮(StopBuffon)与循环结构的条件端子相连。
(12)将确定按钮(OKButton)与条件结构的选择端子?
相连。
(13)将函数“发送数据(十六进制)”与串口写入(VISAWrite)函数的输入端口写入缓冲区(writebuffer)相连。
连接好的框图程序如图4.3-1所示。
(14)在顺序结构的Frame1中添加一个时钟函数:
编程(Programming)→定时(Timing)→等待下一个整数倍毫秒(WaitUntilNextmsMultiple)。
(15)在顺序结构的Frame1中添加一个数值常量:
编程(Programming)→数值(Numeric)→数值常量(NumericConstant),将值改为200(时钟频率值)。
(16)在顺序结构的Frame1中将数值常量(值为200)与等待下一个整数倍毫秒(WaitUntilNextmsMultiple)函数的输入端口毫秒倍数(millisecondmultiple)相连。
连接好的框图程序如图4.3-2所示。
图4.3-1框图程序连线1图4.3-2框图程序连线2
(17)在顺序结构的Frame2中,添加一个串口字节数函数:
编程(Programming)→仪器I/O(InstrumentI/O)→串口(Serial)→VISA串口字节数(VISABytesatSerialPort),标签为“PropertyNode”。
(18)在顺序结构的Frame2中,添加一个串口读取函数:
编程(Programming)→仪器I/O(InstrumentI/O)→串口(Serial)→VISA读取(VISARead)。
(19)将控件“返回数据(十六进制)”的图标拖入顺序结构的Frame2中。
(20)将VISA串口字节数(VISABytesatSerialPort)函数的输出端口VISA资源名称(VISAresourcename)与VISA读取(VISARead)函数的输入端口VISA资源名称(VISAresourcename)相连。
(21)将VISA串口字节数(VISABytesatSerialPort)函数的输出端口NumberofbytesatSerialport与串口读取(VISARead)函数的输入端口字节总数(bytecount)相连。
(22)将VISA读取(VISARead)函数的输出端口读取缓冲区(readbuffer)与控件“返回数据(十六进制)”的输入端口相连。
连接好的框图程序如图4.3-3所示。
图4.3-3框图程序连线3
(23)在顺序结构的Frame3中,添加两个局部变量:
编程(Programming)→结构(Structures)→局部变量(LocalVariable)。
选择局部变量,单击鼠标右键,在弹出的快捷菜单的(SelectItem)选项下,为局部变量分别选择对象:
“返回数据(十六进制)”和“发送数据(十六进制)”,将其读写属性设置为“转换为读取(ChangeToRead)”。
(24)在顺序结构的Frame3中,添加一个比较函数:
编程(Programming)→比较(Comparison)→等于?
(Equal?
)。
(25)在顺序结构的Frame3中,添加一个条件结构:
编程(Programming)→结构(Structures)→条件结构(CaseStructure)。
(26)将局部变量“返回数据(十六进制)”和“发送数据(十六进制)”分别与比较函数等于?
(Equal?
)的输入端口x和y相连。
(27)将比较函数等于?
(Equal?
)的输出端口x=y?
与条件结构的选择端子?
相连。
(28)在条件结构的真(True)选项中,添加一个字符串常量:
编程(Programming)→字符串(String)→字符串常量(StringConstant),将其值改为“通信正常!
”。
(29)将控件“通信状态”拖入条件结构中。
(30)将字符串常量“通信正常!
”与控件“通信状态”的输入端口相连。
(31)在条件结构的假(False)选项中,添加一个字符串常量,将其值改为“通信异常!
”。
(32)在条件结构的假(False)选项中,添加一个局部变量,为局部变量选择对象“通信状态”,属性默认为:
“写”。
(33)将字符串常量“通信异常!
”与局部变量“通信状态”相连。
连接好的框图程序如图4.3-4所示。
图4.3-4框图程序连线4
4.4.运行程序
图4.4-1程序运行界面
进入程序前面板,保存设计好的VI程序。
单击快捷工具栏中的“运行(Run)”按钮,运行程序。
程序运行界面如图4.4-1所示。
在“发送数据”框中输入两位的十六进制数字(00,01,02,03...,FF),单击“发送”按钮,将数据发送给单片机;单片机收到后回传这个数字,PC接收到回传数据后在“返回数据”框中显示出来(十六进制),若发送的数据和接收到的数据相等,则在“通信状态”框中显示“通信正常!
”,否则显示“通信异常!
”。
当发送“FF”后,要想继续发送数据,必须先发送“00”。
致谢
本设计是在谊华老师的精心指导下完成的,在设计中老师给予了极大的帮助,付出了辛勤的劳动。
老师的谆谆教诲,严谨治学的态度,一丝不苟的精神,使我受益匪浅。
在此向老师表示衷心的感谢。
本次课程设计中,不仅需要运用到单片机方面的知识,还需要能熟练运用labview软件来进行编程,而之前只学过一些基础,临时用起来仍感陌生,因此我们一组人在短时间恶补labview的编程,虽然很吃力,但是却也学到了很多新的知识,总之,在这次课程设计当中,我们受益匪浅。
参考文献
1.全利,迟荣强.单片机原理与接口技术.高等教育,2004.1
2.华.MCS-51系列单片机使用接口技术.北京航空航天大学.2004
3.薛栋梁.MCS-51/151/251单片机原理与应用
(一).中国水利水电,2002
4.NationallnstrumentsCorporation.GettingStartedWithLabVIEW[M]Edition,2003.
5.NationallnstrumentsCorporation.LabVIEWUserManual[M]Edition,2003.
6.雷振山.LabVIEW7Express实用技术教程[M].北京:
中国铁道,2004.
7.[美]roboertH.BishopLABVIEW8实用教程北京:
电子工业,2009.7.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 LabVIEW PC 单片机 串口 通信