Смекни!
smekni.com

Віртуальний вимірювальний комплекс на базі учбового лабораторного стенду EV 8031 (стр. 16 из 19)

13. ГОСТ 12.1.045 "ССБТ. Электростатические поля. Допустимые уровни на рабочих местах и требования к проведению контроля"

14. ГОСТ 12.1.005-88 "ССБТ Общие санитарно-гигиенические требования к воздуху рабочей зоны"-Введ. 01.01.89.

15. ГОСТ 12.1.003-83 "ССБТ Шум. Общие требования безопасности"-Введ. 01.07.84.

16. ГОСТ 12.1.004-91." ССБТ. Пожарная безопасность. Общие требования". ‑Введ. 01.07.92.

17. СНиП 2.04.05-91 " Строительные нормы и правила. Отопление, вентиляция и кондиционирование воздуха"-М.:Стройиздат.,1987 р.

18. ГОСТ 12.1.038-82 "ССБТ Электробезопасность. Предельно-допустимые уровни напряжения прикосновения и токов". -Введ. 01.07.83.

19. ДСанПіН З.З.2. 007 1998. Державні санітарні правила і норми роботи з візуальними дисплейним терміналами електронно-обчислювальних машин.

20. ГОСТ 14254-80. Электрооборудование напряжением до 1000 В. Оболочки. Степени защиты. ‑Введ. 01.01.81.

21. ГОСТ 12.2.007.0-75*. ССБТ. Изделия электротехнические. Общие требования безопасности. ‑Введ. 01.01.78.

22. ГОСТ 12.1.030-81*. ССБТ. Электробезопасность. Защитное заземление. Зануление. ‑Введ. 01.07.82.

23. Перерва П.Г. Управление промышленным маркетингом. Харьков, Основа, 1993.

24. Современный маркетинг / под ред. Е.К.Хруцкого. – М.: Прогресс, 1991.

ВИСНОВКИ

У ході виконання научно дослідницької роботи були розглянуті основні технічні характеристики лабораторного стенду EV8031, а також розглянутий лабораторний практикум з курсу мікроконтроллерних систем.

У ході роботи були розглянуті основні характеристики та ресурси мікроконтроллера ATMega8515 та стенду EV8031. Були обчислені його швидкістні характеристики, які необхідні для розробки віртуального вимірювального комплексу.

Було з’ясовано, що дуже складно побудувати такі пристрої як логічний аналізатор та генератор слів на програмній базі мікроконтроллеру. Але отримані характеристики повністю вдовільнили постановлену задачу.

Одночасний доступ двох програм до послідовного поорту неможливий, тому для вирішення задачі було прийнято рішення обь’єднати дві програми у один програмний модуль, але з двома вікнами, для зручності у користуванні.

Побудова інтерфейсу була взята із багатовідомої системи моделювання електронних пристроїв Electronic Workbench, де є аналогічні віртуальні пристрої.

У результаті тестування створеного програмного забеспечення, були отримані вдовільні показники. Як було зазначено вище, використання таймеру не призводить до великоі похибки при вимірюванні на швидкості вхідної послідовності 50Гц.


МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”

Кафедра: “Обчислювальна техніка та програмування”

“ЗАТВЕРДЖУЮ”

Завідуючий кафедрою ОТП

__________ /xxxx.А./

"___" __________ 2009р.

ВІРТУАЛЬНИЙ ВИМІРЮВАЛЬНИЙ КОМПЛЕКС НА БАЗІ УЧБОВОГО ЛАБОРАТОРНОГО СТЕНДУ EV8031

Текст програми

ЛИСТ ЗАТВЕРДЖЕННЯ

xxxx.03077-01 12 01-1-ЛЗ

РОЗРОБНИКИ Керівник проекту _____________/xxx./ “_____”_________2009р. Виконавець Студент групи x /xxxxxx./ “_____”____________2009р.

Харків 2009

ЗАТВЕРДЖЕНО

xxx.03077-01 12 01-1-ЛЗ

ВІРТУАЛЬНИЙ ВИМІРЮВАЛЬНИЙ КОМПЛЕКС НА БАЗІ УЧБОВОГО ЛАБОРАТОРНОГО СТЕНДУ EV8031

Текст програми

xxxxx.03077-01 12 01-1

Аркушів _48_

Харків 2009

ЗМІСТ

1 ТЕКСТ ПРОГРАМНОГО ЗАБЕСПЕЧЕННЯ ПК

1.1 Текст програмного модуля логічного аналізатора, Unit1.pas

2 Тексти програмного модуля генератора слів, Unit2.pas

3 Текст програмного модуля головного вікна ВВК, , Unit3.pas

2 ТЕКСТ ПРОГРАМНОГО ЗАБЕСПЕЧЕННЯ МК

