robotics-university.com | Proyek belajar memrogram mikrokontroler kali ini adalah mengendalikan nyala 3 digit seven segment yang skematiknya seperti tampak pada gambar 1 di bawah ini. Pada gambar tersebut tampak bahwa kaki-kaki katode (A-B-C-C-E-F-G) untuk masing-masing 7segment digabungkan secara parallel dan dihubungkan pada PORTA sebagai jalur data. Kemudian masih pada gambar 1, tampak bahwa untuk masing-masing kaki common anode (CA) dihubungkan dengan kaki emitor (E) transistor PNP A733, sedangkan kaki basis (B) transistor tersebut dihubungkan dengan PORTB mikrokontroler, masing-masing PB0, PB1, dan PB2. Pin mikrokontroler yang terhubung dengan kaki basis transistor tersebut akan berfungsi sebagai driver yang mengatur aliran tegangan +5 volt melalui kaki emitor (E) transistor A733 menuju kaki CA, yaitu dengan memberikan logika high (1) atau logika low (0) pada pin-pin tersebut. Logika 1 sama dengan OFF dan logika 0 sama dengan ON.
Dengan perkataan lain, pengendalian nyala 2 buah display 7segment (atau lebih) dengan menggunakan mikrokontroler, diperlukan aktifasi driver display seven segment (dalam hal ini adalah pin PB0, PB1, dan PB2) untuk masing-masing digit dalam program, yaitu dengan cara memberikan logika 0 (low) pin mikrokontroler yang dihubungkan dengan driver display seven segment yang berupa transistor PNP seri A733 (dapat diganti dengam tipe yang lain). Hal ini harus dilakukan karena driver display seven segment langsung berhubungan dengan kaki ‘common-annode’ masing-masing digit display seven segment. Dimana kaki common pada display 7segment inilah yang menjadi kunci dalam aktifasi tiap-tiap digit display 7segment.
A. DESKRIPSI PROGRAM
Program yang akan kita buat adalah program untuk menampilkan sebuah karakter angka (0, 1, 2, 3, 4, 5, 6, 7, 8, dan 9) pada 3 digit seven segment jenis common anode secara bergantian dan berurutan dari angka 0 hingga angka 9, sehingga tampak seperti menghitung (mencacah) naik (count up). Dalam hal ini kaki-kaki bebas (A, B, C, D, E, F, dan G) seven segment dihubungkan dengan PORTA (PA-PA7) mikrokontroler AVR ATmega16, kaki-kaki bebas ini merupakan jalur data. Kemudian seperti penjelasan di atas, pin mikrokontroler yang digunakan sebagai driver/aktifasi seven segment adalah PORTB, yaitu pada pin PB0, PB1, dan PB2. Program akan kita buat dengan software BASCOM-AVR.
B. PROGRAM
Berikut ini adalah contoh programnya:
$regfile = "m16def.dat"
$crystal = 8000000
Config Porta = Output
Config Portb = Output
7segment Alias Porta ' data 7segment
Driver1 Alias Portb.0 ' driver digit1
Driver2 Alias Portb.1 ' driver digit2
Driver3 Alias Portb.2 ' driver digit3
Do
Driver1 = 0 ' digit1 = nyala
Driver2 = 1 ' digit2 = mati
Driver3 = 0 ' digit3 = nyala
7segment = &HC0 , Waitms 500 ‘ angka 0
7segment = &HF9 , Waitms 500 ‘ angka 1
7segment = &HA4 , Waitms 500 ‘ angka 2
7segment = &HB0 , Waitms 500 ‘ angka 3
7segment = &H99 , Waitms 500 ‘ angka 4
7segment = &H92 , Waitms 500 ‘ angka 5
7segment = &H82 , Waitms 500 ‘ angka 6
7segment = &HF8 , Waitms 500 ‘ angka 7
7segment = &H80 , Waitms 500 ‘ angka 8
7segment = &H90 , Waitms 500 ‘ angka 9
Loop
Penjelasan program:
$regfile = "m16def.dat"
Pernyataan ini menunjukkan bahwa program yang kita buat ikut melibatkan file pre-prosesor m16def.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 Atmega16. Dalam menggunakan BASCOM-AVR kita harus menuliskan bagian program ini.
$crystal = 8000000
Pernyataan ini menunjukkan bahwa dalam membuat aplikasi mikrokontroler ini kita menggunakan kristal eksternal dengan frekuensi 8 MHz (8.000.000 Hz).
Config Porta = Output
Config Portb = Output
Pernyataan ini adalah melakukan konfigurasi PORTA dan PORTB supaya dapat berfungsi sebagai jalur keluaran (output).
7segment Alias Porta ' data 7segment
Driver1 Alias Portb.0 ' driver digit1
Driver2 Alias Portb.1 ' driver digit2
Driver3 Alias Portb.2 ' driver digit3
Pernyataan ini berguna untuk mengganti nama register PORTA dan PORTB dengan nama lain (alias). PORTA namanya diganti dengan nama 7segment, sedangkan PORTB tepatnya PB0 diganti dengan nama Driver1, PB1 diganti dengan nama Driver2, dan PB2 diganti dengan nama Driver3. Pin mikrokontroler Driver1, Driver2, dan Driver3 akan digunakan sebagai pin aktifasi (melalui transistor A733) display 7segment.
Pemberian nama ‘alias’ ini biasanya dilakukan untuk memudahkan mengingat nama register yang digunakan pada suatu program, karena register akan dipanggil tidak dengan nama register asli namun dengan nama yang kita sukai dan mudah bagi kita untuk mengingatnya, seperti contoh diatas.
Do
Driver1 = 0 ' digit1 = nyala
Driver2 = 1 ' digit2 = mati
Driver3 = 0 ' digit3 = nyala
7segment = &HC0 , Waitms 500 ‘ angka 0
7segment = &HF9 , Waitms 500 ‘ angka 1
7segment = &HA4 , Waitms 500 ‘ angka 2
7segment = &HB0 , Waitms 500 ‘ angka 3
7segment = &H99 , Waitms 500 ‘ angka 4
7segment = &H92 , Waitms 500 ‘ angka 5
7segment = &H82 , Waitms 500 ‘ angka 6
7segment = &HF8 , Waitms 500 ‘ angka 7
7segment = &H80 , Waitms 500 ‘ angka 8
7segment = &H90 , Waitms 500 ‘ angka 9
Loop
Blok program di atas merupakan program utama. Blok program ini menggunakan struktur perulangan Do-Loop. Program diawali dengan aktifasi driver seven segment yang terhubung dengan PORTB.0, PORTB.1, dan PORTB.2 dengan perintah berikut:
Driver1 = 0 ' digit1 = nyala
Driver2 = 1 ' digit2 = mati
Driver3 = 0 ' digit3 = nyala
Pernyataan ini mengondisikan PORTB.0 (Driver1) dan PORTB.2 (Driver3) menjadi berlogika low (0), kondisi ini menjadikan 7segment aktif (nyala). Sedangkan PORTB.1 (Driver2) berlogika high (1) yang akan menjadikan 7segment digit ke-2 tidak aktif (mati).
Kemudian program dilanjutkan dengan proses pengiriman data angka 0 hingga angka 9 ke register “7segment” atau PORTC berupa data 8-bit secara bergantian dan berurutan dengan waktu tunda selama 500 ms. Sehingga program ini akan memberi efek nyala (pada digit yang aktif) berupa angka pada display 7segment dimulai dari angka nol (&HC0) hingga angka 9 (&H90) dan kembali lagi ke angka nol, atau bisa disebut dengan menyala secara hitungan naik (count up).
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!
Gambar 1. Skematik pengendali display 7segment 3-digit (CA)
(Klik gambar untuk memberpesarnya)
A. DESKRIPSI PROGRAM
Program yang akan kita buat adalah program untuk menampilkan sebuah karakter angka (0, 1, 2, 3, 4, 5, 6, 7, 8, dan 9) pada 3 digit seven segment jenis common anode secara bergantian dan berurutan dari angka 0 hingga angka 9, sehingga tampak seperti menghitung (mencacah) naik (count up). Dalam hal ini kaki-kaki bebas (A, B, C, D, E, F, dan G) seven segment dihubungkan dengan PORTA (PA-PA7) mikrokontroler AVR ATmega16, kaki-kaki bebas ini merupakan jalur data. Kemudian seperti penjelasan di atas, pin mikrokontroler yang digunakan sebagai driver/aktifasi seven segment adalah PORTB, yaitu pada pin PB0, PB1, dan PB2. Program akan kita buat dengan software BASCOM-AVR.
B. PROGRAM
Berikut ini adalah contoh programnya:
$regfile = "m16def.dat"
$crystal = 8000000
Config Porta = Output
Config Portb = Output
7segment Alias Porta ' data 7segment
Driver1 Alias Portb.0 ' driver digit1
Driver2 Alias Portb.1 ' driver digit2
Driver3 Alias Portb.2 ' driver digit3
Do
Driver1 = 0 ' digit1 = nyala
Driver2 = 1 ' digit2 = mati
Driver3 = 0 ' digit3 = nyala
7segment = &HC0 , Waitms 500 ‘ angka 0
7segment = &HF9 , Waitms 500 ‘ angka 1
7segment = &HA4 , Waitms 500 ‘ angka 2
7segment = &HB0 , Waitms 500 ‘ angka 3
7segment = &H99 , Waitms 500 ‘ angka 4
7segment = &H92 , Waitms 500 ‘ angka 5
7segment = &H82 , Waitms 500 ‘ angka 6
7segment = &HF8 , Waitms 500 ‘ angka 7
7segment = &H80 , Waitms 500 ‘ angka 8
7segment = &H90 , Waitms 500 ‘ angka 9
Loop
Penjelasan program:
$regfile = "m16def.dat"
Pernyataan ini menunjukkan bahwa program yang kita buat ikut melibatkan file pre-prosesor m16def.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 Atmega16. Dalam menggunakan BASCOM-AVR kita harus menuliskan bagian program ini.
$crystal = 8000000
Pernyataan ini menunjukkan bahwa dalam membuat aplikasi mikrokontroler ini kita menggunakan kristal eksternal dengan frekuensi 8 MHz (8.000.000 Hz).
Config Porta = Output
Config Portb = Output
Pernyataan ini adalah melakukan konfigurasi PORTA dan PORTB supaya dapat berfungsi sebagai jalur keluaran (output).
7segment Alias Porta ' data 7segment
Driver1 Alias Portb.0 ' driver digit1
Driver2 Alias Portb.1 ' driver digit2
Driver3 Alias Portb.2 ' driver digit3
Pernyataan ini berguna untuk mengganti nama register PORTA dan PORTB dengan nama lain (alias). PORTA namanya diganti dengan nama 7segment, sedangkan PORTB tepatnya PB0 diganti dengan nama Driver1, PB1 diganti dengan nama Driver2, dan PB2 diganti dengan nama Driver3. Pin mikrokontroler Driver1, Driver2, dan Driver3 akan digunakan sebagai pin aktifasi (melalui transistor A733) display 7segment.
Pemberian nama ‘alias’ ini biasanya dilakukan untuk memudahkan mengingat nama register yang digunakan pada suatu program, karena register akan dipanggil tidak dengan nama register asli namun dengan nama yang kita sukai dan mudah bagi kita untuk mengingatnya, seperti contoh diatas.
Do
Driver1 = 0 ' digit1 = nyala
Driver2 = 1 ' digit2 = mati
Driver3 = 0 ' digit3 = nyala
7segment = &HC0 , Waitms 500 ‘ angka 0
7segment = &HF9 , Waitms 500 ‘ angka 1
7segment = &HA4 , Waitms 500 ‘ angka 2
7segment = &HB0 , Waitms 500 ‘ angka 3
7segment = &H99 , Waitms 500 ‘ angka 4
7segment = &H92 , Waitms 500 ‘ angka 5
7segment = &H82 , Waitms 500 ‘ angka 6
7segment = &HF8 , Waitms 500 ‘ angka 7
7segment = &H80 , Waitms 500 ‘ angka 8
7segment = &H90 , Waitms 500 ‘ angka 9
Loop
Blok program di atas merupakan program utama. Blok program ini menggunakan struktur perulangan Do-Loop. Program diawali dengan aktifasi driver seven segment yang terhubung dengan PORTB.0, PORTB.1, dan PORTB.2 dengan perintah berikut:
Driver1 = 0 ' digit1 = nyala
Driver2 = 1 ' digit2 = mati
Driver3 = 0 ' digit3 = nyala
Pernyataan ini mengondisikan PORTB.0 (Driver1) dan PORTB.2 (Driver3) menjadi berlogika low (0), kondisi ini menjadikan 7segment aktif (nyala). Sedangkan PORTB.1 (Driver2) berlogika high (1) yang akan menjadikan 7segment digit ke-2 tidak aktif (mati).
Kemudian program dilanjutkan dengan proses pengiriman data angka 0 hingga angka 9 ke register “7segment” atau PORTC berupa data 8-bit secara bergantian dan berurutan dengan waktu tunda selama 500 ms. Sehingga program ini akan memberi efek nyala (pada digit yang aktif) berupa angka pada display 7segment dimulai dari angka nol (&HC0) hingga angka 9 (&H90) dan kembali lagi ke angka nol, atau bisa disebut dengan menyala secara hitungan naik (count up).
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!
0 comments:
Post a Comment