BAB03- LPT
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.