Percobaan 14.1. Pengambilan data detik pada RTC DS12887 dengan display LED
Pada percobaan ini, data detik RTC diambil dan dikeluarkan ke LED.
Gambar 14.7. Rangkaian interface ke LED
1. Hubungkan jumper LED_EN
2. Hubungkan kabel data dan kontrol pada board RTC
3. Hubungkan modul Microcontroller Trainer dengan power supply +5V
4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program
6. Ketik program berikut ini:(download file prog141a.asm)
CS bit P3.3
ALE bit P3.2
Write bit P3.1
Read bit P3.0
PortData equ P0
RegisterA equ 10
RegisterB equ 11
;
org 0h
clr CS ; Aktivkan RTC
call INIT_RTC
start: mov PortData,#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,PortData ; Baca data dari alamat 00h = detik
setb Read
;
mov P0,A ; simulasi data ke LED = P0
sjmp start
;
INIT_RTC:
setb Read
mov PortData,#RegisterA ;
clr ALE
setb ALE
clr ALE
;
setb WRite
clr Write
mov PortData,#20h
setb WRite
;
mov PortData,#RegisterB
clr ALE
setb ALE
clr ALE
;
setb WRite
clr WRite
mov PortData,#02h
setb WRite
;
RET
end
7. Simpanlah program yang anda ketik dan beri nama : prog141a.asm
8. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.
9. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)
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
2. Hubungkan kabel data dan kontrol pada board RTC ke rangkaian mikrokontroller
3. Hubungkan modul Microcontroller Trainer dengan power supply +5V
4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program
6. Ketik program berikut ini: (download file prog142a.asm)
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
8. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.
9. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)
10. Lakukan modifikasi pada program tersebut untuk memunculkan data jam, hari, bulan dan tahun pada LCD Karakter
11. Lakukan modifikasi pada program tersebut untuk menampilkan data detik dan menit pada rangkaian 7 segmen.
0 komentar:
Posting Komentar
Anda dapat menggunakan beberapa tag HTML, seperti <b>, <i>, <a>
Penting: Jika anda tidak memiliki account gmail pilih Name/URL pada form ini