Tutorial Microcontroller MCS-51 ATMEL ISP


Microcontroller Kits

Programmer and Target 89s51

Simple Mikrokontroller 89s51 Trainer


Standart
Mikrokontroller 89s51 Trainer

Super Mikrokontroller Trainer 89s51

Dot matrix Trainer
ATMEGA8

All Kits
+
Programmer via USB Port

 

 

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.


BACK

 

 

PERCOBAAN 1
LED

PERCOBAAN 2
SAKLAR

PERCOBAAN 3
7 Segmen

PERCOBAAN 4
LCD Character

PERCOBAAN 5
ADC

PERCOBAAN 6
DAC

PERCOBAAN 7
Keypad

PERCOBAAN 8
Motor Stepper

PERCOBAAN 9
Timer Counter

PERCOBAAN 10
Komunikasi Serial

PERCOBAAN 11
Interupsi

PERCOBAAN 12
Keyboard PC

PERCOBAAN 13
Printer Dot Matr.

PERCOBAAN 14
RTC12C887

PERCOBAAN 15
P W M

APLIKASI