Selasa, 29 April 2014




BAB IV
Antarmuka dengan Port Paralel (Output)

Tujuan
      Mahasiswa mampu mengantarmukakan hardware dengan PC melalui port parallel.
      Mahasiswa mampu mengeluarkan data dari PC melalui port parallel.
      Mahasiswa mampu membuat aplikasi menggunakan bahasa pemrograman Borland Delphi untuk antarmuka melalui port paralel. 

Dasar Teori
 Port  paralel  banyak  digunakan  dalam  berbagai  macam  aplikasi  antarmuka. Port ini  hanya  membutuhkan  rangkaian eksternal sederhana untuk melakukan suatu tugas tertentu. Port paralel ini terdiri dari 4 jalur kontrol, 5 jalur status dan 8 jalur data. Biasanya dapat Anda jumpai sebagai  port pencetak (printer), dalam bentuk konektor DB-25 betina (female).


 Cara paling sederhana untuk mengeluarkan data melalui port paralel adalah dengan mengirimkan data ke alamat register Data yaitu alamat base+0. Jika alamat dasar yang digunakan adalah 378h, maka data dikirim ke alamat 378h untuk mengeluarkan data melalui port paralel pin nomor 2 sampai dengan 9.

Tabel Alamat register
Register Name
Address
Direction
Data
Base + 0
Out
Status
Base + 1
In
Control
Base + 2
In/Out


             

Alat dan Bahan
      Satu set PC 
      Tool Pemrograman Borland Delphi.
      Kabel LPT
      LED sebanyak 8 buah

Prosedur
a. Mengeluarkan data dengan masukan dari Tedit
3.      Komponen/Objek yang digunakan dan pengaturan propertiesnya adalah :
Komponen
Properti
Nilai
Label11
Caption
Data yg dikirim
 Edit1
Text
1
Button1
Caption
Send
Shape1
Shape
StCircle
Shape2
Shape
StCircle
Shape3
Shape
StCircle
Shape4
Shape
StCircle
Shape5
Shape
StCircle
Shape6
Shape
StCircle
Shape7
Shape
StCircle
Shape8
Shape
StCircle

             
4.      Masukkan perintah-perintah pada kejadian/event disetiap komponen di bawah ini.
 Nama Komponen
 Event
 Perintah
Deklarasi
-
var
  Form1: TForm1;   data:  integer;

implementation

{$R *.dfm} procedure Out32(PortAddress:smallint;Value:smallint); stdcall; external 'inpout32.dll'; function Inp32(PortAddress:smallint):smallint;stdcall;  external 'inpout32.dll';
 Button1
 OnClick
  procedure TForm1.Button1Click(Sender: TObject); begin   data:=strtoint(edit1.Text);   out32($378,data);   if (data and 1)=1 then shape8.Brush.Color:=clred     else shape8.Brush.Color:=clwhite;   if (data and 2)=2 then shape7.Brush.Color:=clred     else shape7.Brush.Color:=clwhite;   if (data and 4)=4 then shape6.Brush.Color:=clred     else shape6.Brush.Color:=clwhite;
  if (data and 8)=8 then shape5.Brush.Color:=clred     else shape5.Brush.Color:=clwhite;   if (data and 16)=16 then shape4.Brush.Color:=clred     else shape4.Brush.Color:=clwhite;   if (data and 32)=32 then shape3.Brush.Color:=clred     else shape3.Brush.Color:=clwhite;   if (data and 64)=64 then shape2.Brush.Color:=clred     else shape2.Brush.Color:=clwhite;   if (data and 128)=128 then shape1.Brush.Color:=clred     else shape1.Brush.Color:=clwhite; end;

5.      Simpan semua file dpr dan unit kemudian jalankan program.
6.      Masukkan sembarang nilai, klik tombol send, kemudian  amati apa yang terjadi pada komponen shape dan LED.
Data Hasil Dan Pembahasan
a.       Data Progam
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Shape1: TShape;
    Shape2: TShape;
    Shape3: TShape;
    Shape4: TShape;
    Shape5: TShape;
    Shape6: TShape;
    Shape7: TShape;
    Shape8: TShape;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  data: integer;
implementation

{$R *.dfm}
procedure Out32(PortAddress:smallint;Value:smallint);
stdcall; external 'inpout32.dll';
function Inp32(PortAddress:smallint):smallint;stdcall;
external 'inpout32.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
data:=strtoint(edit1.Text);
out32($378,data);
if (data and 1)=1 then shape8.Brush.Color:=clred
else shape8.Brush.Color:=clwhite;
if (data and 2)=2 then shape7.Brush.Color:=clred
else shape7.Brush.Color:=clwhite;
if (data and 4)=4 then shape6.Brush.Color:=clred
else shape6.Brush.Color:=clwhite;
if (data and 8)=8 then shape5.Brush.Color:=clred
else shape5.Brush.Color:=clwhite;
if (data and 16)=16 then shape4.Brush.Color:=clred
else shape4.Brush.Color:=clwhite;
if (data and 32)=32 then shape3.Brush.Color:=clred
else shape3.Brush.Color:=clwhite;
if (data and 64)=64 then shape2.Brush.Color:=clred
else shape2.Brush.Color:=clwhite;
if (data and 128)=128 then shape1.Brush.Color:=clred
else shape1.Brush.Color:=clwhite;
end;

end.
b.      Gambar display Progam Led dan gambar pada hardware
Data yang dimasukan 5







Data yang dimasukkan 13
Data yang dimasukkan 24
Data yang dimasukkan 22










Data yang dimasukkan 83
Data yang dimasukkan 255

Pembahasan
Pada percobaan port pararel ini memiliki 2 unsur penting yaitu pada software dan hardware .
Pertama pada softwarenya yaitu ketika kita memasukkan suatu progam , kita menggunakan perulangan (if ,else ) dan juga menggunakan  out32($378,data) yang berarti bahwa output yang kita gunakan pada port printer hal ini di sebabkan bahwa hard ware yang kita gunakan menggunakan output led pada port printer yaitu pada register Data  .
Kedua pada hardware  yaitu output yang diletakkan pada port printer  Register Data yang beralamatkan $ 378 pada pin 2 sampai 9 dan fungsinya sebagai output
Selain itu progam pada softwarenya di buat untuk mengubah dari data inputan bilangan desimal ke bilangan biner jika berlogika 1 maka pada progam akan menyala warna merah dan led pada hardware akan menyala juga .

Kesimpullan
Dari data hasil yang diperoleh  dapat di buat kesimpulan bahwa progam delpi dapat menjalan kan hardware yang berupa led yang diletakkan pada output port printer ( Register Data )
Dan progam pada delphi menggunakan perulangan if , else yaitu jika pada inputan diberi nilai bilangan desimal maka progam akan mengubah menjadi bilangan biner yang akan di tampilkan dengan nyala led bila berlogika 1
3.      Komponen/Objek yang digunakan dan pengaturan propertiesnya adalah :
Komponen
Properti
Nilai
Timer1
Enabled
FALSE
 
Interval
100
Button1
Caption
Start
Button2
Caption
Stop
Shape1
Shape
StCircle
Shape2
Shape
StCircle
Shape3
Shape
StCircle
Shape4
Shape
StCircle
Shape5
Shape
StCircle
Shape6
Shape
StCircle
Shape7
Shape
StCircle
Shape8
Shape
StCircle

             

4.      Masukkan perintah-perintah pada kejadian/event disetiap komponen di bawah ini.
 Nama Komponen
 Event
 Perintah
Deklarasi
-
var
  Form1: TForm1;   i,data:  integer; implementation {$R *.dfm} procedure Out32(PortAddress:smallint;Value:smallint); stdcall; external 'inpout32.dll'; function Inp32(PortAddress:smallint):smallint;stdcall;  external 'inpout32.dll';
 Button1
 OnClick
procedure TForm1.Button1Click(Sender: TObject); begin
  timer1.Enabled:=true;
  i:=0; end;
 Button2
 OnClick
procedure TForm1.Button2Click(Sender: TObject); begin   timer1.Enabled:=false; end;
Timer1
OnTimer
procedure TForm1.Timer1Timer(Sender: TObject); const k: array[0..7]
of integer =($01,$02,$04,$08,$10,$20,$40,$80); begin   data:=k[i];   out32($378,data);
  inc(i);   if i=8 then i:=0; 
 if (data and 1)=1 then shape8.Brush.Color:=clred    
