Array? Apaan sih array itu,
ARRAY bukan "ALLAY", kecuali untuk orang cadel.. hehhehehe.
Array
adalah himpunan elemen (variable) dengan tipe yang sama dan disimpan secara
berurutan dalam memory yang ditandai dengan memberikan index pada suatu nama
variable. Contohnya, kita dapat menyimpan 5 nilai dengan tipe int tanpa
harus mendeklarasikan 5 identifier variabel yang berbeda. Perhatikan contoh
dibawah ini :
Inisialisasi Array
Int
uangJajan [5]={ 100,200,300,400,500 };
Dan
nilai array tergantung dari indeksnya
uangJajan
[0] nilainya 100
uangJajan
[1] nilainya 200
uangJajan
[2] nilainya 300
uangJajan
[3] nilainya 400
uangJajan
[4] nilainya 100
coba
tanpa array..
Int
uangJajan_0 = 100
Int
uangJajan_1 = 200
Int
uangJajan_2 = 300
Int
uangJajan_3 = 400
Int
uangJajan_4 = 500
5 kali inisialisasi,,
kalo
pusing sama teori langsung kita praktekkan saja. Agar dari praktek menjadi
Teori….
Ok
saya contohkan array 3 dimensi untuk menampilkan nilai di 7 segment, lah kok 7
segment saja pakai array 3 dimensi?? Siapa tau ada dosen yang memberikan tugas
seperti ini, lumayan lah tinggal copas..
7
segment? Sudah tau kan 7 segment itu apa? Kalau belum silakan cari referensinya
di mbah google.
Gambar
d atas keterangan pin dari 7 segment.
Dan
saya buat data Tabel untuk menyalakan 7 segment.
Jadi
pada saat kita menulis PORTC=0x66, maka 7 segment akan membentuk angka “4”
Lewat
simulasi proteus perhatikan gambar di bawah ini..!!
Berikut
listing progam di Codevision Avr
1: #include <mega16.h>
2: #include <delay.h>
3: //tabel untuk 7 segment
4: unsigned char s_segment [10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7D, 0x07, 0x7F,0x6f};
5: unsigned char data[1][2][10];
6: int ayam;
7: int bebek;
8: const int delay=500;
9: void main(void)
10: {
11: // inisialisasi port
12: DDRC=255;
13: for (ayam=0;ayam<10;ayam++){
14: data[0][0][ayam]=s_segment[ayam];
15: } // akhir for
16: bebek=9;
17: for (ayam=0;ayam<10;ayam++){
18: data[0][1][ayam]=s_segment[bebek];
19: bebek--;
20: } // akhir for
21: PORTC= data[0][0][9];
22: while (1)
23: {
24: for (ayam=0;ayam<10;ayam++){
25: PORTC=data[0][0][ayam];
26: delay_ms(delay);
27: } // akhir for
28: for (ayam=0;ayam<10;ayam++){
29: PORTC=data[0][1][ayam];
30: delay_ms(delay);
31: } // akhir for
32: }; // akhir while(1)
33: }; // akhir void
Penjelasan progam
Kita
buat table untuk 7 segmentnya
unsigned
char s_segment [10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7D, 0x07,
0x7F,0x6f};
s_segment[0]=0x3f
angka 0
s_segment[1]=0x06
angka 1
.................
s_segment[9]=0x6f angka 9
kita
buat array 3 dimensi(siap2 pusing)
unsigned
data[1][2][10];
berarti
ada data[0] [0 dan 1][0 s/d 9 ]
selanjutnya
kita pindahkan data table 7 segment untuk menghitung maju ke array
for (ayam=0;ayam<10;ayam++){
data[0][0][ayam]=s_segment[ayam];
} // akhir for
Data[0][0][ayam]=
data[0][0][ayam]=s_segment[ayam], berarti jika nillai ayam=0, maka pada saat
mengeksekusi data[0][0][ayam] nilainya adalah 0x3f (s_segment[0]),
Jika
nilai ayam=1
data[0][0][ayam]
nilainya adalah 0x06 (s_segment[1])
Begitu
juga seterusnya selama nilai variable ayam kurang dari 10.
selanjutnya
kita pindahkan data table 7 segment untuk menghitung mundur ke array
bebek=9;
for (ayam=0;ayam<10;ayam++){
data[0][1][ayam]=s_segment[bebek];
bebek--;
} // akhir for
data[0][1][ayam]=s_segment[bebek],
sama seperti diatas, bedanya ada variable bebek.. coba perhatikan lagi di depan
layar computer anda (Konsentrasi….!!!!!!!!).
nilai
bebek = 9
berarti
jika nilai ayam = 0, maka data[0][1][ayam]= 0x6f (s_segment[9])
bebek
--, nilai bebek = bebek-1, berarti nilai bebek sekarang adalah 8..
jika
nilai ayam = 1, maka data[0][1][ayam]= 0x7f (s_segment[8])
dst
selama nilai variabel ayam kurang dari 10..
sekarang
berarti ada 2 data
pertama
data 7 segment untuk menghitung maju pada data[0][0] dan kedua
data 7 segment untuk menghitung mundur data[0][1] .
Lah
kok Cuma 2 tanda [], sebelumnya kan ada 3 tanda [],, silakan anda cari materi
array 3 dimensi bahasa C di mbah goggle… pasti di jawab kok sama mbah google,
kalo ga di jawab, coba cek koneksi internet anda.. hehehhe
Mari
kita tampilkan data arraynya untuk menghitung maju pada 7 segment
for (ayam=0;ayam<10;ayam++){
PORTC=data[0][0][ayam];
delay_ms(delay);
} // akhir for
Jika nilai ayam =0 maka nilai PORTC adalah indeks ke 0 dari data [0][0] nilainya adalah 0x3f
Dst selama nilai variabel array kurang dari 10.
tampilkan data arraynya untuk menghitung mundur pada 7 segment.
for (ayam=0;ayam<10;ayam++){
PORTC=data[0][1][ayam];
delay_ms(delay);
} // akhir for
Sama seperti sebelumnya tapi datanya bebeda. jika nilai = 0, maka nilai dari PORTC=0x6f..
dst sampai nilai ayam <10
Selesai
Kenapa
saya menulis variabelnya ayam/ bebek? kadang pemula seperti saya agak sulit
memahami sebuah variabel. Misalakan int a? apakah harus a? tidak, anda dapat
mengganti a dengan apa saja sesuai dengan peraturan Bahasa C,, buat lah koding
itu menyenangkan….bahkan “LUCU”
Satu
lagi 7 segment yang saya gunakan tipe katoda, jadi kalau ingin menggunakan tipe
anoda.. silakan ganti data arraynya.. atau pusing di progam? Tambahkan saja
gerbang not (7404) pada output mikro… tinggal pilih ngakalin di software atau
hardware??
Download
di sini contoh progam dan simulasinya..
password
zip : cintakupadamutakakanpernahpadam
1 komentar :
mantap bikin pusing klo yang belum ngerti, padahal kalo cuma satu baris segmen tidak perlu pake array 3d....
Posting Komentar