- Memahami mengenai rangkaian dot matrik dan prinsip kerjanya
- Dapat membuat rangkaian dot matrik
- ATMEGA32
- Crystal
- Capasitor
- Dot Matrix 5x7
- Resistor
- Button
Dot matrix adalah susunan titik-titik dua dimensi yang digunakan untuk menampilkan
karakter-karakter, simbol atau gambar. Dahulu dot matrix digunakan pada printer-printer
tua dan banyak perangkat tampilan digital. Pada printer, titik-titik tersebut adalah daerah
yang diredupkan. Sedangkan pada display, titik-titik tersebut adalah daerah yang
bercahaya. Sebagaimana pada LED atau CRT display cara kerjanya titik-titik yang
sebelumnya mati, bercahaya sesuai sesuai obyek yang diinginkan.
Gambar 1 Rangkaian Dot Matrix
Rangkaian di dalam dot matrix 5x7 untuk common anoda dan common catoda adalah sbb:
Kaki reset pada ATMega32 berguna untuk mengulangi proses pembacaan program pada AT Mega setelah diberi program di CVAVR. Kaki XTAL1 dan XTAL2 dihubungkan ke crystal yang berguna untuk memberikan clock eksternal yang stabil nilainya. Kaki pada Port B dan Port C digunakan sebagai output yang akan ditampilkan ke DOT Matrix 5x7. Jadi dihasilkan output angka desimal dimulai dari 9 hingga 0 dan setelah sampai pada angka 0 akan terjadi looping sehingga mengulang dari angka 9 hingga 0 kembali.
#include <delay.h>
#include <string.h>
unsigned int i,j,x,y,z;
unsigned int angka;
char urut;
char kolom[7];
//Baris = PORTB
//KOLOM = PORTC
void nyala_led()//fungsi untuk menyalakan baris
{
if (angka==0)
{
if (urut==0){urut=~(0x3E);}
if (urut==1){urut=~(0x51);}
if (urut==2){urut=~(0x49);}
if (urut==3){urut=~(0x45);}
if (urut==4){urut=~(0x3E);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==1)
{
if (urut==0){urut=~(0x00);}
if (urut==1){urut=~(0x21);}
if (urut==2){urut=~(0x7F);}
if (urut==3){urut=~(0x01);}
if (urut==4){urut=~(0x00);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==2)
{
if (urut==0){urut=~(0x27);}
if (urut==1){urut=~(0x49);}
if (urut==2){urut=~(0x49);}
if (urut==3){urut=~(0x49);}
if (urut==4){urut=~(0x31);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==3)
{
if (urut==0){urut=~(0x22);}
if (urut==1){urut=~(0x41);}
if (urut==2){urut=~(0x49);}
if (urut==3){urut=~(0x49);}
if (urut==4){urut=~(0x36);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==4)
{
if (urut==0){urut=~(0x0C);}
if (urut==1){urut=~(0x14);}
if (urut==2){urut=~(0x24);}
if (urut==3){urut=~(0x7F);}
if (urut==4){urut=~(0x04);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==5)
{
if (urut==0){urut=~(0x72);}
if (urut==1){urut=~(0x51);}
if (urut==2){urut=~(0x51);}
if (urut==3){urut=~(0x51);}
if (urut==4){urut=~(0x4E);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==6)
{
if (urut==0){urut=~(0x1E);}
if (urut==1){urut=~(0x29);}
if (urut==2){urut=~(0x49);}
if (urut==3){urut=~(0x49);}
if (urut==4){urut=~(0x46);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==7)
{
if (urut==0){urut=~(0x41);}
if (urut==1){urut=~(0x42);}
if (urut==2){urut=~(0x44);}
if (urut==3){urut=~(0x48);}
if (urut==4){urut=~(0x70);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==8)
{
if (urut==0){urut=~(0x36);}
if (urut==1){urut=~(0x49);}
if (urut==2){urut=~(0x49);}
if (urut==3){urut=~(0x49);}
if (urut==4){urut=~(0x36);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
else if (angka==9)
{
if (urut==0){urut=~(0x30);}
if (urut==1){urut=~(0x49);}
if (urut==2){urut=~(0x49);}
if (urut==3){urut=~(0x4A);}
if (urut==4){urut=~(0x3C);}
if (urut==5){urut=~(0x00);}
if (urut==6){urut=~(0x00);}
if (urut==7){urut=~(0x00);}
}
}
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0x00;
y=0;
PORTC=~(0xFE);
while (1)
{
angka=9;
kolom[0]=~(0xFE);
kolom[1]=~(0xFD);
kolom[2]=~(0xFB);
kolom[3]=~(0xF7);
kolom[4]=~(0xEF);
kolom[5]=~(0xDF);
kolom[6]=~(0xBF);
kolom[7]=~(0x7F);
for (z=0;z<10;++z)
{
//for (x=0;x<10;++x) //untuk menggeser (non aktif)
//{
for (i=0;i<100;++i)
{
y=x;
for (j=0;j<8;++j)
{
//angka=0;
PORTC=kolom[j];
urut=y;
nyala_led();
PORTB=urut;
delay_ms(1);
y=y+1;
//PORTC=kolom[j+1];
if (y==8)
{
y=0;
}
}
PORTC=~(0xFE);
}
//}
//PORTB=0xFF;
angka=angka-1;
delay_ms(1000);
};
}
}
Referensi :
- John Crisp, Introduction to Microprosessor and Microcontrollers, 2nd edition, Newnessm 2004.
- Darwison, 2007 “ Teori, Rancangan ,Simulasi Dan Aplikasi Mikroprosesor Dan Mikrokontroller” ISBN: 978-602-9487-09-1”, CV Ferila, Padang
Tidak ada komentar:
Posting Komentar