Вы находитесь на странице: 1из 4

Pengujian LCD karakter 2X16 dengan Program Sederhana menggunakan

Bahasa Program Assembly

Ngomong-ngomongin mikro jadi inget masa lalu nih saya. Pertama kali saya mencoba
LCD 2x16 dengan program Assembly. Langsung aja deh tanpa basa basi yg terlalu
panjaaaaang....panjang kaya punya saya yg banyak di sukai bidadari didunia...hehehe..(celana
panjang maksudnya)..hehehe. Saya punya contoh program sederhananya nih untuk ngetes LCD
berjalan dengan baik atau tidak....mudah-mudahan bermanfaat ye...??
Pengujian LCD karakter 2x16 dengan cara pembuatan perangkat lunak terlebih dahulu
untuk Menampilkan Data ke LCD Karakter 2x16. Hal ini dijalankan dengan mengirimkan
inisialisasi dan mengkonfigurasikan sejumlah instruksi ke LCD. Antara lain: pengaturan lebar
data interface 8 bit atau 4 bit data bus, pemilihan ukuran font karakter 5x8 atau 5x11 dan lainlain, dengan instruksi sebagai berikut.
Init_lcd:
mov r1,#00000001b

;Display clear

call write_inst ;
mov r1,#00111000b

;Function set,
;Data 8 bit,2 line font 5x8

call write_inst ;
mov r1,#00001100b

;Display on,
;cursor off,cursor blink off

call write_inst
mov r1,#00000111b

;Entry mode, Set increment

call write_inst
ret
;

Pada pembuatan perangkat lunak ini akan menuliskan kalimat GUNAWAN AMSARI
ELEKTRO yang akan ditampilkan pada layar LCD Karakter dengan menggunakan look up
table dan dilakukan proses geser ke kiri atau kekanan sesuai dengan keinginan kita hanya
merubah sedikit programnya aja c...dibagian : mov
R1,#geserL ;R1 = GeserLeft.

contoh hasilnya seperti ini :

1.
2.
3.
4.
5.

Untuk melakukan pembuatan perangkat lunak ini harus melakukan beberapa langkah
sebagai berikut:
Pasang jumper LCD_EN, yang berfungsi untuk memberikan power supply +5V
Hubungkan modul Mikrokontroler Trainer dengan power supply +5V.
Hubungkan modul Mikrokontroler Trainer dengan rangkaian programmer
Buka Program MCS-51, sebagai editor dan compiler program
Ketik program berikut ini:
$mod52
;
;
DataLCD
equ
30h
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
ljmp
startprogram
;;;;;;;;;;;;;;;;;;;;;;SUBROUTINES;;;;;;;;;;;;;;;;;;;;;;;;;;;
startprogram:
call
init_LCD
call
write_char
call
geser
sjmp
startprogram
ret
geser:
lagi:

;
write_char:
mov

mov
mov
call
call
djnz

R6,#34
;R6 = 34; geser sebanyak 34 karakter
R1,#geserL ;R1 = GeserLeft
write_inst
delay
R6,lagi
;R6=R6-1, jika R6 ? 0 maka lompat ke lagi

dptr,#word1 ;DPTR = [ address word1 ]

mov
mov
call
;
write1:clr
movc
mov
inc
call
djnz
ret
;
Init_lcd:
Mov
call
mov
Call
mov
Call
Mov
Call

r3,#35
r1,#80h
write_inst

;R3=40,number character to be display


;R1=80h,address DDRAM start position

a ; A= 0
a,@a+dptr ; A = [A+ DPTR]
r1,A
; R1 = A
dptr
; DPTR = DPTR +1
write_data ;
r3,write1
; R3 = R3-1,

r1,#00000001b ;Display clear


write_inst
;
r1,#00111000b ;Function set,
;Data 8 bit,2 line font 5x8
write_inst ;
r1,#00001100b ;Display on,
;cursor off,cursor blink off
write_inst
r1,#00000111b ;Entry mode, Set increment
write_inst

ret
;
Write_inst:
Clr
P3.6
; RS = P3.6= 0, write mode instruction
Mov
P0,R1
; D7 s/d D0 = P0 = R1
Setb
P3.7
; EN = 1 = P3.7
Call
delay
; call delay time
Clr
P3.7
; EN = 0 = P3.7
ret
;
Write_data:
Setb
P3.6
; RS = P3.6 = 1, write mode data
Mov
P0,R1
; D7 s/d D0 = P0 = R1
Setb
P3.7
; EN = 1 = P3.7
Call
delay
; call delay time
Clr
P3.7
; EN = 0 = P3.7
ret
;
word1: DB 'GUNAWAN AMSARI ELEKTRO'
;
Delay:
push
06h
push
07h
mov
r6,#080h
LDel:
mov
r7,#0ffh
djnz
r7,$
djnz
r6,LDel
pop
07h
pop
06h
ret
end

Kalau mau coba silahkan tinggal copy aja. Kalau mau merubah tulisan tinggal edit bagian
yang bertulisan GUNAWAN AMSARI ELEKTRO nya.

Вам также может понравиться