![]() |
|||||
|
Microcontroller Kits Simple
Mikrokontroller 89s51 Trainer
Super
Mikrokontroller Trainer 89s51
All Kits |
Percobaan 14.2. Pengambilan data detik dan menit pada RTC12887 dengan display LCD Karakter 2x 16. Pada percobaan ini, data detik dan menit diambil dan ditampilkan pada
LCD Karakter 2x16.
Gambar 14.8 Interface LCD Carácter 2x16 1. Hubungkan jumper LCD_EN CS bit P3.3
ALE bit P3.2
Write bit P3.1
Read bit P3.0
PortRTC equ P2
RegisterA equ 10
RegisterB equ 11
Puluhan equ 30h
Satuan equ 31h
detik equ 32h
Menit equ 33h
org 0h
call init_LCD
call init_RTC
; call setDetik
; call setMenit
call write_char
start:
call readDetik
call bin2Dec
call write2LCDDetik
;
call readMenit
call bin2Dec
call write2LCDMenit
;
sjmp start
;
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
acall write_inst
;
write1:clr a ; A = 0
movc a,@a+dptr ; A = [A+ DPTR]
mov r1,A ; R1 = A
inc dptr ; DPTR = DPTR +1
acall 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,2linefont 5x7
call write_inst ;
mov r1,#00001100b ;Display on,cursor off,cursorblink 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
;
ReadDetik:
mov PortRTC,#00h ;00h = alamat detik pada RTC
clr ALE ;Penguncian alamat 0-1-0
setb ALE
clr ALE
setb Write ; sinyal write = 1
;
setb Read
clr Read ; sinyal read = 0
mov A,PortRTC ; Baca data dari alamat 00h = detik
setb Read
ret
;
ReadMenit:
mov PortRTC,#02h ; 00h = alamat detik pada RTC
clr ALE ; Penguncian alamat 0-1-0
setb ALE
clr ALE
setb Write ; sinyal write = 1
;
setb Read
clr Read ; sinyal read = 0
mov A,PortRTC ; Baca data dari alamat 00h = detik
setb Read
ret
;
init_RTC:
clr CS
setb Read
mov PortRTC,#RegisterA ;
clr ALE
setb ALE
clr ALE
;
setb WRite
clr Write
mov PortRTC,#20h
setb WRite
;
mov PortRTC,#RegisterB
clr ALE
setb ALE
clr ALE
;
setb WRite
clr WRite
mov PortRTC,#06h
setb WRite
RET
;
Bin2Dec:
mov b,#10d
div ab
mov puluhan,a
mov satuan,b
ret
;
Write2LCDDetik:
mov r1,#0c4h
call write_inst
mov a,Puluhan
add a,#30h
mov r1,a
call write_data
;
mov r1,#0c5h
call write_inst
mov a,Satuan
add a,#30h
mov r1,a
call write_data
ret
;
Write2LCDMenit:
mov r1,#0c2h
call write_inst
mov a,Puluhan
add a,#30h
mov r1,a
call write_data
;
mov r1,#0c3h
call write_inst
mov a,Satuan
add a,#30h
mov r1,a
call write_data
ret
;
setMenit:
setb Read
mov PortRTC,#02h;
clr ALE
setb ALE
clr ALE
;
setb WRite
clr Write
mov PortRTC,#21d
setb WRite
ret
;
setDetik:
setb Read
mov PortRTC,#00h;
clr ALE
setb ALE
clr ALE
;
setb WRite
clr Write
mov PortRTC,#00h
setb WRite
ret
word1: DB ' My RTC Test '; here is the data to be look up
end
7. Simpanlah program yang anda ketik dan beri nama
: prog142a.asm
|
HARDWARE PERCOBAAN 1 PERCOBAAN 2 PERCOBAAN 3 PERCOBAAN 5 PERCOBAAN 6 PERCOBAAN 7 PERCOBAAN 8 PERCOBAAN 9 PERCOBAAN 10 PERCOBAAN 11 PERCOBAAN 12 PERCOBAAN 13 PERCOBAAN 14 PERCOBAAN 15
|
|||