2.1 Текст програмного забеспечення ВВК мікроконтроллера, main.asm

1 ТЕКСТ ПРОГРАМНОГО ЗАБЕСПЕЧЕННЯ ПК

1.1 Текст програмного модуля логічного аналізатора, Unit1.pas

Ім’я данного файлу : Unit1.pas

Функціональне призначення : програмне забеспечення ПК, модуль логічного аналізатора

Файл створений для дипломного проекта захисту кваліфікації фахівця

За фахом : Системне програмування;

Тема проекту : Віртуальний вимірювальний комплекс на базі учбового лабораторного стенду;

Керівник : М.В. Скородєлов, викладач кафедри ОТП;

Розробник : О.О. Ісмаілов, студент групи КІТ-23а;

Рік розробки : 2009.

unit Unit1;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls, ComCtrls, Buttons, ComDrv32, SerialNG, Mask, Math;

type TForm1 = class(TForm)

Chart1: TChart;

Series1: TLineSeries;

Series2: TLineSeries;

Series3: TLineSeries;

Series4: TLineSeries;

Series5: TLineSeries;

Series6: TLineSeries;

Series7: TLineSeries;

Series8: TLineSeries;

ColorBox1: TColorBox;

ColorBox2: TColorBox;

ColorBox3: TColorBox;

ColorBox4: TColorBox;

ColorBox5: TColorBox;

ColorBox6: TColorBox;

ColorBox7: TColorBox;

ColorBox8: TColorBox;

StaticText1: TStaticText;

StaticText2: TStaticText;

StaticText3: TStaticText;

StaticText4: TStaticText;

StaticText5: TStaticText;

StaticText6: TStaticText;

StaticText7: TStaticText;

StaticText8: TStaticText;

ScrollBar1: TScrollBar;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

StaticText9: TStaticText;

GroupBox1: TGroupBox;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

ComboBox1: TComboBox;

ComboBox2: TComboBox;

BitBtn1: TBitBtn;

SerialPortNG1: TSerialPortNG;

TrackBar1: TTrackBar;

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

MaskEdit1: TMaskEdit;

Label3: TLabel;

Label4: TLabel;

MaskEdit2: TMaskEdit;

Label5: TLabel;

procedure FormCreate(Sender: TObject);

