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
Gambar 4.2.
Modul LCD Karakter 2x16
Tabel 1.1
Pin dan Fungsi
PIN
|
Name
|
Function
|
1
|
VSS
|
Ground
voltage
|
2
|
VCC
|
+5V
|
3
|
VEE
|
Contrast
voltage
|
4
|
RS
|
Register
Select
0
= Instruction Register
1
= Data Register
|
5
|
R/W
|
Read/
Write, to choose write or read mode
0
= write mode
1
= read mode
|
6
|
E
|
Enable
0 = start to lacht data to LCD
character 1= disable
|
7 DB0
LSB
|
||
8
|
DB1
|
-
|
9
|
DB2
|
-
|
10
|
DB3
|
-
|
11
DB4
-
|
||
12
DB5
-
|
||
13
|
DB6
|
-
|
14
DB7
MSB
|
||
15
|
BPL
|
Back
Plane Light
|
16
|
GND
|
Ground
voltage
|
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,
Function Set
Mengatur interface lebar data,
jumlah dari baris dan ukuran font karakter
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
0
|
0
|
0
|
0
|
1
|
DL
|
N
|
F
|
X
|
X
|
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
Entry
Mode Set
Mengatur increment/ decrement dan
mode geser
|
|||||||||
RS R/W DB7 DB6 DB5 DB4 DB3
|
DB2
|
DB1
|
DB0
|
||||||
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
I/D
|
S
|
Catatan:
I/D: Increment/ decrement dari alamat
DDRAM dengan 1 ketika kode karakter ditu
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
Display
On/ Off Cursor
Mengatur status display ON atau
OFF, cursor ON/ OFF dan fungsi Cursor Blink
|
liskan ke DDRAM.
|
||||||||
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
D
|
C
|
B
|
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
Clear Display
Perintah ini hapus layar
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
Geser Kursor dan Display
Geser posisi kursor atau display ke
kanan atau kekiri tanpa menulis atau baca data display. Fungsi ini digunakan
untuk koreksi atau pencarian display
RS
|
R/W
|
DB7
|
DB6
|
DB5
|
DB4
|
DB3
|
DB2
|
DB1
|
DB0
|
0
|
0
|
0
|
0
|
0
|
1
|
S/C
|
R/L
|
X
|
X
|
Catatan : x = Dont care
S/C
|
R/L
|
Note
|
0
|
0
|
Shift
cursor position to the left
|
0
|
1
|
Shift
cursor position to the right
|
1
|
0
|
Shift
the entire display to the left
|
1
|
1
|
Shift
the entire display to the right
|
POSISI KURSOR
Modul LCD terdiri dari sejumlah memory yang digunakan untuk display.
Semua teks yang kita tuliskan ke modul LCD adalah disimpan didalam memory ini,
dan modul LCD secara berturutan membaca memory ini untuk menampilkan teks ke
modul LCD itu sendiri.
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.
Set Alamat Memori DDRAM
RS R/W DB7
|
DB6 DB5 DB4 DB3 DB2
|
DB1 DB0
|
|||||||
0
|
0
|
1
|
A
|
A
|
A
|
A
|
A
|
A
|
A
|
Catatan:
A : Alamat RAM yang akan dipilih
Sehingga alamat RAM LCD adalah 000
0000 S/D 111 1111 b atau 00 s/d 7Fh
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
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:
Nama Karakter
|
Posisi Display
|
1
|
Row
1, Col 2
|
Z
|
Row
1, Col 8
|
&
|
Row
2, Col 12
|
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:
Nama
Karakter
Start Posisi Display
|
|
Selamat Datang Row
1, Col 1
|
|
Mikrokontroller
|
Row
2, Col 1
|
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:
Nama Karakter
|
Start Posisi Display
|
Selamat
Datang
|
Row
1, Col 1
|
Mikrokontroller
|
Row
2, Col 1
|
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)
sumber : http://guru.technosains.com