![]() |
|||||
|
Microcontroller Kits Simple
Mikrokontroller 89s51 Trainer
Super
Mikrokontroller Trainer 89s51
All Kits |
Percobaan 5.2. ADC0804 dan Display ke LCD Karakter 2x16 Pada percobaan ini, Data ADC dalam desimal akan ditampilkan pada LCD Karakter 2x16 pada Baris 1, Colom 1, 2 dan 3, yang masing-masing menampilkan data ratusan, puluhan dan satuan.
Untuk melakukan percobaan ini lakukan beberapa langkah
sebagai berikut: ratusan equ 30h
puluhan equ 31h
satuan equ 32h
;
org 0h
call init_LCD
call write_char
start: call ADC
call Bin2Dec
call Write2LCD
sjmp start
;
;=================================================
;Subrutin ini digunakan untuk mengambil data ADC
;=================================================
ADC: clr P3.3
nop
nop
nop
setb P3.3
eoc: jb P3.2,eoc
clr P3.4
mov A,P1
cpl A
mov P0,A
setb P3.4
ret
;
;============================================
;Subrutin untuk menampilkan data ke LCD character 2 x16
;pada DDRAM 0C9 0CA 0CB untukratusan, puluhan, and satuan
;============================================
Write2LCD:
mov r1,#0c9h
call write_inst
mov a,ratusan
add a,#30h
mov r1,a
call write_data
;
mov r1,#0cah
call write_inst
mov a,puluhan
add a,#30h
mov r1,a
call write_data
;
mov r1,#0cbh
call write_inst
mov a,satuan
add a,#30h
mov r1,a
call write_data
ret
;
;==================================
;Subrutin ini untuk merubah data biner ke desimal
;menjadi 3 digit = ratusan-puluhan-satuan
;==================================
Bin2Dec:
mov b,#100d
div ab
mov ratusan,a
mov a,b
mov b,#10d
div ab
mov puluhan,a
mov satuan,b
ret
;
;===================================
;Subrutin untuk menampilkan tulisan Data ADC0804
; pada baris 1
;===================================
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,2 line font 5x7
call write_inst
mov r1,#00001100b ;Display on, cursor off,cursor blink off
call write_inst
mov r1,#00000110b ;Entry mode, Set increment
call write_inst
ret
;
write_inst:
clr P3.6 ; RS = P2.0 = 0, write mode instruction
mov P0,R1 ; D7 s/d D0 = P0 = R1
setb P3.7 ; EN = 1 = P2.1
call delay ; call delay time
clr P3.7 ; EN = 0 = P2.1
ret
;
Write_data:
setb P3.6 ; RS = P2.0 = 1, write mode data
mov P0,R1 ; D7 s/d D0 = P0 = R1
setb P3.7 ; EN = 1 = P2.1
call delay ; call delay time
clr p3.7 ; EN = 0 = P2.1
ret
;
delay: mov R0,#0
delay1:mov R2,#0fh
djnz R2,$
djnz R0,delay1
ret
;
word1: DB ' Data ADC0804 '
end
7. Simpanlah program yang anda ketik dan beri nama
: prog52a.asm
Komentar, pertanyaan dan diskusi tentang topik tersebut. Klik disini
|
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
|
|||