Ñòóäåíòàì > Êóðñîâûå > Èññëåäîâàíèå ýôôåêòà àâòîäèííîãî äåòåêòèðîâàíèÿ â ìíîãîêîíòóðíîì ãåíåðàòîðå íà äèîäå Ãàííà
Èññëåäîâàíèå ýôôåêòà àâòîäèííîãî äåòåêòèðîâàíèÿ â ìíîãîêîíòóðíîì ãåíåðàòîðå íà äèîäå ÃàííàÑòðàíèöà: 5/7
y[k]:=w[k]+h*f[k]/2;
end;
x:=x+h/2;
anna(y,f);
for k:=1 to n do begin
K1[k]:=K1[k]+2*f[k]*h;
y[k]:=w[k]+f[k]*h/2;
end;
anna(y,f);
for k:=1 to n do begin
K1[k]:=K1[k]+2*f[k]*h;
y[k]:=w[k]+f[k]*h;
end;
x:=x+h/2;
anna(y,f);
for k:=1 to n do begin
y[k]:=w[k]+(K1[k]+f[k]*h)/6;
w[k]:=y[k];
end;
end;
{ âû÷èñëåíèå ìîùíîñòè }
power:=power+y[8]*y[2];
{
âû÷èñëåíèå ÷àñòîòû ïî èçìåíåíèþ çíàêà ïðîèçâîäíîé }
if fsign > 0 then
begin
if y[8]-old_cur <= 0 then begin
if fcount = 0 then fpoint:=iii1;
fcount:=fcount+1;
fsign:=-1;
end;
end
else begin
if y[8]-old_cur >= 0 then begin
if fcount = 0 then fpoint:=iii1;
fcount:=fcount+1;
fsign:=1;
end;
end;
old_cur:=y[8];
if fcount = 15 then begin { ×àñòîòà ñèãíàëà }
fcount:=1;
mark:=1;
old_f:=frequency;
frequency:=(iii1-fpoint)/(h*4.2e3 * 5);
fpoint:=iii1;
power:=power *h*frequency/5;
str(power:5:4,s);
power:=0;
setcolor(0); outtextxy(250,460,'
');
setcolor(11);
outtextxy(250,460,'Puhf = '+s+' W');
end;
{
âûâîä ãðàôèêîâ òîêîâ è íàïðÿæåíèé }
if(iii1>0) then
begin
an3;
if(iii1=loop*1000) then begin
loop:=loop+1;
setfillstyle(0,0);
bar(xgmin+1,ygmin+1,xgmax-1,ygmax-1);
scal;
setwritemode(XORput);
setcolor(15);
line(visir_1,ygmin,visir_1,ygmax);
line(visir_2,ygmin,visir_2,ygmax);
setwritemode(COPYput);
str(d_visir*1e9:5:4,s);
outtextxy(540,255,s+' ns');
round:=round+1;
setcolor(0);
outtextxy(50,460,' ');
str(round*4:6,s);
setcolor(11);
outtextxy(50,460,'time = '+s+' ns+');
oldx:=xgmax-trunc((xmax-0)*(xgmax- xgmin)/(xmax-xmin));
for aaa:=1 to 10 do
oldy[aaa]:=ygmin-trunc((ymax- y[8]*10)*(ygmin-ygmax)/(ymax-ymin));
end;
bn:=x*1e9;
y1:=y[1]-1;
xg:=xgmax-trunc((xmax-bn)*(xgmax-xgmin)/(xmax- xmin));
xg:=xg-145-580*(loop-1);
yg:=ygmin-trunc((ymax-y[8]*10)*(ygmin- ygmax)/(ymax-ymin));
setcolor(10);
line(oldx,oldy[1],xg,yg);
oldy[1]:=ygmin-trunc((ymax-y[8]*10)*(ygmin- ygmax)/(ymax-ymin));
{ yg:=ygmin-trunc((ymax-frequency/1e10)*(ygmin- ygmax)/(ymax-ymin));
setcolor(14);
line(oldx,oldy[2],xg,yg);
oldy[2]:=ygmin-trunc((ymax- frequency/1e10)*(ygmin-ygmax)/(ymax-ymin));
}
yg:=ygmin-trunc((ymax-y1)*(ygmin-ygmax)/(ymax- ymin));
setcolor(13);
line(oldx,oldy[3],xg,yg);
oldy[3]:=ygmin-trunc((ymax-y1)*(ygmin- ygmax)/(ymax-ymin));
oldx:=xg;
end;
{ phas. portret }
if(iii1>0) then begin
an4;
di:=(y[8]-oldc1)*50*size_y;
yg:=ygmax-trunc((ymax-di)*(ygmax-ygmin)/(ymax- ymin));
xg:=xgmin-trunc((xmax-y[8]*15*size_x)*(xgmin- xgmax)/(xmax-xmin));
putpixel(xg+phas_x,yg+phas_y,10);
oldc1:=y[8];
if(iii1<=500) then begin
Smax:=Smax+y[8];
sign[iii1]:=y[8];
end
else begin
Smax:=Smax-sign[1]+y[8];
for i:=1 to 499 do begin
sign[i]:=sign[i+1];
end;
sign[500]:=y[8];
end;
end;
if(iii1>249) then begin
{ control circle }
if (mark=1) then begin
mark:=0;
setcolor(14);
circle(xg+phas_x,yg+phas_y,3);
setcolor(10);
end;
end;
{ óïðàâëåíèå ýêðàíîì }
if keypressed=true then begin
c:=readkey;
case c of
{ ïåpåìåùåíèå ôàç. ïîpepåòà }
'1': begin
an4;
setfillstyle(0,0);
bar(xgmin+1,ygmin+1,xgmax-1,ygmax-1);
end;
'4': begin
phas_x:=phas_x-10;
an4;
Size := ImageSize(xgmin+1, ygmin+1, xgmax-1,
ygmax-1);
GetMem(P, Size);
GetImage(xgmin+1, ygmin+1, xgmax-1, ygmax-1,
P^);
setfillstyle(0,0);
bar(xgmin+1,ygmin+1,xgmax-1,ygmax-1);
PutImage(xgmin+1-10, ygmin+1, P^, NormalPut);
FreeMem(P, Size);
scal;
end;
'6': begin
phas_x:=phas_x+10;
an4;
Size := ImageSize(xgmin+1, ygmin+1, xgmax-1,
ygmax-1);
GetMem(P, Size);
GetImage(xgmin+1, ygmin+1, xgmax-1, ygmax-1,
P^);
setfillstyle(0,0);
bar(xgmin+1,ygmin+1,xgmax-1,ygmax-1);
PutImage(xgmin+1+10, ygmin+1, P^, NormalPut);
FreeMem(P, Size);
scal;
end;
'2': begin
|