SmartDotMatrix
Ver 2.0
e-Technology Center 2010
1. Teori Dasar Dot Matrik 5x7
Dot matrik 5 x7 memilki arti bahwa 1
dot matrik berukuran 5 kolom x 7 baris susunan LED. Jadi 1 dot matriki terdapat
35 buah LED. Berikut adalah ilustrasi 3 buah dot matrik yang sudah terpakai untuk
menampilkan beberapa karakter.
baris 7
baris 0
kolom
1 kolom 5 1 dot matrik
spasi antar karakter
Gambar 1. Display Dot Matrik 5x7
Setiap karakter antar dot matrik sebaiknya diberi
spasi agar karakter yang tampil terlihat jelas dan tidak tampak berdekatan.
Dalam setiap display dotmatrik selalu terdapat istilah baris dan kolom. Jumlah
baris selalu sama dengan 7. Namun jumlah kolom sebanyak jumlah dot matrik
dikali dengan 5 kolom/dot matrik. Pada gambar 1 di atas terdapat 15 kolom.
Prinsip kerja dot matrik
sebenarnya menggunakan system Scanning kolom. Scanning kolom adalah pada satu
waktu dari sekian banyak kolom pada gambar 1 hanya satu kolom yang menyala
merah. Karena proses pengulangan penyalaan kolom dari kolom 1 sampai kolom 15
begitu cepat dan berulang-ulang maka huruf ABH tampak nyala bersamaan. Proses
scanning kolom yang cepat menipu mata atau penglihatan manusia sehingga mata
menangkap huruf ABH seolah-olah menyala secara bersamaan. Apabila proses
scanning kolom dipelankan sampai mata dapat melihat, maka pergeseran penyalaan
kolom akan terlihat satu persatu.
2. Driver 8 Dot Matrik.
B7 K40 K1
Colck Data SIPO
Gambar 2. Diagram
Blok Driver 8 Dot Matrik
Dot matrik pada gambar 2 dapat menyala semua bila PORT B berlogika 1 atau 5 Volt dan Ouput SIPO (K1 sampai K40) berlogika 0 atau 0 volt. Namun penyalaan semua dot matrik dengan cara ini dapat mengakibatkan konsumsi daya listrik yang cukup tinggi dan biasanya nyala dot matrik tidak begitu terang dibandingkan dengan teknik scanning. IC mikrokontroler yang digunakan adalah tipe AVR ATmega16 dengan crystal oscillator 8 MHz.
Buffer pada blok diagram di atas digunakan untuk memperkuat arus yang dikonsumsi oleh LED dot matrik sekaligus memproteksi pin PORT B agar tidak mudah rusak bila proses scanning berlangsung. Tipe IC buffer yang digunakan adalah 74HC573.
3.
Cara Kerja IC 74LS164 ( SIPO
).
Pada blok SIPO terdapat IC SIPO 5 buah untuk 40 kolom. Sebab 1 IC SIPO memilki output 8 pin atau bit, 1 pin clock dan 2 pin data yaitu A dan B. Berikut adalah ilustrasi penjelasan IC SIPO tipe 74LS164 yang telah digunakan.
Gambar 3. Gambar IC 74LS164
(Serial Input Parallel Output)
Dalam penggunaan IC SIPO ini setiap pin Data A dan B selalu digabung jadi satu. Kelima IC SIPO pada gambar 2 disusun secara seri maksudnya adalah pin output O8 IC SIPO pertama masuk ke pin Data A IC SIPO kedua dan seterusnya sampai IC SIPO kelima. Kemudian semua pin Clock kelima IC SIPO dihubungkan menjadi satu.
Board yang digunakan terdiri dari 2 bagian seperti
terlihat pada lampiran. Board pertama hanya berisi socket untuk mengubungkan
jalur – jalur pada setiap dotmatrik (Gambar Skematik 1 pada lampiran). Board
pertama dan board kedua terhubung secara vertikal melalui pin header. Board kedua berisi driver
DotMatrik yang terdiri atas IC SIPO dan IC buffer (Gambar Skematik 2 a pada
lampiran) dan di board kedua ini tergabung sistem minimum mikrokontroller
AVR-ATMega16 (Gambar Skematik 2 b pada lampiran).
Jika anda mengamati lampiran terlihat bahwa
skematik driver dot matrik terhubung dengan system minimum mikrokontroller
AVR-ATmega16.Hanya pin Data A IC pertama yang terhubung dengan pin PORT A.1
mikrokontroler dan pin Clock semua IC SIPO terhubung ke pin PORT A.2
mikrokontroler.
Apabila PORT A.1 diberi
logika 1 dan IC SIPO di-clock sebanyak 40 kali
LAMPIRAN
2.Skematik Driver Display 8 Dot Matrik
a. Rangkaian
Buffer dan SIPO
b.
Rangkaian Sistem Minimum Mikrokontroler ATmega 16
3.
Source Code Driver Display 8 Dot Matrik
/*****************************************************
Chip type : ATmega16L
Program type : Application
Clock frequency : 8.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
#include
<mega16.h>
#include <delay.h>
#include
<stdlib.h>
#include <stdio.h>
#define pulsa PORTA.2
//data SIPO
#define klok
PORTA.1 //clock SIPO
bit clk;
unsigned char konfersi,data;
unsigned char data1[40],s_kol[500];
unsigned char s_kar[100]="HELLO WORLD"; //ketik disini kalimat
yang akan ditampilkan yaitu HELLO WORLD max 100
karakter
unsigned int loop1,loop2,x;
int batas,y,loop3;
//Timer 0 output compare
interrupt service routine
interrupt [TIM0_COMP] void
timer0_comp_isr(void)
{
//=========data sipo
dot matrik
if(loop1==0)
pulsa=0; //sipo aktif
low n baris high agar dot nyala
else
pulsa=1; //sipo aktif
low n baris high agar dot nyala
//======clk paralel atur duty cycle
if(clk==0)
{ clk=1;
data=data1[loop1];
}else
{ clk=0;
data=0;
loop1++;
}
klok=clk;
PORTB=data;
if(loop1>=40) //jumlah kolom dot matrik yaitu 40
{
loop1=0;
loop2++;
if(loop2>=15) //pengatur
kecepatan geser tulisan
{
loop2=0;
for(x=39;x>=1;x--)
data1[x]=data1[x-1];
data1[0]=s_kol[loop3];
loop3++;
if(loop3>=batas)
loop3=0;
}
}
}
void konvert(void) //fungsi pengkorvesi tiap huruf ke dalam
{
switch(konfersi)
{ //font huruf
besar
case 'A':
s_kol[y++]=63;
s_kol[y++]=200;
s_kol[y++]=200;
s_kol[y++]=200;
s_kol[y++]=63;
break;
case 'B':
s_kol[y++]=255;
s_kol[y++]=201;
s_kol[y++]=201;
s_kol[y++]=201;
s_kol[y++]=62;
break;
...
case 'O':
s_kol[y++]=190;
s_kol[y++]=193;
s_kol[y++]=193;
s_kol[y++]=193;
s_kol[y++]=190;
break;
case 'P':
s_kol[y++]=255;
s_kol[y++]=200;
s_kol[y++]=200;
s_kol[y++]=200;
s_kol[y++]=176;
break;
case 'Q':
s_kol[y++]=190;
s_kol[y++]=193;
s_kol[y++]=201;
s_kol[y++]=197;
s_kol[y++]=190;
s_kol[y++]=1;
break;
case 'R':
s_kol[y++]=255;
s_kol[y++]=200;
s_kol[y++]=204;
s_kol[y++]=202;
s_kol[y++]=177;
break;
case 'S':
s_kol[y++]=50;
s_kol[y++]=201;
s_kol[y++]=201;
s_kol[y++]=201;
s_kol[y++]=38;
break;
case 'T':
s_kol[y++]=192;
s_kol[y++]=192;
s_kol[y++]=255;
s_kol[y++]=192;
s_kol[y++]=192;
break;
case 'U':
s_kol[y++]=254;
s_kol[y++]=1;
s_kol[y++]=1;
s_kol[y++]=1;
s_kol[y++]=254;
break;
case 'V':
s_kol[y++]=252;
s_kol[y++]=130;
s_kol[y++]=129;
s_kol[y++]=130;
s_kol[y++]=252;
break;
case 'W':
s_kol[y++]=255;
s_kol[y++]=2;
s_kol[y++]=4;
s_kol[y++]=8;
s_kol[y++]=4;
s_kol[y++]=2;
s_kol[y++]=255;
break;
case 'X':
s_kol[y++]=227;
s_kol[y++]=148;
s_kol[y++]=136;
s_kol[y++]=148;
s_kol[y++]=227;
break;
case 'Y':
s_kol[y++]=224;
s_kol[y++]=16;
s_kol[y++]=15;
s_kol[y++]=16;
s_kol[y++]=224;
break;
case 'Z':
s_kol[y++]=227;
s_kol[y++]=197;
s_kol[y++]=201;
s_kol[y++]=209;
s_kol[y++]=227;
break;
//font symbol-simbol
case '!':
s_kol[y++]=184;
s_kol[y++]=253;
s_kol[y++]=184;
break;
...
case '<':
s_kol[y++]=8;
s_kol[y++]=20;
s_kol[y++]=34;
break;
case '>':
s_kol[y++]=34;
s_kol[y++]=20;
s_kol[y++]=8;
break;
case '[':
s_kol[y++]=255;
s_kol[y++]=193;
break;
case ']':
s_kol[y++]=193;
s_kol[y++]=255;
break;
case '{':
s_kol[y++]=8;
s_kol[y++]=190;
s_kol[y++]=193;
break;
...
//clear display
for(x=0;x<=39;x++)
data1[x]=0;
//konversi huruf ke data
byte-byte dot matrik
x=0;
y=1;
do{ konfersi=s_kar[x];
konvert(); //memanggil fungsi convert untuk mengkonversi
huruf
x++;
}while(s_kar[x]!=0);
batas=y+60;
pulsa=0;
OCR0=100; //nilai timer
0
while (1)
{ TCCR0=0x09; //timer 0 diaktifkan
};
}
Miliki Paket Lengkap Kit Demo
SmartDotMatrix ini lengkap dengan alat dan kode seharga Rp 4.900.000