6.6 Пожежна безпека

Пожежна безпека – стан об'єкта при якому із установленою ймовірністю виключається можливість виникнення і розвитку пожежі, а також забезпечується захист матеріальних цінностей.

Причинами, що можуть викликати пожежу в розглянутому

 помешканні, є:

– несправність електропроводки і приладів;

– коротке замикання електричних ланцюгів;

– перегрів апаратури;

– блискавка.

Помешкання обчислювального центру по пожежній безпеці відноситься до категорії В відповідно до ОНТП-24-86 [6], тому що в обігу знаходяться тверді спалимі речовини і матеріали. Ступінь вогнестійкості будинку – II відповідно до СНиП 2.01.02-85 [8], клас помешкання по пожежній небезпеці П-IIа, відповідно до ПУЭ-87 [7].

Пожежна безпека відповідно до ГОСТ 12.1.004-91 [16] забезпечується системами запобігання пожежі, пожежного захисту, організаційно-технічними заходами.

Система запобігання пожежі:

– контроль і профілактика ізоляції;

– наявність плавких вставок і запобіжників в електронному устаткуванні;

– для захисту від статичної напруги використовується заземлення;

– захист від блискавок будівель і устаткування.

Для даного класу будівель і місцевості із середньою грозовою діяльністю 10 і більш грозових годин у рік, тобто для умов м. Харкова встановлена III категорія захисту від блискавок.

Ступінь захисту відповідному класу помешкання П II-а IР44 для устаткування і IР2Х для світильників.

Система пожежного захисту:

– аварійне відключення і переключення апаратури;

– наявність первинних засобів пожежегасіння, вогнегасників ОП-5, тому що вуглекислота має погану електропровідність, або порошкових вогнегасників;

– система оповіщення, світлова і звукова сигналізація;

– захист легкозаймистих частин устаткування, конструкцій захисними матеріалами;

– використання негорючих матеріалів для акустичної обробки стін і стель;

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

Для успішної евакуації персоналу при пожежі розміри дверей робочого помешкання повинні бути наступними: ширина дверей не менше 1,5 м., висота дверей не менше 2,0 м., ширина коридору 1,8 м.; робоче помешкання повинно мати два виходи; відстань від найбільше віддаленого робочого місця не повинне перевищувати 100 м.

Організаційні заходи пожежної профілактики:

– навчання персоналу правилам пожежної безпеки;

– видання необхідних інструкцій і плакатів, плану евакуації персоналу у випадку пожежі.

Будівля обчислювального центру відповідає вимогам пожежної безпеки.


6.7 Охорона навколишнього середовища

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

На порозі ІІІ тисячоліття людство знаходиться з досить суперечливим надбанням. З одного боку-бурхливі темпи загальнолюдського прогресу, а з другого-його негативні наслідки прямо протилежної спрямованості. Останні проявляються, насамперед, у надмірному забрудненні навколишнього середовища й інтенсивній його деградації.

В законі Украйни про охорону навколишнього середовища регламентується «Законом про охорону навколишнього природного середовища, 1991р. При виконанні дипломної роботи утворюються тверді побутові відходи (папір, канцелярські вироби та інші), а також комп’ютерні та інші види організаційної техніки, яка відпрацювала свій термін. Вони повинні утилізовуватися на полігонах твердих побутових відходів з максимальним використанням в якості вторинних ресурсів.

6.8 Висновок

Дотримання наведених в таблицях 6.1, 6.2, 6.3 нормативних значень параметрів шкідливих та небезпечних факторів, оптимальних параметрів мікроклімату, норм освітлення дозволить забезпечити безпечні умови праці користувача ЕОМ.


СПИСОК ДЖЕРЕЛ ІНФОРМАЦІЇ

 

1.         Datasheet ATMega8515 www.atmel.com.

2.      Техническое описание стенда EV8031.

3.      М.Е. Фленов, Библія програміста (Delphi), Москва, 2008, 349с.

4.       Стив Тейксейра, Ксавье Пачеко, Borland Delphi 6. Руководство разработчика, Питер, 2008, 1120с.

5.       Парижский С.М., Delphi. Только практика, Питер, 2008, 208 с.

6.          ОНТП-24-86, МВД СССР. "Общесоюзные нормы технологического проектирования. Определение категорий зданий и сооружений по взрывопожарной и пожарной опасности. " - М.: 1986.

7.          ПУЭ-87 . Правила установки электроустройств. М.:Энергоатомиздат 1987г.

8.          СНиП 2.01.02-85. " Строительные нормы и правила. Противопожарные нормы проектирования зданий и сооружений" -М.:Стройиздат.,1986 р.

