⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.frm

📁 一个基于vb和c的单片机温度采集与显示程序
💻 FRM
📖 第 1 页 / 共 2 页
字号:
      Left            =   3960
      TabIndex        =   13
      Top             =   6960
      Width           =   1215
   End
   Begin VB.Label Label7 
      Caption         =   "30"
      Height          =   255
      Left            =   840
      TabIndex        =   12
      Top             =   3780
      Width           =   255
   End
   Begin VB.Label Label6 
      Caption         =   "20"
      Height          =   255
      Left            =   840
      TabIndex        =   11
      Top             =   4280
      Width           =   255
   End
   Begin VB.Label Label5 
      Caption         =   "10"
      Height          =   255
      Left            =   840
      TabIndex        =   10
      Top             =   4780
      Width           =   255
   End
   Begin VB.Label Label3 
      Caption         =   "温度波形图"
      BeginProperty Font 
         Name            =   "黑体"
         Size            =   10.5
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   255
      Left            =   3360
      TabIndex        =   8
      Top             =   0
      Width           =   1215
   End
   Begin VB.Label Label2 
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   10.5
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   375
      Left            =   1440
      TabIndex        =   4
      Top             =   6960
      Width           =   1455
   End
   Begin VB.Label Label1 
      Caption         =   "当前温度:"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   10.5
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   375
      Left            =   240
      TabIndex        =   3
      Top             =   6960
      Width           =   1215
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Public kaishi, js As Integer '全局变量定义
Dim cache(601) As Integer
Dim jishuqi As Integer
Dim cachetem1 As Integer '存储这次的温度值
Dim alarmmax, alarmmin As Double '存储温度报警值
Dim stralarm As String
    
Public Sub huakedu() '画刻度
Dim xh, yh, ih As Integer
Picture1.Cls
For i = 1 To 20 Step i
  Picture1.Line (0, (200 - i * 10) * 50)-(200, (200 - i * 10) * 50), RGB(0, 255, 255)
Next i
  Picture1.Line (200, (100 - alarmmax) * 50)-(6300, (100 - alarmmax) * 50), RGB(255, 0, 0)
  Picture1.Line (200, (100 - alarmmin) * 50)-(6300, (100 - alarmmin) * 50), RGB(0, 0, 255)
End Sub

Public Sub huatu2300() '画图(接收数据少于600)
Dim i As Integer
For i = jishuqi To 2 Step -1
 cache(i) = cache(i - 1)
Next i
cache(1) = cachetem1
Picture1.Cls
Call huakedu
For i = 2 To jishuqi Step 1
 If cache(i) / 100 < alarmmin Then
 Picture1.Line ((i - 1) * 10 + 200, (5000 - cache(i - 1) / 2))-(i * 10 + 200, (5000 - cache(i) / 2)), RGB(0, 0, 255)
 ElseIf cache(i) / 100 > alarmmax Then
  Picture1.Line ((i - 1) * 10 + 200, (5000 - cache(i - 1) / 2))-(i * 10 + 200, (5000 - cache(i) / 2)), RGB(255, 40, 0)
  ElseIf cache(i) / 100 <= alarmmax And cache(i) / 100 >= alarmmin Then
   Picture1.Line ((i - 1) * 10 + 200, (5000 - cache(i - 1) / 2))-(i * 10 + 200, (5000 - cache(i) / 2)), RGB(0, 255, 0)
End If
Next i
End Sub
            
Public Sub huatu1201() '画图(接收数据大于600个,将最初的数据清除,插入新测的数据)
Dim i As Integer
For i = 600 To 2 Step -1
 cache(i) = cache(i - 1) '清除最初的数据
Next i
cache(1) = cachetem1 '插入新数据
Picture1.Cls
Call huakedu
For i = 2 To 600 Step 1
If cache(i) / 100 < alarmmin Then
 Picture1.Line ((i - 1) * 10 + 200, (5000 - cache(i - 1) / 2))-(i * 10 + 200, (5000 - cache(i) / 2)), RGB(0, 0, 255)
 ElseIf cache(i) / 100 > alarmmax Then
  Picture1.Line ((i - 1) * 10 + 200, (5000 - cache(i - 1) / 2))-(i * 10 + 200, (5000 - cache(i) / 2)), RGB(255, 0, 0)
  ElseIf cache(i) / 100 <= alarmmax And cache(i) / 100 >= alarmmin Then
   Picture1.Line ((i - 1) * 10 + 200, (5000 - cache(i - 1) / 2))-(i * 10 + 200, (5000 - cache(i) / 2)), RGB(0, 255, 0)
