Pages

wayant

Selasa, 17 Juli 2012

TERMOMETER SUHU DENGAN DISPLAY LCD


 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