Bagaimana Interface LCD 2×16 dengan Mikro Kontroler ATMega8535

INTERFACE LCD 2X16 DENGAN ASSEMBLER

Kali ini saya akan membahas Bagaimana Interface LCD 2×16 Dengan ATMega8535 Menggunakan AVR Studio 4. Pada postingan ini, saya akan mempraktekan bahasa pemrogram RAKITAN/ASSEMBLER untuk ATMega8535 yang sangat mudah digunakan di AVR STUDIO 4.

Pada postingan ini, kita akan coba menuliskan 2 baris kalimat di LCD melalui ATMega8535.

Hal-hal yang perlu disiapkan:

1. AVR Studio

2. Modul LCD 2×16

3. Downloader

4. Keperluan lainnya jika diperlukan

Langsung  saja, berikut adalah Konfigurasi Pin LCD 2×16

Konfigurasi Pin LCD 2×16
Konfigurasi PIN LCD 2x16

berikut adalah penjelasan masing-masing pin LCD 2×16 tersebut.

Pin LCD 2×16
Tabel Rincian

oke, sekarang sudah jelas masalah Pin LCD 2×16, sekarang untuk merangkainya, saya mendesainnya seperti berikut ini.

desain

Anda dapat mendesain sama seperti gambar di atas, atau disesuaikan dengan kebutuhan anda.

Sekarang buka AVR Studio Anda, kemudian berikut adalah kode program untuk interface LCD 2×16 dengan ATMega8535

 Kode Program

.include "m8535def.inc"
.equ timer_value = 0xffca
.equ timer_value100 = 0xfbaf
.cseg
.org 0x0000

rjmp main
main: 
	ldi r16,low(RAMEND)
	out SPL,r16
	ldi r16,high(RAMEND)
	out SPH,r16

	ldi r16,0xff
	out ddrb,r16
	rcall InitLCD

Start: 
	ldi r17,0x01
	rcall SLcd

Loopx: 
	ldi ZL,low(2*text)
	ldi ZH,high(2*text)
	rcall WM1LCD
	ldi ZL,low(2*text2)
	ldi ZH,high(2*text2)
	rcall WM2LCD

end: 
	rjmp Loopx

;-----------------------
; Write Message to LCD
;-----------------------
WM1LCD: 
	ldi r17,0x80 ;1st line, 1st col
	rcall SLcd
	rjmp Wr1

WM2LCD: 
	ldi r17,0xC0
	rcall SLcd

Wr1: 
	clr r1

LoopWr1: 
	lpm ;load program memory
	mov r19,r0
	cpi r19,0
	brne NextCHR
	ret

NextCHR: 
	rcall WLCD ;write character
	adiw ZL,1 ;get next char
	rjmp LoopWr1

;-----------------------
; Inisialisasi LCD
;-----------------------

InitLCD: 
	ldi r20,8
LoopDelay: 
	rcall delay5mS
	dec r20
	cpi r20,0
	brne LoopDelay

	ldi r17,0x03 ;Function set
	;ldi r17,0x30 ;Function set
	out Portb,r17
	sbi Portb,6 ;E=1
	cbi Portb,6 ;E=0
	rcall delay5mS

	ldi r17,0x03 ;Function set
	out Portb,r17
	sbi Portb,6 ;E=1
	cbi Portb,6 ;E=0
	rcall delay100uS
	
	ldi r17,0x02 ;Function set:4 bit operation
	out Portb,r17
	sbi Portb,6 ;E=1
	
	rcall delay100uS	; ini komentar sebenarnya
	cbi Portb,6 ;E=0
	ldi r17,0x28 ;Function set:4 bit op;2lines
	rcall SLcd
	
	ldi r17,0x08 ;Turn Off LCD
	rcall SLcd

	ldi r17,0x0C ;Turn On LCD
	rcall SLcd

	ldi r17,0x01 ;Clear Display
	rcall SLcd

	ldi r17,0x06 ;Entry mode set; Inc addr
	rcall SLcd
	ret

;-----------------------
; Rutin kirim instruksi
;-----------------------
SLcd: 
	mov r18,r17
	andi r18,$F0 ;Get high nibble
	swap r18
	out Portb,r18
	sbi Portb,6 ;E=1
	cbi Portb,6 ;E=0

	mov r18,r17
	andi r18,$0F ;Get low nibble
	out Portb,r18
	sbi Portb,6 ;E=1
	cbi Portb,6 ;E=0
	rcall delay100uS
	ret

;-----------------------
; Rutin kirim karakter
;-----------------------
WLcd: 
	mov r18,r19
	andi r18,$F0 ;Get high nibble
	swap r18
	out Portb,r18
	sbi Portb,4 ;RS=1
	sbi Portb,6 ;E=1
	cbi Portb,6 ;E=0

	mov r18,r19
	andi r18,$0F ;Get low nibble
	out Portb,r18

	sbi Portb,4 ;RS=1
	sbi Portb,6 ;E=1
	cbi Portb,6 ;E=0
	rcall delay100uS
	ret

;-----------------------
; Rutin delay 5ms
;-----------------------
delay5ms: 
	ldi r16,0b00000100
	out TIMSK,r16
	ldi r16,high(timer_value)
	out TCNT1H,r16
	ldi r16,low(timer_value)
	out TCNT1L,r16
	ldi r16,0b00000101
	out TCCR1B,r16
	loop: 
		in r21,TIFR
		sbrs r21,TOV1
		rjmp loop
		ldi r16,0b00000100
		out TIFR,r16

	ret
;-----------------------
; Rutin delay 100uS
;-----------------------
delay100us: ldi r16,0b00000100
out TIMSK,r16
ldi r16,high(timer_value100)
out TCNT1H,r16
ldi r16,low(timer_value100)
out TCNT1L,r16
ldi r16,0b00000001
out TCCR1B,r16
loop1: in r21,TIFR
sbrs r21,TOV1

rjmp loop1
ldi r16,0b00000100
out TIFR,r16
ret

; "12345678901234567890"
text: 	.db "PROGRAM LCDKU",0
text2: 	.db "ROY ROYESTA",0

Kode Program di atas, digunakan untuk menampilkan 2 baris kata “PROGRAM LCDKU” dan “ROY ROYESTA” pada LCD 2×16 pada ATMega8535 dengan ASSEMBLER.

Sekarang Build, dan coba download program ke ATMega8535. kode program di atas, sudah saya uji, dan di bawah ini adalah hasil akhirnya setelah program selesai di download ke ATMega8535.

HASIL INTERFACING LCD 2X16

Hasil Akhir

sampai disini dulu yah, selamat bereksperimen🙂

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s