Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kursovaya_3.doc
Скачиваний:
16
Добавлен:
06.09.2019
Размер:
1.36 Mб
Скачать

Литература

  1. Ан П. Сопряжение ПК с внешними устройствами: Пер. с англ. – М.: ДМК Пресс, 2001. – 320 с.

  2. Баранов В.Н. Применение микроконтроллеров AVR: схемы, алгоритмы, программы, 2-е изд. испр. – М.: Издательский дом «Додэка-XXI», 2006. – 288 с.

  3. Белов А.В. Самоучитель разработчика устройств на микроконтроллерах AVR. – СПб.: Наука и Техника, 2008. – 544 с.

  4. Гёлль П. Как превратить персональный компьютер в измерительный комплекс: Пер. с фр. – 2-е изд., испр. – М.: ДМК Пресс, 2001. – 144 с.

  5. Гук М. Аппаратные интерфейсы ПК. Энциклопедия. – СПб.: Питер, 2002. – 528 с.

  6. Евстифеев А.В. Микроконтроллеры AVR семейства Mega фирмы. Руководство пользователя. – М.: Издательский дом «Додэка-XXI», 2007. – 592 с.

  7. Кузьменко В.Г. Visual Basic 6. Самоучитель. – 2-е изд. – М.: ООО «Бином-Пресс», 2003. – 432 с.

  8. Лапин А.А. Интерфейсы. Выбор и реализация. – М.: Техносфера, 2005. – 168 с.

  9. Мортон Дж. Микроконтроллеры AVR. Вводный курс. /Пер. с англ. – М.: Издательский дом «Додэка-XXI», 2006. – 272 с.

  10. Ревич Ю.В. Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера. – СПб.: БВХ-Петербург, 2008. – 384 с.

  11. Трамперт В. AVR-RISC микроконтроллеры. /Пер. с нем. – К.: «МК-Пресс», 2006. – 464 с.

  12. Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2007. – 240 с.

  13. Устройство микроконтроллеров AVR [Электронный ресурс] - Режим доступа: http://www.myrobot.ru/stepbystep/mc_architecture.php - Загл. с экрана.

  14. Журнал мир компьютерной автоматизации - Типовые аппаратные решения построения систем сбора данных [Электронный ресурс] - Режим доступа: http://www.mka.ru/?p=40005 - Загл. с экрана.

  15. Журнал мир компьютерной автоматизации - Концепция построения виртуальной измерительной лаборатории [Электронный ресурс] - Режим доступа: http://www.mka.ru/?p=40001 - Загл. с экрана.

  16. Юкио Сато. Без паники! Цифровая обработка сигналов. /Пер. с яп. Селиной Т.Г. М.: Додэка-XXI, 2010. – 176 с.

Приложение 1.

Листинг управляющей программы персонального компьютера.

'Объявление глобальных переменных

Dim clearX(128) As Integer 'входные данные из буфера

Dim X(128) As Integer 'массив действительной части коэффициентов Фурье

Dim Y(128) As Integer 'массив мнимой части коэффициентов Фурье

Dim butX(129) As Double 'массив данных после двоично-инверсной перестановки

Dim InBuff As Variant 'переменная возвращает байты из буфера порта

Dim port As String 'переменная указатель буфера порта

'Процедура для нажатия кнопки «Читать буфер»

Private Sub Command1_Click()

Dim i As Integer

Command1.Enabled = False

Text3.Text = ""

If MSComm1.InBufferCount = 0 Then

Text3.Text = "empty"

Exit Sub

End If

For i = 0 To 127

butX(i) = 0

X(i)=0

Y(i)=0

clearX(i)=0

Next i

InBuff = MSComm1.Input

For i = 0 To 127

clearX(i) = CInt(InBuff(i)) - 128

Text3.Text = Text3.Text & clearX(i) & " "

Next i

Text3.Text = Text3.Text & Chr(13) & Chr(10)

Text3.Text = Text3.Text & "------------------------------" & Chr(13) & Chr(10)

For i = 0 To 127

butX(i) = CInt(InBuff(i + 128)) - 128

Text3.Text = Text3.Text & butX(i) & " "

Next i

Text3.Text = Text3.Text & Chr(13) & Chr(10)

Text3.Text = Text3.Text & "------------------------------" & Chr(13) & Chr(10)

Text1.Text = MSComm1.InBufferCount

Picture1.Cls

Picture1.Scale (0, 5.5)-(13.19, -5.5)

Picture2.Cls

Call Makelines

Picture1.DrawWidth = 2

Picture1.DrawStyle = 0

Picture1.ForeColor = &HFF&

Picture1.PSet (0, (clearX(0) * 5 / 256) + 2.5)

For i = 1 To 127

Picture1.Line -(i * 13.19 / 127, (clearX(i) * 5 / 256) + 2.5)

Next i

Call FFT

End Sub

'Процедура для кнопки «Выбрать порт»

Private Sub Command4_Click()

On Error GoTo 10

If MSComm1.PortOpen = True Then

MSComm1.PortOpen = False

End If

port = InputBox("номер порта")

MSComm1.CommPort = CByte(port)

MSComm1.PortOpen = True

Shape1.FillColor = &HC000&

MsgBox ("Port number " & MSComm1.CommPort & " opened correctly")

Text4.Text = MSComm1.CommPort

Text1.Text = MSComm1.InBufferCount

Text2.Text = MSComm1.InBufferSize

