Professional Documents
Culture Documents
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
mov p0,a rl a
Jika ingin menganti geser kanan dapat dilakukan hanya dengan mengganti RL dengan RR
: : : :
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
: : : :
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
PKa
kekiri
Pki
sjmp kekiri
: : :
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 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
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:
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
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
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
: :
mov R0,#10 mov R1,#10 mov R2,#10 jnb P0.0, isi jnb P0.7, stop
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
hexbcd:
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:
subb A,#64H mov 30H,A mov A,r1 subb A,#00H mov 31H,A jbc cy,sepuluh inc 27H mov r0,30H
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
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 :
;=============================================================
Mulai: into
mov setb
tmod,#0dh tr0
;=============================================================
Ulang: mov
;============================================================ 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,#00h mov jbc inc mov mov 31h,a cy,splh 27h r0,30h r1,31h
sjmp rtsan
b,#0ah
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
r7 r7,#1,loop
End