Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ООП / 1 / 3 / 3

.pdf
Скачиваний:
26
Добавлен:
01.06.2015
Размер:
176.23 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Федеральное государственное автономное образовательное учреждение высшего профессионального образования «Южный федеральный университет»

Факультет

РАДИОТЕХНИЧЕСКИЙ

Кафедра

 

МИКРОПРОЦЕССОРНЫХ СИСТЕМ

Отчет по лабораторной работе №1 по дисциплине:

«Объектно-ориентированное программирование».

На тему: «Спектр реакции системы на гармоническое воздействие».

Выполнил:

 

студент группы Р-102

В.Г.Горчаков

Проверил:доцент каф. МПС

М.И.Ледовской

Таганрог 2013 г.

Цель лабораторной работы

Изучить принципы создания приложения «Спектр реакции системы

на гармоническое воздействие» для Windows в инструментальной среде Delphi 7

Интерфейс приложения

графический

свойство

событие

обработчик

компонент

 

 

 

 

 

 

 

Button1

Caption

OnClick

Button1Click

CheckBox1

Caption

OnClick

CheckBox1Click

GroupBox1

Caption

 

 

Edit1

 

OnChange

EditChange

Label1

Caption

 

 

RadioGroup1

Caption

OnClick

RadioGroup1Click

UpDown1

 

Associate

 

GroupBox3

Caption

 

 

Edit2

 

OnChange

EditChange

Edit3

 

OnChange

EditChange

Edit4

 

OnChange

EditChange

Label2

Caption

 

 

Label3

Caption

 

 

Label4

Caption

 

 

Label5

Caption

 

 

Label6

Caption

 

 

Label7

Caption

 

 

UpDown2

 

Associate

 

UpDown3

 

Associate

 

UpDown4

 

Associate

 

PaintBox1

 

OnPaint

PaintBox1Paint

Код программы:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls;

type

TForm1 = class(TForm) GroupBox1: TGroupBox; Edit1: TEdit;

UpDown1: TUpDown; GroupBox3: TGroupBox; Label1: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit; UpDown2: TUpDown; UpDown3: TUpDown; UpDown4: TUpDown; Label2: TLabel; Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel; CheckBox1: TCheckBox; Button1: TButton; PaintBox1: TPaintBox;

RadioGroup1: TRadioGroup;

procedure PaintBox1Paint(Sender: TObject); procedure RadioGroup1Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure EditChange(Sender: TObject);

private

{Private declarations } public

{Public declarations } end;

const

 

Ymax=100;

// верхняя граница ПХ системы

Xmax=10;

// верхняя граница воздействия

var

Form1: Tform1;

TypCharact: integer; // тип ПХ системы

p: integer;

// параметр ПХ

X0,Xm: real;

// смещение и амплитуда воздействия

f: integer;

// частота воздействия

implementation

{$R *.dfm}

// передаточная характеристика системы functionTransCharact(x: real): real;

var

y: real; begin

caseTypCharactof

0:y:=p*x;

1:y:=0.1*p*Sqr(x);

2:y:=Ymax*(1-Exp(-0.1*p*x));

end; TransCharact:=y; end;

//воздействие

function Influence(t: real): real; begin

Influence:=X0+Xm*Cos(2*Pi*f*t); end;

// спектр реакции системы procedureSpectrReact;

const

 

 

 

tmax=1;

// верхняя граница времени

N=100;

// количество интервалов дискретизации времени

var

 

 

 

l,b: integer;

 

// кординаты левого нижнего угола области вывода

w,h: integer;

// ширина и высота области вывода

x: real;

 

// аргумент ПХ

t: real;

// время

 

fmax: integer;

// верхнее значение частоты воздействия

A: array[1..5] of real; // амплитуды спектра

Amax: real;

 

// верхнее значение амплитуды

dx,dt,df: real;

// приращения

MasY: array[0..N] of real;

// дискретные значения ПХ

cx0: integer;

// X-координатa начала координат графиков

cy0: array[1..3] of integer;

// Y-координаты начала координат графиков

mx,mt,mf,mr: real; // масштабы

cy: integer;

 

// текущая Y-координата

z: real;

 

// вспомогательные переменные

i,k: integer;

 

 

 

begin

// область вывода графиков with Form1.PaintBox1 do begin

Canvas.Pen.Color:=clBlack;

Canvas.Brush.Color:=clWhite;

Canvas.Rectangle(0,0,Width,Height);

l:=40; // X-координатa левоговерхнегоугла b:=Height-20; // Y-координатa левого верхнего угла h:=Height-50; // высота

w:=Width-80; // ширина end;

if f<>0 thenfmax:=5*f elsefmax:=1; // масштабы

mr:=(h-140)/4; // относительных единиц по Y-координате

mx:=(w-20)/Xmax;

// аргумента ПХ по X-координате

mt:=(w-20)/tmax;

// времени по X-координате

mf:=(w-20)/fmax;

// частоты по X-координате

with Form1.PaintBox1.Canvas do begin

//разметка осей для графика ПХ

//вертикальная ось

cx0:=l; cy:=b-h;

TextOut(cx0+w div 3,cy-20,'ПХсистемы'); TextOut(cx0+7,cy-15,'Y(X)');

for i:=0 to 4 do begin

MoveTo(cx0,cy); LineTo(cx0+3,cy);

TextOut(cx0-25,cy-7,FloatToStr(Ymax-(Ymax/5)*i)); MoveTo(cx0,cy); LineTo(cx0,cy+Round(0.2*mr)); cy:=cy+Round(0.2*mr);

end; TextOut(cx0-17,cy-7,'0');

//горизонтальная ось cy0[1]:=cy;

MoveTo(cx0,cy0[1]); LineTo(cx0+Round(Xmax*mx)+1,cy0[1]); dx:=Xmax/5;

for i:=1 to 5 do begin

MoveTo(cx0+Round(i*dx*mx),cy0[1]-3); LineTo(cx0+Round(i*dx*mx),cy0[1]); TextOut(cx0+Round(i*dx*mx)-3,cy0[1]+2,FloatToStr(i*dX)); end;

TextOut(w+40,cy0[1]+2,'X [ед]');

//разметка осей для графика воздействия

//вертикальная ось

cy:=cy+50;

TextOut(cx0+w div 3,cy-20,'Воздействие'); TextOut(cx0+7,cy-15,'X(t)');

for i:=0 to 4 do begin

MoveTo(cx0,cy); LineTo(cx0+3,cy); TextOut(cx0-20,cy-7,FloatToStr(Xmax-(Xmax/5)*i)); MoveTo(cx0,cy); LineTo(cx0,cy+Round(0.2*mr)); cy:=cy+Round(0.2*mr);

end; TextOut(cx0-17,cy-7,'0');

//горизонтальная ось cy0[2]:=cy;

MoveTo(cx0,cy0[2]); LineTo(cx0+Round(tmax*mt)+1,cy0[2]); dt:=tmax/5;

for i:=1 to 5 do begin

z:=i*dt; MoveTo(cx0+Round(z*mt),cy0[2]-3); LineTo(cx0+Round(z*mt),cy0[2]);

TextOut(cx0+Round(z*mt)-5,cy0[2]+2,FloatToStr(z)); end;

TextOut(w+40,cy0[2]+2,'t [c]');

//разметка осей для графика спектра

//вертикальная ось

cy:=cy+50;

TextOut(cx0+w div 4,cy-15,'Спектрреакции'); TextOut(cx0+7,cy-7,'А');

cy:=cy+10; Amax:=Ymax div 2;

for i:=0 to 10 do begin

MoveTo(cx0,cy); LineTo(cx0+3,cy); TextOut(cx0-20,cy-7,FloatToStr(Amax-(Amax/5)*i));

if i<>10 then begin

MoveTo(cx0,cy);

LineTo(cx0,cy+Round(0.2*mr));

cy:=cy+Round(0.2*mr); end;

if i=4 then cy0[3]:=cy; end;

// горизонтальнаяось

MoveTo(cx0,cy0[3]); LineTo(cx0+Round(fmax*mf)+1,cy0[3]); df:=fmax/5;

for i:=1 to 5 do begin

z:=i*df; MoveTo(cx0+Round(z*mf),cy0[3]-3); LineTo(cx0+Round(z*mf),cy0[3]);

TextOut(cx0+Round(z*mf)-7,cy0[3]+5,FloatToStr(i)+'f'); end;

TextOut(w+40,cy0[3]+5,'[Гц]');

// построение графика ПХ

Pen.Color:=clRed;

x:=0;

dx:=Xmax/N; MoveTo(cx0,cy0[1]-Round((TransCharact(0)/Ymax)*mr)); for i:=1 to N do

begin z:=i*dx;

LineTo(cx0+Round(z*mx),cy0[1]-Round((TransCharact(z)/Ymax)*mr)); MoveTo(cx0+Round(z*mx),cy0[1]-Round((TransCharact(z)/Ymax)*mr)); end;

// построение графика воздействия t:=0;

dt:=tmax/N;

MasY[0]:=TransCharact(Influence(0)); MoveTo(cx0,cy0[2]-Round((Influence(0)/Xmax)*mr)); for i:=1 to N do

begin z:=i*dt;

MasY[i]:=TransCharact(Influence(z)); LineTo(cx0+Round(z*mt),cy0[2]-Round((Influence(z)/Xmax)*mr)); MoveTo(cx0+Round(z*mt),cy0[2]-Round((Influence(z)/Xmax)*mr)); end;

// построение графика спектра if f<>0 then

begin

for k:=1 to 5 do begin

A[k]:=0;

z:=Pi*f*k*dt; for i:=1 to N do

A[k]:=A[k]+(MasY[i]-MasY[i-1])*Sin(z*(2*i-1));

z:=Sin(z)/Sqr(z)/N; A[k]:=-A[k]*z;

MoveTo(cx0+Round(k*f*mf),cy0[3]); LineTo(cx0+Round(k*f*mf),cy0[3]-Round((A[k]/Amax)*mr)); MoveTo(cx0+Round(k*f*mf)-2,cy0[3]-Round((A[k]/Amax)*mr)); LineTo(cx0+Round(k*f*mf)+2,cy0[3]-Round((A[k]/Amax)*mr)); end;

// коэффициентгармоник

if Form1.CheckBox1.Checked and (A[1]<>0) then TextOut(cx0,cy+10,'Коэффициентгармоник: '+ FloatToStrF(Sqrt(Sqr(A[2])+Sqr(A[3])+Sqr(A[4])+Sqr(A[5]))/A[1], ffFixed,3,2));

end; end; end;

procedure Tform1.PaintBoxPaint(Sender: Tobject); begin

SpectrReact; end;

procedure Tform1.RadioGroupClick(Sender: Tobject); begin

// изменениетипаПХ

TypCharact:=RadioGroup1.ItemIndex;

SpectrReact; end;

procedure Tform1.EditChange(Sender: Tobject); var

i: integer; s: string; begin

i:=(Sender as Tedit).Tag; s:=(Sender as Tedit).Text;

// обновление параметров ПХ и воздействия case i of

1:p:=StrToInt(s);

2:X0:=StrToFloat(s);

3:Xm:=StrToFloat(s);

4:f:=StrToInt(s);

end; SpectrReact; end;

procedure Tform1.ButtonClick(Sender: Tobject); begin

Application.Terminate; end;

procedure Tform1.CheckBoxClick(Sender: Tobject); begin

SpectrReact; end;

end.

Вывод: изучены принципы создания приложения «Спектр реакции системы на гармоническое воздействие» для Windows в инструментальной среде Delphi 7. Изучены основные свойства объектов среды программирования Delphi 7.

Соседние файлы в папке 3
  • #
    01.06.201586.75 Кб273.docx
  • #
    01.06.2015176.23 Кб263.pdf
  • #
    01.06.2015434 б25Project1.cfg
  • #
    01.06.20152.66 Кб24Project1.dof
  • #
    01.06.2015188 б24Project1.dpr
  • #
    01.06.2015876 б24Project1.res
  • #
    01.06.2015214 б24Project1.~dpr