利用VB实现PC机与多单片机通讯

发布者:BlossomBeauty最新更新时间:2010-08-10 来源: 南方冶金学院学报关键字:串行通讯  单片机 手机看文章 扫描二维码
随时随地手机看文章

  前言

在采用以PC机为控制中心的数据采集自动化控制系统中,通常需要单片机采集数据,然后用异步串行通讯方式传给PC机,PC对单片机进行定时控制,需要多个单片机协同工作。如果系统不很复杂,可通过定时器控件控制收发过程,在必要的地方自动接收装置,使定时控制和通讯过程完美地结合起来。这样,可以免去“握手”协议的繁琐过程,简化编程,提高速度。VB具有面向对象的设计方法,友好的用户界面,简单方便的串行通讯和实用性强等优点,无论借用其他语言就可以开发出优秀的控制系统通讯软件。本文介绍在Windows 98环境下如何利用VB来实现PC机与多个PS1016单片机之间的串行通讯。

  VB环境下通讯程序的设计

VB提供了串行端口控制Mscomm来为应用程序提供串行通讯。该控件屏蔽了通信过程中的底层操作,程序员可以设置、监视Mscomm控件的属性和事件,结合Timer控件即可完成对串行口的初始化和数据的输入输出工作。Mscomm控件的主要属性如下:

(1)Commport 设置并返回通讯端口号。端口号可以设置为1~16的任何数,如Mscomm.Commport=2表示设置当前通讯端口为COM2。

(2)Setting 设置并返回波特率、奇偶校验、数据位、停止位。格式为Mscomm.Setting=String。String是一个包含四部分的字符串:第一部分为波特率;第二部分为奇偶校验,N表示不校验,M表示符号校验,E表示偶校验,O表示奇校验,S表示空格校验;第三部分为数据位数,其可选值为4,5,6,7,8;第四部分为停止位位数,其可选值为1,1.5,2。Setting属性的缺省值为“9600,N,8,1”。

(3)Portopen 设置并返回通讯端口的状态,也可以打开和关闭端口。

(4)Input 从接收缓冲区返回和删除字符。该属性在运行时为只读。

(5)InputLen 设置并返回每次Input属性从接收缓冲区中读取的字符数。InputLen属性的缺省值为0。设置InputLen为0时,Input将读取接收缓冲区的全部字符。

(6)Output 向传送缓冲区写数据。要传送的数据可是文本数据或二进制数据。

(7)CommEvent 返回最近的通讯事件或错误。只要有通讯错误或事件发生错误时就会产生Oncomm事件。CommEvent属性中存有该错误或事件的数值代码。

Timer控件的主要属性如下:

(1)Enabled 返回或设置一个值,该值用来确定一个窗体或控件否能够对用户产生的事件作出反应。通过把Enabled设置为“Galse”来使Timer控件成为无效,将取消由控件的Interval属性所建立的倒计时数。

(2)Interval 返回或设置对Timer控件的计时事件调用间的毫秒数。Timer控件的Enabled属性决定该控件是否对时间的推移作出响应。将Enabled设置为“False”会关闭Timer控件,设置为“True”则打开Timer控件。当Timer控件置为有效时,倒计时总是从其Interval属性设置值开始。创建Timer事件程序。可通知VB在每次Interval到时该做什么。Timer控件和Enabled属性设置为“True”时,VB将在Interval时间到后自动访问Timer_Timer过程。

为实现通讯程序,须在VB开发环境下设置一个用做控制通讯的窗体。窗体上主要有一个通讯控件Mscomml和两个Timer控件。VB的特点是事件驱动,定时器控件会定时触发相应事件的驱动程序。

1.发送单片机命令

为了使主机能够对整个检测过程进行实时控制,须要在发送命令以后设定等待的时间,也可以通过条件判断下一步是发达还是接收命令。对发送的命令,可能是文本方式或二进制代码。在发送二进制代码时,应特别注意发送的格式。

发送命令过程是一个带参过程,这样可使发送命令简便易行。具体程序如下:

Sub发送单片机命令过程(command As Byte)

Dim输出命令(1 To 1)As Byte

DoEvents

输出命令(1)=command

MSComm1.OutBufferCount=0

MSComm1.Output=输出命令

MSComm1.InBufferCount=0

End Sub

2.接收数据

接收数据是一个被动的过程,可以通过函数来实现,由定时器开启。在接收过程中,多数用特征字符,如“OK”、“#”等。这些需要在通讯协议中约定。

Function接收数据()

Do

DoEvents

In_buffer $=In_buffer$&MSComm2.Input

Loop Until InStr(_buffer$,“OK”)'从串行端口读“OK”响应'

In_buffer=Left(In_buffer,len(In_buffer)-2)

接收数据=In_buffer$

End Function

3.Timer控件控制

