Wednesday, February 9, 2011

Belajar LCD dengan AVR GCC

Bismillahirrohmaaanirrohiim..
Posting ini untuk menjawab request dari mas Haleem pada posting Tentang LCD. Sebelumnya, saya ucapkan terimakasih sebesar-besarnya atas sharing ilmunya dari mas Dhani di blog nya. Mari kita coba memrogram LCD 16x2 dengan menggunakan AVR GCC. Sebelumnya harap install dulu AVR Studio 4 dan WinAVR. Kita masih menggunakan rangkaian LCD pada posting sebelumnya tapi beda listing programnya..

Pertama tama buka aplikasi AVR Studio 4, pilih "New Project", Klik AVR GCC, beri nama project anda, kemudian klik finish. download listing programnya link ini, kemudian copy ke project anda (.c).Oiya, sebelumnya sesuaikan dulu jenis mikrokontroller yang kita gunakan. Langkahnya :
1. Buka menu Project > Configuration Options

 2. Ganti Mikrokontroler yang sesuai pada "device" (ATMEGA8535) kemudian klik OK.


Setelah itu Build project anda (atau tekan F7). Buka design rangkaiannya di proteus, download file .Hex hasil kompilasi pada folder "default" ke mikrokontroler pada Proteus, kemudian Run. Seharusnya seperti ini tampilannya :


Sedikit Penjelasan...
Pemilihan port dapat dilakukan pada penggalan listing ini:
#define LCD_RS_HI PORTB|=(1<<0)     
#define LCD_RS_LO PORTB&=~(1<<0)

#define LCD_EN_HI PORTB|=(1<<1)
#define LCD_EN_LO PORTB&=~(1<<1)

#define LCD_D4_HI PORTB|=(1<<2)
#define LCD_D4_LO PORTB&=~(1<<2)
#define LCD_D5_HI PORTB|=(1<<3)
#define LCD_D5_LO PORTB&=~(1<<3)
#define LCD_D6_HI PORTB|=(1<<4)
#define LCD_D6_LO PORTB&=~(1<<4)
#define LCD_D7_HI PORTB|=(1<<5)
#define LCD_D7_LO PORTB&=~(1<<5)

Di  rangkaian, kita gunakan portB.0 sampai portB.5. Kemudian pada penggalan program ini

int main()
{
    _delay_ms(100);       //delay 100ms
    init_devices();  //inisialisasi chip
    init_lcd();      //inisialisasi LCD
    hitung=0;        //reset nilai hitung (=0)
    lcd_goto(line1+0);   //LCD baris 1 kolom 1
    lcd_puts(" -= BLACKBOX =- ");   //tampilkan string
    for(;;)
    {
        hitung++;      //hitung=hitung+1
        lcd_goto(line2+7);    // LCD baris 2 kolom 8
        lcdbyte(hitung);   //tampilkan nilai hitung
        _delay_ms(1000);  //delay 1000ms
    }
}

Merupakan program utama yang di looping terus menerus. Listing yang dieksekusi yang dieksekusi ada pada listing setelah kalang for(;;) yang intinya membuat hitungan yang meng-increament variabel hitung kemudian tampilkan ke LCD.

Program dan design proteus bisa di download di sini.

Demikian.. Semoga bermanfaat dan bisa dijadikan Referensi. ditunggu komentarnya.. :)

Related Post:

4 comments:

  1. berhasil mas primzz. siphh
    nganu klo cara buat librari lcd bs ga mas bro ?panjang banget e programe.he2
    request

    ReplyDelete
  2. siiip..
    waaah masih dalam tahap belajar ni bro..tar klo udah bisa ta kabari..hehe

    ReplyDelete
  3. Mas. saya mau nanya gmn komunikasi serial 2 avr.. saya mau menampilkan data dari keypad.. mohon bantuannya ya mas.. salam .. thanks b4

    ReplyDelete
    Replies
    1. boleh mas ditunggu saja posting selanjutnya.. :)

      Delete