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

📄 form10.frm

📁 AD5933评估板下位机程序(keil C)和上位机程序(VB)
💻 FRM
📖 第 1 页 / 共 4 页
字号:
                ImagineryDataLower = PortRead(&HD, &H97)
                ImagineryData = ImagineryDataLower + (ImagineryDataUpper * 256)
                
                If ImagineryData < &H7FFF Then
                ' Positive Data.
                Else
                ' Negative
                ImagineryData = ImagineryData And &H7FFF
                ImagineryData = ImagineryData - &H7FFF
                End If
                Magnitude = ((RealData ^ 2) + (ImagineryData ^ 2)) ^ 0.5
                
'                If (Form1.Option7.Value = True And Form1.Option8.Value = False) Then
'                ' mid point cal
'                sweep_phase = -(calibration_phase_mid_point - phase2(ImagineryData, RealData))
'                GainFactor = Val(Text5.Text)
'                Impedance = 1 / (Magnitude * GainFactor)
'
'                End If
'               If (Form1.Option7.Value = False And Form1.Option8.Value = True) Then
'                ' multipoint cal
'                sweep_phase = -(calibration_phase_multi_point(IndexArray) - phase2(ImagineryData, RealData))
'                GainFactor = calibration_GainFactors(IndexArray)
'                Impedance = 1 / (Magnitude * GainFactor)
'               End If
                         
'                ' Write Data to each array.
'                MagnitudeArray(IndexArray) = Impedance
'                PhaseArray(IndexArray) = sweep_phase
'                ImagineryDataArray(IndexArray) = ImagineryData
                code(IndexArray) = Magnitude
'                RealDataArray(IndexArray) = RealData
                Increment = Increment - 1 ' incremet was set to number of increments of sweep at the start
'                FrequencyPoints(IndexArray) = Frequency
                Frequency = Frequency + FrequencyIncrements ' holds the current value of the sweep freq
                IndexArray = IndexArray + 1
                
                '------------- Check to see if sweep complete ----------------------
                ReadbackStatusRegister = PortRead(&HD, &H8F)
                ReadbackStatusRegister = ReadbackStatusRegister And &H4 ' mask off bit D2
                ' Increment to next frequency point Frequency
                WritetToControlRegister &H80, &H30
                Loop
            '--- the sweep is complete at this point now we plot the data --------------
            
            
            
            'Calculate the average impedance
            Average_impedance = code(0)
            Sum_impedance = 0
            For i = 0 To NumberIncrements - 1
            Sum_impedance = Sum_impedance + code(i)
            Next i
            Average_impedance = Sum_impedance / NumberIncrements
            Sum_impedance = 0
            '----------------------------------------------------------------------------
            Text10.Text = Average_impedance
            Average_impedance = 0

            MsgBox " sweep complete "
            Command6.Enabled = True
                       
            Exit Sub
sweepErrorMsg2:
    MsgBox "Error completing Calibration sweep check values"
End Sub

' Writes one byte of data to part and reads back to verify
Private Sub WritetToPart(RegisterAddress As Long, RegisterData As Long)
Dim ReadbackFrequency As Long
PortWrite &HD, RegisterAddress, RegisterData
ReadbackFrequency = PortRead(&HD, RegisterAddress)
If ReadbackFrequency <> RegisterData Then
    MsgBox "Error:Invaid data write/readback sequence to part.check power connections: "
End If
End Sub
Private Sub WritetToControlRegister(RegisterAddress As Long, RegisterData As Long)
Dim ReadbackFrequency As Long
RegisterData = RegisterData + Gain + OutputVoltage
PortWrite &HD, RegisterAddress, RegisterData
ReadbackFrequency = PortRead(&HD, RegisterAddress)
If ReadbackFrequency <> RegisterData Then
    MsgBox "error"
End If
End Sub
Private Sub WritetToControlRegister2(RegisterAddress As Long, RegisterData As Long)
Dim ReadbackFrequency As Long
RegisterData = RegisterData
PortWrite &HD, RegisterAddress, RegisterData
ReadbackFrequency = PortRead(&HD, RegisterAddress)
If ReadbackFrequency <> RegisterData Then
    MsgBox "error"
End If
End Sub
Public Sub msDelay(DelVal As Long)
    Tstart = Timer
    Do: Loop Until Timer > (Tstart + DelVal / 1000)
End Sub
Private Sub EnterStandbyMode()
' Enter Standby Mode Set Bits D15,D13,D12 in Control Register.
WritetToPart &H80, &HB0
'WritetToPart &H81, &H0
End Sub
Private Sub UpdateStartFrequency()

Dim TempStartFrequency As Double
Dim StartFrequencybyte0 As Long
Dim StartFrequencybyte2 As Long
Dim StartFrequencybyte1A As Long
Dim StartFrequencybyte1B As Long
Dim DDSRefClockFrequency As Double



DDSRefClockFrequency = Abs(Val(Form1.Text7.Text))
' Val converts Text1 string to hex format
StartFrequency = Val(Form1.Text1.Text)
TempStartFrequency = (StartFrequency / (DDSRefClockFrequency / 4)) * &HFFFFFF * 8
TempStartFrequency = Int(TempStartFrequency)
If (StartFrequency < 0) Then
Form1.Text1.Text = "0"
' Convert Start Frequency to 3 Byte local Variables.
StartFrequencybyte0 = 0
StartFrequencybyte1A = 0
StartFrequencybyte2 = 0

' Write in data to Start frequency register and verify
' correct contents written
WritetToPart &H84, StartFrequencybyte0   '84 hex lsb
WritetToPart &H83, StartFrequencybyte1A  '83 hex
WritetToPart &H82, StartFrequencybyte2   '82 hex msb
Else
'-------------------------------------------------------------------------------------------------
StartFrequencybyte0 = TempStartFrequency And &HFF
StartFrequencybyte1A = ((TempStartFrequency And &HFF00) / 256)
StartFrequencybyte2 = ((TempStartFrequency And &HFF0000) / 65536)

StartFrequencybyte1B = StartFrequencybyte1A ' TEMPORY COPY OF StartFrequencybyte1A

If (StartFrequencybyte1A >= &HFF) Then  ' is Dim StartFrequencybyte1a too big to transmit as 1 byte i.e ffhex
                                        'if it is it must be broken up resulting in any overflow into a second byte being carried over to the third byte
                                        'remember that the part will only store the bottom three bytes


StartFrequencybyte1B = StartFrequencybyte1B And &HFF
MSBfromStartFrequencybyte1B = (StartFrequencybyte1A And &HFF00) / 256
StartFrequencybyte2 = (StartFrequencybyte2 * 256) + MSBfromStartFrequencybyte1B
StartFrequencybyte2 = ((StartFrequencybyte2 * 256) + MSBfromStartFrequencybyte1B) And &HFF

End If


' Write in data to Start frequency register and verify
' correct contents written
WritetToPart &H84, StartFrequencybyte0   '84 hex lsb
WritetToPart &H83, StartFrequencybyte1B  '83 hex
WritetToPart &H82, StartFrequencybyte2   '82 hex msb

'-------------------------------------------------------------------------------------------------
End If
End Sub

Private Sub UpdateFrequencyIncrement()

Dim FrequencyIncrementbyt0 As Long
Dim FrequencyIncrementbyt1A As Long
Dim FrequencyIncrementbyt1B As Long
Dim FrequencyIncrementbyt2 As Long
Dim TempStartFrequency As Double
Dim DDSRefClockFrequency As Double



' Val converts Text1 string to decimal format
FrequencyIncrements = Val(Form1.Text2.Text)
DDSRefClockFrequency = Abs(Val(Form1.Text7.Text))

TempStartFrequency = ((FrequencyIncrements / (DDSRefClockFrequency / 4)) * &HFFFFFF) * 8
TempStartFrequency = Int(TempStartFrequency)
'----------------------------------------------------------------------------------------
If (FrequencyIncrements < 0) Then
Text2.Text = "0"

' Convert  increment Frequency to 3 Byte local Variables.
 FrequencyIncrementbyt0 = 0  '84 hex lsb
 FrequencyIncrementbyt1B = 0 '83 hex
 FrequencyIncrementbyt2 = 0 '82 hex msb


' Write in data to frequency increment register and verify
' correct contents written
WritetToPart &H87, FrequencyIncrementbyt0   '84 hex lsb
WritetToPart &H86, FrequencyIncrementbyt1B  '83 hex
WritetToPart &H85, FrequencyIncrementbyt2   '82 hex msb


Else
'----------------------------------------------------------------------------------------
' Convert Frequencyincrement to 3 Byte local Variables.
FrequencyIncrementbyt0 = TempStartFrequency And &HFF
FrequencyIncrementbyt1A = ((TempStartFrequency And &HFF00) / 256)
FrequencyIncrementbyt2 = ((TempStartFrequency And &HFF0000) / 65536)

FrequencyIncrementbyt1B = FrequencyIncrementbyt1A ' TEMPORY COPY OF FrequencyIncrementbyte1A

If (FrequencyIncrementbyt1A >= &HFF) Then  ' is Dim StartFrequencybyte1a too big to transmit as 1 byte i.e ffhex
                                           ' if it is it must be broken up resulting in any overflow into a second byte being carried over to the third byte
                                           ' remember that the part will only store the bottom three bytes


FrequencyIncrementbyt1B = FrequencyIncrementbyt1B And &HFF
MSBfromFrequencyIncrementbyt1B = (FrequencyIncrementbyt1A And &HFF00) / 256
FrequencyIncrementbyt2 = (FrequencyIncrementbyt2 * 256) + MSBfromFrequencyIncrementbyt1B
FrequencyIncrementbyt2 = ((FrequencyIncrementbyt2 * 256) + MSBfromFrequencyIncrementbyt1B) And &HFF

End If


' Write in data to Start frequency register and verify
' correct contents written
WritetToPart &H87, FrequencyIncrementbyt0   '84 hex lsb
WritetToPart &H86, FrequencyIncrementbyt1B  '83 hex
WritetToPart &H85, FrequencyIncrementbyt2   '82 hex msb
End If


End Sub

Private Sub UpdateNumberIncrements()

Dim NumberIncrementsbyte0 As Long
Dim NumberIncrementsbyte1 As Long

' Val converts Text1 string to hex format
NumberIncrements = Val(Form1.Text3.Text)
If (NumberIncrements >= 511) Then
        NumberIncrements = 511
        Text3.Text = "511"
ElseIf (NumberIncrements <= 0) Then
        NumberIncrements = 1
        Text3.Text = "1"
        Else
            NumberIncrements = Val(Form1.Text3.Text)
        End If
              ' Convert Number Increments to 2 Byte local Variables.
            NumberIncrementsbyte0 = NumberIncrements And &HFF
              NumberIncrementsbyte1 = ((NumberIncrements And &HF00) / 511)
 
 
' Write in data to Number Increments register and verify
' correct contents written
WritetToPart &H89, NumberIncrementsbyte0
WritetToPart &H88, NumberIncrementsbyte1


End Sub

Private Sub UpdateSettlingTime()
Dim SettlingTimebyte0 As Long
Dim SettlingTimebyte1 As Long

' Val converts Text1 string to hex format
SettlingTime = Val(Form1.Text4.Text)
If (SettlingTime >= 511) Then
 SettlingTime = 511
Text4.Text = "511"

Else
 SettlingTime = Val(Form1.Text4.Text)
End If
        
        ' Convert Number Increments to 2 Byte local Variables.
        SettlingTimebyte0 = SettlingTime And &HFF
        SettlingTimebyte1 = ((SettlingTime And &HFF00) / 511)
         
        ' Write in data to Number Increments register and verify
        ' correct contents written
        WritetToPart &H8B, SettlingTimebyte0
        'SettlingTimebyte1 = (SettlingTimebyte1 Or &H0)  ' Default to number of cycles  x1
        WritetToPart &H8A, SettlingTimebyte1
End Sub

Private Sub Command4_Click()
On Error GoTo sweepErrorMsg3
            Dim ReadbackStatusRegister As Long
            Dim RealData As Double
            Dim RealDataUpper As Long
            Dim RealDataLower As Long
            Dim ImagineryData As Double
            Dim ImagineryDataLower As Long
            Dim ImagineryDataUpper As Long
            Dim Magnitude As Double
            Dim Impedance As Double
            Dim Admittance As Double
            Dim MaxMagnitude As Double
            Dim MinMagnitude As Double
            Dim MaxConductivity As Double
            Dim MinConductivity As Double
            Dim Sum_impedance As Double
            Dim Sum_Admittance As Double
            Dim Average_impedance As Double
            Dim Average_Admittance As Double
            Dim phase As Long
            Dim Frequency As Double
            Dim Increment As Long ' number of increments
            Dim i As Integer
            Dim xy As Variant
            Dim varray As Variant
            Dim AD5933_Gain_cal As Double
            Dim AD5933_offset_cal As Double
            
            
            IndexArray = 0

⌨️ 快捷键说明

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