通过Timer控件来控制通讯中的发送命令和接收数据过程,在通讯程序中设置两个Timer控件分别控制发送单片机命令和接收单片机数据。为了实现一台PC机和多单片机之间的通讯,可在一个Timer控件的过程中,在发送命令之前设定命令参数和要接收数据的单片机号,然后发送单片机命令;在另一个Timer控件的过程中,根据发送前设定的单片机号,接收不同单片机的数据。

Timer控件控制程序如下:

'发送命令主控程序

Privata Sub TimerSend_Timer()

TimerSend.Enabled=False

Select Case command

Case 1]

Call发送单片机命令过程(任务1)

TimerReceive.Enabled=False'启动自动接收

Case2

Call发送单片机命令过程(任务2)

MSComm1.Rthreshold=0'关闭自动接收

TimerReceive.Interval=500

TimerReceive.Enabled=True'启动定时器接收机号=1

Case 3

Call发送单片机命令过程(任务3)

MSComm1.Rthreshold=0'关闭自动接收

TimerReceive.lnterval=500

TimerReceive.Enabled=True'启动定时器接收

机号=2

Case 4

Case n

End Select

End.Sub

'接收数据主控程序

Private Sub TimerReceive_Timer()

TimerReceive.Enabled=False

Select Case机号

Case 1

In_buffer$=接收数据(机号)

Call任务2

Case 2

In_buffer$=接收数据(机号)

Call任务3

Case 3

Case n

In_buffer$=接收数据(机号)

Call任务n

End Select

End Sub

4.自动接收、监视总线状态和通讯错误的处理

自动接收、监视总线状态和通讯错误的处理可以通过OnComm事件实现。VB程序运行过程中只要设置MSComm1.Rthreshold=1,在接收事件发生时程序就会自动访问MSComm1.OnComm()过程。

由于外界干扰或电压波动等原因,PC机和单片机之间的通讯可能会出现错误,如接收缓冲区溢出、网络端口超速等。这些可能发生的事件都能在代码中引起运行错误。为了处理这些错误,须要将错误处理代码添加到程序中。通过控件中的OnComm事件可以捕捉和处理错误。在通讯过程中所发生的通讯错误是CommEvent属性返回的。当CommEvent属性值发生改变时,表明有通讯错误,就会产生OnComm事件。同时,可以利用自动引发OnComm事件的特点在接收过程中加入状态显示码。这样可以监视通讯线路状态,得到单片机和主机及单片机和单片机之间的通讯进程。通讯错误的处理程序如下:

Private Sub MSComm1_OnComm()

Select Case MSComm1.CommEvent

Case ComReceive 'Receive data '自动数据接收、监视总线通信信息

Select Case In_buffer $

Call A

Label.Enabled=“正在执行任务1”

Call B

End Select

Case comFrame 'Framing Error '通讯错误处理

X=MsgBox(“Framing Error!”,16)

…'错误处理

Case comEventOverrun '数据丢失

X=MsgBox(“数据丢失!”,16)

…'错误处理

End Select

End Sub

关键字:串行通讯  单片机 引用地址:利用VB实现PC机与多单片机通讯

上一篇:基于MC9328MX1嵌入式最小系统的设计
下一篇:富士通半导体推出内置模拟比较器和运放的8位MCU

推荐阅读最新更新时间:2024-03-16 12:29

