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

📄 bear.frm

📁 VB写的上位机
💻 FRM
📖 第 1 页 / 共 2 页
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Begin VB.Form Bear 
   BackColor       =   &H8000000B&
   BorderStyle     =   1  'Fixed Single
   Caption         =   "AT89Cx051编程器V1.0"
   ClientHeight    =   2415
   ClientLeft      =   5910
   ClientTop       =   4050
   ClientWidth     =   4215
   Icon            =   "Bear.frx":0000
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   2415
   ScaleWidth      =   4215
   Begin VB.Timer AutoTimer 
      Enabled         =   0   'False
      Interval        =   500
      Left            =   2040
      Top             =   2040
   End
   Begin VB.CommandButton WriteLockBits 
      Caption         =   "加  密"
      Height          =   375
      Left            =   2280
      TabIndex        =   15
      Top             =   1560
      Width           =   735
   End
   Begin VB.CommandButton Read 
      Caption         =   "校  验"
      Height          =   375
      Index           =   1
      Left            =   2280
      TabIndex        =   14
      Top             =   1080
      Width           =   735
   End
   Begin VB.CommandButton Write 
      BackColor       =   &H8000000B&
      Caption         =   "写  入"
      Height          =   375
      Left            =   2280
      MaskColor       =   &H80000000&
      TabIndex        =   13
      Top             =   600
      Width           =   735
   End
   Begin VB.CommandButton Eraze 
      Caption         =   "擦  除"
      Height          =   375
      Left            =   2280
      Picture         =   "Bear.frx":0CCA
      TabIndex        =   12
      Top             =   120
      Width           =   735
   End
   Begin VB.Frame AutoCheck 
      Caption         =   "组合操作"
      Height          =   1815
      Left            =   3120
      TabIndex        =   6
      Top             =   120
      Width           =   975
      Begin VB.CommandButton Auto 
         Caption         =   "执 行"
         Height          =   375
         Left            =   120
         TabIndex        =   11
         Top             =   1320
         Width           =   735
      End
      Begin VB.CheckBox AutoLock 
         Caption         =   "加密"
         Height          =   255
         Left            =   120
         TabIndex        =   10
         Top             =   960
         Width           =   735
      End
      Begin VB.CheckBox AutoVerify 
         Caption         =   "校验"
         Height          =   255
         Left            =   120
         TabIndex        =   9
         Top             =   720
         Value           =   1  'Checked
         Width           =   735
      End
      Begin VB.CheckBox AutoWrite 
         Caption         =   "写入"
         Height          =   255
         Left            =   120
         TabIndex        =   8
         Top             =   480
         Value           =   1  'Checked
         Width           =   735
      End
      Begin VB.CheckBox AutoEraze 
         Caption         =   "擦除"
         Height          =   255
         Left            =   120
         TabIndex        =   7
         Top             =   240
         Value           =   1  'Checked
         Width           =   735
      End
   End
   Begin VB.CommandButton Read 
      Caption         =   "读出代码"
      Height          =   495
      Index           =   0
      Left            =   1200
      TabIndex        =   5
      Top             =   1200
      Width           =   975
   End
   Begin VB.CommandButton Identify 
      Caption         =   "识别芯片"
      Height          =   495
      Left            =   1200
      TabIndex        =   4
      Top             =   600
      Width           =   975
   End
   Begin VB.Timer ReadTimer 
      Enabled         =   0   'False
      Interval        =   1
      Left            =   1560
      Top             =   2040
   End
   Begin VB.Timer ErazeTimer 
      Enabled         =   0   'False
      Interval        =   10
      Left            =   1080
      Top             =   2040
   End
   Begin VB.Timer WriteTimer 
      Enabled         =   0   'False
      Interval        =   1
      Left            =   600
      Top             =   2040
   End
   Begin VB.Timer Timer1 
      Enabled         =   0   'False
      Interval        =   100
      Left            =   120
      Top             =   2040
   End
   Begin MSComDlg.CommonDialog Cmd1 
      Left            =   2760
      Top             =   2040
      _ExtentX        =   847
      _ExtentY        =   847
      _Version        =   393216
   End
   Begin MSCommLib.MSComm Com1 
      Left            =   3360
      Top             =   2040
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      DTREnable       =   -1  'True
      InBufferSize    =   1
      BaudRate        =   38400
   End
   Begin MSComctlLib.ProgressBar Progress 
      Height          =   255
      Left            =   120
      TabIndex        =   2
      Top             =   2040
      Width           =   3975
      _ExtentX        =   7011
      _ExtentY        =   450
      _Version        =   393216
      Appearance      =   1
   End
   Begin VB.CommandButton LoadFile 
      Caption         =   "载入文件"
      Height          =   495
      Left            =   120
      TabIndex        =   1
      Top             =   1200
      Width           =   975
   End
   Begin VB.ComboBox Type1 
      Height          =   300
      Left            =   120
      TabIndex        =   0
      Text            =   "请设定芯片型号"
      Top             =   120
      Width           =   2055
   End
   Begin VB.Label Label2 
      Alignment       =   2  'Center
      Caption         =   "COM1"
      Height          =   255
      Left            =   120
      TabIndex        =   17
      Top             =   840
      Width           =   975
   End
   Begin VB.Label Label1 
      Alignment       =   2  'Center
      Caption         =   "通讯端口:"
      Height          =   255
      Left            =   120
      TabIndex        =   16
      Top             =   600
      Width           =   975
   End
   Begin VB.Label Status 
      Alignment       =   2  'Center
      Caption         =   "AT89Cx051 编程器 V1.0"
      Height          =   255
      Left            =   120
      TabIndex        =   3
      Top             =   1800
      Width           =   2055
   End
