December 1, 2007

kode program led8 berjalan, led12 berjalan, led32 H, P, A, seven segmen turbo pascal

Filed under: journal fisika

A. PRAKTIKUM 8 LED DAN 12 LED
1. Led berjalan dari kiri ke kanan kemudian stop.
2. Led berjalan dari kanan ke kiri kemudian stop.
3. Led berjalan dari kiri ke kanan kembali ke kiri kemudian stop.
4. Led berjalan dari kiri ke kanan kembali ke kiri ke kanan dan kembali ke kiri kemudian stop.

Jawab:
Program yang dijalankan untuk menyala kan Led berjalan dari kiri ke kanan kemudian stop, adalah sebagai berikut:

- Kode program untuk 8 LED

program led_8;
uses crt;
var i:byte;

procedure r0;
begin
i:=128;
repeat
port[$378]:=i;
delay(500);
i:=i div 2;
until i=0;
end;

procedure r1;
begin
i:=1;
repeat
port[$378]:=i;
delay(500);
i:=i*2;
until i=0;
end;

begin
r0;
r1;
end.

- Kode program untuk led 12:

program led_12;
uses crt;
var i:byte;

procedure r0;
begin
port[$37a]:=$0b;
delay(1);
i:=1;
repeat
port[$378]:=i;
delay(500);
i:=i*2;
until i=0;
port[$378]:=i;
if i=0 then
port[$37a]:=$0a;
delay(500);
port[$37a]:=$09;
delay(500);
port[$37a]:=$0f;
delay(500);
port[$37a]:=$03;
delay(500);
end;

procedure r1;
begin
port[$37a]:=$0f;
delay(500);
port[$37a]:=$09;
delay(500);
port[$37a]:=$0a;
delay(500);

port[$37a]:=$0b;
i:=128;
repeat
port[$378]:=i;
delay(500);
i:=i div 2;
until i=0;
end;

begin
r0;
r1;
r0;
end.

analisa Program:

Pendefenisian i sebagai byte digunakan sebagai input nilai port parallel, untuk menggantikan nilai integer $xx seperti yang terlihat di baris 8. Nilai i yang didefenisikan sebagai byte dapat mewakili nilai integer, seperti yang terlihat pada tabel berikut:
Tabel 1. Tabel konversi I as byte ke I as integer.
I as byte I as integer Bit/biner I as byte I as integer Bit/biner
0 $00 0000 0000 128 $80 1000 0000
1 $01 0000 0001 64 $40 0100 0000
2 $02 0000 0010 32 $20 0010 0000
4 $04 0000 0100 16 $10 0001 0000
8 $08 0000 1000 8 $08 0000 1000
16 $10 0001 0000 4 $04 0000 0100
32 $20 0010 0000 2 $02 0000 0010
64 $40 0100 0000 1 $01 0000 0001
128 $80 1000 0000 0 $00 0000 0000