一种用单片机控制的采用电话遥控的简易远程教学系统
本文介绍了一种用单片机控制的采用电话遥控的简易远程教学系统。它借助于现有的丰富的电话网络资源,具有结构简单,造价低廉,易于操作等特点,可以实现对录像机的各种远距离控制操作。非常适合于贫困地区的电化教育的普及与发展。 1 系统的总体结构 该电话遥控教学系统的总体结构如图1所示。 该系统由电话机、小型程控机、远程控制器和数台录像机、电视机组成,该系统既可以通过小型程控机构成一个局域的小系统,也可以利用电信网构成一个跨省市的远距离遥控系统。在该系统中,远程控制器的设计与制造是该系统的核心与关键。 2 远程控制器的结构及工作原理 该控制器的 CPU 采用美国Microchip 公司生产的 PIC16C54 一次性用户可编程(O
[单片机]
一种用<font color='red'>单片机</font>控制的采用电话遥控的简易远程教学系统
一种新的单片机“看门狗”电路软件设计方法
    摘要: 单片机控制系统“看门狗”电路的有效性,除硬件电路的可靠性以外,主要取决于如何正确给“看门狗”电路进行复位(即“喂狗”),文章在介绍了一种采用MAX706和89C52构成的硬件电路的基础上,给出了一种新颖可靠的“看门狗”电路软件设计方法。     关键词: 抗干扰  单片机  看门狗  MAX706  89C52     随着MCS-51系列单片机的发展,其芯片价格在不断下降,但同时也带来了单片机芯片的抗干扰问题,该问题可能导致一些智能型仪器仪表单片机工业控制系统发生“死机”。笔者通过近几年的设计实践及不断试验,总结了一套可靠的“看门狗”硬件电路及软件设计方法。由于一些专业期刊曾经刊登过许多关于“看门
[工业控制]
基于低功耗单片机MSP430来控制LED灯光的强度
1 热释电红外传感器与菲涅耳透镜 利用红外线传感器可以检测到物体发射出的红外线,从而可以检测到不同物体的存在。制造热释电红外传感器的材料,以陶瓷氧化物及压电晶体用得最多,这类材料具有强烈的自发极化性能,当受到热辐射而产生温度变化时介质的极化状态随之发生变化。由于内部电荷的速度远远高于表面电荷的变化速度,晶体两端会产生数量相等而极性相反的独立电荷,这就是电介质的热释电效应。热释电红外传感器就是利用被测物体热辐射引起敏感元件温度的变化进行探测的。热释电红外传感器被广泛应用到安防监控、电子防盗、自动控制照明和工业自动控制等领域。 物体释放的红外线能量十分微弱,当直接用热释电红外传感器接收红外线时,灵敏度相对较低,一般情况下很难满足系
[单片机]
基于低功耗<font color='red'>单片机</font>MSP430来控制LED灯光的强度
STM32单片机的通用定时器定时时间的计算
STM32中的定时器有多种,按功能分成2个高级控制器定时器,4个普通定时器,2个基本定时器,2个看门狗定时器,1个系统滴答定时器SysTICk。 定时器的关键是定时时间的计算。比如用定时器控制继电器的开关的时候,需要延时一段时间才关闭或者开启,这时候离不开定时器定时。 通用定时器定时时间计算。1秒中断的基本实现: 通用定时器模块的入口时钟经过分频得到计数器的时钟,用CK_CNT表示,预分频器的系数为:TIMx_PSC,当TIMx_PSC=0时,表示不分频,=1时,2分频。以此类推。 公式为:CK_CNT=fclk_PSC/(PSC +1),其中PSC最大为65535. 其次是TIM5计数器的计数值的设置
[单片机]
PIC单片机实现延时x毫秒的功能设计
1、编写子程序DelayMS,实现延时x毫秒的功能,x由w寄存器中的值设定。 ;**************DelayMS************** DelayMS ; 延时x毫秒,x由变量w寄存器设定 movwf L1 ; Loop1 movlw .39 ; movwf L2 ; Loop2 movlw .31 ; movwf L3 ; Loop3 nop ; decfsz L3, f ; goto Loop3 ; decfsz L2, f ; goto Loop2 ; decfsz L1, f ; goto Loop1 ; return ; ;--------------------------------------
[单片机]
PIC<font color='red'>单片机</font>实现延时x毫秒的功能设计
单片机电子万年历,带农历显示
万年历的实物图: 电子万年历原理图如下: 仿真原理图如下 单片机源程序如下: #include reg52.h //#include DS18B20_3.H #include string.h #include intrins.h #define uint unsigned int #define uchar unsigned char #define wd 1 //定义是否有温度功能 =0时无温度,=1时有温度 #define yh 0x80 //LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80) #define er 0x80+0x4
[单片机]
<font color='red'>单片机</font>电子万年历,带农历显示
ARM单片机测高测距小车的研究与设计
简介:目前发达的电子信息科学技术,给日常生活中的高度和距离测量,提供了新的思路和解决方案。本设计将利用遥控小车做为测量工具,分别采用角度传感器、霍尔传感器等传感器来获得测量物理数据并通过单片机进行数据处理及计算,从而实现对待测目标物体的高度、水平距离等数据的快速、精确和数字式的测量。 1 理论分析与计算 小车自动测高测距的过程及相关参数如图1所示。当小车停放在A点时,遥控小车的装置调整角度,使测量光点定点到C点,测量并存储此时的角度α;之后,遥控控制小车前进,使小车沿直线行进到达B点,并再次调整测量装置,使测量光点再次定点到C点,并测量记录此时的角度β。并对从A到B的行进距离L进行测量和记录。利用以上数据,就可以计算出待测
[单片机]
ARM<font color='red'>单片机</font>测高测距小车的研究与设计
单片机实现电力补偿装置控制系统
以80C196KC单片机为核心的电力 补偿控制 系统,通过模拟输入电路对三相电压、电流进行采样,计算后通过输出单元控制电容器的投切,从而实现对电网无功功率的补偿。本文介绍了系统硬件和软件的设计方法。   引言   目前在电力补偿系统中有多种补偿方法,本文中的补偿系统是根据寻优负序电流最小进行补偿的。系统计算需要对交流电一个周期20 ms内对单相电压u、电流I进行采样,要求一个周期内采样次数至少在100次以上。针对这一特点,设计了基于80C196KC的控制系统。Intel公司的高性能16 b单片机80C196KC,其运算速度快,能够满足系统高速采样的要求。   1 系统硬件设计   本系统的硬件部分主要由采样输入电路、中
[单片机]
<font color='red'>单片机</font>实现电力补偿装置控制系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved