LED matrix merupakan sekumpulan LED yang dipasang secara kolom dan baris. Berikut gambar rangkaian LED matrix secara umum:
Rangkaian LED matrix
Berdasarkan
gambar rangkaian diatas maka LED akan menyala apabila baris (R1-R8) diberi Vcc
dan Kolom (C1-C8) diberi Ground. Untuk dapat menampilkan karakter yang
diinginkan maka kolom atau baris harus diberi logic secara bergantian. Karena
jika tidak maka LED matrix tidak dapat menampilkan karakter tertentu. Sebagai
contoh untuk menampilkan angka 0 maka pada LED matrix akan seperti gambar
berikut:
Angka 0 pada LED matrix
Kita misalkan
kolom adalah anoda dan baris adalah katoda pada LED. Pertama-tama, kolom A0
diberi logic 1, dan baris B0-B7 diberi logic 1, sehingga semua LED pada kolom
A0 mati. Selanjutnya kolom A1, sama seperti kolom A0. Lalu saat giliran kolom
A2 diberi logic 1, maka baris B0-B7 diberikan logic sebagai berikut berurutan
dari B0-B7, 00111110. Lalu A3 diberi logic 1, maka baris B0-B7 diberi logic,
01000001, dan seterusnya hingga A7.
Wiring untuk LED
Matriks yang digunakan adalah menggunakan dua port pada ATMega8535. Berikut
wiringnya :
Wiring LED Matriks pada Proteus
Untuk dapat
lebih mudah membuat pola pada LED Matriks, berikut merupakan file Microsoft
Excel untuk menentukan code array yang akan diinputkan pada program nantinya :
Pertama buka file yang di download dari link di atas, jika tampil
tulisan “enable editing” maka klik label tersebut. Pada kotak-kotak, kamu dapat
membuat pola yang kamu inginkan. Di sebelah kanan merupakan code hex untuk
diinput pada array program.
Berikut adalah program LED Matrix :
/*LED MATRIKS 8x8*/
#include <mega8535.h>
#include <delay.h>
#include <matrix.h>
// Declare your global variables here
int i;
//2 Dimensional Array, x[Rows][Columns]
unsigned int data_0[2][8] = {{0x00, 0x00, 0x7C, 0x82, 0x82, 0x82, 0x7C,
0x00},{0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}}; //array tampilan angka
nol
unsigned int data_1[2][8] = {{0x00, 0x00, 0x80, 0x84, 0xFE, 0x80, 0x80,
0x00},{0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}};//array tampilan angka
1
unsigned int data_2[2][8] = {{0x00, 0x00, 0xF2, 0x92, 0x92, 0x92, 0x9E,
0x00},{0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}};//array tampilan angka
2
unsigned int data_3[2][8] = {{0x00, 0x00, 0x92, 0x92, 0x92, 0x92, 0x6C,
0x00},{0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}};//array tampilan angka
3
unsigned int data_4[2][8] = {{0x00, 0x00, 0x20, 0x30, 0x28, 0x24, 0xFE,
0x00},{0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}};//array tampilan angka
4
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out
Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0
State0=0
PORTA=0x00;
DDRA=0xFF;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out
Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0
State0=0
PORTC=0x00;
DDRC=0xFF;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTD=0x00;
DDRD=0x00;
while (1)
{
//PORTA Columns, Vcc
//PORTC Rows, Gnd
// Place your code here
display(data_0, 1000,
0);//memanggil header display(array, delay, inf)
display(data_1, 1000, 0);
display(data_2, 1000, 0);
display(data_3, 1000, 0);
display(data_4, 1000, 0);
}
}
Pada program diatas unsigned int data merupakan array 2d yang dibuat
untuk menampilkan pola tertentu pada LED Matriks. Pada while loop dipanggil
sebuah fungsi dari header yaitu display. Fungsi ini berisikan parameter array
yang dipakai, delay, dan infinity delay (seterusnya memanggil fungsi).
Parameter pertama kita masukkan array yang kita tentukan, parameter kedua kita
masukkan delay untuk berpindah ke line selanjutnya (tidak berpengaruh ketika
parameter ketiga bernilai 1), parameter ketiga untuk selamnya memanggil fungsi
tersebut.
Program diatas menggunakan header buatan yaitu matrix.h, berikut adalah
headernya :
void display(unsigned int data[][8], float delay, int inf){
int j = 0, i;
while(1){
j++;
if(j == delay/8 &&
!inf){
j = 0;
break;
}
for(i = 0; i < 8; i++){
PORTA =
data[1][i];//scanning port
PORTC =
~data[0][i];//nilai array yang diinputkan
delay_ms(1);
}
}
}
No comments:
Post a Comment