lcd 2 x 16 Karakter
TUJUAN:
1.
Mahasiswa memahami rangkaian interface mikrokontroller dengan LCD Karakter
2 x 16
2.
Mahasiswa dapat memahami program assembly untuk menampilkan
data ke LCD Karakter 2 x 16
3.
Mahasiswa memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, dan
waktu tunda. 4. Mahasiswa
memahami mencetak karakter pada posisi baris dan
kolom tertentu
Gambar
4.1. Rangkaian interface ke LCD Karakter 2 x16
Modul
LCD Character dapat dengan mudah dihubungkan dengan mikrokontroller seperti
AT89S51. LCD yang akan kita praktikumkan ini mempunyai lebar display 2 baris 16
kolom atau biasa disebut sebagai LCD Character 2x16, dengan 16 pin konektor,
yang didifinisikan sebagai berikut:
Display karakter pada LCD diatur oleh pin
EN, RS dan RW: Jalur EN dinamakan Enable. Jalur ini digunakan untuk memberitahu
LCD bahwa anda sedang mengirimkan sebuah data. Untuk mengirimkan data ke LCD,
maka melalui program EN harus dibuat logika low “0” dan set pada dua jalur
kontrol yang lain RS dan RW. Ketika dua jalur yang lain telah siap, set EN
dengan logika “1” dan tunggu untuk sejumlah waktu tertentu ( sesuai dengan
datasheet dari LCD tersebut ) dan berikutnya set EN ke logika low “0” lagi.
Jalur RS adalah jalur Register Select.
Ketika RS berlogika low “0”, data akan dianggap sebagi sebua perintah atau
instruksi khusus ( seperti clear screen, posisi kursor dll ). Ketika RS
berlogika high “1”, data yang dikirim adalah data text yang akan ditampilkan
pada display LCD. Sebagai contoh, untuk menampilkan huruf “T” pada layar LCD
maka RS harus diset logika high “1”.
Jalur RW adalah jalur kontrol Read/ Write.
Ketika RW berlogika low (0), maka informasi pada bus data akan dituliskan pada
layar LCD. Ketika RW berlogika high ”1”, maka program akan melakukan pembacaan
memori dari LCD. Sedangkan pada aplikasi umum pin RW selalu diberi logika low
”0”. Pada akhirnya, bus data terdiri dari 4 atau 8 jalur ( bergantung pada mode
operasi yang dipilih oleh user ). Pada kasus bus data 8 bit, jalur diacukan
sebagai DB0 s/d DB7 Beberapa perintah dasar yang harus dipahami adalah
inisialisasi LCD Character,
CATATAN:
X : Don‟t care
DL: Mengatur lebar data
DL=1, Lebar data interface 8 bit ( DB7 s/d
DB0)
DL=0, Lebar data interface 4 bit ( DB7 s/d
DB4)
Ketika menggunakan lebar data 4 bit, data
harus dikirimkan dua kali
N: Pengaktivan baris
N=0, 1 baris
N=1, 2 baris
F: Penentuan ukuran font karakter
F=0, 5x7
F=1, 5x8
Catatan:
I/D:
Increment/ decrement dari alamat DDRAM dengan 1 ketika kode karakter dituliskan
ke DDRAM.
I/D =
“0”, decrement
I/D=
“1”, increment
S:
Geser keseluruhan display kekanan dan kekiri
S=1,
geser kekiri atau kekanan bergantung pada I/D
S=0,
display tidak bergeser
D : Mengatur display
D
= 1,Display is ON
D
= 0, Display is OFF
Pada kasus ini data display masih tetap berada di
DDRAM, dan dapat ditampilkan kembali secara
langsung dengan mengatur D=1.
C :
Menampilkan kursor
C =
1, kursor ditampilkan
C = 0,
kursor tidak ditampilkan
B :
Karakter ditunjukkan dengan kursor yang berkedip
B=1,
kursor blink
Pada peta memori tersebut, daerah yang
berwarna biru ( 00 s/d 0F dan 40 s/d 4F ) adalah display yang tampak.
Sebagaimanan yang anda lihat, jumlahnya sebanyak 16 karakter per baris dengan
dua baris. Angka pada setiap kotak adalah alamat memori yang bersesuaian dengan
posisi dari layar. Demikianlah karakter pertama di sudut kiri atas adalah
menempati alamah 00h. Posisi karakter berikutnya adalah alamat 01h dan seterusnya.
Akan
tetapi, karakter pertama dari baris 2 sebagaimana yang ditunjukkan pada peta
memori adalah pada alamat 40h. Dimikianlah kita perlu untuk mengirim sebuah
perintah ke LCD untuk mangatur letak posisi kursor pada baris dan kolom
tertentu. Instruksi Set Posisi Kursor adalah 80h. Untuk ini kita perlu
menambahkan alamat lokasi dimana kita berharap untuk menempatkan kursor.Sebagai
contoh, kita ingin menampilkan kata ”World” pada baris ke dua pada posisi kolom
ke sepuluh. Sesuai peta memori, posisi karakter pada kolom 11 dari baris ke
dua, mempunyai alamat 4Ah, sehingga sebelum kita tulis kata ”World” pada LCD,
kita harus mengirim instruksi set posisi kursor, dan perintah untuk instruksi
ini adalah 80h ditambah dengan alamat 80h+4Ah =0Cah. Sehingga dengan mengirim
perintah Cah ke LCD, akan menempatkan kursor pada baris kedua dan kolom ke 11
dari DDRAM.
INISIALISASI
Sebelum
kita dapat menggunakan modul LCD, kita harus melakukan inisialisasi dan
mengkonfigurasikannya. Hal ini dijalankan dengan mengirimkan sejumlah instruksi
ke LCD. Antara lain: pengaturan lebar data interface 8 bit atau 4 bit data bus,
pemilihan ukuran font karakter 5x8 atau 5x7 dan lain-lain, dengan instruksi
sebagai berikut.
Init_lcd:
mov
r1,#00000001b ;Display clear
call
write_inst ;EN=pulse dan RS=0
mov
r1,#00111000b ;Function set, ;Data 8 bit,2 line font 5x7
call
write_inst ;Set bit EN=pulse dan RS=0
mov
r1,#00001100b ;Display on, ;cursor off,cursor blink off
call
write_inst ;EN=pulse dan RS=0
mov
r1,#00000110b ;Entry mode, Set increment
call
write_inst
ret
end
PERCOBAAN 1. TULIS
SEBUAH KARAKTER PADA LCD KARAKTER
Pada percobaan ini, karakter „A‟ akan
ditampilkan pada 7 Segmen Display 1 Untuk melakukan percobaan ini lakukan
beberapa langkah sebagai berikut:
1.
Pasang jumper LCD_EN, yang berfungsi untuk memberikan power supply +5V
2.
Hubungkan modul Microcontroller Trainer dengan power supply +5V
3.
Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
4. Buka
Program M-IDE Studio for MCS-51, sebagai editor dan compiler program
5.
Ketik program berikut ini:
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 stop
Init_lcd:
mov
r1,#00000001b ;Display clear
call
write_inst
mov
r1,#00111000b ;Function set,Data 8 bit,2 line font 5x7
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
6.
Simpanlah program yang anda ketik dan beri nama : prog41a.asm
7. Pada
program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi
program dari *.asm ke
*.hex.
8.
Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP
Software ( Lihat
Petunjuk Penggunaan)
9.
Lakukan pengamatan pada LED.
10.
Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai
tabel:
PERCOBAAN 2. TULIS
DELAPAN KARAKTER PADA LCD KARAKTER
Pada percobaan ini, karakter „A‟ akan
ditampilkan pada 7 Segmen Display 1 Untuk melakukan percobaan ini lakukan
beberapa langkah sebagai berikut:
1. Pasang jumper LCD_EN, yang berfungsi
untuk memberikan power supply +5V
2. Hubungkan modul Microcontroller Trainer
dengan power supply +5V
3. Hubungkan modul Microcontroller Trainer
dengan rangkaian programmer
4. Buka Program M-IDE Studio for MCS-51,
sebagai editor dan compiler program
5. Ketik program berikut ini:
$mod51
org 0h
call init_LCD
start: mov R1,#80h ; Lokasi Display RAM,
Row=1 Col=1
call write_inst
mov R1,#'W'
call write_data
mov R1,#'e'
call write_data
mov R1,#'l'
call write_data
mov R1,#'c'
call write_data
mov R1,#'o'
call write_data
mov R1,#'m'
call write_data
mov R1,#'e'
call write_data
stop: sjmp stop
Init_lcd:
mov r1,#00000001b ;Display clear
call write_inst
mov r1,#00111000b ;Function set, Data 8
bit,2 line font 5x7
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
6. Simpanlah program yang anda ketik dan beri nama : prog42a.asm
7. Pada
program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi
program dari *.asm ke
*.hex.
8.
Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP
Software ( Lihat
Petunjuk Penggunaan)
9.
Lakukan pengamatan pada LED.
10.Lakukan
modifikasi pada program tersebut untuk mencetak karakter lain, sesuai
tabel:
PERCOBAAN 3. TULIS
KARAKTER DENGAN LOOK UP TABLE
Pada percobaan ini, karakter „A‟ akan
ditampilkan pada 7 Segmen Display 1 Untuk melakukan percobaan ini lakukan
beberapa langkah sebagai berikut:
1. Pasang jumper LCD_EN, yang berfungsi
untuk memberikan power supply +5V
2. Hubungkan modul Microcontroller Trainer
dengan power supply +5V
3. Hubungkan modul Microcontroller Trainer
dengan rangkaian programmer
4. Buka Program M-IDE Studio for MCS-51,
sebagai editor dan compiler program
5. Ketik program berikut ini:
$mod51
org 0h
call init_LCD
start: call write_char
stop: sjmp stop
;
write_char:
mov dptr,#word1 ;DPTR = [ address word1 ]
mov r3,#16 ;R3=16,number character to be display
mov
r1,#80h ;R1=80h,address DDRAM start position
call
write_inst
;
write1:clr
a ; A = 0
movc
a,@a+dptr ; A = [A+ DPTR]
mov r1,A
; R1 = A
inc
dptr ; DPTR = DPTR +1
call
write_data;
djnz
r3,write1 ; R3 = R3-1,
ret
;
Init_lcd:
mov
r1,#00000001b ;Display clear
call
write_inst ;
mov
r1,#00111000b ;Function set, Data 8 bit,2 line font 5x7
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
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
;
word1:
DB ' Welcome Home '; Karakter yang disimpan di ROM
;
end
6. Simpanlah program yang anda ketik dan beri nama : prog43a.asm
7. Pada
program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi
program dari
*.asm ke *.hex.
8.
Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP
Software ( Lihat
Petunjuk Penggunaan)
9.
Lakukan pengamatan pada LCD.
10.
Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai
tabel:
PERCOBAAN 4. PERINTAH
GESER SATU KARAKTER
Pada percobaan ini, karakter ”A”
akan ditampilkan pada layar LCD Karakter dan dilakukan proses geser ke kanan.
Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut:
1. Pasang jumper LCD_EN, yang berfungsi
untuk memberikan power supply +5V
2. Hubungkan modul Microcontroller Trainer
dengan power supply +5V
3. Hubungkan modul Microcontroller Trainer
dengan rangkaian programmer
4. Buka Program M-IDE Studio for MCS-51, sebagai
editor dan compiler program
5. Ketik program berikut ini:
$mod51
geserL equ 00011011b ; 0 0 0 1 S/C R/L X X
geserR equ 00011111b ; 0 0 0 1 S/C R/L X X
;
org 0h
call init_LCD
start: mov R1,#80h
call write_inst
mov R1,#'A' ; Karakter yang akan digeser
call write_data
;
mov R3,#40 ; 40x geser ke kanan
Next: mov R1,#geserR
call write_inst
call ldelay
djnz R3,next
sjmp start
;
Init_lcd:
mov r1,#00000001b
;Display clear
call write_inst ;
mov r1,#00111000b
;Function set,
;Data 8 bit,2
line font 5x7
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 ; RS = 0, write mode instruction
mov P0,R1
; D7 s/d D0 = P0 = R1
setb P3.7
; EN = 1
call delay
; call delay time
clr P3.7
; EN = 0
ret
;
Write_data:
setb P3.6
; RS = 1, write mode data
mov P0,R1
; D7 s/d D0 = P0 = R1
setb P3.7
; EN =1
call delay
; call delay time
clr p3.7 ; EN = 0
ret
;
Ldelay: mov R2,#030h
Ld1: call delay
djnz R2,Ld1
ret
;
delay: mov R0,#0
delay1:mov R7,#0fh
djnz R7,$
djnz R0,delay1
ret
;
end
PERCOBAAN 5. PERINTAH
GESER KALIMAT
Pada percobaan ini, kalimat ”Welcome home”
akan ditampilkan pada layar LCD Karakter dengan menggunakan look up table dan
dilakukan proses geser ke kiri. Untuk melakukan percobaan ini lakukan beberapa
langkah sebagai berikut:
1. Pasang jumper LCD_EN, yang berfungsi
untuk memberikan power supply +5V
2. Hubungkan modul Microcontroller Trainer
dengan power supply +5V
3. Hubungkan modul Microcontroller Trainer
dengan rangkaian programmer
4. Buka Program M-IDE Studio for MCS-51,
sebagai editor dan compiler program
5. Ketik program berikut ini:
$mod51
geserL equ 00011011b ; 0 0 0 1 S/C R/L X X
geserR equ 00011111b ; 0 0 0 1 S/C R/L X X
org 0h
call init_LCD
start: call write_char
call geser
sjmp start
;
geser:
mov R6,#40 ;R7 = 40 ; geser
sebanyak 40 karakter
lagi: mov R1,#geserL ;R1 =
GeserLeft
call write_inst
call ldelay
djnz R6,lagi
;R7=R7-1, jika R7 ? 0 maka lompat ke
lagi
write_char:
mov dptr,#word1
;DPTR = [ address word1 ]
mov r3,#16
;R3=16,number character to be
display
mov r1,#80h
;R1=80h,address DDRAM start position
call write_inst
;
write1:clr a
; A = 0
movc
a,@a+dptr ; A = [A+ DPTR]
mov
r1,A ; R1 = A
inc
dptr ; DPTR = DPTR +1
call
write_data;
djnz
r3,write1 ; R3 = R3-1,
ret
;
Init_lcd:
mov
r1,#00000001b ;Display clear
call
write_inst ;
mov
r1,#00111000b ;Function set,
;Data 8
bit,2 line font 5x7
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 ; RS = P2.0 = 0, write mode instruction
mov
P0,R1 ; D7 s/d D0 = P0 = R1
setb
P3.7 ; EN = 1 = P2.1
call
delay ; call delay time
clr
P3.7 ; EN = 0 = P2.1
ret
;
Write_data:
setb
P3.6 ; RS = P2.0 = 1, write mode data
mov
P0,R1 ; D7 s/d D0 = P0 = R1
setb
P3.7 ; EN = 1 = P2.1
call
delay ; call delay time
clr
p3.7 ; EN = 0 = P2.1
ret
;
Ldelay:
mov R2,#030h
Ld1:
acall delay
djnz
R2,Ld1
ret
delay:
mov R0,#0
delay1:
mov R7,#0fh
djnz
R7,$
djnz
R0,delay1
ret
;
word1:
DB ' Welcome Home '; here is the data to be look up
;
end
6. Simpanlah program yang anda ketik dan beri nama : prog44a.asm
7. Pada
program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program
dari *.asm ke *.hex.
8.
Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)
Tidak ada komentar:
Posting Komentar