unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) Image: TImage; Label1: TLabel; btnAMI: TButton; btnexit: TButton; edbiner: TEdit; procedure btnAMIClick(Sender: TObject); procedure btnexitClick(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure AMI_1positif(ax,ay,a,b,i:integer); // AMI +begin form1.image.Canvas.Pen.Color:=clred; form1.image.Canvas.Pen.Width:=2; form1.image.Canvas.MoveTo(ax+(i-1)*b,ay); form1.image.Canvas.LineTo(ax+(i-1)*b,ay-a); form1.image.Canvas.MoveTo(ax+(i-1)*b,ay-a); form1.image.Canvas.LineTo(ax+b+(i-1)*b,ay-a); form1.image.Canvas.MoveTo(ax+b+(i-1)*b,ay-a); form1.image.Canvas.LineTo(ax+b+(i-1)*b,ay); end;
procedure AMI_1negatif(ax,ay,a,b,i:integer); // AMI -begin form1.image.Canvas.Pen.Color:=clred; form1.image.Canvas.Pen.Width:=2; form1.image.Canvas.MoveTo(ax+(i-1)*b,ay); form1.image.Canvas.LineTo(ax+(i-1)*b,ay+a); form1.image.Canvas.MoveTo(ax+(i-1)*b,ay+a); form1.image.Canvas.LineTo(ax+b+(i-1)*b,ay+a); form1.image.Canvas.MoveTo(ax+b+(i-1)*b,ay+a); form1.image.Canvas.LineTo(ax+b+(i-1)*b,ay);end;
procedure AMI_0(ax,ay,a,b,i:integer); //AMI NOL begin form1.image.Canvas.Pen.Color:=clred; form1.image.Canvas.Pen.Width:=2; form1.image.Canvas.MoveTo(ax+(i-1)*b,ay); form1.image.Canvas.LineTo(ax+b+(i-1)*b,ay); end;
procedure dtegak(ax,ay,a,b,i:integer);begin form1.image.Canvas.Pen.Color:=clred; form1.image.Canvas.Pen.Width:=2; form1.image.Canvas.MoveTo((ax+(i-1)*b),ay); form1.image.Canvas.LineTo((ax+b+(i-1)*b),ay);end;
procedure sumbu;var q,j:integer; edbiner:string;beginedbiner:=form1.edbiner.Text;q:=length(edbiner);
form1.image.Picture:=nil;form1.image.Refresh;
form1.image.Canvas.Pen.Color:=clBlack; form1.image.Canvas.Pen.Style:=pssolid; form1.image.Canvas.MoveTo(10,200); form1.image.Canvas.LineTo(10,200-145); form1.image.Canvas.TextOut(10,200-155,'Amplitudo'); form1.image.Canvas.TextOut(10+150,200-155,'BIPOLAR AMI'); form1.image.Canvas.MoveTo(10,140); form1.image.Canvas.LineTo(10+370,140); form1.image.Canvas.TextOut(10+370,140+5,'Time'); form1.image.Canvas.Pen.Color:=clBlue; form1.image.Canvas.Pen.Style:=psDot; form1.image.Canvas.TextOut(200-200,200-100,'5V+'); form1.image.Canvas.TextOut(200-200,200-70,'0V'); form1.image.Canvas.TextOut(200-200,200-40,'5V-'); for j:=1 to q do begin form1.image.Canvas.MoveTo(10+(60*j),200-130); form1.image.Canvas.LineTo(10+(60*j),200); form1.image.Canvas.TextOut(10+(60*j)-15,200-130,edbiner[j]); end;end;
procedure BIPOLARAMI;//CODING BIPOLAR AMIvar ax,ay,a,b,i,k:integer; edbiner:string;beginedbiner:=form1.edbiner.Text;ax:=10; ay:=140; a:=60; b:=30;k:=0; for i:=1 to length(edbiner) do begin if edbiner[i]='1' then begin k:=k+1; if k mod 2=1 then begin AMI_1positif(ax,ay,b,a,i); end else begin AMI_1negatif(ax,ay,b,a,i); end end else
begin dtegak(ax,ay,b,a,i); AMI_0(ax,ay,b,a,i); end endend;
procedure TForm1.btnAMIClick(Sender: TObject);beginsumbu;BIPOLARAMI;end;
procedure TForm1.btnexitClick(Sender: TObject);beginclose;end;
end.