BAB 1 PERCOBAAN SEVEN SEGMENT Percobaan 1.1 Menghidupkan Seven Segment Satuan dan Puluhan TUJUAN : Agar praktikan mampu melaksanakan proses penghidupan seven segment satuan dan puluhan pada modul seven segment dengan pengendali mikrokontroler At89S51/52. PERALATAN
:
- Main modul - Modul seven segment - Simulator (misalnya debugger8052), bila diperlukan.
TAHAPAN PERCOBAAN 1.1 : 1. Hubungkan modul seven segmen dengan port 0. Rincian hubungan berdasarkan modul seven segmen yang digunakan di Laboratorium Mikroprosesor dan Peripheral STTH Medan:
Data ke seven segmen diberikan melalui pin 0 sampai pin 3 (P0.0 – P0.3)
P0.4 dihubungkan ke pin common anoda seven segmen puluhan. P0.4 bernilai 1 maka seven segmen puluhan hidup dan bernilai 0 maka mati.
P0.5 dihubungkan ke pin common anoda seven segmen satuan. P0.5 bernilai 1 maka seven segmen satuan hidup dan bernilai 0 maka mati.
2. Ketikkan program di bawah ini dan lakukan kompilasi. 3. Periksa apakah ada kesalahan sintaks (error) dalam program. 4. Setelah tidak lagi mengandung kesalahan sintaks (error), jalankan program menggunakan simulator (bila diperlukan). 5. Download program (HEX file) ke dalam Flash Memory mikrokontroler dan jalankan di modul mikrokontroler.
PROGRAM PERCOBAAN 1.1 : $MOD51 MOV P0,#10000000b START: MOV P0,#0A7H
;A = 10100111b, sat hidup, nilai 7
CALL DELAY MOV P0,#92H
;9 = 10010010b, pul hidup, nilai 2
CALL DELAY AJMP START ; DELAY: MOV R0,#100 DJNZ R0,$ RET end
Tugas: 1. Berikan penjelasan pada tiap baris program di atas. 2. Buatlah program untuk menampilkan dua digit terakhir no NPM Anda. 3. Buatlah program untuk menampilkan semua no NPM Anda secara bergantian di seven segmen satuan saja mulai dari angka pertama NPM sampai terakhir. Sesuaikan panjang waktu delay pergantian agar dapat diikuti oleh mata dengan baik.
Percobaan 1.2 Nilai Seven Segment Satuan Naik Otomatis TUJUAN : Agar praktikan mampu melaksanakan proses counting up dari angka 0–9 secara otomatis pada seven segment satuan dengan pengendali mikrokontroler At89S51/52. PERALATAN
:
- Main modul - Modul seven segment - Simulator (misalnya debugger8052), bila diperlukan.
TAHAPAN PERCOBAAN 1.2 : 1. Hubungkan modul seven segmen dengan port 0. Rincian hubungan berdasarkan modul seven segmen yang digunakan di Laboratorium Mikroprosesor dan Peripheral STTH Medan:
Data ke seven segmen diberikan melalui pin 0 sampai pin 3 (P0.0 – P0.3)
P0.4 dihubungkan ke pin common anoda seven segmen puluhan. P0.4 bernilai 1 maka seven segmen puluhan hidup dan bernilai 0 maka mati.
P0.5 dihubungkan ke pin common anoda seven segmen satuan. P0.5 bernilai 1 maka seven segmen satuan hidup dan bernilai 0 maka mati.
2. Ketikkan program di bawah ini dan lakukan kompilasi. 3. Periksa apakah ada kesalahan sintaks (error) dalam program. 4. Setelah tidak lagi mengandung kesalahan sintaks (error), jalankan program menggunakan simulator (bila diperlukan). 5. Download program (HEX file) ke dalam Flash Memory mikrokontroler dan jalankan di modul mikrokontroler.
PROGRAM PERCOBAAN 1.2: $MOD51 ;Aktivasi 7 Segment satuan pada P0.5, Aktivasi 7 Segment puluhan pada P0.4 ;counting up dari 0–9 secara otomatis pada seven segmen satuan ; Mulai: MOV A,#0A0h NAIK: MOV P0,A CALL DELAY INC A CJNE A,#0AAH,NAIK AJMP Mulai ; DELAY: MOV R2,#4 Delay2: MOV R1,#250 Delay1: MOV R0,#250 DJNZ R0,$ DJNZ R1,Delay1 DJNZ R2,Delay2 RET END
Tugas: 1. Berikan penjelasan pada tiap baris program di atas. 2. Buatlah program agar counting up dari 0–9 secara otomatis pada seven segmen puluhan 3. Buatlah program agar counting down dari 9–0 secara otomatis pada seven segmen satuan
Percobaan 1.3 Nilai Seven Segment Satuan Naik Dengan Switch TUJUAN : Agar praktikan mampu melaksanakan proses counting up dari angka 0–9 berdasarkan signal dari Switch pada seven segment satuan dengan pengendali mikrokontroler At89S51/52. PERALATAN
:
- Main modul - Modul seven segment - Modul Push Button Switch - Simulator (misalnya debugger8052), bila diperlukan.
TAHAPAN PERCOBAAN 1.3 : 1. Hubungkan modul seven segmen dengan port 0 dan Modul Switch 8 bit (push button) dihubungkan ke Port 3. Rincian hubungan berdasarkan modul seven segmen yang digunakan di Laboratorium Mikroprosesor dan Peripheral STTH Medan:
Data ke seven segmen diberikan melalui pin 0 sampai pin 3 (P0.0 – P0.3)
P0.4 dihubungkan ke pin common anoda seven segmen puluhan. P0.4 bernilai 1 maka seven segmen puluhan hidup dan bernilai 0 maka mati.
P0.5 dihubungkan ke pin common anoda seven segmen satuan. P0.5 bernilai 1 maka seven segmen satuan hidup dan bernilai 0 maka mati.
2. Ketikkan program di bawah ini dan lakukan kompilasi. 3. Periksa apakah ada kesalahan sintaks (error) dalam program. 4. Setelah tidak lagi mengandung kesalahan sintaks (error), jalankan program menggunakan simulator (bila diperlukan). 5. Download program (HEX file) ke dalam Flash Memory mikrokontroler dan jalankan di modul mikrokontroler.
PROGRAM PERCOBAAN 1.3: $MOD51 ;Aktivasi 7 Segment satuan pada P0.5, Aktivasi 7 Segment puluhan pada P0.4 ;counting up dari 0–9 pada seven segmen satuan berdasarkan input pada switch yang ;dihubungkan dengan P3.2 ; Mulai: MOV A,#0A0h NAIK: MOV P0,A CALL DELAY JNB P3.2,NAIK INC A CJNE A,#0AAH,NAIK AJMP Mulai ; DELAY: MOV R2,#3 Delay2: MOV R1,#250 Delay1: MOV R0,#250 DJNZ R0,$ DJNZ R1,Delay1 DJNZ R2,Delay2 RET END
Percobaan 1.4 Nilai Seven Segment Satuan Dan Puluhan Naik Otomatis TUJUAN : Agar praktikan mampu melaksanakan proses counting up dari angka 0–99 secara otomatis pada seven segment satuan dan puluhan dengan pengendali mikrokontroler At89S51/52. PERALATAN
:
- Main modul - Modul seven segment - Simulator (misalnya debugger8052), bila diperlukan.
TAHAPAN PERCOBAAN 1.4 : 1. Hubungkan modul seven segmen dengan port 0. Rincian hubungan berdasarkan modul seven segmen yang digunakan di Laboratorium Mikroprosesor dan Peripheral STTH Medan:
Data ke seven segmen diberikan melalui pin 0 sampai pin 3 (P0.0 – P0.3)
P0.4 dihubungkan ke pin common anoda seven segmen puluhan. P0.4 bernilai 1 maka seven segmen puluhan hidup dan bernilai 0 maka mati.
P0.5 dihubungkan ke pin common anoda seven segmen satuan. P0.5 bernilai 1 maka seven segmen satuan hidup dan bernilai 0 maka mati.
2. Ketikkan program di bawah ini dan lakukan kompilasi. 3. Periksa apakah ada kesalahan sintaks (error) dalam program. 4. Setelah tidak lagi mengandung kesalahan sintaks (error), jalankan program menggunakan simulator (bila diperlukan). 5. Download program (HEX file) ke dalam Flash Memory mikrokontroler dan jalankan di modul mikrokontroler.
PROGRAM PERCOBAAN 1.4: $MOD51 MULAI: MOV R0,#90H
;R0 = 10100000b, pul = 0
MULAI1: MOV R1,#0A0H
;R1 = 10100000b, sat = 0
NAIK: MOV R2,#2 NAIK1: MOV R3,#200 NAIK2: MOV P0,R1
;hidup sat, nilai = R3
CALL DELAY3 MOV P0,R0 CALL DELAY3 DJNZ R3,NAIK2 DJNZ R2,NAIK1 MOV A,R1 CJNE A,#0AAH,NAIK MOV A,R0 INC A MOV R0,A CJNE A,#9AH,MULAI1 AJMP MULAI DELAY3: MOV R4,#100 DJNZ R4,$ RET END
;hidup pul, nilai = R4
Percobaan 1.5 Nilai Seven Segment Satuan dan Puluhan Naik dan Turun Dengan Switch TUJUAN : Agar praktikan mampu melaksanakan proses counting up dan counting down dari angka 0–99 dan 99–0 berdasarkan signal dari Switch pada seven segment satuan dan puluhan dengan pengendali mikrokontroler At89S51/52. PERALATAN
:
- Main modul - Modul seven segment - Modul Push Button Switch - Simulator (misalnya debugger8052), bila diperlukan.
TAHAPAN PERCOBAAN 1.3 : 1. Hubungkan modul seven segmen dengan port 0 dan Modul Switch 8 bit (push button) dihubungkan ke Port 3. Rincian hubungan berdasarkan modul seven segmen yang digunakan di Laboratorium Mikroprosesor dan Peripheral STTH Medan:
Data ke seven segmen diberikan melalui pin 0 sampai pin 3 (P0.0 – P0.3)
P0.4 dihubungkan ke pin common anoda seven segmen puluhan. P0.4 bernilai 1 maka seven segmen puluhan hidup dan bernilai 0 maka mati.
P0.5 dihubungkan ke pin common anoda seven segmen satuan. P0.5 bernilai 1 maka seven segmen satuan hidup dan bernilai 0 maka mati.
2. Ketikkan program di bawah ini dan lakukan kompilasi. 3. Periksa apakah ada kesalahan sintaks (error) dalam program. 4. Setelah tidak lagi mengandung kesalahan sintaks (error), jalankan program menggunakan simulator (bila diperlukan). 5. Download program (HEX file) ke dalam Flash Memory mikrokontroler dan jalankan di modul mikrokontroler.
PROGRAM PERCOBAAN 1.5: ;Nilai 7 segment akan naik bila P.0 diberi nilai 1 dan turun bila P3.1 diberi nilai 1. ;Aktivasi 7 Segment satuan saat P0.5 bernilai 1 ;Aktivasi 7 Segment puluhan saat P0.4 bernilai 1 ; $MOD51 MOV P3,#00H MULAI: MOV R4,#90H
;R4 = 10100000b, puluhan aktif, nilai = 0
MULAI1: MOV R3,#0A0H
;R3 = 10100000b, satuan aktif nilai = 0
NAIK: MOV R1,#4 NAIK1: MOV R0,#200 NAIK2: MOV P0,R3
;hidup sat, nilai = R3
CALL DELAY3 MOV P0,R4 CALL DELAY3 DJNZ R0,NAIK2 DJNZ R1,NAIK1 MOV A,R3 JNB P3.0,TURUN CJNE A,#0A9H,SAT MOV A,R4 INC A MOV R4,A CJNE A,#9AH,MULAI1
;hidup pul, nilai = R4
AJMP MULAI ; SAT: INC A MOV R3,A AJMP NAIK ; TURUN: JNB P3.1,NAIK MOV A,R3 CJNE A,#0A0H,TURUN1 MOV A,R4 DEC A MOV R4,A MOV R3,#0A9H LJMP NAIK ; TURUN1: DEC A MOV R3,A LJMP NAIK ; DELAY3: MOV R2,#100 DJNZ R2,$ RET END
BAB 2 PERCOBAAN LCD 16 x 2 Percobaan 2.1 Menampilkan Teks Pada Layar LCD Karakter 16 x 2 TUJUAN : Agar praktikan mampu menampilkan teks pada layar LCD karakter 16 x 2 dengan pengendali mikrokontroler At89S51/52. PERALATAN
:
- Main modul - Modul Layar LCD 16 x 2 - Simulator (misalnya debugger8052), bila diperlukan.
TAHAPAN PERCOBAAN 2.1 : 1. Hubungkan modul Layar LCD 16 x 2 dengan Port 1 dan Port 2 mikrokontroler AT89S51/52. Rincian hubungan berdasarkan modul Layar LCD 16 x 2 yang digunakan di Laboratorium Mikroprosesor dan Peripheral STTH Medan:
Pin P1.0 – P1.7 terhubung dengan pin data D0 – D7 di LCD 16 x 2
Pin P2.0 terhubung dengan pin RS LCD
Pin P2.1 terhubung dengan pin R/W LCD
Pin P2.2 terhubung dengan pin E LCD
2. Ketikkan program di bawah ini dan lakukan kompilasi. 3. Periksa apakah ada kesalahan sintaks (error) dalam program. 4. Setelah tidak lagi mengandung kesalahan sintaks (error), jalankan program menggunakan simulator (bila diperlukan). 5. Download program (HEX file) ke dalam Flash Memory mikrokontroler dan jalankan di modul mikrokontroler.
PROGRAM PERCOBAAN 2.1: ;Menampilkan Teks ‘STTH’ pada layar LCD ORG 0000h MOV A,#38h
;init LCD 2 baris / matrix 5×7
ACALL COMMAND
;panggil subrutin Command
MOV A,#0Eh
;Display On , kursor On
ACALL COMMAND
;subrutin Command
MOV A,#01h
;Clear LCD
ACALL COMMAND
;subrutin Command
MOV A,#06h
;pindahkan kursor ke kanan
ACALL COMMAND
;subrutin Command
MOV A,#084h
;pindahkan kursor ke baris 1 pos. 4
ACALL COMMAND
;subrutin Command
MOV A,#’S'
;tampilkan abjad “S”
ACALL DATA_DISP
;panggil subrutin Display
MOV A,#’T'
;tampilkan abjad “T”
ACALL DATA_DISP
;panggil subrutin Display
MOV A,#’T'
;tampilkan abjad “T”
ACALL DATA_DISP
;panggil subrutin Display
MOV A,#’H'
;tampilkan abjad “H”
ACALL DATA_DISP
;panggil subrutin Display
ULANG: SJMP ULANG
;tunggu di sini
COMMAND: ACALL READY
;apakah LCD siap
MOV P1,A
;salin isi A ke P1
CLR P2.0
;RS=0 utk Command
CLR P2.1
;R/W=0 utk Write
SETB P2.2
;E=1 untuk ..
CLR P2.2
;E=0 .. pulsa H-ke-L
RET DATA_DISP: ACALL READY
;apakah LCD siap
MOV P1,A
;salin isi A ke P1
SETB P2.0
;RS=1 utk Data
CLR P2.1
;R/W=0 utk Write
SETB P2.2
;E=1 untuk ..
CLR P2.2
;E=0 .. pulsa H-ke-L
RET READY: SETB P1.7
;buat P1.7 sebagai port input
CLR P2.0
;RS=0 utk mengakses reg Command
SETB P2.1
;R/W=1 utk Read ;perintah baca reg dan memeriksa busy flag
READY1: SETB P2.2
;E=1 untuk ..
CLR P2.2
;E=0 .. pulsa H-ke-L
JB P1.7,READY1
;Tunggu sampai siap
RET END
BAB 3 PERCOBAAN COUNTER DENGAN INPUT SENSOR INFRA RED DAN TAMPILAN SEVEN SEGMENT Percobaan 3.1 Membaca Nilai Sensor Infra Red Untuk Counting Dengan Tampilan Seven Segment TUJUAN : Agar praktikan mampu membaca signal input dari sensor infra red untuk menghitung jumlah objek yang melewati sensor dan menampilkan hasilnya pada Seven Segment dengan pengendali mikrokontroler At89S51/52. PERALATAN
:
- Main modul - Modul Seven segment - Sensor Infra red sebagai transmitter dan dan photodioda sebagai reciever - Simulator (misalnya debugger8052), bila diperlukan.
TAHAPAN PERCOBAAN 3.1 : 1. Hubungkan modul Seven segment dengan Port 0 dan Port 2 mikrokontroler AT89S51/52 dan Port 1 ke sensor infra red dengan rincian seperti pada rangkaian di gambar 3.1. 2. Ketikkan program di bawah ini dan lakukan kompilasi. 3. Periksa apakah ada kesalahan sintaks (error) dalam program. 4. Setelah tidak lagi mengandung kesalahan sintaks (error), jalankan program menggunakan simulator (bila diperlukan). Download program (HEX file) ke dalam Flash Memory mikrokontroler dan jalankan di modul mikrokontroler.
Gambar 3.1 Rangkaian sensor infra red dengan mikrokontroler AT89S51 dan display seven segment
PROGRAM PERCOBAAN 4.1: p0 equ 080h p1 equ 090h p2
equ 0a0h
p3
equ 0b0h
satuana equ 030h puluhana equ 031h ratusana equ 032h digit1 equ 033h digit2 equ 034h
digit3 equ 035h org
0000h
awal: mov
satuana,#00h
mov
puluhana,#00h
mov
ratusana,#00h
start: jb p1.0,masuk jb p1.1,keluar jmp start masuk: jb p1.0,$ mov a,satuana inc a mov satuana,a cjne a,#0ah,display mov
satuana,#00h
mov
a,puluhana
inc a mov cjne
puluhana,a a,#0ah,display
mov
puluhana,#00h
mov
a,ratusana
inc
a
mov cjne
ratusana,a a,#0ah,display
mov
ratusana,#09h
mov
puluhana,#09h
mov
satuana,#09h
jmp
display
keluar: jb p1.1,$ mov dec
a,satuana a
mov
satuana,a
cjne
a,#0ffh,display
mov
satuana,#00h
mov
a,puluhana
dec
a
mov
puluhana,a
cjne
a,#0ffh,display
mov
puluhana,#00h
mov
a,ratusana
dec
a
mov
ratusana,a
cjne
a,#0ffh,display
mov
ratusana,#00h
mov
satuana,#00h
mov
puluhana,#00h
jmp
display
display: mov
digit3,ratusana
mov
digit2,puluhana
mov
digit1,satuana
display2: mov
a,digit2
swap
a
orl
end
a,digit3
mov
p0,a
mov
a,digit1
mov
p2,a
jmp
start
BAB 4 KOMUNIKASI SERIAL UART Percobaan 4.1 Mengirim Dan Menerima Data Dari Port Serial TUJUAN : Agar praktikan mampu melakukan pengiriman dan penerimaan data antara komputer dengan mikrokontroler At89S51/52 dalam mode komunikasi serial UART. PERALATAN
:
- Main modul - komputer dengan port konektor DB9 - Modul IC MAX232 untuk antar muka RS-232 - Simulator (misalnya debugger8052), bila diperlukan.
Gambar 4.1 (a) Konektor DB9 (b) Koneksi IC MAX232 dengan DB9 dan Mikkrokontroler AT89S51/52
TAHAPAN PERCOBAAN 4.1 : 1. Hubungkan modul IC MAX 232 (seperti pada gambar 3.1 di atas) dengan Konektor DB9 pada komputer dan mikrokontroler AT89S51/52 dengan rincian hubungan sebagai berikut:
Hubungkan pin P3.0 (Rx) pada mikrokontroler dengan pin 12 pada IC MAX232
Hubungkan pin P3.2 (Tx) pada mikrokontroler dengan pin 11 pada IC MAX232
Hubungkan pin 13 pada IC MAX232 dengan pin no 3 pada konektor DB9
Hubungkan pin 14 pada IC MAX232 dengan pin no 2 pada konektor DB9
2. Ketikkan program di bawah ini (program untuk pengiriman dan penerimaan data pada mikrokontroler AT89S51/52) dan lakukan kompilasi. 3. Periksa apakah ada kesalahan sintaks (error) dalam program. 4. Setelah tidak lagi mengandung kesalahan sintaks (error), jalankan program menggunakan simulator (bila diperlukan). 5. Download program (HEX file) ke dalam Flash Memory mikrokontroler dan jalankan di modul mikrokontroler. 6. Pembacaan dan pengiriman data di sisi komputer dapat dilakukan dengan bahasa level tinggi seperti Delphi atau Visual Basic atau dapat juga dilakukan dengan memanfaatkan fasilitas HyperTerminal yang merupakan program bawaan Windows. Cara membuka HyperTerminal ini adalah Klik Start All Program Accessories Communications HyperTerminal.
PROGRAM PERCOBAAN 4.1: Org
0000H
Main_Prog: call
Serial_Port_Init
Main_Prog_Loop: call
Serial_Receive
call
Serial_Transmit
sjmp
Main_Prog_Loop
Serial_Port_Init: mov
SCON, #50H
mov
TMOD, #20H
mov
TH1, #0FDH
setb
TR1
ret Serial_Transmit: mov
SBUF, A
jnbTI, $ clr TI ret Serial_Receive: jnbRI, $ mov clr RI ret end
A, SBUF
BAB 5 MENGUKUR JARAK DENGAN SENSOR JARAK SRF05 Percobaan 5.1 Mengukur Jarak Menggunakan Sensor Jarak SRF05 Dan Menampilkan Hasilnya Di LCD 16 x 2 TUJUAN : Agar praktikan mampu melakukan pengukuran jarak menggunakan sensor jarak SFR05 dan menampilkan hasilnya di LCD 16 x 2 PERALATAN
:
- Main modul ATMega16 - Trainer Sensor Jarak SRF05 - Modul Layar LCD 16 x 2 - Simulator (misalnya debugger8052), bila diperlukan.
Gambar 5.1 Rangkaian Sensor Jarak Dengan LCD 16 x 2
TAHAPAN PERCOBAAN 5.1 : 1. Hubungkan modul LCD 16 x 2 dan Modul Sensor Jarak SRF05 dengan mikrokontroler ATMega16 (seperti pada gambar 5.1 di atas) 2. Ketikkan program di bawah (program dibuat dalam bahasa C) dan lakukan kompilasi (Compiler yang digunakan adalah CodeVision AVR atau sejenisnya). 3. Periksa apakah ada kesalahan sintaks (error) dalam program. 4. Setelah tidak lagi mengandung kesalahan sintaks (error), jalankan program menggunakan simulator (bila diperlukan). 5. Download program (HEX file) ke dalam Flash Memory mikrokontroler dan jalankan di modul mikrokontroler.
PROGRAM PERCOBAAN 5.1: #include <mega16.h> #include <delay.h> #include <stdio.h> #define trigger PORTC.1 #define echo PINC.0 unsigned int jarak; char buf[33]; #asm .equ __lcd_port=0x1B ;PORTA #endasm #include
void ukur_jarak() { unsigned int i; jarak=0; delay_us(100);
trigger=1; //tout, H=5 us delay_us(15); trigger=0; delay_us(100); while(!echo); for (i=0;i<=500;i++) { if (echo) {jarak++;} delay_us(58); } } void main(void) { lcd_init(16); DDRC.O=0; DDRC.1=1; lcd_clear (); lcd_putsf (“SRF05 non timer”); lcd_gotoxy(0,1); lcd_putsf (“Range=”); while (1) { ukur_jarak(); sprintf (buf,”%d cm”,jarak); lcd_gotoxy (6,1); lcd_puts (buf); delay_ms(500); } }
BAB 6 MENGUKUR SUHU DENGAN SENSOR SUHU LM35 Percobaan 6.1 Mengukur Suhu Menggunakan Sensor Suhu LM35 Dan Menampilkan Hasilnya Di LCD 16 x 2 TUJUAN : Agar praktikan mampu melakukan pengukuran suhu menggunakan sensor suhu LM35 dan menampilkan hasilnya di LCD 16 x 2. PERALATAN
:
- Main modul AT89S51 - Trainer Sensor Suhu LM35 - Modul Layar LCD 16 x 2 - Simulator (misalnya debugger8052), bila diperlukan.
Gambar 6.1 Rangkaian Sensor Suhu Dengan LCD 16 x 2 TAHAPAN PERCOBAAN 6.1 : 1. Hubungkan modul LCD 16 x 2 dan Modul Sensor Jarak SRF05 dengan mikrokontroler ATMega16 (seperti pada gambar 5.1 di atas) 2. Ketikkan program di bawah (program dibuat dalam bahasa C) dan lakukan kompilasi (Compiler yang digunakan adalah CodeVision AVR atau sejenisnya). 3. Periksa apakah ada kesalahan sintaks (error) dalam program.
4. Setelah tidak lagi mengandung kesalahan sintaks (error), jalankan program menggunakan simulator (bila diperlukan). 5. Download program (HEX file) ke dalam Flash Memory mikrokontroler dan jalankan di modul mikrokontroler.
PROGRAM PERCOBAAN 6.1: ratusan puluhan satuan data_adc putr plcd itr wri re lcd_rs lcd_en led bacasuhu
equ equ equ bit bit bit bit bit bit
equ equ equ 33h 70h p0 p3.2 p3.3 p3.4 p1.0 bit p1.2 p1.3
30h 31h 32h
p1.1
org 000H jmp start ;-----------------------------------------------; TAMPILAN AWAL LCD ;-----------------------------------------------start: setb call call mov call mov call call mov call mov call call
led initlcd lcd_atas dptr,#txt_1 lcdstring a,#03 delay3 lcd_bawah dptr,#txt_2 lcdstring a,#03 delay3 initlcd
call mov call mov call call mov call mov call call
lcd_atas dptr,#txt_3 lcdstring a,#03 delay3 lcd_bawah dptr,#txt_4 lcdstring a,#03 delay3 initlcd
;-----------------------------------------------; PROGRAM UTAMA ;-----------------------------------------------call call mov call call mov call blinkled: mov call clr mov call setb jb call
initlcd lcd_atas dptr,#txt_a lcdstring lcd_bawah dptr,#txt_b lcdstring a,#01 delay3 led a,#01 delay3 led bacasuhu,blinkled initlcd
ceksuhu: call
baca_adc
tampilkan: call call mov call mov call call
konversi lcd_atas dptr,#txt_c lcdstring a,#01 delay3 display_adc
mov call jb call jmp
a,#01 delay3 bacasuhu,ceksuhu prosessing ceksuhu
;-----------------------------------------------; PROGRAM ADC ;-----------------------------------------------baca_adc: clr setb jb clr mov setb mov ret
wri wri itr,$ re a,p2 re data_adc,a
;-----------------------------------------------; KONVERSI RATUSAN, PULUHAN, SATUAN ;-----------------------------------------------konversi: mov div mov mov mov div mov mov ret
b,#100d ab ratusan,a a,b b,#10d ab puluhan,a satuan,b
;-----------------------------------------------; TAMPILAN SUHU PADA LCD ;-----------------------------------------------display_adc: mov call mov
r1,#0c8h tulis_inst a,ratusan
add mov call
a,#30h r1,a tulis_data
mov call mov add mov call
r1,#0c9h tulis_inst a,puluhan a,#30h r1,a tulis_data
mov call mov add mov call
r1,#0cah tulis_inst a,satuan a,#30h r1,a tulis_data
mov call mov add call
r1,#0cch tulis_inst r1,#0DFH a,#30h tulis_data
mov call mov add call ret
r1,#0cdh tulis_inst r1,#'C' a,#30h tulis_data
;-----------------------------------------------; INISIALISASI LCD ;-----------------------------------------------initlcd: mov call call mov call call mov call
A,#00000001b ; clear display lcdins delay A,#00111000b ; 8 bit - 2 line, 5x7 matrix lcdins delay A,#00001100b ; disply on, cursor off lcdins
call mov call call mov call call ret
delay A,#00000110b ; increment cursor lcdins delay A,#00000001b ; clear display lcdins delay2
;======= Prosedur Kontrol Byte Operasi pada LCD lcdins: mov clr jmp
plcd,a lcd_rs lcdout
lcddat: mov plcd,a setb lcd_rs lcdout: setb lcd_en call delay clr lcd_en call delay ret ;====== Prosedur Cetek String lcd_atas: mov a,#080h call lcdins ret lcd_bawah: mov a,#0C0h call lcdins ret printstringloop: call lcddat inc dptr lcdstring:
clr a movc a,@a+dptr jnz printstringloop ret tulis_inst: clr mov setb call clr ret
lcd_rs p0,r1 lcd_en delay lcd_en
tulis_data: setb mov setb call clr ret
lcd_rs p0,r1 lcd_en delay lcd_en
;====== loading prosessing: mov
r1,#0c0h
call mov add setb mov setb call clr inc cjne
tulis_inst r2,#' ' a,#30h lcd_rs p0,r2 lcd_en delay lcd_en r1 r1,#0cfh,balik
call mov call mov call
lcd_bawah dptr,#txt_d lcdstring a,#01 delay3
mov
r1,#0c9h
balik:
lagi: setb call mov add setb mov setb call clr clr mov call inc cjne
led tulis_inst r2,#'.' a,#30h lcd_rs p0,r2 lcd_en delay lcd_en led a,#01 delay3 r1 r1,#0cfh,lagi
mov
r1,#0c0h
call mov add setb mov setb call clr inc cjne setb
tulis_inst r2,#' ' a,#30h lcd_rs p0,r2 lcd_en delay lcd_en r1 r1,#0cfh,back led
back:
ret ;-----------------------------------------------; DELAY ;-----------------------------------------------delay3: mov putr,a muterz: call delay2 djnz putr,muterz ret delay2: mov r5,#94 muterx:
mov r6,#250 call delay djnz r6,$ djnz r5,muterx ret delay: mov r3,#08 muter: mov r4,#0255 djnz r4,$ djnz r3,muter ret ;-----------------------------------------------; TABEL DATA ;-----------------------------------------------txt_1 txt_2 txt_3 txt_4 txt_a txt_b txt_c txt_d end
: : : : : : : :
db db db db db db db db
' Arif Budi S ',0 'Pendeteksi Suhu ',0 'Tnk.Elektromedik',0 'Jakarta II ',0 ' Cek Suhu Siap ',0 ' Tekan Start ',0 'Suhu di sini: ',0 'memproses ',0
DAFTAR PUSTAKA Usman, Teknik Antar Muka + Pemrograman Mikrokontroler AT89S52, Penerbit Andi, Yogyakarta, 2008
Budiharto, Widodo, Perancangan Sistem Dan Aplikasi Mikrokontroler, Penerbit PT Elex Media Komputindo, Jakarta, 2005
Suhata, Aplikasi Mikrokontroler sebagai Pengendali Peralatan Elektro, Penerbit PT Elex Media Komputindo, Jakarta, 2009
Setiawan, Sulhan, Mudah dan Menyenangkan Belajar Mikrokontroler, Penerbit Andi, Yogyakarta, 2008
http://www.atmel.com, Atmel 8051 Microcontrollers Hardware Manual, Atmel Corp., 2004
http://www.circuitstoday.com