robotics-university.com | Proyek belajar mikrokontroler kali ini adalah belajar menyalakan 16 buah komponen light emitting diode (LED) menggunakan IC mikrokontroler. Program yang akan kita pelajari dalam proyek belajar kali ini adalah menggunakan bahasa pemrograman BASIC. Software aplikasi text-editor dan compiler yang digunakan adalah BASCOM-AVR.
Berikut ini adalah gambar skematik interface antara mikrokontroler ATMEL AVR ATMEGA dual inline package (DIP) 40pin, yaitu ATmega16/32/8535 dengan 16 buah display LED. Dalam hal ini, 16 buah display LED dikendalikan dengan PORTA dan PORTC.
Berikut ini adalah gambar skematik interface antara mikrokontroler ATMEL AVR ATMEGA dual inline package (DIP) 40pin, yaitu ATmega16/32/8535 dengan 16 buah display LED. Dalam hal ini, 16 buah display LED dikendalikan dengan PORTA dan PORTC.
Gambar 1. Interface LED & mikrokontroler
Pada gambar 1, tampak bahwa kaki anode LED dihubungkan dengan Vcc (+5 volt). Ini artinya untuk menyalakan LED, kaki katodenya harus dihubungkan dengan tegangan 0 volt (ground, GND) supaya terjadi beda potensial pada komponen LED. Oleh karena kaki katode LED terhubung dengan kaki/pin mikrokontroler pada PORTA, maka untuk dapat menyalakan LED, pada pin mikrokontroler harus diatur (diprogram) supaya memiliki kondisi 0 volt (atau setara dengan logika nol atau GND). Cara aktifasi pin mikrokontroler seperti ini dikenal dengan istilah aktif low (0).
A. DESKRIPSI PROGRAM
Proyek belajar kali ini adalah belajar membuat program untuk membuat nyala 16 buah display LED yang terhubung dengan PORTA dan PORTC secara bergantian (per PORT). Artinya ketika 8 LED pada PORTA menyala semua, maka 8 LED pada PORTC padam semua, demikian juga sebaliknya. Sehingga cara menyalakan LED seperti ini akan menampilkan nyala 8 LED secara flip-flop, yaitu nyala hidup-mati bergantian.
B. PROGRAM
Berikut ini adalah programnya:
$regfile = "8535def.dat"
$crystal = 12000000
Config Porta = Output
Config Portc = Output
Led1 Alias Porta
Led2 Alias Portc
Do
Led1 = 0
Led2 = 255
Waitms 30
Led1 = 255
Led2 = 0
Waitms 30
Loop
Penjelasan program:
Baris-1:
$regfile = "8535def.dat"
Pernyataan ini menunjukkan bahwa program yang kita buat ikut melibatkan file pre-prosesor 8535def.dat. File ini telah disediakan dalam software BASCOM-AVR, sehingga kita tinggal memanggilnya dengan menggunakan perintah $regfile. File preprosesor ini berisikan kode-kode pengaturan yang berkaitan dengan register dalam mikrokontroler yang akan digunakan. Dalam program ini kita pilih IC mikrokontroler AVR Atmega8535. Dalam menggunakan BASCOM-AVR kita harus menuliskan bagian program ini.
Baris-2:
$crystal = 12000000
Pernyataan ini menunjukkan bahwa dalam membuat aplikasi mikrokontroler ini kita menggunakan kristal eksternal dengan frekuensi 12 MHz (12.000.000 Hz).
Baris 3-4:
Config Porta = Output
Config Portc = Output
Pernyataan ini adalah melakukan konfigurasi PORTA dan PORTC supaya dapat berfungsi sebagai jalur keluaran (output).
Baris 5-6:
Led1 Alias Porta
Led2 Alias Portc
Pernyataan ini berguna untuk mengganti nama register I/O PORTA dan PORTC dengan nama lain (alias). Dalam pernyataan tersebut PORTA namanya diganti dengan nama “Led1” sedangkan PORTC namanya diganti dengan nama “Led2”.
Baris 7-14:
Do
Led1 = 0
Led2 = 255
Waitms 30
Led1 = 255
Led2 = 0
Waitms 30
Loop
C. COMPILE PROGRAM
Untuk mengetahui bagaimana cara meng-compile program yang telah kita buat dengan menggunakan sofware BASCOM-AVR, silakan membaca tulisan dalam website ini yang berjudul "Cara Menggunakan BASCOM-AVR." Klik di sini!
D. DOWNLOAD PROGRAM (*.hex)
Untuk mengetahui bagaimana cara men-download file program *.hex hasil compile kedalam IC mikrokontroler, silakan membaca tulisan dalam website ini yang berjudul "Cara Download Program (HEX)." Klik di sini!
Led2 = 0
Waitms 30
Loop
Penjelasan program:
Baris-1:
$regfile = "8535def.dat"
Pernyataan ini menunjukkan bahwa program yang kita buat ikut melibatkan file pre-prosesor 8535def.dat. File ini telah disediakan dalam software BASCOM-AVR, sehingga kita tinggal memanggilnya dengan menggunakan perintah $regfile. File preprosesor ini berisikan kode-kode pengaturan yang berkaitan dengan register dalam mikrokontroler yang akan digunakan. Dalam program ini kita pilih IC mikrokontroler AVR Atmega8535. Dalam menggunakan BASCOM-AVR kita harus menuliskan bagian program ini.
Baris-2:
$crystal = 12000000
Pernyataan ini menunjukkan bahwa dalam membuat aplikasi mikrokontroler ini kita menggunakan kristal eksternal dengan frekuensi 12 MHz (12.000.000 Hz).
Baris 3-4:
Config Porta = Output
Config Portc = Output
Pernyataan ini adalah melakukan konfigurasi PORTA dan PORTC supaya dapat berfungsi sebagai jalur keluaran (output).
Baris 5-6:
Led1 Alias Porta
Led2 Alias Portc
Pernyataan ini berguna untuk mengganti nama register I/O PORTA dan PORTC dengan nama lain (alias). Dalam pernyataan tersebut PORTA namanya diganti dengan nama “Led1” sedangkan PORTC namanya diganti dengan nama “Led2”.
Baris 7-14:
Do
Led1 = 0
Led2 = 255
Waitms 30
Led1 = 255
Led2 = 0
Waitms 30
Loop
Baris 7-14 merupakan blok program utama. Program utama tersebut mengaktifkan kedua register I/O secara bersamaan. Pertama kita beri nilai register ‘Led1 = 0 dan Led2 = 255”. Efek yang terjadi 8 buah LED pada PORTA menyala, sebaliknya 8 buah LED di PORTC padam. Kondisi ini ditunda selama 30 ms. Setelah diberi waktu tunda 30 ms, maka nilai register Led1 dan Led2 dibalik, yaitu ‘Led1 = 255 dan Led2 = 0”. Sehingga menimbulkan efek 8 buah LED pada PORTA padam, sebaliknya 8 buah LED di PORTC menyala. Beri waktu tunda juga, 30 ms. Efek nyala-padam atau flip-flop ini akan terus berulang.
C. COMPILE PROGRAM
Untuk mengetahui bagaimana cara meng-compile program yang telah kita buat dengan menggunakan sofware BASCOM-AVR, silakan membaca tulisan dalam website ini yang berjudul "Cara Menggunakan BASCOM-AVR." Klik di sini!
D. DOWNLOAD PROGRAM (*.hex)
Untuk mengetahui bagaimana cara men-download file program *.hex hasil compile kedalam IC mikrokontroler, silakan membaca tulisan dalam website ini yang berjudul "Cara Download Program (HEX)." Klik di sini!
waduh... bascom ya, kudu dicoba nih sepertinya soalny blm pernah pakai
ReplyDelete@ihsan:
ReplyDeletecuba semua mas, biar tambah banyak bisa he he