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 pada 3 digit display seven segment. Dalam hal ini kaki-kaki bebas (A, B, C, D, E, F, dan G) seven segment jenis common anode 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. CONTOH PROGRAM
Berikut ini adalah contoh programnya:
$regfile = "8535def.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
Driver1 = 0 ' driver digit1 = berlogika low(0)
Driver2 = 0 ' driver digit2 = berlogika low(0)
Driver3 = 0 ' driver digit3 = berlogika low(0)
Do
7segment = &HC0 '&B11000000 = angka 0
Loop
Penjelasan program 1:
$regfile = "8535def.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.
Driver1 = 0 ' driver digit1 = berlogika low(0)
Driver2 = 0 ' driver digit2 = berlogika low(0)
Driver3 = 0 ' driver digit3 = berlogika low(0)
Pernyataan ini mengondisikan PORTB.0 (Driver1), PORTB.1 (Driver2), dan PORTB.2 (Driver3) menjadi berlogika low (0), kondisi ini menjadikan 7segment aktif (nyala) dan akan terjadi sebaliknya jika diganti dengan logika high (1).
Do
7segment = &HC0 ' &B11000000 = angka 0
Loop
Blok program di atas merupakan program utama dari program ini. Perintah yang diberikan dalam program utama ini adalah mengirimkan data angka yang akan ditampilkan pada display 7segment, yaitu PORTA atau alias “7segment”. Untuk mengganti display dengan angka yang lain, maka data yang dimasukan ke dalam register “7segment” harus diganti dengan nilai yang menampilkan angka 1, 2, 3, 4, 5, 6, 7, 8, atau 9 seperti tampak dalam tabel 1 berikut ini.
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 pada 3 digit display seven segment. Dalam hal ini kaki-kaki bebas (A, B, C, D, E, F, dan G) seven segment jenis common anode 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. CONTOH PROGRAM
Berikut ini adalah contoh programnya:
$regfile = "8535def.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
Driver1 = 0 ' driver digit1 = berlogika low(0)
Driver2 = 0 ' driver digit2 = berlogika low(0)
Driver3 = 0 ' driver digit3 = berlogika low(0)
Do
7segment = &HC0 '&B11000000 = angka 0
Loop
Penjelasan program 1:
$regfile = "8535def.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.
Driver1 = 0 ' driver digit1 = berlogika low(0)
Driver2 = 0 ' driver digit2 = berlogika low(0)
Driver3 = 0 ' driver digit3 = berlogika low(0)
Pernyataan ini mengondisikan PORTB.0 (Driver1), PORTB.1 (Driver2), dan PORTB.2 (Driver3) menjadi berlogika low (0), kondisi ini menjadikan 7segment aktif (nyala) dan akan terjadi sebaliknya jika diganti dengan logika high (1).
Do
7segment = &HC0 ' &B11000000 = angka 0
Loop
Blok program di atas merupakan program utama dari program ini. Perintah yang diberikan dalam program utama ini adalah mengirimkan data angka yang akan ditampilkan pada display 7segment, yaitu PORTA atau alias “7segment”. Untuk mengganti display dengan angka yang lain, maka data yang dimasukan ke dalam register “7segment” harus diganti dengan nilai yang menampilkan angka 1, 2, 3, 4, 5, 6, 7, 8, atau 9 seperti tampak dalam tabel 1 berikut ini.
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!
Mau tanya semilas kalau lebih dari 3 seven segment itu kok saya coba di bascomnya gak muncul angka?? tapi portnya membaca gimana solusinya???
ReplyDelete@Dimas PU
ReplyDeleteCoba kirim skematik proyek seven segment yang mas/pak dimas buat ke email kami, robotics.university@gmail.com
Terima kasih