BAB 2 LANDASAN TEORI 2.1 Perangkat Keras 2.1.1 Mikrokontroler AT89S52 Mikrokontroler AT89S52 termasuk kedalam keluarga MCS-51 merupakan suatu mikrokomputer CMOS 8 bit dengan daya rendah, kemampuan tinggi, memiliki 8 Kbyte Flash Programmable and Erasable Read Only Memory (PEROM). Memori merupakan bagian yang sangat penting pada mikrokontroler. Mikrokontroler memiliki dua macam memori yang sifatnya berbeda yaitu: 1. Read Only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan catu daya. Sesuai dengan keperluannya, dalam susunan MCS-51 memori penyimpanan program ini dinamakan sebagai memori program. 2. Random Access Memory (RAM) yang isinya akan hilang begitu IC kehilangan catu daya, dipakai untuk menyimpan data pada saat program bekerja. RAM yang dipakai untuk menyimpan data ini disebut memori data. Ada berbagai jenis ROM. Untuk mikrokontroler dengan program yang sudah baku dan diproduksi secara massal, program diisikan ke dalam ROM pada saat IC mikrokontroler dicetak di pabrik IC. Untuk keperluan tertentu mikrokontroler Universitas Sumatera Utara 6 menggunakan ROM yang dapat diisi ulang atau Programmable-Eraseable ROM yang disingkat dengan PEROM. Jenis memori yang dipakai untuk Memori AT89S52 adalah Flash PEROM. Program untuk mengendalikan mikrokontroler diisikan ke memori itu lewat bantuan alat yang dinamakan sebagai AT89S52 Flash PEROM Progammer. Mikrokontroler AT89S52 memerlukan tambahan 3 kapasitor, 1 resistor, 1 kristal dan catu daya 5 volt. Kapasitor 10µF dan resistor 10 Kilo Ohm dipakai untuk membenuk rangkaian reset. Dengan adanya rangkaian reset ini, AT89S52 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. Fasilitas yang terdapat dalam mikrokontroler AT89S52 antara lain : 1. Sesuai dengan produk-produk MCS-51. 2. Terdapat memori Flash yang terintegrasi dalam sistem. Dapat ditulis ulang hingga 1000 kali. 3. Beroperasi pada frekuensi 0 sampai 24 MH. 4. Memiliki 256 x 8 bit RAM internal. 5. Terdapat 32 jalur masukan/keluaran terprogram. 6. Tiga buah 16 bit Timer/Counter. 7. Delapan sumber interupsi. 8. Kanal serial terprogram. 9. Mode daya rendah dan mode daya mati. Universitas Sumatera Utara 7 Gambar 2.1 IC Mikrokontroler AT89S52 Konfigurasi dan Deskripsi kaki-kaki mikrokontoler AT89S52 adalah sebagai berikut : 1. VCC (Pin 40) Sebagai supply tegangan. 2. GND (Pin 20) Ground. 3. Port 0 (Pin 39 – Pin 32) Port 0 adalah port dua arah masukan/keluaran 8 bit saluran terbuka. Sebagai port keluaran, tiap kaki dapat menerima masukan TTL. Ketika logika 1 dimasukkan ke kaki-kaki port 0, kaki-kaki dapat digunakan sebagai masukan impedansi tinggi. Port 0 juga dapat diatur sebagai bus alamat/data saat mengakses program dan data dari memori luar. Pada mode ini port 0 memiliki pull-up internal. Port 0 juga menerima byte-byte kode saat pemrograman Flash Universitas Sumatera Utara 8 dan mengeluarkan byte kode saat verifikasi. Pull-up eksternal diperlukan saat memverifikasi program. 4. Port 1 (Pin 1 – Pin 8) Port 1 adalah port dua arah masukan/keluaran 8 bit dengan pull-up internal. Sebagai tambahan, P1.0 dan P1.1 dapat diatur sebagai pewaktu/pencacah-2 eksternal masukan pencacah (P1.0/T2) dan pewaktu/pencacah-2 masukan pemicu (P1.1/T2EX). Port 1 juga menerima byte-byte alamat saat pemrograman dan verifikasi Flash. 5. Port 2 (Pin 21 – Pin 28) Port 2 adalah port masukan/keluaran dua arah 8 bit dengan pull-up internal. Port 2 juga menerima bit-bit alamat dan beberapa sinyal kendali saat pemrograman dan verifikasi Flash. 6. Port 3 (Pin 10 – Pin 17) Port 3 adalah port masukan/keluaran dua arah 8 bit dengan pull-up internal. Port 3 juga menyediakan fasilitas bebagai fungsi khusus dari AT89C51. Port 3 juga menerima beberapa sinyal kendali saat pemrograman dan verifikasi Flash. Port 3 mempunyai fungsi pin masing-masing, yaitu sebagai berikut : Bit Nama Fungsi Alternatif P3.0 (pin 10) RXD Untuk menerima data port serial P3.1 (pin 11) TXD Untuk mengirim data port serial P3.2 (pin 12) INT0 Interrupt eksternal 0 P3.3 (pin 13) INT1 Interrupt eksternal 1 P3.4 (pin 14) T0 Input eksternal pewaktu/pencacah 0 P3.5 (pin 15) T1 Input eksternal pewaktu/pencacah 1 P3.6 (pin 16) WR Jalur untuk menulis eksternal data memori P3.7 (pin 17) RD Jalur untuk membaca eksternal data memori Universitas Sumatera Utara 9 7. RST (Pin 9) Merupakan masukan reset (aktif tinggi). Masukan tinggi pada kaki ini selama dua siklus instruksi mesin akan me-reset perangkat. 8. ALE/PROG (Pin 30) Address Latch Enable (ALE) adalah pulsa keluaran untuk mengunci bit rendah dari alamat saat mengakses memori eksternal. Kaki ini juga digunakan sebagai masukan pulsa (PROG) saat pemrograman Flash. 9. PSEN (Pin 29) Program Store Enable (PSEN) digunakan untuk mengakses memori program eksternal. 10. EA/Vpp External Access Enable (Pin 31) Pada kondisi low, EA akan berfungsi menjalankan program yang ada pada memori eksternal setelah sistem direset. Jika kondisi high, EA akan berfungsi menjalankan program yang ada pada memori internal. Pada saat memprogram Flash, pin ini akan mendapat tegangan 12 V. 11. XTAL1 (Pin 19) Masukan inverting (pembalikan) penguat osilator dan masukan untuk operasi rangkaian clock (denyut) internal. 12. XTAL2 (Pin 18) Keluaran dari inverting (pembalikan) penguat osilator. Universitas Sumatera Utara 10 2.1.2 Sensor Suhu LM 35 IC LM 35 sebagai sensor suhu yang teliti dan terkemas dalam bentuk Integrated Circuit (IC), dimana output tegangan keluaran sangat linear berpadanan dengan perubahan suhu. Sensor ini berfungsi sebagai pengubah besaran fisis suhu ke besaran tegangan yang memiliki koefisien sebesar 10 mV/oC yang berarti bahwa pada kenaikan suhu 1oC maka akan terjadi kenaikan tegangan sebesar 10 mV. a. IC LM 35 b. Rangkaian LM 35 Gambar 2.2 Sensor LM 35 Adapun keistimewaan dari IC LM 35 adalah : 1. Kalibrasi dalam satuan derajat celcius. 2. Linieritas 10 mV/oC. 3. Akurasi 0,5oC pada suhu ruang. 4. Range -55oC – 150oC. 5. Dioperasikan pada catu daya 4 V – 30 V. 6. Arus yang mengalir kurang dari 60 μA. 2.1.3 Analog to Digital Converter (ADC 0804) Analog to Digital Converter (ADC) adalah sebuah piranti yang dirancang untuk mengubah sinyal-sinyal analog menjadi bentuk sinyal digital. Tampilan IC ADC 0804 dapat dilihat pada gambar di bawah ini : Universitas Sumatera Utara 11 Gambar 2.3 Tampilan IC ADC 0804 ADC yang digunakan adalah ADC 0804. ADC ini akan mengubah tegangan yang merupakan keluaran dari sensor LM 35 menjadi 8 bit data biner. Data keluaran dari ADC 0804 ini akan dikirim ke mikrokontroler dan diolah untuk kemudian ditampilkan pada seven segmen. 2.1.4 Seven Segmen Seven segmen merupakan cacah segmen minimum yang diperlukan untuk menampilkan angka 0 sampai 9. Sejumlah karakter alfabet juga dapat disajikan menggunakan tampilan seven segmen ini. Secara khusus, karakter heksadesimal dapat ditampilkan. Seven segmen terdiri dari LED-LED yang disusun sedemikian rupa yang jika dinyalakan akan membentuk suatu angka tertentu. Seven segmen terdiri dari 7 buah segmen dan ditambah 1 buah segmen yang berfungsi sebagai desimal point seperti yang ditunjukkan pada gambar di bawah ini : Gambar 2. 4 Susunan Seven Segmen Universitas Sumatera Utara 12 Seven segmen terdiri dari 2 tipe yaitu : 1. Seven Segmen tipe Common Anoda Pada seven segmen tipe ini, anoda dari setiap LED dihubungkan menjadi satu kemudian dihubungkan ke sumber tegangan positif dan katoda dari masingmasing LED berfungsi sebagai input pada seven segmen. Gambar 2.5 Konfigurasi Seven Segmen Tipe Common Anoda Pada gambar di atas, maka untuk menyalakan salah satu segmen, maka katodanya diberi tegangan 0V atau berlogika low. 2. Seven Segmen tipe Common Katoda Pada seven segmen tipe ini, katoda dari setiap LED dihubungkan menjadi satuu kemudian dihubungkan ke ground dan anoda dari masing-masing LED berfungsi sebagai input dari seven segmen. Gambar 2.6 Konfigurasi Seven Segmen Tipe Common Katoda Pada gambar di atas, maka untuk menyalakan salah satu segmen, maka anodanya diberi tegangan minimal 3V atau berlogika high. Universitas Sumatera Utara 13 2.1.5 Relay Relay merupakan rangkaian yang bersifat elektronis sederhana dan tersusun oleh saklar, medan elektromagnet (kawat koil), dan poros besi. Relay berfungsi untuk menghubungkan atau memutus aliran listrik yang dikontrol dengan memberikan tegangan dan arus tertentu pada koilnya. Rangkaian relay akan bekerja jika mendapat catu. 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 berpindah posisi ke kutub lain atau terlepas dari kutub asalnya. Dan relay akan kembali ke posisi 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 keadaan yang diinginkan dalam suatu rangkaian. Bentuk fisik dan simbol relay dapat dilihat pada gambar berikut : a. Bentuk Fisik Relay b. Simbol Relay Gambar 2.7 Bentuk Fisik dan Simbol Relay Universitas Sumatera Utara 14 Menurut kerjanya relay dapat dibedakan : 1. Normaly Open, saklar akan tertutup bila dialiri arus. 2. Normaly Close, saklar akan terbuka bila dialiri arus. 3. Change Over (CO), relay ini mempunyai saklar tunggal yang normalnya tertutup yang lama. Analogi rangkaian relay yang digunakan pada proyek ini adalah saat basis transistor dialiri arus, maka transistor dalam keadaan tertutup yang dapat meghubungkan arus dari kolektor ke emiter yang mengakibatkan relay terhubung. Sedangkan fungsi dioda adalah untuk melindungi transistor dari tegangan induksi berlebih, dimana tegangan ini dapat merusak transistor. Jika pada basis tidak ada arus maju, transistor terbuka sehingga arus tidak mengalir dari kolektor ke emiter. Oleh karena itu relay tidak bekerja karena tidak ada arus yang mengalir pada gulungan kawat. 2.2 Perangkat Lunak 2.2.1 Bahasa Assembly MCS-51 Bahasa yang digunakan untuk mengisi program ke IC mikrikontroler AT89S52 adalah bahasa assembly MCS-51. Jumlah instruksi pada bahasa ini hanya ada 51 instruksi. Dari 51 instruksi , yang sering digunakan hanya 10 instruksi. Instruksi-instruksi tersebut antara lain : 1. Instruksi MOV Universitas Sumatera Utara 15 Perintah ini merupakan perintah untuk mengisikan nilai ke alamat atau register tertentu yang dapat secara langsung atau tidak langsung. Contoh pengisian 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 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, program akan meneruskan ke perintah pada baris berikutnya. Universitas Sumatera Utara 16 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 Universitas Sumatera Utara 17 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 CJNE (Compare Jump if Not Equal) Instruksi ini berfungsi 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. Universitas Sumatera Utara 18 9. Instruksi DEC (Decrement) 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 ………. Universitas Sumatera Utara 19 2.2.2 Software 8051 Editor, Assembler, Simulator (IDE) Instruksi-instruksi yang berupa bahasa assembly tersebut dituliskan pada sebuah editor, yaitu 8051 Editor, Assembler, Simulator (IDE). Kemudian instruksi-instruksi (program-program) tersebut akan di-save dan kemudian di-Assemble (di-Compile). Pada saat di-Assemble maka akan tampil pesan peringatan dan kesalahan. Jika masih ada peringatan tersebut, itu berarti masih ada kesalahan dalam penulisan instruksi atau ada nama subrutin yang sama. Dengan demikian kesalahan-kesalahan tersebut harus diperbaiki terlebih dahulu. Tampilannya dapat kita lihat pada gambar di bawah ini : Gambar 2.8 Software 8051 Editor, Assembler, Simulator (IDE) Software 8051IDE ini berfungsi untuk merubah program yang kita tuliskan ke dalam bilangan heksadesimal, dimana proses perubahan ini terjadi pada saat kita meng-Assemble program tersebut. Bilangan heksadesimal hasil proses inilah yang dikirim ke mikrokontroler. Universitas Sumatera Utara 20 2.2.3 Software Downloader Untuk mengirimkan bilangan-bilangan heksadesimal tersebut ke mikrokontroler digunakan software ISP–Flash Programmer 3.0a sehingga mikrokontroler dapat menyimpan data. ISP-Flash Programmmer 3.0a dapat diperoleh dengan mendownload dari internet. Tampilannya dapat kita lihat gambar di bawah ini : Gambar 2.9 ISP-Flash Programmer 3.0a Cara menggunakannya adalah dengan meng-klik Open File untuk mengambil file heksadesimal dari hasil kompilasi 8051IDE, kemudian meng-klik Write untuk mengisikan hasil kompilasi tersebut ke mikrokontroler. Universitas Sumatera Utara