Wednesday 15 January 2014

Simulasi Bascom AVR dengan proteus

Mikrokontroler...........

Bagi mahasiswa maupun penggemar elektronika, mikrokontroler merupakan komponen wajib yang harus di kuasai, karena ada beberapa aplikasi yang akan lebih mudah dibuat ketimbang menggunkan komponen-komponen lain (khususnya sistem digital). 

Jenis mikrokontroler bermacam-macam, dari yang termahal maupun yang termurah, namun jangan kuatir untuk yang ingin mulai belajar kita bisa menggunakan software proteus yang dapat mensimulasikan mikrokontroler tanpa harus membuat perangkat keras. Untuk mendapatkan software proteus tinggal cari di mesin pencari tercanggih Google, berezz.

Bahas pemrograman mikrokontroler bermacam-macam, dari bahasa assembly, C dan basic. Nah disini kita akan mencoba membuat aplikasi sederhana dengan memanfaatkan bahasa basic dengan memanfaatkan BascomAVR. 

Hal pertama yang harus di lakukan adalah mengInstall Proteus dan BascomAVR ke PC kira masing-masing. Setelah diinstal sekarang kita coba membuat aplikasi menghidupkan satu lampu led secara berkedip dengan memanfaatkan mikrokontroller, berikut ini algoritmanya.. 

Sekarang kita buat programnya di BascomAVR. . 

Buka dulu BascomAVR. Buat file baru dengan memilih kotak putih sebelah kiri atas. kemudian ketik programnya. Pada program diatas menggunakan IC ATMEGA 16 (m16def.dat) kalo pake ATMEGA 32 tinggal ganti 16 dengan 32 kalo pake 8535 tulis m8535.dat. Setelah memilih IC AVR nya kita pilih besarnya kristal yang akan kita pakai. kristal ini disesuaikan dengan kristal yang ada pada rangkaian mikrokontroler kita (minsis) maksimalnya 16MHz. Pada program diatas, kita memakai kristal 12MHz. Kemudian kita atur port yang akan kita kendalikan. Pada ATMEGA 16 terdapat 4 port, yaitu PORTA, PORTB, PORTC dan PORTD. Tiap port dapat dikendalikan masing-masing, baik itu menjadi input (misalnya kita sambung ke tombol) atau sebagai output (misalnya kita pasang ke Led).

Setelah itu kita masuk ke program. Program  kita buat sesuai dengan flowchart yang telah kita gambar diatas. PortB maupun Port yang lain terdiri atas 8 bit (8 buah kaki/pin), sebenarnya tiap pin bisa kita kendalikan masing-masing, namun untuk latihan dasar kita seragamkan dahulu. 

Portb = &B11111111 /artinya setiap pin dari portB bernilai 1 (tinggi secara digital)

Wait 1  /artinya tunggu 1 detik kemudian lanjutkan ke program dibawahnya. Jika ingin waktu yang lebih cepat gunakan waitms sebagai pengganti wait

Portb = &B00000000 /artinya setiap pin dari portB bernilai 0

setelah dibuat, langsung kita simpan program kita. Ingat menyimpan program ke tempat yang mudah dicari, karena nanti saat memasukkan ke IC AVR akan kesulitan jika letak file susah dicari. 

Setelah disimpan, kemudian kita Compile (menterjemahkan menjadi bahasa mesin). Ok, semua proses pembuatan program selesai, sangat mudah..

kemudian kita buat simulasi rangkaian pada Proteus. 

Buka Isis pada proteus setelah terbuka akan tampil seperti ini.

Kemudian kita cari komponen yang kita perlukan, yaitu dengan menekan click kanan mouse kita hingga muncul pop up seperti ini.





Pada jendela pick device, kita pilih komponen yang kita perlukan. Kabar gembira bagi pemula, AVR bisa beroperasi tanpa menggunkana komponen eksternal, artinya bahwa AVR bisa berjalan dengan baik hanya dengan memasangkan tegangan 5Vdc dan ground, namun frekuensi maksimal yang dihasilkan adalah 1MHz. 

Setelah kita pilih komponen ATMEGA 16 akan muncul gambar seperti ini. Dengan cara yang sama, kita pilih Led (pilih yang simulated) kemudian kita buat rangkaian sebagai berikut. Untuk ground, kita pilih pada device pin (7 item dibawah componen) bisa dilihat digambar diatas.


 

Setelah itu kita masukkan program yang telah kita buat ke dalam mikrokontroler. Doubleclick IC AVR, setelah muncul jendela seperti hambar diatas, kita browse program yang akan kita masukkan (pilih yang berekstensi .Hex). setalh selesai, tekan OK dan proses pembuatan telah selesai, tinggal kita coba. 

Untuk mencoba, tekan tombol play seperti pada gambar diatas. Perhatikan Led akan nyala dan tunggu beberapa detik, maka lampu led akan mati. Tapi mati dan hidupnya sangat lama, iya kan??

itu karena kristal yang kita buat di program berbeda dengan yang di rangkaian skematik Proteus. sekarang kita coba ganti kristal pada program BascomAVR menjadi 1MHz. 

$crystal = 1000000 

Ok, jangan lupa di save dan compile. kemudian jalankan Proteus kitan. Perhatikan Lednya akan lebih cepat kan??

Namunprogram diatas hanya akan jalan sekali, sekarang gimana caranya agar bisa jalan terus menerus. Kita tambahkan do dan loop, perhatikan posisi perintahnya.


Flow Chartnya jadi seperti ini


Jangan lupa save dan compile, kemudian jalankan proteus..lihat hasilnya.

Ok, tunggu simulasi selanjutnya..

File simulasinya monggo di download dibawah ini:

 http://www.ziddu.com/download/23543306/led.rar.html






 

6 comments:

  1. Trimaksih gan. Ditunggu tulisan selanjutnya

    ReplyDelete
  2. mau tanya gan,sy pemula. untuk membuat led berjalan pada kondisi berbeda port bagaimana ya? kondisi pakai 3 port yang berbeda dengan 16 led bagaimana ya coding programnya?

    ReplyDelete
    Replies
    1. untuk 16 led bisa menggunakan 2 port saja, karena tiap port memiliki 8 pin.

      sebagaimana kita tahu jika menghidupkan led pada pinD.7 adalah

      portd =00000001
      wait 1

      sehingga jika kita ingin membuat led berjalan, maka kita harus menghidupkan pind.7 -> pind.6... dst hingga pind.0

      portd=00000001
      wait 1
      portd=00000010
      wait 1
      portd=00000100
      .
      .
      . dst hingga
      portd=10000000

      kemudian berlaku juga untuk portc

      portc=00000001
      wait 1
      portc=0000010

      dst
      hingga
      portc=10000000

      silakan dicoba

      Delete
  3. Saya pemula nih, mau tanya gimana yah kalau kita mau menggunakan port A, C, D dengan led 1, 3, 5, 7 yang nantinya kalau kita nyalakan itu bergantian menyalanya. makasih

    ReplyDelete
  4. do
    porta =00000001
    wait 1
    Porta=0
    portc =00000111
    wait 1
    Porta=0
    portd =0111111
    wait 1
    Portd=0
    loop

    ReplyDelete