最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

基于LabVIEW的PC机与单片机串口通信

来源:动视网 责编:小OO 时间:2025-10-01 17:15:23
文档

基于LabVIEW的PC机与单片机串口通信

课程设计任务书学生姓名:李晓宁郁金华彭亚斌吴冰专业班级08820220882021指导教师:杨谊华工作单位:南昌航空大学题目:基于LabVIEW的PC机与单片机串口通信初始条件:要求对单片机课程知识有所了解,同时熟悉labview软件的运用,同时了解基本的串口通信原理。指导教师签名:________________年月日系主任(或责任教师)签名:______________年月日摘要介绍一种基于LabVIEW7.0语言的AVRAT90系列单片机与PC机的串口通信技术,在体温检测中得到应用,并取
推荐度:
导读课程设计任务书学生姓名:李晓宁郁金华彭亚斌吴冰专业班级08820220882021指导教师:杨谊华工作单位:南昌航空大学题目:基于LabVIEW的PC机与单片机串口通信初始条件:要求对单片机课程知识有所了解,同时熟悉labview软件的运用,同时了解基本的串口通信原理。指导教师签名:________________年月日系主任(或责任教师)签名:______________年月日摘要介绍一种基于LabVIEW7.0语言的AVRAT90系列单片机与PC机的串口通信技术,在体温检测中得到应用,并取
  

课程设计任务书

学生姓名: 李晓宁 郁金华 彭亚斌 吴冰         

专业班级     0882022 0882021                 

指导教师:   杨谊华                          

工作单位: 南昌航空大学                      

题  目: 基于LabVIEW的PC机与单片机串口通信

                                

初始条件:要求对单片机课程知识有所了解,同时熟悉labview软件的运用,同时了解基本的串口通信原理。

指导教师签名:________________              年   月   日

系主任(或责任教师)签名:______________     年   月   日

摘  要

介绍一种基于LabVIEW 7.0语言的AVR AT90系列单片机与PC机的串口通信技术,在体温检测中得到应用,并取得良好效果。

   

 关键词:  LabVIEW 7.0语言;AVR AT90系列中一片机;PC机;串口通信技术

Abstract:We introduce the application of serial port communication technology based on PC machine with LabVIEW 7.0 language and AVR AT90 series SCM in body temperature examination.And it has good effect.

Key words:LabVIEw 7.0 language;AVR AT90 series SCM;PC machine;Serial port communication technology

4.3.框图程序设计——添加函数与连线    12

第一章  绪论

   在计算机分布式测控系统中,经常要利用串行通信方式进行数据通信。它包括单片机和上位机之间、客户端和服务器之间以及客户端和客户端之间的通信,而单片机和上位机之间数据通信则是整个系统的基础。

串行通信是一种常用的数据传输方法,虽然它的传输速度慢,但由于它占用的通信线路少、成本低、容易实现等优点,在数据通信方式上仍占有重要地位。目前,串口通信程序的开发,在Windows操作系统下一般用VB、VC、VF Delphi等等许多高级语言编写。当用VB、VC、VF,开发串行通信程序时,开发人员不得不面对非常烦琐的API函数编程;而Delphi没有自带的串口通信控件,在它的帮助文档里也没有提及串口通信,这也给编程人员带来许多不便,其他高级语言也是如此。可见,用文本语言编串口通信程序较为复杂,花费的时间较长。利用LabVIEW7.0开发PC机与单片机的串口通信程序是一种更为简捷的方法。

第二章   软件实现

2.1  LabVIEW应用软件概述

    LabVIEW是一个工业标准的图形化开发环境,它结合了图形化编程方式的高性能与灵活性以及专为测试测量与自动化控制应用设计的高端性能与配置功能,能为数据采集、仪器控制、测量分析与数据显示等各种应用提供必要的开发工具。因此,LabVIEW通过降低应用系统开发时间与项目筹建成本帮助科学家与工程师们提高工作效率。LabVIEW被广泛应用于各种行业中,包括汽车、半导体、航空航天、交通运输、高校实验室、电信、生物医药与电子等无论在哪个行业中,工程师与科学家们都可以使用LabVIEW创建功能强大的测试测量与自动化控制系统,在产品开发中进行快速原型创建与仿真工作。在产品生产过程中,工程师们也可以利用LabVIEW进行生产测试,监控各个产品生产过程。总之,LabVIEW可用于各行各业产品开发的阶段。由于LabVIEW能够为用户提供简明、直观、易用的图形编程方式,能够将繁琐复杂的语言编程简化成为以菜中提示方式选择功能,并且用线条将各种功能连接起来,十分省时简便。与传统的编程语言比较,LabVIEW图形编程方式能够节省85%以上的程序开发时间,其运行速度却几乎不受影响,体现出了极高的效率。使用虚拟仪器产品,用户可以根据实际生产需要重新构筑新的仪器系统。例如,用户可以将原有的带有RS232接口的仪器、VXI总线仪器以及GPIB仪器通过计算机,联接在一起,组成各种各样新的仪器系统,由计算机进行统一管理和操作[1,2]。

