Alat & Bahan:
- IC ATMEL AT89S51
- LM35
- LCD
- ADC 0804
- Variabel Resistor
- Kristal
- Resistor array
- Resistor
- Diode zener
- Soket IDC
- Soket IC
- Capasitor
- IC 7805
Gambar
Rangkaian
Program Microcontroller
;Program
Pembacaan ADC yang ditampilkan pada LCD
$MOD51
lcd equ p2
en_lcd bit p2.6
rw_lcd bit p2.5
rs_lcd bit p2.4
ADC equ p1
wr_adc bit p0.0
in_adc bit p0.1
start: call initlcd
call line1
mov dptr,#tbl1
call ctkrom
call line2
mov dptr,#tbl2
call ctkrom
call dl05
call dl05
call dl05
call dl05
ulang: call rd_adc
call dl05
jmp ulang
rd_adc: clr wr_adc ;start conv (Cs=0)
nop
setb wr_adc
jb in_adc,$ ;tunggu eoc
mov a,adc ;baca adc (rd=0)
cjne a,#100,$+3
jc lanjut ;<100 lanjut, tidak cetak
"Hi"
mov lcd,#4ch ;baris 2, kolom 9
call clk ;0100
1100
mov lcd,#49h ;0100 1001
call clk
call d100
mov a,#'H'
call cetak
mov a,#'i'
call cetak
ret
lanjut: mov b,#10
div ab ;a=ratusan , b=sisa
push acc
push b
call line2
mov dptr,#tbl3
call ctkrom
mov lcd,#4ch ;baris 2, kolom 9
call clk ;0100
1100
mov lcd,#49h ;0100 1001
call clk
call d100
pop b
pop acc
add a,#30h ;ubah ke ascii
call cetak
mov a,b
add a,#30h
call cetak
ret
dl05: mov r7,#5
dlyb: mov r6,#200
dlya: mov r5,#250
djnz r5,$
djnz r6,dlya
djnz r7,dlyb
ret
;initialisasi
LCD 4 bit interface ========LCD Start========
initlcd:mov
r6,#250 ;wait 25ms
dl2: call d100
djnz r6,dl2
mov lcd,#43h
CALL clk
mov r6,#41 ;4,1 ms
dl3: call d100
djnz r6,dl3
mov lcd,#43h
CALL clk
dl4: call d100 ;100 uS
mov lcd,#43h
CALL clk
call d100
mov lcd,#42h
CALL clk
call d100
mov lcd,#42h
CALL clk
CALL D100
mov lcd,#48h ;4bit, 2baris, 5x8
CALL clk
call d100
mov lcd,#40h ;display on
CALL clk
mov lcd,#4Ch ;cursor off
CALL clk
call d100
mov lcd,#40h ;display clear
CALL clk
mov lcd,#41h
CALL clk
mov r6,#16
dl16: call d100 ;wait 1.6 ms
djnz r6,dl16
ret
;Set
cursor pada LCD baris 1
line1: mov lcd,#48h ;Baris 1
call clk ;0100
1000
mov lcd,#40h ;0100 0000
call clk
call d100
ret
;Set
cursor pada LCD baris 2
line2: mov lcd,#4ch ;baris 2
call clk ;0100
1100
mov lcd,#40h ;0100 0000
call clk
call d100
ret
;cetak
data dari rom
ctkrom: mov a,#0
movc a,@a+dptr ;ambil data
dari rom
cjne a,#13,ljt1 ;jika
13, data habis
ret
ljt1: call cetak ;cetak
inc dptr ;data berikutnya
jmp ctkrom
;cetak
data dari ram
ctkram: mov a,@r0 ;ambil data dari ram
cjne a,#13,ljt2 ;13,
data habis
ret
ljt2: add a,#30h ;ubah ke ascii
call cetak ;cetak
inc r0 ;data berikutnya
jmp ctkram
;Cetak
ke lcd
cetak: push b
mov b,a ;simpan a
swap a
anl a,#0fh ;ambil high nible
orl a,#60h ;0, en=1, rs=1, rw=0
mov lcd,a ;kirim ke lcd
call clk ;aktifkan
enable
mov a,b ;siapkan low nible
anl a,#0fh ;ambil low nible
orl a,#60h
mov lcd,a
call clk
call d100 ;wait
100uS
pop b
ret
;clock
enable
clk: clr en_lcd ;enable = 0
nop
nop
setb en_lcd ;enable
= 1
RET
;delay
100uS
d100: mov r7,#50
djnz r7,$
ret ;========LCD
END========
tbl1: db ' Pengukur Suhu ',13
tbl2: db 'Elektro AT Warga',13
tbl3: db '
Suhu : XX ',0dfh,'C ',13
end
Layout PCB
ProgramP
0 komentar:
Posting Komentar