9
I/O Pararell Port Printer dengan Delphi 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.

Dokumen.tips Bikin Lampu Led Dengan Delphi

Embed Size (px)

DESCRIPTION

led

Citation preview

Page 1: Dokumen.tips Bikin Lampu Led Dengan Delphi

I/O Pararell Port Printer dengan DelphiIngin 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 PortPort 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.

Page 2: Dokumen.tips Bikin Lampu Led Dengan Delphi

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.

Page 3: Dokumen.tips Bikin Lampu Led Dengan Delphi

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

Page 4: Dokumen.tips Bikin Lampu Led Dengan Delphi

Dari skema pada Gambar 4, terlihat pin 3,5,7,9,12,16 dan 18dari 74LS224 terhubung ke masing-masing relai. Selanjutnyasakelar pada setiap relai tersebut, bisa kita gunakan untukmengontrol peralatan yang memiliki beban besar.

Kode Program DelphiTidak 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 hex2. 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

Page 5: Dokumen.tips Bikin Lampu Led Dengan Delphi

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 biner8 bit ke port. Sesuaikan pengiriman data biner ini, dengan LEDyang 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 decDataPort Bit 1 = LED2 = 00000010 bin = 2 hex = 2 decDataPort Bit 2 = LED3 = 00000100 bin = 4 hex = 4 decDataPort Bit 3 = LED4 = 00001000 bin = 8 hex = 8 decDataPort Bit 4 = LED5 = 00010000 bin = 10 hex = 16 decDataPort Bit 5 = LED6 = 00100000 bin = 20 hex = 32 decDataPort Bit 6 = LED7 = 01000000 bin = 40 hex = 64 decDataPort Bit 7 = LED8 = 10000000 bin = 80 hex = 128 dec

Bagi yang ingin bereksperimen, Listing 2 merupakan kode programdari contoh Aplikasi Pengendali seperti yang terlihat pada Gambar 5.

Page 6: Dokumen.tips Bikin Lampu Led Dengan Delphi

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);

Page 7: Dokumen.tips Bikin Lampu Led Dengan Delphi

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

Page 8: Dokumen.tips Bikin Lampu Led Dengan Delphi

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.