Wednesday, 1 June 2016

Program ATmega16 : LED

     Kembali sebagai fungsi keluaran, dapat mempengaruhi kerja dari hardware atau rangkaian yang nantinya akan diakses. Ada beberapa tipe kerja rangkaian untuk mengaksesnya, yaitu Aktif LOW dan Aktif HIGH. Aktif LOW merupakan kerja rangkaian yang dapat dioperasikan atau di ON-kan dengan diberi logika rendah ("0"/0V). Sedangkan Aktif HIGH merupakan kerja rangkaian yang dapat dioperasikan atau di ON-kan dengan diberi logika tinggi ("1"/+5V). Berdasarkan skematik dari kerja rangkaian diatas dapat digambarkan sebagai berikut :

     Pengaturan nilai keluaran setiap port disesuaikan dengan prinsip kerja rangkaian yang akan dioperasikan. Secara logika untuk pengaturan nilai keluaran pada setiap port harus berkebalikan dengan logika untuk menghidupkan atau mengoperasikan rangkaian tersebut. Misalkan, rangkaian LED aktif LOW, maka nilai keluaran harus diatur dengan nilai 1/HIGH. Sebaliknya juga dengan rangkaian LED aktif HIGH, maka nilai keluaran harus diatur dengan nilai 0/LOW. Pada tutorial kali ini, rangkaian yang digunakan memiliki prinsip kerja ON/aktif bila diberi logika 1/HIGH sehingga nilai keluaran pada PORT-B harus diatur menjadi LOW. Pengaturan tersebut dengan tujuan untuk mematikan rangkaian saat pertama kali dihidupkan atau LOW dalam keadaan normal.

     Instruksi yang digunakan dalam CVAVR untuk mengakses data keluaran (output) ke salah satu port sudah baku. Ada dua macam peng-akses-an port, yaitu secara bersamaan dan secara satu-persatu pin/bit. Sebagai contohnya sebagai berikut ini :
Mengakses PORT B.
Instruksi CVAVR secara bersamaan :
   PORTB = 0xf0;               //pada 8 bit data PORTB akan mengeluarkan data 11110000
atau
   PORTB = 0b11110000;  

Instruksi CVAVR secara per-bit:
   PORTB.0=1;   //pin atau bit ke-0 PORTB akan mengeluarkan data 1 (HIGH/+5V)
atau
   PINB.0=1;
   .
   .
   PORTB.3=1;   //pin atau bit ke-3 PORTB akan mengeluarkan data 1 (HIGH/+5V)
atau
   PINB.3=1;
   PORTB.4=0;   //pin atau bit ke-4 PORTB akan mengeluarkan data 0 (LOW/0V)
atau
   PINB.4=0;
   .
   .
   PORTB.7=0;   //pin atau bit ke-7 PORTB akan mengeluarkan data 0 (LOW/0V)
atau
   PINB.7=0;

RANGKAIAN SIMULASI ATMEGA16 DENGAN KELUARAN 8 LED



Contoh program LED menyala semua secara bersamaan :
     #include <mega16.h>
     void main(void){
     PORTB=0x00;
     DDRB=0xff;
     while(1){
      PORTB=0xff;
         }  
     }

Contoh program running LED :
     #include <mega16.h>
     #include <delay.h>
     void main(void){
     PORTB=0x00;
     DDRB=0xff;      //PORTB diatur menjadi output
     while (1)
          {
           PORTB=0b10000000;
           delay_ms(10);
           PORTB=0b01000000;
           delay_ms(10);
           PORTB=0b00100000;
           delay_ms(10);
           PORTB=0b00010000;
           delay_ms(10);
           PORTB=0b00001000;
           delay_ms(10);
           PORTB=0b00000100;
           delay_ms(10);
           PORTB=0b00000010;
           delay_ms(10);
           PORTB=0b00000001;
           delay_ms(10);
           }
     }  

atau

    #include <mega16.h>
    #include <delay.h>
    int geser=1;
    void main(void){
    PORTB=0x00;
    DDRB=0xFF;
    delay_ms(10);
    PORTB=0x01;
    delay_ms(10);
         while (1){
              if(geser<0){
                    geser=0x01;}
              delay_ms(10);
              PORTB=geser;
              geser<<=1;     //melakukan shift register
              };
     }


Contoh program LED berkedip secara bersamaan dengan delay :
     #include <mega16.h>
     #include <delay.h>
     void main(void){
     PORTB=0x00;
     DDRB=0xff;      //PORTB diatur menjadi output
     while (1)
          {
           PORTB=0xff;
           delay_ms(500);
           PORTB=0x00;
           delay_ms(500);
           }
     }


Rangkaian Minimum System Mikrokontroller ATmega16/32/8535

Pada postingan ini, kita akan belajar membuat minimum system. Minimum system digunakan untuk belajar mikrokontroller. Dengan minimum system ini kita dapat belajar memprogram mikrokontroller untuk berbagai keperluan seperti mengontrol nyala/mati LED, mengontrol perangkat rumah tangga, bahkan bisa digunakan dalam sistem robotika. Minimum sistem ini menggunakan IC ATmega16/32/8535 sebagai IC mikrokontroller. Untuk keperluan komponen sebagai berikut :

1. IC ATmega16/32/8535 + socket 40p  @1 buah
2. Xtal 12Mhz                                         @1 buah
3. kapasitor kramik 22pf                         @2 buah
4. kapasitor 100uf/16V                           @2 buah
5. Resistor 10k, 220Ohm                        @1buah
6. LED 3mm                                           @1 buah
7. IC 7805 / IC regulator 5V                   @1 buah
8. Dioda IN4002                                     @1 buah
9. Switch                                                 @1 buah
10. Pin header female                             @secukupnya
11. Konektor Screw                                @1 buah

SKEMA MINIMUM SYSTEM ATMEGA16/32/8535





Kemudian dari skema itu kita lanjut ke pembuatan layout PCBnya agar dapat digunakan nanti.


LAYOUT PCB MINIMUM SYSTEM ATMEGA16/32/8535





LAYOUT PCB MINIMUM SYSTEM ATMEGA16/32/8535




     Pada gambar skema board diatas terdapat terminal mosi,miso,sck, reset dan GND. Kelima terminal ini nantinya dihubungkan ke perangkat Downloader. Downloader berfungsi untuk membaca dan menulis program dari dan ke mikrokontroler. File yang dibaca atau ditulis oleh downloader berekstensi .Hex File .Hex tersebut dihasilkan oleh software pemrograman mikrokontroler. 
     Nah jika anda telah memiliki rangkaian sismin ATmega16/32/8535 seperti di atas saatnya anda untuk berlatih memprogram IC tersebut. Gunakan software CodeVisionAVR untuk membuat program dan jika dibutuhkan simulasi gunakan software Proteus. 
     Sekian tutorial pembuatan Minimum System ATmega16/32/8535 kali ini. Nantikan tutorial lain selanjutnya...


Program ATmega16 : Simulasi Menyalakan LED Menggunakan Proteus

     ATmega16 adalah IC Mikrokontroller yang banyak digunakan untuk membuat aplikasi berbasis mikrokontroller seperti pada materi kali ini kita akan membuat program menyalakan led dengan CodeVisionAVR dan mensimulasikannya di aplikasi proteus.

Software yang digunakan :
1. CodeVisionAVR
2. Proteus 7 Profesional

langkah awal adalah kita membuat rangkaiannya pada aplikasi Proteus, seperti pada gambar dibawah ini :

komponen yang digunakan adalah :
1. ATmega16                 (1)
2. LED                           (8)
3. Pushbutton                 (1)
4. Elko 100uf/16v          (1)
5. Kapasitor 22pf           (2)
6. Resistor 1k                 (1)
7. Crystal 12Mhz           (1)

     Rangkaian sudah selesai, oke kita lanjut ke CodeVisionAVR. Aplikasi ini adalah sarana kita untuk membuat program menyalakan led. Disini kita menggunakan bahasa C sebagai bahasa pemogramannya.
langkah awal adalah membuat project baru:

Chip yang digunakan ATmega16 dengan clock 12MHz. Kemudian pengaturan port. Disini kita menggunakan PortB sebagai Output. maka pengaturannya seperti ini.

pada menu toolbar, klik Program -> Generate, Save and Exit.


selanjutnya kita membuat programnya.

#include <mega16.h>  //header atmega16
void main(main){
PORTB=0x00;
DDRB=0xff;           //pengaturan manual, PORTB sebagai Output
while(1){
     PORTB=0xff;    //membuat kondisi LED nyala semua (1111111)
}
}

Kemudian compile program dengan cara pintas CTRL+F9.
 
     Pada aplikasi Proteus, klik dua kali IC ATmega16. Maka akan tampil seperti ini:


cari folder file.hex program yang kita buat pada CodeVisionAVR tadi kemudian klik ok. Jalankan simulasi proteus, dan hasilnya seperti ini. Output Led pada portB menyala semua.









Mengakses LCD 16x2 dengan Arduino

    Pada postingan sebelumnya kita sudah membahas tentang mengakses lcd 16x2 dengan atmega16. Kali ini saya akan berbagi tutorial cara menga...