oleh: Fuad Haharap
![]() |
Gambar 4. Rangkaian penyangga. |
Dari skema pada Gambar 4, terlihat pin 3,5,7,9,12,16 dan 18 dari 74LS224 terhubung ke masing-masing relai. Selanjutnya sakelar pada setiap relai tersebut, bisa kita gunakan untuk mengontrol peralatan yang memiliki beban besar.
Kode Program Delphi
Tidak seperti Turbo Pascal atau Delphi 1 dimana tersedia fungsi Port, pada Delphi 32 bit (versi 2 s/d 6) fungsi itu sudah tidak didukung lagi. Sebagai gantinya kita gunakan in-line assembler code.
Listing 1. Hidupkan LED 5 dari rangkaian pada Gambar 3.
procedure KirimDataKePort(AlamatPort: Word; DataBit: Byte);
(* alamat LPT1, range 378-37F hex
alamat LPT2, range 278-37F hex
alamat LPT3, range 3BC-3BF hex
lihat juga referensi teknis dari Intel dan Microsoft *)
asm
MOV DX, AlamatPort
MOV AL, DataBit
OUT DX, AL
end;
procedure TForm1.btnLED5Click(Sender: TObject);
begin
(* contoh pemanggilan prosedur KirimDataKePort,
ini akan menyalakan LED 5 (data bit-4 / pin 6
dari rangkaian yang terdapat pada Gambar 3. *) KirimDataKePort($378, $8); //00010000 biner
end;
![]() |
Gambar 5. Tampilan program kendali, dikembangkan dengan Delphi. |
Pada prinsipnya, untuk menyalakan LED, kita kirim data biner 8 bit ke port. Sesuaikan pengiriman data biner ini, dengan LED yang ingin dinyalakan.
Misalnya, untuk menyalakan LED pertama datanya adalah 1 hex (biner; 0000001), sedangkan data biner 10000000 (80 hex / 128 dec) digunakan untuk menyalakan LED kedelapan.
Daftar berikut, dapat digunakan sebagai acuan.
DataPort Bit 0 = LED1 = 00000001 bin = 1 hex = 1 dec
DataPort Bit 1 = LED2 = 00000010 bin = 2 hex = 2 dec
DataPort Bit 2 = LED3 = 00000100 bin = 4 hex = 4 dec
DataPort Bit 3 = LED4 = 00001000 bin = 8 hex = 8 dec
DataPort Bit 4 = LED5 = 00010000 bin = 10 hex = 16 dec
DataPort Bit 5 = LED6 = 00100000 bin = 20 hex = 32 dec
DataPort Bit 6 = LED7 = 01000000 bin = 40 hex = 64 dec
DataPort Bit 7 = LED8 = 10000000 bin = 80 hex = 128 dec
Bagi yang ingin bereksperimen, Listing 2 merupakan kode program dari contoh Aplikasi Pengendali seperti yang terlihat pada Gambar 5.Listing 2. Kode program aplikasi pengendali.
(* = Mengontrol peralatan luar lewat Parallel Printer Port = *)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, Buttons, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
Bevel1: TBevel;
Bevel2: TBevel;
lblDataPortBit: TLabel;
lblNoLED: TLabel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure SpeedButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure KirimDataKePort(DataPortBit: Byte);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
uses
Math;
const
AlamatPort = $378;
procedure TForm1.KirimDataKePort(DataPortBit: Byte);
var
Nilai: Byte;
begin
lblDataPortBit.Caption := IntToStr(DataPortBit);
lblNoLED.Caption := 'LED No. ' + IntToStr(DataPortBit + 1) +
' Nyala';
Nilai := Trunc(Power(2, DataPortBit));
asm
MOV DX, AlamatPort
MOV AL, Nilai
OUT DX, AL
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
(* Letakan 8 buah TSpeedButton, atur propeti Tag
dari 8 TSpeedButton tersebut dengan nilai
0 sampai dengan 7. Dari Object Inspector,
arahkan event Clik dari semua TSpeedButton
ke SpeedButon1Click. *)
KirimDataKePort((Sender as TSpeedButton).Tag);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
KirimDataKePort(0);
end;
end.
sebelumnya .......
Download
sebelumnya.....
back to tutorial delphi home....
Tidak ada komentar:
Posting Komentar