9.          12.0.003–74* “ССБТ. Опасные и вредные производственные факторы. Классификация.” 1978 (с 01.01.76). Переиздание (сентябрь 1999 г.) с Изменением № 1, утвержденным в октябре 1978 г. (ИУС 11-78).

10.       СН 2152-80 "Санітарно-гігієнічні норми допустимих рівнів іонізації повітря виробничих та громадських приміщень"

11.       ДНАОП 0.00 – 1.31 – 99. Правила охорони праці під час експлуатації електронно-обчислювальних машин.

12.       СНиП 11-4-79 " Строительные нормы и правила. Естественное и искусственное освещение"-М.:Стройиздат.,1980 р.

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;

type TForm2 = class(TForm)

ListBox1: TListBox;

RadioGroup1: TRadioGroup;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

CheckBox1: TCheckBox;

Label1: TLabel;

GroupBox1: TGroupBox;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

ComboBox1: TComboBox;

Label5: TLabel;

Label6: TLabel;

MaskEdit1: TMaskEdit;

Label2: TLabel;

MaskEdit2: TMaskEdit;

MaskEdit3: TMaskEdit;

Label3: TLabel;

Label4: TLabel;

MaskEdit4: TMaskEdit;

MaskEdit5: TMaskEdit;

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure ListBoxClick(Sender: TObject);

procedure Form2Create(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure MaskEdit1KeyPress(Sender: TObject; var Key: Char);

procedure MaskEdit1Change(Sender: TObject);

procedure MaskEdit2KeyPress(Sender: TObject; var Key: Char);

procedure MaskEdit2Change(Sender: TObject);

procedure MaskEdit3KeyPress(Sender: TObject; var Key: Char);

procedure MaskEdit4KeyPress(Sender: TObject; var Key: Char);

procedure MaskEdit4Change(Sender: TObject);

procedure MaskEdit3Change(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

index:integer;

count:integer;

buf:array[0..1023]of byte;

function StrToHex(str:string):integer;

public

 { Public declarations }

end;

var Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.RadioButton1Click(Sender: TObject);

begin

MaskEdit5.Enabled := false;

Label6.Enabled := false;

ComboBox1.Enabled := true;

Label5.Enabled := true;

end;

procedure TForm2.RadioButton2Click(Sender: TObject);

begin

ComboBox1.Enabled := false;

Label5.Enabled := false;

MaskEdit5.Enabled := true;

Label6.Enabled := true;

end;

procedure TForm2.ListBoxClick(Sender: TObject);

var

s:string;

begin

s:=

ListBox1.Items.ValueFromIndex[ListBox1.ItemIndex];

index := ListBox1.ItemIndex;

MaskEdit1.Text := s[4]+s[5];

end;

procedure TForm2.Form2Create(Sender: TObject);

var

i,j:integer;

s,s1:string;

begin

count := 1024;

index := 0;

ListBox1.Clear;

for i := 0 to count-1 do

begin

s := Format('%x',[i]);

for j := 1 to 3-length(s) do

s1 := s1 + '0';

for j := 1 to length(s) do

s1 := s1 + s[j];

ListBox1.Items.Add(s1+':00');

s1 := '';

buf[i] := 0;

end;

end;

procedure TForm2.CheckBox1Click(Sender: TObject);

begin

if (CheckBox1.Checked = True) then

Form1.Visible := true;

end;

procedure TForm2.MaskEdit1KeyPress(Sender: TObject; var Key: Char);

begin

if not(((Key >= '0') and (Key <= '9')) or

((Key >= 'A') and (Key <= 'F')) or

((Key >= 'a') and (Key <= 'f'))) then

Key := ' ';

if (Key >= 'a') and (Key <= 'f') then

Key := UpCase(Key)

end;

procedure TForm2.MaskEdit1Change(Sender: TObject);

var

s,s1,s2:string;

i:byte;

begin

s1 := '';

s := Format('%x',[index]);

for i := 1 to 3-length(s) do

s1 := s1 + '0';

for i := 1 to length(s) do

s1 := s1 + s[i];

s2 := s1 + ':';

s1 := '';

s := Format('%x',[StrToHex(MaskEdit1.Text)]);

for i := 1 to 2-length(s) do

s1 := s1 + '0';

for i := 1 to length(s) do

s1 := s1 + s[i];

buf[index] := StrToHex(MaskEdit1.Text);

s2 := s2 + s1;

ListBox1.Items.Strings[index] := s2;

end;

procedure TForm2.MaskEdit2KeyPress(Sender: TObject; var Key: Char);

var

i,j:integer;

s,s1:string;

begin

if not((Key >= '0') and (Key <= '9') or

(Key = #13)) then

Key := ' ';

if Key = #13 then

begin

ListBox1.Clear;

for i := 0 to count-1 do

begin

s := Format('%x',[i]);

for j := 1 to 3-length(s) do

 s1 := s1 + '0';

for j := 1 to length(s) do

s1 := s1 + s[j];

ListBox1.Items.Add(s1+':00');

s1 := '';

end;

end;

end;

procedure TForm2.MaskEdit2Change(Sender: TObject);

var

i:integer;

s,s1:string;

begin

s1 := '';

s := MaskEdit2.Text;

if s <> '' then

for i := 1 to length(s) do

if s[i] <> ' ' then s1 := s1 + s[i];

if s1 <> '' then

begin

if (StrToInt(s1) > 1024) then

begin

MaskEdit2.Text := '1024';

count := 1024;

end;

count := StrToInt(s1);

end;

end;

function TForm2.StrToHex(str:string):integer;

var

i,num:integer;

begin

num := 0;

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

for i := length(str) downto 1 do

begin

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

num := num + (byte(str[i])-byte('0'))shl(4*(length(str)-i));

if ((str[i] >= 'A')and(str[i] <= 'F')) then

num := num + (byte(str[i])-byte('A')+10)shl(4*(length(str)-i));

if ((str[i] >= 'a')and(str[i] <= 'f')) then

num := num + (byte(str[i])-byte('a')+10)shl(4*(length(str)-i));

end;

StrToHex := num;

end;

procedure TForm2.MaskEdit3KeyPress(Sender: TObject; var Key: Char);

begin

if not(((Key >= '0') and (Key <= '9')) or

((Key >= 'A') and (Key <= 'F')) or

((Key >= 'a') and (Key <= 'f'))) then

Key := ' ';

if (Key >= 'a') and (Key <= 'f') then

Key := UpCase(Key);

end;

procedure TForm2.MaskEdit4KeyPress(Sender: TObject; var Key: Char);

begin

if not(((Key >= '0') and (Key <= '9')) or

((Key >= 'A') and (Key <= 'F')) or

((Key >= 'a') and (Key <= 'f'))) then

Key := ' ';

if (Key >= 'a') and (Key <= 'f') then

Key := UpCase(Key);

end;

procedure TForm2.MaskEdit4Change(Sender: TObject);

begin

if MaskEdit4.Text <> '' then

begin

if StrToHex(MaskEdit4.Text) > count-1 then

MaskEdit4.Text := Format('%3x', [count-1]);

if StrToHex(MaskEdit4.Text) < StrToHex(MaskEdit3.Text) then

MaskEdit4.Text := MaskEdit3.Text;

end;

end;

procedure TForm2.MaskEdit3Change(Sender: TObject);

begin

if MaskEdit3.Text <> '' then

begin

if StrToHex(MaskEdit3.Text) > count-1 then

MaskEdit3.Text := Format('%3x', [count-1]);

if StrToHex(MaskEdit4.Text) < StrToHex(MaskEdit3.Text) then

MaskEdit3.Text := MaskEdit4.Text;

end;

end;

procedure TForm2.BitBtn1Click(Sender: TObject);

var

i:integer;

//a:array[1..]

begin

BitBtn1.Enabled := False;

BitBtn2.Enabled := True;

//Form1.SerialPortNG1.SendData();

Form1.SerialPortNG1.SendData(@buf[StrToHex(MaskEdit3.Text)],StrToHex(MaskEdit4.Text)-StrToHex(MaskEdit3.Text));

end;

procedure TForm2.BitBtn2Click(Sender: TObject);

begin

BitBtn1.Enabled := True;

BitBtn2.Enabled := False;

end;

end.


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

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

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

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

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

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

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

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

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

unit Unit3;

interface

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

type TForm3 = class(TForm)

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

Label1: TLabel;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var Form3: TForm3;

implementation

uses Unit1, Unit2;

{$R *.dfm}

procedure TForm3.BitBtn1Click(Sender: TObject);

begin

Form1.Visible := True;

end;

procedure TForm3.BitBtn2Click(Sender: TObject);

begin

Form2.Visible := true;

end;

end.


2 ТЕКСТ ПРОГРАМНОГО ЗАБЕСПЕЧЕННЯ МК   2.1 Текст програмного забеспечення ВВК мікроконтроллера, main.asm

Ім’я данного файлу : main.asm

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

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

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

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

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

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

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

#include <m8515def.inc>

.def tmp = r16

.def tmp1 = r17

.def RX_flag = r18

.def RX_Counter = r19

.def RX_Complete = r20

.def command = r21

.def tmp2 = r22

.def tmp3 = r23

.equ UC_REG = 0xC000

.equ RX_Buffer = 0x7C00

.macro USART_TRANSMITT_M

utm_l0:

wdr

sbis UCSRA, UDRE

rjmp utm_l0

out UDR, tmp

.endm

.macro WAIT_PUSK

mov tmp, command

andi tmp, 0b00010000

brne wp_l5

mov tmp, command

andi tmp, 0b00001110

lsr tmp

ldi tmp1, 1

wp_l0:

cpi tmp, 0

breq wp_l1

lsl tmp1

dec tmp

brne wp_l0

wp_l1:

mov tmp, command

andi tmp, 0b00000001

brne wp_l2

wp_l3:

wdr

in tmp2, PINB

and tmp2, tmp1

brne wp_l3

wp_l4:

wdr

in tmp2, PINB

and tmp2, tmp1

breq wp_l4

rjmp wp_l5

wp_l2:

wdr

in tmp2, PINB

and tmp2, tmp1

breq wp_l2

wp_l6:

wdr

in tmp2, PINB

and tmp2, tmp1

brne wp_l6

wp_l5:

.endm

.macro ANALYZE_CLK_6

ac6_l0:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

dec tmp3 // 1 cycle

brne ac6_l0 // 2 cycles or

// 1 cycle

dec tmp3 // 1 cycle

ac6_l1:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

dec tmp3 // 1 cycle

brne ac6_l1 // 2 cycles

dec tmp3

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

.endm

.macro ANALYZE_CLK_8

ac8_l0:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

nop // +2 cyle

nop

dec tmp3 // 1 cycle

brne ac8_l0 // 2 cycles or

// 1 cycle

dec tmp3 // 1 cycle

ac8_l1:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

nop // +2 cyle

nop

dec tmp3 // 1 cycle

brne ac8_l1 // 2 cycles

dec tmp3

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

.endm

.macro ANALYZE_CLK_16

ac16_l0:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

ldi tmp1, 3 // +10 cyle

ac16_l2:

dec tmp1

brne ac16_l2

nop

dec tmp3 // 1 cycle

brne ac16_l0 // 2 cycles or

 // 1 cycle

dec tmp3 // 1 cycle

ac16_l1:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

ldi tmp1, 3 // +10 cyle

ac16_l3:

dec tmp1

brne ac16_l3

nop

dec tmp3 // 1 cycle

brne ac16_l1 // 2 cycles

dec tmp3

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

.endm

.macro ANALYZE_CLK_32

ac32_l0:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

ldi tmp1, 8 // +26 cyle

ac32_l2:

dec tmp1

brne ac32_l2

nop

nop

dec tmp3 // 1 cycle

brne ac32_l0 // 2 cycles or

 // 1 cycle

dec tmp3 // 1 cycle

ac32_l1:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

ldi tmp1, 8 // +26 cyle

ac32_l3:

dec tmp1

brne ac32_l3

nop

nop

dec tmp3 // 1 cycle

brne ac32_l3 // 2 cycles

dec tmp3

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

.endm

.macro ANALYZE_CLK_64

ac64_l0:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

ldi tmp1, 19 // +58 cyle

ac64_l2:

dec tmp1

brne ac64_l2

nop

dec tmp3 // 1 cycle

brne ac64_l0 // 2 cycles or

 // 1 cycle

dec tmp3 // 1 cycle

ac64_l1:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

ldi tmp1, 19 // +58 cyle

ac64_l3:

dec tmp1

brne ac64_l3

nop

dec tmp3 // 1 cycle

brne ac64_l1 // 2 cycles

dec tmp3

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

.endm

.macro ANALYZE_CLK_128

ac128_l0:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

ldi tmp1, 40 // +122 cyle

ac128_l2:

dec tmp1

brne ac128_l2

nop

nop

dec tmp3 // 1 cycle

brne ac128_l0 // 2 cycles or

 // 1 cycle

dec tmp3 // 1 cycle

ac128_l1:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

ldi tmp1, 40 // +122 cyle

ac128_l3:

dec tmp1

brne ac128_l3

nop

nop

dec tmp3 // 1 cycle

brne ac128_l1 // 2 cycles

dec tmp3

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

.endm

.macro ANALYZE_CLK_256

ac256_l0:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

ldi tmp1, 83 // +250 cyle

ac256_l2:

dec tmp1

brne ac256_l2

nop

dec tmp3 // 1 cycle

brne ac256_l0 // 2 cycles or

 // 1 cycle

dec tmp3 // 1 cycle

ac256_l1:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

ldi tmp1, 83 // +250 cyle

ac256_l3:

dec tmp1

brne ac256_l3

nop

dec tmp3 // 1 cycle

brne ac256_l1 // 2 cycles

dec tmp3

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

.endm

.macro ANALYZE_CLK_VN

acv_l0:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

dec tmp3 // 1 cycle

brne acv_l0 // 2 cycles or

 // 1 cycle

dec tmp3 // 1 cycle

acv_l1:

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

dec tmp3 // 1 cycle

brne acv_l1 // 2 cycles

dec tmp3

in tmp, PINB // 1 cycle

st Y+, tmp // 2 cycle

.endm

.org 0

rjmp RESET

nop;rjmp INT0

nop;rjmp INT1

nop;rjmp TIMER1_CAPT

nop;rjmp TIMER1_COMPA

nop;rjmp TIMER1_COMPB

nop;rjmp TIMER1_OVF

rjmp TIMER0_OVF

nop;rjmp SPI_STC

rjmp USART_RXC

nop;rjmp USART_UDRE

nop;rjmp USART_TXC

nop;rjmp ANA_COMP

nop;rjmp INT2

nop;rjmp TIMER0_COMP

nop;rjmp EE_RDY

nop;rjmp SPM_RDY

RESET:

; set stack pointer to top of RAM

ldi tmp, high(RAMEND)

out SPH, tmp

ldi tmp, low(RAMEND)

out SPL, tmp

; enable WDT with 2,1s timeout

ldi tmp, (1<<WDE)|(7<<WDP0)

out WDTCR, tmp

; enable external SRAM

ldi tmp, (1<<SRE)|(1<<SRW10)

out MCUCR, tmp

; enable interrupts

sei

; USART init

rcall USART_Init

// Unmask timer 0 overflov interrupt

ldi tmp, (1<<TOIE0)

out TIMSK, tmp

// Stop timer0

ldi tmp, 0b00000000

out TCCR0, tmp

clr RX_Flag

clr RX_Complete

ldi tmp, 0

out DDRB, tmp

ldi tmp, 0b11111111

out PORTB, tmp

loop:

wdr

cpi RX_Complete, 1

breq c_l0

rjmp l0

c_l0:

// reset RX_Complete

clr RX_Complete

// mask RXCIE

ldi tmp, (1<<TXEN) | (1<<RXEN)

out UCSRB, tmp

// reset RX_Buffer

ldi YL, low(RX_Buffer)

ldi YH, high(RX_Buffer)

ldi tmp3, 0xFF

// do command

mov tmp, command

andi tmp, 0b11100000

lsr tmp

lsr tmp

lsr tmp

lsr tmp

lsr tmp

cpi tmp, 0

brne dc_l0

WAIT_PUSK

ANALYZE_CLK_6

Rjmp dc_end

dc_l0:

cpi tmp, 1

brne dc_l1

WAIT_PUSK

ANALYZE_CLK_8

Rjmp dc_end

dc_l1:

cpi tmp, 2

brne dc_l2

WAIT_PUSK

ANALYZE_CLK_16

Rjmp dc_end

dc_l2:

cpi tmp, 3

brne dc_l3

WAIT_PUSK

ANALYZE_CLK_32

Rjmp dc_end

dc_l3:

cpi tmp, 4

brne dc_l4

WAIT_PUSK

ANALYZE_CLK_64

Rjmp dc_end

dc_l4:

cpi tmp, 5

brne dc_l5

WAIT_PUSK

ANALYZE_CLK_128

Rjmp dc_end

dc_l5:

cpi tmp, 6

brne dc_l6

WAIT_PUSK

ANALYZE_CLK_256

Rjmp dc_end

dc_l6:

cpi tmp, 7

breq cdc_unk

rjmp dc_unk

cdc_unk:

WAIT_PUSK

ANALYZE_CLK_VN

dc_end:

/*

// wait if need befor pusk

WAIT_PUSK

// analyse and store (6 cycles)

// clock time (1/7372800Mhz)*6 = 813,8ns

ANALYZE_CLK_6

*/

// reset RX_Buffer

ldi YL, low(RX_Buffer)

ldi YH, high(RX_Buffer)

// transmitt data

l1:

ld tmp, Y+

USART_TRANSMITT_M

Dec tmp3

brne l1

dec tmp3

l2:

ld tmp, Y+

USART_TRANSMITT_M

Dec tmp3

brne l2

ld tmp, Y+

USART_TRANSMITT_M

dc_unk:

// unmask RXCIE

ldi tmp, (1<<TXEN)|(1<<RXEN)|(1<<RXCIE)

out UCSRB, tmp

l0:

rjmp loop

////////////////////////////////////////////////////

// USART receive complete ISR

USART_RXC:

Push tmp

in tmp, SREG

push tmp

// tmp <- RX

in tmp, UDR

// if (RX_Flag == 1) goto urxc_l0

cpi RX_Flag, 1

breq urxc_l0

// if (RX == AA)

cpi tmp, 0xAA

brne urxc_end

// init timeout

ldi tmp, 0b00000101

out TCCR0, tmp

clr tmp

out TCNT0, tmp

// set recive_flag

ldi RX_Flag, 1

// reset RX_Buffer

ldi YL, low(RX_Buffer)

ldi YH, high(RX_Buffer)

clr RX_Counter

ldi tmp, 0xAA

urxc_l0:

// push RX to buffer

st Y+, tmp

inc RX_Counter

urxc_end:

pop tmp

out SREG, tmp

pop tmp

reti

////////////////////////////////////////////////////

// Timer0 overflow ISR

TIMER0_OVF:

Push tmp

Push tmp1

In tmp, SREG

push tmp

// Stop timer0

ldi tmp, 0b00000000

out TCCR0, tmp

// reset RX_Buffer

ldi YL, low(RX_Buffer)

ldi YH, high(RX_Buffer)

cpi RX_Counter, 3

brne t0ovf_l0

ld tmp, Y+

cpi tmp, 0xAA

brne t0ovf_l0

ld tmp, Y+

cpi tmp, 0x3A

brne t0ovf_l0

ld tmp, Y+

mov command, tmp

ldi RX_Complete, 1

//clear buffer

ldi YL, low(RX_Buffer)

ldi YH, high(RX_Buffer)

clr tmp

st Y+, tmp

st Y+, tmp

st Y+, tmp

st Y+, tmp

st Y+, tmp

t0ovf_l0:

// clear recive_flag

clr RX_Flag

pop tmp

out SREG, tmp

pop tmp1

pop tmp

reti

////////////////////////////////////////////////////

// USART init routine

// uses: tmp, tmp1

USART_Init:

Ldi tmp, (1<<TXEN) | (1<<RXEN) | (1<<RXCIE)

Out UCSRB, tmp

Ldi tmp, (1<<UCSZ0) | 1<<UCSZ1)

Out UCSRC, tmp

Ldi tmp, 0

Ldi tmp1, 23

Out UBRRH, tmp

Out UBRRL, tmp1

Ldi tmp, 0b00000001

Sts UC_REG, tmp

ret

////////////////////////////////////////////////////

// USART transmit routine

// uses: tmp

USART_Transmit:

cli

ut_l0:

wdr

sbis UCSRA, UDRE

rjmp ut_l0

out UDR, tmp

sei

ret


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

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

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

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

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

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

__________ /xxxx./

"___" __________ 2009р.

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

Опис програми

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

xxxxx.03077-01 13 01-1-ЛЗ

РОЗРОБНИКИ

Керівник проекту

/xxxxxxxxx./

“_____”____________2009р.

Виконавець

студент групи xxxxx

 /xxxx./

“_____”_______________2009р.

Харків 2009


ЗАТВЕРДЖЕНО

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

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

Опис програми

xxxx.03077-01 13 01-1

Листів _8_

Харків 2009


АНОТАЦІЯ

Даний документ містить у собі опис програми, методів та алгоритмів, що використовуються, опис потреб та особливостей функціонування продукту, розробленого у межах дипломного проектування “віртуального вимірювального комплексу”. Система призначена для тестування різноманітних цифрових пристроїв.

ABSTRACT

The given document contains the description of programs, methods and algorithms which were used. It describes the requirements and peculiarities of operation of the product developed within the framework of degree projection of a virtual analyze complex. The program implementation of the methods of analysis of self-descriptiveness and diagnostics.


ЗМІСТ

1. ЗАГАЛЬНІ ВІДОМОСТІ

1.1 Позначення і найменування програми

1.2 Програмне забезпечення, необхідне для функціонування програми

1.3 Обрана мова програмування

2. ФУНКЦІОНАЛЬНЕ ПРИЗНАЧЕННЯ

2.1 Призначення програми

2.2 Функціональні обмеження

3. ОПИС ЛОГІЧНОЇ СТРУКТУРИ ПРОГРАМИ

3.1 Алгоритм програми

4. ВИКОРИСТАНІ ТЕХНІЧНІ ЗАСОБИ

5. ВИКЛИК І ЗАВАНТАЖЕННЯ

5.1 Виклик програми

5.2 Точки входу в програму

5.3 Використання оперативної пам’яті

6. ВХІДНІ ДАНІ ПРОГРАМИ

7. ВИХІДНІ ДАНІ ПРОГРАМИ


1. ЗАГАЛЬНІ ВІДОМОСТІ 1.1 Позначення і найменування програми

Програмний продукт має найменування „Віртуальний вимірювальний пристрій ”. Відповідно головний завантажувальний модуль системи має назву “BBK.exe”(складається с перших букв слів імені продукту), головний модуль також підключає додаткові функціональні модулі, які виконують окремі функції. Це такі модулі:

-    Модуль, який предоставляє користувачу вибір необхідних віртуальних пристроїв;

-    Модуль, який предоставляє інтерфейс користувача логічного аналізатора;

-    Модуль який предоставляє інтерфейс генератора слів.

1.2 Програмне забезпечення, необхідне для функціонування програми

Для функціонування програми необхідні:

-      операційна система Windows2000/XP.

1.3 Обрана мова програмування

При виборі комп’ютерної техніки доцільно використовувати IBM-сумісні системи через їхнє велике поширення і доступність. На комп’ютерах цієї серії найбільш поширені операційні системи Microsoft Windows NT/2000/XP. Тому реалізація програми була здійсннена для операційних систем Microsoft Windows 2000/XP на IBM-сумісних комп’ютерах.

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

Вимоги до програмного продукту:

-      зручний інтерфейс з користувачем;

-      простота використання, не вимагаючи спеціального навчання користувача;

-      наочність вихідних даних;

-      обробка великих структур даних;

-      вимоги до середовища розробки;

-      простота програмування;

-      великий набір компонентів;

-      зручний інтерфейс середовища;

-      можливість створення зручного інтерфейсу;

-      невисокі вимоги до обладнання;

-      простота налагодження програм.

Враховуючи всі вищенаведені вимоги к мовам програмування, було прийнято рішення для створення системи використовувати наступні мови програмування:

-      програмне забеспечення ПК – Delphi 7;

-      програмне забеспечення МК – AVRStudio;

-      Завантаження пошивки до мікроконтроллеру AVReal32.

2. ФУНКЦІОНАЛЬНЕ ПРИЗНАЧЕННЯ 2.1 Призначення програми

Програмний продукт призначений для налагодження різноманітних цифрових пристроїв. А також отримання проаналізованих данних тестуємого пристрою(логічний аналізатор), після подачі на нього тестової послідовності(генератор слів).

  2.2 Функціональні обмеження

Програмний продукт відповідає поставленим до нього вимогам і у межах обумовлених ними не має функціональних обмежень.

3. ОПИС ЛОГІЧНОЇ СТРУКТУРИ ПРОГРАМИ 3.1 Алгоритм програми

Розроблене програмне забезпечення функціонує за наступним загальним алгоритмом: cтворюється головне вікно програми на якому розташовані елементи керування. Програма складається з троьох вікон. Перше вікно дозволяє обирати необхідний віртуальний пристрій. Друге і третє вікно – інтерфейс користувача логічного аналізатора та генератора слів. Обидва вікна очікують налаштовувань пристрою, та оброблюють елементи керування. Елемент керування запуском та зупинненням виконує передачу введених налаштовувань, за допомогою інтерфейса користувача, і передає налаштовування і данні за допомогою COM порту у мікроконтроллер. Після цього програма очікує прийом відповіді. Після прийому відповіді переходить у обробку елементів керування.

4. ВИКОРИСТАНІ ТЕХНІЧНІ ЗАСОБИ

Для роботи програмного продукту необхідна IBM PC/AT сумісна персональна ЕОМ, наявність процесору Pentium II 433МГц та вище з обсягом оперативної пам’яті 128Мб або більше, наявністю відео адаптеру VGA або SVGA, а також послідовного приємопередавача СОМ порта або RS-232.

Необхідний об’єм на жорсткому диску 5 Мб для продукту.

При розробці використовувалася ПЕОМ з наступними параметрами: Pentium Tualatin, 512 Мб RIMM ОЗП, жорсткий диск ємністю 80 Гб, відеокарта GeForce2 MX 400 32Мб.


5. ВИКЛИК І ЗАВАНТАЖЕННЯ

 

5.1 Виклик програми

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

Програмне забеспечення мікроконтроллера потребує наявності встановленого пакету внутрішньосистемного програматору AVReal32. Також на момент програмування цільова ситема повинна бути підєднана спеціальним кабелем – програматором, також цільва система повинна бути підключена до блоку живлення(допускається живлення від USB). Програмування починається запуском спеціально підготовленого *.bat файлу.яки містить командну строку із необхідними налаштовуваннями програмування цілевої системи. Файл який містить завантажувальний код має розширення *.hex.

5.2 Точки входу в програму

Точкою входу до будь-якого з модулів програми є запуск головного модуля „ВВК.ехе”, що здійснює створення головного вікна програми, де є можливість обирати подальші дії.

5.3 Використання оперативної пам’яті

Програмний продукт потребує менше 5 Мб оперативної пам’яті.

  6. ВХІДНІ ДАНІ ПРОГРАМИ

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

7. ВИХІДНІ ДАНІ ПРОГРАМИ

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


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

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

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

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

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

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

__________ /xxxxxxxx./

"___" __________ 2009р.

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

Керівництво оператора

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

xxxxx.03077-01 34 01-1-ЛЗ

РОЗРОБНИКИ

Керівник проекту

_ _________ /xxxxx./

“_____”_______________2009р.

Виконавець

студент групи xx-23а

 /xxxxxxxx./

“_____”_______________2009р.

Харків 2009


ЗАТВЕРДЖЕНО

xxxxxxxxxxxxxxxxxxxx

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

Керівництво оператора

xxxxxxx.03077-01 34 01-1

Аркушів

Харків 2009


АНОТАЦІЯ

Документ «Керівництво оператора» містить інформацію для перевірки, забезпечення функціонування й налаштовування системи «Віртуальний вимірювальний комплекс». У даному документі зазначені відомості про програмний продукт, його призначення й умови застосування, характеристика, установка, звернтання до програми.

ABSTRACT

Document «Guidance of operator» contains information for verification, providing of functioning and tuning of the system «Virtual measuring complex». In this document the noted information is about a software product, his setting and terms of application, description, setting, zverntannya to the program.


ЗМІСТ

1 ПРИЗНАЧЕННЯ ПРОГРАМНОГО ПАКЕТУ

2 УМОВИ ВИКОНАННЯ

3 ЗАВАНТАЖЕННЯ ПРОЕКТУ

4 ПОВІДОМЛЕННЯ ОПЕРАТОРУ

 


1 ПРИЗНАЧЕННЯ ПРОГРАМНОГО ПАКЕТУ

Програмний продукт призначений для налагодження різноманітних цифрових пристроїв. А також отримання проаналізованих данних тестуємого пристрою(логічний аналізатор), після подачі на нього тестової послідовності(генератор слів).

2 УМОВИ ВИКОНАННЯ

Нормальна робота з данним програмним продуктом можлива лише на комп’ютерах IBM PC/AT(чи сумісному з ним) серії не нижче Pentium !!!, з операційною системою Microsoft Windows 2000/XP.

Для нормального функціонування програмного продукту необхідна наявність таких характеристик:

-      SVGA відеоадаптер не менше 1024х768х32;

-      Жорсткий диск;

-      Пам’ять(бажано не нижче 128Мб);

-      Маніпулятор типу “миша”;

-      Клавіатура;

-      COM – порт.

3 ЗАВАНТАЖЕННЯ ПРОЕКТУ

Щоб завантажити програму, необхідно запустити файл BBK.exe. Після цього перед користувачем з’являється вікно(рис. 3.1) із чотирма кнопками. Дві зних залишені для розширення програмного забеспечення: генератор сигналу вільної форми та осцилограф. А інші дві дозволяють викликати додаткові вікна: логічний аналізатор(рис. 3.2) та генератор слів(рис. 3.3).


Рис 3.1 Головне віко віртуального вимірювального пристрою

Рис 3.2 Вікно логічного аналізатора


Рис 3.3 Вікно генератора слів

 

Інтерфейс складається з трьох вікон. Перше – головне вікно дозволяє відкривати вікна необхідних пристроїв. Вікна працюють як по одинці так і разом у залежності від налагодження.

Логічний аналізатор(рис.3.2) має наступні елементи керування:

-      керування кольором кожного з восьми сигналів;

-      змінення масштабу відображеного сигналу;

-      перегляд сигналу за допомогою полоси зсуву;

-      керування типом запуску якщо вибраний запус по каналу;

-      вибір запуску за необхідним каналом, або невикористовувати;

-      вибір глибини передпускової реєстрації;

-      вибір швидкості реєстрації данних з переліку або вільно;

-      запуск аналізатора;

-      останов аналізатора на випадок очікування пуску, який довго не наступає.

Генератор слів(рис. 3.3) має наступні елементи керування:

-      керування вводом необхідних послідовностей;

-      керування кількістю необхідних слов;

-      керування діапазоном з якого по який генерувати;

-      керування режимами роботи: циклічна генерація, одноразова, шагова.

-      Пуск генерації, або шаг;

-      Останов генерації у випадку наприклад циклічної генерації;

-      Керування швидкістю генерації з переліку а також вільно;

-      Режим роботи генератора слів та логічного аналізатора у парі.

4 ПОВІДОМЛЕННЯ ОПЕРАТОРУ

Програма виключає введення невірних даних у поля ввода, таким чином там де очікується ввід шістнадцятирічного числа можливо ввести твльки цифри від 0 до 9 та символи від a до f і, якщо символи вводяться у нижньому регістрі вводу, програма автоматично переводить іх до верхнього регістру. Також блокуються деякі несумісні операції, для того, щоб не дозволити користувачеві виконувати неможливі або невірні дії. Також виконується перевірка на наявність налаштовування обов’язкоаих параметрів, інакше виводиться повідомлення у якому зазначене виконання обов’язкових дій.


















Информация о работе «Віртуальний вимірювальний комплекс на базі учбового лабораторного стенду EV 8031»
Раздел: Информатика, программирование
Количество знаков с пробелами: 162235
Количество таблиц: 26
Количество изображений: 50

0 комментариев


Наверх