Kemudahan Memprogram LCD (Bagian II)

Merujuk pada tulisan saya terdahulu, serta beberapa komentator yang menanyakan program, maka pada tulisan kali ini saya akan memberikan contoh program (berdasarkan rutin siap pakai dari beberapa situs serta rutin yang built in
dari compiler tertentu) utk interfacing dengan lcd dengan berbagai macam compiler disesuaikan dengan mikrokontroller yang digunakan (MCS51 atau AVR RISC 8 bit).

Seperti yang saya paparkan pada postingan terdahulu, bahwa ada 2 cara utk berkomunikasi dengan LCD, yaitu 8 bit dan 4 bit jalur data. Selain 8 atau 4 jalur yang terhubung dengan kontroler, dibutuhkan 3 jalur lagi untuk kontrol, yaitu RS, RW dan EN.

Untuk MCS51 :

  1. Dalam Assembler Ada banyak rutin siap pakai di http://8052.com/codelib.phtml Yang sudah saya coba : http://8052.com/codelib/lcd_kepad.asm, rutin ini untuk komunikasi 8 bit. Jika menggunakan LCD 2 x 16, tidak perlu ada modifikasi pada rutin INITIALIZE. Contoh penggunaannya :
    ...
    DATA   EQU PORTx     ;misal x adalah PORT1
    LCD_RS EQU PORTy.0   ;misal y adalah PORT2
    LCD_RW EQU PORTy.1
    LCD_EN EQU PORTy.2
    CALL INITIALIZE      ;inisialisasi LCD
    CALL CLEAR_SCREEN    ;bersihkan layar
    MOV A,#80h           ;mengisi 0x80 ke accumulator untuk menset
    CALL ADDRESS         ;alamat DDRAM LCD. Ini akan menset posisi
                         ;LCD pada baris 1 kolom 1.
    MOV A,#'g'           ;Menulis karakter 'g'
    CALL WRITE_ON        ;pada baris 1 kolom 1
    MOV DPTR,#str1       ;menset data pointer ke alamat dgn label str1
    CALL TRANSFER        ;mencetak string 'gedex
    ...
    str1:
    DB 'gedex',offh      ;rutin TRANSFER akan mencetak karakter per karakter
                         ;dan memerlukan byte 0xff utk menandakan akhir dari
                         ;string.
    ...

    Jika saat kompilasi timbul error yang berhubungan dengan baris yang terdapat kata DATA, maka penamaan DATA perlu di rubah. Di beberapa compiler,DATA merupakan reserved word.
    Catatan : Saya mengcompilenya dengan Pinnacle v52 (Evaluation) dan ASM51.
    Pada Pinnacle tidak ada masalah terhadap penamaan DATA. Pada ASM51 timbul error, sehingga penamaan DATA perlu di rubah.

  2. Menggunakan BASCOM 8051 IDE.
    Komunikasi yang digunakan bisa 8 bit atau 4 bit. Jika menggunakan komunikasi 4 bit, maka pin LCD untuk data yang digunakan adalah DB4-DB7. Konfigurasi pin LCD ke port kontroller di inisialisasi dengan statement Config Lcdpin, misal :

    Config Lcdpin = Pin ,Db4 = P3.4,Db5 = P3.5,Db6 = P3.6,Db7 = P3.7,E = P2.4,Rs = P2.0

    Dengan pin RW terhubung ground. Tipe LCD yang digunakan diinisialisasi dengan statement Config LCD, misal :

    Config Lcd = 16 * 2

    Setelah pemanggilan statement di atas, LCD siap dikirimi data atau instruksi. BASCOM juga telah menyediakan syntax yang berhubungan dengan LCD seperti :
    CLS : untuk membersihkan layar
    CURSOR : dengan parameter ON/OFF, BLINK/NOBLINK
    LOCATE y,x : untuk memindahkan kursor ke posisi tertentu.
    LCD : mencetak konstanta atau variabel ke tampilan LCD.
    dsb.. Contoh penggunaannya :

    ...
    Config Lcdpin = Pin , Db4 = P3.4 , Db5 = P3.5 , Db6 = P3.6 , Db7 = P3.7 , E = P2.4 , Rs = P2.0
    Config Lcd = 16 * 2
    Cursor Off
    Cls
    Locate 1 , 1 : Lcd "gedex"
    Locate 2 , 1 : Lcd "C"; "o"; "o"; "L"
    ...

    Komunikasi secara 8 bit pada BASCOM direkomendasikan untuk berkomunikasi dengan mikroprosesor, dimana DB0-DB7 harus terhubung dengan D0-D7 dan RS / EN dengan jalur A0. Saya sendiri belum pernah mencobanya.
    Catatan : Saya menggunakan BASCOM 8051 v2.0.11.0 Serial Demo.

