Sunday, December 18, 2016

Menjalankan Seven Segment Count Up + Push Button dengan BASCOM-AVR Menggunakan ATmega16/32/8535

Dalam Pembelajaran Mikrokontroler kali ini kita akan membuat suatu simulasi Seven Segment yang akan membentuk suatu satuan detik waktu maju. Yaitu detik 0 sampai detik 9. Kenapa hanya sampai 9 karena Pembelajaran kali ini menggunakan satu digit seven segment yang dimana maksimal hanya ada angka 9. Sebenarnya sih gampang saja membuatnya asal kita tahu tata cara pengcodingannya. Sebelumnya kamu harus buat rangkaian simulasinya di proteus 7 dengan menggunakan Seven Segment yang Katoda dengan kaki satu mengarah ke bawah. Gunakanlah mikrokontroler ATmega16/32/8535 karena disini saya menggunakan mikrokontroler tersebut. Lalu sambungkan ketujuh kaki seven segment ke PORTC dan sisakan satu kaki mikrokontroler yang bawah. Lalu berikan fround pada kaki satu seven segment. Jika Belum paham, lihat rangkain yang sudah saya buat di proteus 7 ini :

Dalam membuat Coding saya menggunakan aplikasi BASCOM-AVR yang dimana aplikasi ini menggunakan Bahasa Basic untuk Menjalankan mikrokontrolernya. Berikut ini adalah Bahasa Pemrogramannya untuk menjalankan Seven Segment Satu Digit Count-up.

1). Menjalankan Seven Segment Secara Langsung

$regfile = "m16def.dat"
$crystal = 12000000
Config Portc = Output
C Alias Portc
7segment:
C = &B00111111 : Waitms 20
C = &B00000110 : Waitms 20
C = &B01011011 : Waitms 20
C = &B01001111 : Waitms 20
C = &B01100110 : Waitms 20
C = &B01101101 : Waitms 20
C = &B01111101 : Waitms 20
C = &B00000111 : Waitms 20
C = &B01111111 : Waitms 20
C = &B01101111 : Waitms 20
Goto 7segment
End

2) Menjalankan Seven Segment menggunakan Push Button

$regfile = "m16def.dat"
$crystal = 12000000
Config Portc = Output
Config Porta = Input
C Alias Portc
Pb:
If Pina.0 = 1 Then
Gosub 7segment
End If
Goto Pb
7segment:
C = &B00111111 : Waitms 20
C = &B00000110 : Waitms 20
C = &B01011011 : Waitms 20
C = &B01001111 : Waitms 20
C = &B01100110 : Waitms 20
C = &B01101101 : Waitms 20
C = &B01111101 : Waitms 20
C = &B00000111 : Waitms 20
C = &B01111111 : Waitms 20
C = &B01101111 : Waitms 20
Goto 7segment
End

Penjelasan Program : 

$regfile = "m16def.dat"

Pernyataan ini menunjukkan bahwa program yang kita buat ikut melibatkan file pre-prosesor m16def.dat. File ini telah ada dalam aplikasi BASCOM-AVR, sehingga kamu tinggal memanggilnya dengan menggunakan perintah $regfile. File preprosesor ini berisikan kode-kode pengaturan yang berkaitan dengan register dalam mikrokontroler yang akan digunakan. Maksud dari “m16def.dat” ini adalah sebuah program yang akan berjalan di mikrokontroler Atmega16, jika program kamu menggunakan Atmega 32 ubah dengan “m32def.dat” dan jika kamu menggunakan Atmega8535, maka ubah dengan “8535def.dat”.

$crystal = 12000000

Pernyataan ini menunjukan bahwa rangkaian yang kamu gunakan berfrekuensi 12 MHz atau 12.000.000 Hz. Jika kamu hanya menggunakan bahasa program ini untuk simulasi, frekuensi tidak berpengaruh akan jalannya rangkaian. Jika kamu memang ingin menggunakan program ini untuk praktek nyata, maka kamu harus tahu frekuensi rangkaian yang kamu buat, lalu masukan bahasa pemrogramannya dengan frekuensi yang di pakai.

