Uploaded by farhansalfandi

LAPORAN DWI 12 ALGO

advertisement
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.
Download