Untuk AVR RISC Microcontroller 8 bit :

  1. Menggunakan AVR Studio
    Rutin dari OMIDKOMPANI, dapat di download di http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=904&item_type=project
  2. Menggunakan WinAVR
    Rutin dari by iamgotzaa. Contoh pada program main nya akan menampilkan hasil sampling ADC ke LCD. dapat di download di http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=440&item_type=project
    Rutin dari nasi, dapat didownload di : http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=293&item_type=project
  3. BASCOM utk AVR
    Penggunaannya hampir sama dengan BASCOM 8051 IDE
  4. Menggunakan CodeVisionAVR
    CodeVision menyediakan wizard, CodeWizardAVR, untuk menggenerate baris kode untuk mendefiniskan LCD. Interfacing ke LCD ini membutuhkan 7 pin pada port yang sama. Misal digunakan PORTB untuk LCD port, maka konfigurasi pin antara LCD dan chip AVR adalah :
    PORTB.0 : RS
    PORTB.1 : RW
    PORTB.2 : EN
    PORTB.4 : DB4
    PORTB.5 : DB5
    PORTB.6 : DB6
    PORTB.7 : DB7
    Langkah-langkah menggunakan CodeWizardAVR untuk LCD :

    1. Pilih Create new file
      Create New File
    2. Pilih File type project
      File type project
      Lalu pilih yes untuk menggunakan CodeWizardAVRPilih yes untuk menggunakan CodeWizardAVR
    3. Akan muncul jendela seperti gambar di bawah ini. Pilih chip yang digunakan serta clock yang dipakai. Misal menggunakan ATMega16 dengan frekuensi clock 4 MHz
      tampilan jendela untuk CodeWizardAVR
    4. Pindah ke tab LCD, pilih port yang akan di gunakan untuk LCD port. Misal pada PORTB, maka hubungan pin antara LCD dan PORTB akan ditampilkan.
      tab LCD pada CodeWizardAVR

Menggunakan rutin LCD yang sudah built in dari compiler tertentu dapat mempermudah pekerjaan dan menghemat waktu. Jika LCD yang digunakan hanya digunakan sesaat, misal nya hanya untuk debug data dari sensor atau bagian sistem yg tidak significant, maka saya menyarankan untuk menggunakan rutin bawaan dari compiler dengan komunikasi 4 bit. Gambar di bawah ini adalah LCD yang biasa saya pakai untuk memonitor nilai sensor atau debug sistem.

My typical lcd used for debuging

About gedex

Hi, my name is Akeda Bagus, some friends on the net called me gedex. More about Akeda Bagus
This entry was posted in coding, elec, knowledge, tutorial AVR. Bookmark the permalink.

