Upload
novrizaaa
View
440
Download
3
Embed Size (px)
DESCRIPTION
APLIKASI LAMPU LED DENGAN MIKROKONTROLLERRANGKAIAN LAMPU LED PEMROGRAMAN MENYALAKAN LEDLED BERKEDIP
Citation preview
APLIKASI LAMPU LED DENGAN MIKROKONTROLLER AT89S51 DENGAN C
Posted by iswanto
Sering kali kita mendengar tentang komponen LED, yaitu sebutan untuk komponen yang dapat menyala. Tetapi apakah sebenarnya LED itu, LED adalah singkatan untuk “Light Emitting Diode” atau dalam bahasa indonesia berarti Dioda yang Memancarkan Cahaya. LED seperti dioda yang lain juga memiliki 2 kutub, Anoda atau Anode (A) dan Katoda atau Cathode (C), seperti yang terlihat pada gambar 3.1. Ketika ada arus listrik mengalir dari Anoda ke Katoda (A = ‘+’ dan C = ‘-‘), maka LED akan memancarkan cahaya. Namun ketika arus listrik dibalik (A = ‘-‘ dan C = ‘+’), maka LED akan mem-blok arus listrik seperti pada dioda yang lainnya. Untuk lebih jelas tentang mengakses led dengan mikrokontroler, klik disini
APLIKASI LAMPU LED DENGAN
MIKROKONTROLLER
1. RANGKAIAN LAMPU LED
Rangkaian minimum untuk menghidupkan 8 LED melalui Port 0 ditunjukan pada Gambar 1. yang
perlu diperhatikan adalah konfigurasi rangkaian LED yaitu Common Anode (CA) artinya untuk
menghidupkan LED pada Port 3, port 3 harus dikirim atau diberi logika ‘0’. Jika LED terhubung secara
Common Katode, maka untuk menyalakan LED harus dikirim atau diberi logika ‘1’, menyebabkan Port 0
menjadi masukan berimpedansi, sehingga tidak dapat menyalakan LED karena ordenya μA.
C 310u
C 630p
R STR ST
R 24K 7
X1
11 , 0 592MH z
R ESET
R ST
U 1
A T89S 51
9
1819
2930
31
12345678
2122232425262728
1011121314151617
3938373635343332
R ST
XTA L2XTA L1
PSENA LE /PR OG
EA /V PP
P 1 .0P 1 . 1P 1 . 2P 1 . 3P 1 . 4P 1 . 5P 1 . 6P 1 . 7
P 2 . 0 /A 8P 2 .1 /A 9
P 2 .2 /A 10P 2 .3 /A 11P 2 .4 /A 12P 2 .5 /A 13P 2 .6 /A 14P 2 .7 /A 15
P 3 .0 /R XDP 3 .1 / TXDP 3 .2 / IN T0P 3 .3 / IN T1
P 3 .4 / T0P 3 .5 / T1
P 3 .6 /W RP 3 .7 /R D
P 0 .0 /AD 0P 0 .1 /AD 1P 0 .2 /AD 2P 0 .3 /AD 3P 0 .4 /AD 4P 0 .5 /AD 5P 0 .6 /AD 6P 0 .7 /AD 7
VC C
C 730p
D 3
1N 4002
AC
V C C
Gambar 1. Hasil pemasangan komponen-komponen
2. PEMROGRAMAN MENYALAKAN LED
Setelah rangkaian LED dibuat dan dihubungkan dengan port pararel mikrokontroller, maka
sekarang saatnya Anda membuat program yang digunakan untuk menghidupkan LED tersebut.
Program sebagai berikut ini
//Program LED 1. LED Menyala
/* deklarasi register AT89c51 */#include <at89x51.h> //jika menggunakan AT89C51
/* Program utama */ void main(){char a; a=0x000;while(1) { P0 = a; //menyalakan Led semuanya }
}
3. PEMROGRAMAN LED BERKEDIP
Setelah membuat dan menjalankan program menyalakan lampu LED, maka sekarang saatnya
Anda membuat program kedua yang digunakan untuk menghidupkan LED berkedip.
Program sebagai berikut ini
//Program LED 2. LED Berkedip
/*------deklarasi register AT89c51---------*/ #include <at89x51.h> //jika menggunakan AT89C51
/*---fungsi tunda 1 milidetik (kira-kira)--*/void tunda1ms() { int i; for(i=0;i<150;i++);}
/*--------fungsi tunda n milidetik--------*/void tunda(int n) { int i; for (i=0; i<n;i++) tunda1ms();}
/*-------------Program utama-------------*/void main(){ char a; char b; a=0x000; b=0x0FF; while(1) { P0= a; //menyalakan Led semuanya tunda(500); //memanggil fungsi tunda P0= b; //mematikan semua Led tunda(500); //memanggil fungsi tunda }}
4. PEMROGRAMAN LED FLIP FLOP 1
Setelah membuat dan menjalankan program menyalakan lampu LED berkedip, maka sekarang
saatnya Anda membuat program ketiga yang digunakan untuk menghidupkan LED flip-flop 1.
Program sebagai berikut ini
//Program LED 3 LED Flip-Flop
/*----------deklarasi register AT89c51---------*/ #include <at89x51.h>
/*----fungsi tunda 1 milidetik (kira-kira)----*/void tunda() { _asm mov r0, #0x0f5 01$: mov r1, #0x0ff 02$: mov r2, #0 djnz r1, 02$ djnz r0, 01$ _endasm; }
/*--------------Program utama-----------------*/void main(){ char a; char b; a=0x00f; b=0x0f0; while(1) { P0= a; //menyalakan Led port0 - port3 yang tunda(); //memanggil fungsi tunda P0= b; //menyalakan Led port4 - port7 yang tunda(); //memanggil fungsi tunda }}
5. PEMROGRAMAN LED FLIP FLOP 2
Setelah membuat dan menjalankan program menyalakan lampu LED flip-flop pada
pemrograman flip-flop 1, maka sekarang saatnya Anda membuat program keempat yang digunakan
untuk menghidupkan LED flip-flop 2. Program LED flip-flop 2 ini berbeda dengan LED flip-flop 1. Program
ini akan menyalakan LED flip-flop genap dan ganjil pada port 0
Program sebagai berikut ini
//Program LED 4 Flip-Flop genap dan ganjil
/* deklarasi register AT89c51 */ #include <at89x51.h>
/*-----------------fungsi tunda-----------------*/void tunda() { _asm mov r0, #0x0f5 01$: mov r1, #0x0ff 02$: mov r2, #0 djnz r1, 02$ djnz r0, 01$ _endasm; }
/*--------------Program utama-------------------*/void main(){ char a; char b; a=0x55; b=0xAA;
while(1) { P0= a; //menyalakan Led port genap yang lain mati tunda(); //memanggil fungsi tunda P0= b; //menyalakan Led port ganjil yang lain mati tunda(); //memanggil fungsi tunda }}
6. PEMROGRAMAN LED BERJALAN KEKANAN
Setelah membuat dan menjalankan program menyalakan lampu LED flip-flop, maka sekarang
saatnya Anda membuat program yang digunakan untuk menghidupkan LED berjalan kanan. Program
LED berjalan kekanan ini dijalankan pada hardware nyala led berlogika tinggi atau logika 1. jika
menggunakan logika rendah maka LED bukan menyala tetapi akan mati. Program LED berjalan kekanan
menggunakan operasi geser kanan. Operasi geser kiri akan menggeser bit-bit kekanan sehingga bit 0
akan berpindah ke bit 1 dan bit 1 akan berpindah ke bit 2 dan seterusnya.
Program sebagai berikut ini
//Program LED 6 LED berjalan Kekanan
/* deklarasi register AT89c51 */#include <at89x51.h>
/* fungsi tunda 1 *//*------------------------------------------*//* fungsi tunda 1 milidetik (kira-kira) *//*------------------------------------------*/void tunda1ms() { int i; for(i=0;i<150;i++);}/*--------------------------------------------*//* fungsi tunda n milidetik *//*--------------------------------------------*/void tunda(int n) { int i; for (i=0; i<n;i++) tunda1ms();}
/* Program utama */void main(){ volatile unsigned char a=0x01; while(1) { a=((a>>7) | (a<<1)); //putar ke kanan 1 bit, bit ke 0 akan tunda(1000); //sehingga efeknya seperti LED berjalan
P0=a; // mengisi bit ke 7 dst }}
7. PEMROGRAMAN LED BERJALAN KEKIRI
Setelah membuat dan menjalankan program menyalakan lampu LEDberjalan kekanan, maka
sekarang saatnya Anda membuat program yang digunakan untuk menghidupkan LED berjalan kekiri.
Program LED berjalan kekanan menggunakan operasi geser kiri. Operasi geser kiri akan menggeser bit-
bit kekanan sehingga bit 7 akan berpindah ke bit 6 dan bit 6 akan berpindah ke bit 5 dan seterusnya.
Program sebagai berikut ini
//Program LED 6 LED Berputar kekiri
/* deklarasi register AT89c51 */#include <at89x51.h>
/* fungsi tunda 1 */
/*------------------------------------------*//* fungsi tunda 1 milidetik (kira-kira) *//*------------------------------------------*/void tunda1ms() { int i; for(i=0;i<150;i++);}/*--------------------------------------------*//* fungsi tunda n milidetik *//*--------------------------------------------*/void tunda(int n) { int i; for (i=0; i<n;i++) tunda1ms();}
/* Program utama */void main(){ volatile unsigned char a=0x01; while(1) {
a=((a<<7) | (a>>1)); //putar ke kanan 1 bit, bit ke 0 akan tunda(1000); //sehingga efeknya seperti LED berjalan P0=a; // mengisi bit ke 7 dst }}
8. PEMROGRAMAN MENGHIDUPKAN LED KE KIRI
Setelah membuat dan menjalankan program menyalakan LED ke kiri, maka sekarang saatnya
Anda membuat program yang digunakan untuk menghidupkan LED ke kiri. Program menghidupkan LED
dari kiri ke kanan menggunakan operasi pernyataan geser kanan.
Program sebagai berikut ini
//Program LED 7 menyalakan LED ke kiri/* deklarasi register AT89c51 */#include <at89x51.h>
/*--------------------------------------------*//* fungsi tunda 1 milidetik (kira-kira)*//*--------------------------------------------*/void tunda(int n)
{ _asm mov r0, #0x0f5 01$: mov r1, #0x0ff 02$: mov r2, #0 djnz r1, 02$ djnz r0, 01$ _endasm; }
/*----------------------------------------------*//* Program utama *//*----------------------------------------------*/void main(){char a;char k;
while(1) { a=0x07F;
for (k=0;k<9;k++) { P0=a; //mengeluarkan data LED satu persatu tunda(); //sehingga efeknya seperti LED berjalan a=a>>1; } }}
9. PEMROGRAMAN MENGHIDUPKAN LED KE KANAN
Setelah membuat dan menjalankan program menyalakan LED ke kiri, maka sekarang saatnya
Anda membuat program yang digunakan untuk menghidupkan LED ke kanan Program menghidupkan
LED ke kanan menggunakan operasi pernyataan geser kiri.
Program sebagai berikut ini
// Program LED 8 LED Berjalan kiri ke kanan/* deklarasi register AT89c51 */ #include <at89x51.h>
/* fungsi tunda 1 milidetik (kira-kira) *//*------------------------------------------*/void tunda1ms() { int i; for(i=0;i<150;i++);}
/* fungsi tunda n milidetik *//*--------------------------------------------*/void tunda(int n) { int i; for (i=0; i<n;i++) tunda1ms();}
/*----------------------------------------------*//* Program utama *//*----------------------------------------------*/void main(){char a; char k;while(1)
{ a=0x0FE; for (k=0;k<9;k++) { P0=a; //mengeluarkan data LED satu persatu tunda(100); //sehingga efeknya seperti LED berjalan a=a<<1; } }}
10. PEMROGRAMAN LED BERJALAN BOLAK-BALIK
Setelah membuat dan menjalankan program menyalakan lampu LED berjalan menyala kekiri,
maka sekarang saatnya Anda membuat program ketuga yang digunakan untuk menghidupkan LED bolak
balik. Program LED bolak balik menggunakan operasi pernyataan geser kanan dan geser kiri.
Program sebagai berikut ini
//Program LED 10 LED ping-pong/* deklarasi register AT89c51 */#include<at89x51.h>void tunda() { _asm mov r0, #0x0f5 01$: mov r1, #0x0ff 02$: mov r2, #0 djnz r1, 02$ djnz r0, 01$ _endasm; }void jalankiri(unsigned int n){ unsigned char i=0, a=0x01; P1 = 0; while(n) { for(i=0;i<7;i++) { a=((a>>7) | (a<<1)); tunda(); P0=a; } n--;
}}void jalankanan(unsigned int n){ unsigned char i=0, a=0x80; P1 = 0; while(n) { for(i=0;i<7;i++) { a=((a<<7) | (a>>1)); tunda(); P0=a; } n--; }}/* Program utama */void main(){iswanto: jalankiri(1); jalankanan(1); goto iswanto;}