End If
Next i
End Sub

Private Sub Command3_Click() '关闭串口
If js = 0 Then
  Label2.Caption = ""
  Label2.ForeColor = RGB(0, 0, 255)
  MSComm1.PortOpen = False
  js = 1
  kaishi = 0
  Picture1.Cls
End If
End Sub

Private Sub Command4_Click() '打开串口,开始测量温度
If kaishi = 0 Then
  Label2.ForeColor = RGB(0, 255, 0)
  With MSComm1
    .OutBufferCount = 0
    .InBufferCount = 0
    .OutBufferSize = 1
    .InBufferSize = 4
    .RThreshold = 4
    .InputLen = 4
    .CommPort = 1
    .Settings = "9600,n,8,1"
    .PortOpen = True
    Call huakedu
  End With
  kaishi = 1
  js = 0
End If
End Sub

Private Sub Commaxtem_Click() '上限值判断
 If Texmaxtem = "" Then
   MsgBox ("请输入要设定的温度上限值!")
   ElseIf IsNumeric(Texmaxtem) = False Then
     MsgBox ("请输入合法字符!格式:数字0~9")
     ElseIf alarmmin >= Val(Texmaxtem) Then
       MsgBox ("上限值不能低于下限值!")
       ElseIf Val(Texmaxtem) > 100 Then
        MsgBox ("设定温度过高,请重新输入!")
         Else
         alarmmax = Val(Texmaxtem)
         labalarmmax.Caption = alarmmax
         Call huakedu
         
 End If
 Texmaxtem = ""
End Sub

Private Sub commintem_Click() '下限值判断
If Texmintem = "" Then
   MsgBox ("请输入要设定的温度下限值!")
   ElseIf IsNumeric(Texmintem) = False Then
     MsgBox ("请输入合法字符!格式:数字0~9")
     ElseIf alarmmax <= Val(Texmintem) Then
       MsgBox ("下限值不能高于上限值!")
       ElseIf Val(Texmintem) < -50 Then
        MsgBox ("设定温度过低,请重新输入!")
         Else
         alarmmin = Val(Texmintem)
         Labalarmmin.Caption = alarmmin
         Call huakedu
 End If
 Texmintem = ""
End Sub

Private Sub Form_Load() '窗口初始化
jishuqi = 1
Label2.Caption = ""
Label2.ForeColor = RGB(0, 0, 255)
alarmmax = 23
alarmmin = 18
labalarmmax.Caption = alarmmax
Labalarmmin.Caption = alarmmin
End Sub

Private Sub MSComm1_OnComm() '串口接收程序
Dim bytInput As Variant
Dim i As Integer
Select Case MSComm1.CommEvent
  Case comEvReceive
    bytInput = MSComm1.Input
    cachetem1 = Val(bytInput) '温度转换
    Label2.Caption = Str(cachetem1 / 100) + "度"
    
    If cachetem1 / 100 > alarmmax Then
      stralarm = "o"
      MSComm1.Output = "o"
      Label4.Caption = "温度过高"
      Label4.ForeColor = RGB(255, 0, 0)
      Label2.ForeColor = RGB(255, 0, 0)
      ElseIf cachetem1 / 100 < alarmmin Then
        srtalarm = "o"
        MSComm1.Output = "o"
        Label4.Caption = "温度过低"
        Label4.ForeColor = RGB(0, 0, 255)
        Label2.ForeColor = RGB(0, 0, 255)
        ElseIf cachetem1 / 100 >= alarmmin And cachetem1 / 100 <= alarmmax Then
          stralarm = "p"
          MSComm1.Output = stralarm
          Label4.Caption = "温度正好"
          Label4.ForeColor = RGB(0, 255, 0)
          Label2.ForeColor = RGB(0, 255, 0)
    End If
    
    If (jishuqi > 1 And jishuqi < 601) Then '未画满一幅时
      Call huatu2300
      jishuqi = jishuqi + 1
      ElseIf jishuqi = 1 Then '画第一笔
      cache(jishuqi) = cachetem1
      jishuqi = jishuqi + 1
      ElseIf jishuqi >= 601 Then '画满一幅时
       Call huatu1201
       ElseIf jishuqi = 0 Then
        jishuqi = jishuqi + 1
    End If
End Select
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -