📄 form1.frm
字号:
VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 6495
ClientLeft = 60
ClientTop = 345
ClientWidth = 9870
LinkTopic = "Form1"
ScaleHeight = 6495
ScaleWidth = 9870
StartUpPosition = 3 'Windows Default
Begin VB.ListBox List6
Height = 4935
Left = 2640
TabIndex = 12
Top = 1440
Width = 975
End
Begin VB.ListBox List5
Height = 4935
Left = 7800
TabIndex = 11
Top = 1440
Width = 975
End
Begin VB.ListBox List4
Height = 4935
Left = 6240
TabIndex = 9
Top = 1440
Width = 1095
End
Begin VB.ListBox List3
Height = 4935
Left = 4200
TabIndex = 7
Top = 1440
Width = 1095
End
Begin VB.CommandButton Command2
Caption = "开始检测"
Height = 375
Left = 4320
TabIndex = 5
Top = 240
Width = 1335
End
Begin VB.ListBox List2
Height = 4935
Left = 1440
TabIndex = 4
Top = 1440
Width = 1095
End
Begin VB.ListBox List1
Height = 4935
Left = 120
TabIndex = 3
Top = 1440
Width = 1215
End
Begin VB.TextBox Text1
Height = 375
Left = 1440
TabIndex = 1
Text = "1"
Top = 120
Width = 1095
End
Begin VB.CommandButton Command1
Caption = "开始计算"
Height = 375
Left = 2160
TabIndex = 0
Top = 720
Width = 975
End
Begin VB.Label Label6
Caption = "Label6"
Height = 375
Left = 1320
TabIndex = 14
Top = 720
Width = 855
End
Begin VB.Label Label5
Caption = "Label5"
Height = 375
Left = 240
TabIndex = 13
Top = 720
Width = 855
End
Begin VB.Label Label4
Caption = "通过检测后的值"
Height = 375
Left = 7920
TabIndex = 10
Top = 720
Width = 855
End
Begin VB.Label Label3
Caption = "滤波后的12个k值"
Height = 375
Left = 6360
TabIndex = 8
Top = 720
Width = 855
End
Begin VB.Label Label2
Caption = "范围控制后的值:"
Height = 375
Left = 4080
TabIndex = 6
Top = 720
Width = 855
End
Begin VB.Label Label1
Caption = "产生mfc信号"
Height = 375
Left = 240
TabIndex = 2
Top = 120
Width = 1095
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Option Base 1
Sub Init()
MfcFrq(1) = 697
MfcFrq(2) = 770
MfcFrq(3) = 852
MfcFrq(4) = 941
MfcFrq(5) = 1209
MfcFrq(6) = 1336
MfcFrq(7) = 1447
MfcFrq(8) = 1663
MfcFFrq(1) = 1
MfcSFrq(1) = 5
MfcFFrq(2) = 1
MfcSFrq(2) = 6
MfcFFrq(3) = 1
MfcSFrq(3) = 7
MfcFFrq(4) = 2
MfcSFrq(4) = 5
MfcFFrq(5) = 2
MfcSFrq(5) = 6
MfcFFrq(6) = 2
MfcSFrq(6) = 7
MfcFFrq(7) = 3
MfcSFrq(7) = 5
MfcFFrq(8) = 3
MfcSFrq(8) = 6
MfcFFrq(9) = 3
MfcSFrq(9) = 7
MfcFFrq(10) = 1
MfcSFrq(10) = 8
MfcFFrq(11) = 2
MfcSFrq(11) = 8
MfcFFrq(12) = 3
MfcSFrq(12) = 8
MfcFFrq(13) = 4
MfcSFrq(13) = 6
MfcFFrq(14) = 4
MfcSFrq(14) = 7
MfcFFrq(15) = 4
MfcSFrq(15) = 8
End Sub
Sub computeMFC(index As Long, frq As Long)
Dim y1 As Double
Dim y2 As Double
Dim temp As Double
Dim y As Double
Dim i As Double
Dim resultstr As String
y1 = 0
y2 = -Sin(2 * 3.1415926 * frq / 8000)
i = 0
While (i <= N)
y = 2 * Cos(2 * 3.1415926 * frq / 8000) * y1 - y2
y2 = y1
y1 = y
resultstr = Str(CLng(y1 * 1024)) 'q值为10
If (index = 1) Then
List1.AddItem (resultstr)
Else
List2.AddItem (resultstr)
End If
i = i + 1
Wend
End Sub
Sub RangeCtl()
End Sub
Private Sub Command1_Click()
Dim frq As Long
Dim i As Long
Dim total As Long
List1.Clear
List2.Clear
List6.Clear
frq = MfcFrq(MfcFFrq(Int(Text1.Text)))
computeMFC 1, frq
Label5.Caption = Str(frq)
frq = MfcFrq(MfcSFrq(Int(Text1.Text)))
computeMFC 2, frq
Label6.Caption = Str(frq)
i = 1
While (i <= N)
total = Int(List1.List(i))
total = total + Int(List2.List(i))
List6.AddItem (Str(total))
DecData(i) = total
i = i + 1
Wend
End Sub
Sub GainCtl()
Dim gain_pow As Double
Dim gain_lim As Double
Dim gain_amp As Double
Dim gain_lev As Double
Dim gain_scale As Double
Dim gain_const As Double
Dim gain_delta As Double
Dim i As Long
gain_pow = 0
gain_lev = 1 / N
gain_lim = 1 / (64 * N)
gain_const = 0.5 * Sqr(2) * Sqr(64 / N)
gain_delta = 0.5
i = 1
While (i <= N)
gain_pow = gain_pow + DecData(i) / 1024
i = i + 1
Wend
gain_pow = Abs(gain_pow / 64)
If gain_pow < gain_lim Then GoTo gainCtlEnd
gain_amp = Sqr(gain_pow) * gain_const
gain_scale = gain_lev / gain_amp
i = 1
While (i <= N)
DecData(i) = gain_scale * DecData(i)
List3.AddItem Str(CLng(DecData(i)))
i = i + 1
Wend
gainCtlEnd:
End Sub
Sub goertzel_ini()
Dim i As Long
i = 1
While (i <= 16)
vkn_1(i) = 0
vkn_2(i) = 0
i = i + 1
Wend
End Sub
Sub Goertzel()
Dim vkn As Double
Dim i As Long
Dim frq As Long
goertzel_ini
'vkn_1 = 0
'vkn_2 = 0
i = 1
While (i <= N)
MfcFrq(1) = 697
MfcFrq(2) = 770
MfcFrq(3) = 852
MfcFrq(4) = 941
MfcFrq(5) = 1209
MfcFrq(6) = 1336
MfcFrq(7) = 1447
MfcFrq(8) = 1663
frq = MfcFrq(1)
vkn = 2 * Cos(2 * 3.1415926 * frq / 8000) * vkn_1(1) - vkn_2(1) + DecData(i) / 1024
vkn_2(1) = vkn_1(1)
vkn_1(1) = vkn
frq = MfcFrq(2)
vkn = 2 * Cos(2 * 3.1415926 * frq / 8000) * vkn_1(2) - vkn_2(2) + DecData(i) / 1024
vkn_2(2) = vkn_1(2)
vkn_1(2) = vkn
frq = MfcFrq(3)
vkn = 2 * Cos(2 * 3.1415926 * frq / 8000) * vkn_1(3) - vkn_2(3) + DecData(i) / 1024
vkn_2(3) = vkn_1(3)
vkn_1(3) = vkn
frq = MfcFrq(4)
vkn = 2 * Cos(2 * 3.1415926 * frq / 8000) * vkn_1(4) - vkn_2(4) + DecData(i) / 1024
vkn_2(4) = vkn_1(4)
vkn_1(4) = vkn
frq = MfcFrq(5)
vkn = 2 * Cos(2 * 3.1415926 * frq / 8000) * vkn_1(5) - vkn_2(5) + DecData(i) / 1024
vkn_2(5) = vkn_1(5)
vkn_1(5) = vkn
frq = MfcFrq(6)
vkn = 2 * Cos(2 * 3.1415926 * frq / 8000) * vkn_1(6) - vkn_2(6) + DecData(i) / 1024
vkn_2(6) = vkn_1(6)
vkn_1(6) = vkn
frq = MfcFrq(7)
vkn = 2 * Cos(2 * 3.1415926 * frq / 8000) * vkn_1(7) - vkn_2(7) + DecData(i) / 1024
vkn_2(7) = vkn_1(7)
vkn_1(7) = vkn
frq = MfcFrq(8)
vkn = 2 * Cos(2 * 3.1415926 * frq / 8000) * vkn_1(8) - vkn_2(8) + DecData(i) / 1024
vkn_2(8) = vkn_1(8)
vkn_1(8) = vkn
i = i + 1
Wend
i = 1
While (i <= 4)
frq = MfcFrq(i)
vkn2(i) = vkn_1(i) * vkn_1(i) - _
2 * Cos(2 * 3.1415926 * frq / 8000) * vkn_1(i) * vkn_2(i) _
+ vkn_2(i) * vkn_2(i)
List4.AddItem Str(CLng(vkn2(i)))
i = i + 1
Wend
List4.AddItem "========="
i = 5
While (i <= 8)
frq = MfcFrq(i)
vkn2(i) = vkn_1(i) * vkn_1(i) - _
2 * Cos(2 * 3.1415926 * frq / 8000) * vkn_1(i) * vkn_2(i) _
+ vkn_2(i) * vkn_2(i)
List4.AddItem Str(CLng(vkn2(i)))
i = i + 1
Wend
End Sub
Sub checks()
Dim i As Long
i = 1
'max1=
' While (i <= 12)
' If vkn2(i) > max1 Then
End Sub
Private Sub Command2_Click()
List4.Clear
List3.Clear
'Call GainCtl
Call Goertzel
End Sub
Private Sub Form_Load()
Init
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -