0% found this document useful (0 votes)
27 views4 pages

TP1 Yes I Know

The document describes code for drawing sinusoidal and square waveforms. It defines procedures for drawing axes, sinusoidal and square waveforms, and decoding binary numbers. Buttons trigger procedures that generate waveforms based on user selections for amplitude, frequency, height, width and binary number.

Uploaded by

anisashintaap
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views4 pages

TP1 Yes I Know

The document describes code for drawing sinusoidal and square waveforms. It defines procedures for drawing axes, sinusoidal and square waveforms, and decoding binary numbers. Buttons trigger procedures that generate waveforms based on user selections for amplitude, frequency, height, width and binary number.

Uploaded by

anisashintaap
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

unit Unit1;

interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TFrmsinyal = class(TForm)
imgsinus: TImage;
Imgkotak: TImage;
Label3: TLabel;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
edsumbux: TEdit;
Button2: TButton;
edsumbuy: TEdit;
GroupBox5: TGroupBox;
GroupBox6: TGroupBox;
rba1: TRadioButton;
rba2: TRadioButton;
rba4: TRadioButton;
GroupBox7: TGroupBox;
rbf2: TRadioButton;
rbf5: TRadioButton;
rbf10: TRadioButton;
GroupBox1: TGroupBox;
Label4: TLabel;
edbiner: TEdit;
GroupBox4: TGroupBox;
rbt30: TRadioButton;
rbt60: TRadioButton;
rbt100: TRadioButton;
GroupBox8: TGroupBox;
rbl10: TRadioButton;
rbl30: TRadioButton;
rbl50: TRadioButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Frmsinyal: TFrmsinyal;
implementation
{$R *.dfm}
procedure sumbu1(ax,ay,b,c:integer);
begin
frmsinyal.imgsinus.Canvas.MoveTo(ax,ay);

frmsinyal.imgsinus.Canvas.LineTo(ax+b,ay);
frmsinyal.imgsinus.Canvas.MoveTo(ax,ay);
frmsinyal.imgsinus.Canvas.LineTo(ax,ay-c);
frmsinyal.imgsinus.Canvas.MoveTo(ax,ay);
frmsinyal.imgsinus.Canvas.LineTo(ax,ay+c);
frmsinyal.imgsinus.Canvas.Pen.Color:=clblue;
frmsinyal.imgsinus.Canvas.MoveTo(ax,ay+110);
frmsinyal.imgsinus.Canvas.LineTo(ax+160,ay+110);
frmsinyal.imgsinus.Canvas.MoveTo(ax+220,ay+110);
frmsinyal.imgsinus.Canvas.LineTo(ax+390,ay+110);
frmsinyal.imgsinus.Canvas.TextOut(ax+170,ay+105,'1 detik');
frmsinyal.imgsinus.Canvas.TextOut(ax,ay-c,'Amplitude (A)');
frmsinyal.imgsinus.Canvas.TextOut(ax+b-15,ay-15,'Time(t)');
frmsinyal.imgsinus.Canvas.TextOut(ax-10,ay-55,'2-');
frmsinyal.imgsinus.Canvas.TextOut(ax-10,ay-107,'4-');
end;
procedure sumbu2(ax,ay,b,c:integer);
begin
frmsinyal.imgkotak.Canvas.MoveTo(ax,ay);
frmsinyal.imgkotak.Canvas.LineTo(ax+b,ay);
frmsinyal.imgkotak.Canvas.MoveTo(ax,ay);
frmsinyal.imgkotak.Canvas.LineTo(ax,ay-c);
frmsinyal.imgkotak.Canvas.MoveTo(ax,ay);
frmsinyal.imgkotak.Canvas.LineTo(ax,ay+c);
frmsinyal.imgkotak.Canvas.TextOut(ax,ay-c,'Amplitude (v)');
frmsinyal.imgkotak.Canvas.TextOut(ax+b-5,ay+5,'Time(s)');
frmsinyal.imgkotak.Canvas.TextOut(ax-15,ay-37,'30-');
frmsinyal.imgkotak.Canvas.TextOut(ax-15,ay-67,'60-');
frmsinyal.imgkotak.Canvas.TextOut(ax-21,ay-107,'100-');
end;
procedure satu(ax,ay,a,b,i:integer);
begin
frmsinyal.imgkotak.Canvas.Pen.Color:=clred;
frmsinyal.imgkotak.Canvas.MoveTo(ax+(i-1)*b,ay-a);
frmsinyal.imgkotak.Canvas.LineTo(ax+b+(i-1)*b,ay-a);
end;
procedure nol(ax,ay,a,b,i:integer);
begin
frmsinyal.imgkotak.Canvas.Pen.Color:=clred;
frmsinyal.imgkotak.Canvas.MoveTo(ax+(i-1)*b,ay);
frmsinyal.imgkotak.Canvas.LineTo(ax+b+(i-1)*b,ay);
end;
procedure tegak(ax,ay,a,b,i:integer);
begin
frmsinyal.imgkotak.Canvas.Pen.Color:=clred;
frmsinyal.imgkotak.Canvas.MoveTo(ax+(i-1)*b,ay);
frmsinyal.imgkotak.Canvas.LineTo(ax+(i-1)*b,ay);
end;
procedure reset;
var
x,y:integer;
begin
frmsinyal.imgsinus.Picture:=nil;
frmsinyal.imgsinus.Refresh ;
frmsinyal.imgkotak.Picture:=nil;
frmsinyal.imgkotak.Refresh ;
x:=strtoint(frmsinyal.edsumbux.Text);
y:=strtoint(frmsinyal.edsumbuy.Text);

