Anda di halaman 1dari 8

LCD

A.c DASAR TEORI


LCD (Liquid Crystal Display) merupakan komponen yang dapat menampilkan
suatu nilai hasil sensor, menampilkan teks, atau menampilkan menu pada aplikasi
mikrokontroler. LCD yang akan digunakan adalah jenis LCD M1632, yang merupakan
modul LCD dengan tampilan 16x2 baris dengan konsumsi daya rendah. Modul tersebut
dilengkapi dengan mikrokontroler yang didesain khusus untuk mengendalikan LCD.
x.c Memori
Yang menjadi pengendali LCD adalah mikrokontroler HD44780 yang memiliki
CGROM (Character Generator Read Only Memory), CGRAM (Character Generator
Random Access Memory), dan DDRAM (Display Data Random Access Memory).
Berikut ini merupakan bagian-bagian dari LCD M1632:
6. c DDRAM
DDRAM merupakan memori tempat karakter yang ditampilkan berada. Contoh,
untuk karekter µL¶ atau 4CH yang ditulis pada alamat 00, karakter tersebut akan
tampil pada baris pertama dan kolom pertama pada LCD. Apabila karakter tersebut
ditulis pada alamat 40, maka karakter tersebut akan tampil pada baris kedua kolom
pertama dari LCD.
ë.c CGRAM
CGRAM merupakan memori untuk membuat bentuk karakter yang dapat diubah-
ubah sesuai keinginan. Karakter yang disimpan di CGRAM akan hilang apabila
tidak ada power supply, karena memori RAM bersifat tidak permanen.
£.c CGROM
Merupakan memori yang menyimpan karakter-karakter yang sudah permanen ada
di dalam LCD, sehingga tidak dapat diubah-ubah lagi bentuknya oleh pengguna.
Namun karena ROM bersifat permanen, pola karakter tersebut tidak akan hilang
saat tidak ada catuan daya.

c
G6më6r 4.x Hubungan Antara CGROM dan DDRAM

LCD memiliki 16 kaki pin yang memiliki fungsi masing-masing. STAL DISPLAY

G6më6r 4.2 Konfigurasi Pin LCD 16 Karakter x 2 Baris

c
T6ëel 4.x Konfigurasi Pin LCD

2.c Register
HD44780 memiliki dua buah register yang aksesnya diatur menggunakan kaki RS.
Pada saat RS berlogika 0, yang diakses adalah register perintah. Saat RS berlogika 1,
yang diakses adalah register data.
6. c Register Perint6
Register yang berisi perintah-perintah dari mikrokontroler ke HD44780 pada saat
proses penulisan data atau tempat status dari HD44780 dapat dibaca pada saat
pembacaan data.
xcPenulis6n D6t6 ke Register Perint6
Penulisan data ke register perintah dilakukan dengan tujuan mengatur tampilan
LCD, inisialisasi, dan mengatur Address Counter maupun Address Data.
Kondisi RS dengan logika 0 berarti terjadi akses data ke register perintah. RW
berlogika 0 berarti proses penulisan data akan dilakukan.
Pada Mode 4 bit interface, data dikirimkan secara terpisah. Nible tinggi (bit7
sampai bit4) dikirimkan terlebih dahulu dengan diawali pulsa logika 1 pada E
Clock. Kemudian, nible rendah (bit3 sampai bit0) dikirimkan dengan diawali
pulsa logika 1 pada E Clock. Pada Mode 8 bit interface, proses penulisan dapat
langsung dilakukan sekaligus 8 bit (bit7 « bit0) dan diawali pulsa logika 1 pada
E Clock.
2cPemë6£66n D6t6 d6ri Register Perint6
Pembacaan data pada register perintah biasanya dilakukan untuk melihat status
ëusy dari LCD atau membaca Address Counter. RS diberi logika 0 untuk akses
ke register perintah, dan R/W diberi logika 1 agar terjadi proses pembacaan data.
Pada Mode 4 bit interface, pembacaan 4 bit nibble tinggi diawali pulsa logika 1
pada E Clock dan kemudian 4 bit nibble rendah dengan diawali pulsa logika 1
c
pada E Clock. Untuk Mode 8 bit "nterface, pembacaan 8dilakukan langsung 8
bit, dengan diawali sebuah pulsa logika 1 pada E Clock.