Label3.Caption = "On"

Exit Sub

10

MsgBox ("Bad port " & port)

Text4.Text = "Bad port: " & port

Shape1.FillColor = &HFF

Text1.Text = "-"

Text2.Text = "-"

Label3.Caption = "Off"

End Sub

'Процедура загрузки основного окна

Private Sub Form_Load()

Picture1.Scale (0, 5.5)-(13.19, -5.5)

Picture2.Scale (0, 1)-(4807.5, -20)

Command1.Enabled = False

On Error GoTo 15

port = InputBox("номер порта")

MSComm1.CommPort = CByte(port)

MSComm1.PortOpen = True

Text1.Text = MSComm1.InBufferCount

Text2.Text = MSComm1.InBufferSize

Text4.Text = MSComm1.CommPort

Label3.Caption = "On"

Shape1.FillColor = &HC000&

MsgBox ("Port number " & MSComm1.CommPort & " opened correctly")

Exit Sub

15

MsgBox ("Bad port or NULL:" & port)

Text4.Text = "Bad port: " & port

Shape1.FillColor = &HFF

Text1.Text = "-"

Text2.Text = "-"

End Sub

'Процедура закрытия основного окна

Private Sub Form_Unload(Cancel As Integer)

If MSComm1.PortOpen = True Then

MSComm1.PortOpen = False

End If

Unload Me

End Sub

'Процедура обработки ошибок и событий элемента MS Comm Control

Private Sub MSComm1_OnComm()

Select Case MSComm1.CommEvent

' Ошибки

Case comEventBreak

Case comEventCDTO

Case comEventCTSTO

Case comEventDSRTO

Case comEventFrame

Case comEventOverrun

Case comEventRxOver

Case comEventRxParity

Case comEventTxFull

Case comEventDCB

' События

Case comEvCD

Case comEvCTS

Case comEvDSR

Case comEvRing

Case comEvReceive

Text1.Text = MSComm1.InBufferCount

Text2.Text = MSComm1.InBufferSize

Command1.Enabled = True

Case comEvSend

Case comEvEOF

End Select

End Sub

'Процедура получения координаты курсора в области осциллограммы

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Text5.Text = X

Text6.Text = Y

End Sub

'Процедура рисования координатных осей для области осциллограммы

Public Sub Makelines()

Dim i As Double

Picture1.DrawWidth = 1

Picture1.ForeColor = &H0

Picture1.DrawStyle = 0

'по оси Y

For i = -5 To 5

Picture1.Line (0, i)-(13.19, i)

Next i

'по оси Х

For i = 1 To 13.19

Picture1.Line (i, 5.5)-(i, -5.5)

Next i

Picture1.DrawStyle = 2

For i = 0.5 To 13.19

Picture1.Line (i, 5.5)-(i, -5.5)

Next i

For i = -4.5 To 4.5

Picture1.Line (0, i)-(13.19, i)

Next i

End Sub

'Процедура анализа входного сигнала методом БПФ

Public Sub FFT()

Dim l1 As Byte

Dim l2 As Byte

Dim l3 As Byte

Dim lp As Double

Dim lp2 As Double

Dim darg As Double

Dim arg As Double

Dim IW As Byte

Dim WR As Double

Dim WI As Double

Dim c As Double

Dim s As Double

Dim z(128) As Double

Const m = 7

Const N = 128

For i = 1 To 128

Y(i) = 0

butX(i) = butX(i) - 128

Next i

For l1 = 1 To m

lp = 2 ^ l1

lp2 = lp / 2

darg = -3.141592636 / lp2

arg = 0

For l2 = 1 To lp2

c = Cos(arg)

s = Sin(arg)

arg = arg + darg

For l3 = l2 To N Step lp

IW = l3 + lp2

WR = butX(IW) * c - Y(IW) * s

WI = butX(IW) * s + Y(IW) * c

butX(IW) = butX(l3) - WR

Y(IW) = Y(l3) - WI

butX(l3) = butX(l3) + WR

Y(l3) = Y(l3) + WI

Next l3

Next l2

Next l1

For i = 1 To N

butX(i) = butX(i) / N

Y(i) = Y(i) / N

Next i

Picture2.DrawWidth = 3

Picture2.ForeColor = &HFF0000

Picture2.Scale (0, 1)-(4807.5, -20)

'постоянная составляющая

z(0) = Sqr(Abs((butX(0) * butX(0)) + (Y(0) * Y(0))))

'спектр мощностей

For i = 1 To 127

Picture2.PSet (i * 4807.5 / 64, -20)

z(i) = Sqr(Abs((butX(i) * butX(i)) + (Y(i) * Y(i))))

z(i) = 10 * Log(z(i) / z(0)) / Log(10)

Picture2.Line -(i * 4807.5 / 64, z(i))

Next i

Picture2.DrawWidth = 1

Picture2.ForeColor = &H0

Picture2.DrawStyle = 2

For i = 0 To -20 Step -5

Picture2.Line (0, i)-(4807.5, i)

Next i

For i = 1 To 127

Picture2.Line (i * 4807.5 / 64, 1)-(i * 4807.5 / 64, -20)

Next i

Picture2.DrawStyle = 0

Picture2.Line (0, 0)-(4807.5, 0)

End Sub

'Процедура получения координаты курсора в области спектр анализатора

Private Sub Picture2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Text7.Text = X

Text8.Text = Y

End Sub

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]