else shape8.Brush.Color:=clwhite;  
if (data and 2)=2 then shape7.Brush.Color:=clred   
 else shape7.Brush.Color:=clwhite;  
if (data and 4)=4 then shape6.Brush.Color:=clred    
else shape6.Brush.Color:=clwhite;  
if (data and 8)=8 then shape5.Brush.Color:=clred    
else shape5.Brush.Color:=clwhite; 
 if (data and 16)=16 then shape4.Brush.Color:=clred    
else shape4.Brush.Color:=clwhite;
  if (data and 32)=32 then shape3.Brush.Color:=clred    
else shape3.Brush.Color:=clwhite;
  if (data and 64)=64 then shape2.Brush.Color:=clred    
else shape2.Brush.Color:=clwhite;  
if (data and 128)=128 then shape1.Brush.Color:=clred   
 else shape1.Brush.Color:=clwhite;
 end;

5.      Simpan semua file dpr dan unit kemudian jalankan program.
6.      Klik tombol start, kemudian  amati apa yang terjadi pada komponen shape dan LED.
7.      Klik tombol stop, kemudian  amati apa yang terjadi pada komponen shape dan LED.

Data Hasil Dan Pembahasan
Data Progam
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Shape1: TShape;
    Shape2: TShape;
    Shape3: TShape;
    Shape4: TShape;
    Shape5: TShape;
    Shape6: TShape;
    Shape7: TShape;
    Shape8: TShape;
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  i,data: integer;
implementation

{$R *.dfm}
procedure Out32(PortAddress:smallint;Value:smallint);
stdcall; external 'inpout32.dll';
function Inp32(PortAddress:smallint):smallint;stdcall;
external 'inpout32.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled:=true;
i:=0;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Enabled:=false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
const k: array[0..7] of integer =
($01,$02,$04,$08,$10,$20,$40,$80);
begin
data:=k[i];
out32($378,data);
inc(i);
if i=8 then i:=0;
if (data and 1)=1 then shape8.Brush.Color:=clred
else shape8.Brush.Color:=clwhite;
if (data and 2)=2 then shape7.Brush.Color:=clred
else shape7.Brush.Color:=clwhite;
if (data and 4)=4 then shape6.Brush.Color:=clred
else shape6.Brush.Color:=clwhite;
if (data and 8)=8 then shape5.Brush.Color:=clred
else shape5.Brush.Color:=clwhite;
if (data and 16)=16 then shape4.Brush.Color:=clred
else shape4.Brush.Color:=clwhite;
if (data and 32)=32 then shape3.Brush.Color:=clred
else shape3.Brush.Color:=clwhite;
if (data and 64)=64 then shape2.Brush.Color:=clred
else shape2.Brush.Color:=clwhite;
if (data and 128)=128 then shape1.Brush.Color:=clred
else shape1.Brush.Color:=clwhite;
end;

end.
Gambar display progam led berjalan





Gambar display start
Gambar display Stop
Gambar pada Hardware
of integer =($01,$02,$04,$08,$10,$20,$40,$80); begin   data:=k[i];   out32($378,data);
Pembahasan
Pada percobaan port pararel ini memiliki 2 unsur penting yaitu pada software dan hardware .
Pertama pada softwarenya yaitu ketika kita memasukkan suatu progam , kita menggunakan perulangan (if ,else ) dan juga menggunakan  out32($378,data) yang berarti bahwa output yang kita gunakan pada port printer hal ini di sebabkan bahwa hard ware yang kita gunakan menggunakan output led pada port printer yaitu pada register Data  .
Kedua pada hardware  yaitu output yang diletakkan pada port printer  Register Data yang beralamatkan $ 378 pada pin 2 sampai 9 dan fungsinya sebagai output
Tetapi beda dengan percobaan yang pertama , pada percobaan yang kedua ini led akan bergantian menyala dengan delay yang dimasukkan pada progam software
Kesimpuan
Dari data hasil yang di peroleh dapat dibuat kesimpulan bahwa semakin kecil delay yang di masukkan pada progam maka semakin cepat led akan berjalan , dan selain itu hardware dan software bejalan secara bersamaan
, sebelum itu pada bagaian header dimasukkan progam of integer =($01,$02,$04,$08,$10,$20,$40,$80); begin   data:=k[i];   out32($378,data);  ini untuk mengarahkan led berjalan berurutan dari kanan ke kiri