BASCOM-AVR(12)_Count Up 3 digit

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.
Gambar 1. Skematik pengendali display 7segment 3-digit (CA)
(Klik gambar untuk memberpesarnya)

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!

Share on Google Plus

About Robotics University

    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment