Selasa, 04 April 2017

Cara Program LED Dengan ATMEGA32

Salam para pembaca, kali ini saya ingin memberi tahu cara memprogram LED menggunakan mikro kontroler. Langsung saja kita mulai :

ATMEGA8535/16/32

 Untuk menyalakan led dengan mikrokontroler Atmega8535/16/32 pertama kita harus mengetahui dasar-dasar cara kerja dari led, terus dasar pemograman C pada codevision AVR untuk fungsi input output, sedangkan disini hanya pemograman dan cara kerjanya
Beberapa hal yang perlu diingat dalam pemograman nya, yaitu :

  • DDRx (misal pada port A maka penulisanya DDRA)
DDRx berfungsi untuk dijadikan INPUT atau OUTPUT, MASUKAN atau KELUARAN
contoh:
=Jika dalam bilangan hexadecimal=
DDRA=0x00
-> artinya semua portA (PA0 - PA7) di fungsikan sebagai MASUKAN/INPUT karena bernilai 00

DDRA=0xFF
->artinya semua portA (PA0 - PA7) difungsikan sebagai KELUARAN/OUTPUT karena bernilai FF

DDRA=0x0F
->karena PA0,PA1,PA2,PA3 bernilai F maka fungisnya sebagai OUTPUT, sedangakan PA4, PA5, PA6, PA7 bernilai 0 maka fungsinya sebagai INPUT
=Jika dalam bilangan biner=
DDRA=0b00000000
-> artinya semua portA (PA0 - PA7) di fungsikan sebagai MASUKAN/INPUT karena bernilai  00000000

DDRA=0b00001111
->karena PA0,PA1,PA2,PA3 bernilai 1 maka fungisnya sebagai OUTPUT, sedangakan PA4, PA5, PA6, PA7 bernilai 0 maka fungsinya sebagai INPUT

DDRA=0b11000101
->PA0=1, PA2=1, PA6=1, PA7=1, fungsinya sebagai OUTPUT, sedangkan sisanya sebagai INPUT

  • PORTx (misal pada port A maka penulisannya PORTA)
PORTx fungsinya sebagai inisialisasi awal atau pemberian nilai awal apakah si PORTA ini bernilai HIGH/1 atau LOW/0
Contoh
Jika dalam hexa (misal di port A)
PORTA=0x00
-> artinya dari PA0 - PA7 bernilai 0/LOW

PORTA=0x0F
->Artinya keadaan HIGH pada PA0=1, PA1=1, PA2=1, PA3=1, dan keadaan LOW pada PA4=0, PA5=0, PA6=0, PA7=0
Jika dalam biner (misal di port A)
PORTA=0b00000000
->Artinya dari PA0 - PA7 bernilai 0/LOW
PORTA=0b00001111
->Artinya keadaan HIGH pada PA0=1, PA1=1, PA2=1, PA3=1, dan keadaan LOW pada PA4=0, PA5=0, PA6=0, PA7=0
Kesimpulan 
DDRx --> INPUT atau OUTPUT
PORTx --> HIGH (1) atau LOW (0)

Rangkaian dengan PORT A

  •  Setelah membuat rangkaian menggunakan proteus, sekarang kita ke tahap selanjutnya yaitu program LED.
- Berikut adalah langkah-langkah untuk membuat project baru pada CV-AVR : 

  • Pada menu bar klik "New File", kemudian muncul sebagai berikut : 

  • Pilih "Project", Lalu klik "Yes" pada form berikutnya :






  •  Kemudian akan muncul Form berikut untuk memilih Tipe chip yang akan digunakan. Disini  kita akan menggunakan tipe chip ATmega.





  •  Disini kita akan menggunakan chip atmega32 dengan crystal sebesar 32.000 Mhz





  •  Langkah selanjutnya adalah dengan mengatur Port I/O yang akan kita gunakan. Disini kita akan menggunakan PORT C sebagai input untuk meberikan masukan berupa push button untuk mengendalikan pergerakan LED dan output menggunakan PORT A.


PORT C

PORT A
  •  Kemudian langkah selanjutnya ialah dengan menyimpan program yang telah dibuatt dalam satu folder yang sama, dengan melakukan generate, save and exit. Kemudian simpan file tersebut dengan nama yang sama sebanyak 3 kali. Seperti langkah berikut ini :




  •  Setelah melakukan langkah-langkah tersebut maka pogram akan membuat file dan folder khusus secara otomatis.
  •  Lalu, cara mengcompile file pada ATMEGA adalah sebagai berikut :


1

2

3

  •  Selanjutnya RUN rangkaian yang telah di masukan program dengan klik 'Play' dibagian kiri bawah pada software :

  •  Selanjutnya saya lampirkan script program yang telah saya buat :
 /*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : BAgas1
Version :
Date    : 4/4/2017
Author  : mdfschmidt
Company : http://mechatronlabs.blogspot.co.id/
Comments:


Chip type               : ATmega32
Program type            : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 512
*****************************************************/

#include <mega32.h>
#include <delay.h>

// Declare your global variables here

void main(void)
{
while (1)
      {
      // Place your code here
      DDRA.0=0;
      DDRA.1=0;
      DDRA.2=0;
 
      DDRC=0xFF;
 
      if (PINA.0==1)
        {
            PORTA=0b00000001;
            delay_ms(20);
            PORTA=0b00000010;
            delay_ms(20);
       
            PORTA=0b00000100;
            delay_ms(20);
            PORTA=0b00001000;
            delay_ms(20);
       
            PORTA=0b00010000;
            delay_ms(20);      
        }        
      else if (PINA.1==1)
        { 
            PORTA=0b00010000;
            delay_ms(20);
            PORTA=0b00001000;
            delay_ms(20);
       
            PORTA=0b00000100;
            delay_ms(20);
            PORTA=0b00000010;
            delay_ms(20);
       
            PORTA=0b00000001;
            delay_ms(20);
        }            
      else if (PINA.2==1)
        {
            PORTA=0b00011000;
            delay_ms(20);
            PORTA=0b00100100;
            delay_ms(20);
       
            PORTA=0b01000010;
            delay_ms(20);
            PORTC=0b10000001;
            delay_ms(20);
       
        }
      else if  (PINA.0==0&&PINA.1==0&&PINA.2==0)
      {
      PORTC=0b00000000;
      }
      }                                    
 
}


  •  Oke sekian dulu ya postingan hari ini, semoga bermanfaat.

Tidak ada komentar:

Posting Komentar