BAB II TINJAUAN PUSTAKA 2.1. PERANGKAT KERAS 2.1.1. Arsitektur Mikrokontroler AT89S51 Mikrokontroler, sebagai suatu terobosan teknologi mikrokontroler dan mikrokomputer, hadir memenuhi kebutuhan pasar (market need) dan teknologi baru. Sebagai teknologi baru, yaitu teknologi semikonduktor dengan kandungan transistor yang lebih banyak namun hanya membutuhkan ruang kecil serta dapat diproduksi secara massal (dalam jumlah banyak) sehingga harga menjadi lebih murah (dibandingkan mikroprosesor). Sebagai kebetuhan pasar, mikrokontroler hadir untuk memenuhi selera industri dan para konsumen akan kebutuhan dan keinginan alat-alat Bantu dan mainan yang lebih canggih. Ilustrasi yang mungkin bisa memberikan gambaran yang jelas dalam penggunaan mikrokontroler adalah pada pintu mal otomatis pada saat ada orang akan
masuk atau keluar. sensor jarak yang mendeteksi adanya orang di depan pintu yang akan masuk, akan dilanjutkan ke mikrokontroler untuk kemudian membuka pintu secara otomatis, dan kembali menutup saat orang tersebut melewati pintu. Selain system pintu otomatis di atas, kita juga dapat menjumpai aplikasi mikrokontroler dalam bidang pengukuran jarak jauh atau yang dikenal dengan system telemetri. Misalnya pengukuran disuatu tempat yang membahayakan manusia, maka akan lebih nyaman jika dipasang suatu system 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 system akuisisi data sekaligus system pengiriman data secara serial (melalui pemancar), yang semuanya itu bisa diperoleh dari mikrokontroler yang digunakan. Tidak seperti system komputer, yang mampu menangani berbagai macam program aplikasi (misalnya pengolah kata, pengolah angka dan lain sebagainya), mikrokontroler hanya bisa digunakan untuk satu aplikasi tertentu saja. Perbedaan lainnya terletak pada perbandingan RAM-nya dan ROM. Pada system computer perbandingan RAM dan ROM-nya besar, artinya program-program pengguna disimpan dalam ruang RAM yang relative besar, sedangkan rutin-rutin antarmuka perangkat keras disimpan dalam ruang ROM yang kecil. Sedangkan pada mikrokontroler, perbandingan ROM dan RAM-nya yang besar artinya program
control disimpan dalam ROM (bisa Masked ROM atau Flash PEROM) yang ukurannya relatif lebih besar, sedangkan RAM digunakan sebagai tempat penyimpanan sementara, termasuk register-register yang digunakan pada mikrokontroler yang bersangkutan. 2.1.2. Kontruksi AT89S51 Mikrokontrol AT89SS51 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 AT89c51 otomatis direset begitu rangkaian menerima catu daya. Kristal dengan frekuensi maksimum 24 MHz dan kapasitor 30 piko-farad dipakai untuk melengkapi rangkaian oscilator pembentuk clock yang menentukan kecepatan kerja mikrokontroler. Memori merupakan bagian yang sangat penting pada mikrokontroler. Mikrokontroler memiliki dua macam memori yang sifatnya berbeda.
Read Only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan catu daya. Sesuai dangan keperluannya, dalam susunan MCS-51 memori penyimpanan progam ini dinamakan sebagai memori progam. Random Access Memori (RAM) 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. 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. 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.
Memori Data yang disediakan dalam chip AT89c51 sebesar 128 byte, meskipun hanya kecil saja tapi untuk banyak keperluan memori kapasitas itu sudah cukup. Sarana Input/Ouput yang disediakan cukup banyak dan bervariasa. AT89S51 mempunyai 32 jalur Input/Ouput. Jalur Input/Ouput paralel dikenal sebagai Port 1 (P1.0..P1.7) dan Port 3 (P3.0..P3.5 dan P3.7). AT89S51 Gambar 2.1 IC Mikrokontroler AT89S51
Deskripsi pin-pin pada mikrokontroler AT89S51 : VCC (Pin 40) Suplai tegangan GND (Pin 20) Ground Port 0 (Pin 39-Pin 32) Port 0 dapat berfungsi sebagai I/O biasa, low order multiplex address/data ataupun penerima kode byte pada saat flash progamming Pada fungsi sebagai I/O biasa port ini dapat memberikan output sink ke delapan buah TTL input atau dapat diubah sebagai input dengan memberikan logika 1 pada port tersebut. Pada fungsi sebagai low order multiplex address/data, port ini akan mempunyai internal pull up. Pada saat flash progamming diperlukan eksternal pull up, terutama pada saat verifikasi program.
Port 2 (Pin 21 pin 28) Port 2 berfungsi sebagai I/O biasa atau high order address, pada saat mengaksememori secara 16 bit. Pada saat mengakses memori 8 bit, port ini akan mengeluarkan isi dari P2 special function register. Port ini mempunyai internal pull up dan berfungsi sebagai input dengan memberikan logika 1. Sebagai output, port ini dapat memberikan output sink keempat buah input TTL. Port 3 (Pin 10 pin 17) Port 3 merupakan 8 bit port I/O dua arah dengan internal pullup. Port 3 juga mempunyai fungsi pin masing-masing, yaitu sebagai berikut : Tabel 2.1 Pin dan Fungsi Pin Mikrokontroler AT89S51 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 0 eksternal) P3.3 (pin 13) INT1 (interrupt 1 eksternal) 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. ALE/PROG (pin 30) Address Latch Enable adalah pulsa output untuk me-latch byte bawah dari alamat selama mengakses memori eksternal. Selain itu, sebagai pulsa input progam (PROG) selama memprogam Flash. PSEN (pin 29) Progam store enable digunakan untuk mengakses memori progam eksternal. EA (pin 31) Pada kondisi low, pin ini akan berfungsi sebagai EA yaitu mikrokontroler akan menjalankan progam yang ada pada memori eksternal setelah sistem direset. Jika kondisi high, pin ini akan berfungsi untuk menjalankan progam yang ada pada memori internal. Pada saat flash progamming, pin ini akan mendapat tegangan 12 Volt.
XTAL1 (pin 19) Input untuk clock internal. XTAL2 (pin 18) Output dari osilator. 2.1.3. Relay Relay adalah suatu rangkaian switch magnetik yang bekerja bila mendapat catu dan suatu rangkaian trigger. Relay memiliki tegangan dan arus nominal yang harus dipenuhi output rangkaian pendriver atau pengemudinya. Arus yang digunakan pada rangkaian adalah arus DC. Konstruksi dalam suatu relay terdiri dari lilitan kawat (coil) yang dililitkan pada inti besi lunak. Jika lilitan kawat mendapatkan aliran arus, inti besi lunak kontak menghasilkan medan magnet dan menarik switch kontak. Switch kontak mengalami gaya listrik magnet sehingga berpidah posisi ke kutub lain atau terlepas dari kutub asalnya. Keadaan ini akan bertahan selama arus mengalir pada kumparan relay. Dan relay akan kembali keposisi semula yaitu normaly ON atau Normaly OFF, bila tidak ada lagi arus yang mengalir padanya, posisi normal relay tergantung pada jenis relay
yang digunakan. Dan pemakaian jenis relay tergantung pada kadaan yang diinginkan dalam suatu rangkaian. Menurut kerjanya relay dapat dibedakan menjadi : a. Normaly Open (ON), saklar akan terbuka bila dialiri arus b. Normaly Close (OFF), saklar akan tertutup bila dialiri arus c. Change Over (CO), relay ini mempunyai saklar tunggal yang nomalnya tertutup yang lama, bila kumparan 1 dialiri arus maka saklar akan terhubung ke terminal A, sebaliknya bila kumparan 2 dialiri arus maka saklar akan terhubung ke terminal B. Analogi rangkaian relay yang digunakan pada laporan tugas akhir ini adalah saat basis transistor ini dialiri arus, maka transistor dalam keadaan tertutup yang dapat menghubungkan arus dari kolektor ke emiter yang mengakibatkan relay terhubung. Sedangkan fungsi dioda disini adalah untuk melindungi transistor dari tegangan induksi berlebih, dimana tegangan ini dapat merusak transistor. Jika transistor pada basis tidak ada arus maju, transistor terbuka sehingga arus tidak mengalir dari kolektor ke emiter, relay tidak bekerja karena tidak ada arus yang mengalir pada gulungan kawat.
gambar2.24. Bentuk relay yang digunakan dengan rangkaian driver dapat dilihat pada Vcc Dioda V B Tr a. Simbol b. Relay dengan rangkaian driver Gambar 2.2 Simbol Relay dan Rangkaian Driver 2.1.4 Seven Segmen Seven segmen merupakan komponen elektronika yang banyak digunakan untuk menampilkan angka. Seven segmen ini sebenarnya merupakan LED yang disusun sedemikian rupa sehingga membentuk suatu pola tertentu, dimana jika LED LED tersebut dinyalakan dengan kombinasi tertentu, maka akan terbentuk suatu angka tertentu.
Seven segmen mempunyai 7 buah segmen ditambah 1 segmen yang berfungsi sebagai desimal point. Gambar susunan dari seven segmen ditunjukkan pada gambar berikut ini : Gambar 2.3 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. Seven segmen ada 2 tipe, yaitu common anoda dan common katoda. Pada seven segmen tipe common anoda, anoda dari setiap LED dihubungkan menjadi satu kemudian dihubungkan ke sumber tegangan positip dan katoda dari masing-masing LED berfungsi sebagai input dari seven segmen, seperti ditunjukkan pada gambar berikut ini :
Gambar 2.4 konfigurasi seven segmen tipe common anoda Sesuai dengan gambar di atas, maka untuk menyalakan salah satu segmen, maka katodanya harus diberi tegangan 0 volt atau logika low. Misalnya jika segmen a akan dinyalakan, maka katoda pada segmen a harus diberi tegangan 0 volt atau logika low, dengan demikian maka segmen a akan menyala. Demikian juga untuk segmen lainnya. Pada seven segmen tipe common katoda, katoda dari setiap LED dihubungkan menjadi satu kemudian dihubungkan ke ground dan anoda dari masing-masing LED berfungsi sebagai input dari seven segmen, seperti ditunjukkan pada gambar berikut ini :
Gambar 2.5 konfigurasi seven segmen tipe common katoda Sesuai dengan gambar di atas, maka untuk menyalakan salah satu segmen, maka anodanya harus diberi tegangan minimal 3 volt atau logika high. Misalnya jika segmen a akan dinyalakan, maka anoda pada segmen a harus diberi tegangan minimal 3 volt atau logika high, dengan demikian maka segmen a akan menyala. Demikian juga untuk segmen lainnya.
2.2 PERANGKAT LUNAK 2.2.1 Bahasa Assembly MCS-51 Bahasa yang digunakan untuk memprogram IC mikrokontroler AT89C51 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 : 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. 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 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... 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... 11. Dan lain sebagainya 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 samping.
Gambar 2.6. 8051 Editor, Assembler, Simulator (IDE) Setelah program selesai ditulis, kemudian di-save dan kemudian di-assemble (dicompile). 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.
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 samping Gambar 2.7. 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.