LCD biasanya digunakan dengan microcontroller,yang mana tidak bisa digunakan dengan standard rangkaian IC. LCD untuk menampilkan karakter, pesan teks dll.
model disini adalah yang murah, bagus capabilitasnya dan sering digunakan yaitu m1632 series yang menampilkan 2 line dengan 16 karakter per-linenya. Dapat menampilkan huruf , symbol matematika malahan bisa menampilkan symbol yang dibuat sendiri. kegunaan lainjuga ada feature automatis message geser kanan atau kiri, menampakkan kursor, LED backlight dll.
LCD pin
berikut adalah table dari aplikasi 16 pin pada LCD :
Screen pada LCD
Tiap karakter terdiri dari 5x8 atau 5x11 dot matrix. display contrast bergantung pada supply tegangan yang diatur trimer potensiometer . beberapa lcd terdapat built in backlight seperti hijau atau biru.
LCD memory
LCD display berisi 3 memory block;
> DDRAM display data RAM
> CGRAM character generator RAM
> CGROM character generator ROM
DDRAM Memory
Digunakan untuk menyimpan karakter yang akan ditampilkan. kapasitas memory ini adalah 80 karakter
Cara kerjanya sederhana.konfigurasikan display increment address automatis geser kanan, dan set start address untuk message yang akan ditampilkan ( contoh dari 00H + 80H = 80h ) untuk line 1, untuk line 2 40h+80h=C0h. Setelah itu kirim karakter melalui d0-d7.jika mengirim lebih dari 16 karakter, hanya 16 yang pertama yang tampil, sisanya menggunakan shift command.
CGROM Memory
Berisi default karakter map dengan semua karakter dapat ditampilkan di screen. Alamat dari CGROM adalah sama dengan karakter dari ASCI. berikut tablenya :
CGRAM Memory
Bagian dari standard karakter, LCD display menampilkan symbol yang didefinisikan sendiri dapat berupa symbol apa saja dalam size 5x8 pixel. RAM memory CGRAM sizenya 64 bytes.
memory register lebar 8 bits, tetapi hanya 5 bit lower yang digunakan. logic 1 dalam setiap register mewakili dimmed dot. sementara 8 lokasi digroup bersama mewakili1 karakter. ilustrasinya seperti ini:
LCD BAsic Command
Semua data ditransfer ke LCD melalui d0-d7 akan diartikan sebagai command atau data itu tergantung dari RS logic state.
RS=1 -bits d0-d7 diartikan sebagai data
RS=0 -bits dd0-d7 dartikan sebagai command yang menentukan display mode.
Busy flag
dibandingkan dengan microcontroller, lcd adalah componen yang sangat lambat . jadi penting untuk menyediakan signal yang mengindikasikan lcd siap menerima data baru. signal inni dapat dibaca dari d7. saat BF bit =0 lcd siap menerima data baru.
Koneksi LCD
bisa mengunakan 4 bit atau 8 bit mode. mode ini diinisialisasi pada pengoperasian awal.
contoh pemrograman 8 bit mode :
$include(reg51.inc)
;8 bit LCD routines with check busy flag before sending data, command to LCD
;*************************************************************
LCD DATA P2 ;define LCD data port on port 1
BUSY BIT LCD.7 ;define LCD busy flag
RS BIT P0.0 ;define LCD register select pin
RW BIT P0.1 ;define LCD read/write pin
E BIT P0.2 ;define LCD enable pin
;*************************************************************
ORG 00H
ACALL LCD_INIT
TAMPIL:
MOV A,#80H
ACALL COMMAND
MOV DPTR,#TEST
ACALL DISP_STRING
MOV A,#0C0H
ACALL COMMAND
MOV DPTR,#TEST1
ACALL DISP_STRING
MOV R2,#00H
ACALL DELAY
ACALL DELAY
ACALL SHIFT
TAMPIL1:
MOV A,#80H
ACALL COMMAND
MOV DPTR,#TEST2
ACALL DISP_STRING
MOV A,#0C0H
ACALL COMMAND
MOV DPTR,#TEST3
ACALL DISP_STRING
MOV R2,#00H
ACALL DELAY
ACALL DELAY
ACALL SHIFT
JMP TAMPIL
SHIFT:
ACALL DELAY
ACALL DELAY
MOV A,#18H
ACALL COMMAND
INC R2
CJNE R2,#0Fh,SHIFT
ACALL LCD_INIT
ACALL DELAY
RET
LCD_INIT:
MOV A,#01H ;Clear LCD
ACALL COMMAND
; MOV A,#02H ;Cursor home posisi
; MOV A,#04H ;Decrement cursor
; MOV A,#05H ;shift screen right
MOV A,#06H ;Increment cursor
; MOV A,#07H ;shift screen Left
ACALL COMMAND
; MOV A,#08H ;Display off, cursor off
; MOV A,#0AH ;Display off, cursor on
MOV A,#0CH ;Display on ,cursor off
ACALL COMMAND
; MOV A,#0EH ;Disply on, cursor blinking
; MOV A,#0FH ;Display on, cursor blinking
; MOV A,#10H ;shift cursor position to left
; MOV A,#14H ;shift cursor position to right
; MOV A,#18H ;shift display to left
; MOV A,#1CH ;shift display to right
; MOV A,#80H ;force cursor to begining 1st line
; MOV A,#C0H ;Force cursor to begining 2nd line
MOV A,#38H ;2 line 5x7 dot matrix 8 bit mode
ACALL COMMAND
RET
;=============================================================
COMMAND:
ACALL READY ;is LCD ready?
MOV LCD,A ;issue command code
CLR RS ;RS=0 for command
CLR RW ;R/W=0 to write to LCD|
SETB E ;E=1 for H-to-L pulse
CLR E ;E=0 ,latch in
RET
;=============================================================
DISPLAY:
ACALL READY ;is LCD ready?
MOV LCD,A ;issue data
SETB RS ;RS=1 for data
CLR RW ;R/W=0 to write to LCD
SETB E ;E=1 for H-to-L pulse
CLR E ;E=0 ,latch in
RET
;=============================================================
READY:
SETB BUSY ;make lcd.7 input port
CLR RS ;RS=0 access command reg
SETB RW ;R/W=1 read command reg
;read command reg and check busy flag
BACK:
CLR E ;E=1 for H-to-L pulse
SETB E ;E=0 H-to-l pulse
JB BUSY,BACK ;stay until busy flag=0
RET
;=============================================================
DISP_STRING:
CLR A ;A=0
MOV R7,#00H ;R7=0
NEXT_CHAR:
INC R7 ;R7+1
MOVC A,@A+DPTR
ACALL DISPLAY
MOV A,R7
CJNE R7,#0FH,NEXT_CHAR
RET
;===========================================================
delay: mov r6,#0ffh
delay1: mov r7,#0ffh
delay2: djnz r7,delay2
djnz r6,delay1
ret
;=============================================================
TEST: DB "Interfacing LCD "
TEST1: DB "8 bit mode "
TEST2: DB " Send Text "
TEST3: DB " Hello Word "
;=============================================================
END
Tidak ada komentar:
Posting Komentar