BAB I TUJUAN Setelah melaksanakan pratikum ini diharapkan mahasiswa mampu : 1. Mampu menyusun data dalam array untuk menampilkan angka 0 s/d 9. 2. Mampu membuat program untuk menampilkan 1 digit angka berurutan pada 7sd. 3. Mampu membuat program untuk menampilkan 4 digit angka pada 7sd. BAB II TEORI DASAR SEVEN SEGMENT DISPLAY Seven segmen display adalah tampilan angka yang terdiri dari 7 LED yang disusun membentuk angka 8 ditambah 1 LED sebagai titik (dot). Ada dua tipe 7 segment yaitu : Common Anode dan Common Cathode Common Anode (CA) Pada 7 segment CA semua anode LED dihubungkan menjadi satu dan disebut sebagai Common Anode. Sementara katode LED diberi nama a, b, c, d, e, f, g dan dp (dot/titik). Tanda bar diatas menunjukkan bahwa pin tersebut adalah aktif low. Sebagai contoh untuk membentuk angka 2 maka pin common diberi tegangan + sedangkan pin a, c, d, f dan g diberi tegangan 0 volt. Besarnya tegangan (V1) dapat dilihat dari lembaran data sheet tiap produk seven segment. Gambar 1. Konfigurasi seven segment Common Anode Common Cathode (CC) Pada 7 segmen CC semua katoda LED dihubungkan menjadi satu dan disebut sebagai Common Cathode. Sementara katode LED diberi nama a, b, c, d, e, f, g dan dp (dot/titik). Sebagai contoh untuk membentuk angka 1 maka pin common diberi tegangan 0 volt sedangkan pin a dan b diberi tegangan +. Gambar 2. Konfigurasi seven segment Common Cathode Metode Scanning Metode scanning digunakan untuk melakukan penghematan jalur data yang diperlukan untuk mengendalikan seven segment yang jumlahnya lebih dari satu buah seperti pada gambar dibawah ini . Gambar 3. Seven Segment 3 Digit Dengan metode scanning, semua output segment (a sampai g) dihubungkan ke semua seven segment. Dengan demikian data akan diterima oleh semua seven segment secara bersamaan. Yang harus dilakukan selanjutnya adalah memilih common mana yang akan diaktifkan. Dengan mengaktifkan common secara bergantian dan dilakukan dalam frekuensi yang cepat (50Hz) maka seolah-olah akan dilihat tiga digit angka yang menyala bersamaan. Array Data Array data merupakan data yang dipersiapkan untuk mengaktifkan segmen tertentu sesuai tampilan angka yang diinginkan. Dengan asumsi bahwa segmen a – g terhubung langsung ke pin 2- 9 (port data) tanpa driver khusus maka susunan data untuk menampilka angka 0 s/d 9 perlu didefinisikan. Seperti untuk menampilkan angka 0 maka jika menggunakan 7sd jenis cc maka data yang diperlukan adalah 3Fh. Untuk memudahkan pemrograman maka seluruh data diset dan disimpan dalam sebuah konstanta Array. BAB III LANGKAH KERJA A. Mengirim angka 1 digit yang berasal dari komponen edit 7sd. 1. Buatlah sebuah form aplikasi 1 yang berisi komponen seperti gambar 4 Gambar 4. Tampilan Aplikasi 1 2. Buatkan program sbb : Implementation {$ R * .DFM} Procedure PortOut(Port : word; data : byte); stdcall; external ‘ io.dll’; Const data : array [0..9] of byte = ($C0,$F9,$A4,$B0,$99,$92,$83,$F8,$80,$98); //data 1 : array [0..9] of byte = //($81,$CF,$92,$B0,$86,$CC,$A4,$A0,$8F,$80,$84); Var i:integer; Procedure TForm1.Button1Click (Sender :TObject); Begin Timer1.enabled:=false; End; Procedure TForm1.Timer1Timer(Sender :TObject); Begin Portout($378,data[i]); Edit1.text:=’’+inttostr(i); i:=i+1; if i:=10 then i:=0 End; Procedure TForm1.FormCreate(Sender :TObject); Begin i:=0; portout($37A,$03); portout($378,$FF); end; end. 3. Simpan dan jalankan program, amati tampilan pada 7sd 4. Ganti data yang dikirim ke port 37A sesuai tabel berikut dan isikan hasil pengamatan No. 1. 2. 3. 4. Data untuk port 37A $03 $0F $09 0A Tampilan angka pada B. Mengirimkan angka 0 s/d 9 dari array data secara bergantian ke 1 7 sd 1. Buatlah sebuah form aplikasi 2 yang berisi komponen seperti gambar 5 Gambar 5. Tampilan Aplikasi 2 2. Buatkan program untuk menampilkan data pada komponen edit ke 7sd. 4 digit 3. Jalankan program dan amati tampilan pada 7sd Catatan : Data untuk adalah = $C0,$F9,$A4,$B0,$99,$92,$83,$F8,$80,$98 masing- masing mengkodekan tampilan angka 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 CA untuk digit 7sd terhubung sbb : Digit ke 0 2 3 4 Terhubung ke pin 17 16 14 1 Data aktivasi CA 03 0F 09 0A BAB IV HASIL PERCOBAAN A. Mengirimkan angka 0 s/d 9 dari array data secara bergantian ke 1 7sd. 1. Tampilan desain form aplikasi 1 2. Algoritma program aplikasi Untuk menjalan kan program diatas maka dimasukkan listing untuk melakukan pemograman, yaitu sebagai berikut : unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Timer1: TTimer; muulAAAyyy: TButton; BitBtn1: TBitBtn; edit1: TEdit; procedure muulAAAyyyClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure PortOut(Port : Word; Data : Byte);stdcall;external 'io.dll'; const data:array[0..9]of byte= ($c0,$f9,$A4,$B0,$99,$92,$83,$F8,$80,$98); //data 1 :array[0..9]of byte //($81,$Cf,$92,$86,$CC,$A4,$A0,$8F,$80,$84); var i:integer; procedure TForm1.muulAAAyyyClick(Sender: TObject); begin timer1.enabled:=true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin portout($378,data[i]); edit1.text:=' '+inttostr(i); i:=i+1; if i=10 then i :=0 end; procedure TForm1.FormActivate(Sender: TObject); begin i:=0; portout($37A,$03); portout($378,$FF); end; end. unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Timer1: TTimer; muulAAAyyy: TButton; BitBtn1: TBitBtn; edit1: TEdit; Button1: TButton; procedure muulAAAyyyClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormActivate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure PortOut(Port : Word; Data : Byte);stdcall;external 'io.dll'; const data:array[0..9]of byte= ($c0,$f9,$A4,$B0,$99,$92,$83,$F8,$80,$98); //data 1 :array[0..9]of byte //($81,$Cf,$92,$86,$CC,$A4,$A0,$8F,$80,$84); var i:integer; procedure TForm1.muulAAAyyyClick(Sender: TObject); begin timer1.enabled:=true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin portout($378,data[i]); edit1.text:=' '+inttostr(i); i:=i+1; if i=0 then i :=9999 end; procedure TForm1.FormActivate(Sender: TObject); begin i:=0; portout($37A,$0A); // portout($378,$FF); end; procedure TForm1.Button1Click(Sender: TObject); begin timer1.enabled:=False; end; end. Hasil running seven segmentnya : B. Membangun Aplikasi yang menampilkan jam 1. Tampilan desain form aplikasi 2. Untuk menjalankan program diatas, maka dimasukkan listing untuk pemrogramannya sebagai berikut : unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, ExtCtrls, ComCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; BitBtn1: TBitBtn; Timer1: TTimer; DateTimePicker1: TDateTimePicker; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} Procedure PortOut (Port : Word ; data : byte) ; stdcall ; external 'io.dll'; const pos : array [1..8] of byte =($70,$B0,$D0,$E0,$F0,$F0,$F0,$F0); procedure TForm1.Button1Click(Sender: TObject); begin timer1.Enabled:=true; end; procedure TForm1.Timer1Timer(Sender: TObject); var n,k,m,x, Angka: integer; waktu:Tdatetime; strtime:string; begin datetimepicker1.Time:=time; strtime:=timetostr(datetimepicker1.Time); case length(strtime) of 7 : x:=1; 8 : x:=0; end; m:=1; for n:=1 to length(strtime) do begin if strtime [n]in [':',' ','A','M','P'] then else begin Angka:= strtoint(strtime [n]); portout($378,pos [m+x] or angka); m:=m+1; end; for k:=1 to 1470000 do end; end; procedure TForm1.Button2Click(Sender: TObject); begin timer1.Enabled:=false; end; end. Hasil ketika di running : Dan hasil ketika di start : Tampilan listingnya : Pada praktek kali ini mahasiswa akan menggunakan seven segment yang merupakan tampilan angka yang terdiri dari 7 LED yang disusun membentuk angka 8 ditambah 1 LED sebagai titik (dot). Ada dua tipe seven segment yaitu: Pada 7 segmen CA semua anoda LED dihubungkan menjadi satu dan disebut sebagai Common Anode. Pada 7 segment CC semua katoda LED dihubungkan menjadi satu dan disebut sebagai Common Cathode. Kita akan melakukan percobaan untuk menampilkan angka pada seven segment display yang mana seven segment dislay yang kita gunakan adalah seven segment 4 digit. Jadi algoritma yang telah kita ketikkan pada program delphi kali ini bisa kita coba kebenarannya dengan seven segmen dislay ini. Untuk percobaan pertama ini kita hanya memertlukan satu digit seven segment , tetapi karena seven segment yang kita gunakan adalah seven segment 8 digit jadi digit yang akan hidup tergantung dengan algoritma yang kita ketikkan. Jika kita ingin menghidupkan digit pertama dari kiri pada seven segment dislay maka kita harus mengirimkan data $C0 ke port 37A. Jika kita ingin menghidupkan digit pertama dari kiri pada seven segment dislay maka kita harus mengirimkan data $C0 ke port 37A. Jika kita ingin menghidupkan digit kedua dari kiri pada seven segment dislay maka kita harus mengirimkan data $F9 ke port 37A. Jika kita ingin menghidupkan digit ketiga dari kiri pada seven segment dislay maka kita harus mengirimkan data $A4 ke port 37A. Jika kita ingin menghidupkan digit keempat dari kiri pada seven segment dislay maka kita harus mengirimkan data $B0 ke port 37A. Sedangkan untuk percobaan yang kedua ini kita menggunakan keempat digit yang terdapat pada seven segment dislay, dimana data yang kita kirimkan ke port 37A adalah ($C0,$F9,$A4,$B0) secara bersamaan dengan cara mengetikkan algoritma sebagai berikut : digit:array[1..9] of integer = ($C0,$F9,$A4,$B0,$99,$92,$83,$F8,$80,$98); Jadi jika kita mengetikan angka 1234 pada komponen edit, saat pogram dijalankan maka seven segment dislay akan menampilkan angka 1234 pada keempat digit pada seven segmen dislay. Karena kita menggunakan seven segment yang jumlahnya lebih dari satu (8 digit), maka kita menggunakan metoda scanning dimana metode ini akan melakukan penghematan jalur data yang diperlukan untuk mengendalikan seven segment. Pada waktu proses running berlangsung, pada komponenEdit akan menampilkan angka 1234, tetapi pada waktu Botton START ditekan maka, angka akan berubah dari 0,1,2,3…. 1234. Hal ini disebabkan karena pada komponen Button diberi perintah: portout($378,data[i]); edit1.text:=' '+inttostr(i); i:=i+1; if i=1234 then i :=0 Setelah mencapai angka 1234, akan terjad proses Looping yaitu kembali ke 0. Kecepatan perubahan angka ini tergantung pada interval timmer yang kita gunakan. Semakin kecil interval waktunya, maka semakin cepat perubahannya. Dan apabila semakin besar interval waktu dari sebuah timmer maka akan semakin lambat pula perubahannya. Dengan metode scanning, semua output segment (a sampai g) dihubungkan ke semua seven segment. Dengan demikian data diterima oleh semua seven segment secara bersamaan. Yang harus dilakukan selanjutnya adalah memilih common mana yang akan diaktifkan. Dengan mengaktifkan common secara bergantian dan dilakukan dalam frekuensi yang cepat (50 Hz) maka seolah-olah akan dilihat tiga digit angka yang menyala bersamaan. BAB V PENUTUP Kesimpulan Adapun kesimpulan yang dapat kita ambil pada praktek seven segment dislay ini adalah sebagai berikut : 1. Seven segment display adalah tampilan angka yang terdiri dari 7 LED yang disusun membentuk angka 8 ditambah 1 LED sebagai titik (dot). 2. Untuk percobaan pertama ini kita hanya memerlukan satu digit seven segment ,tetapi karena seven segment yang kita gunakan adalah seven segment 4 digit jadi digit yang akan hidup tergantung dengan algoritma yang kita ketikkan. 3. Utuk percobaan yang kedua ini kita menggunakan keempat digit yang terdapat pada seven segment dislay, dimana data yang kita kirimkan ke port 37A adalah ($C0,$F9,$A4,$B0) secara bersamaan dengan cara mengetikkan algoritma sebagai berikut : digit:array[1..9] of integer = ($C0,$F9,$A4,$B0,$99,$92,$83,$F8,$80,$98). 4. Jika menggunakan seven segment yang jumlahnya lebih dari satu (4 digit), maka kita menggunakan metoda scanning dimana metode ini akan melakukan penghematan jalur data yang diperlukan untuk mengendalikan seven segment.