T6ëel 4.2 Perintah-perintah M1632


Perint6 D7 D6 D5 D4 D3 D2 Dx D0 Deskripsi
Hapus Display 0 0 0 0 0 0 0 1 Hapus display dan
DDRAM
Posisi Awal 0 0 0 0 0 0 1 x Set alamat DDRAM di 0
Set Mode 0 0 0 0 0 1 I/D S Atur arah pergeseran
cursor dan display
Display 0 0 0 0 1 D C B Atur display (D) ON/OFF,
ON/OFF cursor (C) ON/OFF,
blinking (B) ON/OFF
Geser 0 0 0 1 S/ R/ X X Geser cursor atau display
Cursor/Display C L tanpa mengubah alamat
DDRAM
Set Fungsi 0 0 1 DL N F X X Atur panjang data (DL),
jumlah baris yang tampil
(N), dan font karakter (F)
Set Alamat 0 1 A AC A A AC AC Data dapat dibaca atau
CGRAM C G C C G G ditulis setelah alamat diatur
G G G
Set Alamat 1 A A A A A AD AD Data dapat dibaca atau
DDRAM D D D D D D D ditulis setelah alamat diatur
D D D D D

I/D : 1 = increment 0 = decrement


S : 1 = display bergeser 0 = display tidak bergeser
S/C : 1 = display shift 0 = geser cursor
R/L : 1 = geser kiri 0 = geser kanan
DL : 1 = 8 bit 0 = 4 bit
N : 1 = 2 baris 0 = 1 baris
F : 1 = 5x10 0 = 5x8
D : 1 = display ON 0 = display OFF
C : 1 = cursor ON 0 = cursor OFF
B : 1 = blinking ON 0 = blinking OFF

ë.c Register D6t6


Register Data ialah register untuk menuliskan atau membaca data dari atau ke
DDRAM. Penulisan data pada register akan menempatkan data tersebut ke
DDRAM sesuai dengan alamat yang telah diatur sebelumnya.

c
xcPenulis6n D6t6 ke Register D6t6
Penulisan data ke register data dilakukan mengirimkan data yang akan
ditampilkan di LCD. Kondisi RS dengan logika 1 berarti terjadi akses ke register
data. RW berlogika 0 berarti proses penulisan data akan dilakukan.
Pada mode 4 bit interface, data dikirimkan secara terpisah. Nible tinggi (bit7
sampai bit4) dikirimkan terlebih dahulu dengan diawali pulsa logika 1 pada E
Clock. Kemudian, nible rendah (bit3 sampai bit0) dikirimkan dengan diawali
pulsa logika 1 pada E Clock. Pada mode 8 bit interface, proses penulisan dapat
langsung dilakukan sekaligus 8 bit (bit7 « bit0) dan diawali pulsa logika 1 pada
E Clock.
2cPemë6£66n D6t6 d6ri Register D6t6
Pembacaan data pada register data biasanya dilakukan untuk membaca kembali
data yang telah ditampilkan di LCD. RS diberi logika 1 untuk akses ke register
data, dan R/W diberi logika 1 agar terjadi proses pembacaan data.
Pada mode 4 bit interface, pembacaan 4 bit nibble tinggi diawali pulsa logika 1
pada E Clock dan kemudian 4 bit nibble rendah dengan diawali pulsa logika 1
pada E Clock. Untuk mode 8 bit interface, pembacaan dapat dilakukan langsung
(8 bit), dengan diawali sebuah pulsa logika 1 pada E Clock.

3.c Conto Progr6m

.include "m8535def.inc" Loopx


