Minggu, 20 Juni 2010

Interfacing Mikrokontroler ATMEGA8535 dengan LCD dan Sensor PING

   Siapa yang tidak tahu alat ukur jarak Seperti penggaris, Meteran atau yang lainnya. Tapi tahukah anda elektronik yang dapat digunakan untuk mengukur? Dan Tahukah anda jika kita Sendiri dpat membuat Alat Ukur digital tersebut? Yap,.....Kali ini kita akan belajar bagaimana menggunakan sebuah sensor untuk mengukur jarak yang dikombinasikan dengan LCD untuk menampilkan data yang diambilnya. Dan tentu saja kita akan menggunakan Sebuah Mikrokontroler sebagai Otaknya.
    Sebelum memulainya, Ada baiknya jika kita terlebih dahulu menyediakan peralatan apa saja yang kita butuhkan. Antara Lain:
> LCD 2x16
> Sistem Minimum Mikrokontroler ATMEGA8535
> Sensor Jarak

    Disini saya sendiri menggunakan Sebuah LCD 2x16 dan juga sebuah Sensor jarak Keluaran Paralax (Sensor PING)Lihat data sheetnya disini http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf. Untuk Rangkaiannnya, Saya akan menghubungkan Sensor PING ke PortA.0 dan LCD ke PortC.
    Untuk Programnya sendiri, kita akan menggunakan bahasa pemrograman C dengan CodeVisionAVR(Baca Artikel Sebelumnya). Adapun Langkah-langkahnya adalah sebagai berikut:
>Buka CodeVisionAVR
>Buat program baru dengan memilih File>New>Project>klik OK>Muncul Jendela Confirm Klik Ok lagi
>Akan muncul CodeWizardAVR.Lakukan Setting Terhadap Chip, Timer dan LCD seperti gambar. Ditunjukan Oleh Gambar 1,2 dan 3 berturut-turut.
> Klik File>Generate,save and Exit dan simpan ketiga file dengan nama Ping

Gambar.1 Setting Chip Mikrokontroler AVR
Gambar.2 Setting Timer


Gambar.3 Setting LCD

>Hasil dari generate Codewizard tersebut akan menghailkan file seperti ini:

/*********************************************
Deskripsi
*********************************************/

#include

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15
#endasm
#include

// Declare your global variables here

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
 
}

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 1382,400 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x02;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;

// LCD module initialization
lcd_init(16);

while (1)
      {
      // Place your code here

      };
}


Bersambung ke Pemrograman Sensor PING dengan Bahasa C/CodeVisionAVR






   

0 comments:

Posting Komentar

Need Your Comments, Please !!!