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:
Gambar 4.2.
Modul LCD Karakter 2x16
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
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
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 di tampilkan
B : karakter ditunjukan pada kursor yang berkedip
B = 1, kursor blink
clear display
perintah ini hapus layar
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
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
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
*.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:
Tidak ada komentar:
Posting Komentar