End
Attribute VB_Name = "Bear"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

    Dim Busy As Boolean                     '系统繁忙
    Dim Opration As String                  '操作模式
    
    Dim Codes As String                     '文件代码缓冲
    Dim SignatureCode(0 To 1) As Byte       '签名字节
    Dim SigAddr As Integer
    
    Dim AddrH, AddrL As Integer             '地址高位和低位
    Dim Address(0 To 4095) As Integer       '地址
    Dim Code(0 To 4095) As Byte             '代码
    Dim Sendbuffer(1 To 1) As Byte          '数据发送缓冲器
    
    Dim TypeProcedue As Integer             '设定芯片型号时的步骤
    Dim WriteProcedue As Integer            '写入时协议步骤
    Dim Code_Num As Integer                 '当前行代码数量
    Dim Code_all, Code_Max As Long          '当前文件代码总数,读入时最大代码数量
    
    Dim i, Addr As Integer
    Dim Verify_Code As Integer              '检验位计算变量

    Dim Command As String                   '命令
    Dim Disconnect As Integer               '连接超时计数器


Private Sub Auto_Click()

    If Busy = True Then Exit Sub
    AutoTimer.Enabled = True
    Opration = "NonOpration"

End Sub

Private Sub AutoTimer_Timer()
    
    If Busy = True Then Exit Sub
    If Opration = "NonOpration" Then
        If AutoEraze.Value = 1 Then
            Eraze_Click
        End If
        Opration = "Eraze"
    ElseIf Opration = "Eraze" Then
        If AutoWrite.Value = 1 Then
            Write_Click
        End If
        Opration = "Write"
    ElseIf Opration = "Write" Then
        If AutoVerify.Value = 1 Then
            Read_Click (1)
        End If
        Opration = "Verify"
    ElseIf Opration = "Verify" Then
        If AutoLock.Value = 1 Then
            WriteLockBits_Click
        End If
        Opration = "WriteLockBits"
    ElseIf Opration = "WriteLockBits" Or Opration = "Failed" Then
        AutoTimer.Enabled = False
    End If
    
End Sub


'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'初始化时自动连接设备,识别芯片型号,已经确定
Private Sub Form_Load()

    'On Error GoTo NextPort
    
    Type1.AddItem "AT89C1051"
    Type1.AddItem "AT89C1051U"
    Type1.AddItem "AT89C2051"
    Type1.AddItem "AT89C2051x2"
    Type1.AddItem "AT89C4051"               '初始化芯片选择框
    
    For i = 0 To 4095
        Code(i) = 255                       '所有内容预置为 FF
    Next i
    
    Code_all = 0
'    For i = 1 To 100
'        Com1.CommPort = i
'        Com1.PortOpen = True
'        'Exit Sub
'        Com1.PortOpen = False
'NextPort:
'    Next i
    
    Com1.PortOpen = True
    Busy = True
    Opration = "Connect"
    Timer1.Enabled = True                   '开始检测连接
    
        
End Sub


'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
''手动连接设备,识别芯片型号,已经确定
Private Sub Identify_Click()

    If Busy = True Then Exit Sub
    Busy = True
    If Com1.PortOpen = False Then
        Com1.PortOpen = True
    End If
    Status.Caption = "正在连接,请稍候!"
    Opration = "Connect"
    Progress.Value = 0
    Timer1.Enabled = True

End Sub




'手动设定芯片型号,已经确定
Private Sub Type1_Click()
    
    Select Case Type1.Text
        Case "AT89C1051":   SignatureCode(1) = 17
        Case "AT89C1051U":  SignatureCode(1) = 18
        Case "AT89C2051":   SignatureCode(1) = 33
        Case "AT89C2051x2": SignatureCode(1) = 34
        Case "AT89C4051":   SignatureCode(1) = 65
    End Select
    If SignatureCode(1) > 0 Then
        Com1.Output = Trim("T")
        Opration = "SetMcuType"
        TypeProcedue = 0
        Disconnect = 0
        Progress.Value = 0
        Timer1.Enabled = True
    End If
    
End Sub

Private Sub SetType()
    If SignatureCode(1) = 17 Then
        Status.Caption = "AT89C1051"
        Type1.Text = "AT89C1051"
        Code_Max = 1024
    ElseIf SignatureCode(1) = 18 Then
        Status.Caption = "AT89C1051U"
        Type1.Text = "AT89C1051U"
        Code_Max = 1024
    ElseIf SignatureCode(1) = 33 Then
        Status.Caption = "AT89C2051"
        Type1.Text = "AT89C2051"
        Code_Max = 2048
    ElseIf SignatureCode(1) = 34 Then
        Status.Caption = "AT89C2051x2"
        Type1.Text = "AT89C2051x2"
        Code_Max = 2048
    ElseIf SignatureCode(1) = 65 Then
        Status.Caption = "AT89C4051"
        Type1.Text = "AT89C4051"
        Code_Max = 4096
    Else
        Status.Caption = "无法识别,请直接设定"
    End If
                
End Sub


Private Sub Timer1_Timer()

    If Com1.InBufferCount > 0 Then
        Command = Com1.Input
        Progress.Value = 0
        Disconnect = 0
        If Opration = "Connect" Then                                '检测设备连接
            If Command = "C" Then                                   '回应正确
                Status.Caption = "设备已连接!欢迎使用!"
                Opration = "Signature"
                Com1.InputMode = comInputModeBinary
                Com1.Output = Trim("S")                             '发送读标志代码命令
                SigAddr = 0

⌨️ 快捷键说明

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