Microcontroller Kits
Simple Mikrokontroller 89s51 Trainer
Standart
Mikrokontroller 89s51 Trainer
Super Mikrokontroller Trainer 89s51
All Kits
Programmer via USB Port
ย
Percobaan 5.3. Aplikasi program komparator dengan memanfaatkan instruksi aritmatika dan instruksi lompatan untuk pengaturan suhu dengan display LCD Karakter
Dalam dunia elektronika, rangkaian komparator, umumnya diwujudkan dengan memanfaatkan rangkaian op-amp yang dibangun sebagai komparator. Sesuai dengan prinsip kerja komparator, membandingkan dua buah tegangan yang masuk pada input INV dan NON INV, untuk menghasilkan suatu output tegangan saturasi. Dengan memanfaatkan instruksi aritmatika SUBB dan instruksi lompatan JZ dan JC, maka rangkaian analog ini dapat digantikan dengan menggunakan pemrograman assembly.
Gambar 5.10 Rangkaian komparator analog dengan IC OP-AMP
Apabila tegangan yang masuk pada VREF lebih besar daripada tegangan yang masuk pada VIN maka VOUT akan mengeluarkan tegangan ~0 volt. Dan sebaliknya bila tegangan yang masuk pada VREF lebih kecil dari pada VIN maka VOUT akam mengeluarkan tegangan VSAT.
ControlSuhu: mov a,dataSetting ; contoh dataSetting=50 mov b,dataADC ; contoh dataADC=30 clr c subb a,b jnz OnHeater retOnHeater: jc OffHeater call HeaterOn ;Instruksi hidupkan heater retOffHeater: Call HeaterOff ;Instruksi matikan heater ret;
Pada instruksi tersebut diambil selisih antara dataSetting dan dataADC dengan menggunakan instruksi SUBB, pengurangan ini akan menghasilkan tiga keadaan yaitu: NOL, NEGATIF atau POSITIF. Hasil-hasil inilah yang harus dideteksi, keadaan NEGATIF dapat dideteksi dengan memantau bit C (carry ), keadaan NOL dapat dideteksi dengan memantau register A (accumulator).
Apabila diberikan keadaan input sesuai dengan contoh tersebut maka:
A=dataSetting=50
B=dataADC=30
SUBB A,B
A=50-30 =20 (keadaan POSITIF)
Sesuai dengan instruksi diatas maka program akan menuju ke Ret OnHeater, pada baris ini dilakukan proses pengujian keadaan, dengan instruksi JC, karena keadaan POSITIF maka C=0 (clear) sehingga program akan memanggil HeaterOn
Apabila diberikan keadaan input sesuai dengan contoh tersebut maka:
A=dataSetting=50
B=dataADC=50
SUBB A,B
A=50-50 =00 (keadaan NOL)
Sesuai dengan instruksi diatas maka program akan menuju ke Ret.
Apabila diberikan keadaan input sesuai dengan contoh tersebut maka:
A=dataSetting=50
B=dataADC=51
SUBB A,B
A=50-51 =-1 (keadaan NEGATIF)
Sesuai dengan instruksi diatas maka program akan menuju ke OnHeater, pada baris ini dilakukan proses pengujian keadaan, dengan instruksi JC, karena keadaan NEGATIF maka C=1 (clear) sehingga program akan memanggil label OffHeater
Pada percobaan 5.3. ini indikator heater On dan Off, ditunjukkan pada layar LCD Karakter pada baris 1. seperti yang ditunjukkan pada pemrograman berikut ini:
1. Pada saat langkah pemrograman posisikan saklar togle ke posisi PROG
2. Posisikan saklar togle ke RUN untuk mengaktifkan ADC0804 CS=0
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 (download file prog53a.asm
Gambar 5.11. Diagram alir (a) rutin utama (b) subrutin kontrol suhu pada percobaan 5.3.
dataSetting equ 30hdataADC equ 31hratusan equ 32hpuluhan equ 33hsatuan equ 34h org 0h mov dataSetting,#50d; contoh datasetting=50 call init_lcdstart:call ADC call ControlSuhu call bin2dec call Display2LCD sjmp start ;ControlSuhu: mov a,dataSetting ; contoh dataSetting=50 mov b,dataADC ; contoh dataADC=30 clr c subb a,b jnz OnHeater retOnHeater: jc OffHeater call HeaterOn ;Instruksi hidupkan heater retOffHeater: Call HeaterOff ;Instruksi matikan heater ret ;HeaterOn: mov R1,#80h call write_inst mov R1,#'O' call write_data ; mov R1,#81h call write_inst mov R1,#'n' call write_data ; mov R1,#82h call write_inst mov R1,#' ' call write_data retHeaterOff: mov R1,#80h call write_inst mov R1,#'O' call write_data ; mov R1,#81h call write_inst mov R1,#'f' call write_data ; mov R1,#82h call write_inst mov R1,#'f' call write_data ret;=======================================;Subrutin ini untuk merubah data biner ke desimal;menjadi 3 digit = ratusan-puluhan-satuan;=======================================Bin2Dec: mov A,dataADC 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 data ke LCD character 2 x16;pada DDRAM 0C9 0CA 0CB untukratusan, puluhan, and satuan;=================================================Display2LCD: mov r1,#0c0h call write_inst mov a,ratusan add a,#30h mov r1,a call write_data ; mov r1,#0c1h call write_inst mov a,puluhan add a,#30h mov r1,a call write_data ; mov r1,#0c2h call write_inst mov a,satuan add a,#30h mov r1,a call write_data ret;=======================================;Subrutin ini digunakan untuk mengambil data ADC;========================================ADC: clr P3.3 nop nop nop setb P3.3eoc: jb P3.2,eoc clr P3.4 mov A,P1 mov dataADC,A setb P3.4 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 end
6. Simpanlah program yang anda ketik dan beri nama : prog53a.asm
7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.
8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)
9. Lakukan modifikasi pada program tersebut dengan manambahkan kata SUHU: , pada Baris 2 diikuti dengan data ADC.
BACKNEXT
Komentar, pertanyaan dan diskusi tentang topik tersebut. Klik disini
ย
HARDWARE
1.Target
2.Programmer
DASAR TEORI1.Organisasi Mem
1.1. Mem.Data
1.2. Mem.Prog
1.4. SFR2.Pengalamatan3.Set Instruksi
3.1.Copy Data
3.2.Aritmatika
3.3.Logika
3.4.Lompatan4.Interupsi5.Timer Counter6.Serial Kom.7.Bahasa Assemb.8.Perangkat LunakMIDE dan ISP Soft.
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
ย
ย