14
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 At89s51 Dengan c (1)

Embed Size (px)

DESCRIPTION

APLIKASI LAMPU LED DENGAN MIKROKONTROLLERRANGKAIAN LAMPU LED PEMROGRAMAN MENYALAKAN LEDLED BERKEDIP

Citation preview

Page 1: Aplikasi Lampu Led Dengan Mikrokontroller At89s51 Dengan c (1)

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

Page 2: Aplikasi Lampu Led Dengan Mikrokontroller At89s51 Dengan c (1)

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.

Page 3: Aplikasi Lampu Led Dengan Mikrokontroller At89s51 Dengan c (1)

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 }

Page 4: Aplikasi Lampu Led Dengan Mikrokontroller At89s51 Dengan c (1)

}

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 }}

Page 5: Aplikasi Lampu Led Dengan Mikrokontroller At89s51 Dengan c (1)

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 }}

Page 6: Aplikasi Lampu Led Dengan Mikrokontroller At89s51 Dengan c (1)

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 }}

Page 7: Aplikasi Lampu Led Dengan Mikrokontroller At89s51 Dengan c (1)

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

Page 8: Aplikasi Lampu Led Dengan Mikrokontroller At89s51 Dengan c (1)

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) {

Page 9: Aplikasi Lampu Led Dengan Mikrokontroller At89s51 Dengan c (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;

Page 10: Aplikasi Lampu Led Dengan Mikrokontroller At89s51 Dengan c (1)

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)

Page 11: Aplikasi Lampu Led Dengan Mikrokontroller At89s51 Dengan c (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--;

Page 12: Aplikasi Lampu Led Dengan Mikrokontroller At89s51 Dengan c (1)

}}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;}