PIC 16F877A
Interface Dot Matrix
1. Tujuan [Kembali]
Mempelajari bagaimana cara merangkai suatu rangkaian yang menggunakan
mikrokontroler dan dihubungkan dengan Dotmatrix dengan programnya.
2. Alat [Kembali]
2.1 Mikrokontroler PIC16F877A.
2.2 DotMatrix
2.3 Switch
3. Teori [Kembali]
3.1. Pengertian Mikrokontroler PIC 16F877A
PIC adalah mikrokontroler dari Microchip Technology, dimana Peripheral Interface Controller memiliki arsitektur Harvard dan merupakan jenis RISC (Reduced Instruction Set Computing).
3.1.1 Fitur-Fitur PIC16F877A.
1. Memiliki Instruksi sebanyak 35 buah.
2. Masing-masing instruksi dieksekusi dalam satu siklus mesin kecuali untuk instruksi percabangan yaitu dua siklus.
3. Kecepatan operasi masukan clock dari DC hingga 20MHz.
4. Kapasitas memori program berukuran 8k x 14 words.
5. Kapasitas RAM 268 byte.
6. Kapasitas memory EEPROM berukuran 256 byte.
2. Masing-masing instruksi dieksekusi dalam satu siklus mesin kecuali untuk instruksi percabangan yaitu dua siklus.
3. Kecepatan operasi masukan clock dari DC hingga 20MHz.
4. Kapasitas memori program berukuran 8k x 14 words.
5. Kapasitas RAM 268 byte.
6. Kapasitas memory EEPROM berukuran 256 byte.
3.1.2 Pin Out PIC16F877A.
-Memiliki 5 PORT I/O (PORTA 6 pin, PORTB 8 pin, PORTC 8 pin, PORTD 8 pin, PORTE 3 pin).-Memiliki 3 buat timer
-Memiliki 2 buah keluaran PWM.
-Komunikasi serial singkron menggunakan SPI dan I2C.
-Komunikasi USART.
3.1.3 Pemograman PIC16F877A.
Pemograman PIC ini diprogram menggunakan bahasa C dan dapat menggunakan kompiler MikroC for PIC.
3.1.4 Rangkaian Dasar Sistem Mikrokontroler PIC16F877A.
rangkaian crystal sebagai clock atau oscilator eksternal sebagai jantung untuk memberikan kecepatan eksekusi dari mikrokontroler tersebut.
3.2. Pengertian Dot Matrix
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.
Dot
matrix banyak digunakan untuk menampilkan informasi pada mesin-mesin,
jam, indikator keberangkatan kereta api dan perangkat lainnya yang
membutuhkan display sederhana untuk resolusi yang terbatas. Display ini
terdiri dari LED yang tersusun secara matrix berbentuk segi empat
(bentuk selain segi empat juga ada) sehingga dengan menyalakan/mematikan
lampu yang diinginkan, teks atau grafik yang dapat ditampilkan.
Pengendali dot matrix mengkonversi instruksi dari decoder ke dalam
sinyal elektris yang dapat menyalakan atau mematikan lampu sehingga
tampilan yang diinginkan dapat terjadi.
4. Rangkaian [Kembali]
5. Program [Kembali]
void main() {
TRISB=0x00; //PORTB Sebagai Output
TRISC=0x00; //PORTC sebagai Output
PORTB=0x00; //nilai awal PORTB low
PORTC=0x00; //nilai awal PORTC low
TRISD=0x11; //PORTD sebagai Input
PORTD=0x00; //nilai awal PORTD low
while(1){
if(PORTD.f0==1){ // jika switch 1 aktif, maka
PORTC=0x9c; // LED kolom 1,2,6,7 bergerak ke bawah
PORTB=0x01;
delay_ms(5);
PORTB=0x02;
delay_ms(5);
PORTB=0x04;
delay_ms(5);
PORTB=0x08;
delay_ms(5);
PORTB=0x10;
delay_ms(5);
PORTC=0xc9; // LED kolom 2,3,5,6 bergerak ke bawah
PORTB=0x01;
delay_ms(5);
PORTB=0x02;
delay_ms(5);
PORTB=0x04;
delay_ms(5);
PORTB=0x08;
delay_ms(5);
PORTB=0x10;
delay_ms(5);
PORTC=0xf7; // LED kolom 5 bergerak ke bawah
PORTB=0x01;
delay_ms(5);
PORTB=0x02;
delay_ms(5);
PORTB=0x04;
delay_ms(5);
PORTB=0x08;
delay_ms(5);
PORTB=0x10;
delay_ms(5);
}
else if(PORTD.f1==1){ // jika switch 2 aktif, maka
PORTB=0x1f; // LED bergerak dari tengah ke sisi kiri dan kanan
PORTC=0xf7;
delay_ms(5);
PORTC=0xeb;
delay_ms(5);
PORTC=0xdd;
delay_ms(5);
PORTC=0xbe;
}
else {
PORTB=0x00;
PORTC=0xff; }
}
}
TRISB=0x00; //PORTB Sebagai Output
TRISC=0x00; //PORTC sebagai Output
PORTB=0x00; //nilai awal PORTB low
PORTC=0x00; //nilai awal PORTC low
TRISD=0x11; //PORTD sebagai Input
PORTD=0x00; //nilai awal PORTD low
while(1){
if(PORTD.f0==1){ // jika switch 1 aktif, maka
PORTC=0x9c; // LED kolom 1,2,6,7 bergerak ke bawah
PORTB=0x01;
delay_ms(5);
PORTB=0x02;
delay_ms(5);
PORTB=0x04;
delay_ms(5);
PORTB=0x08;
delay_ms(5);
PORTB=0x10;
delay_ms(5);
PORTC=0xc9; // LED kolom 2,3,5,6 bergerak ke bawah
PORTB=0x01;
delay_ms(5);
PORTB=0x02;
delay_ms(5);
PORTB=0x04;
delay_ms(5);
PORTB=0x08;
delay_ms(5);
PORTB=0x10;
delay_ms(5);
PORTC=0xf7; // LED kolom 5 bergerak ke bawah
PORTB=0x01;
delay_ms(5);
PORTB=0x02;
delay_ms(5);
PORTB=0x04;
delay_ms(5);
PORTB=0x08;
delay_ms(5);
PORTB=0x10;
delay_ms(5);
}
else if(PORTD.f1==1){ // jika switch 2 aktif, maka
PORTB=0x1f; // LED bergerak dari tengah ke sisi kiri dan kanan
PORTC=0xf7;
delay_ms(5);
PORTC=0xeb;
delay_ms(5);
PORTC=0xdd;
delay_ms(5);
PORTC=0xbe;
}
else {
PORTB=0x00;
PORTC=0xff; }
}
}
Tidak ada komentar:
Posting Komentar