You are on page 1of 30

LAPORAN MIKROKONTROLER

Disusun oleh: Muhammad Rifqi Al Fauzan (4250408008)

JURUSAN FISIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS NEGERI SEMARANG

PENDAHULUAN Mikrokontroler atau mikroprosesor adalah salah satu bentuk peralatan pengendalian rangkaian elektronik. Pengendalian mikrokontroler dan mikroprosesor mempunyai bentuk yang sedikit berbeda, namun pada dasarnya mempunyai fungsi yang hampir sama. Sebelum menggunakan peralatan mikro kita juga harus mengetahui karakteristik terlebih dahulu. Ada beberapa langkah dalam membuat mikrokontroler. 1. Editing program Untuk membuat program assembler MCS-51 bisa dugunakan semua progam text editor, seperti notepad atau yang lain. Dalam membuat program MCS-51 kita harus menyimpannya dalm extensi .ASM. namun pada proses pemrogaman dan untuk mempermudah proses penginstalan nantinya kita dapat menggunakan progam Read-51. Program Read-51 ini lebih dipermudah karena menggunakan simulator LED. Selain itu program Read-51 diberi detetktor kesalahan, sehingga kita dapat mengetahui apakah program yang kita buat sudah benar atau belum. 2. Proses kompilasi Setelah program dibuat sesuai dengan yang kita inginkan, kita harus membuat program tersebut dapat dibaca oleh mesin. Nama pengubahan ini disebut dengan proses kompilasi. Proses kompilasi dimaksudkan supaya file yang tadinya ber exstensi .ASM menjadi file ber exstensi .HEX. dalam progam Read-51 kita dipermudahkan karena tiap kita menyimpan data secara otomatis kita juga mengopail file dalam bentuk .HEX. 3. Proses pengisian Ke flash ROM Untuk melakukan pengisian ke flash ROM jalankan program AEC.EXE yang berada didalam folder tempat kita menyimpan file yang telah kita program sebelumnya. Apa bila belum ada maka kita dapat mengkopi dari folder yang lain. Dalam pengisian ini ada beberapa langkah:

a. Pasang dahulu kabel data dari modul sismin yang bertulis ISP ke port printer pada CPU. b. Sesuaikan targer IC mikro yang akan deprogram, biasanya menggunakan IC AT89S51 . lakukan setting pada program AEC supaya sesuai dengan menekan progam pada setup. c. Lakukan langkah berikut: i. Tekan A (Load nama file yang kita kehendaki dari file HEX ke buffer ISP) ketik nama file yang berextensi .HEX lengakap dengan extensinya. ii. Tekan sembarang tombol untuk kembali ke menu utama ISP.pasangkan Ic Micro ke soket dari sismin. iii. Tekan E pada menu utama ISP untuk memulai proses sengisian data HEX di buffer ISP ke Ic Micro,tunggu sampai selesai. System Minimum System minimum merupakan rangkaian pusat pengendali system, yang mampu mengoprasikan IC mikrokontroler sesuai dengan yang diinginkan. Dengan adanya system minimum, kebutuhan catu daya, sinyal detak, maupun pengantar muka IC mikrokontroler dapat terpenugi, sehingga system dapat berjalan sebgagaimana mestinya. Dengan dirangakainya IC mikrokontrolerpemrogaman dilakukan dengan menggunakan ISP (in system programing). System minimum mempunyai catu daya sendiri untuk memenuhi kebutuhan dayanya. Hal ini bertujuan agar kestabilan tegangan yang mencatu mikrokontroler lebih terjamin, jika dibandingkan dengan pencatuan daya oleh catu daya utama. Rarngkaian catu daya pada system minimu ini, komponen utamanya adalah IC AT89S51, yang mampu menstabilkan tegangan untuk mencatu kebutuhan daya system minimum yang pencatuannya diambiil dari system ini. Adapun nilai keluaran tegangan catu daya system minimum ini adalah 5,14V. Beberapa bahasa assembly yang sering digunakan.

ACALL :memanggil SJMP: sort jump AJMP: all jump LJMP: long jump MOV: memindah CLR: clear CJNE: compare and jump if not equal (melompat bersyarat) JB: jump bit JNB: jump not bit INC: increament (menambah 1) Masukan dan keluaran mikro kontroler Dalam rangkaian mikrokontroler terdapat beberapa aplikasi mikrokontroler mempunyai bermacam masukan dan keluaran diantaranya: 1. LED LED adalah bentuk keluaran dari mikro kontroler yang menggunakan LED (light emiting dioda). Dalam simulasi system minimum bisasanya digunakan 8 buah led atau bisa juga disebut 8 bit keluaran. Rangakaian LED ini sesuai dengan system yang ada dalam mikrokontroler AT89S51 yang berkapasitas 8 bit. Cara kerja dasar LED sesuai dengan karaktersistik diode pada umumnya yang dapat mengalirkan arus dari anoda ke katoda, sehingga LED dapat menyala, yang disebut panjar maju. Jika LED tersebut diberikan panjar mundur, yaitu mengalirkan arus dari katoda ke anoda, maka arus tidak akan mengalir dan LED tidak bisa menyala. 2. Saklar

Pengendalian untuk meneruskan arus yang dilalui oleh saklar. Dan pengendalian yang dilakukan bisa apa saja dengan menggunakan mikrokontroler. Dengan IC AT89S51 kita bisa menggunakan delapan buah saklar sebagai pengendali. Pengendalian yang dilakukan oleh saklar tentusaja sesuai dengan progam yang telah kita berikan pada IC sebelumnya. 3. Push button Push button adalah salah satu masukan dari mikrokontroler. Push button digunakan untuk masukan dalam pengendalian keluaran yang diiinginkan. Push button sebenernya bekerja seperti halnya saklar dalm mengontrol arus yang keluar masuk suatu rangkaian. Dalam penggunaan push button yang membedakannya dengan saklar adalah jika saklar digunakan untuk meneruskan arus dengan posisi yang tidak dapat kembali jika tidak di control namun jika push button adalah saklar yang otomatis akan kembali seperti semula jika penekanan tidak dilakukan lagi.

4. Motorstepper Motorstepper adalah salah satu alat yang digunakan untuk penggerak dengan akurasi sudut yang tepat. Keluaran mikrokontroler yang satu ini melakukan gerakan memutar ke kiri atau kekanan sesuai dengan keinginan kita sesuai dengan program yang telah dibuat. 5. Seven segmen Keluaran dari mikrokontroler juga bisa menggunakan seven segmen. Seven segmen merupakan suatu rangkaian yang keluaran berupa tampilan tujuh segmen, yang mampu menampilkan karakter decimal, dimana setiap segmen tersebut terdapat LED yang bekerja dengan menggunakan prinsip panjar maju. Seven segmen dapat menampilakan sebuah bilangan dalam bentuk decimal. Seven segmen juga memerlukan pmbuatan program yang sedikit berbeda dan butuh penganganan lebih. Seven segmen dapat menampilkan bilangan decimal dari sebuah bilangan biner. System pengubah biner ke decimal dalam IC juga digunakan yang dinamakan BCD atau (binery codes decimal) dengan aplikasi dari IC 7447 atau IC 7448 6. Keypad 1 1 4 4 7 7 8 * o 8 0 # 5 8 9 3 2 5 6 9 2 3 6 3 Keypad adalah masukan yang berupa tombol yang bekerja berdasarkan kombinasi baris dan kolom. Modul kepad yang digunakan disini adalah keypad matrik 4x3, maksudnya dalah bahwa keypad ini mempunyai 4 baris dan 3 kolom.

Selain beberapa bentuk keluaran dan masukan diatas masih ada beberapa masukan dan keluaran yang lain namun tidak dibahas dalam laporan ini.

Beberapa Progam dengan Read-51 LED 1. LED geser kiri Mengendalikan LED dengan nyala bergantian kearah kiri. Instruksi ini memberikan bit bernilai 0 dari port P0.7 menuju ke P0.0 secara bergantian. Progam ini bisa disebut progam menggeser nyala LED ke kiri. Bentuk program

#Include <sfr51.inc> Mov Hidup: a, #11111110b

mov p0,a rl a

Jika ingin menganti geser kanan dapat dilakukan hanya dengan mengganti RL dengan RR

acall tunda sjmp hidup

Tunda Ulang1 Ulang2 Ulang3

: : : :

mov r0,#0 mov r1,#0 mov r2,#0 inc r2 cjne r2,#300,ulang3 inc r1 cjne r1,#100,ulang2 inc r0 cjne r0,#100,ulang1 ret

End

2. Nyala lampu dengan pengendalian push button Dikendalikan dengan port P3.0 dengan nyala lampu dari tengah ke luar kembali ke tengah kembali. Sementara untuk mematikannya dengan port P3.1. sementara keluaran nyala lampu digunakan port P1 Bentuk program

#include <sfr51.inc> mov P1,#FFh Button1 : JB P3.0,Button1 mov A,#FEh Acall nyala nyala : Mov P1,#11100111b Acall tunda Mov P1,#11011011b Acall tunda Mov P1,#10111101b Acall tunda Mov P1,#01111110b Acall tunda Mov P1,#10111101b Acall tunda Mov P1,#11011011b Acall tunda CJNE A,#7Fh,nyala mati : mov P1,#FFh SJMP tombol1

tunda ulang1 ulang2 ulang3

: : : :

mov R0,#0 mov R1,#0 mov R2,#0 inc R2 CJNE R2,#300,ulang3 inc R1 CJNE R1,#100,ulang2 inc R0 JNB P3.1,mati CJNE R0,#100,ulang1 ret

end

MOTORSTEPPER 1. motor stepper jalan kiri kanan Motor stepper bekerja untuk menggerakkan, dengan gerak memutar dalam dengan prinsip arahh magentik dalam motor stepper. Berikut programnya

#include <sfr51.inc> start : acall stepCW sjmp start; stepCW : mov p0,#11101111b acall tunda mov p0,#11011111b acall tunda mov p0,#10111111b

acall tunda mov p0,#01111111b acall tunda sjmp stepCCW ret; stepCCW : mov p0,#01111111b acall tunda mov p0,#10111111b acall tunda mov p0,#11011111b acall tunda mov p0,#11101111b acall tunda sjmp stepCW ret; tunda: ulang2: ulang1: ulang: MOV MOV MOV INC CJNE INC CJNE INC CJNE RET End r3,#0 r2,#0 r1,#0 r1 r1,#200,ulang r2 r2,#100,ulang1 r3 r3,#10,ulang2

2. motor stepper dengan pengendali push button program motorstepper ini juga dapat ditambah dengan pengendalian dengan menggunakan masukan. Seperti push button maupun saklar. Berikut merupakan program pengendalinya

#include <sfr51.inc> start : acall tunda sjmp start stop: mov P1,#00H sjmp start

kekanan

mov A,#11H mov P1,A mov R3,#4

PKa

acall tunda rr A mov P1,A djnz R3, PKa sjmp kekanan

kekiri

mov A,#11H mov P1,A mov R3,#4

Pki

acall tunda rl A mov P1,A djnz R3,PKi

sjmp kekiri

tunda ulang ulang1

: : :

mov R0,#5 mov R1,#50 mov R2,#50 jnb P0.0, kekanan jnb P0.1, kekiri jnb P0.7,stop djnz R2,$ djnz R1,ulang1 djnz R0,ulang ret

end

KEYPAD Keypad adalah masukan untuk memasukkan suatu nilai decimal disini dipaka keypad yang berbentuk 3x3 Berikut programnya

#include <sfr51.inc> mov A,#00H mov P2,#00H mov P0,#FFH mov R0,#00H

start :

acall scan acall hexbcd

acall on acall tunda sjmp start scan : setb P3.1 setb P3.2 clr P3.0 mov A,P0 anl A,#11110000b swap A acall tunda cjne A,#14,cari mov R0,#1 ret cari : acall tunda cjne A,#13,cari1 mov R0,#4 ret cari1 : acall tunda cjne A,#11,cari2 mov R0,#7 ret cari2 : acall tunda cjne A,#7,scan2 mov R0,#10 ret

scan2 : clr P3.1

setb P3.2 setb P3.0 mov A,P0 anl A,#11110000b swap A acall tunda cjne A,#14,cari3 mov R0,#2 ret cari3 : acall tunda cjne A,#13,cari4 mov R0,#5 ret cari4 : acall tunda cjne A,#11,cari5 mov R0,#8 ret cari5 : acall tunda cjne A,#7,scan3 mov R0,#0 ret

scan3 :

setb P3.1 clr P3.2 setb P3.0 mov A,P0 anl A,#11110000b

swap A acall tunda cjne A,#14,cari6 mov R0,#3 ret cari6 : acall tunda cjne A,#13,cari7 mov R0,#6 ret cari7 : acall tunda cjne A,#11,cari8 mov R0,#9 ret cari8 : acall tunda cjne A,#7,scan4 mov R0,#11 ret

scan4:

nop ret

hexbcd: clr CY mov 26H,#00H h_1000: mov A,R0 subb A,#0E8H mov 30H,A mov A, R1 subb A,#03H

mov 31H,A jbc CY,nextbcd inc 26H mov R0,30H mov R1,31H sjmp h_1000 nextbcd: mov 27H,#00H h_100 : mov A,R0 subb A,#64H mov 30H,A mov A, R1 subb A,#00H mov 31H,A jbc CY,bcd inc 27H mov R0,30H mov R1,31H sjmp h_100 bcd : mov B,#0AH mov A,R0 div AB mov 28H,A mov A,B mov 29H,A ret segmen: mov R4,#3FH on : mov A,26H

orl A,#10H mov P1,A acall tunda mov A,27H orl A,#20H mov P1,A acall tunda mov A,28H orl A,#40H mov P1,A acall tunda mov A,29H orl A,#80H mov P1,A acall tunda djnz R4,on ret

tunda : ulang:

mov R7,#1 mov R6,#1

ulang1 : mov R5,#1 djnz R5,$ djnz R6,ulang1 djnz R7,ulang ret end

SEVEN SEGMEN 1. seven segmen menampilkan bilangan sesuai dengan urutan Seven segmen adalah salah satu bentuk aplikasi dimana kita dapat menggunakannya sebagai keluaran yang dapat kita lihat dalam bentuk decimal langsung. Seven segmen disini mempunyai empat buah bilangan dari ribuan, ratusan, puluhan hingga satuan. Berikut bentuk proggramnya #Include <sfr51.inc> mov mov mov mov Nyala : mov Lagi: mov orl mov acall mov orl mov acall mov orl mov acall mov orl 26h,#0 27h,#2 28h,#0 29h,#7 r4,#3fh a,26h a,#80h p0,a tunda a,27h a,#40h p0,a tunda p0,28h a,20h p0,a tunda a,29h a,#10h

mov acall sjmp

p0,a tunda nyala

Tunda: Ulang2: Ulang1: Ulang:

mov mov mov inc

r3,#0 r2,#0 r1,#0 r1 cjne inc cjne inc cjne ret r1,#200,ulang r2 r2,#100,ulang1 r3 r3,#100,ulang2

End

2. Seven segmen dengan pengendalian push button Seven segmen dengan pengendalian push button ini menampilkan data sesuai dengan yang sudah dimasukkan dalam program dengan menggunakan beberapa tombol

#include <sfr51.inc> start : acall delay sjmp start stop : mov P1,#00H sjmp start isi : mov 26H,#0 mov 27H,#2

mov 28H,#0 mov 29H,#7

on

mov A,26H orl A,#80H mov P1,A acall delay mov A,27H orl A,#40H mov P1,A acall delay mov A,28H orl A,#20H mov P1,A acall delay mov A,29H orl A,#10H mov P1,A acall delay sjmp on

delay loop loop1 :

: :

mov R0,#10 mov R1,#10 mov R2,#10 jnb P0.0, isi jnb P0.7, stop

djnz R2,$ djnz R1,loop1 djnz R0,loop ret end

HEXBCD Program untuk mengkonversi heksadecimal menjadi decimal dengan menggunakan instruksi hexbcd. Penerapan converter untuk menampilkan bilangan heksadesimal dalam bentuk decimal. Berikut programnya

#include <sfr51.inc> mov r5,#00H mov 21H,#00H mov A,#00H utama: inc r5 mov A,r5 mov p0,A mov p1,A mov A,21H mov r1,A mov p3,A acall hexbcd acall nyala acall tunda cjne r5,#255,utama

inc 21H sjmp utama

hexbcd:

mov 26H,#00H clr cy

k_1000:

mov A,r0

subb A,#0EH mov 30H,A mov A,r1 subb A,#03H mov 31H,A jbc cy,seratus inc 26H mov r0,30H mov r1,31H sjmp k_1000

seratus: k_100:

mov 27H,#00H mov A,r0

subb A,#64H mov 30H,A mov A,r1 subb A,#00H mov 31H,A jbc cy,sepuluh inc 27H mov r0,30H

mov r1,31H sjmp k_1000

sepuluh:

mov B,#0AH

mov A,r0 div AB mov 28H, A mov A,B mov 29H,A ret nyala: mov r4,#64H

nyala1: mov A,26H ORL A,#10H mov p0,A acall tunda mov A,27H orl A,#20H mov p0,A acall tunda mov A,28H ORL A,#40H mov p0,A acall tunda mov A,29H orl A,#80H mov p0,A acall tunda

djnz r4,nyala1 RET

tunda: loop: loop1:

mov r7,#00H mov r6,#00H inc r6

cjne r6,#100, loop1 inc r7 cjne r7,#10, loop ret end

3. Counter dengan display seven segment Counter adalah salah satu fasilitas mikrokontroller untuk menghitung input dari luar, dalam percobaan ini kita gunakan saklar push button sebagai input. Jadi setiap saklar ditekan, akan mengaktifkan counter dan hasil hitungan tadi ditampilkan ke dalam seven segmen. Berikut adalah programnya :

#Include <sfr51.inc> ;============================================================ ; inisialisasi program

;=============================================================

Mulai: into

mov setb

tmod,#0dh tr0

;sumber dari luar, aktif oleh

;============================================================= ; program utama

;=============================================================

Ulang: mov

a,tl0 mov acall acall sjmp r0,a hexbcd nyala ulang

;============================================================ ; konversi ke hexbcd

;============================================================ Hexbcd: Rbuan: mov mov 26h,#00h a,r0 mov subb a,#0e8h mov mov 30h,a a,r1 r1,#0

subb a,#03h mov jbc inc 31h,a cy,satus 26h mov mov sjmp rbuan r0,30h r1,31h

Satus: Rtsan:

mov mov

27h,#00h a,r0

subb a,#64h mov mov 30h,a a,r1

subb a,#00h mov jbc inc mov mov 31h,a cy,splh 27h r0,30h r1,31h

sjmp rtsan

Splh: mov div mov mov mov ret

mov a,r0 ab 28h,a a,b 29h,a

b,#0ah

;============================================================ ; menyalakan seven segment

;============================================================ Nyala: Nyala1: mov mov r4,#0afh a,26h

orl mov acall mov orl

a,#70h p0,a tunda a,27h a,#0b0h mov acall p0,a tunda

mov orl mov acall mov orl mov acall

a,28h a,#0d0h p0,a tunda a,29h a,#0e0h p0,a tunda djnz r4,nyala1 ret

;=====================sub routin tunda===================== ;========================================================== tunda: Loop: Loop1: mov mov inc cjne r7,#00h r6,#00h r6 r6,#0dfh,loop1

inc cjne ret

r7 r7,#1,loop

End

You might also like