Anda di halaman 1dari 22

LAPORAN PRAKTIKUM KOMUNIKASI DATA

PENGKODEAN DATA DIGITAL


(UNIPOLAR, RZ, AMI, B8ZS, NRZI)








Disusun oleh :
HILMI WIJAYANTI
KELAS 2A / 09 / 1231130021



PRODI TEKNIK TELEKOMUNIKASI
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI MALANG
2014

1. Tujuan
Dapat mengkonversikan data biner dari ke pengkodean data digital
(UNIPOLAR, RZ, AMI, B8ZS, NRZI)
Dapat membuat program untuk mensimulasikan karakteristik
pengkodean data biner di komputer.
Mampu membuat flow chart pengkodean data digital.

2. Alat dan bahan
Program delphi versi 6 keatas
Satu unit komputer

3. Dasar Teori
Elemen sinyal adalah tiap pulsa dari sinyal digital. Data binary ditransmisikan
dengan meng-encode -kan tiap bit data menjadi elemen-elemen sinyal. Sinyal
Unipolar adalah semua elemen sinyal yang mempunyai tanda yang sama, yaitu
positif semua atau negatif semua. Sinyal polar adalah elemen-elemen sinyal
dimana salah satu logic statenya diwakili oleh level tegangan positif dan yang
lainnya oleh level tegangan negatif.
Durasi atau lebar suatu bit adalah waktu yang diperlukan oleh transmitter untuk
memancarkan bit tersebut.
Modulation rate adalah kecepatan dimana level sinyal berubah, dinyatakan
dalam bauds atau elemen sinyal per detik. Istilah mark dan space menyatakan
digit binary '1' dan '0'.
Tugas-tugas receiver dalam mengartikan sinyal-sinyal digital :
receiver harus mengetahui timing dari tiap bit
receiver harus menentukan apakah level sinyal dalam posisi bit high(1) atau
low(0)
Tugas-tugas ini dilaksana kan dengan men-sampling tiap posisi bit pada tengah-
tengah interval dan membandingkan nilainya dengan threshold.


Faktor yang menentukan sukses dari receiver dalam mengartikan sinyal
yang datang :
Data rate (kecepatan data) : peningkatan data rate akan meningkatkan bit
error rate (kecepatan error dari bit).
S/N : peningkatan S/N akan menurunkan bit error rate.
Bandwidth : peningkatan bandwidth dapat meningkatkan data rate.


Lima faktor yang perlu dinilai atau dibandingkan dari berbagai teknik
komunikasi:
Spektrum sinyal : disain sinyal yang bagus harus mengkonsentrasikan
kekuatan transmisinya pada daerah tengah dari bandwidth transmisi; untuk
mengatasi distorsi dalam penerimaan sinyal digunakan disain kode yang
sesuai dengan bentuk dari spektrum sinyal transmisi.
Clocking : menentukan awal dan akhir dari tiap posisi bit dengan
mekanisme synchronisasi yang berdasarkan pada sinyal transmisi.
Deteksi error : dibentuk dalam skema fisik encoding sinyal.
Interferensi sinyal dan Kekebalan terhadap noise
Biaya dan kesulitan : semakin tinggi kecepatan pensinyalan untuk
memenuhi data rate yang ada, semakin besar biayanya.


Gambar 1. Format encoding sinyal digital.

NONRETURN TO ZERO (NRZ)
Nonreturn-to-Zero-Level (NRZ-L) yaitu suatu kode dimana tegangan
negative dipakai untuk mewakili suatu binary dan tegangan positif dipakai
untuk mewakili binary lainnya.
Nonreturn to Zero Inverted (NRZI) ya itu suatu kode dimana suatu transisi
(low ke high atau high ke low) pada awal suatu bit time akan dikenal sebagai
binary '1' untuk bit time tersebut; tidak ada transisi berarti binary '0'. Sehingga
NRZI merupakan salah satu contoh dari differensial encoding.
Keuntungan differensial encoding : lebih kebal noise, tidak dipengaruhi oleh
level tegangan.
Kelemahan dari NRZ-L maupun NRZI : keterbatasan dalam komponen dc dan
kemampuan synchronisasi yang buruk




MULTILEVEL BINARY
Kode ini menggunakan lebih dari 2 level sinyal (contohnya : pada gambar 1,
bipolar-AMI dan pseudoternary).
Bipolar-AMI yaitu suatu kode dimana binary '0' diwakili dengan tidak adanya
line sinyal dan binary '1' diwakili oleh suatu pulsa positif atau negatif.
Pseudoternary yaitu suatu kode dimana binary '1' diwakili oleh ketiadaan line
sinyal dan binary '0' oleh pergantian pulsa-pulsa positif dan negatif.
Keunggulan multilevel binary terhadap NRZ : kemampuan synchronisasi yang
baik, tidak menangkap komponen dc dan pemakaian bandwidth yang lebih
kecil, dapat menampung bit informasi yang lebih.
Kekurangannya dibanding NRZ : diperlukan receiver yang mampu
membedakan 3 level (+A, -A, 0) sehingga membutuhkan lebih dari 3 db
kekuatan sinyal dibandingkan NRZ untuk probabilitas bit error yang sama.

BIPHASE
Dua tekniknya yaitu : manchester dan differential manchester.
Manchester yaitu suatu kode dimana ada suatu transisi pada setengah dari
periode tiap bit : transisi low ke high mewakili '1' dan high ke low mewakili '0'.
Differential manchester yaitu suatu kode dimana binary '0' diwakili oleh
adanya transisi di awal periode suatu bit dan binary '1' diwakili oleh ketiadaan
transisi di awal periode suatu bit.
Keuntungan rancangan biphase :
1. Synchronisasi : karena adanya transisi selama tiap bit time, receiver dapat
men-synchron-kan pada transis tersebut atau dikenal sebagai self clocking
codes.
2. Tidak ada komponen dc.
3. Deteksi terhadap error : ketiadaan dari transisi yang diharapkan, dapat
dipakai untuk mendeteksi error.
Kekurangannya : memakai bandwidth yang lebih lebar dari pada multilevel
binary.


TEKNIK SCRAMBLING
Teknik biphase memerlukan kecepatan pensinyalan yang tinggi relatif terhadap
data rate sehingga lebih mahal pada aplikasi jarak jauh sehingga digunakan
teknik scrambling dimana serangkaian level tegangan yang tetap pada line
digantikan dengan serangkaian pengisi yang akan melengkapi transisi yang cukup
untuk clock receiver mempertahankan synchronisasi.
Hasil dari disain ini :
tidak ada komponen dc
tidak ada serangkaian sinyal level nol yang panjang
tidak terjadi reduksi pada data rate
kemampuan deteksi error.

Bipolar with 8-Zeros Substitution (B8ZS) yaitu suatu kode dimana :
jika terjadi oktaf dari semua nol dan pulsa tegangan terakhir yang mendahului
oktaf ini adalah positif, maka 8 nol dari oktaf tersebut di-encode sebagai 000+ -
0- +
jika terjadi oktaf dari semua nol dan pulsa tegangan terakhir yang mendahului
oktaf ini adalah negatif, maka 8 nol dari oktaf tersebut di-encode sebagai 000-
+0+ -.













4. Flowchart
TTL(unipolar)
START
Masukkan Nilai
Biner
Biner = 1 &&
tnd = 0
Nilai tnd=1
Biner = 1 &&
tnd = 1
YA
TIDAK
YA
Biner = 0 &&
tnd = 1
Nilai tnd = 0
Biner = 0 &&
tnd = 0
TIDAK TIDAK
YA YA
FINISH
TIDAK


RZ
START
Masukkan Nilai
Biner
Biner = 1 Biner = 0
YA
TIDAK
YA
TIDAK
FINISH









NRZ-I
START
Masukkan Nilai
Biner
Biner = 1 &&
tnd = 0
Nilai tnd=1
Biner = 1 &&
tnd = 1
YA
TIDAK
Nilai tnd = 0
YA
Biner = 0 &&
tnd = 1
Biner = 0 &&
tnd = 0
TIDAK TIDAK
YA YA
FINISH TIDAK










AMI
START
Masukkan Nilai
Biner
Biner = 1 &&
tnd = 0
Nilai tnd=1
Biner = 1 &&
tnd = 1
YA
TIDAK
Nilai tnd=0
YA
Biner = 0
TIDAK TIDAK
YA
FINISH








B8ZS
START
Masukkan Nilai
Biner
Biner = 1 &&
tnd = 0
Nilai tnd=1
Biner = 1 &&
tnd = 1
YA
TIDAK
Nilai tnd=0
YA
Biner = 0
TIDAK
YA
FINISH
Jumlah Biner 0
= 8 &&
Polaritas +
YA
Jumlah Biner 0
= 8 &&
Polaritas -
YA
TIDAK TDAK TIDAK








5. Program
unit Encoder;
interface
uses
Windows, Messages, SysUtils,
Variants, Classes, Graphics, Controls,
Forms,
Dialogs, ExtCtrls, StdCtrls;
type
Tform1 = class(TForm)
isibiner: TLabel;
Panel1: TPanel;
btnb8: TButton;
btnami: TButton;
btnttl: TButton;
btnall: TButton;
btnrz: TButton;
btnnrzi: TButton;
btnexit: TButton;
Label1: TLabel;
btnnol: TButton;
biner: TEdit;
btnsatu: TButton;
btndelete: TButton;
Imgnrzi: TImage;
Imgami: TImage;
Imgrz: TImage;
Imguni: TImage;
Imgb8zs: TImage;
procedure btnnolClick(Sender:
TObject);
procedure btnsatuClick(Sender:
TObject);
procedure btndeleteClick(Sender:
TObject);
procedure btnclearClick(Sender:
TObject);
procedure btnexitClick(Sender:
TObject);
procedure btnrzClick(Sender:
TObject);
procedure btnnrziClick(Sender:
TObject);
procedure btnttlClick(Sender:
TObject);
procedure btnamiClick(Sender:
TObject);
procedure btnb8Click(Sender:
TObject);
procedure btnallClick(Sender:
TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
form1: Tform1;

implementation
{$R *.dfm}

//PROCEDURE SINYAL RZ
procedure rz_1(ax,ay,a,b,n:integer);
begin

form1.imgrz.Canvas.Pen.Color:=clred;
form1.imgrz.Canvas.Pen.Width:=2;
form1.imgrz.Canvas.MoveTo(ax+(n-
1)*(b+b),ay);
form1.imgrz.Canvas.LineTo(ax+(n-
1)*(b+b),ay-a);

form1.imgrz.Canvas.LineTo(ax+b+(n-
1)*(b+b),ay-a);

form1.imgrz.Canvas.LineTo(ax+b+(n-
1)*(b+b),ay);

form1.imgrz.Canvas.LineTo(ax+b+b+(
n-1)*(b+b),ay);
end;

procedure rz_0(ax,ay,a,b,n:integer);
begin

form1.imgrz.Canvas.Pen.Color:=clred;
form1.imgrz.Canvas.Pen.Width:=2;
form1.imgrz.Canvas.MoveTo(ax+(n-
1)*(b+b),ay);
form1.imgrz.Canvas.LineTo(ax+(n-
1)*(b+b),ay+a);

form1.imgrz.Canvas.LineTo(ax+b+(n-
1)*(b+b),ay+a);

form1.imgrz.Canvas.LineTo(ax+b+(n-
1)*(b+b),ay);

form1.imgrz.Canvas.LineTo(ax+b+b+(
n-1)*(b+b),ay);
end;

//PROCEDURE SINYAL NRZI
procedure
satuNRZI(ax,ay,a,b,i:integer);
begin

form1.imgnrzi.Canvas.Pen.Color:=clre
d;
form1.imgnrzi.Canvas.Pen.Width:=2;

form1.imgnrzi.Canvas.MoveTo(ax+(i-
1)*b,ay+a);

form1.imgnrzi.Canvas.LineTo(ax+b+(i
-1)*b,ay+a);
end;
procedure
nolNRZI(ax,ay,a,b,i:integer);
begin

form1.imgnrzi.Canvas.Pen.Color:=clre
d;
form1.imgnrzi.Canvas.Pen.Width:=2;

form1.imgnrzi.Canvas.MoveTo(ax+(i-
1)*b,ay-a);

form1.imgnrzi.Canvas.LineTo(ax+b+(i
-1)*b,ay-a);
end;
procedure
tegakNRZI(ax,ay,a,b,i:integer);
begin

form1.imgnrzi.Canvas.Pen.Color:=clre
d;
form1.imgnrzi.Canvas.Pen.Width:=2;

form1.imgnrzi.Canvas.MoveTo(ax+(i-
1)*b,ay+a);
form1.imgnrzi.Canvas.LineTo(ax+(i-
1)*b,ay-a);
end;
//PROCEDURE SINYAL TTL
procedure satu(ax,ay,a,b,i:integer);
begin

form1.imguni.Canvas.Pen.Color:=clred
;
form1.imguni.Canvas.Pen.Width:=2;
form1.imguni.Canvas.MoveTo(ax+(i-
1)*b,ay-a);

form1.imguni.Canvas.LineTo(ax+b+(i-
1)*b,ay-a);
end;
procedure nol(ax,ay,a,b,i:integer);
begin

form1.imguni.Canvas.Pen.Color:=clred
;
form1.imguni.Canvas.Pen.Width:=2;
form1.imguni.Canvas.MoveTo(ax+(i-
1)*b,ay);

form1.imguni.Canvas.LineTo(ax+b+(i-
1)*b,ay);
end;
procedure tegak(ax,ay,a,b,i:integer);
begin

form1.imguni.Canvas.Pen.Color:=clred
;
form1.imguni.Canvas.Pen.Width:=2;
form1.imguni.Canvas.MoveTo(ax+(i-
1)*b,ay);
form1.imguni.Canvas.LineTo(ax+(i-
1)*b,ay-a);
end;





//PROCEDURE SINYAL AMI
procedure ami1_1(ax,ay,a,b,i:integer);
begin

form1.imgami.Canvas.Pen.Color:=clre
d;
form1.imgami.Canvas.Pen.Width:=2;
form1.imgami.Canvas.MoveTo(ax+(i-
1)*b,ay);
form1.imgami.Canvas.LineTo(ax+(i-
1)*b,ay-a);

form1.imgami.Canvas.LineTo(ax+b+(i
-1)*b,ay-a);

form1.imgami.Canvas.LineTo(ax+b+(i
-1)*b,ay);
end;

procedure ami1_2(ax,ay,a,b,i:integer);
begin

form1.imgami.Canvas.Pen.Color:=clre
d;
form1.imgami.Canvas.Pen.Width:=2;
form1.imgami.Canvas.MoveTo(ax+(i-
1)*b,ay);
form1.imgami.Canvas.LineTo(ax+(i-
1)*b,ay+a);

form1.imgami.Canvas.LineTo(ax+b+(i
-1)*b,ay+a);

form1.imgami.Canvas.LineTo(ax+b+(i
-1)*b,ay);
end;

procedure ami0(ax,ay,a,b,i:integer);
begin

form1.imgami.Canvas.Pen.Color:=clre
d;
form1.imgami.Canvas.Pen.Width:=2;
form1.imgami.Canvas.MoveTo(ax+(i-
1)*b,ay);

form1.imgami.Canvas.LineTo(ax+b+(i
-1)*b,ay);
end;


//PROCEDURE SINYAL B8ZS
procedure
btnb8plus(ax,ay,a,b,i:integer);
begin

form1.imgb8zs.Canvas.Pen.Color:=clre
d;
form1.imgb8zs.Canvas.Pen.Width:=2;

form1.imgb8zs.Canvas.MoveTo(ax+(i-
1)*b,ay);
form1.imgb8zs.Canvas.LineTo(ax+(i-
1)*b,ay-a);

form1.imgb8zs.Canvas.LineTo(ax+b+(
i-1)*b,ay-a);

form1.imgb8zs.Canvas.LineTo(ax+b+(
i-1)*b,ay);
end;

procedure
btnb8minus(ax,ay,a,b,i:integer);
begin

form1.imgb8zs.Canvas.Pen.Color:=clre
d;
form1.imgb8zs.Canvas.Pen.Width:=2;

form1.imgb8zs.Canvas.MoveTo(ax+(i-
1)*b,ay);
form1.imgb8zs.Canvas.LineTo(ax+(i-
1)*b,ay+a);

form1.imgb8zs.Canvas.LineTo(ax+b+(
i-1)*b,ay+a);

form1.imgb8zs.Canvas.LineTo(ax+b+(
i-1)*b,ay);
end;

procedure btnb8nol(ax,ay,a,b,i:integer);
begin

form1.imgb8zs.Canvas.Pen.Color:=clre
d;
form1.imgb8zs.Canvas.Pen.Width:=2;

form1.imgb8zs.Canvas.MoveTo(ax+(i-
1)*b,ay);

form1.imgb8zs.Canvas.LineTo(ax+b+(
i-1)*b,ay);
end;

//PROCEDURE UTAMA DAN
SUMBU
procedure sumbu;
var
q,n:integer;
biner:string;
begin
biner:=form1.biner.Text;
q:=length(biner);
//REFRESH PICTURE
form1.imgrz.Picture:=nil;
form1.imgrz.Refresh;
form1.imguni.Picture:=nil;
form1.imguni.Refresh;
form1.imgnrzi.Picture:=nil;
form1.imgnrzi.Refresh;
form1.imgami.Picture:=nil;
form1.imgami.Refresh;
form1.imgb8zs.Picture:=nil;
form1.imgb8zs.Refresh;

//SUMBU RZ
form1.imgrz.Canvas.Pen.Color:=clBlac
k;

form1.imgrz.Canvas.Pen.Style:=pssoli
d;

form1.imgrz.Canvas.MoveTo(10,160);
form1.imgrz.Canvas.LineTo(10,160-
145);
form1.imgrz.Canvas.TextOut(10,160-
155,'Amplitudo');

form1.imgrz.Canvas.TextOut(10+150,1
60-155,'RZ');

form1.imgrz.Canvas.MoveTo(10,100);

form1.imgrz.Canvas.LineTo(10+1070,
100);

form1.imgrz.Canvas.TextOut(10+1070,
100+5,'Time');

form1.imgrz.Canvas.Pen.Color:=clBlu
e;

form1.imgrz.Canvas.Pen.Style:=psDot;
for n:=1 to q do

begin

form1.imgrz.Canvas.MoveTo(10+(30*
n),160-130);

form1.imgrz.Canvas.LineTo(10+(30*n
),160);
form1.imgrz.Canvas.TextOut((30*n)-
5,160-130,biner[n]);
end;

//SUMBU NRZI
form1.imgnrzi.Canvas.Pen.Color:=clBl
ack;

form1.imgnrzi.Canvas.Pen.Style:=psso
lid;

form1.imgnrzi.Canvas.MoveTo(10,160
);

form1.imgnrzi.Canvas.LineTo(10,160-
145);

form1.imgnrzi.Canvas.TextOut(10,160
-155,'Amplitudo');

form1.imgnrzi.Canvas.TextOut(10+15
0,160-155,'NRZI');

form1.imgnrzi.Canvas.MoveTo(10,100
);

form1.imgnrzi.Canvas.LineTo(10+107
0,100);

form1.imgnrzi.Canvas.TextOut(10+10
70,100+5,'Time');

form1.imgnrzi.Canvas.Pen.Color:=clBl
ue;

form1.imgnrzi.Canvas.Pen.Style:=psD
ot;
for n:=1 to q do
begin

form1.imgnrzi.Canvas.MoveTo(10+(30
*n),160-130);

form1.imgnrzi.Canvas.LineTo(10+(30*
n),160);

form1.imgnrzi.Canvas.TextOut((30*n)-
5,160-130,biner[n]);
end;
//SUMBU TTL
form1.imguni.Canvas.Pen.Color:=clBl
ack;

form1.imguni.Canvas.Pen.Style:=pssol
id;

form1.imguni.Canvas.MoveTo(10,160)
;
form1.imguni.Canvas.LineTo(10,160-
145);

form1.imguni.Canvas.TextOut(10,160-
155,'Amplitudo');

form1.imguni.Canvas.TextOut(10+150
,160-155,'Unipolar');

form1.imguni.Canvas.MoveTo(10,100)
;

form1.imguni.Canvas.LineTo(10+1070
,100);

form1.imguni.Canvas.TextOut(10+107
0,100+5,'Time');

form1.imguni.Canvas.Pen.Color:=clBl
ue;

form1.imguni.Canvas.Pen.Style:=psDo
t;
for n:=1 to q do
begin

form1.imguni.Canvas.MoveTo(10+(30
*n),160-130);

form1.imguni.Canvas.LineTo(10+(30*
n),160);

form1.imguni.Canvas.TextOut(10+(30
*n)-15,160-130,biner[n]);
end;

//SUMBU AMI

form1.imgami.Canvas.Pen.Color:=clBl
ack;

form1.imgami.Canvas.Pen.Style:=pssol
id;

form1.imgami.Canvas.MoveTo(10,160
);

form1.imgami.Canvas.LineTo(10,160-
145);

form1.imgami.Canvas.TextOut(10,160-
155,'Amplitudo');

form1.imgami.Canvas.TextOut(10+150
,160-155,'AMI');

form1.imgami.Canvas.MoveTo(10,100
);

form1.imgami.Canvas.LineTo(10+107
0,100);

form1.imgami.Canvas.TextOut(10+107
0,100+5,'Time');

form1.imgami.Canvas.Pen.Color:=clBl
ue;

form1.imgami.Canvas.Pen.Style:=psD
ot;
for n:=1 to q do
begin

form1.imgami.Canvas.MoveTo(10+(30
*n),160-130);

form1.imgami.Canvas.LineTo(10+(30*
n),160);

form1.imgami.Canvas.TextOut(10+(30
*n)-15,160-130,biner[n]);
end;

//SUMBU B8ZS

form1.imgb8zs.Canvas.Pen.Color:=clB
lack;

form1.imgb8zs.Canvas.Pen.Style:=pss
olid;

form1.imgb8zs.Canvas.MoveTo(10,16
0);

form1.imgb8zs.Canvas.LineTo(10,160-
145);

form1.imgb8zs.Canvas.TextOut(10,160
-155,'Amplitudo');

form1.imgb8zs.Canvas.TextOut(10+15
0,160-155,'B8ZS');

form1.imgb8zs.Canvas.MoveTo(10,10
0);

form1.imgb8zs.Canvas.LineTo(10+107
0,100);

form1.imgb8zs.Canvas.TextOut(10+10
70,100+5,'Time');

form1.imgb8zs.Canvas.Pen.Color:=clB
lue;

form1.imgb8zs.Canvas.Pen.Style:=psD
ot;
for n:=1 to q do
begin

form1.imgb8zs.Canvas.MoveTo(10+(3
0*n),160-130);

form1.imgb8zs.Canvas.LineTo(10+(30
*n),160);

form1.imgb8zs.Canvas.TextOut(10+(3
0*n)-15,160-130,biner[n]);
end;
end;
//PROGRAM RZ procedure rz;
var
ax,ay,a,b,n,q:integer;
biner:string;
begin
biner:=form1.biner.Text;
q:=length(biner);
ax:=10; ay:=100; a:=15; b:=15;
for n:=1 to q do
if biner[n]='1' then
begin
rz_1(ax,ay,b,a,n);
end
else if biner[n]='0' then
begin
rz_0(ax,ay,b,a,n);
end;

end;
//PROGRAM NRZI
procedure nrzi;
var
tnd,ax,ay,a,b,n:integer;
biner:string;
begin
biner:=form1.biner.Text;
ax:=10; ay:=100; a:=30; b:=15;
tnd:=0;
for n:=1 to length(biner) do
if biner[n]='1' then
if tnd=0 then
begin
satuNRZI(ax,ay,b,a,n);
tegakNRZI(ax,ay,b,a,n);
tnd:=1;
end
else
satuNRZI(ax,ay,b,a,n)
else
if tnd=1 then
begin
nolNRZI(ax,ay,b,a,n);
tegakNRZI(ax,ay,b,a,n);
tnd:=0;
end
else nolNRZI(ax,ay,b,a,n);
end;
//PROGRAM TTL
procedure ttl;
var
tnd,ax,ay,a,b,n:integer;
biner:string;
begin
biner:=form1.biner.Text;
ax:=10; ay:=100; a:=30; b:=15;
tnd:=0;
for n:=1 to length(biner) do
if biner[n]='1' then
if tnd=0 then begin
tegak(ax,ay,b,a,n);
satu (ax,ay,b,a,n);
tnd:=1; end
else satu(ax,ay,b,a,n)
else if tnd=1 then begin
tegak(ax,ay,b,a,n);
nol (ax,ay,b,a,n);
tnd:=0; end
else nol(ax,ay,b,a,n);
end;
//PROGRAM AMI
procedure ami;
var
tnd,ax,ay,a,b,n:integer;
biner,start:string;
begin
biner:=form1.biner.Text;
ax:=10; ay:=100; a:=30; b:=15;
tnd:=0;
start:='atas';
if start='bawah' then tnd:=0
else if start='atas' then tnd:=1;
for n:=1 to length(biner) do
if biner[n]='1' then
if tnd=1 then
begin
ami1_1(ax,ay,b,a,n);
tnd:=0;
end
else
begin
ami1_2(ax,ay,b,a,n);
tnd:=1;
end
else
ami0(ax,ay,b,a,n);
end;

//PROGRAM B8ZS
procedure b8zs;
var
tnd,ax,ay,a,b,n,u:integer;
biner,start,tipe:string;
begin
biner:=form1.biner.Text;
ax:=10; ay:=100; a:=30; b:=15;
tnd:=0;
start:='false';
tipe:='genap'; u:=0;
for n:=1 to length(biner) do
begin
if start='true' then
if n <= u then
begin
start:='true';
end
else
begin
start:='false';
end;
if biner[n]='1' then
begin
if tnd = 0 then
begin btnb8plus(ax,ay,b,a,n);
tnd:=1;
end
else
begin btnb8minus(ax,ay,b,a,n);
tnd:=0;
end;
if tipe='genap' then tipe:='ganjil'
else tipe:='genap';
end
else if (biner[n-8]='0') and (biner[n-
7]='0') and (biner[n-6]='0') and
(biner[n-5]='0') and (biner[n-4]='0') and
(biner[n-3]='0') and (biner[n-2]='0')
and (biner[n-1]='0') and (biner[n]='0')
and (biner[n+1]='0') and
(biner[n+2]='0') and (biner[n+3]='0')
then
begin
if tipe='genap' then tipe:='ganjil'
else tipe:='genap';
end;
if (biner[n]='0') and (biner[n+1]='0')
and (biner[n+2]='0') and
(biner[n+3]='0') and (biner[n+4]='0')
and (biner[n+5]='0') and
(biner[n+6]='0') and (biner[n+7]='0')
and (start='false') then
begin
if tipe='genap' then
begin
if tnd = 1 then
begin
btnb8nol(ax,ay,b,a,n);
btnb8nol(ax,ay,b,a,n+1);
btnb8nol(ax,ay,b,a,n+2);
btnb8minus(ax,ay,b,a,n+3);
btnb8plus(ax,ay,b,a,n+4);
btnb8nol(ax,ay,b,a,n+5);
btnb8plus(ax,ay,b,a,n+6);
btnb8minus(ax,ay,b,a,n+7);

tnd:=0;
start:='true'; u:=n+7;
end
else
begin
btnb8plus(ax,ay,b,a,n);
btnb8nol(ax,ay,b,a,n+1);
btnb8nol(ax,ay,b,a,n+2);
btnb8plus(ax,ay,b,a,n+3);
btnb8minus(ax,ay,b,a,n+4);
btnb8nol(ax,ay,b,a,n+5);
btnb8minus(ax,ay,b,a,n+6);
btnb8plus(ax,ay,b,a,n+7);

tnd:=1;
start:='true'; u:=n+7;
end;
end
else if tipe='ganjil' then
begin
if tnd = 1 then
begin
btnb8nol(ax,ay,b,a,n);
btnb8nol(ax,ay,b,a,n+1);
btnb8nol(ax,ay,b,a,n+2);
btnb8plus(ax,ay,b,a,n+3);
btnb8minus(ax,ay,b,a,n+4);
btnb8nol(ax,ay,b,a,n+5);
btnb8minus(ax,ay,b,a,n+6);
btnb8plus(ax,ay,b,a,n+7);

tnd:=1;
start:='true'; u:=n+7;
end
else
begin
btnb8nol(ax,ay,b,a,n);
btnb8nol(ax,ay,b,a,n+1);
btnb8nol(ax,ay,b,a,n+2);
btnb8minus(ax,ay,b,a,n+3);
btnb8plus(ax,ay,b,a,n+4);
btnb8nol(ax,ay,b,a,n+5);
btnb8plus(ax,ay,b,a,n+6);
btnb8minus(ax,ay,b,a,n+7);

tnd:=0;
start:='true'; u:=n+7;
end;
end
end;
if biner[n]='0' then
begin
if start='false' then
btnb8nol(ax,ay,b,a,n);
end;
end;
end;
/////PROCEDUR TOMBOL
PENUNJANG \\\\\\

// TOMBOL NOL
procedure Tform1.btnnolClick(Sender:
TObject);
var
biner:string;
begin
biner:=form1.biner.Text;
if length(biner) < 12 then
begin
biner:=biner+'0';
form1.biner.Text:=biner;
end;
end;

// TOMBOL SATU
procedure
Tform1.btnsatuClick(Sender: TObject);
var
biner:string;
begin
biner:=form1.biner.Text;
if length(biner) < 12 then
begin
biner:=biner+'1';
form1.biner.Text:=biner;
end;
end;

//TOMBOL DELETE
procedure
Tform1.btndeleteClick(Sender:
TObject);
var
biner:string;
begin
biner:=form1.biner.Text;
if length(biner) < 20 then
begin
biner:=copy(biner,0,length(biner)-1);
form1.biner.Text:=biner;
end;
end;



// TOMBOL CLEAR
procedure
Tform1.btnclearClick(Sender:
TObject);
var
biner:string;
begin
biner:=form1.biner.Text;
if length(biner) < 20 then
begin
biner:='';
form1.biner.Text:=biner;
showmessage('ISI DATA BINER
DULU');

form1.isibiner.Caption:='MASUKKAN
PADA KOLOM DI BAWAAH !';
end;
end;

//TOMBOL EXIT
procedure Tform1.btnexitClick(Sender:
TObject);
begin
application.Terminate;
end;

// TOMBOL RZ
procedure Tform1.btnrzClick(Sender:
TObject);
begin
sumbu;
rz;
end;

// TOMBOL NRZL
procedure Tform1.btnnrziClick(Sender:
TObject);
begin
sumbu;
nrzi;
end;



//TOMBOL TTL
procedure Tform1.btnttlClick(Sender:
TObject);
begin
sumbu;
ttl;
end;


//TOMBOL AMI
procedure Tform1.btnamiClick(Sender:
TObject);
begin
sumbu;
ami;
end;

// TOMBOL B8ZS
procedure Tform1.btnb8Click(Sender:
TObject);
begin
sumbu;
b8zs;
end;


// TOMBOL ALL
procedure Tform1.btnallClick(Sender:
TObject);
begin
sumbu;
rz;
nrzi;
ttl;
ami;
b8zs;
end;

end.


6. Hasil Gambar



7. Analisa
Program diatas terdiri dari beberapa main code seperti pembuatan
sumbu, garis dari beberapa kondisi biner untuk sinyal digital, penentuan
nilai tinggi dan lebar dari sinyal, penggambaran sumbu serta
penggambaran sinyal itu sendiri. Garis sumbu dibuat dengan
menyesuaikan besarnya frame image yang dibuat, sedangkan garis kondisi
biner dibuat dengan menyesuaikan aturan dari jenis pengkodean digital
yang digunakan. Penggambaran sumbu dan penggambaran sinyal
dilakukan dengan memanggil prosedur yang sebelumnya sudah dibuat ke
dalam sebuah prosedur baru. Untuk penggambaran sinyal itu sendiri
dipanggil dengan menggunakan proses perulangan karena nilai biner yang
dapat diinputkan tidak hanya satu angka saja.

8. Kesimpulan
Setiap bahasa pemrograman memiliki fungsi yang berbeda.
Mengetahui fungsi biner dalam bahasa program.
Setiap format pengkodean selalu berbeda satu sama yang lain.
Mengetahui data digital yang ditransmisikan dalam bentuk deretan
biner