PENGENDALIAN MOBIL REMOTE CONTROL MELALUI PERSONAL COMPUTER (PC) DENGAN MENGGUNAKAN VISUAL BASIC
TUGAS AKHIR Diajukan sebagai salah satu syarat untuk memperoleh gelar Sarjana
NAMA : AGUNG EKA PUTRA NIM : 41405110043
FAKULTAS TEKNIK INDUSTRI PROGRAM STUDI TEKNIK ELEKTRONIKA JAKARTA JANUARI 2009
LEMBAR PERNYATAAN
Yang bertanda tangan di bawah ini, Nama N.I.M Jurusan Fakultas Judul Skripsi
: : : : :
Agung Eka Putra 41405110043 Teknik Elektro Teknologi Industri Pengendalian Mobil Remote Control Melalui Personal Computer (PC) Dengan Menggunakan Visual Basic
Dengan ini menyatakan bahwa hasil penulisan Tugas Akhir yang telah saya buat ini merupakan hasil karya sendiri dan benar keasliannya. Apabila ternyata di kemudian hari penulisan Tugas Akhir ini merupakan hasil plagiat atau penjiplakan
terhadap
karya
orang
lain,
maka
saya
bersedia
mempertanggungjawabkan sekaligus bersedia menerima sanksi berdasarkan aturan tata tertib di Universitas Mercu Buana. Demikian, pernyataan ini saya buat dalam keadaan sadar dan tidak dipaksakan.
Penulis,
[
]
ii Universitas Mercu Buana
LEMBAR PENGESAHAN
PENGENDALIAN MOBIL REMOTE CONTROL MELALUI PERSONAL COMPUTER (PC) DENGAN MENGGUNAKAN VISUAL BASIC
TUGAS AKHIR
NAMA : AGUNG EKA PUTRA NIM : 41405110043
Koordinator Tugas Akhir
Pembimbing Tugas Akhir
( Jaja Kustija MSc )
( Ir. Eko Ihsanto M.Eng )
Ketua Program Studi Teknik Elektro
( Ir. Yudhi Gunardi M.T )
iii Universitas Mercu Buana
KATA PENGANTAR
Puji syukur saya panjatkan kepada Allah SWT, karena atas rahmat dan hidayahNya, saya dapat menyelesaikan tugas akhir ini. Pembuatan tugas akhir ini dilakukan dalam rangka memenuhi syarat untuk mencapai gelar Sarjana Teknik Jurusan Teknik Elektronika pada Fakultas Teknologi Industri Universitas Mercu Buana. Saya menyadari bahwa, tanpa bantuan dan bimbingan dari berbagai pihak, dari masa perkuliahan sampai pada pembuatan tugas akhir ini, sangatlah sulit bagi saya untuk menyelesaikannya. Oleh karena itu, saya mengucapkan terima kasih kepada : 1. Ir. Eko Ihsanto M.Eng, selaku dosen pembimbing yang telah menyediakan waktu, tenaga dan pikiran untuk mengarahkan saya dalam pembuatan tugas akhir ini; 2. Istri dan orang tua saya yang telah memberikan dukungan material dan moral; 3. Rekan-rekan mahasiswa yang turut membantu saya dalam penyelesaian tugas akhir ini. Akhir kata, saya berharap Allah SWT berkenan membalas segala kebaikan semua pihak yang telah membantu. Semoga tugas akhir ini dapat membawa manfaat bagi pengembangan ilmu.
Jakarta, 29 Desember 2008
Penulis
iv Universitas Mercu Buana
ABSTRAK Nama : Agung Eka Putra Program Studi : Teknik Elektronika Judul : Pengendalian Mobil Remote Control Melalui Personal Computer (PC) Dengan Menggunakan Visual Basic Tugas Akhir ini membahas tentang suatu perangkat elektronik yang dapat memantau kondisi lingkungan di sekitarnya untuk berbagai macam keperluan, misalnya sebagai pendukung keamanan, survey lapangan ke tempat yang tak terjangkau manusia, dsb. Pemantauan dilakukan dari jauh dengan memanfaatkan Personal Computer (PC) yang telah dilengkapi dengan program Pengendali Mobil Remote Control. Mobil Remote Control dipilih sebagai perlengkapan pemantauan karena mudah didapat dan harganya terjangkau. Mobil Remote Control dipadukan dengan kamera untuk proses monitoring serta sebagai feedback untuk operatornya. Pembahasan difokuskan pada sistem komunikasi serial antara PC dengan mikrokontroler AT89C51. Penggunaan pemrograman Visual Basic memudahkan pengoperasian mobil Remote Control karena cukup user-friendly dan dapat dimodifikasi sesuai keperluan. Kata kunci : Komunikasi Data Serial, AT89C51, Visual Basic, Kamera
v Universitas Mercu Buana
ABSTRACT Name : Agung Eka Putra Study Program: Electronic Engineering Title : Controlling Remote Control Car with Personal Computer (PC) using Visual Basic This is study an electronic peripheral available for monitoring area in any kind of need, for example as security supporter, survey field to place of which can not be reached by human, etc. Monitoring done from a distance by using Personal Computer (PC) which have been provided with “Pengendali Mobil Remote Control” program. Remote Control car is selected as monitoring equipment because it’s easy to get and cheap. Remote Control car attached with camera for monitoring process and also as feedback for the operator. The study focussed at serial communications system between PC with mikrokontroler AT89C51. Usage of Visual Basic programming make the operation of Remote Control car become easy because is enough user-friendly and can be modified according to need. Key words : Data Serial Communication, AT89C51, Visual Basic, Camera
vi Universitas Mercu Buana
DAFTAR ISI
HALAMAN JUDUL .......................................................................................... LEMBAR PERNYATAAN ............................................................................... LEMBAR PENGESAHAN ................................................................................ KATA PENGANTAR ........................................................................................ ABSTRAK .…………………………………………………………………… DAFTAR ISI …………………………………………………………………. DAFTAR GAMBAR .………………………………………………………… DAFTAR TABEL .……………………………………………………………. DAFTAR LAMPIRAN ………………………………………………………. BAB 1 PENDAHULUAN ................................................................................. 1.1 Latar Belakang ...................................................................................... 1.2 Tujuan Penulisan .................................................................................... 1.3 Batasan Masalah ………………………………………………………. 1.4 Sistematika Penulisan …………………………………………………. BAB 2 TINJAUAN PUSTAKA ……………………………………………... 2.1 Komunikasi Serial …………………………………………………….. 2.1.1 Jenis Komunikasi Data Serial …………………………………... 2.1.2 Protokol Serial …………………………………………………... 2.1.3 Pengaksesan Port Serial PC Dengan Visual Basic ....................... 2.1.3.1 Properti MSComm ……………………………………… 2.1.3.2 Even MSComm …………………………………………. 2.2 RS232 Converter ……………………………………………………… 2.3 Mikrokontroler AT89C51 …………………………………………….. 2.3.1 Jalur Input/Output ………………………………………………. 2.3.2 Timer/Counter …………………………………………………... 2.3.3 Sistem Interupsi …………………………………………………. 2.3.4 Port Serial ……………………………………………………….. 2.3.5 Instruksi Mikrokontroler ...……………………………………… 2.3.5.1 Instruksi Transfer Data ………………………………….. 2.3.5.2 Instruksi Aritmatika ……………………………………... 2.3.5.3 Instruksi Logika …………………………………………. 2.3.5.4 Instruksi Pencabangan (Branch) ………………………... BAB 3 RANCANG BANGUN .......................................................................... 3.1 Prinsip Kerja Sistem ............................................................................... 3.2 Perangkat Keras ...................................................................................... 3.3 Perangkat Lunak ..................................................................................... 3.3.1 Pemrograman Mikrokontroler …………………………………... 3.3.2 Pemrograman Pada PC ………………………………………….. 3.4 Format Data Serial ……………………………………………………. 3.5 Kamera Digital Wireless ……………………………………………… 3.6 TV Tuner ………...……………………………………………………. BAB 4 PENGUJIAN DAN ANALISA SISTEM ............................................. 4.1 Hasil Rancang Bangun ........................................................................... 4.2 Instalasi Software ...................................................................................
i ii iii iv v vii ix x xi 1 1 1 1 2 3 3 3 3 4 4 5 7 10 12 13 15 22 26 26 27 28 29 31 31 33 34 34 35 36 36 36 37 37 38
vii Universitas Mercu Buana
4.2.1 Software Pengendali Mobil Remote Control ................................ 4.2.2 Software TV Tuner ........................................................................ 4.3 Pengujian ................................................................................................ 4.3.1 Pengujian Secara Software ............................................................ 4.3.2 Pengujian Secara Elektronik ......................................................... BAB 5 KESIMPULAN DAN SARAN ............................................................. DAFTAR REFERENSI ...………………………...............…………………… LAMPIRAN ....................………………………...............……………………
38 39 40 40 41 48 49 50
viii Universitas Mercu Buana
DAFTAR GAMBAR
Gambar 2.1 Timing Format Asynchronous – UART ......................................... Gambar 2.2 Spesifikasi Level Logic RS232C ................................................... Gambar 2.3 Konektor DB9 ................................................................................ Gambar 2.4 Konfigurasi Pin AT89C51 ………………………………………. Gambar 2.5 Blok Diagram IC AT89C51 ……………………………………... Gambar 2.6 Register Timer Control (TCON) .................................................... Gambar 2.7 Register Timer Mode Operation (TMOD) ..................................... Gambar 2.8 Bagan Kerja Prosesor Melayani Interupsi ...................................... Gambar 2.9 Peta Memory Program .................................................................... Gambar 2.10 Bagan Lengkap Sistem Interupsi AT89C51 ................................. Gambar 2.11 Register Serial Data Buffer (SBUF) ............................................. Gambar 2.12 Register Serial Port Control (SCON) …………………………... Gambar 2.13 Sistem Pembangkit Clock Untuk UART ...................................... Gambar 3.1 Blok Diagram Sistem Keseluruhan ................................................ Gambar 3.2 Skematik Diagram Perangkat Keras Sistem ................................... Gambar 3.3 Diagram Alir Program Mikrokontroler .......................................... Gambar 3.4 Diagram Alir Perangkat Lunak Pada PC ........................................ Gambar 3.5 Format Data Serial .......................................................................... Gambar 4.1 Perangkat Keras Sistem .................................................................. Gambar 4.2 Tampilan Perangkat Lunak Sistem ................................................. Gambar 4.3 Menu Instalasi Langkah Pertama ................................................... Gambar 4.4 Menu Instalasi Langkah kedua ....................................................... Gambar 4.5 Menu Instalasi Software TV Tuner ................................................ Gambar 4.6 Pengujian Dengan Hyper Terminal ................................................ Gambar 4.7 Pengujian Dengan Visual Basic ..................................................... Gambar 4.8 Blok Pengujian Secara Elektronik .................................................. Gambar 4.9 Pengukuran Pada TP 1 Saat Tombol A Ditekan ............................ Gambar 4.10 Pengukuran Pada TP 1 Saat Tombol B Ditekan ........................... Gambar 4.11 Pengukuran Pada TP 1 Saat Tombol C Ditekan ........................... Gambar 4.12 Pengukuran Pada TP 1 Saat Tombol D Ditekan .......................... Gambar 4.13 Pengukuran Pada TP 2 Saat Tombol A Ditekan .......................... Gambar 4.14 Pengukuran Pada TP 2 Saat Tombol B Ditekan ........................... Gambar 4.15 Pengukuran Pada TP 2 Saat Tombol C Ditekan ........................... Gambar 4.16 Pengukuran Pada TP 2 Saat Tombol D Ditekan .......................... Gambar 4.17 Pengukuran Pada TP 3 Saat Tombol A Ditekan .......................... Gambar 4.18 Pengukuran Pada TP 3 Saat Tombol B Ditekan ........................... Gambar 4.19 Pengukuran Pada TP 3 Saat Tombol C Ditekan ........................... Gambar 4.20 Pengukuran Pada TP 3Saat Tombol D Ditekan ...........................
3 8 9 11 12 14 14 16 19 21 23 24 26 31 33 34 35 36 37 37 38 38 39 40 41 41 42 42 43 43 44 44 44 45 45 46 46 47
ix Universitas Mercu Buana
DAFTAR TABEL
Tabel 2.1 Nilai-nilai Properti Even Error pada CommEvent …………………. Tabel 2.2 Nilai-Nilai Properti Even Komunikasi Pada CommEvent ................ Tabel 2.3 Spesifikasi RS232C…………………………………………………. Tabel 2.4 Mode operasi timer ............................................................................
5 6 9 15
x Universitas Mercu Buana
DAFTAR LAMPIRAN
Listing Program Mikrokontroler ........................................................................ Listing Program Visual Basic ………………………………………………… Data Sheet AT89C51 ......................................................................................... Data Sheet RS232C ..…………………………………………………………..
50 53 58 60
xi Universitas Mercu Buana
BAB 1 PENDAHULUAN
1.1 Latar Belakang Pemantauan kondisi lingkungan di suatu tempat terkadang sangat diperlukan, misalnya untuk mendukung penjaga keamanan dalam melaksanakan tugasnya sehingga tidak perlu turun langsung ke lokasi untuk mengetahui lingkungan sekitarnya setiap saat secara terus menerus. Ataupun pemantauan ke tempat-tempat yang tidak mungkin dilakukan oleh manusia ,misalnya tempat yang penuh gas/asap beracun, tempat dengan ruangan yang sempit, dsb. Untuk mengatasi hal tersebut, diperlukan adanya suatu sistem pemantau yang dapat dikendalikan dari jarak jauh untuk memonitor suatu kondisi lingkungan secara audio visual dan realtime di lapangan dengan menggunakan komputer yang dioperasikan oleh seorang operator. Untuk merealisasikan hal tersebut di atas, dalam tugas akhir ini dibuat suatu perangkat yang dapat memonitor suatu kondisi secara audio visual dan dikendalikan dari jarak jauh dengan menggunakan komputer.
1.2 Tujuan Penulisan Tujuan dari penulisan tugas akhir ini adalah untuk merancang dan membuat sistem pengendali mobil remote control melalui PC dengan menggunakan Visual Basic yang dapat digunakan diantaranya untuk keperluan pemantauan lingkungan.
1.3 Batasan Masalah Permasalahan yang akan dibahas pada tugas akhir ini hanya dibatasi pada proses komunikasi data antara PC dengan mikrokontroler secara serial, melalui visual basic.
1 Universitas Mercu Buana
2
1.4 Sistematika Penulisan Dalam Penulisan laporan tugas akhir ini, disusun berdasarkan bab-bab yang terdiri atas lima bab dan selanjutnya diperjelas dalam beberapa sub bab. Secara keseluruhan skripsi ini disusun dalam sistimatika sebagai berikut: BAB 1 PENDAHULUAN Berisi latar belakang, tujuan penulisan, batasan masalah, dan Sistematika penulisan. BAB 2 TINJAUAN PUSTAKA Bagian pertama menjelaskan mengenai port serial, bagian kedua menjelaskan mengenai konverter RS 232, dan ketiga menjelaskan mengenai mikrokontroler AT89S51. BAB 3 RANCANG BANGUN Bagian pertama menjelaskan mengenai prinsip kerja sistem keseluruhan, bagian kedua menjelaskan mengenai perancangan perangkat keras, bagian ketiga mmenjelaskan mengenai perancangan perangkat lunak pada komputer dan perancangan perangkat lunak pada mikrokontroler, dan yang keempat menjelaskan format data serial dari PC yang akan dikirimkan ke mikrokontroler. BAB 4 PENGUJIAN DAN ANALISA SISTEM Pada bab ini dibahas mengenai beberapa pengujian system yaitu: Melakukan uji koneksi dengan menggunalan hyper terminal, Kemudian melakukan pengujian secara keseluruhan, dan dilanjutkan dengan menganalisa data hasil pengujian tersebut. BAB 5 KESIMPULAN Merupakan hasil yang didapat dari rancang bangun sistem secara keseluruhan.
Universitas Mercu Buana
BAB 2 TINJAUAN PUSTAKA
2.1 Komunikasi Serial 2.1.1 Jenis komunikasi data serial Ada dua macam cara pengiriman (transmisi) data secara serial. Kedua cara tersebut dibedakan oleh sinyal detak (clock) yang dipakai untuk mendorong data serial, yang pertama yaitu detak dikirim bersamasama dengan data serial, cara tersebut dikatakan sebagai transmisi data serial secara synchron, sedangkan cara yang kedua yaitu disebut asynchron dimana detak dibangkitkan oleh masing-masing system pengirim maupun penerima.
2.1.2 Protokol Serial Format populer untuk transmisi data kecepatan rendah adalah asynchronous protokol. Format tipical untuk komunikasi asynchronous adalah 12 bit. Start bit menginisialisasikan rangkaian pewaktuan. Hal ini dideteksi oleh perubahan dari High ke Low. Berikutnya adalah delapan bit data, diawali dengan LSB (Least Significant Bit) diakhiri dengan MSB (Most Significant Bit). Kemudian diikuti oleh opsional bit parity. Terakhir, line menjadi High untuk satu atau dua bit (stop bit), menandakan karakter telah habis. Format ini ditunjukkan pada Gambar 2.1 .
Gambar 2.1 Timing Format Asynchronous – UART
3 Universitas Mercu Buana
4
2.1.3 Pengaksesan port serial pada PC menggunakan pemograman Visual Basic 6.0 Pengaksesan port serial melalui visual basic yaitu dengan menggunakan kontrol MSComm. Kontrol MSComm menyediakan fasilitas komunikasi antara program aplikasi yang kita buat dengan port serial untuk mengirim atau menerima data melalui port serial. Setiap MSComm hanya menangani satu port serial, sehingga jika kita ingin menggunakan lebih dari satu port serial, kita juga harus menggunakan MSComm sebanyak port serial yang kita pakai.
2.1.3.1 Properti MSComm Jumlah properti pada MSComm sangat banyak beberapa properti yang sering dipakai adalah sebagai berikut: CommPort
: Digunakan untuk menentukan nomor port serial yang akan dipakai.
Setting
: Digunakan untuk menset nilai baud rate, parity, jumlah bit data, dan jumlah bit stop.
PortOpen
: Digunakan untuk membuka ataupun menutup port serial yang dihubungkan dengan MSComm ini.
Input
: Digunakan untuk mengambil data string yang ada pada buffer penerima.
Output
: Digunakan untuk menulis data string pada buffer kirim.
Berikut adalah contoh penggunaan properti tersebut untuk komunikasi menggunakan modem. Private Sub Form_Load ( ) MSComm1.commPort = 1 MSComm1.Settings = “4800,N,8,1” MSComm1.inputlen = 0 MSComm1.PortOpen = True MSComm1.output = “ATV1Q0” & Chr$(13) Do DoEvents Buffer$ = Buffer$ & MSComm1,input Loop Until InStr(Buffer$, “OK” & vbCRLF) MSComm1.PortOpen = False End Sub
Universitas Mercu Buana
5
Kode-kode program pada prosedur di atas melakukan aksi sebagai berikut: x
Port serial yang digunakan adalah COM1
x
Setting MSComm adalah baud rate 4800, tanpa paritas, jumlah data 8 bit, dan jumlah bit stop adalah 1 bit.
x
Memerintahkan kontrol MSComm membaca seluruh isi buffer ketika menggunakan perintah Input (MSComm1.InputLen = 0)
x
Membuka port serial
x
Mengirim perintah “ATV1Q0” diikuti ASCII 13 (enter) ke modem
x
Menunggu modem mengirimkan jawaban “OK” ke komputer
x
Menutup port serial
2.1.3.2 Even Pada MSComm MSComm hanya mempunyai satu even saja, yaitu even OnComm. Even OnComm dibangkitkan jika nilai properti dari CommEvent berubah yang mengindikasikan telah terjadi even pada port serial baik even komunikasi maupun even error. Tabel 2.1 dan Tabel 2.2 berikut adalah nilai-nilai dari properti CommEvent. Nilai properti ini tidak tersedia pada saat design time, tetapi hanya dapat dibaca pada saat run time.
Tabel 2.1 Nilai-nilai Properti Even Error pada CommEvent Konstanta comEventFrame comEventRxParity comEventRxOver comEventRxFull comEventOverrun comEventBreak comEventDCB
Keterangan Hardware mendeteksi adanya kesalahan framing Hardware mendeteksi adanya kesalahan pariti Buffer penerima mengalami over fllow, tidak ada ruang kosong lagi pada buffer penerima Buffer kirim penuh Port mengalami overrun Sinyal Break diterima Mendapatkan kembali Device Control Block (DCB) dari port serial
Universitas Mercu Buana
6
Tabel 2.2 Nilai-Nilai Properti Even Komunikasi Pada CommEvent Konstanta
Keterangan
Jumlah karakter pada buffer kirim lebih sedikit daripada nilai property Sthreshold. Even ini akan dibangkitkan jika nilai pada property Sthreshold tidak diisi ‘0’. comEvReceive Telah diterima karakter sebanyak nilai property Rthreshold. Even ini akan dibangkitkan terus menerus sampai data diambil dari buffer penerima menggunakan perintah input. Even ini akan dibangkitkan jika nilai pada property Rthreshold tidak diisi ‘0’. Terjadi perubahan pada saluran Clear to Send comEvCTS Terjadi perubahan pada saluran Data Set Ready comEvDSR Terjadi perubahan pada saluran Carier Detect comEvCD Terdeteksi adanya sinyal Ring comEvRing Karakter End of file diterima comEvEOF comEvSend
Berikut adalah contoh penggunaan even OnComm untuk komunikasi menggunakan mikrokontroler.
Akan dibaca hanya even
comEvReceive saja, even yang lain diabaikan. Private Static Sub MSComm1_OnComm() Dim Buffer As Variant Select Case MSComm1.CommEvent Case comEvReceive If MSComm1.InBufferCount >= 3 then Buffer = CStr (MSComm1.Input) If Mid(Buffer, 1, 1) = “O” Then If Mid(Buffer, 2, 1) = “K” Then StatusBar1.Panels(“value”).Text = “Value:” & Asc(Mid(Buffer, 3, 1)) StatusBar1.Panels(“Status”).Text = “status: Connect” End If End If End Selec End Sub
Kode-kode program pada prosedur diatas akan melakukan aksi sebagai berikut: x
Mendeteksi even comEvReceive, kemudian menentukan apakah sudah diterima tiga buah karakter pada buffer penerima
Universitas Mercu Buana
7
x
Menentukan apakah karakter yang diterima adalah karakter ‘OK’. Jika karakter yang diterima adalah karakter ‘OK’, maka akan diubah nilai ‘Value’ dan nilai ‘Status’ pada property panel control StatusBar1
2.2 RS232C Converter RS232 (Recommended Standard 232) merupakan sebuah antar muka standar yang disetujui oleh Electronic Industries Association (EIA) untuk komunikasi DTE (Data Terminal Equipment) dengan DCE (Data CircuitTerminating Equipment) secara serial. Standard EIA RS232 pertama kali dipublikasikan pada tahun 1962. Standar ini sudah ada jauh sebelum IC TTL populer. Pada tahun 1987, EIA mengeluarkan standar versi baru dan merubah nama menjadi EIA-232D dan pada tahun 1991 menjadi EIA/TIA-232-E. EIA/TIA-232-E merupakan revisi ke lima dari standar RS232. Namun demikian banyak orang masih menganggap sebagai standar RS232C, atau hanya RS232. Antar muka (interface) secara serial lebih sulit dibandingkan dengan antar muka (interface) secara paralel. Dalam banyak kasus, beberapa alat yang dihubungkan dengan port serial akan membutuhkan pengubah transmisi serial ke parallel. Hal ini dapat dilakukan dengan menggunakan IC Universal Asynchronous Receiver/Transmitter ( UART ). Peralatan yang menggunakan kabel serial untuk komunikasinya dibagi menjadi dua golongan utama yaitu DCE (Data Communication Equipment) dan DTE (Data Terminal Equipment). Yang tergolong DCE adalah peralatan seperti modem, printer, mouse, dan plotter. Dan yang tergolong DTE adalah Komputer atau terminal. Dalam ketentuan RS232C, level logika 1
(Mark) dinyatakan dengan
tegangan antara –3 sampai –15 Volt dengan beban (-25 Volt tanpa beban), dan level logika 0 (Space) dinyatakan dengan tegangan antara +3 sampai +15 Volt dengan beban (+25 Volt tanpa beban). Mengingat komponen digital pada umumnya bekerja dengan sumber tegangan +5 Volt, dan level logika ‘0’ dinyatakan dengan tegangan antara 0 sampai 0,8 Volt dan level logika ‘1’ dinyatakan dengan tegangan 3,5 sampai 5 Volt, maka antara rangkaian digital dan saluran RS232C biasanya disisipkan IC ‘RS232-TTL Voltage Translator’.
Universitas Mercu Buana
8
Standar RS232C juga membatasi maksimum slew rate pada output driver. Batasan ini dimasukkan untuk membantu mengurangi kemungkinan cross-talk diantara sinyal yang berdekatan. Semakin kecil rise dan fall time, maka semakin kecil pula kemungkinan untuk terjadi cross-talk. Berdasarkan keadaan ini slew rate maksimum yang diizinkan adalah 30V/µs. Dan juga RS232C telah menentukan besar baud rate maksimum yaitu 20k bit / detik. Ketentuan ini dimaksudkan untuk mengurangi kemungkinan terjadinya cross-talk. Impedansi antara driver dan receiver juga telah ditentukan.
Beban pada driver
dispesifikasikan sebesar 3k sampai 7k. Untuk daerah antara +3 dan -3 volt level logikanya tidak didefinisikan. Tegangan open circuit tidak boleh lebih dari 25 volt ( referensi terhadap ground ). Arus short circuit tidak boleh melebihi 500mA. Spesifikasi level logic RS 232 dapat dilihat pada Gambar 2.2
Gambar 2.2 Spesifikasi Level Logic RS232C
Dalam saluran RS232C level logika ditransmisikan sebagai perbedaan tegangan antara saluran dan Ground, cara semacam ini dikatakan sebagai unbalanced (single-ended) data
transmission (transmisi data tidak imbang).
Unbalanced (single-ended) data transmission menggunakan single konduktor, dengan tegangan direferensikan terhadap sinyal ground (common) yang menunjukkan keadaan logic. Jika sinyal menerima gangguan derau listrik (electrical noise), bisa berakibat fatal pada penerima karena derau yang diterima bisa disalah tafsirkan sebagai sinyal digital. Saluran RS232C banyak dipakai untuk menghubungkan komputer dengan alat pendukungnya, misalnya komputer dengan printer, dan komputer dengan modem. Namun hubungan antara alat tidak lebih dari 50 feet (sekitar 16,4 meter). Untuk lebih jelasnya, spesifikasi RS 232 dapat dilihat pada Tabel 2.3 dan
Universitas Mercu Buana
9
konfigurasi dari port serial PC dapat dilihat pada Gambar 2.5 dengan keterangan tiap kaki terdapat pada Tabel 2.4.
Tabel 2.3 Spesifikasi RS232C Spesifikasi Mode operasi Jumlah Tx dan Rx yang diizinkan Panjang kabel maksimum Data Rate maksimum Range output driver minimum Range output driver maksimum Impedansi pada Tx Sensitivitas input Rx Range tegangan input Rx Resistansi input Rx maksimum Receiver Threshold
Keterangan Single Ended 1 Tx, 1Rx ( point to point ) 50 feet 20 kbps ±5V sampai ±15V ±25V 3kവ sampai 7kവ ±3V s15V 3k sampai 7k ±3V
Gambar 2.3 Konektor DB9
Tabel 2.4 RS232C Pada DB9 Nomor Pin 1 2 3 4 5 6 7 8 9
Sinyal DCD RD TD DTR GND DSR RTS CTS RI
Deskripsi Data Carrier Detect Receive Data Transmit Data Data Terminal Ready Signal Ground Data Set Ready Ready To Send Clear To Send Ring Indicator
Universitas Mercu Buana
10
Sinyal
Fungsi
DCD
Saat modem mendeteksi sinyal carrier dari modem ujung yang lain pada line telepon, maka line ini akan aktif.
RD
Sinyal ini dihasilkan DCE (Data Circuit-Terminating Equipment) dan diterima oleh DTE (Data Terminal Equipment).
TD
Sinyal ini dihasilkan DTE (Data Terminal Equipment) dan diterima oleh DCE (Data Circuit-Terminating Equipment).
DTR
Mengindikasikan kesiapan dari DTE. Sinyal ini ON oleh DTE saat siap untuk mengirim atau menerima data.
DSR
Mengindikasikan kesiapan dari DCE. Sinyal ini ON oleh DCE saat siap untuk mengirim atau menerima data.
RTS
Saat DTE siap untuk mengirim data ke DCE, RTS akan ON. Pada sistem simplex dan duplex, kondisi ini menunjukkan DCE pada mode receive. Pada sistem half-duplex, kondisi ini menunjukkan DCE pada mode transmit. Setelah RTS diaktifkan, DCE harus mengaktifkan CTS sebelum memulai komunikasi.
CTS
Digunakan bersama dengan RTS untuk mengadakan handshaking antara DTE dan DCE. Setelah DCE menerima perintah RTS, hal ini menyebabkan CTS ON saat siap untuk memulai komunikasi.
2.3 Mikrokontroler AT89C51 Mikrokontroler adalah kombinasi CPU dengan memori, serta I/O yang berbentuk satu chip atau dikenal dengan SCM (Single Chip Microcomputer) yang merupakan suatu unit pengontrol yang sudah memenuhi sistem minimum komputer. Terdapat 2 macam memori yang memiliki sifat yang berbeda, yaitu: 1. Read Only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan catu
daya.
Dipakai
untuk
menyimpan
program.
Ketika
di-reset,
mikrokontroler akan langsung bekerja dengan program dalam ROM tersebut, sesuai dengan keperluannya. Dalam susunan IC mikrokontroler AT89C51 memori penyimpan program ini dinamakan sebagai Memory Program 2. Random Access Memory (RAM) isinya akan hilang atau terhapus ketika IC tidak mendapatkan catu daya. Dipakai untuk menyimpan data pada saat
Universitas Mercu Buana
11
program bekerja. Selain itu, RAM dipakai pula untuk Stack. RAM yang dipakai untuk menyimpan data ini disebut juga sebagai Memory Data
Keistimewaan dari IC mikrokontroler AT89C51 ini adalah: x
Sebuah CPU (Central Processing Unit) 8 bit yang termasuk keluarga MCS-51
x
Memiliki 4 KiloByte Reprogrammable flash Memory
x
Memiliki 128 Bytes Internal RAM
x
Maksimum frekuensi clock sampai 24MHz
x
Memiliki 32 Programmable I/O Lines
x
Memiliki dua 16 bit timer/counter
x
Memiliki 6 sumber interupsi
x
Memiliki sebuah port serial dengan kontrol serial full duplex UART
x
Kemampuan melaksanakan operasi perkalian, pembagian, dan operasi boolean (Bit)
Konfigurasi pin dan blok diagram dari mikrokontroler AT89C51 dapat dilihat pada Gambar 2.4 dan Gambar 2.5.
Gambar 2.4 Konfigurasi Pin AT89C51
Universitas Mercu Buana
12
Gambar 2.5 Blok Diagram IC AT89C51
2.3.1 Jalur Input/Output Mikrokontroler Mikrokontroler AT89C51 memiliki 32 jalur input/output yang terdiri dari 4 port parallel yaitu port 0, port 1, port 2 dan port 3. Adapun penjelasan dari masing–masing port adalah sebagai berikut: a. Port 0 Port 0 merupakan port parallel 8 bit open drain dua arah (bidirectional). Sebagaikeluaran setiap pin dapat dimasukan dengan 8
Universitas Mercu Buana
13
masukan TTL. Port 0 dapat juga dikonfigurasikan menjadi data bus atau alamat rendah yang dimultipleks selama akses ke eksternal program dan data memori. b. Port 1 Port 1 merupakan port parallel 8 bit dua arah (bidirectional) yang dapat digunakan untuk berbagai keperluan (general purpose) c. Port 2 Port 2 merupakan port parallel selebar 8 bit dua arah (bidirectional). Port 2 ini juga digunakan untuk mengirimkan byte alamat bila dilakukan pengaksesan memori eksternal. d. Port 3 Port 3 merupakan port parallel 8 bit dua arah yang memiliki fungsi pengganti. Fungsi pengganti meliputi TxD (Transmit Data), RxD (Receive Data), INT0 (Interrupt 0), INT1 (Interrupt 1), T0 (Timer 0), T1 (Timer 1), WR (Write), dan RD (Read). Bila fungsi pengganti ini tidak digunakan, port 3 dapat digunakan sebagai port parallel 8 bit serbaguna.
2.3.2 Timer/Counter Pada mikrokontroler AT89C51 terdapat 2 buah timer/counter 16 bit yang dapat diatur melalui perangkat lunak, yaitu timer/counter 0 dan timer/counter 1. Perioda waktu timer/counter secara umum ditentukan oleh persamaan berikut : 1. Sebagai timer/counter 8 bit T = (255 – TLx) x 1 siklus mesin
(2-1)
Dimana TLx adalah isi register TL0 atau TL1 2. Sebagai timer/counter 16 bit T = (65536 – THx TLx) x siklus mesin
(2-2)
THx = isi register TH0 atau TH1 TLx = isi register TL0 atau TL1
Universitas Mercu Buana
14
Pengontrol kerja timer/counter adalah register timer control (TCON). Adapun definisi dari bit-bit pada timer control adalah sebagai berikut : MSB
LSB
TF1
TR1 TF0 TR0 IE1 IT1 IE0 IT0
Gambar 2.6 Register Timer Control (TCON)
Ket : TF1 : Timer 1 overflow flag TR1 : Bit untuk menjalankan timer 1 TF0 : Timer 0 overflow flag TR0 : Bit untuk menjalankan timer 0 IE1 : Eksternal Interupt 1 edge flag IT1 : Interupt 1 control bit IE0 : Eksternal Interupt 0 edge byte IT0 : Interupt 0 control bit
Pengontrol pemilihan mode operasi timer/counter adalah register timer mode (TMOD) yang mana definisi bit-bitnya adalah sebagai berikut: MSB
LSB
GATE
C/T
M1
M0
GATE
C/T
M1
M0
Gambar 2.7 Register Timer Mode Operation (TMOD)
GATE C/T
: Gate harus diset 1 untuk mengaktifkan fungsi timer/counter : Pemilih fungsi timer atau counter. Clear (0) untuk operasi timer dengan masukan dari sistem clock internal. Set (1) untuk operasi counter dengan masukan pin T0 atau T1.
M1&M0
: bit pemilih mode timer kombinasi dari M1 dan M0
Universitas Mercu Buana
15
Tabel 2.4 Mode operasi timer M1
M0
MODE
OPERASI
0
0
0
Timer 13 bit
0
1
1
Timer / Counter 16 bit
1
0
2
Timer auto reload 8 bit TL0 adalah timer / counter 8 bit yang dikontrol oleh kontrol bit standar timer 0
1
1
3
TH0 adalah timer 8 bit dan dikontrol bit timer 1
2.3.3 Sistem Interupsi Pengetahuan mengenai interupsi sangat membantu mengatasi masalah pemrograman mikrokontroler dalam hal menangani banyak peralatan input/output. Saat kaki RESET pada IC mikrokontroler menerima sinyal reset Program Counter diisi dengan sebuah nilai, nilai tersebut dinamakan sebagai vektor reset (reset vector) yang merupakan nomor awal memoriprogram yang menampung program yang harus dijalankan. Pembahasan di atas memberi gambaran bahwa proses reset merupakan peristiwa perangkat keras (sinyal reset diumpankan ke kaki Reset) yang dipakai untuk mengatur kerja dari perangkat lunak, yakni menentukan aliran program prosesor (mengisi Program Counter dengan vektor reset). Program yang dijalankan dengan cara reset, merupakan program utama bagi prosesor. Peristiwa perangkat keras yang dipakai untuk mengatur kerja dari perangkat lunak tidak hanya terjadi pada proses reset, tapi terjadi pula dalam proses interupsi. Dalam proses interupsi, terjadinya sesuatu pada perangkat keras tertentu dicatat dalam flip-flop khusus, flip-flop tersebut sering disebut sebagai ‘petanda’ (flag), catatan dalam petanda tersebut diatur sedemikian rupa sehingga bisa merupakan sinyal permintaan interupsi pada prosesor.
Universitas Mercu Buana
16
Jika permintaan interupsi ini dilayani prosesor, Program Counter akan diisi dengan sebuah nilai. Nilai tersebut dinamakan sebagai vektor interupsi (interrupt vector), yang merupakan nomor awal memori-program yang menampung program yang dipakai untuk melayani permintaan interupsi tersebut. Program yang dijalankan dengan cara interupsi, dinamakan sebagai program layanan interupsi (ISR - Interrupt Service Routine). Saat prosesor menjalankan ISR, pekerjaan yang sedang dikerjakan pada program utama sementara ditinggalkan, selesai menjalankan ISR prosesor kembali menjalankan program utama, seperti yang digambarkan dalam Tabel 2.8
Gambar 2.8 Bagan Kerja Prosesor Melayani Interupsi
Sebuah prosesor bisa mempunyai beberapa perangkat keras yang merupakan sumber sinyal permintaan interupsi, masing-masing sumber interupsi dilayani dengan ISR berlainan, dengan demikian prosesor mempunyai beberapa vektor interupsi untuk memilih ISR mana yang dipakai melayani permintaan interupsi dari berbagai sumber. Kadang kala sebuah vektor interupsi dipakai oleh lebih dari satu sumber interupsi yang sejenis, dalam hal semacam ini ISR bersangkutan harus menentukan sendiri sumber interupsi mana yang harus dilayani saat itu. Jika pada saat yang sama terjadi lebih dari satu permintaan interupsi, prosesor akan melayani permintaan interupsi tersebut menurut perioritas yang sudah ditentukan, selesai melayani permintaan interupsi
Universitas Mercu Buana
17
perioritas yang lebih tinggi, prosesor melayani permintaan interupsi berikutnya, baru setelah itu kembali mengerjakan program utama. Saat prosesor sedang mengerjakan ISR, bisa jadi terjadi permintaan interupsi lain, jika permintaan interupsi yang datang belakangan ini mempunyai perioritas lebih tinggi, ISR yang sedang dikerjakan ditinggal dulu, prosesor melayani permintaan yang perioritas lebih tinggi, selesai melayani interupsi perioritas tinggi prosesor meneruskan ISR semula, baru setelah itu kembali mengerjakan program utama. Hal ini dikatakan sebagai interupsi bertingkat (nested interrupt), tapi tidak semua prosesor mempunyai kemampuan melayani interupsi secara ini. Seperti terlihat dalam Gambar 2.9 AT89C51 mempunyai 6 sumber interupsi, yakni Interupsi External (External Interrupt) yang berasal dari kaki INT0 dan INT1, Interupsi Timer (Timer Interrupt) yang berasal dari Timer 0 maupun Timer 1, Interupsi Port Seri (Serial Port Interrupt) yang berasal dari bagian penerima dan bagian pengirim Port Seri. Bit IE0 (atau bit IE1) dalam TCON merupakan petanda (flag) yang menandakan adanya permintaan Interupsi Eksternal. Ada 2 keadaan yang bisa meng-aktip-kan petanda ini, yang pertama karena level tegangan ‘0’ pada kaki INT0 (atau INT1), yang kedua karena terjadi transisi sinyal ‘1’ menjadi ‘0’ pada kaki INT0 (atau INT1). Pilihan bentuk sinyal ini ditentukan lewat bit IT0 (atau bit IT1) yang terdapat dalam register TCON. x
Kalau bit IT0 (atau IT1) =’0’ maka bit IE0 (atau IE1) dalam TCON menjadi ‘1’ saat kaki INT0=’0’.
x
Kalau bit IT0 (atau IT1) =’1’ maka bit IE0 (atau IE1) dalam TCON menjadi ‘1’ saat terjadi transisi sinyal ‘1’ menjadi ‘0’ pada kaki INT0. Menjelang prosesor menjalankan ISR dari Interupsi Eksternal, bit
IE0 (atau bit IE1) dikembalikan menjadi ‘0’, menandakan permintaan Interupsi Eksternal sudah dilayani. Namun jika permintaan Interupsi
Universitas Mercu Buana
18
Ekternal terjadi karena level tegangan ‘0’ pada kaki IT0 (atau IT1), dan level tegangan pada kaki tersebut saat itu masih =’0’ maka bit IE0 (atau bit IE1) akan segera menjadi ‘1’ lagi. Bit TF0 (atau bit TF1) dalam TCON merupakan petanda (flag) yang menandakan adanya permintaan Interupsi Timer, bit TF0 (atau bit TF1) menjadi ‘1’ pada saat terjadi limpahan pada pencacah biner Timer 0 (atau Timer 1). Menjelang prosesor menjalankan ISR dari Interupsi Timer, bit TF0 (atau bit TF1) dikembalikan menjadi ‘0’, menandakan permintaan Interupsi Timer sudah dilayani. Interupsi port seri terjadi karena dua hal, yang pertama terjadi setelah port seri selesai mengirim data 1 byte, permintaan interupsi semacam ini ditandai dengan petanda (flag) TI=’1’. Yang kedua terjadi saat port seri telah menerima data 1 byte secara lengkap, permintaan interupsi semacam ini ditandai dengan petanda (flag) RI=’1’. Petanda di atas tidak dikembalikan menjadi ‘0’ menjelang prosesor menjalankan ISR dari Interupsi port seri, karena petanda tersebut masih diperlukan ISR untuk menentukan sumber interupsi berasal dari TI atau RI. Agar port seri bisa dipakai kembali setelah mengirim atau menerima data, petanda-petanda tadi harus di-nol-kan lewat program. Petanda permintaan interupsi (IE0, TF0, IE1, TF1, RI dan TI) semuanya bisa di-nol-kan atau di-satu-kan lewat instruksi, pengaruhnya sama persis kalau perubahan itu dilakukan oleh perangkat keras. Artinya permintaan interupsi bisa diajukan lewat pemrograman, misalnya permintaan interupsi eksternal IT0 bisa diajukan dengan instruksi SETB IE0. Semua sumber permintaan interupsi yang di bahas di atas, masingmasing bisa di-aktip-kan atau di-nonaktip-kan secara tersendiri lewat bitbit yang ada dalam register IE (Interrupt Enable Register). Bit EX0 dan EX1 untuk mengatur interupsi eksternal INT0 dan INT1, bit ET0 dan ET1 untuk mengatur interupsi timer 0 dan timer 1, bit
Universitas Mercu Buana
19
ES untuk mengatur interupsi port seri, seperti yang digambarkan dalam gambar 2.8. Di samping itu ada pula bit EA yang bisa dipakai untuk mengatur semua sumber interupsi sekaligus. Setelah reset, semua bit dalam register IE bernilai ‘0’, artinya sistem interupsi dalam keadaan non-aktip. Untuk mengaktipkan salah satu sistem interupsi, bit pengatur interupsi bersangkutan diaktipkan dan juga EA yang mengatur semua sumber interupsi. Misalnya instruksi yang dipakai untuk mengaktipkan interupsi ekternal INT0 adalah SETB EX0 disusul dengan SETB EA. Saat AT89C51 menanggapi permintaan interupsi, Program Counter diisi dengan sebuah nilai yang dinamakan sebagai vektor interupsi, yang merupakan nomor awal dari memori-program yang menampung ISR untuk melayani permintaan interupsi tersebut. Vektor interupsi itu dipakai untuk melaksanakan inststuksi LCALL yang diaktipkan secara perangkat keras. Vektor interupsi untuk interupsi eksternal INT0 adalah $0003, untuk interupsi timer 0 adalah $000B, untuk interupsi ekternal INT1 adalah $0013, untuk interupsi timer 1 adalah $001B dan untuk interupsi port seri adalah $0023.
Gambar 2.9 Peta Memory Program
Universitas Mercu Buana
20
Jarak vektor interupsi satu dengan lainnya sebesar 8, atau hanya tersedia 8 byte untuk setiap ISR. Jika sebuah ISR memang hanya pendek saja, tidak lebih dari 8 byte, maka ISR tersebut bisa langsung ditulis pada memori-program yang disediakan untuknya. ISR yang lebih panjang dari 8 byte ditulis ditempat lain, tapi pada memori-program yang ditunjuk oleh vektor interupsi diisikan instruksi JUMP ke arah ISR bersangkutan. Masing-masing sumber interupsi bisa ditempatkan pada dua tingkatan perioritas yang berbeda. Pengaturan tingkatan perioritas isi dilakukan dengan bit-bit yang ada dalam register IP (Interrupt Priority). Bit PX0 dan PX1 untuk mengatur tingkatan perioritas interupsi eksternal INT0 dan INT1, bit PT0 dan PT1 untuk mengatur interupsi timer 0 dan timer 1, bit PS untuk mengatur interupsi port seri, seperti yang digambarkan dalam Gambar 2.9 Setelah reset, semua bit dalam register IP bernilai ‘0’, artinya semua sumber interupsi ditempatkan pada tingkatan tanpa perioritas. Masing-masing sumber interupsi bisa ditempatkan pada tingkatan perioritas utama dengan cara men-‘satu’-kan bit pengaturnya. Misalnya interupsi timer 0 bisa ditempatkan pada tingkatan perioritas utama dengan instruksi SETB PT1. Sebuah ISR untuk interupsi tanpa prioritas bisa diinterupsi oleh sumber interupsi yang berada dalam tingkatan perioritas utama. Tapi interupsi yang berada pada tingkatan perioritas yang sama, tidak dapat saling meng-interupsi. Jika 2 permintaan interupsi terjadi pada saat yang bersamaan, sedangkan kedua interupsi tersebut terletak pada tingkatan perioritas yang berlainan, maka interupsi yang berada pada tingkatan perioritas utama akan dilayani terlebih dulu, setelah itu baru melayani interupsi pada tingkatan tanpa perioritas. Jika kedua permintaan tersebut bertempat pada tingkatan perioritas yang sama, perioritas akan ditentukan dengan urutan sebagai berikut : interupsi eksternal INT0, interupsi timer 0, interupsi ekternal INT1, interupsi timer 1 dan terakhir adalah interupsi port seri.
Universitas Mercu Buana
21
Gambar
2.10
menggambarkan
sistem
interupsi
AT89C51
selangkapnya, berikut dengan masing-masing bit dalam register-register SFR (Special Function Register) yang dipakai untuk mengatur masingmasing sumber interupsi. Saklar yang digambarkan dalam Gambar 2.10 mewakili bit dalam register yang harus diatur untuk mengendalikan sumber interupsi, kotak bergambar bendera kecil merupakan flag (petanda) dalam register yang mencatat adanya permintaan interupsi dari masing-masing sumber interupsi. Kedudukan saklar dalam gambar tersebut menggambarkan kedudukan awal setelah AT89C51 di-reset.
Gambar 2.10 Bagan Lengkap Sistem Interupsi AT89C51
Universitas Mercu Buana
22
2.3.4 Port Serial Pada mikrokontroler AT89C51 terdapat dua cara pengiriman data seri yaitu sinkron dan asinkron. Transmisi data seri secara sinkron adalah pengiriman data dilakukan bersamaan dengan clock sedangkan transmisi data secara asinkron adalah pengiriman data tidak dilakukan bersamaan dengan clock, sehingga rangkaian penerima data harus membangkitkan sendiri clock pendorong data seri. Port seri pada mikrokontroler AT89C51 dapat bekerja dalam 4 mode, 1 mode bekerja secara sinkron dan 3 mode lainnya bekerja secara asinkron. Adapun keempat mode tersebut adalah sebagai berikut : 1 Mode 0 Mode ini bekerja secara sinkron, data seri dikirim dan diterima melalui kaki P3.0 (RxD), dan kaki P3.1 (TxD) dipakai untuk menyalurkan clock pendorong data seri. Data dikirim/diterima 8 bit sekaligus, dimulai dari bit yang bobotnya paling kecil (bit 0) dan diakhiri dengan bit yang bobotnya paling besar (bit 7). Kecepatan pengiriman data (baud rate) adalah 1/12 frekuensi osilator kristal. 2. Mode 1 Mode ini dan mode-mode berikutnya bekerja secara asinkron, data dikirim melalui kaki P3.1 (TxD) dan diterima melalui kaki P3.0 (RxD). Pada Mode 1 data dikirim/diterima 10 bit sekali gus, diawali dengan 1 bit start, disusul dengan 8 bit data yang dimulai dari bit yang bobotnya paling kecil (bit 0), diakhiri dengan 1 bit stop. Pada mikrokontroler AT89C51 yang berfungsi sebagai penerima bit stop ditampung pada RB8 dalam register SCON. Kecepatan pengiriman data (baud rate) bisa diatur sesuai dengan keperluan. Mode inilah yang umum dikenal sebagai UART (Universal Asynchronous Receiver/Transmitter). 3. Mode 2 Data dikirim/diterima 11 bit sekaligus, diawali dengan 1 bit start, disusul 8 bit data yang dimulai dari bit yang bobotnya paling kecil
Universitas Mercu Buana
23
(bit 0), kemudian bit ke 9 yang bisa diatur lebih lanjut, diakhiri dengan 1 bit stop. Pada mikrokontroler AT89C51 yang berfungsi sebagai pengirim bit 9 tersebut berasal dari bit TB8 dalam register SCON sedangkan yang berfungsi sebagai penerima bit 9 ditampung pada bit RB8 dalam register SCON, bit stop diabaikan tidak ditampung. Kecepatan pengiriman data (baud rate) bisa dipilih antara 1/32 atau 1/64 frekuensi osilator kristal. 4. Mode 3 Mode ini sama dengan Mode 2, hanya saja kecepatan pengiriman data (baud rate) bisa diatur sesuai dengan keperluan, seperti halnya Mode 1.
Register-register pada port seri terdiri dari SBUF (Serial Data Buffer) dan SCON (Serial Port Control Register). SBUF merupakan SFR (Special Function Register) yang terletak pada memori-data internal dengan nomor 99H. SBUF mempunyai kegunaan ganda, data yang disimpan pada SBUF akan dikirim keluar mikrokontroler lewat port seri, sedangkan data dari luar mikrokontroler yang diterima port seri diambil dari SBUF pula. Jadi meskipun hanya menempati satu nomor memori-data internal (nomor 99H), sesungguhnya SBUF terdiri dari 2 register yang berbeda. Adapun register SBUF dapat dilihat sebagai berikut :
Gambar 2.11 Register Serial Data Buffer (SBUF)
Sedangkan register SCON merupakan SFR (Special Function Register) yang terletak pada memori-data internal dengan nomor 98H yang merupakan register utama untuk mengatur kerja port seri. Setelah reset, semua bit dalam SCON bernilai ‘0’. Adapun gambar dari register
Universitas Mercu Buana
24
SCON dan penjelasan dari masing-masing bit ditunjukkan pada Gambar 2.12
Gambar 2.12 Register Serial Port Control (SCON) Bit SM0 dan bit SM1 (bit 7 dan bit 6 pada register SMOD) dipakai untuk menentukan mode kerja port seri. Setelah reset, kedua bit ini bernilai ‘0’. Bit REN (bit 4) dipakai untuk mengaktipkan kemampuan port seri menerima data. Pada mode 0 kaki RxD (kaki P3.0) dipakai untuk mengirim data seri (REN=’0’) dan juga untuk menerima data seri (REN=’1’). Sifat ini terbawa pula pada saat port seri bekerja pada mode 1, 2 dan 3, meskipun pada mode-mode tersebut kaki RxD hanya dipakai untuk mengirim data, agar kaki RxD bisa dipakai untuk menerima data terlebih dulu harus dibuat REN=’1’. Setelah reset bit REN bernilai ‘0’. Pada mode kerja 2 dan mode kerja 3, port seri bekerja dengan 9 bit data, SBUF yang kapasitasnya 8 bit tidak cukup untuk keperluan ini. Bit ke-sembilan yang akan dikirim terlebih dulu diletakkan di TB8 (bit 3), sedangkan bit RB8 (bit 2) merupakan bit yang dipakai untuk menampung bit ke-sembilan yang diterima port seri. Pada mode kerja 1, RB8 dipakai untuk menampung bit stop yang diterima, dengan demikian apa bila RB8 bernilai ‘1’ maka data diterima dengan benar, sebaliknya apa bila RB8=’0’ berarti terjadi kesalahan kerangka (framing error). Kalau bit SM2 (bit 5) bernilai ‘1’, jika terjadi kesalahan kerangka, RI tidak akan menjadi ‘1’ meskipun SBUF sudah berisi data dari port seri.Bit ke 9 ini bisa dipakai sebagai bit pariti, hanya
Universitas Mercu Buana
25
saja bit pariti yang dikirim harus ditentukan sendiri dengan program dan diletakkan pada TB8, dan bit pariti yang diterima pada RB8 dipakai untuk menentukan integritas data secara program pula. Tidak seperti dalam UART standar, semuanya itu dikerjakan oleh perangkat keras dalam IC UART. Bit TI (bit 1) merupakan petanda yang setara dengan petanda TDRE (Transmitter Data Register Empty) yang umum dijumpai pada UART standar. Setelah port seri selesai mengirim data yang disimpan kedalam SBUF, bit TI akan bernilai ‘1’ dengan sendirinya, bit ini harus dinol-kan dengan program agar bisa dipakai untuk memantau keadaan SBUF dalam pengiriman data berikutnya. Bit RI (bit 0) merupakan petanda yang setara dengan petanda RDRF (Receiver Data Register Full) yang umum dijumpai pada UART standar. Setelah SBUF menerima data dari port seri, bit RI akan bernilai ‘1’ dengan sendirinya, bit ini harus di-nol-kan dengan program agar bisa dipakai untuk memantau keadaan SBUF dalam penerimaan data berikutnya. Selain mengatur mode kerja dari port serial hal lain yang harus ditentukan pada transmisi data seri khususnya transmisi data seri asinkron adalah mengatur kecepatan transmisi data (Baud Rate). Kecepatan transmisi (Baud Rate) merupakan suatu hal yang amat penting dalam komunikasi data seri asinkron, mengingat dalam komunikasi data seri asinkron clock tidak ikut dikirimkan, sehingga harus diusahakan bahwa kecepatan transmisi mengikuti standar yang sudah ada. Dalam AT89C51, clock untuk transmisi data dibangkitkan dengan sarana Timer 1 seperti yang digambarkan dakan diagram Gambar 2.13 Untuk keperluan ini, Timer 1 dioperasikan sebagai 8 bit auto reload timer (mode 2), artinya TL1 bekerja sebagai timer 8 bit menerima clock dari osilator kristal yang frekuensinya sudah dibagi 12 terlebih dulu, setiap kali pencacah (counter) nilainya menjadi 0 maka nilai yang sebelumnya sudah disimpan di TH1 secara otomatis diisikan lagi ke TL1, sehingga TL1 akan menghasilkan clock yang frekuensinya diatur oleh TH1, clock ini
Universitas Mercu Buana
26
berikutnya dibagi lagi dengan 32 sebelum dipakai sebagai clock untuk UART. Hubungan frekuensi pada sistem tersebut dinyatakan dengan persamaan berikut : (2-3)
Kalau kecepatan transmisi sudah ditentukann dan frekuensi kristal sudah dipastikan, maka nilai yang disimpan di TH1 bisa dihitung berdasarkan persamaan berikut : (2-4)
Dalam persaman di atas, K adalah konstanta yang nilainya 1 atau 2, tergantung pada nilai yang tersimpan di bit SMOD dalam register PCON. Jika SMOD=’0’ K bernilai 1 dan K akan bernilai 2 kalau SMOD=’1’. Perlu dicacat, setelah AT89C51 di-reset, SMOD akan bernilai ‘0’, artinya jika tidak diatur lebih lanjut K bernilai 1. Untuk mendapatkan kecepatan transmisi yang umum dipakai dalam komunikasi data seri asinkron (1200 Baud, 2400 Baud, 4800 Baud, 9600 Baud dan 19200 Baud), dari persamaan di atas bisa diturunkan ternyata frekuensi kristal yang paling tepat adalah 11.059 MHz.
Gambar 2.13 Sistem Pembangkit Clock Untuk UART
2.3.5 Instruksi Mikrokontroler 2.3.5.1 Instruksi Transfer Data Kelompok instruksi ini digunakan untuk memindahkan data dari : x
Register ke register
x
Memori ke memori
Universitas Mercu Buana
27
x
Register ke memori
x
Antarmuka ke register
x
Antarmuka ke memori
Contoh: MOV A,R1: Pindahkan register R1 ke akumulator MOV A,@R1: Pindahkan isi memori yang alamatnya ditunjukkan oleh register R1 ke akumulator MOV A,P0:Pindahkan isi Port 0 ke akumulator Jadi pengiriman data dan pengambilan data dari suatu register, alamat/port dapat dilakukan dengan menggunakan intruksi MOV.
2.3.5.2 Instruksi Aritmatika Intruksi aritmatika meliputi penambahan (ADD), pengurangan (SUB), perkalian (MUL) dan pembgian (DIV). x
Penambahan (ADD) Penambahan ini akan menjumlahkan suatu data dengan isi akumulator dan hasilnya disimpan di dalam akumulator. Penambahan ini hanya melibatkan register akumulator. Penambahan ada dua macam, yaitu tanpa carry (ADD) atau penambahan dengan carry (ADC). ADD: (A) m (A) + data ADC: (A) m (A) + (C) + data
x
Pengurangan (SUB) Instruksi ini mengurangkan isi akumulator dengan isi carry flag dan hasilnya akan disimpan pada akumulator. SUB: (A) m (A) - (C) – data
x
Perkalian (MUL) Instruksi ini akan mengalikan isi akumulator dengan isi register B. MUL: (AB) m (A) x (B) Byte bawah hasil perkalian disimpan di dalam akumulator. Byte atas disimpan dalam register B.
Universitas Mercu Buana
28
x
Pembagian (DIV) Sama halnya dengan perkalian, pembagian juga melibatkan register B. isi register akumulator akan dibagi oleh isi register B. DIV: (AB)
m (A) : (B)
Akumulator akan berisi hasil bagi, sedangkan register B akan berisi sisa pembagian. x
Penambahan satu (INC) Proses increment merupakan penambahan satu pada isi suatu register atau memori. INC A : (A)
m (A) + 1
Pemakaian instruksi increment menghemat pemakaian memori karena instruksi INC merupakan instruksi 1 byte (tidak memakai operand). x
Pengurangan satu (DEC) Proses decrement merupakan kebalikan dari increment, yaitu mengurangkan satu dari isi suatu register atau memori. DEC R1 : (R1) m (R1) - 1 Pada instruksi ini, isi register R1 dikurangi satu dari hasilnya disimpan dalam register tersebut. Sama seperti INC, instruksi ini juga merupakan instruksi 1 byte.
2.3.5.3 Instruksi Logika x
Logika AND (ANL) Instruksi ini melakukan proses logika AND antara: suatu register dengan register, register dengan data, carry flag dengan isi suatu alamat bit, dan lain-lain.
x
Logika OR Logika ini melakukan proses logika OR antara suatu register dengan register, register dengan data, carry flag dengan isi suatu alamat bit, dan lain-lain.
Universitas Mercu Buana
29
x
Logika NOT Logika ini melakukan proses logika NOT pada suatu register, carry flag, atau isi suatu alamat bit, dan lain-lain.
2.3.5.4 Instruksi Percabangan (Branch) Instruksi ini akan melakukan percabangan ke suatu alamat. Instruksi ini terdiri dari dua bagian yaitu percabangan dengan syarat dan percabangan tanpa syarat. 1. Percabangan dengan syarat Instruksi percabangan dengan syarat yang biasanya dipakai adalah : x
CJNE Instruksi ini akan membandingkan isi register atau isi memori dengan suatu data. Bila sama maka instruksi akan menuju instruksi selanjutnya. Tetapi bila tidak sama instruksi akan lompat ke label yang dituju. CJNE R0, #03H, Mulai Contoh instruksi ini berarti jika R0 tidak sama dengan 03H maka instruksi akan lompat menuju label mulai.
x
DJNZ Instruksi ini akan mengurangi isi register atau isi memori dengan satu. Bila sudah 0, instruksi dilanjutkan ke label. Sebagai contoh : DJNZ R2, Ulang Ini berarti apabila R2 tidak sama dengan nol, maka setelah dikurangi 1, pelaksanaan instruksi harus melompat ke label ulang. Tetapi apabila R2 sama dengan nol maka pelaksanaan instruksi menuju instruksi selanjutnya.
x
JNB Instruksi ini akan menguji suatu alamat bit. Bila isinya 0, instruksi akan menuju label. Bila isinya 1, instruksi selanjutnya yang akan di eksekusi.
Universitas Mercu Buana
30
JNB TF0, Mulai Ini berarti bila TF0 (Timer 0 over flow flag ) = 0, instruksi akan menuju label mulai. 2. Percabangan Tanpa syarat Instruksi percabangan tanpa syarat ini meliputi SJMP (Short jump) dan LJMP (Long jump). Contoh : SJMP Start, maka eksekusi program akan menuju label start tanpa syarat apapun.
Universitas Mercu Buana
BAB 3 RANCANG BANGUN
3.1 Prinsip Kerja Sistem Prinsip kerja sistem secara keseluruhan yaitu dimulai dari pembacaan tombol yang ditekan pada keyboard (tombol ”W” untuk arah maju, tombol ”S” untuk arah mundur, tombol ”A” untuk belok kiri dan ”D” untuk belok kanan), yang dilakukan dengan perangkat lunak yang dibuat menggunakan Visual Basic, kemudian mengirimkan kode ASCII dari tombol yang ditekan ke mikrokontroler secara serial. Selanjutnya mikrokontroler akan menterjemahkan kode ASCII tersebut sebagai perintah untuk menggerakkan
mobil mainan dengan cara
mengirimkan melalui pemancar radio. Terakhir, radio penerima akan men-decode data yang diterima untuk menggerakkan roda kendali dan stir sesuai dengan data yang diterimanya. Untuk memonitor kondisi sekitar lingkungan mobil remote control dipadukan dengan kamera wireless sehingga dapat memantau kondisi lingkungan secara audio visual pada layar monitor PC.
Blok Diagram dan Fungsinya Secara keseluruhan, sistem pengendali mobil remote control ini terdiri atas beberapa bagian yang dapat digambarkan menjadi blok diagram pada Gambar 3.1
Gambar 3.1 Blok Diagram Sistem Keseluruhan
31 Universitas Mercu Buana
32
Secara keseluruhan, sistem dibagi menjadi empat bagian yaitu PC, Konverter RS232 , Mikrokontroler, Encoder dan Transmitter, Receiver dan Decoder, Driver dan motor. Setiap bagian terdiri atas komponen-komponen utama dan pendukungnya. 1) PC PC berfungsi sebagai pemberi perintah berupa penekanan tombol pada keyboard dan dapat melihat kondisi lingkungan di sekitar mobil mainan itu berada. 2) RS 232 RS 232 berfungsi untuk mengubah level PC ke level tegangan TTL agar data dari PC dapat diterima oleh mikrokontroler. 3) Mikrokontroler Mikrokontroler berfungsi untuk menterjemahkan kode ASCII yang dikirim dari PC kemudian mengubahnya menjadi data yang dapat dikirim melalui transmitter . 4) Encoder dan Transmitter Encoder dan Transmitter berfungsi untuk mengubah data digital menjadi frekuensi dan mengirimkannya melalui gelombang radio. 5) Decoder dan Receiver Decoder dan Receiver berfungsi untuk menerima sinyal gelombang radio dan mengubah frekuensi informasi yang diterima menjadi data yang dapat menggerakkan driver. 6) Driver Memberikan tegangan dan arus sesuai dengan data yang diterima sehingga dapat menggerakkan motor stir atau motor penggerak.
Universitas Mercu Buana
33
3.2 Perangkat Keras Perangkat keras secara keseluruhan dibuat dengan menggunakan komponen-komponen sesuai dengan fungsi dari blok-blok system yang digambarkan pada Gambar 3.1. Laptop sebagai kendali yang memberikan input kepada mikrokontroler secara serial melalui RS 232 sebagai penyesuai level logic PC dengan level TTL mikrokontroler, kontroler yang digunakan adalah IC AT89S51 yang memiliki 32 bit terminal I/O, transmitter remote control mobil mainan yang sudah jadi dengan mempelajari karakteristiknya sehingga dapat langsung
diberikan
sinyal
masukan
dari
mikrokontroler,
Gambar
3.2
memperlihatkan skematik diagram dari perangkat keras sistem.
Gambar 3.2 Skematik Diagram Perangkat Keras Sistem
Universitas Mercu Buana
34
3.3 Perangkat Lunak Perangkat lunak yang dibuat terdiri
atas dua perangkat lunak, yaitu
pemograman pada mikrokontroler dan pemrograman pada PC. 3.3.1 Pemrograman Mikrokontroler Pemrograman pada mikrokontroler dilakukan dengan membuat subrutin-subrutin sebagai berikut: inisialisasi port serial, pembanding data kode ASCII, dan pemberian data terhadap output. Algoritma pemrosesan data secara keseluruhan menggunakan mikrokontroler dapat digambarkan pada Gambar 3.3 Diagram alir program mikrokontroler .
Gambar 3.3 Diagram Alir Program Mikrokontroler
Universitas Mercu Buana
35
3.3.2 Pemrograman Pada PC Algoritma pemprosesan data pada perangkat lunak PC adalah sebagai berikut: pertama inisialisasi port serial PC yaitu mengatur baud rate, dan format data serialnya, serta inisialisasi buffer data, dan pembuatan tampilan awal. Setelah penginisialisasian, berikutnya membaca penekanan tombol
pada keyboard dan membandingkan dengan kode
ASCII yang diinginkan, selanjutnya mengirimkan kode ASCII tersebut ke kontroler secara serial Proses pengolahan data pada perangkat lunak komputer dapat digambarkan pada diagram alir Gambar 3.4.
Gambar 3.4 Diagram Alir Perangkat Lunak Pada PC
Universitas Mercu Buana
36
3.4 Format Data Serial Format data serial yang dikirimkan ke kontroler yaitu 1 byte dengan diawali start bit dan diakhiri dengan stop bit sesuai standar RS 232,
yang
diperlihatkan pada Gambar 3.5 berikut.
Gambar 3.5 Format Data Serial
3.5 Kamera Digital Wireless Agar dapat melakukan pemantauan lingkungan disekitarnya, mobil remote control dipadukan dengan kamera wireless. Gambar yang diperoleh dari kamera ini, dapat dijadikan sebagai feedback untuk operatornya. Gambar yang diambil dapat berupa foto maupun video, lalu disimpan di dalam hardisk komputer sesuai keperluan.
3.6 TV Tuner TV tuner berperan sebagai penghubung antara kamera dengan komputer sehingga komputer dapat menampilkan gambaran situasi lingkungan yang diambil oleh kamera secara real time.
Universitas Mercu Buana
BAB 4 PENGUJIAN DAN ANALISA SISTEM
4.1 Hasil Rancang Bangun Berdasarkan rancang bangun pada Bab 3, maka dibuatlah sistem secara keseluruhan, dan hasilnya pada Gambar 4.1 memperlihatkan perangkat keras, dan Gambar 4.2 memperlihatkan tampilan window perangkat lunaknya.
(a) Transmitter
(b) Receiver
Gambar 4.1 Perangkat Keras Sistem
Gambar 4.2 Tampilan Perangkat Lunak Sistem 37 Universitas Mercu Buana
38
4.2 Instalasi Software Software yang digunakan adalah ”Pengendali Mobil Remote Control” yang dibuat dengan pemrograman visual basic. Selain itu juga menggunakan software dari TV tuner yang sudah tersedia bersama produknya. 4.2.1 Software Pengendali Mobil Remote Control Berikut ini adalah cara instalasi software Pengendali
Mobil
Remote Control :
Gambar 4.3 Menu Instalasi Langkah Pertama
Pada menu instalasi yang ditunjukkan pada gambar diatas, Klik ”OK”. Maka akan muncul menu instalasi yang baru seperti pada gambar dibawah ini :
Gambar 4.4 Menu Instalasi Langkah Kedua
Klik ikon bergambar PC untuk melanjutkan proses instalasi. Lalu ikuti langkah selanjutnya sampai dengan selesai.
Universitas Mercu Buana
39
4.2.2 Software TV Tuner Setelah TV Tuner dihubungkan pada PC, lakukan proses instalasi program agar monitor pada PC dapat menampilkan gambaran lingkungan sekitar yang diambil oleh kamera wireless. Kemudian pasang alat penerima audio video. Berikut ini adalah cara instalasi software :
Gambar 4.5 Menu Instalasi Software TV Tuner
Pilih ”DirectX9.0” jika PC belum memiliki DirectX minimum versi 9.0. Setelah selesai menginstal DirectX9.0, pilih ”UTV380”, maka akan muncul menu baru. Pilih ”Instal APP” dan ikuti langkah selanjutnya. Setelah itu, lanjutkan dengan menginstal ”USB-Driver”, ikuti langkah selanjutnya sampai selesai. Setelah proses instalasi selesai, hubungkan alat penerima audio video ke TV tuner. Pemakaian software TV tuner ini sangat mudah karena cukup user-friendly dengan pemakainya. Untuk melakukan capture image ataupun recording video sudah disediakan dalam menu softwarenya. TV tuner yang dipakai pada tugas akhir ini hanyalah salah satu contoh, kita dapat menggunakan berbagai jenis dan merk yang lainnya.
Universitas Mercu Buana
40
4.3 Pengujian Setelah selesai proses rancang bangun, maka dilakukan serangkaian pengujian. Pengujian dilakukan secara software dan elektronik.
4.3.1 Pengujian secara software Pengujian secara software dilakukan dengan menggunakan fasilitas Hyper Terminal yang tersedia di sistem operasi Windows. Melalui Hyper Terminal ini dapat diketahui apakah tombol keyboard yang ditekan telah berfungsi sesuai dengan inisialisasi program pada mikrokontroler atau tidak. Hasil pengujian menggunakan Hyper Terminal pada Gambar 4.6 menunjukkan bahwa tombol-tombol pada keyboard yaitu tombol A, B, C, D yang digunakan untuk mengendalikan mobil remote control telah berfungsi dengan baik sesuai dengan program pada mikrokontroler.
Gambar 4.6 Pengujian Dengan Hyper Terminal
Selanjutnya pengujian dilakukan dengan menggunakan program visual basic. Tombol-tombol keyboard yang digunakan dirubah. Mobil remote control dipadukan dengan kamera dan TV tuner agar dapat melakukan fungsi pemantauan lingkungan karena menghasilkan feedback berupa audio visual bagi operatornya.
Universitas Mercu Buana
41
Gambar 4.7 Pengujian Dengan Visual Basic
Pengujian dengan program visual basic juga berjalan dengan baik. Tombol-tombol pada keyboard yaitu tombol W, S, D, A telah berfungsi dengan baik sesuai pemrograman dengan visual basic, dan arah pergerakan mobil remote control ditunjukkan pada sudut kanan atas software.
4.3.2 Pengujian secara elektronik Pengujian secara elektronik dilakukan berdasarkan gambar berikut:
Gambar 4.8 Blok Pengujian Secara Elektronik
Universitas Mercu Buana
42
Pengamatan pada TP1 :
Saat tombol A ditekan menghasilkan Frekuensi sebesar 4,808 kHz
Gambar 4.9 Pengukuran Pada TP1 Saat Tombol A Ditekan
Saat tombol B ditekan menghasilkan Frekuensi sebesar 3,205 kHz
Gambar 4.10 Pengukuran Pada TP1 Saat Tombol B Ditekan
Universitas Mercu Buana
43
Saat tombol C ditekan menghasilkan Frekuensi sebesar 3,205 kHz
Gambar 4.11 Pengukuran Pada TP1 Saat Tombol C Ditekan
Saat tombol D ditekan menghasilkan Frekuensi sebesar 2,405 kHz
Gambar 4.12 Pengukuran Pada TP1 Saat Tombol D Ditekan
Pengamatan pada TP2 : Setelah dilakukan pengujian pada TP2, bentuk gelombang yang dihasilkan pada TP2 adalah kebalikan dari bentuk gelombang pada TP1, dengan perincian sebagai berikut :
Universitas Mercu Buana
44
Gambar 4.13 Pengukuran Pada TP2 Saat Tombol A Ditekan
Gambar 4.14 Pengukuran Pada TP2 Saat Tombol B Ditekan
Gambar 4.15 Pengukuran Pada TP2 Saat Tombol C Ditekan
Universitas Mercu Buana
45
Gambar 4.16 Pengukuran Pada TP2 Saat Tombol D Ditekan
Pengamatan pada TP3 : Saat tombol A ditekan menghasilkan frekuensi sebesar 48.92 MHz
Gambar 4.17 Pengukuran Pada TP3 Saat Tombol A Ditekan
Universitas Mercu Buana
46
Saat tombol B ditekan menghasilkan frekuensi sebesar 49,08 MHz
Gambar 4.18 Pengukuran Pada TP3 Saat Tombol B Ditekan
Saat tombol C ditekan menghasilkan frekuensi sebesar 49,60 MHz
Gambar 4.19 Pengukuran Pada TP3 Saat Tombol C Ditekan
Universitas Mercu Buana
47
Saat tombol D ditekan menghasilkan frekuensi sebesar 49,70 MHz
Gambar 4.20 Pengukuran Pada TP3 Saat Tombol D Ditekan
Universitas Mercu Buana
BAB 5 KESIMPULAN
Berdasarkan pengujian secara software maupun elektronik, maka dapat disimpulkan sebagai berikut : 1. Pengendali mobil remote control ini dapat memantau situasi lingkungan sekitarnya dari jarak jauh secara real time melalui Personal Computer (PC) dengan program visual basic. 2. Bentuk gelombang input RS232 akan berbanding terbalik dengan outputnya. 3. Pemrograman visual basic memudahkan penggunaan alat ini dan memudahkan modifikasi program sesuai kebutuhan.
48 Universitas Mercu Buana
49
DAFTAR REFERENSI
Budiharto Widodo, M.Kom, S.Si, “Interfacing Komputer dan Mikrokontroler”, PT Elex Media Komputindo, Jakarta, 2004. MADCOMS, “Panduan Pemrograman dan referensi kamus Visual Basic 6.0”, Andi , Yogjakarta, 2006. Putra, Agfianto Eko, Belajar Mikrokontroler AT89C51/52/55 (Teori dan Aplikasi). Edisi pertama, Yogyakarta : Gava Media, 2002. Malik, Moh. Ibnu dan Anistardi, Bereksperimen Dengan Mikrokontroler 8031. Jakarta : PT. Elex Media Komputindo, 1997. Retna Prasetya, Catur Edi Widodo, “Intefacing Port Paralel dan Port Serial Dengan Visual Basic 6.0”, Andi , Yogyakarta, 2004. Suhata, ST, “VB Sebagai Pusat Kendali Peralatan elektronik”, PT Elex Media Komputindo, Jakarta, 2005.
Universitas Mercu Buana
50
LISTING PROGRAM MIKROKONTROLER ;================================================= ; Pengendali Mobil Remote Control ; Program pada mikrokontroler menggunakan ; Komunikasi serial dengan baud rate 9600 bps ;Agung Eka Putra ;================================================= ORG SJMP ORG SJMP START: MOV MOV MOV SETB SETB SETB MOV STOP: SJMP SERI_INT: JB terima CLR RETI TERIMA: MOV Accumulator CLR
0H START 23H SERI_INT TMOD,#20H TH1,#0FDH SCON,#52H TR1 ES EA P2,#0FFH
; timer 1 mode 2 ; baudrate 9600 bps ; mode 1 serial 8 bit baudrate variabel ; timer1 on ; serial interupt ; all interupt aktif
STOP RI,TERIMA ; cek RI, jika berlogic 1 maka lompat ke label TI ; kembali dari interrupt A,SBUF
; copy-kan data dari serial buffer ke
RI
CEKBACK: CJNE A,#'B',CEKFRONT ; apakah data di Accumulator = B CLR P2.0 ; BACK ON SETB P2.1 SETB P2.2 SETB P2.3 ACALL DELAY SETB P2.0 RETI CEKFRONT: CJNE CLR SETB SETB
A,#'A',CEKLEFT P2.1 P2.0 P2.2
Universitas Mercu Buana
51
SETB P2.3 ACALL DELAY SETB P2.1 RETI CEKLEFT: CJNE A,#'D',CEKRIGHT CLR P2.2 ; LEFT ON SETB P2.3 CLR P2.1 ACALL DELAY SETB P2.1 RETI CEKRIGHT: CJNE A,#'C',CEKBACK1 CLR P2.3 ; RIGHT ON SETB P2.2 ; LEFT OFF CLR P2.1 ACALL DELAY SETB P2.1 RETI CEKBACK1: CJNE A,#'b',CEKFRONT1 CLR P2.0 SETB P2.1 SETB P2.2 SETB P2.3 ACALL DELAY SETB P2.0 RETI CEKFRONT1: CJNE A,#'a',CEKLEFT1 CLR P2.1 SETB P2.0 SETB P2.2 SETB P2.3 ACALL DELAY SETB P2.1 RETI CEKLEFT1: CJNE A,#'d',CEKRIGHT1 CLR P2.2 SETB P2.3 CLR P2.1 ACALL DELAY SETB P2.1 RETI CEKRIGHT1: CJNE A,#'c',CEKOUT
Universitas Mercu Buana
52
CLR P2.3 SETB P2.2 CLR P2.1 ACALL DELAY SETB P2.1 RETI CEKOUT: MOV P2,#0FFH MOV P1,#0FFH RETI DELAY: MOV R4,#1 DELAY2: ACALL DELAY1 DJNZ R4,DELAY2 RET DELAY1: DJNZ R2,$ DJNZ R3,DELAY1 RET END
Universitas Mercu Buana
53
LISTING PROGRAM VISUAL BASIC Program pada form Utama Public digital As Byte Private Sub Form_LinkClose() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False Unload Me End If Unload Me End Sub Private Sub Form_Load() mnStatus.Enabled = False Text1.Visible = False End Sub Private Sub mnExit_Click() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False Unload Me End If Unload Me End Sub Private Sub text1_keypress(keyAscii As Integer) If MSComm1.PortOpen = True Then ' untuk maju If keyAscii = &H57 Then ' JIKA W besar MSComm1.Output = "A" Label1.Caption = "maju" Text1.Text = &HA ElseIf keyAscii = &H77 Then ' jika w kecil MSComm1.Output = "A" Label1.Caption = "maju" Text1.Text = &HA 'untuk mundur ElseIf keyAscii = &H53 Then ' jika S besar MSComm1.Output = "B" Label1.Caption = "mundur" Text1.Text = &HA ElseIf keyAscii = &H73 Then ' jika s kecil MSComm1.Output = "B" Label1.Caption = "mundur" Text1.Text = &HA
Universitas Mercu Buana
54
ElseIf keyAscii = &H41 Then ' jika A besar MSComm1.Output = "D" Label1.Caption = "kiri" Text1.Text = &HA ElseIf keyAscii = &H61 Then ' jika a kecil MSComm1.Output = "D" Label1.Caption = "kiri" Text1.Text = &HA ElseIf keyAscii = &H44 Then ' jika D besar MSComm1.Output = "C" Label1.Caption = "kanan" Text1.Text = &HA ElseIf keyAscii = &H64 Then ' jika d kecil MSComm1.Output = "C" Label1.Caption = "kanan" Text1.Text = &HA End If End If End Sub Private Sub mnSetting_Click() FormProperti.Show vbModal End Sub Public Sub Get_Disconnect() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End If mnConnect.Enabled = True mnDisconnect.Enabled = True StatusBar1.Panels("Status").Text = "Status : Disconnect" StatusBar1.Panels("Setting").Text = "Setting : COM" & MSComm1.CommPort & "," & MSComm1.Settings End Sub Public Sub Get_Connect() Dim i As Integer On Error GoTo Handle_Error MSComm1.PortOpen = True mnDisconnect.Enabled = True mnConnect.Enabled = True StatusBar1.Panels("Status").Text = "Status : Connect" StatusBar1.Panels("Setting").Text = "Setting : COM" & MSComm1.CommPort & "," & MSComm1.Settings Exit Sub Handle_Error:
Universitas Mercu Buana
55
MsgBox Error$, 48, "Konfirmasi Kesalahan Setting" Get_Disconnect End Sub Private Sub mnConnect_Click() If MSComm1.PortOpen = False Then MSComm1.PortOpen = True StatusBar1.Panels("Status").Text = "Status : Connect" Label1.Visible = True End If End Sub Private Sub mnDisconnect_Click() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False Get_Disconnect Label1.Visible = False End If End Sub
Program pada form Properti Private Sub Command1_Click() FormUtama.mnStatus.Enabled = True If FormUtama.MSComm1.PortOpen = True Then FormUtama.MSComm1.PortOpen = False End If FormUtama.MSComm1.CommPort = cbPort.ListIndex + 1 FormUtama.MSComm1.Settings = Trim$(cbBitsPerSecond.Text) & "," & Left$(cbParity.Text, 1) _ & "," & Trim$(cbDataBits.Text) & "," & Trim$(cbStopBits.Text) FormUtama.MSComm1.Handshaking = cbFlowControl.ListIndex FormUtama.Get_Disconnect FormUtama.StatusBar1.Panels("Status").Text = "Status : Disconnect" FormUtama.Text1.Visible = True Unload Me
Universitas Mercu Buana
56
End Sub Private Sub Command2_Click() Unload Me End Sub Sub Form_Load() Dim i As Integer, Settings As String, Offset As Integer ' Load Port Settings For i = 1 To 10 cbPort.AddItem "COM" & Trim$(Str$(i)) Next i ' Load Speed Settings cbBitsPerSecond.AddItem "600" cbBitsPerSecond.AddItem "1200" cbBitsPerSecond.AddItem "2400" cbBitsPerSecond.AddItem "4800" cbBitsPerSecond.AddItem "9600" cbBitsPerSecond.AddItem "14400" cbBitsPerSecond.AddItem "19200" cbBitsPerSecond.AddItem "28800" ' Load Data Bit Settings cbDataBits.AddItem "5" cbDataBits.AddItem "6" cbDataBits.AddItem "7" cbDataBits.AddItem "8" ' Load Parity Settings cbParity.AddItem "Even" cbParity.AddItem "Mark" cbParity.AddItem "None" cbParity.AddItem "Odd" cbParity.AddItem "Space" ' Load Stop Bit Settings cbStopBits.AddItem "1" cbStopBits.AddItem "1.5" cbStopBits.AddItem "2" 'Load Flow control setting cbFlowControl.AddItem "None" cbFlowControl.AddItem "Xon / Xoff" cbFlowControl.AddItem "RST" cbFlowControl.AddItem "Xon / RST"
Universitas Mercu Buana
57
' Set Default Settings Settings = FormUtama.MSComm1.Settings If InStr(Settings, ".") > 0 Then Offset = 2 Else Offset = 0 End If cbBitsPerSecond.Text = Left$(Settings, Len(Settings) - 6 - Offset) Select Case Mid$(Settings, Len(Settings) - 4 - Offset, 1) Case "e" cbParity.ListIndex = 0 Case "m" cbParity.ListIndex = 1 Case "n" cbParity.ListIndex = 2 Case "o" cbParity.ListIndex = 3 Case "s" cbParity.ListIndex = 4 End Select cbDataBits.Text = Mid$(Settings, Len(Settings) - 2 - Offset, 1) cbStopBits.Text = Right$(Settings, 1 + Offset) cbPort.ListIndex = FormUtama.MSComm1.CommPort - 1 cbFlowControl.ListIndex = Mid(FormUtama.MSComm1.Handshaking, 1, 1) End Sub
Universitas Mercu Buana
Features • Compatible with MCS-51™ Products • 8K Bytes of In-System Reprogrammable Flash Memory • • • • • • • •
– Endurance: 1,000 Write/Erase Cycles Fully Static Operation: 0 Hz to 24 MHz Three-Level Program Memory Lock 256 x 8-Bit Internal RAM 32 Programmable I/O Lines Three 16-Bit Timer/Counters Eight Interrupt Sources Programmable Serial Channel Low Power Idle and Power Down Modes
Description The AT89C52 is a low-power, high-performance CMOS 8-bit microcomputer with 8K bytes of Flash programmable and erasable read only memory (PEROM). The device is manufactured using Atmel’s high density nonvolatile memory technology and is compatible with the industry standard 80C51 and 80C52 instruction set and pinout. The on-chip Flash allows the program memory to be reprogrammed in-system or by a conventional nonvolatile memory programmer. By combining a versatile 8-bit CPU with Flash on a monolithic chip, the Atmel AT89C52 is a powerful microcomputer which provides a highly flexible and cost effective solution to many embedded control applications. (continued)
Pin Configurations
13 15 17 19 21 12 14 16 18 20 22
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
VCC P0.0 (AD0) P0.1 (AD1) P0.2 (AD2) P0.3 (AD3) P0.4 (AD4) P0.5 (AD5) P0.6 (AD6) P0.7 (AD7) EA/VPP ALE/PROG PSEN P2.7 (A15) P2.6 (A14) P2.5 (A13) P2.4 (A12) P2.3 (A11) P2.2 (A10) P2.1 (A9) P2.0 (A8)
INDEX CORNER
(RXD) (TXD) (INT0) (INT1) (T0) (T1)
P1.5 P1.6 P1.7 RST P3.0 NC P3.1 P3.2 P3.3 P3.4 P3.5
(AD0) (AD1) (AD2) (AD3)
(T2 EX) (T2)
68PLCC
P1.4 P1.3 P1.2 P1.1 P1.0 NC VCC P0.0 P0.1 P0.2 P0.3
(TXD) (INT0) (INT1) (T0) (T1)
P0.4 (AD4) P0.5 (AD5) P0.6 (AD6) P0.7 (AD7) EA/VPP NC ALE/PROG PSEN P2.7 (A15) P2.6 (A14) P2.5 (A13)
(WR) P3.6 (RD) P3.7 X TA L 2 X TA L 1 GND GND (A8) P2.0 (A9) P2.1 (A10) P2.2 (A11) P2.3 (A12) P2.4
(RXD)
33 32 31 30 29 28 27 26 25 24 23
1 2 3 4 5 6 7 8 9 10 11
(T2) P1.0 (T2 EX) P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST (RXD) P3.0 (TXD) P3.1 (INT0) P3.2 (INT1) P3.3 (T0) P3.4 (T1) P3.5 (WR) P3.6 (RD) P3.7 X TA L 2 X TA L 1 GND
6 4 2 44 42 40 1 5 3 4 3 4 13 9 7 8 38 9 37 10 36 11 35 12 34 13 33 14 32 15 31 16 30 1 7 1 9 2 1 2 3 2 5 2 72 9 18 20 22 24 26 28
(WR) P3.6 (RD) P3.7 X TA L 2 X TA L 1 GND NC (A8) P2.0 (A9) P2.1 (A10) P2.2 (A11) P2.3 (A12) P2.4
(AD0) (AD1) (AD2) (AD3)
(T2 EX) (T2)
P1.4 P1.3 P1.2 P1.1 P1.0 NC VCC P0.0 P0.1 P0.2 P0.3 44 42 40 38 36 34 43 41 39 37 35
P1.5 P1.6 P1.7 RST P3.0 NC P3.1 P3.2 P3.3 P3.4 P3.5
AT89C52
PDIP
PQFP/TQFP
INDEX CORNER
8-Bit Microcontroller with 8K Bytes Flash
P0.4 (AD4) P0.5 (AD5) P0.6 (AD6) P0.7 (AD7) EA/VPP NC ALE/PROG PSEN P2.7 (A15) P2.6 (A14) P2.5 (A13)
0313F-A–12/97
4-61
Block Diagram P0.0 - P0.7
P2.0 - P2.7
PORT 0 DRIVERS
PORT 2 DRIVERS
VCC
GND
RAM ADDR. REGISTER
B REGISTER
PORT 0 LATCH
RAM
PORT 2 LATCH
FLASH
STACK POINTER
ACC
BUFFER
TMP1
TMP2
PROGRAM ADDRESS REGISTER
PC INCREMENTER
ALU INTERRUPT, SERIAL PORT, AND TIMER BLOCKS
PROGRAM COUNTER
PSW
PSEN ALE/PROG EA / VPP
TIMING AND CONTROL
INSTRUCTION REGISTER
DPTR
RST PORT 1 LATCH
PORT 3 LATCH
PORT 1 DRIVERS
PORT 3 DRIVERS
OSC
P1.0 - P1.7
4-62
AT89C52
P3.0 - P3.7
ICL232
S E M I C O N D U C T O R
+5V Powered Dual RS-232 Transmitter/Receiver
December 1993
Features
Description
• Meets All RS-232C Specifications
The ICL232 is a dual RS-232 transmitter/receiver interface circuit that meets all ElA RS-232C specifications. It requires a single +5V power supply, and features two onboard charge pump voltage converters which generate +10V and -10V supplies from the 5V supply.
• Requires Only Single +5V Power Supply • Onboard Voltage Doubler/Inverter • Low Power Consumption • 2 Drivers - ±9V Output Swing for +5V lnput - 300Ω Power-off Source Impedance - Output Current Limiting - TTL/CMOS Compatible - 30V/µs Maximum Slew Rate
The drivers feature true TTL/CMOS input compatibility, slewrate-limited output, and 300Ω power-off source impedance. The receivers can handle up to +30V, and have a 3kΩ to 7kΩ input impedance. The receivers also have hysteresis to improve noise rejection.
• 2 Receivers - ±30V Input Voltage Range - 3kΩ to 7kΩ Input Impedance - 0.5V Hysteresis to Improve Noise Rejection
Ordering Information PART NUMBER
TEMPERATURE RANGE
PACKAGE
• All Critical Parameters are Guaranteed Over the Entire Commercial, Industrial and Military Temperature Ranges
ICL232CPE
0 C to +70 C
16 Lead Plastic DIP
ICL232CJE
0oC to +70oC
16 Lead Ceramic DlP
Applications
ICL232CBE
0oC to +70oC
16 Lead SOlC (W)
• Any System Requiring RS-232 Communications Port - Computer - Portable and Mainframe - Peripheral - Printers and Terminals - Portable Instrumentation - Modems - Dataloggers
ICL232lPE
-40oC to +85oC
Pinouts
o
o
o
o
o
o
-40 C to +85 C
ICL232lJE
-40 C to +85 C
ICL232lBE
o
o
-55 C to + 125 C
ICL232MJE
16 Lead Plastic DIP 16 Lead Ceramic DlP 16 Lead SOlC (W) 16 Lead Ceramic DlP
Functional Diagram ICL232 (PDIP, CDIP, SOIC) TOP VIEW C1+ 1 V+ 2
16 VCC
1
V+
2
C1-
3
C2+
4
C2-
5
V-
6
+5V TO +10V VOLTAGE DOUBLER
+10V TO -10V VOLTAGE INVERTER
16 VCC
15 GND
15 GND
C1- 3
14 T1OUT
C2+ 4
13 R1IN
C2- 5
12 R1OUT
V- 6
11 T1IN
T2OUT 7
10 T2IN
R2IN 8
C1+
9
14 T1OUT
5kΩ
13 R1IN R1 12 R1OUT T1 11 T1IN
VCC
R2OUT
400kΩ T2OUT
400kΩ
7
10 T2IN
T2 R2 R2IN
9
8
R2OUT
5kΩ
CAUTION: These devices are sensitive to electrostatic discharge. Users should follow proper I.C. Handling Procedures. Copyright
© Harris Corporation 1993
11-8
File Number
3020.2
Specifications ICL232 Absolute Maximum Ratings
Thermal Information
VCC to Ground . . . . . . . . . . . . . . . . . . . . . . .(GND -0.3V)
Thermal Resistance θJA θJC Ceramic DIP Package . . . . . . . . . . . . . . . 80oC/W 24oC/W Plastic DIP Package . . . . . . . . . . . . . . . . 100oC/W SOIC Package. . . . . . . . . . . . . . . . . . . . . 100oC/W Maximum Power Dissipation. . . . . . . . . . . . . . . . . . . . . . . . . 250mW Operating Temperature Range ICL232C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0oC to +70oC ICL232I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -40oC to +85oC ICL232M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -55oC to +125oC
CAUTION: Stresses above those listed in “Absolute Maximum Ratings” may cause permanent damage to the device. This is a stress only rating and operation of the device at these or any other conditions above those indicated in the operational sections of this specification is not implied.
Electrical Specifications
Test Conditions: VCC = +5V ±10%, TA = Operating Temperature Range. Test Circuit as in Figure 8 Unless Otherwise Specified LIMITS
PARAMETER
TEST CONDITIONS
MIN
TYP
MAX
UNITS
Transmitter Output Voltage Swing, TOUT
T1OUT and T2OUT loaded with 3kΩ to Ground
±5
±9
±10
V
Power Supply Current, ICC
Outputs Unloaded, TA = +25oC
-
5
10
mA
TIN, Input Logic Low, VlL
-
-
0.8
V
TIN, Input Logic High, VlH
2.0
-
-
V
-
15
200
µA
-30
-
+30
V
3.0
5.0
7.0
kΩ
0.8
1.2
-
V
-
1.7
2.4
V
0.2
0.5
1.0
V
Logic Pullup Current, IP
T1IN, T2IN = 0V
RS-232 Input Voltage Range, VIN Receiver Input Impedance, RIN
VIN = ±3V
Receiver Input Low Threshold, VlN (H-L)
VCC = 5.0V, TA = +25oC
Receiver Input High Threshold, VIN (L-H)
o
VCC = 5.0V, TA = +25 C
Receiver Input Hysteresis, VHYST TTL/CMOS Receiver Output Voltage Low, VOL
IOUT = 3.2mA
-
0.1
0.4
V
TTL/CMOS Receiver Output Voltage High, VOH
IOUT = -1.0mA
3.5
4.6
-
V
Propagation Delay, tPD
RS-232 to TTL
-
0.5
-
µs
o
Instantaneous Slew Rate, SR
CL = 10pF, RL = 3kΩ, TA = +25 C (Notes 1, 2)
-
-
30
V/µs
Transition Region Slew Rate, SRT
RL = 3kΩ, CL = 2500pF Measured from +3V to -3V or -3V to +3V
-
3
-
V/µs
Output Resistance, ROUT
VCC = V+ = V- = 0V, VOUT = ±2V
300
-
-
Ω
RS-232 Output Short Circuit Current, ISC
T1OUT or T2OUT shorted to GND
-
±10
-
mA
NOTES: 1. Guaranteed by design. 2. See Figure 4 for definition.
11-9