sumbu1(20,120,x,y);
sumbu2(20,120,x,y);
end;
procedure TFrmsinyal.Button1Click(Sender: TObject);
var
amp,sx,x,y:integer;
sy,frek:real;
begin
reset;
if rba1.Checked then amp:=25; //amplitudo=1 v
if rba2.Checked then amp:=50; //amplitudo=2 v
if rba4.Checked then amp:=100; //amplitudo=1 v
if rbf2.Checked then frek:=10; //amplitudo=4 v
if rbf5.Checked then frek:=4; //amplitudo=5 v
if rbf10.Checked then frek:=2; //amplitudo=10 v
x:=strtoint(frmsinyal.edsumbux.Text);
y:=strtoint(frmsinyal.edsumbuy.Text);
sumbu1(20,120,x,y);
for sx:=1 to 395 do
begin
sy:=sin(sx/pi/frek)*amp;
frmsinyal.imgsinus.Canvas.pixels[sx+20,120-round(sy)]:=clred;
end;
end;
procedure TFrmsinyal.Button2Click(Sender: TObject);
var
i,x,y,tinggi,lebar:integer;
biner:string;
tnd : integer;
begin
reset;
if rbt30.checked then lebar:=30;
if rbt60.checked then lebar:=60;
if rbt100.checked then lebar:=100;
if rbl10.checked then tinggi:=10;
if rbl30.checked then tinggi:=30;
if rbl50.checked then tinggi:=50;
biner:=edbiner.Text;
x:=strtoint(frmsinyal.edsumbux.Text);
y:=strtoint(frmsinyal.edsumbuy.Text);
sumbu2(20,120,x,y);
tnd:=0;
for i:=1 to 16 do
if biner[i]='1' then
if tnd=0 then begin tegak(20,120,lebar,tinggi,i);
satu (20,120,lebar,tinggi,i);
tnd:=1; end
else satu(20,120,lebar,tinggi,i)
else if tnd=1 then begin tegak(20,120,lebar,tinggi,i);
nol (20,120,lebar,tinggi,i);
tnd:=0; end
else nol(20,120,lebar,tinggi,i);
end;
end.

menu sinus : 5
amplitudo : 6
frek : 7
menu kotak : 1
tinggi : 4
lebar : 8

You might also like