E. DATA SHEET IC LM 35 F. DATA SHEET CA3140 G. DATA SHEET 74LS14 - PENGONTROLAN AC MOBIL BERDASARKAN KEMIRINGAN JALAN (TANJAKAN) - Unika Repository

  LAMPIRAN-LAMPIRAN A. LISTING PROGRAM PENGONTROLAN AC MOBIL BERDASARKAN KEMIRINGAN JALAN (TANJAKAN) B.GAMBAR RANGKAIAN PENGONTROLAN AC MOBIL BERDASARKAN KEMIRINGAN JALAN (TANJAKAN) C. DATA SHEET MIKROKONTROLER (AT89S52) D. DATA SHEET ADC0809 E. DATA SHEET IC LM 35 F. DATA SHEET CA3140 G. DATA SHEET 74LS14 Perpustakaan Unika

  Perpustakaan Unika

  EnLcd bit p1.1 ; program enable lcd di port 1.1 RSLcd bit p1.0 ; program RS lcd di port 1.0 KtrlMon bit 20h.3 ; label kontrolMonitor diisi pada bit 20.h.3 BKtrlMon bit P1.2 ; label blower kontrol/monitor di port 1.2 BAmanBlow bit P1.3 ; label blower auto/manual blower di port 1.3 Blow2 bit P1.4 ; label blower2 (medium) di port 1.4 Blow1 bit P1.5 ; label blower1 (kecil) di port 1.5 KomprAC bit p1.6 ; label kompresor AC di port 1.6 KAmanBlow bit p1.7 ; label kontrol auto/manual blower di port 1.7 DtLcd equ 08h ; alamat label data lcd di 08h DSuhu equ 22h ; alamat label data suhu di 22h DMrg equ 23h ; alamat label data miring di 23h org 00h ; alamat awal program JMP Start ; loncat ke label start org 30h ; alamat awal badan program

  Start:

  mov 20h,#0 ; label start isi 0 ke alamat 20h (reset status) Call InitLcd ; panggil label init lcd clr blow2 ; menghapus isi label blower2 setb blow1 ; menset isi alamat bit blower1 =1 (blower kec rendah) setb komprac ;menset isi alamat bit kompresor AC =1 (ac on by car) setb KAmanBlow ;menset isi alamat bit blower auto KAmanBlow=1=auto

  Loop: Call RdADC ; panggil label Read ADC

  mov a,DSuhu ; pindahkan data dari label data suhu ke akumulator call Ubah2Bcd ; panggil label Ubah2BCD mov r1,#03 ; isi r1=03 mov r0,#024h ; isi r0=024h Call WriteKarMem ; panggil write karakter memori (tulis data suhu) Mov dtlcd,#0cdh ;isi data lcd = 0cdh (posisi cursor) Call WriteIr ; panggil label writeInstruksi mov a,DMrg ; pindahkan data dari label datamiring ke akumulator swap a ; menukarkan isi nibllbe bawah dengan nibble atas. anl a,#0fh ; meng-and kan isi alamat data=0fh dengan isi akumulator orl a,#030h; meng-or kan isi alamat data=030h dengan isi akumulator

  Perpustakaan Unika

  mov dtlcd,a ; pindahkan data akumulator ke data lcd Call Writedt ; panggil label write data mov a,DMrg ; pindahkan data dari label datamiring ke akumulator anl a,#0fh ; meng-and kan isi alamat data=0fh dengan isi akumulator orl a,#030h; meng-or ka nisi alamat data=030h dengan isi akumulator mov dtlcd,a ; pindahkan data akumulator ke data lcd Call Writedt ; panggil label write data (tulis data kemiringan) Call RdTmbl ; panggil label read tombol jb ktrlmon,loop ;if ktrlmon (kontrol monitor)=1=manual then loop(no action)

  Call CBatasOvr ; panggil label cek batas over jmp loop ; loncat ke loop ;--------------------------------------------------------------------------------- RdTmbl: setb BKtrlMon ; menset isi alamat bit blowerkontrolmonitor =1 jb BKtrlMon,NopTbl1 ; jika BwKntrlMon=1= Nopresstombl1 jbc ktrlmon,setKtrl ; jika kntrlmon =1 diubah=0 ktrlmon=0=auto(set kontrol) setb ktrlmon ; menset isi alamat bit ktrlmon=1=manual mov dtlcd,#081h ; isi label datalcd=081h call writeir ; panggil label writeinstruksi mov dtlcd,#'M' ; isi label datalcd=label‘M’ call writedt ; panggil label writedata mov dtlcd,#'O' ; isi label datalcd=label‘O’ call writedt ; panggil label writedata mov dtlcd,#'N' ; isi label datalcd=label’N’ call writedt ; panggil label writedata mov dtlcd,#'-' ; isi label datalcd=label’-‘ call writedt ; panggil label writedata mov dtlcd,#' ' ; isi label datalcd=’#’ call writedt ; panggil label writedata clr KAmanBlow ; kamanb(kontrolautomanualblower)low=0=blower manual ret ; kembali ke program pemanggil setktrl: mov dtlcd,#081h ; isi label datalcd=081h call writeir ; panggil label writeinstruksi mov dtlcd,#'K' ; isi label datalcd=label‘K’ call writedt ; panggil label writedata mov dtlcd,#'T' ; isi label datalcd=label’T’ call writedt ; panggil label writedata mov dtlcd,#'R' ; isi label datalcd=label’R’ call writedt ; panggil writedata mov dtlcd,#'L' ; isi label datalcd=’L’ call writedt ; panggil writedata mov dtlcd,#'-' ; isi label datalcd=’-‘ call writedt ; panggil writedata setb KAmanBlow ; menset isi alamat bit KAmanBlow=1=blower auto ret ; kembali ke program pemanggil

  Noptbl1: setb BAmanBlow ; menset isi alamat BAmanBlow=1 jb BAmanBlow,NopTbl2 ; jika BAmanBlow=1=Nopresstombol2 jbc KAmanBlow,setmanblw ;jika KAmanBlow=1 diubah=0 KAmanBlow (blwautoman)=0=manual setb KAmanBlow ; menset isi alamat KAmanBlow (blowautoman)=1=auto mov dtlcd,#0c0h ; isi label datalcd=0c0h mov dptr,#TBlowA ; isi dptr=TampilanBlowerAuto call writeln ; panggil label writeline jmp redispmrg ; lompat ke read display miring ret ; kembali ke program pemanggil setmanblw: mov dtlcd,#0c0h ; isi label datalcd=0c0h

  (blwaman=0=manual) mov dptr,#TBlowM ; isi dptr=TampilanBlowerManual call writeln ; panggil label writeline redispmrg: mov dtlcd,#0c0h ; isi label datalcd=0c0h mov dptr,#TMrg ; isi dptr=TampilanMiring call writeln ; panggil label writeline Mov DtLcd,#0cfh ; isi label datalcd=0cfh Call WriteIR ; panggil labelwriteir Mov DtLcd,#0dfh ; isi label datalcd=0dfh=tanda derajat Call WriteDt ; panggil label writedata

  NopTbl2: ret ; kembali ke program pemanggil ;--------------------------------------------------------------------------------- RdADC: mov p3,#0 ; isi P3=0 (set address ADC=00 LDR1) mov 08h,p2 ; pindah data dari p2 ke 08h (baca ADC) mov p3,#01 ; isi P3=01(set address ADC=01 LDR2) mov 09h,p2 ; pindah data dari p2 ke 09h mov p3,#02 ; isi P3=02 (set address ADC=02 LDR3) mov 0ah,p2 ; pindah data dari p2 ke 0ah mov p3,#03 ; isi p3=03 (set address ADC=03 Suhu) mov DSuhu,p2 ; isi label Data suhu=p2 mov a,#090 ; 90(1.8vdc)

  Perpustakaan Unika cjne a,08h,Beda1 ; apakah akumulator=08h jika sama proses lanjutkan tapi jika tidak loncat kelabelBeda1 D1LbhBsr: cjne a,09h,Beda2 ; apakah akumulator=09h jika sama proses lanjutkan tapi jika tidak loncat ke labelBeda2 D2LbhBsr: cjne a,0ah,Beda3 ; apakah akumulator=0ah jika sama proses lanjutkan tapi jika tidak loncat ke labelBeda3 D3LbhBsr: mov DMrg,#040h; isi label DataMiring=040h jmp ExtRdMrg ; loncat ke exitreadmiring beda3: jc D3LbhBsr ; bila sisa perbandingan=1loncat ke label D3LbhBsr, bila=0 proses dilanjutkan mov DMrg,#030h ; Isi label datamiring=030h jmp ExtRdMrg ; loncat ke exitreadmiring

  Beda2: jc D2LbhBsr ; bila sisa perbandingan=1 loncat ke label D2LbhBesr, bila=0 proses dilanjutkan mov DMrg,#20h ; isi label datamiring =20h jmp ExtRdMrg ; loncat ke exitreadmiring

  Beda1: jc D1LbhBsr ; bila sisa perbandingan=1 loncat ke label D1LbhBsr, bila=0 proses dilanjutkan mov DMrg,#00h ; isi label datamiring=00h ExtRdMrg: ret ; kembali ke program pemanggil ;--------------------------------------------------------------------------- CBatasOvr: mov a,#035h ; isi akumulator=’035h’ cjne a,dmrg,MrgBeda ; apakah akumulator=label data miring jika sama proses lanjutkan tapi jika tidak loncat ke label MiringBeda jmp ceksuhu ; lompat ke ceksuhu MrgBeda: jnc ceksuhu ; bila sisa perbandingan=0 loncat ke

  , if a(35)<dmrg(0-40) mov r5,#080 ; isi r5=080 Call Delay50ms ; delay 4 detik clr blow2 ; blow2=0, if dmrg>35 then set blow high clr blow1 ; blow1=0 clr komprac ; komprac=0 (ac mati) ret ; kembali ke program pemanggil

  Perpustakaan Unika ceksuhu: setb komprac ; menset isi alamat bit komprac=1 (aktif) mov a,dsuhu ; pindahkan data dari label data suhu ke akumulator cjne a,#028,TdkSm28 ; jika nilai a tidak 028 loncat ke TdkSm28 KrgDr31: setb blow2 ; menset isis alamat bit blower2=1 (aktif) clr blow1 ; blow1=0 ; blower med suhu=28 <31 ret tdksm28: jnc lbhdr28 ; bila sisa perbandingan=0 loncat ke label lbhdr28,bila=1 proses dilanjutkan clr blow2 ; blow2=0 setb blow1 ; menset isi alamat bit blower1=1 (aktif)

  ; blower slow suhu<28 ret Lbhdr28: cjne a,#031,TdkSm31 ; jika nilai a 031 loncat ke TdkSm31 Lbhdr31: clr bLow1 ; blow1=0 clr bLow2 ; blow2=0 ; blower high suhu=31 ret TdkSm31: jnc Lbhdr31 ; bila sisa perbandingan=0 loncat ke label Lbhdr31,bila=1 proses dilanjutkan jmp KrgDr31 ; lompat ke KrgDr31

  ; jalankan prosedur KrgDr31 ;-------------------------------------------------------------------------------------------- ;ubah biner ke bcd NFinis: mov b,#010 ; isi register b=010 div ab ; bagi isi akumulator dengan data register badan pada akumulator mov @r0,b ; pindahkan data regiater b ke r0 dec r0 ; R0=R0-1 cjne a,#09,TdkSm9 ; apakah akumulator=09h jika sama proses lanjutkan tapi jika tidak loncat ke label tidak sama9

  Perpustakaan Unika EConv: mov @r0,a ; pindahkan data register a ke r0 ret ; kembali ke program pemanggil TdkSm9: jc EConv ; bila sisa perbandingan=1 loncat ke label EndConversi, bila=0 proses dilanjutkan jmp NFinis ; loncat ke Notfinis ;------------------------------------------------------------------------------------- IniTLCD: Mov DtLcd,#038H ; isi datalcd=038h ; Function Set

  Call WriteIR ; panggil label writeInstruksi Mov DtLcd,#08h ; isi datalcd=08h

  ; disp Off Call WriteIR ; panggil label writeInstruksi Mov DtLcd,#01 ; isi datalcd=01

  ; Disp CLear Call WriteIR ; panggil label writeInstruksi Mov DtLcd,#06 ; isi datalcd=06

  ;Entry Set Call WriteIR ; panggil writeInstruksi Mov DtLcd,#038H ; isi datalcd=038

  ; Function Set Call WriteIR ; panggil writeInstruksi Mov DtLcd,#0eh ; isi datalcd=0eh

  ; disp On,blink Call WriteIR ; panggil writeInstruksi Mov DtLcd,#06h ; isi datalcd=06

  ; entry mode set Call WriteIR ; panggil writeInstruksi mov dptr,#Nm ; isi dptr=nama mov dtlcd,#080h ; isi datalcd=080h Call WriteLn ; panggil label writeLine mov dptr,#Nim ; isi dptr=Nim Call WriteLn ; panggil writeLn mov r5,#080 ; isi r5=080 Call delay50ms ; panggil delay50ms Call WriteIR ; panggil WriteIR mov dptr,#TSh ; isi dptr=TampilanSuhu mov dtlcd,#080h ; isi datalcd=080h Call WriteLn ; panggil writeLn mov dptr,#TMrg ; isi dptr=TampilanMiring mov dtlcd,#0C0h ; isi datalcd=0C0h

  Perpustakaan Unika Call WriteLn ; panggil writeline Mov DtLcd,#08eh ; isi datalcd=08eh Call WriteIR ; panggil writeInstruksi Mov DtLcd,#0dfh ; isi datalcd=0dfh

  ; tanda derajat Call WriteDt ; panggil writedata Mov DtLcd,#0cfh ; isi dtlcd=0cfh Call WriteIR ; panggil writeInstruksi Mov DtLcd,#0dfh ; isi datalcd=0dfh

  ; tanda derajat Call WriteDt ; panggil writedata

  Ret ; kembali ke program pemanggil ;------------------------------------------------------------------------------------- WriteKarMem:

  Call WriteIR ; panggil WriteIR nextkarMem: mov a,@r0 ; pindahkan satu-persatu data r0 ke akumulator clr c ; hapus c (c=0) add a,#030h ; 030h+a disimpan di akumulator mov dtlcd,a ; isi datalcd=akumulator Call WriteDt ; panggil writedata inc r0 ; r0=r0+1 djnz r1,nextkarmem ; jika r1-1=0 proses dilanjutkan, jika belum 0 loncat ke label nextkaraktermemori ret ; kembali ke program pemanggil ;------------------------------------------------------------------------------------- ;Tuliskan data ke baris 1 WriteLn: Call WriteIR ; panggil writeInstruksi mov r0,#016 ; isi r0=016 mov r1,#0 ; isi r1=0 Movc a,@a+dptr ; setiap penjumlahan isi data dptr dengan isi akumulator disimpan ke akumulator mov dtlcd,a ; isi data lcd=akumulator Call WriteDt ; panggil writedata inc r1 ; r1=r1+1 djnz r0,ndtkar ; jika r0-1=0 proses dilanjutkan, jika belum 0 loncat ke label nextdatakarakter

  Perpustakaan Unika

  Perpustakaan Unika

  ret ; kembali ke program pemanggil ;------------------------------------------------------------------------------------- ;Kirimkan Instruksi Ke LCD WriteIR: clr RsLcd ; hapus Rslcd=0 ;RS = 0 Instruction Reg

  Mov P0,DtLcd ; isi p0=datalcd ; Code Instruksi

  Call ClockE ; panggil ClockEnable Ret ; kembali ke program pemanggil

  ;------------------------------------------------------------------------------------- ;Kirimkan Data Ke LCD WriteDt: setb RsLcd ; menset isi alamat Rslcd=1 ; RS = 1 Data

  Mov P0,DtLcd ; isi p0=datalcd ; Data

  Call ClockE : panggil clockEnable ; CLock Enable Signal ret ; kembali ke program pemanggil

  ;------------------------------------------------------------------------------------- ;Memberikan sinyal clock pd pin E-LCD ClockE: clr EnLcd ; Enlcd=0 setb EnLcd ; menset isi alamat Enlcd=1 clr EnLcd ;Enlcd=0 ret ; kembali ke program pemanggil

  ;-------------------------------------------------------------------------------------------- Delay50Ms: mov tmod,#01h ; isi tmod=01h mov th0,#03ch ; isi th0=03ch mov tl0,#0b0h ; isi tl0=0b0h setb tr0 ; menset isi alamat tr0=1

  Wdly1ms: jnb tf0,WDly1ms ; tf0-1=0 proses dilanjutkan, jika blm loncat ke label WriteDly1ms clr tf0 ; tf0=0 clr tr0 ; tr0=0 djnz r5,Delay50Ms ; jika r5-1=0 proses dilanjutkan, jika

  Perpustakaan Unika

  belum 0 loncat ke label Delay50Ms ret ;kembali ke program pemanggil Nm: Db ' Hi, C.Teddy.P ' Nim: Db ' 01.50.0017 ' TSh: Db '-Ktrl-Suhu:000 C' TMrg: Db 'Kemiringan: ' TBlowA: Db 'Blower Set Auto ' TBlowM: Db 'Blower Manual ' Hapus: Db ' ' end xiii Title:

  Pengontrolan Ac Mobil Berdasarkan Kemiringan Jalan (Tanjakan)

Chresnawan Teddy P (01.50.0017)

Perpustakaan Unika