.equ timer_value = 0xffca ldi ZL,low(2*text)
.equ timer_value100 = 0xfbaf ldi ZH,high(2*text)
.cseg rcall WM1LCD
ldi ZL,low(2*text2)
.org 0x0000 ldi ZH,high(2*text2)
rjmp main rcall WM2LCD
end:
main: rjmp Loopx
ldi r16,low(RAMEND)
out SPL,r16 ;-----------------------
ldi r16,high(RAMEND) ; Write Message to LCD
out SPH,r16 ;-----------------------
ldi r16,0xff WM1LCD:
out ddra,r16 ldi r17,0x80 ;1st line, 1st col
rcall InitLCD rcall SLcd
rjmp Wr1
Start:
ldi r17,0x01 WM2LCD:
rcall SLcd ldi r17,0xC0
rcall SLcd
c
Wr1: ldi r17,0x28 ;Function set:4 bit
clr r1 op;2lines
rcall SLcd
LoopWr1: ldi r17,0x08 ;Turn Off LCD
lpm ;load program memory rcall SLcd
mov r19,r0 ldi r17,0x0C ;Turn On LCD
cpi r19,0 rcall SLcd
brne NextCHR ldi r17,0x01 ;Clear Display
ret rcall SLcd
ldi r17,0x06 ;Entry mode set; Inc addr
NextCHR: rcall SLcd
rcall WLCD ;write character ret
adiw ZL,1 ;get next char
rjmp LoopWr1 ;-----------------------
; Rutin kirim instruksi
;----------------------- ;-----------------------
; Inisialisasi LCD SLcd:
;----------------------- mov r18,r17
InitLCD: andi r18,$F0 ;Get high nibble
ldi r20,8 swap r18
out PortA,r18
LoopDelay: sbi PortA,6 ;E=1
rcall delay5mS cbi PortA,6 ;E=0
dec r20 mov r18,r17
cpi r20,0 andi r18,$0F ;Get low nibble
brne LoopDelay out PortA,r18
ldi r17,0x03 ;Function set sbi PortA,6 ;E=1
out PortA,r17 cbi PortA,6 ;E=0
sbi PortA,6 ;E=1 rcall delay100uS
cbi PortA,6 ;E=0 ret
rcall delay5mS
ldi r17,0x03 ;Function set ;-----------------------
out PortA,r17 ; Rutin kirim karakter
sbi PortA,6 ;E=1 ;-----------------------
cbi PortA,6 ;E=0 WLcd:
rcall delay100uS mov r18,r19
ldi r17,0x02 ;Function set:4 bit andi r18,$F0 ;Get high nibble
operation swap r18
out PortA,r17 out PortA,r18
sbi PortA,6 ;E=1; rcall delay100uS sbi PortA,4 ;RS=1
cbi PortA,6 ;E=0 sbi PortA,6 ;E=1
cbi PortA,6 ;E=0
c
mov r18,r19 out TIFR,r16
andi r18,$0F ;Get low nibble ret
out PortA,r18
;-----------------------
sbi PortA,4 ;RS=1 ; Rutin delay 100uS
sbi PortA,6 ;E=1 ;-----------------------
cbi PortA,6 ;E=0 delay100us:
rcall delay100uS ldi r16,0b00000100
ret out TIMSK,r16
ldi r16,high(timer_value100)
;----------------------- out TCNT1H,r16
; Rutin delay 5ms ldi r16,low(timer_value100)
;----------------------- out TCNT1L,r16
delay5ms: ldi r16,0b00000001
ldi r16,0b00000100 out TCCR1B,r16
out TIMSK,r16
ldi r16,high(timer_value) loop1:
out TCNT1H,r16 in r21,TIFR
ldi r16,low(timer_value) sbrs r21,TOV1
out TCNT1L,r16 rjmp loop1
ldi r16,0b00000101 ldi r16,0b00000100
out TCCR1B,r16 out TIFR,r16
loop: ret
in r21,TIFR ; "12345678901234567890"
sbrs r21,TOV1 text: .db "Hello World",0
rjmp loop text2: .db "How Are You?´,0
ldi r16,0b00000100

C6t6t6n T6më6 6n:


Register X, Register Y d6n Register Z
Register R26«R31 memiliki fungsi tambahan sebagai register serbaguna. Register-
register ini dapat berfungsi sebagai register 16 bit yang dapat menyimpan address pada
operasi pemindahan data dalam mode indirect addressing.
LPM (Lo6d Progr6m Memory
Load 1 byte isi address yang ditunjukkan oleh register Z ke R0. Instruksi ini mirip
dengan instruksi mov A,@DPTR pada MCS-51. Contoh :
ldi ZL,low(2*text) ; ZL=00h
ldi ZH,high(2*text) ; ZH=10h
lpm ; r0=´H´ (Karakter H)
mov r19,r0 ; r19=´H´
.org 1000h
text: .db "Hello World",0
c
c

Anda mungkin juga menyukai