Belajar Pemrograman Mikrokontroler AT89S PDF
Belajar Pemrograman Mikrokontroler AT89S PDF
Menggunakan Bascom-8051
Modul Kuliah Kontrol Berbasis Komputer
Versi 0.2
Disusun Oleh :
Agung Nugroho Adi
Laboratorium Mekatronika
Jurusan Teknik Mesin
Universitas Islam Indonesia
2007
Daftar Isi
1. Pengantar Mikrokontroler................................................................................................................................................ 1
3. Output LED...................................................................................................................................................................... 15
4. Input Saklar...................................................................................................................................................................... 21
7. LCD ................................................................................................................................................................................... 33
8. Keypad .............................................................................................................................................................................. 41
9. ADC................................................................................................................................................................................... 45
1. Pengantar Mikrokontroler
Tujuan : Setelah mempelajari bab ini mahasiswa diharapkan dapat :
• Membedakan antara mikrokontroler dengan mikroprosesor
• Menjelaskan komponen utama yang terdapat pada sistem berbasis
mikroprosesor
• Menerangkan dan memberi contoh mengenai embedded system dan dedicated
system
• Menerangkan urut-urutan langkah pemrograman mikrokontroler
Batas formal antara berbagai disiplin ilmu rekayasa saat ini semakin kabur seiring
dengan perkembangan teknologi IC (rangkaian elektronika terpadu) dan komputer. Hal ini
terutama terlihat jelas pada bidang mekanik dan elektronik dimana semakin banyak produk
yang merupakan integrasi dari komponen mekanik dan elektronik. Bidang mekatronika
telah berkembang untuk memperluas cakupan bidang elektromekanik seperti dapat
diilustrasikan pada gambar 1-1. Terdapat banyak definisi yang dapat menerangkan definisi
mekatronika. Salah satunya yaitu Alciatore menyatakan (Alciatore, 2003)
Gambar 1-1 Ilustrasi sistem mekatronika sebagai perpotongan dari sistem mekanik,
elektronik, kontrol, dan komputer (Craig, 2001)
Laboratorium Mekatronika
Pengantar Mikrokontroler 3
1.3 Mikrokontroler
Mikrokontroler pada dasarnya adalah komputer dalam satu chip, yang di dalamnya
terdapat mikroprosesor, memori, jalur Input/Output (I/O) dan perangkat pelengkap lainnya.
Kecepatan pengolahan data pada mikrokontroler lebih rendah jika dibandingkan dengan
PC. Pada PC kecepatan mikroprosesor yang digunakan saat ini telah mencapai orde GHz,
Teknik Mesin Universitas Islam Indonesia
4 Belajar Pemrograman Mikrokontroler AT89S51 Menggunakan Bascom-8051
sedangkan kecepatan operasi mikrokontroler pada umumnya berkisar antara 1 – 16 MHz.
Begitu juga kapasitas RAM dan ROM pada PC yang bisa mencapai orde Gbyte,
dibandingkan dengan mikrokontroler yang hanya berkisar pada orde byte/Kbyte.
Meskipun kecepatan pengolahan data dan kapasitas memori pada mikrokontroler
jauh lebih kecil jika dibandingkan dengan komputer personal, namun kemampuan
mikrokontroler sudah cukup untuk dapat digunakan pada banyak aplikasi terutama karena
ukurannya yang kompak. Mikrokontroler sering digunakan pada sistem yang tidak terlalu
kompleks dan tidak memerlukan kemampuan komputasi yang tinggi.
Sistem yang menggunakan mikrokontroler sering disebut sebagai embedded system
atau dedicated system. Embeded system adalah sistem pengendali yang tertanam pada
suatu produk, sedangkan dedicated system adalah sistem pengendali yang dimaksudkan
hanya untuk suatu fungsi tertentu. Sebagai contoh printer adalah suatu embedded system
karena di dalamnya terdapat mikrokontroler sebagai pengendali dan juga dedicated system
karena fungsi pengendali tersebut berfungsi hanya untuk menerima data dan mencetaknya.
Hal ini berbeda dengan suatu PC yang dapat digunakan untuk berbagai macam keperluan,
sehingga mikroprosesor pada PC sering disebut sebagai general purpose microprocessor
(mikroprosesor serba guna). Pada PC berbagai macam software yang disimpan pada media
penyimpanan dapat dijalankan, tidak seperti mikrokontroler hanya terdapat satu software
aplikasi.
Penggunaan mikrokontroler antara lain terdapat pada bidang-bidang berikut ini.
• Otomotif : Engine Control Unit, Air Bag, fuel control, Antilock Braking
System, sistem pengaman alarm, transmisi automatik, hiburan, pengkondisi
udara, speedometer dan odometer, navigasi, suspensi aktif
• perlengkapan rumah tangga dan perkantoran : sistem pengaman alarm, remote
control, mesin cuci, microwave, pengkondisi udara, timbangan digital, mesin
foto kopi, printer, mouse.
• pengendali peralatan di industri.
• robotika.
Saat ini mikrokontroler 8 bit masih menjadi jenis mikrokontroler yang paling
populer dan paling banyak digunakan. Maksud dari mikrokontroler 8 bit adalah data yang
dapat diproses dalam satu waktu adalah 8 bit, jika data yang diproses lebih besar dari 8 bit
maka akan dibagi menjadi beberapa bagian data yang masing-masing terdiri dari 8 bit.
Contoh mikrokontroler 8 bit antara lain keluarga Motorolla 68HC05/11, Intel 8051,
Microchip PIC 16, dan yang akhir-akhir ini mulai populer keluarga Atmel AVR. Selain
yang telah disebutkan di atas terdapat juga beberapa seri mikrokontroler lain yang cukup
dikenal antara lain Basic Stamp dari Parallax (banyak digunakan untuk pembelajaran
mikrokontroler) dan HD64180 dari Hitachi (sebagai pengendali LCD). Masing-masing
mikrokontroler mempunyai cara dan bahasa pemrograman yang berbeda, sehingga
program untuk suatu jenis mikrokontroler tidak dapat dijalankan pada jenis mikrokontroler
lain. Untuk memilih jenis mikrokontroler yang cocok dengan aplikasi yang dibuat terdapat
tiga kriteria yaitu
• Dapat memenuhi kebutuhan secara efektif & efisien. Hal ini menyangkut
kecepatan, kemasan/packaging, konsumsi daya, jumlah RAM dan ROM,
jumlah I/O dan timer, harga per unit
• Bahasa pemrograman yang tersedia
• Kemudahan dalam mendapatkannya
Laboratorium Mekatronika
Pengantar Mikrokontroler 7
Gambar 1-6 menunjukkan salah satu contoh rangkaian sistem minimum untuk
AT89S51. Beberapa komponen pelengkap pada sistem minimum ini adalah
• regulator untuk menjaga tegangan catu daya 5 V yang diperlukan
mikrokontroler
• kristal sebagai sumber detak (clock)
• rangkaian reset
• soket untuk koneksi ke peranti I/O
• koneksi ke port paralel untuk pemrograman dari PC
Untuk memprogram suatu mikrokontroler terdapat banyak bahasa pemrograman
yang dapat digunakan. Bahasa pemrograman yang biasa digunakan dalam pemrograman
mikrokontroler adalah Assembly. File bahasa Assembly (ASM) dapat dituliskan
menggunakan sembarang pengolah kata (misal Notepad), untuk kemudian dikompile
menggunakan Assembler (misal ASM51) untuk mendapatkan file HEX. File HEX inilah
yang dimasukkan ke mikrokontroler menggunakan Microcontroller ISP Software dari
Atmel (ataupun software ISP lain) melalui perantaraan kabel paralel. Gambar 1-7
menunjukkan langkah-langkah pada pemrograman mikrokontroler. Saat ini telah
dikembangkan beberapa kompiler untuk beberapa bahasa pemrograman tingkat tinggi yang
dapat digunakan pada pemrograman mikrokontroler AT89S51 seperti Keil Compiler dari
Keil Corp, SDCC (Small Device C Compiler) dari Sandepp Duta
(http://sdcc.sourceforge.net) dan Bascom-8051 (Basic Compiler) dari MCS Electronics
(www.mcse.com) .
Laboratorium Mekatronika
Dasar Pemrograman Bascom-8051 9
2.3 Variabel
Variabel adalah simbol yang digunakan untuk mewakili suatu nilai. Variabel digunakan
sebagai tempat penyimpanan data atau penampung data sementara. Variabel numerik
Laboratorium Mekatronika
Dasar Pemrograman Bascom-8051 11
hanya dapat diisi nilai numerik (bit, byte, integer, word, long, dan single). Isi dari suatu
variabel numerik dapat berupa :
• Suatu nilai konstan
A = 5
C = 1.1
• Nilai variabel numerik lain
A = B
• Nilai yang didapat dengan mengkombinasikan variabel, konstan, dan operator
Temp = A + 5
Pada Bascom terdapat beberapa aturan mengenai penamaan suatu variabel, yaitu :
• Nama suatu variabel maksimum terdiri atas 32 karakter dan dapat berupa huruf
ataupun angka.
• Karakter pertama variabel haruslah berupa huruf.
• Nama variabel tidak boleh menggunakan kata-kata yang dipergunakan Bascom
sebagai perintah, pernyataan, register dan operator (misal AND, OR, DIM, P1
TIMER0 dan lain sebagainya)
Sebelum digunakan suatu variabel haruslah dideklarasikan terlebih dahulu tipe data yang
dipergunakan dengan menggunakan pernyataan DIM
DIM A As Byte
DIM Nama1 As Byte, Nama2 As Integer
DIM Kata As String*10
Selain menggunakan DIM, variabel dapat juga ditentukan tipe datanya menggunakan
DEFBYTE, DEFINT, DEFBIT, dan DEFWORD
DEFBYTE A
DEFWORD B;C;D
Suatu variabel dapat mempunyai nama lain atau alias. Umumnya alias digunakan untuk
mengganti variabel standar dengan nama yang lebih mudah diingat. Hal ini akan berguna
pada saat membuat program yang panjang dan kompleks, jika terdapat perubahan
penggunaan pin atau port, cukup diganti pada pernyataan Alias.
Saklar1 Alias P0.0
LED1 Alias P2.0
2.4 Konstanta
Konstanta adalah variabel yang mempunyai nilai konstan selama program dijalankan.
Untuk mendeklarasikan suatu konstanta dapat digunakan dua cara, yaitu menggunakan
Dim atau Const
Dim A As Const 5
Dim B1 As Const &B1001
Const Cbyte = &HF
Const Cint = -1000
Const Csingle = 1.1
Const Cstring = "tes"
2.5 Larik
Larik atau array adalah kumpulan variabel dengan nama dan tipe data yang sama.
Untuk membedakan satu variabel dengan variabel lainnya digunakan indeks. Indeks
haruslah berupa angka dengan tipe data byte, integer atau word, dengan nilai minimal 1
(bukan 0). Pendeklarasian larik mirip seperti variabel biasa, hanya ditambahkan jumlah
komponen lariknya.
Dim a(10) as byte
2.7 Operator
Operator digunakan untuk melakukan operasi terhadap bilangan. Pada Bascom
operator dibedakan menjadi operator aritmetik, operator relasional, dan operator logika.
Operator aritmatik adalah operator yang digunakan dalam kalkulasi, yaitu +
(penjumlahan), - (pengurangan), * (perkalian, / (pembagian), \ (pembagian integer), MOD
(modulo = sisa dari pembagian). Operator relasional digunakan untuk membandingkan dua
nilai, yang memberikan hasil benar (1) atau salah (0) dan dapat digunakan untuk membuat
keputusan.
Operator logika digunakan untuk menguji suatu pola bit tertentu, manipulasi bit
atau operator Boolean. Misal operator AND dapat digunakan untuk mengabaikan semua
bit dalam suatu byte kecuali satu bit untuk memantau status bit tersebut
Laboratorium Mekatronika
Dasar Pemrograman Bascom-8051 13
Syntaksis If – Then
If <syarat> Then
<Pernyataan 1>
<Pernyataan 2>
Else
<Pernyataan 3>
<Pernyataan 4>
End If
Sintaksis Do – Loop
Do
<Pernyataan 1>
<Pernyataan 2>
Loop
Laboratorium Mekatronika
Output LED 15
3. Output LED
Tujuan : Setelah melaksanakan modul ini mahasiswa diharapkan dapat :
• Membedakan dasar-dasar output pada mikrokontroler
• Memanfaatkan bilangan biner dan heksadesimal dalam pemrograman
mikrokontroler
• Membuat rangkaian output sekaligus membuat program yang dapat
mengendalikan konfigurasi nyala LED
LED (Light Emitting Diode) adalah semikonduktor (diode) yang dapat mengeluarkan
cahaya. Terdapat berbagai macam warna LED, yaitu merah, hijau, oranye, kuning, dan
biru, serta dalam berbagai bentuk. Seperti juga diode, LED juga merupakan komponen
yang akan aktif (menyala) jika dialiri arus pada arah tertentu, dan tidak untuk arah arus
sebaliknya. Gambar 3-1 menunjukkan bentuk fisik LED beserta simbolnya. Kaki yang
lebih panjang adalah anode, yang akan dihubungkan dengan kutub +, dan kaki yang lebih
pendek adalah katode, yang akan dihubungkan dengan kutub – .
Gambar 3-2 menunjukkan rangkaian untuk menyalakan LED, anode terhubung dengan
kutub positif catu daya dan katode terhubung dengan resistor dan ground. Fungsi resistor
pada rangkaian yang melibatkan LED adalah sebagai pembatas arus. Untuk menyalakan
LED hanya diperlukan arus sebesar 1 – 10 mA, sedangkan arus yang dapat diberikan catu
daya (dengan tegangan berkisar 5-9V) cukup besar. Jika arus yang masuk LED tidak
dibatasi, maka LED akan rusak. Resistor dapat diletakkan pada sisi katode maupun anode
dari LED.
Pada semua rangkaian LED jangan lupa untuk selalu diberikan resistor sebagai
pembatas arus
Laboratorium Mekatronika
Output LED 17
Pada dasarnya prinsip kerja output mikrokontroler adalah mirip saklar yang mempunyai
dua kondisi, yaitu :
• menghubungkan rangkaian dengan Vcc jika diberi logika 1
• menghubungkan rangkaian dengan GND jika diberi logika 0.
Gambar 3-5(a) menunjukkan saat P0.0 diberi logika 1, maka rangkaian terhubung dengan
Vcc, akibatnya tidak ada beda tegangan pada rangkaian (sama-sama Vcc) sehingga tidak
ada arus mengalir dan LED akan padam. Gambar 3-5(b) menunjukkan saat P0.0 diberi
logika 0, maka rangkaian terhubung dengan GND sehingga terjadi beda tegangan pada
rangkaian. Karena anode LED terhubung dengan Vcc dan katode LED terhubung dengan
GND, maka arus akan mengalir pada LED dan LED akan menyala. Rangkaian pada
Gambar 3-4 disebut sebagai rangkaian active low, yaitu rangkaian akan aktif jika diberi
logika 0 (rendah) dan tidak aktif jika diberi logika 1(tinggi).
Untuk memberikan logika 0 atau 1 kepada suatu pin dapat dilakukan secara individual per
masing-masing port, seperti terdapat pada program LED_1.bas, ataupun secara sekaligus 1
port (yang terdiri dari 8 pin). Untuk memberikan logika secara sekaligus dipilih di antara
tiga sistem bilangan, yaitu biner, heksadesimal atau desimal. Misal untuk konfigurasi
nyala/padam seperti pada LED_1.bas, yaitu P0.0 hingga P0.3 menyala dan P0.4 hingga
p0.7 padam, dapat dipandang sebagai bilangan biner 11110000b (Tabel 3-1).
Bilangan 11110000b jika dikonversi menjadi bilangan heksadesimal adalah F0h atau 240
desimal.
Pelajari lagi tentang sistem bilangan. Anda juga dapat memanfaatkan program
Calculator yang terdapat pada folder Accessories yang terdapat pada sistem operasi
Windows untuk mengkonversi sistem bilangan.
Program LED_1.bas dapat dituliskan menjadi lebih ringkas seperti terdapat pada program
led_2.bas
End
Latihan 1
1. Buat program untuk mengendalikan LED nyala/padam dalam konfigurasi berikut :
a. P0.0 on, P0.1 off, P0.2 on, P0.3 off, P0.4 on, P0.5 off, P0.6 on, P0.7 off
b. P0.0 off, P0.1 on, P0.2 off, P0.3 on, P0.4 off, P0.5 on, P0.6 off, P0.7 on
c. P0.0 off, P0.1 off, P0.2 on, P0.3 ofn, P0.4 ffn, P0.5 on, P0.6 on, P0.7 off
Masing-masing konfigurasi dibuat dengan dua cara, yaitu secara individual (lihat
Program LED_1.bas) dan sekaligus (lihat program led_2.bas).
'=================================================================
'Program LED_3.bas
'Program untuk menyalakan dan mematikan LED pada P0 secara
bergantian
Laboratorium Mekatronika
Output LED 19
'=================================================================
Do 'awal do-loop
P0 = 0 'semua LED menyala
Wait 1 'tunggu 1 detik
P0 = &HFF 'semua LED padam
Wait 1 'tunggu 1 detik
Loop 'akhir do-loop
Jika konfigurasi nyala LED yang akan dibuat cukup banyak, maka dapat dipergunakan
pernyataan Lookup untuk mengambil data dari suatu tabel.
Do
Loop
End
Tabel:
Data 0 , &H0F , &HF0 , &HFF 'data pada Tabel
Tipe data pada Bascom ada beberapa macam, yang sering ditemui adalah Bit
(bernilai 0 atau 1), Byte (bernilai antara 0 hingga 255), Integer (antara -32768
hingga 32767), Word (0 hingga 65535)
Pada program ini terdapat 2 loop, yaitu menggunakan pernyataan For...Next dan
Do...Loop. Pernyataan di antara For N = 0 To 3 dan Next akan dilaksanakan 4 kali,
dengan nilai N akan selalu bertambah 1 pada tiap loopnya. Nilai awal N adalah 0 dan nilai
akhirnya adalah 4.
Pernyataan Lookup(N, Tabel) akan mengambil data indeks ke-N pada label Tabel. Indeks
data dimulai dengan 0. Misal untuk N = 0, maka data yang diambil adalah 0, data ke-1
adalah &H0F, data ke-2 adalah &HF0, dan data ke-3 adalah &HFF.
Jika program dijalankan akan menghasilkan 4 konfigurasi nyala LED secara bergantian
dan dilakukan secara terus menerus.
Latihan 2
1. Buat program untuk membuat LED berkedip secara terus menerus dengan urutan
11111110b, 11111100b, 11111001b, 11110011b, 11100111b, 11001111b,
10011111b, 00111111b, 01111110b
2. Seperti pada latihan sebelumnya, tapi kali ini LED hanya melakukan pergeseran
sebanyak 5 kali, kemudian semua LED menyala.
Diskusi 1
1. Selain rangkaian LED active low, terdapat juga rangkaian LED active high.
Diskusikan dengan teman sekelompok anda prinsip kerja rangkaian LED active
high. Untuk mikrokontroler AT89S51 mengapa lebih dipilih rangkaian active low.
(Petunjuk : lihat data sheet AT89S51).
2. Gambar 3-6 menunjukkan contoh rangkaian untuk mengendalikan solenoid atau
motor listrik. Diskusikan prinsip kerjanya. Apakah rangkaian ini termasuk active
high atau active low? Apa fungsi diode pada rangkaian ini? Jika transistor PNP
diganti dengan NPN perubahan apa yang diperoleh?
Gambar 3-6 Rangkaian output untuk mengendalikan solenoid atau motor listrik
Laboratorium Mekatronika
Input Saklar 21
4. Input Saklar
Tujuan : Setelah melaksanakan modul ini mahasiswa diharapkan dapat :
• Membuat rangkaian input sekaligus membuat program yang dapat
menunjukkan kondisi saklar
Saklar adalah peranti input digital yang umum ditemui dalam banyak peralatan. Fungsi
kerja saklar adalah untuk menghubungkan atau memutus aliran listrik pada suatu rangkaian
listrik. Pada saklar terdapat 2 kemungkinan keadaan (biner), yaitu aktif dan tidak aktif. Jika
suatu saklar menyambung rangkaian listrik saat aktif (ditekan) disebut sebagai saklar
Normally Open (NO), jika sebaliknya disebut sebagai Normally Closed (NC). Berdasarkan
cara pengaktifannya, saklar dapat dibedakan menjadi saklar tekan (pushbutton) dan saklar
toggle/slide. Saklar tekan akan langsung kembali tidak aktif jika tidak ditekan, sedangkan
saklar toggle baru akan tidak aktif jika posisi saklar dipindahkan.
Rangkaian ini menggunakan rangkaian saklar active low, dimana jika saklar ditekan (aktif)
maka oleh mikrokontroler dibaca 0. Sebaliknya jika saklar tidak diaktifkan mikrokontroler
akan membacanya sebagai logika 1, walaupun sebetulnya keadaan rangkaian adalah
floating (mengambang), tidak terhubung dengan Vcc ataupun GND. Hal ini disebabkan
port input/output AT89S51 kompatibel dengan input/output dari TTL.
TTL adalah salah satu jenis IC logika selain CMOS. Rangkaian seperti ini tidak
dapat digunakan untuk semua jenis mikrokontroler, lebih disarankan untuk
menggunakan resistor pull up. Resistor pull up digunakan untuk memastikan saat
saklar tidak aktif, rangkaian tetap terhubung dengan Vcc. Penjelasan lebih lanjut
dapat diperoleh pada buku tentang rangkaian logika.
Do
Loop
End
Saklar Alias P2
Led Alias P0
Do
Loop
End
Laboratorium Mekatronika
Input Saklar 23
4.2.1 Prinsip Kerja Program Saklar_2.c
Pada program ini kondisi saklar akan menentukan konfigurasi nyala LED. Jika
tidak ada saklar yang diaktifkan maka semua LED akan padam, jika hanya saklar P2.0 saja
yang diaktifkan maka LED akan membentuk konfigurasi nyala/padam secara berselang
seling. Jika selain dari dua keadaan tersebut maka LED akan menyala semua.
Untuk menguji keadaan saklar digunakan pernyataan If...Elseif...Else...Endif,
sehingga jika keadaan saklar sesuai dengan keadaan yang disyaratkan, maka pernyataan
setelah Then akan dilaksanakan.
Latihan 3
1. Buat program dengan kondisi sebagai berikut. Jika tidak ada saklar diaktifkan maka
semua LED akan padam, jika hanya saklar P2.0 yang diaktifkan maka semua LED
akan bergantian menyala dan padam.
Laboratorium Mekatronika
Display 7 Segment 25
5. Display 7 Segment
Tujuan : Setelah melaksanakan modul ini mahasiswa diharapkan dapat :
• Membedakan 7 segment jenis common anode dan common cathode
• Membuat rangkaian output sekaligus membuat program yang dapat
mengendalikan tampilan 7 segment
7 segment adalah salah satu komponen yang paling banyak dipergunakan untuk
menampilkan karakter berupa angka. Pada dasarnya 7 segment adalah rangkaian 7 buah
LED dijadikan satu. Untuk dapat membentuk suatu karakter maka LED-LED tersebut
diatur nyala/padamnya secara terpisah. Pada suatu 7 segment juga ditambahkan satu LED
untuk dot sebagai penunjuk desimal. Untuk memudahkan dalam mengidentifikasi, masing-
masing segmen yang berupa LED diberi notasi a, b, c, d, e, f, g dan h (gambar 5-1).
Untuk menyederhanakan rangkaian, maka pada 7 segment salah satu dari anode atau
katode digabungkan dalam satu pin. Jika anode yang digabungkan disebut sebagai
common anode, sedangkan jika katode yang digabungkan disebut sebagai common
cathode.
Gambar 5-2 Jenis-jenis 7 segment (a) common anode (b) common cathode
Laboratorium Mekatronika
Display 7 Segment 27
'=================================================================
=========
P0 = &HC0
End
Berdasarkan prinsip kerja 7 segment CA, maka segmen yang diberikan logika 0
(dihubungkan dengan Vcc) akan menyala, sedangkan segmen yang diberikan logika 1
(dihubungkan dengan GND) akan padam, maka segmen a, b, c, d, e, dan f akan menyala,
sedangkan segmen g dan h akan padam.Hasilnya adalah akan terbentuk karakter 0 pada 7
segment seperti terlihat pada gambar 5-5.
Diskusi 2
1. Lengkapi tabel 5-2 di bawah ini dengan data yang diberikan ke P0 untuk
menampilkan karakter angka 1 hingga 9.
Latihan 4
1. Buat program untuk menampilkan karakter angka 0 dan 1 secara bergantian dengan
memodifikasi program LED_2a.c
Laboratorium Mekatronika
Display 7 Segment Menggunakan Rangkaian Multipleks 29
Do
For Angka = 0 To 99 Step 1 'untuk incremental 1
'pernyataan "step 1" boleh
dihilangkan
Gosub Disp_7s 'panggil subrutin Disp_7s
Next
Loop
End
Laboratorium Mekatronika
Display 7 Segment Menggunakan Rangkaian Multipleks 31
7_seg: 'tabel lookup untuk kode 7
segment
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99
Data &H92 , &H82 , &HF8 , &H80 , &H90
Latihan 5
Buat program untuk menampilkan karakter angka 0 diurutkan naik hingga 99 jika yang
diaktifkan hanya P2.0, sedangkan jika hanya P2.1 yang diaktifkan maka karakter angka
akan diurutkan turun. Selain kedua kondisi saklar tersebut maka 7 segment akan padam
(pertimbangkan untuk menggunakan pernyataan increment dan decrement)
7. LCD
Tujuan : Setelah melaksanakan modul ini mahasiswa diharapkan dapat :
• Membuat rangkaian output sekaligus membuat program yang dapat
mengendalikan tampilan LCD
LED dan 7 segment sangat umum ditemui pada berbagai macam peranti digital.
Walau demikian untuk aplikasi yang membutuhkan informasi yang lebih kompleks
diperlukan display yang dapat menampilkan lebih banyak karakter. Saat ini LCD (Liquid
Crystal Display) semakin banyak dipergunakan sebagai pengganti rangkaian LED maupun
7 segmen. Hal ini disebabkan oleh
• semakin murah harga LCD
• kemampuan LCD untuk menampilkan berbagai macam karakter berupa angka dan
huruf, bahkan grafik.
• Pemrograman LCD yang semakin mudah
LCD dipergunakan antara lain untuk menampilkan pesan atau informasi kepada
pengguna (misal display microwave atau jam digital) dan untuk menampilkan menu input
untuk perubahan setting (misal pada mesin fotokopi)
Terdapat banyak macam kontroler yang dipergunakan pada LCD, namun yang
paling luas penggunaannya adalah Hitachi HD44780 dan kompatibelnya. LCD dibedakan
berdasarkan jumlah baris dan kolom karakter yang ditampilkan. Misal LCD 2 x 16
menunjukkan 2 kolom dan 16 kolom karakter. Terdapat LCD dengan jumlah kolom baris
2,4, atau 8 dengan kolom karakter berjumlah 8, 16, 20, 24, 32, dan 40 kolom. Hampir
semua LCD dapat diatur tingkat kontrasnya, sebagian mempunyai backlight. LCD yang
kompatibel dengan HD44780 pada umumnya mempunyai 16 dengan fungsi seperti tertera
pada tabel 7-1.
Pada kegiatan ini mode data yang dipergunakan adalah mode data 4 bit, sehingga yang
dipergunakan hanya DB4 – DB7. Jika mikrokontroler hanya dipergunakan untuk
menuliskan karakter ke LCD maka pin R/W dapat dihubungkan dengan ground.
Potensiometer dipergunakan untuk mengatur kontras karakter yang ditampilkan.
Laboratorium Mekatronika
LCD 35
'Inisialisasi LCD
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = P2.4 , Db5 = P2.5 , Db6 = P2.6,
Config Lcdpin = Pin , Db7 = P2.7 , E = P2.2 , Rs = P2.0
P2.1 = 0 'R/W=0
Initlcd
End
Latihan 6
1. Buat program seperti Program 7-1, yaitu namun berkedip-kedip, 0.5 s menyala, 0.5
s padam.
2. Buat program yang menampilkan karakter “Teknik Mesin UII” dan “Yogyakarta”,
kemudian berganti menjadi “Laboratorium” dan “Mekatronika” kemudian kembali
lagi ke tampilan.
Dim N As Byte
'Inisialisasi LCD
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = P2.4 , Db5 = P2.5 , Db6 = P2.6,
Config Lcdpin = Pin , Db7 = P2.7 , E = P2.2 , Rs = P2.0
P2.1 = 0
'R/W=0
Initlcd
For N = 1 To 100
Home 'meletakkan karakter di baris 1,
kolom 1
Lcd "Desimal"
Locate 1 , 14 'baris 1, kolom 14
Lcd N
Home Lowerline 'meletakkan karakter di baris 2,
kolom 1
Lcd "Heksadesimal"
Locate 2 , 14 'baris 2, kolom 14
Lcdhex N
Wait 1
Next
End
Laboratorium Mekatronika
LCD 37
Latihan 7
1. Tuliskan program Program 7-3 kemudian download dan jalankan. Jelaskan prinsip
kerja program tersebut.
'Inisialisasi LCD
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = P3.4 , Db5 = P3.5 , Db6 = P3.6,
Config Lcdpin = Pin , Db7 = P3.7 , E = P2.1 , Rs = P2.0
Initlcd
Do
If Detik = 60 Then
Detik = 00
Menit = Menit + 1
End If
If Menit = 60 Then
Menit = 00
If Jam = 24 Then
Jam = 00
End If
Waitms 10
Detik = Detik + 1
Cls
Loop
End
Setelah karakter selesai dibuat, kemudian pada jendela editor akan ditampilkan
pernyataan seperti di bawah ini
Deflcdchar ?,31,21,31,27,31,31,17,31
Laboratorium Mekatronika
LCD 39
Tanda ? harus digantikan dengan angka 0 – 7 yang akan digunakan sebagai nomor karakter
untuk memanggil karakter. Misal karakter yang dipanggil adalah karakter dengan nomor
karakter 0, maka dituliskan pernyataan
Lcd Chr(0)
Latihan 8
1. Tuliskan Program 7-3 kemudian download dan jalankan.
Program 7-4
'=================================================================
'Program chr_cust.bas
'Program untuk menampilkan variabel pada LCD
'=================================================================
Dim N As Byte
'Inisialisasi LCD
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = P3.4 , Db5 = P3.5 , Db6 = P3.6,
Config Lcdpin = Pin , Db7 = P3.7 , E = P2.1 , Rs = P2.0
Initlcd
Deflcdchar 0 , 32 , 16 , 8 , 4 , 2 , 1 , 32 , 32
Deflcdchar 1 , 32 , 32 , 13 , 18 , 32 , 32 , 32 , 32
Cls
Lcd Chr(0)
Lcd Chr(1)
End
2. Buat program untuk menampilkan karakter di bawah ini secara bergantian, masing-
masing 0.5 s.
8. Keypad
Tujuan : Setelah melaksanakan modul ini mahasiswa diharapkan dapat :
• Membuat program yang dapat menampilkan tombol yang ditekan pada keypad
8.1.1 Rangkaian
'=================================================================
'inisialisasi lcd
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = P0.4 , Db5 = P0.5 , Db6 = P0.6,
Config Lcdpin = Pin , Db7 = P0.7 , E = P0.2 , Rs = P0.0
P0.1 = 0
Lcdinit
Cls
'=================================================================
=========
Do
Cls
Gosub Keypad
Lcd Keydat
Waitms 500
Loop
End
Keypad:
Keyport = &HFF
Baris1:
Bar1 = 0
Bar2 = 1
Bar3 = 1
Bar4 = 1
If Kol1 = 0 Then
Keydat = 1
Elseif Kol2 = 0 Then
Keydat = 2
Elseif Kol3 = 0 Then
Keydat = 3
Else
Goto Baris2
End If
Baris2:
Laboratorium Mekatronika
Keypad 43
Bar1 = 1
Bar2 = 0
Bar3 = 1
Bar4 = 1
If Kol1 = 0 Then
Keydat = 4
Elseif Kol2 = 0 Then
Keydat = 5
Elseif Kol3 = 0 Then
Keydat = 6
Else
Goto Baris3
End If
Baris3:
Bar1 = 1
Bar2 = 1
Bar3 = 0
Bar4 = 1
If Kol1 = 0 Then
Keydat = 7
Elseif Kol2 = 0 Then
Keydat = 8
Elseif Kol3 = 0 Then
Keydat = 9
Else
Goto Baris4
End If
Baris4:
Bar1 = 1
Bar2 = 1
Bar3 = 1
Bar4 = 0
If Kol1 = 0 Then
Keydat = 10
Elseif Kol2 = 0 Then
Keydat = 0
Elseif Kol3 = 0 Then
Keydat = 11
End If
Return
Latihan 9
Buatlah program untuk menampilkan 3 konfigurasi gerakan LED yang berbeda, jika
tombol 1, 2, atau 3 ditekan. Konfigurasi akan dimulai jika tombol 9 ditekan dan akan
berhenti saat tombol 7 ditekan. Tentukan sendiri variasi gerakannya.
Laboratorium Mekatronika
ADC 45
9. ADC
Tujuan : Setelah melaksanakan modul ini mahasiswa diharapkan dapat :
• Menjelaskan parameter-parameter pada konversi analog ke digital
• Menyusun rangkaian ADC0804 sekaligus membuat program yang dapat
menampilkan data hasil konversi dari analog ke digital
• Membuat pengukur temperatur digital
Resolusi adalah perubahan terkecil dari tegangan analog input yang dapat
dibedakan oleh suatu ADC. Resolusi tergantung pada jumlah keadaan yang mungkin pada
output, yang ditentukan oleh jumlah bit, dan rentang tegangan input (atau sering disebut
juga sebagai tegangan referensi), yang merupakan selisih dari nilai maksimum tegangan
referensi dikurangi nilai minimumnya.
N = 2n
N = jumlah keadaan yang mungkin pada output
n = jumlah bit
Q=
(V max − V min )
N −1
Q = resolusi, Volt
Vmax = tegangan referensi maksimum
Vmin = tegangan referensi minimum
Jika tegangan referensi yang dipergunakan adalah 5 Volt, maka resolusi ADC 0804 adalah
Q=
(5V − 0V ) = 5V = 0,0196V = 19.6mV
( )
28 − 1 255
Tabel 9-1 menunjukkan hubungan tegangan input dengan output digital pada ADC 8 bit
untuk rentang tegangan input 0 – 5 V.
Teknik Mesin Universitas Islam Indonesia
46 Belajar Pemrograman Mikrokontroler AT89S51 Menggunakan Bascom-8051
Tabel 9-1 Hubungan antara tegangan input analog dengan output digital
Tegangan input (V) Output digital (desimal) Output digital (biner)
0 0 00000000
0,0196 1 00000001
0,0392 2 00000010
0,0588 3 00000011
Pada kegiatan ini ADC yang dipergunakan adalah ADC0804, yang merupakan
ADC dengan satu input analog dan mempunyai ouput paralel dengan resolusi 8 bit. Skema
pin ADC0804 dapat dilihat pada gambar 9-1.
9.1.1 Rangkaian
Laboratorium Mekatronika
ADC 47
Gambar 9-2 Rangkaian ADC0804 free running mode.
Rangkaian ADC0804 dapat dibuat bekerja pada free running mode, yaitu bekerja
secara terus menerus. ADC0804 memerlukan clock, yang bisa diambil dari mikrokontroler
ataupun memanfaatkan clock internal, dengan menambahkan resistor 10 k dan kapasitor
150pF.
Tegangan input yang diukur adalah selisih antara Vin(+) dengan Vin(-). Adapun
Vref/2 menunjukkan setengah dari nilai tegangan referensi yang dipergunakan. Pada
Gambar 9-2 Vin(-) dihubungkan dengan ground, sedangkan Vref/2 tidak terhubung,
sehingga nilai tegangan input adalah Vin(+) dan tegangan referensi nilainya sama dengan
Vcc, yaitu 5 V.
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = P2.4 , Db5 = P2.5 , Db6 = P2.6,
Config Lcdpin = Pin , Db7 = P2.7 , E = P1.1 , Rs = P1.0
Initlcd
Cls
Cursor Off
Do
Cls
Adc = P0 'mengambil data hasil
konversi
Lcd Adc 'menampilkan pada LCD
End
'=================================================================
Latihan 10
3. Modifikasi Program 9-1 sehingga LCD dapat menampilkan nilai tegangan pada input
ADC (Petunjuk : lihat penjelasan pada pengantar modul ini).
4. Baca pada help Bascom mengenai instruksi FUSING. Buatlah program yang dapat
menampilkan nilai tegangan dengan ketelitian 0,01 V.
5. Aturlah potensiometer untuk mendapatkan variasi tegangan analog. Gunakan
multimeter untuk mengukur nilai tegangan tersebut. Catat pada lembar aktifitas dan
bandingkan dengan nilai yang ditampilkan pada LCD.
Latihan 11
Gantikan potensiometer dengan sensor temperatur LM35. Tampilkan temperatur pada
LCD dengan format penulisan “Temperatur” pada baris pertama dan “XX.X 0C” pada
baris kedua.
Laboratorium Mekatronika
Komunikasi Serial Sinkron 49
Data dapat ditransmisikan dengan dua cara, yaitu paralel dan serial. Di antara
keduanya transmisi data paralel mempunyai kecepatan tertinggi, namun juga mempunyai
kelemahan, yaitu memerlukan banyak jalur I/O dan hanya dapat digunakan untuk jarak
yang relatif dekat. Transmisi data serial hanya memerlukan jalur I/O yang sedikit, biasanya
berjumlah 1, 2, atau 3 jalur I/O.
Terdapat dua metode yang dapat digunakan pada transmisi data serial, yaitu sinkron
dan asinkron. Pada metode sinkron, selain jalur data terdapat satu jalur tambahan yang
dipergunakan sebagai clock, sedangkan pada metode asinkron clock dibangkitkan secara
terpisah pada masing-masing pengirim dan penerima.
Kali ini kita akan memanfaatkan komunikasi serial untuk menambah jalur I/O pada
mikrokontroler dengan menggunakan register geser (shift register). Pada register geser
output data masuk secara seri (bit demi bit) untuk diubah menjadi output paralel (SIPO =
Serial In Paralel Out), sedangkan pada register geser input data dimasukkan secara paralel
untuk dikeluarkan secara seri (PISO = Paralel In Serial Out). Register geser output yang
dipergunakan adalah 74HC595 sedangkan register geser input menggunakan 74HC165.
Pada kegiatan ini dipergunakan 3 buah pin output untuk mengendalikan 8 output berupa
LED.
Program
'=================================================================
'Program reg_out.bas
'Program untuk mengendalikan 8 LED menggunakan 3 pin I/O
'=================================================================
Pclock Alias P0.0 'P0.0 sebagai pin clock
Pdat Alias P0.1 'P0.1 sebagai pin data
Platch Alias P0.2 'P0.2 sebagai pin latch
Dim A As Byte
Do
A = &H0F 'data yang akan dimasukkan &H0F
Gosub Out_595 'panggil subrutin
Waitms 500 'tunggu 0,5 detik
A = &HF0 'data yang akan dimasukan &HF0
Gosub Out_595 'panggil subrutin
Waitms 500 'tunggu 0,5 detik
Loop
End
Pada komunikasi serial sinkron diperlukan minimal 2 jalur I/O, yaitu data dan clock. Pada
rangkaian ini clock diberikan oleh mikrokontroler. Gambar 10-1 menunjukkan sinyal yang
terdapat pada jalur data dan jalur clock.
Laboratorium Mekatronika
Komunikasi Serial Asinkron dengan PC 51
Transmisi data serial secara asinkron hanya memerlukan 1 jalur I/O. Pada
komunikasi serial terdapat kesulitan dalam menentukan awal dan akhir data, kecuali
pengirim dan menerima menerapkan perangkat aturan yang sama yang disebut protokol.
Protokol mengatur bagaimana data dibentuk, berapa banyak bit untuk membentuk suatu
karakter, serta kapan data mulai atau berhenti.
Pada komunikasi asinkron, data diletakkan di antara start bit dan stop bit. Gambar
menunjukkan saat tidak ada transfer data sinyal berada pada kondisi high, atau disebut
mark. Transmisi dimulai dengan start bit, yang selanjutnya diikuti dengan data yang
dikirim berturut-turut mulai LSB hingga MSB, dan kemudian diakhiri dengan stop bit.
Pada komunikasi asinkron peranti dapat diprogram untuk data dengan lebar data 7
atau 8 bit, sedangkan stop bit dapat berjumlah 1 atau 2. Saat ini pengiriman data yang
umum dilakukan berupa data ASCII 8 bit dan diakhiri dengan 1 buah stop bit. Sehingga
untuk satu karakter total bit yang dikirim adalah 10 bit, 8 bit untuk karakter serta masing-
masing 1 bit untuk start bit dan stop bit.
Pada beberapa sistem, untuk memeriksa validitas data yang dikirim, digunakan bit
tambahan yang disebut parity bit. Parity bit tersebut bisa berupa parity bit ganjil ataupun
genap. Untuk parity bit genap jumlah keseluruhan bit termasuk parity bit adalah genap,
sedangkan untuk parity bit ganjil jumlah keseluruhan bit adalah ganjil. Contohnya untuk
karakter “A”dengan kode ASCII 01000001 akan mempunyai parity bit genap 0 atau 1
untuk parity bit ganjil.
Terdapat bermacam-macam standar komunikasi asinkron, salah satu yang paling
populer adalah RS 232. Pada RS232 logika 1 direpresentasikan oleh tegangan antara – 3V
hingga – 25V, sedangkan logika 0 direpresentasikan oleh tegangan antara + 3V hingga
+25V, dengan level tegangan paling umum dipakai adalah – 12V dan + 12 V. Karena level
tegangan yang dipergunakan RS232 tidak kompatibel dengan level tegangan TTL yang
dipakai mikrokontroler (5 V untuk logika 1 dan 0 V untuk logika 0), maka diperlukan
konverter tegangan, yaitu menggunakan IC MAX 232.
Untuk dapat berkomunikasi pengirim dan penerima haruslah mengirim dan
menerima data dengan kecepatan transfer data yang sama. Kecepatan transfer ini disebut
baud rate yang menyatakan banyaknya perubahan sinyal per detik. Nilai baud rate yang
sering dipakai adalah 1200, 2400, 4800, dan 9600.
11.1.1 Rangkaian
Sebagai penghubung pada komunikasi serial dipergunakan kabel serial
menggunakan soket DB9 yang mempunyai 9 pin. Untuk koneksi paling sederhana (null
mode) cukup digunakan 3 pin, yaitu TxD, RxD, dan GND.
Pada MAX232 terdapat 2 pin yang digunakan untuk transfer data, yaitu TxD untuk
mengirimkan data dan RxD untuk menerima data. Pada mikrokontroler pin yang
dipergunakan adalah pin P3.1 (sebagai TxD) dan pin 3.0 (sebagai RxD). Hubungan antara
MAX232 dan mikrokontroler terdapat pada gambar. Supaya dapat bekerja baik rangkaian
ini memerlukan 4 buah kapasitor dengan nilai antara 1 hingga 22 µF.
Untuk menampilkan data karakter yang dikirim mikrokontroler di PC digunakan program
Hyperterminal, yaitu salah satu program yang terdapat pada MS Windows. Untuk
menjalankan program Hyperterminal dilakukan dengan urutan berikut
Buka program (Start Program Accesories Communications Hyperterminal).
Laboratorium Mekatronika
Komunikasi Serial Asinkron dengan PC 53
Pada jendela connect to isikan connect using dengan port serial yang akan dipergunakan
(COM 1).
Pada jendela COM1 Properties masukkan parameter komunikasi yang diinginkan yaitu
9600 bits per detik, 8 bit data, tanpa bit parity, 1 bit stop, dan tidak ada flow control. Klik
OK maka Hyperterminal siap untuk dipergunakan.
Laboratorium Mekatronika
Komunikasi Serial Asinkron dengan PC 55
Loop
Satu:
Print "pilihan anda no satu"
Return
Dua:
Print "pilihan anda no dua"
Return
Tiga:
Print "pilihan anda no tiga"
Return
Program 11-2 menunjukkan contoh komunikasi antara mikrokontroler dengan PC. Di sini
PC dimanfaatkan sebagai media input dan output yang langsung terhubung dengan
pengguna.
Latihan 12
Buatlah program untuk menampilkan hasil pengukuran temperatur menggunakan
Hyperterminal yang diawali dengan pertanyaan kepada pengguna, skala temperatur apa
yang akan digunakan, apakah dalam Celsius, Kelvin, Fahrenheit, atau Rankine.
Laboratorium Mekatronika
Aktuator Motor DC 57
12. Aktuator
Tujuan : Setelah melaksanakan modul ini mahasiswa diharapkan dapat :
• Membuat program yang dapat mengendalikan gerak motor DC dan motor servo
12.1 Motor DC
Motor adalah peranti yang mengkonversikan energi elektrik menjadi gerak
mekanik, berupa gerak rotasi. Berdasarkan tegangan catu dayanya motor dapat dibedakan
menjadi motor DC dan motor AC. Motor DC digunakan pada banyak aplikasi sistem
mekatronika karena relatif mudah dalam pengendaliannya dibandingkan motor AC.
Kecepatan motor DC dapat diatur dan semua motor DC putarannya dapat dibalik.
Untuk mengendalikan motor DC diperlukan suatu rangkaian yang di dalamnya
terdapat dari transistor ataupun relay. Di pasaran juga terdapat rangkaian terpadu
pengendali motor, seperti misalnya L293D. IC ini mempunyai tiga buah input, yaitu IN1,
IN2, dan Enable. Pada IC ini terdapat dua jembatan-H yang dapat digunakan untuk dua
buah motor. Sebuah rangkaian H-bridge terdiri dari 2 buah pin input (IN1 dan IN2 atau
IN3 dan IN4), 1 pin enable (ENABLE1 atau ENABLE2) dan 2 buah pin output (OUT1 dan
OUT2 atau OUT3 dan OUT4).
P0 = 0
Do
Gosub Berhenti
Wait 2
Gosub Maju
Wait 2
Gosub Berhenti
Wait 2
Gosub Mundur
Wait 2
Loop
End
Maju:
En2 = 1
In3 = 1
In4 = 0
Return
Mundur:
En2 = 1
In3 = 0
In4 = 1
Return
Berhenti:
En2 = 0
In3 = 0
In4 = 0
Return
Program ini akan memerintahkan motor untuk berputar maju 2 detik dan berputar mundur
2 detik, masing-masing diselingi berhenti selama 2 detik. Perhatikan masing-masing
subrutin Manju, Mundur, dan Berhenti yang sesuai dengan tabel 12-1.
Latihan 13
Buatlah program untuk mengatur arah putaran motor DC menggunakan keypad. Fungsi
tombol 5 untuk menghentikan motor, tombol 8 untuk berputar maju, dan tombol 2 untuk
berputar mundur.
Laboratorium Mekatronika
Aktuator Motor DC 59
posisi hingga mencapai posisi yang diperintahkan. Motor servo banyak digunakan pada
peranti R/C (remote control) seperti mobil, pesawat, helikopter, dan kapal, serta sebagai
aktuator robot maupun penggerak pada kamera.
Gambar 12-3 Hubungan antara lear pulsa dengan posisi poros motor servo
Program ini menunjukkan dasar pengendalian motor servo menggunakan fungsi yang telah
ada pada Bascom. Config Servos menunjukkan jumlah motor servo yang terhubung
dengan mikrokontroler. Servo1 = P1.1 menunjukkan pin yang digunakan. Reload = 100
menunjukkan waktu reload dalam mikrodetik. Servo1 = 15 menunjukkan pulsa yang
dikirim selama 15 × 100 mikrodetik, atau 1,5 milidetik.
Agung Nugroho Adi, Handout Kuliah Mekatronika, Teknik Mesin UII, 2007.
Alciatore, D. G. & Histand, M. B., Introduction to Mechatronics and Measurement
Systems, McGraw-Hill, 2003.
Anonim, Bascom-8051 Help Reference, MCS Electronics, 2006.
Didin Wahyudin, Belajar Mudah Mikrokontroler AT89S52 dengan Bahasa BASIC
Menggunakan BASCOM-8051, Penerbit Andi Yogyakarta, 2006.
Mazidi, M. A. & Mazidi, J. G., The 8051 Microcontroller And Embedded Systems,
Prentice Hall, 2000.
McComb, G & Predko, M., Robot Builder’s Bonanza, McGraw-Hill, 2006.
Muljowidodo K. & Indra Djodikusumo, Mekatronika, HEDS ITB, 1996.
Stiffler, A. K., Design with Microprocessor for Mechanical Engineers, McGraw-Hill,
1992.
Tokheim, R. L., Digital Electronics, Principles and Applications, McGraw-Hill, 2003.
Wahyudi, Handout Kuliah Kontrol Berbasis Komputer, Teknik Mesin UII, 2004.
Simpson, Colin D., Industrial Electronics, Prentice-Hall, 1996.