2.2  LabVIEW串口通信模块

    在LabVIEW 7.0中,对串行口进行控制的方式通常有两种:一是利用LabVIEW功能模块的lnstrument 1/0-﹥VISA子模块;二是直接利用LabVIEW功能模块lnstrument 1/0一>Serial子模块,该程序库中包含进行串行通信操作的一些功能模块这正符合本软件开发的需要

2.3  LabVIEW通信模块的属性

表(1)给出了本系统用到的几个通信模块的基本属性的描述

2.4  串口通信程序结构

    本程序主要采用顺序结构实现,具体流程描述如下:(1)初始化串口。据实际需要选择并打开com口,打开串口时根据双方协议设置波特率、数据位、奇偶校验位、停止位、缓冲区大小等。如果打开串口无误,指小灯亮;否则提小串口出错,并关闭串口。初始化成功后,退出第一桢,进入第二桢。(2)输入命令字到串口。因双方约定单片机输入的命令字为}一六进制的55 (ASC Ⅱ码字符表示为U),故在程序框图中输入的字串若用 ASC Ⅱ码字符表示为U,用HI;X进制表示为55。若写入的命令字有误,或写入串口模块打不开,出现出错提小,重新要求打开串口。(3)延时因涉及在操作系统的几层间传递信息,加之从主机发送命令到单片机,单片机判断为正确命令后返回数据给主机是需要一定的时间的,故这一步进行延时等待。延时时间可视情祝而定,只要大于单片机回送给主机的时间就行。具体执行时间可由LabVIEW工具菜中栏下的advanced下的profile来确定程序运行时间。若不加以延时程序会有出错提示。(4)显示部分,主要程序代码如图二所示根据需要进行图形及表格显示。为能准确计算被测信号的频率值,使前面板横轴表示的时间尽可能准确,在显示图形Graph IJU用bundle进行处理。实践表明:通过这种处理方式,可使被测信号的频率值误差在百分之三以内。在数组显示用一个重构数组函数将单片机送来的数据构建成一个10行8列的数组,后利用两层for循环实现数组的行列显示。

第三章  程序设计

设计思路:本设计分单片机和PC机两部分进行编程。在单片机方面,使用汇编语言,用中断方式接收和发送数据。单片机有五个终端源,本设计使用串行口中断请求标志RI或TI,当串行口接收完一帧串行数据时置位RI或当发送完一帧串行数据时置位TI,向CPU申请中断;在PC机方面,PC机数据的接收和发送采用VisualBasic中的通讯控件MSC0MM。

设计中使用LED数码管显示发送或接收到数据;使用46的矩阵式键盘发送数据。

3.1单片机通信的设计

单片机完成通信数据的收发功能主要分为2个步骤。

  串口波特率的设定

通常使用单片机的串口时,选用的晶振比较固定,常用于何微机通信的波特率也相对固定。本设计设定通讯波特率为9600。

  串口初始化

串口初始化主要是设置产生波特率的定时器1、串行口控制和串口的中断控制。具体步骤如下。

●确定定时器1的工作方式——写TMOD寄存器。

●计算定时器1的初值——装载TH1、TL1。

●启动定时器1——写TCON中的TR1位。

●确定串口的控制——写SCON。

●使用串口中断方式时,开CPU和中断源——写IE寄存器。

本设计设定定时器T1工作在模式2,串行口工作于方式3。

3.2 PC机通信的设计

MSC0MM控件不需要用户对通讯底层进行操作。它有事件驱动通讯和查询通讯两种方式。本设计中采用事件驱动方式,即接收缓冲区每接受规定字符数产生一次MSCOMM—OnC0Mm事件,发送时设置不产生该事件。

3.3 输入显示程序设计

设计中使用7段LED数码管显示发送或接收到数据;使用46的矩阵式键盘发送数据。程序可分为三个模块。

  键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。

  显示模块:将显示单元的内容在显示器上动态显示。

  主程序:调用键输入模块和显示模块。

