Akses Peralatan Luar Lewat Parallel Printer Port

by Unknown , at 04.37 , has 0 komentar



26Share
Ingin mengendalikan peralatan luar dengan menggunakan komputer? Tentu sangat menyenangkan,
apalagi hanya dengan beberapa baris program Delphi, kita dapat menyalakan lampu, menghidupkan motor, mengatur lengan robot ataupun mengakses peralatan elektronis lainnya.
Mungkin tulisan ini bisa menjadi cemilan yang cukup bergizi bagi Delphiers yang suka ngoprek elektronika praktis, ini lantaran kita tidak harus membuat card I/0 sendiri, tetapi cukup dengan memanfaatkan parallel printer port saja.
Parallel Printer Port
Port yang satu ini, dipastikan selalu ada pada setiap komputer. Tercermin dari namanya, saat ini parallel port lebih banyak dimanfaatkan untuk urusan pencetakan data. Sebenarnya, port inipun bisa dimanfaatkan untuk hal lain, karena memiliki input/output (I/O) data.

Tata-letak dari ke-dua puluh lima pin (DB 25) parallel printer port, diperlihatkan dalam Gambar 1.

Adapun tabel signal dan fungsi dari setiap pin pada parallel printer port, terlihat pada Gambar 2. Dari situ diketahui pin 2 s/d 9 (signal D0-D7) berfungsi sebagai output, yang selanjutnya dapat kita manfaatkan untuk mengontrol peralatan luar.

Rangkaiannya
Untuk keperluan uji-coba sesaat, kita bisa menghubungkan LED (Light Emitting Diode) lewat resistor, langsung ke pin output dari parallel printer port. Bisa juga hanya dengan mengukur tegangan 5 volt yang timbul, saat data port dalam keadaan high.

Untuk dapat mengakses beban yang besar serta untuk mencegah terjadinya pembebanan berlebihan pada parallel printer port, sebaiknya kita menggunakan rangkaian penyangga (buffer).

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);
  1. (* alamat LPT1, range 378-37F hex
  2. alamat LPT2, range 278-37F hex
  3. alamat LPT3, range 3BC-3BF hex
  4. lihat juga referensi teknis dari Intel dan Microsoft *)
  5. asm
  6. MOV   DX, AlamatPort
  7. MOV   AL, DataBit
  8. OUT   DX, AL
  9. end;
  10.  
  11. procedure TForm1.btnLED5Click(Sender: TObject);
  12. begin
  13. (* contoh pemanggilan prosedur KirimDataKePort,
  14. ini akan menyalakan LED 5 (data bit-4 / pin 6
  15. dari rangkaian yang terdapat pada Gambar 3.  *)
  16. KirimDataKePort($378, $8); //00010000 biner
  17. end;

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;
  1.  
  2. interface
  3.  
  4. uses
  5. Windows, Messages, SysUtils, Classes, Graphics, Controls,
  6. Forms, Dialogs, Buttons, ExtCtrls, StdCtrls;
  7. type
  8. TForm1 = class(TForm)
  9. SpeedButton1: TSpeedButton;
  10. SpeedButton2: TSpeedButton;
  11. SpeedButton3: TSpeedButton;
  12. SpeedButton4: TSpeedButton;
  13. SpeedButton5: TSpeedButton;
  14. SpeedButton6: TSpeedButton;
  15. SpeedButton7: TSpeedButton;
  16. SpeedButton8: TSpeedButton;
  17. Bevel1: TBevel;
  18. Bevel2: TBevel;
  19. lblDataPortBit: TLabel;
  20. lblNoLED: TLabel;
  21. Label1: TLabel;
  22. Label2: TLabel;
  23. Label3: TLabel;
  24. procedure SpeedButton1Click(Sender: TObject);
  25. procedure FormCreate(Sender: TObject);
  26. private
  27. procedure KirimDataKePort(DataPortBit: Byte);
  28. public
  29. { Public declarations }
  30. end;
  31.  
  32. var
  33. Form1: TForm1;
  34.  
  35. implementation
  36.  
  37. {$R *.DFM}
  38.  
  39. uses
  40. Math;
  41.  
  42. const
  43. AlamatPort = $378;
  44.  
  45. procedure TForm1.KirimDataKePort(DataPortBit: Byte);
  46. var
  47. Nilai: Byte;
  48. begin
  49. lblDataPortBit.Caption := IntToStr(DataPortBit);
  50. lblNoLED.Caption := 'LED No. ' + IntToStr(DataPortBit + 1) +
  51. ' Nyala';
  52. Nilai := Trunc(Power(2, DataPortBit));
  53. asm
  54. MOV     DX, AlamatPort
  55. MOV     AL, Nilai
  56. OUT     DX, AL
  57. end;
  58. end;
  59.  
  60. procedure TForm1.SpeedButton1Click(Sender: TObject);
  61. begin
  62. (* Letakan 8 buah TSpeedButton, atur propeti Tag
  63. dari 8 TSpeedButton tersebut dengan nilai
  64. 0 sampai dengan 7. Dari Object Inspector,
  65. arahkan event Clik dari semua TSpeedButton
  66. ke SpeedButon1Click. *)
  67.  
  68. KirimDataKePort((Sender as TSpeedButton).Tag);
  69. end;
  70.  
  71. procedure TForm1.FormCreate(Sender: TObject);
  72. begin
  73. KirimDataKePort(0);
  74. end;
  75.  
  76. end.
Akses Peralatan Luar Lewat Parallel Printer Port
About
Akses Peralatan Luar Lewat Parallel Printer Port - written by Unknown , published at 04.37 . And has 0 komentar
0 komentar Add a comment
Bck
Cancel Reply