procedure ScrollChange(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure SpeedButton1Click(

Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure BitBtn1Click(Sender: TObject);

procedure SerialPortNG1RxClusterEvent(Sender: TObject);

procedure TrackBar1Change(Sender: TObject);

procedure ComboBox2Change(Sender: TObject);

procedure MaskEdit2Change(Sender: TObject);

private

{ Private declarations }

scale:word;

dwError:dword;

pName:PWideChar;

flag:byte;

function StrToIntM(str:string):dword;

public

{ Public declarations }

end;

TArrBuf512 = array[0..511] of byte;

Var Form1: TForm1;

implementation

uses SerialNGBasic;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

var

i:word;

s:string;

begin

SerialPortNG1.Active := True;

scale := 500;

ScrollBar1.Visible := False;

Chart1.BottomAxis.Minimum := 0;

Chart1.BottomAxis.Maximum := scale;

Series1.Clear;

Series2.Clear;

Series3.Clear;

Series4.Clear;

Series5.Clear;

Series6.Clear;

Series7.Clear;

Series8.Clear;

for i := 0 to 500 do

begin

Series1.AddXY(i, ((i mod 1)*0.5)+0.25, '', ColorBox1.Selected);

Series2.AddXY(i, ((i mod 2)*0.5)+1.25, '', ColorBox2.Selected);

Series3.AddXY(i, ((i mod 2)*0.5)+2.25, '', ColorBox3.Selected);

Series4.AddXY(i, ((i mod 2)*0.5)+3.25, '', ColorBox4.Selected);

Series5.AddXY(i, ((i mod 2)*0.5)+4.25, '', ColorBox5.Selected);

Series6.AddXY(i, ((i mod 2)*0.5)+5.25, '', ColorBox6.Selected);

Series7.AddXY(i, ((i mod 2)*0.5)+6.25, '', ColorBox7.Selected);

Series8.AddXY(i, ((i mod 2)*0.5)+7.25, '', ColorBox8.Selected);

end;

end;

procedure TForm1.ScrollChange(Sender: TObject);

begin

Chart1.BottomAxis.Minimum := ScrollBar1.Position;

Chart1.BottomAxis.Maximum := ScrollBar1.Position + scale;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);

begin

if (scale < 500) then

scale := scale + 10;

if (scale = 500) then

ScrollBar1.Visible := False

else

ScrollBar1.Visible := True;

ScrollBar1.Max := 500 - scale;

if (ScrollBar1.Position > (500 - scale)) then

ScrollBar1.Position := (500 - scale);

Chart1.BottomAxis.Minimum := ScrollBar1.Position;

Chart1.BottomAxis.Maximum := ScrollBar1.Position + scale;

end;

procedure TForm1.SpeedButton2Click(Sender: TObject);

begin

if (scale > 0) then

scale := scale - 10;

if (scale = 500) then

ScrollBar1.Visible := False

else

ScrollBar1.Visible := True;

ScrollBar1.Max := 500 - scale;

Chart1.BottomAxis.Minimum := ScrollBar1.Position;

Chart1.BottomAxis.Maximum := ScrollBar1.Position + scale;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

SerialPortNG1.Active := False;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

var

s:string;

begin

if (ComboBox2.ItemIndex <> -1) and (ComboBox1.ItemIndex <> -1) then

begin

s := ' ';

s[1] := char($FF);

s[2] := char($AA);

s[3] := char($3A);

s[4] := char((((ComboBox1.ItemIndex shl 1) or byte(RadioButton2.Checked))or (ComboBox2.ItemIndex shl 5)));

SerialPortNG1.SendString(s);

flag := 1;

end

else

MessageBox(0, 'Необходимо указать номер пускового канала и выбрать тактовый генератор!', 'Ошибка', MB_OK or MB_ICONINFORMATION);

end;

procedure TForm1.SerialPortNG1RxClusterEvent(

Sender: TObject);

var

i:integer;

n:integer;

p:^TArrBuf512;

size:integer;

error:DWord;

begin

n := SerialPortNG1.NextClusterSize;

if n >= 0 then

begin

p := SerialPortNG1.ReadNextCluster(size, error);

if (flag=1) then

begin

Series1.Clear;

Series2.Clear;

Series3.Clear;

Series4.Clear;

Series5.Clear;

Series6.Clear;

Series7.Clear;

Series8.Clear;

for i := 0 to n do

begin

Series8.AddXY(i, -(((p^[i] shr 7) and 1)*0.5)+7.75, '', ColorBox8.Selected);

Series7.AddXY(i, -(((p^[i] shr 6) and 1)*0.5)+6.75, '', ColorBox7.Selected);

Series6.AddXY(i, -(((p^[i] shr 5) and 1)*0.5)+5.75, '', ColorBox6.Selected);

Series5.AddXY(i, -(((p^[i] shr 4) and 1)*0.5)+4.75, '', ColorBox5.Selected);

Series4.AddXY(i, -(((p^[i] shr 3) and 1)*0.5)+3.75, '', ColorBox4.Selected);

Series3.AddXY(i, -(((p^[i] shr 2) and 1)*0.5)+2.75, '', ColorBox3.Selected);

Series2.AddXY(i, -(((p^[i] shr 1) and 1)*0.5)+1.75, '', ColorBox2.Selected);

Series1.AddXY(i, -(( p^[i] and 1)*0.5)+0.75, '', ColorBox1.Selected);

end;

flag := 0;

end;

end;

end;

procedure TForm1.TrackBar1Change(Sender: TObject);

begin

Edit1.Text := IntToStr(TrackBar1.Position);

end;

procedure TForm1.ComboBox2Change(Sender: TObject);

begin

if ComboBox2.ItemIndex = 7 then

begin

MaskEdit1.Visible := true;

Label3.Visible := true;

MaskEdit1.Text := '';

end

else

begin

MaskEdit1.Visible := False;

Label3.Visible := false;

end;

end;

procedure TForm1.MaskEdit2Change(Sender: TObject);

begin

if MaskEdit2.Text <> '' then

if StrToIntM(MaskEdit2.Text) > 65535 then

MaskEdit2.Text := '65535';

end;

function TForm1.StrToIntM(str:string):dword;

var

i,num:integer;

begin

num := 0;

if (length(str) > 0) and (length(str) < 6) then

for i := length(str) downto 1 do

if ((str[i] >= '0')and(str[i] <= '9')) then

begin

num := num +

(byte(str[i])-byte('0'))*

Round(Power(10,length(str)-i));

end;

StrToIntM := num;

end;

end.

2 Тексти програмного модуля генератора слів, Unit2.pas

Ім’я данного файлу : Unit2.pas

Функціональне призначення : програмне забеспечення ПК, модуль генератора слів

Файл створений для дипломного проекта захисту кваліфікації фахівця

За фахом : Системне програмування;

Тема проекту : Віртуальний вимірювальний комплекс на базі учбового лабораторного стенду;

Керівник : М.В. Скородєлов, викладач кафедри ОТП;

Розробник : О.О. Ісмаілов, студент групи КІТ-23а;

Рік розробки : 2009.

unit Unit2;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Mask;