键盘扫描中,向列扫描码地址逐列输出低电平,然后从行码地址读回。如果有键按下,则相应行的地址应为低,如果无键按下,由于上拉的作用,行码为高。这样就可以通过输出的列码和读取的行码来判断按下的是什么键了,由于在建的闭合和断开过程中有一个抖动期,抖动时间长短和开关的机械特性有关,一般为5~10ms,为了保证CPU对键的闭合做一次且仅一次的处理,在编程时要有一定的延时,本设计设定了30ms的延时来防止按键抖动。

程序框图如下:

     主程序框图                        读键输入子程序框图

                     N

          Y                                                                                                                                                             

                                                                 

                                 Y            N

                                                               N

                                                                   

                                                              

                                                  Y

    

LED显示流程图

                                             否

                        是

                             

3.4 单片机收发程序

单片机发送数据流程图          单片机接收数据流程图

                             否

             是

3.5  PC机收发程序

PC机发送数据流程图            PC机接收数据流程图

    

                          否                                 否

          是                             是

3.6 硬件连接

 

图一:

图二:

图三:

第四章  利用LabVIEW实现PC与单片机串口通信任务

4.1.建立新VI程序

启动NI LabVIEW程序,选择新建(New)选项中的VI项,建立一个新VI程序。

4.2.程序前面板设计

 在前面板设计区空白处单击鼠标右键,显示控件选板(Controls)。

(1)添加一个字符串输入控件:控件(Controls)→新式(Modern)→字符串与路径(String & Path)→ 字符串输入控件(String Control),将标签改为“发送数据(十六进制)”,在该控件上单击鼠标右键,在弹出的快捷菜单中选择“十六进制显示(Hex Display)”。

(2)添加一个字符串显示控件:控件(Controls)→新式(Modern)→字符串与路径(String & Path)→字符串显示控件(String Indicator),将标签改为“返回数据(十六进制)”,在该控件上单击鼠标右键,在弹出的快捷菜单中选择“十六进制显示(Hex Display)”。

(3)添加一个字符显示控件:控件(Controls)→新式(Modern)→字符串与路径(String & Path)→字符串显示控件(String Indicator),将标签改为“通信状态”。

(4)添加一个串口资源检测控件:控件(Controls)→新式(Modern)→ I/O → VISA资源名称(VISA resource name);单击控件箭头,选择串口号,如ASRL1:或COM1。

图4.2-1 程序前面板

(5)添加一个确定按钮控件:控件(Controls)→新式(Modern)→布尔(Boolean)→确定按钮(OK Butoon),将标题改为“发送”。

(6)添加一个停止按钮控件:控件(Controls)→新式(Modern)→布尔(Boolean)→停止按钮(Stop Butoon),将标题改为“关闭”。

设计的程序前面板如图4.2-1所示。

4.3.框图程序设计——添加函数与连线

 进入框图程序设计界面,在设计区的空白处单击鼠标右键,显示函数选板(Functions)。

(1)添加一个配置串口函数:编程(Programming)→ 仪器I/O(Instrument I/O) → 串口(Serial)→ VISA配置串口(VISA Configure Serial Port)。

(2)添加4个数值常量:编程(Programming)→ 数值(Numeric) → 数值常量(Numeric Constant),值分别为4800(波特率)、8(数据位)、0(校验位,无)、1(停止位)。

(3)添加一个While循环结构:编程(Programming)→ 结构(Structures) → While 循环(While Loop)。

(4)添加一个关闭串口函数:编程(Programming)→ 仪器I/O(Instrument I/O) → 串口(Serial)→ VISA关闭(VISA Close)。

(5)在While循环结构中添加一个条件结构:编程(Programming)→ 结构(Structures)→ 条件结构(Case Structure)。

(6)在条件结构中添加一个顺序结构:编程(Programming)→ 结构(Structures) →层叠式顺序结构(Stacked Sequence Structure)。

将其帧(Frame)设置为4个(序号0-3)。设置方法:选中Stacked Sequence Structures上边框,单击鼠标右键,执行在后面添加帧(Add Frame After)选项3次。

(7)在顺序结构的Frame 0中添加一个串口写入函数:编程(Programming)→ 仪器I/O(Instrument I/O)→串口(Serial)→ VISA写入(VISA Write)。

(8)将控件“发送数据(十六进制)”的图标拖入顺序结构的Frame 0中,分别将确定按钮(OK Button)、停止按钮(Stop Buffon) 的图标拖入循环结构中。

(9)将VISA资源名称(VISA resource name)函数的输出端口分别与串口配置(VISA Configure Serial Port)函数、串口写入(VISA Write)函数(在顺序结构Frame 0中)、串口关闭(VISA Close)函数的输入端口VISA资源名称(VISA resource name)相连。

(10)将数值常量4800、8、0、1分别与VISA配置串口(VISA Configure Serial Port)函数的输入端口波特率(baud rate)、数据位(data bits)、奇偶(parity)、停止位(stop bits)相连。

(11)右键选择循环结构的条件端子,设置为“真时停止(Stop if True)”,图标变为。将停止按钮(Stop Buffon)与循环结构的条件端子相连。

(12)将确定按钮(OK Button)与条件结构的选择端子?相连。

(13)将函数“发送数据(十六进制)”与串口写入(VISA Write)函数的输入端口写入缓冲区(write buffer)相连。

连接好的框图程序如图4.3-1所示。

(14)在顺序结构的Frame 1中添加一个时钟函数:编程(Programming)→定时(Timing)→ 等待下一个整数倍毫秒(Wait Until Next ms Multiple)。

(15)在顺序结构的Frame 1中添加一个数值常量:编程(Programming)→数值(Numeric)→ 数值常量(Numeric Constant),将值改为200(时钟频率值)。

(16)在顺序结构的Frame 1中将数值常量(值为200)与等待下一个整数倍毫秒(Wait Until Next ms Multiple)函数的输入端口毫秒倍数(millisecond multiple)相连。

连接好的框图程序如图4.3-2所示。

 

                  图4.3-1 框图程序连线1    图4.3-2  框图程序连线2

 

        

(17)在顺序结构的Frame 2中,添加一个串口字节数函数:编程(Programming) → 仪器I/O(Instrument I/O)→串口(Serial)→ VISA串口字节数(VISA Bytes at Serial Port),标签为“Property Node”。

(18)在顺序结构的Frame 2中,添加一个串口读取函数:编程(Programming)→ 仪器I/O(Instrument I/O)→串口(Serial)→ VISA读取(VISA Read)。

(19)将控件“返回数据(十六进制)”的图标拖入顺序结构的Frame 2中。

(20)将VISA串口字节数(VISA Bytes at Serial Port)函数的输出端口VISA资源名称(VISA resource name)与VISA读取(VISA Read)函数的输入端口VISA资源名称(VISA resource name)相连。

(21)将VISA串口字节数(VISA Bytes at Serial Port)函数的输出端口Number of bytes at Serial port与串口读取(VISA Read)函数的输入端口字节总数(byte count)相连。

(22)将VISA读取(VISA Read)函数的输出端口读取缓冲区(read buffer)与控件“返回数据(十六进制)”的输入端口相连。

连接好的框图程序如图4.3-3所示。

图4.3-3 框图程序连线3

(23)在顺序结构的Frame 3中,添加两个局部变量:编程(Programming)→ 结构(Structures)→局部变量(Local Variable)。

选择局部变量,单击鼠标右键,在弹出的快捷菜单的(Select Item)选项下,为局部变量分别选择对象:“返回数据(十六进制)”和“发送数据(十六进制)”,将其读写属性设置为“转换为读取(Change To Read)”。

(24)在顺序结构的Frame 3中,添加一个比较函数:编程(Programming)→比较(Comparison)→等于?(Equal ?)。

(25)在顺序结构的Frame 3中,添加一个条件结构:编程(Programming)→ 结构(Structures)→条件结构(Case Structure)。

(26)将局部变量“返回数据(十六进制)”和“发送数据(十六进制)”分别与比较函数等于?(Equal ?)的输入端口x和y相连。

(27)将比较函数等于?(Equal ?)的输出端口x=y?与条件结构的选择端子?相连。

(28)在条件结构的真(True)选项中,添加一个字符串常量:编程(Programming)→ 字符串(String)→ 字符串常量(String Constant),将其值改为“通信正常!”。

(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.  National lnstruments Corporation.Getting  Started W ith LabVIEW [M ] Edition,2003.

5.  National lnstruments Corporation.LabVIEW User Manual [M ] Edition,2003.

6 . 雷振山.LabVIEW 7 Express实用技术教程[M].北京:中国铁道出版社,2004.

7.[美] roboert H.Bishop LABVIEW 8 实用教程 北京:电子工业出版社,2009.7.

文档

基于LabVIEW的PC机与单片机串口通信

课程设计任务书学生姓名:李晓宁郁金华彭亚斌吴冰专业班级08820220882021指导教师:杨谊华工作单位:南昌航空大学题目:基于LabVIEW的PC机与单片机串口通信初始条件:要求对单片机课程知识有所了解,同时熟悉labview软件的运用,同时了解基本的串口通信原理。指导教师签名:________________年月日系主任(或责任教师)签名:______________年月日摘要介绍一种基于LabVIEW7.0语言的AVRAT90系列单片机与PC机的串口通信技术,在体温检测中得到应用,并取
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top