Config Portd = Output
Config Porta = Input
Pernyataan "Config Portd = Output" Ini menunjukan bahwa PORTD (I/O register yang ada dalam Mikrokontroler) adalah suatu keluaran/Output. Seperti pada gambar diatas saya menggunakan PORTD untuk jalur keluar LED nya. Jika kamu ingin menggunakan PORT lain boleh-boleh saja, Misalnya kamu ingin menggunakan PORTB ubah programnya menjadi “Config Portb = output”. Untuk Program "Config Porta = Input" Ini menunjukan bahwa PORTA adalah suatu masukan yaitu sebagai masukan pushbutton.

C Alias Portc

Program ini tidaklah begitu penting tetapi untuk mempermudah kita dalam pembuatan bahasa program "Alias" sangat efektif untuk mempersingkat waktu. "C Alias Portc" disini C akan menggantikan Portc sebagai salah satu kode yang akan dipanggil nantinya.

Pb:
If Pina.0 = 1 Then
Gosub 7segment
End If
Goto Pb

Ini adalah program untuk menjalankan Push Buttonnya, disini saya menggunakan Pina.0, karena seperti yang tertera pada gambar diatas dan kodenya saya menggunakan Porta untuk masukan Push Button. untuk itu saya masukan Pina.0 karena kaki tersebut masuk kedalam bagian Porta dan karena saya memasangnya di Pina.0. Misalkan kamu menggunakan port yang lainnya, contoh Portb maka yang digunakan adalah Pinb.0/Pinb.1/Pinb.2/Dst. "Gosub 7Segment" adalah program untuk memanggil Sub yang akan dijadikan untuk menjalankan Count-up seven segmentnya. "goto Pb" adalah untuk membalikan keadaan menjadi awal lagi. jika tidak dikasih kode tersebut maka program akan membaca terus hingga 7Segment. Maka Pb tidak akan bekerja.


7segment:
C = &B00111111 : Waitms 20
C = &B00000110 : Waitms 20
C = &B01011011 : Waitms 20
C = &B01001111 : Waitms 20
C = &B01100110 : Waitms 20
C = &B01101101 : Waitms 20
C = &B01111101 : Waitms 20
C = &B00000111 : Waitms 20
C = &B01111111 : Waitms 20
C = &B01101111 : Waitms 20
Goto 7segment
End

Ini adalah kode yang sangat penting, ini adalah kode utama untuk menjalankan Seven Segmentnya. "C = &B00111111 : Waitms 20" adalah program untuk menampilakan angka 0 selama 20 milidetik, program akan terus membaca hingga "C = &B01101111 : Waitms 20" yaitu angka 9 yang ditampilkan selama 20 milidetik. Selanjutnya porgram membaca "Goto 7segment" maka pembacaan akan mulai dari awal yaitu membaca angka 0 sampai 9 begitupun seterusnya.

Mengcompile Program :
Jika sudah kamu buat bahasa pemrogramannya, maka kamu tinggal save ditempat yang diinginkan kemudian Compile dengan mengklik menu program kemudia pilih Compile, atau bisa juga dengan menekan Shortcut F7.

Menjalankan Simulasi : 
Buatlah rangkain seperti diatas di aplikasi Proteus, disini saya menggunakan proteus versi 7. jika sudah buat. Klik 2x pada IC Mikrkntroler, maka akan keluar jendela untuk memasukan file program yang tadi kamu compile, Tekan icon folder yang ada di baris Program File. Cari file program yang tadi kamu simpan, pilih file dengan format .hex . kemudian open dan ok. Tinggal kamu klik play atau tekan F12 untuk melihat simulasinya.
Beginilah hasil simulasinya :

No comments:

Post a Comment