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

📄 datads2770.bas

📁 利用VB开发的针对Maxim-Dallas DS2770电量检测芯片
💻 BAS
字号:
Attribute VB_Name = "DataDS2770"
Option Explicit

'DS2770 Variables
Public ElapsedTime As Double
Public ChargeTime As Double
Public Voltage As Double
Public Current As Double
Public ACR As Single
Public Temperature As Double

Public gStatus As Byte
Public gETRMSB As Byte
Public gETRLSB As Byte
Public gETRLWMSB As Byte
Public gETRLWLSB As Byte
Public gCTR As Byte
Public gCTRLSB As Byte
Public gEEPROM As Byte

Public gVoltMSB As Byte
Public gVoltLSB As Byte
Public gCurrentMSB As Byte
Public gCurrentLSB As Byte
Public gACRMSB As Byte
Public gACRLSB As Byte

Public gTempMSB As Byte
Public gTempLSB As Byte

Public Hours As Integer
Public Minutes As Integer
Public Seconds As Integer

Public ChargeHours As Integer
Public ChargeMinutes As Integer
Public ChargeSeconds As Integer

Public CurrentOffsetBias As Single

Public DataIn(256) As Variant
Public DataRead(256) As Variant
Public Memory(256) As Variant

Public SenseResistor As Single

Public BatteryCapacity As Single
Public StandardPower As Single

Public LastTAD As Double

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''prepares Real-Time data for display
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub MakeCalculations()
Dim temp As Single
Dim Register As Long
Dim register2 As Long

    'Calculations to get Data into a readable form
    If SenseResistor <= 0 Then
        SenseResistor = 0.025
    End If
    
    temp = gVoltMSB
    gVoltLSB = gVoltLSB And &HE0
    If gVoltMSB > 127 Then
        Register = ((temp * 256) + gVoltLSB - 65536)
    Else
        Register = ((temp * 256) + gVoltLSB)
    End If
    Voltage = (Register / 32) * 0.00488
    
    frmEvalKit.txtVoltage.Caption = Hex(Register) & "h"
    frmEvalKit.txtRoundVoltage.Caption = Format(Voltage, "#0.0000") & " Volts"
    
'''''''''''''''''''''''''''''''''''
    temp = gCurrentMSB
    If gCurrentMSB > 127 Then
        Register = (((temp * 256) + gCurrentLSB - 65536) And &HFFFF)
    Else
        Register = (((temp * 256) + gCurrentLSB) And &HFFFF)
    End If
  
    Current = (Register) * 0.0000015625 / SenseResistor
    
    frmEvalKit.txtCurrent.Caption = Hex(Register) & "h"
    frmEvalKit.txtRoundCurrent.Caption = Format(1000 * Current, "#0.000") & " mAmps"

'''''''''''''''''''''''''''''''''''
    temp = gACRMSB
    If gACRMSB > 127 Then
        Register = ((temp * 256) + gACRLSB - 65536)
    Else
        Register = ((temp * 256) + gACRLSB)
    End If
    
    ACR = Register * 0.00625 / SenseResistor
    
    frmEvalKit.txtICAhex.Caption = Hex(Register) & "h"
    frmEvalKit.txtICA.Caption = Format(ACR, "#0.00") & " mAhr"
    
'''''''''''''''''''''''''''''''''''
    temp = gTempMSB
    If gTempMSB > 127 Then
        Register = ((temp * 256) + gTempLSB - 65536)
    Else
        Register = ((temp * 256) + gTempLSB)
    End If
    Temperature = (Register / 32) * 0.125
    
    frmEvalKit.txtTemp.Caption = Hex(Register) & "h"
    frmEvalKit.txtRoundTemp.Caption = Format(Temperature, "#0.0000") & " C"
    frmEvalKit.txtFTemp.Caption = Format((Temperature * (9 / 5) + 32), "0.000") & " F"
    
'''''''''''''''''''''''''''''''''''
    temp = gETRMSB
    Register = ((temp * 256) + gETRLSB)
    ElapsedTime = Register * 56.25 'seconds
    
    'temp = gETRLWMSB
    'register2 = ((temp * 256) + gETRLWLSB)
    'ElapsedTime = ElapsedTime + (temp * 0.22)
    
    'temp = gETRLWLSB
    'ElapsedTime = ElapsedTime + (temp * 0.000858)
    
    ElapsedTime = ElapsedTime / 3600 'hours
    
    Hours = Int(ElapsedTime)
    Minutes = Int((ElapsedTime - Hours) * 60)
    'Seconds = Int((ElapsedTime - Hours - (Minutes / 60)) * 3600)
    
    frmEvalKit.txtETR.Caption = Hex(Register) & "h"
    frmEvalKit.txtElapsedTime.Caption = Format(Hours, "00") & " h " & Format(Minutes, "00") & " m " ' & Format(Seconds, "00")
    
'''''''''''''''''''''''''''''''''''
    Register = gCTR
    
    ChargeTime = Register * 56.25 'seconds
    
    'temp = gCTRLSB
    'register2 = temp
    'ChargeTime = ChargeTime + (temp * 0.22)
    
    ChargeTime = (ChargeTime) / 3600  'hours
     
    ChargeHours = Int(ChargeTime)
    ChargeMinutes = Int((ChargeTime - ChargeHours) * 60)
    'ChargeSeconds = Int((ChargeTime - ChargeHours - (ChargeMinutes / 60)) * 3600)
    
    frmEvalKit.txtCTR.Caption = Hex(Register) & "h"
    frmEvalKit.txtChargeTime.Caption = Format(ChargeHours, "00") & " h " & Format(ChargeMinutes, "00") & " m "  '& Format(ChargeSeconds, "00")
    
'''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''
    If (gStatus And &HC0) = &HC0 Then
        frmEvalKit.lblChargeStatus.ForeColor = &H0
        frmEvalKit.lblChargeStatus.Caption = "Charge sequence completed"
        frmEvalKit.lblChargeStatus.Alignment = 1
        frmEvalKit.cmdClearCSTAT.Visible = True
    ElseIf (gStatus And &HC0) = &H80 Then
        frmEvalKit.lblChargeStatus.ForeColor = &H0
        frmEvalKit.lblChargeStatus.Caption = "Charge source is present"
        frmEvalKit.lblChargeStatus.Alignment = 2
        frmEvalKit.cmdClearCSTAT.Visible = False
    ElseIf (gStatus And &HC0) = &H40 Then
        frmEvalKit.lblChargeStatus.ForeColor = &HFF
        frmEvalKit.lblChargeStatus.Caption = "Charge in progress"
        frmEvalKit.lblChargeStatus.Alignment = 2
        frmEvalKit.cmdClearCSTAT.Visible = False
    Else
        frmEvalKit.lblChargeStatus.ForeColor = &H0
        frmEvalKit.lblChargeStatus.Caption = "No charge source present"
        frmEvalKit.lblChargeStatus.Alignment = 2
        frmEvalKit.cmdClearCSTAT.Visible = False
    End If
    
    If (gStatus And &H1) = &H1 Then
        frmEvalKit.lblChargeType.Caption = "NiMH Charger"
    Else
        frmEvalKit.lblChargeType.Caption = "Li-Ion Charger"
    End If
End Sub

⌨️ 快捷键说明

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