Seperti yang terlihat pada kode kode program di atas, program terdiri dari dua prosedur dan satu bagian untuk memanggil prosedur yang akan di jalankan. Prosedur dengan nama r0 ditujukan untuk menghidupkan led berjalan dari kiri ke kanan dan prosedur dengan nama r1 sebaliknya.
Untuk prosedur r0, nilai awal i bernilai 128 (i:=128;) yang bertujuan untuk menghidupkan 1 led paling kanan, seperti pada tabel di atas. Perintah repeat pada rosedur r0 menunjukkan perulangan atau pergantian nilai i dengan operasi pembagian variabel i dengan 2 (i:=i div 2;). Seperti yang kita ketahui, pada sistem perhitungan komputer, jika suatu nilai variabel menghasilkan nilai yang baru maka nilai terakhirlah yang akan disimpan, contoh;
“Jika nilai awal I = 1 lalu dioperasikan dengan operasi perkalian I = I x 2, maka nilai terakhir I bukan 1 lagi, melainkan 2 karena 1 x 2 = 2.”
Sehingga urutan nilai i yang dihasilkan operasi (i:=i div 2;) adalah 128, 64, 32, 8, 4, 2, dan 1. Serta membuat kesan led berjalan dari kiri ke kanan dengan selang waktu 0.5 detik ”delay(500).”
Karena nilai byte terkecil untuk port parallel adalah 0 dan nilai terbesar adalah 255 maka jika operasi menghasilkan nilai I < 0 atau I > 255 maka port akan membaca nilai tersebut sebagai nol. Sehingga jika i = 0 (until i=0;) maka prosedur selesai dijalankan dan diteruskan ke prosedur lain sesuai dengan perintah pemanggilan proedur.
Begitu juga pada prosedur r1, nilai awal i = 1 maka led sebelah kiri yang akan hidup. Diteruskan dengan nilai i berikutnya, yaitu 2, 4, 8, 32, 64, dan 128 (berdasakan operasi I:=I*2;). Hasilnya, led akan terlihat berjalan dari kanan ke kiri dengan selang waktu 0.5 detik ”delay(500).”
Untuk soal A3 kita memberikan printah prosedur r0, r1, dan r0. untuk soal A4 kita dapat memberikan printah prosedur r0, r1, r0, dan r1.

Untuk 12 led, rangkaian tersebut memanfatkan 4 pin pc untuk mengoperasikan 4 led dari 12 led yang ada. Terdapat 4 kode yang merepresentasikan alamat 4 pin pc tersebut, yaitu port[$37a]:=$0a untuk pc0, port[$37a]:=$09 untuk pc1, port[$37a]:=$0f untuk pc2, port[$37a]:=$03 untuk pc3.
Secara sederhana, pin pc tidak dapat mengoperasikan 4 led tersebut secara bergantian tanpa menggunakan perintah delay. Untuk untuk itu ditambahkan perintah delay setelah perintah port[$37a].
Susunan perintah port[$37a] pada tiap prosedur disusun sedemikian rupa agar dapat mengoperasikan 4 led tersebut secara berurut sehingga led terlihat berjalan.

B. PRAKTIKUM 32 LED
Buat huruf H, A, dan P dari 32 led (led matriks 4 X 8)

Jawab.
Kode program untuk praktikum membuat huruf H adalah sebagai berikut:

program led32H;
uses crt;
begin
repeat
port[$378]:=$00; {memberi jalan arus kepada pc0}
port[$37a]:=$0a; {mengalirkan arus ke pc0}
delay(1);
port[$378]:=$f7; {memberi jalan arus kepada pc1 untuk data 4}
port[$37a]:=$09; {mengalirkan arus ke pc1}
delay(1);
port[$378]:=$f7; {memberi jalan arus kepada pc2 untuk data 4}
port[$37a]:=$0f; {mengalirkan arus ke pc2}
delay(1);
port[$378]:=$00; {memberi jalan arus kepada pc3}
port[$37a]:=$03; {mengalirkan arus ke pc3}
delay(1);
until keypressed;
end.

Kode program untuk praktikum membuat huruf A adalah sebagai berikut:

program led32A;
uses crt;
begin
repeat
port[$378]:=$00; {memberi jalan arus kepada pc0}
port[$37a]:=$0a; {mengalirkan arus ke pc0}
delay(1);
port[$378]:=$ee; {memberi jalan arus kepada pc1 utk data 1 & 5}
port[$37a]:=$09; {mengalirkan arus ke pc1}
delay(1);
port[$378]:=$ee; {memberi jalan arus kepada pc2 utk data 1 & 5}
port[$37a]:=$0f; {mengalirkan arus ke pc2}
delay(1);
port[$378]:=$00; {memberi jalan arus kepada pc3}
port[$37a]:=$03; {mengalirkan arus ke pc3}
delay(1);
until keypressed;
end.

Kode program untuk praktikum membuat huruf P adalah sebagai berikut:

program led32P;
uses crt;
begin
repeat
port[$378]:=$00; {memberi jalan arus kepada pc0}
port[$37a]:=$0a; {mengalirkan arus ke pc0}
delay(1);
port[$378]:=$ee; {memberi jalan arus kepada pc1 utk data 1 & 5}
port[$37a]:=$09; {mengalirkan arus ke pc1}
delay(1);
port[$378]:=$ee; {memberi jalan arus kepada pc2 utk data 1& 5}
port[$37a]:=$0f; {mengalirkan arus ke pc2}
delay(1);
port[$378]:=$e0; {memberi jalan arus kepada pc3 utk dat 1 s/d 5}
port[$37a]:=$03; {mengalirkan arus ke pc3}
delay(1);
until keypressed;
end.

Analisa program

Berdasarkan rangkaian 32 led, program yang dibuat untuk menghidupkan seluruh led adalah hanya dengan mengaktifkan saluran pc seperti contoh program berikut:

program led32;
uses crt;
begin
repeat
port[$37a]:=$0a;
delay(1);
port[$37a]:=$09;
delay(1);
port[$37a]:=$0f;
delay(1);
port[$37a]:=$03;
delay(1);
until keypressed;
end.

Program tersebut menghidupkan semua led secara serentak dengan bantuan perintah repeat dan delay(1) yang berarti mengulang eksekusi program dengan selang waktu 1/1000 detik sehingga mata kita tidak dapat melihat perulangan yang terjadi dan memberi kesan led terus menyala tanpa redupan.

Hal ini disebabkan karena saluran pc dikoneksikan ke kaki katoda led dan saluran data dikoneksikan pada kaki anoda led agar arus dapat melewati led dan menyalakan led (bias forward) selagi saluran data berada pada perintah port[$378]:=$00; ataupun data kosong. Namun ketika saluran data diberi nilai, misalnya port[$378]:=$ff; maka akan terjadi bias reserve yang menyebabkan led redup. Hal ini dapat dimanfaatkan untuk mengendalikan pengoperasian led, misalnya menyalakan beberapa led untuk membentuk suatu huruf pada tampilan 32 led.

C. PRAKTIKUM 7 SEGMENT
Membuat teks sebagai berikut “ FIS 2007 “

Komponen 7 segmen berjumlah satu, sehingga kode programnya sebagai berikut:

program fis_2007;
uses crt;
begin
port[$378]:=$71; {mengaktifkan data 1, 5, 6, 7 / a, f, g}
delay(500);
port[$378]:=$06; {mengaktifkan data 2, 3 / b, c}
delay(500);
port[$378]:=$6d; {mengaktifkan data 1, 3, 4, 6, 7 /a, c, d, f, g}
delay(500);
port[$378]:=$5b; {mengaktifkan data 1, 2, 4, 1, 3/ a,b,d,e,g}
delay(500);
port[$378]:=$3f; {mengaktifkan data 1, 2,3,4, 5, 6/a,b,c,d,e,f}
delay(500);
port[$378]:=$00; {data low}
delay(100);
port[$378]:=$3f; {mengaktifkan data 1, 2,3,4, 5, 6/a,b,c,d,e,f }
delay(500);
port[$378]:=$07; {mengaktifkan data 1, 2, 3/a,b,c}
delay(500);
end.

Analisa program:

Berdasarkan rangkaian dasar seven segmen,

hanya digunakan printah untuk mengaktifkan port data saja, yaitu port[$378]:=$xx;. Misalnya untuk membentuk angka 8, kita dapat mengisi data port dengan nilai $7f, untuk membuat angka 5 kita dapat mengisi data port dengan nilai $6D dan seterusnya.

wasalam; semoga bermanfaat :-}

Comments »

The URI to TrackBack this entry is: http://mrizki.blogsome.com/2007/12/01/kode-program-led8-berjalan-led12-berjalan-led32-h-p-a-seven-segmen-turbo-pascal/trackback/

No comments yet.

RSS feed for comments on this post.

Leave a comment

Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>



Anti-spam measure: please retype the above text into the box provided.