当前位置:首页 > 单片机 > 单片机
[导读]一.引言单片机实时监测数据的图形显示一般都借助于数据处理能力强大的上位PC机。VB6.0具有强大的图形处理功能和良好的界面设计功能并且可以利用MsComm控件方便地实现和单片机的串行数据通信。本文介绍利用VB6.0的窗

一.引言

单片机实时监测数据的图形显示一般都借助于数据处理能力强大的上位PC机。VB6.0具有强大的图形处理功能和良好的界面设计功能并且可以利用MsComm控件方便地实现和单片机的串行数据通信。

本文介绍利用VB6.0的窗体对象、命令按钮控件对象、微软的MsComm控件对象、数组和用户自定义坐标系动态、连续、数字、波形地显示单片机实时检测数据的一种方法。

该显示方法的坐标系符合人们看图习惯,显示的实时波形随时间动态变化并从左向右平移,视觉效果好且数值显示精确、算法简单、实现容易。

二.所用对象介绍

1.窗体

窗体是所有控件的容器,是设计界面的载体,具有Print、Cls、Line、 Scale等方法。

窗体容器有一个坐标系,窗体的ScaleTop、ScaleLeft两个属性值形成坐标原点且默认值为0和0,窗体默认坐标原点在窗体的左上角,向右和向下为坐标轴正方向,属性ScaleWidth的值和ScaleHeight的值确定窗体实际可用的宽度和高度(见图1)。

 

窗体的ScaleMode属性值决定窗体坐标的度量单位,共有八种单位形式,当值为0时表示是用户定义形式。默认形式为twip。窗体默认坐标系不符合人们习惯。

用Scale方法可以方便建立用户坐标系,语法格式为:

 [窗体].Scale [(xLeft,yTop)-(xRight,yBottom)]

其中(xLeft,yTop)表示窗体左上角的坐标值, (xRight,yBottom)表示窗体右下角的坐标值,则窗体的下述属性值为:
           ScaleLeft = xLeft
           ScaleTop = yTop
           ScaleWidth = xRight-xLeft
           ScaleHeight = yBottom-yTop

若有语句: Form1.Scale (-10, 250)-(220, -15), 则用户自定义坐标系如下图2:
  
 

2.命令按钮控件

命令按钮可以接收Click事件。

3.MsComm控件

完善的串行数据发送和接收控件。通过属性设置、事件驱动方式或查询方式完成数据通信。

三.软件设计思想(一个具体的例)

要求:单片机每1秒串行发送给PC一帧十位数据,VB6.0波形动态显示数据。

设计:通过窗体Load事件程序完成如图3所示界面设计,使得程序一运行即出现该界面,单击"接收数据"按钮,通过MsComm控件接收串行通信数据并波形动态显示。显示时一屏12个数据,每次接收了新数据后,数组中的数据依次后移,既a(0)(假设为数组a(11))放最新接收的数据,原a(11)中的数据被移出而移入原a(10)中的数。每次有新数据移入并且有原数据移出时,先清屏再复原背景显示数据,造成数据平移视觉效果。

设计时波形一定要从界面最左端入,从最右端出,这样动态平移视觉效果才好。窗体的AutoRedraw属性要设为True.

 

四.软件设计源程序(波形参见图4、图5)
'定义所用变量
Dim a(11) As Single
Dim d As Integer
Dim n As Integer
Dim m As Integer
Dim Buffer As Variant
Private Sub Form_Load()
      '一屏显示的12个数赋初值0
      For i = 0 To 11
        a(i) = 0
      Next i
      '定义坐标原点
      Form1.Scale (-10, 250)-(220, -15)
      '画X、Y轴
      Line (0, 0)-(220, 0)
      Line (0, 0)-(0, 250)
      '加坐标刻度和数值
      CurrentX = 200: CurrentY = 13: Print "X(s)"
      CurrentX = 5: CurrentY = 245: Print "Y(V)"
      For i = 0 To 220 Step 20
        CurrentX = i: CurrentY = 3: Line -(i, 0)
        If i <= 200 Then CurrentX = i - 7 Else CurrentX = i - 12
       CurrentY = 0: Print i Mod 19
      Next i
      For i = 0 To 210 Step 20
        If i <> 0 Then
          CurrentX = -14: CurrentY = i: Print i / 10
          CurrentX = 230: CurrentY = i: Line -(0, i)
        End If
      Next i
      'mscomm控件初始化
        MSComm1.CommPort = 1
        MSComm1.Settings = "9600,n,8,1"
 MSComm1.InputMode = comInputModeBinary
MSComm1.InputLen = 0
 MSComm1.RThreshold = 0
End Sub
'接收并显示数据
Private Sub Command1_Click()
 '无条件循环接收数据
 Do

接收数据
       Do Until MSComm1.InBufferCount = 1
       Loop
       Buffer = MSComm1.Input
       For i = LBound(Buffer) To UBound(Buffer)
         d = Buffer(i)
       Next i
      '判是否第一屏12个数据,设标志量m
       If m < 12 Then
         m = m + 1
       End If
      '12个数据放a 数组,a(0)是最新数据,原a(11)中的数移出
       For i = 11 To 1 Step -1
         a(i) = a(i - 1)
       Next i
       a(0) = d
      '清零窗体界面、数据
       Form1.Cls
      '复原窗体界面
       Line (0, 0)-(230, 0)
       Line (0, 0)-(0, 250)
   CurrentX = 200: CurrentY = 13: Print "X(s)"
       CurrentX = 5: CurrentY = 245: Print "Y(V)"
       For i = 0 To 220 Step 20
         CurrentX = i: CurrentY = 3: Line -(i, 0)
         If i <= 200 Then CurrentX = i - 7 Else CurrentX = i - 12
         CurrentY = 0: Print i Mod 19
       Next i
       For i = 0 To 210 Step 20
          If i <> 0 Then
            CurrentX = -14: CurrentY = i: Print i / 10
            CurrentX = 230: CurrentY = i: Line -(0, i)
           End If
        Next i
       '连点成波形
        For i = 0 To m - 2
          Line (20 * i, 230 * a(i) / 20)-(20 * (i + 1), 230 * a(i + 1) / 20), RGB(240, 0, 0)
        Next I
      Loop
End Sub                                           

 

参考书:龚沛曾等《Visual Basic程序设计简明教程》高等教育出版社 2002
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