4 BAB II LANDASAN TEORI 2.1 Perangkat keras Mikrokontroler AT89S51 2.1.1 Arsitektur Mikrokontroler AT89S51 Mikrokontroler AT89S51 merupakan salah satu keluarga dari MCS-51 keluaran Atmel. Jenis mikrokontroler ini pada prinsipnya dapat digunakan untuk mengolah data per bit ataupun data 8 bit secara bersamaan.[3] Sebuah mikrokontroler dapat bekerja bila dalam mikrokontroler tersebut terdapat sebuah program yang berisi instruksi-instruksi dari sebuah program pada tiap jenis mikrokontroler tersebut. Instruksi-instruksi dari sebuah program pada tiap jenis mikrokontroler mempunyai beberapa perbedaan, misalkan saja instruksi pada mikrokontroler Atmel berbeda dengan instruksi pada mikrokontroler Motorola.[3] Jenis mikrokontroller ini pada dasarnya dapat digunakan untuk mengolah data per bit maupun data 8 bit secara bersamaan. Sebuah mikrokontroler dapat bekerja apabila dalam mikrokontroler tersebut terdapat sebuah program yang berisi instruksiinstruksi yang akan digunakan untuk menjalankan sistem mikrokontroler tersebut. Mikrokontroller AT89C51 ini merupakan mikrokontroler satu chip yang mempunyai konfigurasi sebagai berikut :[4] a. CPU (Central Processing Unit) 8 bit yang termasuk keluarga dari MCS51. b. Kemampuan boolean processor (logika 1 bit). c. 32 jalur port I/O bidirectional, dapat dialamati tiap port. d. Program memori internal berupa Flash PEROM dengan kapasitas 4KB. e. RAM internal sebesar 128 byte.
5 f. Dua buah timer internal 16 bit. g. Satu buah port komunikasi serial. h. Dua buah interupsi eksternal. Susunan pin-pin pada Mikrokontroller AT89C51:[4] a. Port 0 (1 byte) terletak pada pin 32 hingga 39. b. Port 1 (1 byte) terletak pada pin 1 hingga 8. c. Port 2 (1 byte) terletak pada pin 21 hingga 28. d. Port 3 (1 byte) terletak pada pin 10 hingga 17. e. Kristal dipasang pada pin 18 dan 19. f. Reset terletak pada pin 9. g. Pin catudaya positif 5V pada kaki 40 h. Ground pada kaki 20. Banyak aplikasi mikrokontroler diantaranya dalam bidang pengukuran jarak jauh. Misalnya pengukuran disuatu tempat yang membahayakan manusia, maka akan lebih nyaman jika dipasang suatu sistem pengukuran yang bisa mengirimkan data lewat pemancar dan diterima oleh stasiun pengamatan dari jarak yang cukup aman dari sumbernya. Sistem pengukuran jarak jauh ini jelas membutuhkan suatu sistem akuisisi data sekaligus sistem pengiriman data secara serial (melalui pemancar), yang semuanya itu bisa diperoleh dari mikrokontroler yang digunakan. 2.1.2 Kontruksi AT89S51 Mikrokontrol AT89S51 hanya memerlukan tambahan 3 kapasitor, 1 resistor dan 1 kristal serta catu daya 5 Volt. Kapasitor 10 mikro-farad dan resistor 10 Kilo Ohm dipakai untuk membentuk rangkaian reset. Dengan adanya rangkaian reset ini AT89S51 otomatis direset begitu rangkaian menerima catu daya. Kristal dengan
6 frekuensi maksimum 24 MHz dan kapasitor 30 piko-farad dipakai untuk melengkapi rangkaian oscilator pembentuk clock yang menentukan kecepatan kerja mikrokontroler.[4] Memori merupakan bagian yang sangat penting pada mikrokontroler. Mikrokontroler memiliki dua macam memori yang sifatnya berbeda. Read Only Memory (ROM) merupakan memori yang hanya dapat dibaca. Data yang disimpan di ROM tidak akan hilang meskipun tegangan supply dimatikan. Dari sifatnya maka ROM sering dipakai untuk menyimpan program.[3] Random Access Memori (RAM) merupakan memori yang dapat dibaca san ditulis. Isinya akan sirna begitu IC kehilangan catu daya, dipakai untuk menyimpan data pada saat progam bekerja. RAM yang dipakai untuk menyimpan data ini disebut sebagai memori data.[3] Ada berbagai jenis ROM. Untuk mikrokontroler dengan progam yang sudah baku dan diproduksi secara masal, progam diisikan ke dalam ROM pada saat IC mikrokontroler dicetak di pabrik IC. Untuk keperluan tertentu mikrokontroler mengunakan ROM yang dapat diisi ulang atau Programble-Eraseable ROM yang disingkat menjadi PEROM atau PROM. Dulu banyak dipakai UV-EPROM (Ultra Violet Eraseable Progamble ROM) yang kemudian dinilai mahal dan ditinggalkan setelah ada flash PEROM yang harganya jauh lebih murah.[3] Jenis memori yang dipakai untuk Memori Program AT89S51 adalah Flash PEROM, program untuk mengendalikan mikrokontroler diisikan ke memori itu lewat bantuan alat yang dinamakan sebagai AT89S51 Flash PEROM Programmer. [3]
7 Gambar 2.1: IC Mikrokontroler AT89S51 Deskripsi pin-pin pada mikrokontroler AT89S51 :[4] VCC (Pin 40) sebagai suplai tegangan.[4] GND (Pin 20) digunakan sebagai Ground atau pentanahan.[4] Port 0 (Pin 39-Pin 32) Port 0 dapat berfungsi sebagai I/O biasa. Port 0 merupakan port paralel 8 bit dua arah.[3] Port 2 (Pin 21 pin 28) Port 2 merupakan port parallel 8 bit dua arah, port ini mengirim byte alamat bila dilakukan peaksesan memori eksternal. Port 3 (Pin 10 pin 17) Port 3 merupakan 8 bit port I/O. Port 3 juga mempunyai fungsi pin masing-masing, yaitu sebagai berikut :[4]
8 Nama pin Fungsi P3.0 (pin 10) RXD (Port input serial) P3.1 (pin 11) TXD (Port output serial) P3.2 (pin 12) INTO (interrupt eksternal 0) P3.3 (pin 13) INT1 (interrupt eksternal 1) P3.4 (pin 14) T0 (input eksternal timer 0) P3.5 (pin 15) T1 (input eksternal timer 1) P3.6 (pin 16) WR (menulis untuk eksternal data memori) P3.7 (pin 17) RD (untuk membaca eksternal data memori) RST (pin 9) Reset akan aktif dengan memberikan input high selama 2 cycle.[4] ALE/PROG (pin 30) Digunakan untuk menahan alamat memori eksternal selama pelaksanaan instruksi.[4] PSEN (pin 29) Progam store enable digunakan untuk mengakses memori progam eksternal.[4] EA/Vpp (pin 31) Pada kondisi low, pin ini akan berfungsi sebagai EA yaitu mikrokontroler akan menjalankan program yang ada pada memori eksternal setelah sistem direset. [4] XTAL1 (pin 19) Input untuk clock internal.[4] XTAL2 (pin 18) Output dari osilator.[4]
9 2.2 Perangkat Lunak Mikrokontroler AT89S51 2.2.1 Bahasa Assembly MCS-51 Program bahasa Assembly adalah sebuah program yang terdiri atas label-label, mnemonic dan lain sebagainya. Sedangkan assembler adalah suatu program yang dapat menerjemahkan program bahasa assembly keprogram bahasa mesin.[2] Bahasa yang digunakan untuk memprogram IC mikrokontroler AT89S51 adalah bahasa assembly untuk MCS-51. Angka 51 merupakan jumlah instruksi pada bahasa ini hanya ada 51 instruksi. Dari 51 instruksi, yang sering digunakan orang hanya 10 instruksi. Instruksi instruksi tersebut antara lain :[2] 1. Instruksi MOV Perintah ini merupakan perintah untuk mengisikan nilai ke alamat atau register tertentu. Pengisian nilai dapat secara langsung atau tidak langsung. Contoh pengisian nilai secara langsung MOV R0,#20h Perintah di atas berarti : isikan nilai 20 Heksadesimal ke register 0 (R0). Tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah nilai. Contoh pengisian nilai secara tidak langsung MOV 20h,#80h...... MOV R0,20h Perintah di atas berarti : isikan nilai yang terdapat pada alamat 20 Heksadesimal ke register 0 (R0). Tanpa tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah alamat.
10 2. Instruksi DJNZ Decreament Jump If Not Zero (DJNZ) ini merupakan perintah untuk mengurangi nilai register tertentu dengan 1 dan lompat jika hasil pengurangannya belum nol. Contoh, MOV R0,#80h Loop:...... DJNZ R0,Loop... R0 =1, jika belum 0 lompat ke loop, jika R0 = 0 maka program akan meneruskan ke perintah pada baris berikutnya. 3. Instruksi ACALL Instruksi ini berfungsi untuk memanggil suatu rutin tertentu. Contoh : ACALL TUNDA TUNDA: 4. Instruksi RET Instruksi RETURN (RET) ini merupakan perintah untuk kembali ke rutin pemanggil setelah instruksi ACALL dilaksanakan. Contoh, ACALL TUNDA TUNDA: RET
11 5. Instruksi JMP (Jump) Instruksi ini merupakan perintah untuk lompat ke alamat tertentu. Contoh, Loop:.. JMP Loop 6. Instruksi JB (Jump if bit) Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika high (1). Contoh, Loop: JB P1.0,Loop... 7. Instruksi JNB (Jump if Not bit) Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika Low (0). Contoh, Loop: JNB P1.0,Loop... 8. Instruksi CJNZ (Compare Jump If Not Equal) Instruksi ini berfungsi untuk membandingkan nilai dalam suatu register dengan suatu nilai tertentu. Contoh, Loop:... CJNE R0,#20h,Loop...
12 Jika nilai R0 tidak sama dengan 20h, maka program akan lompat ke rutin Loop. Jika nilai R0 sama dengan 20h,maka program akan melanjutkan instruksi selanjutnya.. 9. Instruksi DEC (Decreament) Instruksi ini merupakan perintah untuk mengurangi nilai register yang dimaksud dengan 1. Contoh, MOV R0,#20h R0 = 20h DEC R0 R0 = R0 1 10. Instruksi INC (Increament) Instruksi ini merupakan perintah untuk menambahkan nilai register yang dimaksud dengan 1. Contoh, MOV R0,#20h R0 = 20h... INC R0 R0 = R0 + 1
13 2.2.2 Software 8051 Editor, Assembler, Simulator (IDE) Instruksi-instruksi yang merupakan bahasa assembly tersebut dituliskan pada sebuah editor, yaitu 8051 Editor, Assembler, Simulator (IDE). Tampilannya seperti di bawah ini: Gambar 2.2: 8051 Editor, Assembler, Simulator (IDE) Setelah program selesai ditulis, kemudian di-save dan kemudian di-assemble (di-compile). Pada saat di-assemble akan tampil pesan peringatan dan kesalahan. Jika masih ada kesalahan atau peringatan, itu berarti ada kesalahan dalam penulisan perintah atau ada nama subrutin yang sama, sehingga harus diperbaiki terlebih dahulu sampai tidak ada pesan kesalahan lagi. Software 8051IDE ini berfungsi untuk merubah program yang kita tuliskan ke dalam bilangan heksadesimal, proses perubahan ini terjadi pada saat peng-compile-an. Bilangan heksadesimal inilah yang akan dikirimkan ke mikrokontroller.
14 2.2.3 Software Downloader Untuk mengirimkan bilangan-bilangan heksadesimal ini ke mikrokontroller digunakan software ISP- Flash Programmer 3.0a yang dapat didownload dari internet. Tampilannya seperti gambar di bawah ini: Gambar 2.3 : ISP- Flash Programmer 3.a Cara menggunakannya adalah dengan meng-klik Open File untuk mengambil file heksadesimal dari hasil kompilasi 8051IDE, kemudian klik Write untuk mengisikan hasil kompilasi tersebut ke mikrokontroller. 2.3 Inframerah Sinar infra merah adalah radiasi elektromagnetik yang merupakan sinar tidak tampak, berada pada spektrum warna merah. Infra merah berarti bawah merah, berasal dari bahasa Latin infra yang berarti bawah. Dapat dikatakan bahwa cahaya matahari 80 % nya adalah sinar inframerah, karena lebarnya jangkauan gelombang sinar ini 0,75 1000 micron.[6] Sinar inframerah dikelompokkan dalam tiga zona,yaitu:[6] a. Near Infrared ray dengan panjang gelombang 0,75 1,5 micron.
15 b. Middle Infrared ray dengan panjang gelombang 1,5 4 micron. c. Far Infrared ray dengan panjang gelombang 4 1000 micron. Spektrum sinar matahari terdiri dari sinar tampak dan sinar tak tampak. Sinar tampak meliputi: merah, orange, kuning, hijau, dan ungu. Sinar tidak tampak antara lain: sinar ultraviolet, sinar x, sinar gamma, sinar kosmik, mikrowave, gelombang listrik dan inframerah. Gelombang elektromagnetik diantara sinar tampak dan sinar mikrowave dinamakan sinar inframerah, dengan karakteristik adalah tidak kasat mata atau tidak terlihat, bersifat linear atau menyebar, refraktif atau dapat dipantulkan dan dapat diserap oleh beberapa objek.[6] 2.3.1 Pemancar Data Infra merah Infra Red Transmitter merupakan suatu modul pengirim data melalui gelombang infra merah dengan frekuensi carrier sebesar 38 khz. Modul ini dapat difungsikan sebagai output dalam aplikasi transmisi data nirkabel seperti robotik, sistem pengaman, data logger, absensi, dan sebagainya.[5] Spesifikasi Hardware diantaranya adalah sebagai berikut:[5] 1. Tegangan kerja: +5 VDC. 2. Frekuensi carrier penerima infra merah: 38 khz. 3. Panjang gelombang puncak 940 nm. 4. Sudut pancaran ±17 o. 5. Jarak maksimum yang teruji pada sudut 0 o : 16 m. 6. Jarak maksimum sesuai datasheet: 35 m 7. Memiliki input yang kompatibel dengan level tegangan TTL, CMOS, dan RS-232. 8. Terdapat 2 mode output: non-inverting dan inverting.
16 2.3.2 Penerima Data Inframerah Infra Red Receiver merupakan suatu modul penerima data melalui gelombang infra merah dengan frekuensi carrier sebesar 38 khz. Modul ini dapat difungsikan sebagai input dalam aplikasi transmisi data nirkabel seperti robotik, sistem pengaman, datalogger, absensi, dan sebagainya. Spesifikasi Hardware diantaranya adalah:[5] 1. Tegangan kerja: +5 VDC. 2. Frekuensi carrier penerima infra merah: 38 khz. 3. Panjang gelombang puncak 950 nm. 4. Sudut penerimaan ±45 o. 5. Memiliki 2 output: non-inverting (OUT) dan inverting (OUT). Keduanya kompatibel dengan level tegangan TTL, CMOS, dan RS-232. 3.1. INTERFACING SEVEN SEGMEN Seven segmen merupakan adalah komponen integrasai led display yang paling popular diantara segmen-segmen LED yang lain(misalnya ten-segmen, matrix segmen). Pada umumnya system monitor panel-panel control untuk keperluan industri sebagian besar cukup dapat dipenuhi dengan memamfaatkan lajur seven segmen.[1] Seven segmen mempunyai 7 buah segmen ditambah 1 segmen yang berfungsi sebagai desimal point. Gambar susunan dari seven segmen ditunjukkan pada gambar berikut ini :
17 Gambar 3.1 : susunan seven segmen Segmen yang atas disebut segmen a, segmen sebelah kanan atas disebut segmen b, dan seterusnya sesuai gambar di atas. Dp merupakan singkatan dari desimal point.