94 Responses to Kemudahan Memprogram LCD (Bagian II)

  1. IFUNG says:

    mas q mo nanya, programnya LCD 2*16 dengan menggunakan BASCOM AVR agar bisa menampilkan teks dan gambar, tuh gimana? (mikro pake ATMEGA16)

    trus aq lagi nyobak sensor ADXL202E, saya buat aplikasi untuk mengukur sudut (waterpass digital), keluaran dari ADXL202E ini berupa PWM, bagai mana cara outputan sensor ini di baca oleh mikro? sekalian programnya ya…hehehe

    thenks 4 all.

    capunk

  2. bernard says:

    boss minta bantuan nich
    aku lagi bikin alat monitoring outputnya pake lcd
    nah kalo misalkan kita mo nampilin kondisi alat yang kita monitoring misalnya “lampu rusak” berdasarkan input dari lampu yang kita monitor gimana tuh boss
    help me plz
    kalo balaes ke email aku boss
    thx banget

  3. B-jhee says:

    Mas,
    saya mo nampilkan tulisan A
    setelah saya compile dengan asm.51
    ternyata banyak errors nya…..

    org 0h
    call init_LCD
    start: mov R1,#80h ; Lokasi Display RAM, Row=1 Col=1
    call write_inst
    mov R1,#’A’ ; Cetak Karakter A
    call write_data
    stop: sjmp start

    Init_lcd:
    mov r1,#00000001b ;Display clear
    call write_inst ;
    mov r1,#00111000b ;Function set,;Data 8 bit,2 line font 5×7
    call write_inst ;
    mov r1,#00001100b ;Display on, ;cursor off,cursor blink off
    call write_inst
    mov r1,#00000110b ;Entry mode, Set increment
    call write_inst
    ret
    ;
    Write_inst:
    clr P3.6 ; P3.6 = RS =0
    mov P0,R1 ; P0 = D7 s/d D0 = R1
    setb P3.7 ; P3.7 =EN = 1
    call delay ; call delay time
    clr P3.7 ; P3.7 =EN = 0
    ret
    ;
    Write_data:
    setb P3.6 ; P3.6 = RS =1
    mov P0,R1 ; P0 = D7 s/d D0 = R1
    setb P3.7 ; P3.7 =EN = 1
    call delay ; call delay time
    clr p3.7 ; P3.7 =EN = 0
    ret
    ;
    delay: mov R0,#0
    delay1:mov R7,#0fh
    djnz R7,$
    djnz R0,delay1
    ret
    ;
    end

    best regard

  4. gedex says:

    @Putra
    1. programnya bisa pake program sy di atas
    2. cara kerjanya bs baca tulisan saya sebelumnya bg I
    3. blok diagram LCD, biasanya masuk ke output / display

    @juno
    sudah keterima kan?

    @B-jhee
    pakai programnya yg mana? Coba di post disini, sekalian skrinsut tampilan klo bs

  5. B-jhee says:

    ade,
    Mas saya mo bikin TA tulisan berjalan menggunakan LCD 2×16 dengan assembler saya pakai port 0 pada AT89S51, saya sudah compile progamnya
    dengan menggunakna asm51 udah jalan tapi pada saat di run target (menjalankan program untuk ditampilkan ) kok ga mau ya???

  6. juno says:

    mas crnya subscribe paper anak its mengenai sensor garis putih yang dilink di blognya mas ini gimana ya, saya klik kok yang bisa dibaca cuman abstraknya aja. bales ya…thanx

  7. Putra says:

    salam kenal,
    saya lagi buat tulisan berjalan menggunakan LCD 2×16,
    dengan menggunakan IC AT89s51,pertanyaanya…
    1.Programnya gimana?
    2.cara kerjanya
    3.blok diagram kalu ada
    sebelumnya trima kasih banyak atas pencerahannya…

    salam
    putra

  8. gedex says:

    @panji
    Mungkin bisa ditengok di tulisan saya di http://gedex.web.id/archives/2007/06/22/boring-day/

  9. gedex says:

    klo sempet ya :p
    lg sibuk nih..

  10. panji says:

    boss , aq lagi buat jam digital dengan at89s52 + lcd 2×16 dengan RTC ds 1307 , aq mau tanya program LCD nya gimana , + minta tutorial bascom 8051 untuk cara penggunaan nya dunk, thank u , bales ke mail ku yach

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">