BAB03- LPT

download BAB03- LPT

of 36

Transcript of BAB03- LPT

  • 8/9/2019 BAB03- LPT

    1/36

    Teknik Akuisisi Data 34

    3. Paralell Port (LPT)

    3.1. Pendahuluan

    Standar IEEE1284 mendifinisikan 5 mode transfer data

    ARAH DATA MODEIEEE

    KETERANGAN

    Forward Kompatibel Mode SPP (Standard Paralell Port)

    ReverseNibble 4 bit pada saat 1 x proses transfer data

    dengan menggunakan jalur status untukdata

    Reverse Byte 8 bit pada saat proses transfer data dan menggunakanjalur data

    Bidirectional EEP Enhanced paralel Port dapat digunakan untuk CDROM, harddisk

    Bidirectional ECP Extended Paralel Port digunakan untuk printer danscanner

    3.2. Mode SPP (Pada Printer)

    Group Sinyal SPP Pin Aktif I/O Diskripsi

    37A-0 Strobe 1 LOW O Ada data valid pada data bus

    37A-1 Autofeed 14 LOW O Instruksi untuk memasukkan

    linefeed37A-3 Select Input 17 LOW O Printer digunakan

    37A-2 Init 16 LOW O Me reset printer

    379-8 Acknowledge 10 LOW I Karakter terakhir sudah diterima

    379-7 Busy 11 HIGH I Printer sibuk

    379-5 Paper Empty 12 HIGH I Out of Paper

    379-4 Select 13 HIGH I On Line

    379-3 Error 15 LOW I Error

    378.0-7 Data 2-9 HIGH I/O data bus D0-D7

    Pada saat data ditempatkan pada data bus, PC akan mengecek jalur Error dan

    Paper Empty untuk melihat adanya kesalahan, kemudian mengecek busy untuk

    mengetahui apakah printer siap menerima data.

  • 8/9/2019 BAB03- LPT

    2/36

    Teknik Akuisisi Data 35

    Apabila printer tidak sibuk, maka dimulai siklus transfer data saat strobe

    bernilai 0. Printer mengetahui data yang diterima dengan mengeset jalur ACK

    bernilai 0

    3.3. Mode Nibble

    Sinyal SPP Pin Aktif I/O Diskripsi

    Strobe 1 LOW O tidak digunakan pada proses reserved

    Host Busy 14 H/L OLOW : PC siap untuk nibbleHIGH : Nibble diterima

    1284 Active 17 HIGH O High untuk PC dengan mode transfer 1284

    Init 16 HIGH I tidak digunakan pada proses reversed

    Ptr Clk 10 H/L ILOW : nibble valid & sebagai respon terhadapHost Busy

    Ptr Busy 11 HIGH I DB3 & DB7

    Ack DataReg

    12 HIGH I DB2 & DB6

    Xflag 13 HIGH I DB1 & DB5

    DataAvailable

    15 HIGH I DB0 & DB4

    Data 2-9 tidak digunakan

    3.4 Mode Byte

    Sinyal SPP Pin Aktif I/O Diskripsi

    HostClk 1 H/L OPulsa LOW pada akhir tiap transfer data modebyte menunjukkan byte yang diterima

    Host Busy 14 H/L O LOW : PC siap untuk byteHIGH : byte diterima

    1284 Active 17 HIGH O High untuk PC dengan mode transfer 1284

    Init 16 HIGH I tidak digunakan pada proses reversed

    Ptr Clk 10 H/L I LOW : data valid pada data bus

    Ptr Busy 11 HIGH I Forward untuksinyal busy

    Ack DataReg

    12 HIGH I Ikut data valid menuju HIGH

    Xflag 13 HIGH I tidak digunakan

    DataAvailable

    15 HIGH Idi set LOW oleh peripheral untuk menunjukkandata reverse bisa dipakai

    Data 2-9 HIGH I/O data dari alat ke PC

  • 8/9/2019 BAB03- LPT

    3/36

    Teknik Akuisisi Data 36

    Pada mode byte proses data transfer secara forward dari PC ke printer identik

    dengan transfer data pada mode SPP. Sedangkan pada mode transfer secara

    reversed dari peripheral ke PC, transfer mode byte dimulai pada saat PC

    memberi sinyal ke peralatan luar bahwa PC dapat menerima data yaitu dengan

    mem-pull HostBusy LOW. Peralatan luar merespon dengan meletakkan byte

    pertama pada jalur data, setelah mem-pull jalur PtrClk dengan nilai LOW yang

    menunjukkan bahwwa informasi sudah ada di jalur.

    Untuk mengetahui bahwa proses transfer data sedang berjalan, maka PC

    memberi nilai HIGH pada jalur Host Busy. Sebagai respon, maka alat luar

    menerima nilai HIGH pada jalur Host Clk.

    3.5. EPP (Enhanced Parallel Port)

    Ada 4 tipe proses transfer data

    tulis data

    tulis alamat baca data

    baca alamat

    siklus data digunakan sebagai pen-transfer data dan siklus address digunakan

    untuk mendefinisikan alamat, kanal,perintah serta informasi kontrol antara 2

    alat.

    SINYAL EPP PIN AKTIF I/O DISKRIPSI

    Write 1 LOW O Proses Write sedang berjalan

    Data Str 14 LOW O Data Read atau data write

    AddrStr 17 LOW O Addr read atau addr write

    Init 16 LOW O Reset peralatan

    Init 10 LOW I Interupsi dari alat ke PC

    wait 11 H/L I cadangan

    User defined 12 H/L I cadangan

    User defined 13 H/L I cadangan

    User defined 15 H/L I cadangan

  • 8/9/2019 BAB03- LPT

    4/36

    Teknik Akuisisi Data 37

    Adx 2-9 HIGH I/O jalur data & alamat 2 arah

    3.6. ECP (Extended Capability Port)

    Ada 2 tipe transfer data (sebagai transfer data 2 arah): siklus data

    siklus command

    Sinyal ECP Pin Aktif I/O Diskripsi

    HostClk 1 LOW Odipakai oleh peripheral untuk transfer dataatau alamat secara forward LOW bila datavalid

    Host Ack 14 HIGH OData siap ditransfer secara reverse dipakaiperipheral Clk untUk transfer data secara

    reverse1284 Active 17 HIGH O HIGH bila PC dalam mode transfer 1284

    Reverse Reg 16 LOW I LOW agar kanal dalam kondisi reverse

    Perph Ack 11 HIGH Idipakai Host Clk untuk transfer data ataualamat secara forward

    PerphClk 10 LOW Idipakai Host Ack untuk transfer data ataualamat secara reverse

    Ack Reverse 12 LOW I LOW untuk mengetahui request modereverse

    PerphRequest 15 LOW Idi set LOW oleh alat luar untuk menunjukkanbahwa saluran reverse bisa dipakai

    Data 2-9 HIGH I/O pertukaran data peripheral dan PC

    3.7. Pin pada LPT

    3.7.1. IBM DB25 Pin Out

    PIN NAMA ALAMAT

    1 STROBE 37A-0

    2-9 DATA 378.0 - 7

    10 ACK 379.6

    11 BUSY 379.7

    12 PAPER END 379.513 SELECT 379.4

    14 AUTOFEED 37A.1

    15 ERROR 379.3

    16 INIT PRINTER 37A.2

    17 SELECT INPUT 37A.3

    18-25 GROUND

  • 8/9/2019 BAB03- LPT

    5/36

    Teknik Akuisisi Data 38

    3.7.2. Centronics Pin Output

    PIN NAMA

    1 DATA STROBE

    2-9 DATA

    10 ACK

    11 BUSY

    12 PAPER END

    13 SELECT

    14 AUTOFEED

    15 NC

    16 0 V (LOGIC GND)

    17 0 V (CHASSIS GND)

    18 + 5 V 50 mA

    19-29 GND30 INPUT PRIME RET

    31 INPUT PRIME

    32 FAULT

    33 0 V

    34 NC

    35 + 5 V (LEWAT 4K7)

    36 SELECT IN

    3. 8. LPT1 dan LPT2

    Ada 3 address yang digunakan oleh paralel adapter pada LPT1 yakni address

    378H,379H dan 37AH sedang LPT2 menggunakan address 3BCH,3BDH,dan

    3BEH. Spesifikasi setiap address pada LPT1 adalah sebagai berikut:

    Address 378H hanya dapat digunakan sebagai output, sedangkan jumlah bit

    yang dapat digunakan sebanyak 8 bit mulai pin 2 sebagai bit 0 s.d pin 9 sebagai

    bit 7.

    Bit 0 : pin 2 Bit 1 : pin 3

    Bit 2 : pin 4 Bit 3 : pin 5

    Bit 4 : pin 6 Bit 5 : pin 7

    Bit 6 pin 8 Bit 7 : pin 9

  • 8/9/2019 BAB03- LPT

    6/36

    Teknik Akuisisi Data 39

    Address 379H hanya dapat digunakan untuk INPUT data, tetapi jumlah data

    yang dapat diinputkan hanya 5 bit, yaitu:

    Bit 0 : pin 15 Bit 1 : pin 13

    Bit 2 : pin 12 Bit 3 : pin 10

    Bit 4 : pin 11

    Khusus untuk bit 4 data yang diterima merupakan komplemen dari data yang

    diinputkan.

    Khusus untuk bit 3 yang terhubung ke interrupt pada PC yakni IRQ 5 dengan

    nomer interrupt INT 0CH untuk LPT1 dan IRQ 6 INT 0DH untuk LPT2.

    Dalam kondisi normal interrupt ini pasif sedang untuk mengaktifkannya yakni

    dengan mengirim data ke address 37AH dengan data 00001000b yakni bit ke 4

    dikirim data 1, sedang interrupt akan terjadi jika ada pulsa low ke address

    379H bit 6.

    Address 37AH sebenarnya difungsikan hanya sebagai output dengan jumlah

    daa sebanyak 4 bit yakni :Bit 0 : pin 1 Bit 1 : pin 14

    Bit 2 : pin 16 Bit 3 : pin 17

    Tetapi setelah mengamati hardware yang ada pada paralel adapter sebenarnya

    address ini dapat digunakan sebagai nput, hanya saja sebelum

    memanfaatkannya sebagai input terlebih dulu harus diinisialisasi dengan data

    04H yang dimaksudkan agar data yang diambil benar karena pada rangkaian

    output paralel adapter digunakan rangkaian transistor yang bersifat open

    collector sehingga transistor harus dimatikan dulu dengan memberikan data

    04H pada adress ini.

    Sebagaimana pada adress 379H ada beberapa bit yang bersifat komplemen

    yaitu: Bit 0, bit 1 dan bit 3.

  • 8/9/2019 BAB03- LPT

    7/36

    Teknik Akuisisi Data 40

    3.9. Aplikasi I/O

    Pada bagian ini, LPT1 dihubungkan dengan modulInterfacingdimana

    modul terdiri dari

    Modul I/O

    Modul Display

    SIPO (Serial Input Paralel Output)

    PIPO (Paralel Input Paralel Output)

    LCD (Light Cell Display)

    Modul Motor Stepper

    Langkah pertama dalam menerapkan teori adalah membuat LED berjalan yang

    dikontrol oleh LPT dengan alamat :

    378H untuk 8 bit output

    379H untuk 5 bit input

    37AH untuk 4 bit output

    gambar 3.1. 8 bit output alamat 378H

  • 8/9/2019 BAB03- LPT

    8/36

    Teknik Akuisisi Data 41

    gambar 3.2. 5 bit input alamat 379H

    gambar 3.3. 4 bit output alamat 37AH

    3.9.1. Penjelasan program utama

    Program yang dibuat oleh penulis mempunyai tampilan seperti di

    bawah ini. Anda bisa menjalankan program IO.exe pada CD yang terlampir.

  • 8/9/2019 BAB03- LPT

    9/36

    Teknik Akuisisi Data 42

    gambar 3.4. Tampilan depan dari IO

    Jika anda memakai program Delphi 7 underWindows XP, maka pertama kali

    yang perlu anda ketahui adalah file io.dll. File ini mengijinkan anda melakukan

    perintah input dan output. Adapun cara melakukan inisialisasinya adalah

    sebagai berikut :

    implementationprocedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';function PortIn(Port:Word):Byte; stdcall; external 'io.dll';

    Penulisanproceduredanfunctiontepat di bawah implementation

    procedure PortOut(Port : Word; Data : Byte);

    prosedur ini mempunyai maksud , jika kita akan mengirim data 13 pada alamat

    37AH, maka penulisannya adalah

    portout($37A,13);

    dan apabila ingin mengambil data dari suatu alamat 379H, maka penulisannya

    adalah sebagai berikut :

    dataH := portin($379);

  • 8/9/2019 BAB03- LPT

    10/36

    Teknik Akuisisi Data 43

    3.9.2. Penjelasan Program

    Prosedur Output

    Perhatikan program untuk output di bawah ini

    procedure TForm1.OutputClick(Sender: TObject);var

    data_output : byte;begin

    data_output := StrToInt(Edit2.Text);PortOut($378,data_output);

    end;

    data_output := StrToInt(Edit2.Text);

    Teks angka di dalam Edit2 diubah menjadi data integer dan disimpan ke

    variable data_output, kemudian dikeluarkan ke alamat 378H

    PortOut($378,data_output);

    Prosedur Input

    Perhatikan program untuk input di bawah ini

    procedure TForm1.InputClick(Sender: TObject);var

    data_input : byte;d3456,d7 : byte;

    begindata_input := PortIn($379);data_input := data_input and $0f8;d3456 := data_input and $78;d7 := data_input and 128;d7 := not d7;d7 := d7 and 128;data_input := d7 + d3456;Edit1.Text := IntToStr(data_input);

    end;

    Mengambil data dari alamat 379H, kemudian menyimpannya ke memori

    dengan nama data_input:

    data_input := PortIn($379);

  • 8/9/2019 BAB03- LPT

    11/36

    Teknik Akuisisi Data 44

    Karena input dari LPT terdiri dari 5 bit dimulai dengan D3 sampai D7 dengan

    D7 bersifat inverter, maka :

    data_input := data_input and $0f8;d3456 := data_input and $78;d7 := data_input and 128;d7 := not d7;d7 := d7 and 128;data_input := d7 + d3456;

    Kemudian hasil pemrosesan dikeluarkan ke Edit1.

    Edit1.Text := IntToStr(data_input);

    3.10. Listing program utama

    unit Unit1;interface

    usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Buttons;

    typeTForm1 = class(TForm)

    Output: TSpeedButton; BitBtn1: TBitBtn;Input: TSpeedButton; Label1: TLabel;Edit1: TEdit; Edit2: TEdit;Label2: TLabel;procedure OutputClick(Sender: TObject);procedure pulse;procedure delay(lama:longint);procedure InputClick(Sender: TObject);

    private{ Private declarations }public{ Public declarations }end;

  • 8/9/2019 BAB03- LPT

    12/36

    Teknik Akuisisi Data 45

    varForm1: TForm1;data : byte;

    implementationprocedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';function PortIn(Port:Word):Byte; stdcall; external 'io.dll';

    {$R *.dfm}

    procedure TFORM1.delay(lama:longint);var ref:longint;begin

    ref:=gettickcount;repeat application.processmessages;until ((gettickcount-ref)>=lama);

    end;

    procedure TForm1.pulse;begin

    data := data or 16;PortOut($378,data);

    end;

    procedure TForm1.OutputClick(Sender: TObject);var

    data_output : byte;begin

    data_output := StrToInt(Edit2.Text);PortOut($378,data_output);

    end;

    procedure TForm1.InputClick(Sender: TObject);var

    data_input : byte;d3456,d7 : byte;begin

    data_input := PortIn($379);data_input := data_input and $0f8;d3456 := data_input and $78;

    d7 := data_input and 128;d7 := not d7;d7 := d7 and 128;data_input := d7 + d3456;Edit1.Text := IntToStr(data_input);

    end;end.

  • 8/9/2019 BAB03- LPT

    13/36

    Teknik Akuisisi Data 46

    3.11. Percobaan 1: Display PIPO

    Untuk percobaan ini, lihat gambar skematik berikut ini:

    gambar 3.5. Display PIPO

    Dari gambar di atas, pin kontrol yang digunakan adalah :

    Port 378.4 untuk sinyal clock : 0 1 0

    Port 378H selain 378.4 digunakan untuk data

    0 segment akan menyala

    1 segement akan padam

    Berikut ini adalah contoh program yang digunakan untuk menjalankan display

    SIPO :

    Blank digunakan untuk mematikan semua segmen

    Stop digunakan untuk menampilkan angka 09 berjalan. Tulisan

    Stop akan berganti dengan Run

  • 8/9/2019 BAB03- LPT

    14/36

    Teknik Akuisisi Data 47

    Run digunakan untuk menampilkan display PIPO dari data yang

    ditulis pada Editor

    gambar 3.6. Tampilan software

    Listing program

    unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Buttons;

    typeTForm1 = class(TForm)

    PIPO: TSpeedButton; BitBtn1: TBitBtn;Blank: TSpeedButton; Label1: TLabel;Edit1: TEdit; Run: TSpeedButton;Label2: TLabel; Label3: TLabel;Label4: TLabel;procedure PIPOClick(Sender: TObject);procedure pulse;procedure delay(lama:longint);procedure BlankClick(Sender: TObject);procedure RunClick(Sender: TObject);procedure konversi(dat:byte);procedure padam;

    private{ Private declarations }public{ Public declarations }end;

  • 8/9/2019 BAB03- LPT

    15/36

    Teknik Akuisisi Data 48

    varForm1: TForm1;data : byte;

    constA0 = $40;A1 = $0EC;A2 = $0A;A3 = $28;A4 = $A4;A5 = $21;A6 = $01;A7 = $0E8;A8 = $00;A9 = $20;

    implementationprocedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';function PortIn(Port:Word):Byte; stdcall; external 'io.dll';

    {$R *.dfm}

    procedure TFORM1.delay(lama:longint);var ref:longint;begin

    ref:=gettickcount;repeat application.processmessages;until ((gettickcount-ref)>=lama);

    end;

    procedure TForm1.pulse;begin

    data := data or 16;PortOut($378,data);

    end;

    procedure TForm1.PIPOClick(Sender: TObject);begin

    if PIPO.Caption = 'Stop' thenPIPO.Caption := 'Run'

    elseif PIPO.Caption = 'Run' thenPIPO.Caption := 'Stop';

    repeatdata := A0;PortOut($378,data);pulse; delay(300);

  • 8/9/2019 BAB03- LPT

    16/36

    Teknik Akuisisi Data 49

    data := A1;PortOut($378,data);pulse; delay(300);

    data := A2;PortOut($378,data);pulse; delay(300);

    data := A3;PortOut($378,data);pulse; delay(300);data := A4;PortOut($378,data);pulse; delay(300);

    data := A5;

    PortOut($378,data);pulse; delay(300);

    data := A6;PortOut($378,data);pulse; delay(300);

    data := A7;PortOut($378,data);pulse; delay(300);

    data := A8;

    PortOut($378,data);pulse; delay(300);

    data := A9;PortOut($378,data);pulse; delay(300);

    until PIPO.Caption = 'Stop';end;

    procedure TForm1.BlankClick(Sender: TObject);vari : integer;

    beginfor i:= 1 to 6 dobegin

    data := $0ef;PortOut($378,data);pulse; delay(100);

    end;end;

  • 8/9/2019 BAB03- LPT

    17/36

    Teknik Akuisisi Data 50

    procedure TForm1.padam;begin

    data := $0ef;PortOut($378,data);

    pulse;end;

    procedure TForm1.konversi(dat:byte);begin

    if dat = 0 then data := A0;if dat = 1 then data := A1;if dat = 2 then data := A2;if dat = 3 then data := A3;if dat = 4 then data := A4;if dat = 5 then data := A5;if dat = 6 then data := A6;

    if dat = 7 then data := A7;if dat = 8 then data := A8;if dat = 9 then data := A9;

    end;

    procedure TForm1.RunClick(Sender: TObject);var

    sat,pul,rat,angka : byte;begin

    angka := StrToInt(Edit1.Text);sat := angka mod 10;pul := angka div 10;

    pul := pul mod 10;rat := angka div 100;konversi(sat);PortOut($378,data);pulse;konversi(pul);PortOut($378,data);pulse;konversi(rat);PortOut($378,data);pulse;

    padam;padam;padam;delay(30);

    end;

    end.

  • 8/9/2019 BAB03- LPT

    18/36

    Teknik Akuisisi Data 51

    3.10. Percobaan 1: Display SIPO

    Untuk percobaan ini, lihat gambar skematik berikut ini:

    gambar 3.7. Display SIPO

    Dari gambar di atas, pin kontrol yang digunakan adalah :

    37A.3 untuk sinyal clock : 0 1 0

    37A.2 untuk sinyal data

    0 segment akan menyala

    1 segment akan padam

    Berikut ini adalah contoh program yang digunakan untuk menjalankan display

    SIPO :

    Blank digunakan untuk mematikan semua segmen

    Stop digunakan untuk menampilkan angka 09 berjalan. Tulisan

    Stop akan berganti dengan Run

  • 8/9/2019 BAB03- LPT

    19/36

    Teknik Akuisisi Data 52

    Data Out digunakan untuk menampilkan display SIPO dari data yang

    ditulis pada Editor

    gambar 3.8. Tampilan software

    Listing program

    unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls, Buttons, ExtCtrls;

    typeTForm1 = class(TForm)SIPO: TSpeedButton; BitBtn1: TBitBtn;Blank: TSpeedButton; Edit1: TEdit;SIPO_Out: TSpeedButton; Label1: TLabel;Label2: TLabel; Label3: TLabel;procedure SIPOClick(Sender: TObject);procedure pulse; procedure delay(lama:longint);procedure BlankClick(Sender: TObject);procedure onn;procedure off;

    procedure A0; procedure A1;procedure A2; procedure A3;procedure A4; procedure A5;procedure A6; procedure A7;procedure A8; procedure A9;procedure konversi(dat: byte); procedure padam;procedure SIPO_OutClick(Sender: TObject);

    private{ Private declarations }

  • 8/9/2019 BAB03- LPT

    20/36

    Teknik Akuisisi Data 53

    public{ Public declarations }end;

    varForm1: TForm1;data : byte;

    implementationprocedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';function PortIn(Port:Word):Byte; stdcall; external 'io.dll';

    {$R *.dfm}

    procedure TFORM1.delay(lama:longint);var ref:longint;

    beginref:=gettickcount;repeat application.processmessages;until ((gettickcount-ref)>=lama);

    end;

    procedure TForm1.pulse;begin

    data := data or 16;PortOut($378,data);

    end;

    procedure TForm1.onn;begin

    PortOut($37a,11);PortOut($37a,3);

    end;

    procedure TForm1.off;begin

    PortOut($37a,15);PortOut($37a,7);

    end;

    procedure TForm1.A0;begin

    onn;onn;onn;onn;onn;off;onn;end;

    procedure TForm1.A1;begin

    off;onn;onn;off;off;off;off;end;

  • 8/9/2019 BAB03- LPT

    21/36

    Teknik Akuisisi Data 54

    procedure TForm1.A2;begin

    onn;onn;off;off;onn;onn;onn;end;

    procedure TForm1.A3;begin

    onn;onn;onn;off;onn;onn;off;end;

    procedure TForm1.A4;begin

    off;onn;onn;onn;off;onn;off;end;

    procedure TForm1.A5;begin

    onn;off;onn;onn;onn;onn;off;end;

    procedure TForm1.A6;begin

    onn;off;onn;onn;onn;onn;onn;end;

    procedure TForm1.A7;begin

    onn;onn;onn;off;off;off;off;end;

    procedure TForm1.A8;begin

    onn;onn;onn;onn;onn;onn;onn;end;

    procedure TForm1.A9;begin

    onn;onn;onn;onn;onn;onn;off;end;

    procedure TForm1.SIPOClick(Sender: TObject);begin

    if SIPO.Caption = 'Run' thenSIPO.Caption := 'Stop'

    elseif SIPO.Caption = 'Stop' thenSIPO.Caption := 'Run';

  • 8/9/2019 BAB03- LPT

    22/36

    Teknik Akuisisi Data 55

    repeatA0;delay(300);A1;delay(300);A2;delay(300);

    A3;delay(300);A4;delay(300);A5;delay(300);A6;delay(300);A7;delay(300);A8;delay(300);A9;delay(300);

    until SIPO.Caption = 'Stop';end;

    procedure TForm1.BlankClick(Sender: TObject);var

    i : integer;begin

    for i:= 1 to 42 dooff;

    end;

    procedure TForm1.padam;var

    i : byte;begin

    for i:= 1 to 7 dooff;

    end;

    procedure TForm1.konversi(dat: byte);begin

    if dat = 0 then A0;if dat = 1 then A1;if dat = 2 then A2;if dat = 3 then A3;if dat = 4 then A4;if dat = 5 then A5;if dat = 6 then A6;if dat = 7 then A7;

    if dat = 8 then A8;if dat = 9 then A9;

    end;

    procedure TForm1.SIPO_OutClick(Sender: TObject);var

    sat,pul,rat,angka : byte;begin

    Angka := StrToInt(Edit1.Text);sat := Angka mod 10;

  • 8/9/2019 BAB03- LPT

    23/36

    Teknik Akuisisi Data 56

    pul := Angka div 10;pul := pul mod 10;rat := Angka div 100;konversi(sat);

    konversi(pul);konversi(rat);dam;padam;padam

    end;

    end.

    3.11. Percobaan 1 : Display LCD

    gambar 3.9.Display LCD

    LCD yang digunakan adalah : M1632 yang terdiri dari 2 baris, 16 kolom

    dimulai dari baris1 paling atas dan kolom 0 paling kiri.

    Sebelum menampilkan karakter pada LCD, maka harus mengikuti prosedur

    sebagai berikut:

    Inisialisasi

    Pemesanan tempat

    Penulisan data

  • 8/9/2019 BAB03- LPT

    24/36

    Teknik Akuisisi Data 57

    Inisialisasi terdiri dari

    Di splay Clear

    0 0 0 0 0 0 0 0 0 1

    RS R/-W D7 D6 D5 D4 D3 D2 D1 D0

    Instruksi ini akan menghapus semua display dan mengembalikan kursor ke

    posisi awal (alamat 0)

    Cursor Home0 0 0 0 0 0 0 0 1 X

    RS R/-W D7 D6 D5 D4 D3 D2 D1 D0

    Instruksi ini mengembalikan kursor ke posisi awal (alamat 0)

    Entry Mode Set

    0 0 0 0 0 0 0 1 I/D S

    RS R/-W D7 D6 D5 D4 D3 D2 D1 D0

    Instruksi ini mengatur arah pergerakan kursor dan apakah display akan

    digeser.

    Jika I/D = 1 alamat akan dinaikkan dan kursor bergerak ke kanan dan

    jika I/D = 0 alamat akan diturunkan dan kursor bergerak ke kiri

    Jika S = 1, semua display akan digeser, tetapi posisi kursor tidak

    berubah,

    Jika S = 1 dan I/D = 1 , display akan digeser ke kiri dan jika S = 1 dan

    I/D = 0 display akan digeser ke kanan.

    Jika S = 0 , display tidak akan digeser.

  • 8/9/2019 BAB03- LPT

    25/36

    Teknik Akuisisi Data 58

    Display ON/OFF Control

    0 0 0 0 0 0 1 D C B

    RS R/-W D7 D6 D5 D4 D3 D2 D1 D0

    D = 1, display akan ditampilkan

    D = 0, display tidak ditampilkan

    C = 1, kursor akan ditampilkan

    C = 0 , kursor tidak ditampilkan

    B = 1, karakter tempat posisi kursor berkedipB = 0, karakter tempat posisi kursor tidak berkedip

    Cursor/Display Shi f t

    0 0 0 0 0 1 S/C R/L * *

    RS R/-W D7 D6 D5 D4 D3 D2 D1 D0

    Instruksi ini akan menggerakkan kursor dan menggeser display tanpa

    mengubah RAM

    S/C R/L Operasi

    0 0 Posisi kursor digeser ke kiri

    0 1 Posisi kursor digeser ke kanan

    1 0 Seluruh display digeser ke kiri dengan kursornya

    1 1 Seluruh display digeser ke kanan dengan kursornya

    Function Set

    0 0 0 0 1 DL 1 * * *

    RS R/-W D7 D6 D5 D4 D3 D2 D1 D0

    DL = 1, panjang data diatur 8 bit

  • 8/9/2019 BAB03- LPT

    26/36

    Teknik Akuisisi Data 59

    DL = 0, panjang data 4 bit (D7D4)

    Pin yang digunakan

    Pin dari LCD tipe ini terdiri dari 16 pin

    No Nama Fungsi

    1 Vss GND

    2 Vcc + 5 V

    3 Vee LCD Contrast

    4 RS 1 = Input data, 0 = Input Instruksi

    5 R/W 1= Read, 0 = Write

    6 E Enable

    7 D0 Data 0

    8 D1 Data 1

    9 D2 Data 210 D3 Data 3

    11 D4 Data 4

    12 D5 Data 5

    13 D6 Data 6

    14 D7 Data 7

    15 VBL+ 4 - 4.2 volt

    16 VBL- GND

    Pemesanan tempat

    Ke baris dan kolom dengan memberi RS = 0. Untuk baris 1 data yang

    dikirim adalah 8XH atau 1000 xxxxB dan baris 2 data yang dikirim

    adalah CXH atau 1100xxxxB dimana x menunjukkan kolom 0 - 15 (0H

    - FH).

    Penulisan karakter

    Ke baris dan kolom tersebut dengan memberi RS =1. Karakter yang

    dikirim dalam format ASCII.

  • 8/9/2019 BAB03- LPT

    27/36

    Teknik Akuisisi Data 60

    gambar 3.10. tampilan Software

    Listing programunit Unit1;interface

    usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Buttons;

    type

    TForm1 = class(TForm)LCD: TSpeedButton; BitBtn1: TBitBtn;Edit1: TEdit; latihan: TSpeedButton;procedure delay(lama:longint);procedure latihanClick(Sender: TObject);procedure controlout;procedure dataout;procedure init_lcd;procedure LCDClick(Sender: TObject);

    private{ Private declarations }

    public{ Public declarations }end;

    varForm1: TForm1;data : byte;

    constDISPCLR = $01;FUNCSET = $38;

  • 8/9/2019 BAB03- LPT

    28/36

    Teknik Akuisisi Data 61

    ENTRMOD = $06;DISPON = $0C;CURSOR = $0E;BLINK = $0B;

    implementationprocedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';function PortIn(Port:Word):Byte; stdcall; external 'io.dll';

    {$R *.dfm}

    procedure TFORM1.delay(lama:longint);var ref:longint;begin

    ref:=gettickcount;repeat application.processmessages;

    until ((gettickcount-ref)>=lama);end;

    procedure TForm1.controlout;{ RS : -37A.0 = 1 }{ E : -37A.1 = 1 0 1 }begin

    PortOut($37A,$3);delay(10);PortOut($37A,$1);delay(10);PortOut($37A,$3);

    delay(10);end;

    procedure TForm1.dataout;{ RS : -37A.0 = 0 }{ E : -37A.1 = 1 0 1 }begin

    PortOut($37A,$2);delay(10);PortOut($37A,$0);delay(10);PortOut($37A,$2);

    delay(10);end;

    procedure TForm1.init_lcd;begin

    PortOut($378,DISPCLR);controlout;delay(10);PortOut($378,FUNCSET);controlout;

  • 8/9/2019 BAB03- LPT

    29/36

    Teknik Akuisisi Data 62

    delay(10);PortOut($378,DISPON);controlout;delay(10);

    PortOut($378,ENTRMOD);controlout;delay(10);

    end;

    procedure TForm1.latihanClick(Sender: TObject);begin

    init_lcd;PortOut($302,$80); {BARIS 1 KOLOM 0}controlout;PortOut($378,ord('A'));dataout;

    PortOut($378,$81); {BARIS 1 KOLOM 1}controlout;PortOut($378,ord('B'));dataout;

    PortOut($378,$82); {BARIS 1 KOLOM 2}controlout;PortOut($378,ord('C'));dataout;

    PortOut($378,$83); {BARIS 1 KOLOM 3}

    controlout;PortOut($378,ord('D'));dataout;

    PortOut($378,$84); {BARIS 1 KOLOM 4}controlout;PortOut($378,ord('E'));dataout;

    PortOut($378,$85); {BARIS 1 KOLOM 5}controlout;PortOut($378,ord('F'));

    dataout;

    PortOut($378,$86); {BARIS 1 KOLOM 6}controlout;PortOut($378,ord('G'));dataout;

    PortOut($378,$87); {BARIS 1 KOLOM 7}controlout;PortOut($378,ord('H'));

  • 8/9/2019 BAB03- LPT

    30/36

    Teknik Akuisisi Data 63

    dataout;

    PortOut($378,$88); {BARIS 1 KOLOM 8}controlout;

    PortOut($378,ord('I'));dataout;

    PortOut($378,$89); {BARIS 1 KOLOM 9}controlout;PortOut($378,ord('J'));dataout;

    PortOut($378,$8A); {BARIS 1 KOLOM 10}controlout;PortOut($378,ord('K'));dataout;

    PortOut($378,$8B); {BARIS 1 KOLOM 11}controlout;PortOut($378,ord('L'));dataout;

    PortOut($378,$8C); {BARIS 1 KOLOM 12}controlout;PortOut($378,ord('M'));dataout;

    PortOut($378,$8D); {BARIS 1 KOLOM 13}

    controlout;PortOut($378,ord('N'));dataout;

    PortOut($378,$8E); {BARIS 1 KOLOM 14}controlout;PortOut($378,ord('O'));dataout;

    PortOut($378,$8F); {BARIS 1 KOLOM 15}controlout;PortOut($378,ord('P'));

    dataout;

    PortOut($378,$C0); {BARIS 2 KOLOM 0}controlout;PortOut($378,ord('a'));dataout;

    PortOut($378,$C1); {BARIS 2 KOLOM 1}controlout;PortOut($378,ord('b'));

  • 8/9/2019 BAB03- LPT

    31/36

    Teknik Akuisisi Data 64

    dataout;

    PortOut($378,$C2); {BARIS 2 KOLOM 2}controlout;

    PortOut($378,ord('c'));dataout;

    PortOut($378,$C3); {BARIS 2 KOLOM 3}controlout;PortOut($378,ord('d'));dataout;

    PortOut($378,$C4); {BARIS 2 KOLOM 4}controlout;PortOut($378,ord('e'));dataout;

    PortOut($378,$C5); {BARIS 2 KOLOM 5}controlout;PortOut($378,ord('f'));dataout;

    PortOut($378,$C6); {BARIS 2 KOLOM 6}controlout;PortOut($378,ord('g'));dataout;

    PortOut($378,$C7); {BARIS 2 KOLOM 7}

    controlout;PortOut($378,ord('h'));dataout;

    PortOut($378,$C8); {BARIS 2 KOLOM 8}controlout;PortOut($378,ord('i'));dataout;

    PortOut($378,$C9); {BARIS 2 KOLOM 9}controlout;PortOut($378,ord('j'));

    dataout;

    PortOut($378,$CA); {BARIS 2 KOLOM 10}controlout;PortOut($378,ord('k'));dataout;

    PortOut($378,$CB); {BARIS 2 KOLOM 11}controlout;PortOut($378,ord('l'));

  • 8/9/2019 BAB03- LPT

    32/36

    Teknik Akuisisi Data 65

    dataout;

    PortOut($378,$CC); {BARIS 2 KOLOM 12}controlout;

    PortOut($378,ord('m'));dataout;

    PortOut($378,$CD); {BARIS 2 KOLOM 13}controlout;PortOut($378,ord('n'));dataout;

    PortOut($378,$CE); {BARIS 2 KOLOM 14}controlout;PortOut($378,ord('o'));dataout;

    PortOut($378,$CF); {BARIS 2 KOLOM 15}controlout;PortOut($378,ord('p'));dataout;

    end;

    procedure TForm1.LCDClick(Sender: TObject);var

    dataLCD : byte;begin

    init_lcd;

    PortOut($378,$80); {BARIS 1 KOLOM 0}controlout;dataLCD := StrToInt(Edit1.Text);PortOut($378,dataLCD+$30);dataout;

    end;

    end.

  • 8/9/2019 BAB03- LPT

    33/36

    Teknik Akuisisi Data 66

    3.12. Driver Motor Stepper

    gambar 3.11. Driver motor stepper

    Gambar di atas adalah driver motor stepper IN CHIP ULN 2803. dimana di

    dalamnya terdapat deretan transistor penguat arus sekaligus berfungsi sebagai

    INVERTER. Jadi data yang dikirim harus ber KOMPLEMEN dengan datamotor stepper.

    Kecepatan motor stepper hanya bisa diatur dengan delay ( penundaan waktu )

    antara data sebelum dan sesudahnya.

  • 8/9/2019 BAB03- LPT

    34/36

    Teknik Akuisisi Data 67

    gambar 3.12 tampilan software

    Tombol terdiri dari:

    Editor digunakan untuk mengisi lamanya delay (mili detik)

    KIRI-Stop digunakan untuk menjalankan stepper ke kiri

    KANAN-Stop digunakan untuk menjalankan stepper ke kanan

    Listing programunit Unit1;interface

    usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Buttons;

    typeTForm1 = class(TForm)

    KIRI: TSpeedButton; BitBtn1: TBitBtn;KANAN: TSpeedButton; Edit1: TEdit;Label1: TLabel; Label2: TLabel;Label3: TLabel; Label4: TLabel;procedure KIRIClick(Sender: TObject);procedure pulse;procedure delay(lama:longint);procedure STOPClick(Sender: TObject);procedure KANANClick(Sender: TObject);

    private

  • 8/9/2019 BAB03- LPT

    35/36

    Teknik Akuisisi Data 68

    { Private declarations }public{ Public declarations }end;

    varForm1: TForm1;data : byte;

    implementationprocedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';function PortIn(Port:Word):Byte; stdcall; external 'io.dll';

    {$R *.dfm}

    procedure TFORM1.delay(lama:longint);

    var ref:longint;begin

    ref:=gettickcount;repeat application.processmessages;until ((gettickcount-ref)>=lama);

    end;

    procedure TForm1.KIRIClick(Sender: TObject);var

    tunda : integer;begin

    if KIRI.Caption = 'Stop' then

    KIRI.Caption := 'Run'elseif KIRI.Caption = 'Run' thenKIRI.Caption := 'Stop';

    tunda := StrToInt(Edit1.Text);repeat

    PortOut($378,8);delay(tunda);PortOut($378,4);delay(tunda);PortOut($378,2);

    delay(tunda);PortOut($378,1);delay(tunda);

    until KIRI.Caption = 'Stop';end;

    procedure TForm1.KANANClick(Sender: TObject);var

    tunda : integer;

  • 8/9/2019 BAB03- LPT

    36/36

    beginif KANAN.Caption = 'Stop' thenKANAN.Caption := 'Run'else

    if KANAN.Caption = 'Run' thenKANAN.Caption := 'Stop';

    tunda := StrToInt(Edit1.Text);repeat

    PortOut($378,1);delay(tunda);PortOut($378,2);delay(tunda);PortOut($378,4);delay(tunda);PortOut($378,8);

    delay(tunda);until KANAN.Caption = 'Stop';

    end;

    end.