TUGAS AKHIR
Diajukan untuk memenuhi salah satu syarat
Memperoleh gelar Sarjana Teknik pada
Program Studi Teknik Elektro
Fakultas Teknik Universitas Sanata Dharma
VIRGINIA DEWI RAMBUNG
NIM : 00 5114 095
PROGRAM STUDI TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
FINAL PROJECT
In partial fulfillment of the requirements
for the Degree SARJANA TEKNIK
Electrical Engineering Study Program
VIRGINIA DEWI RAMBUNG
00 5114 095
ELECTRICAL ENGINEERING STUDY PROGRAM
ELECTRICAL ENGINEERING DEPARTMENT
ENGINEERING FACULTY
SANATA DHARMA UNIVERSITY
“ Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam daftar pustaka, sebagai layaknya suatu karya ilmiah.”
Yogyakarta, Februari 2007
Penulis
Sidere Mens Eadem Mutato
Star Mind Although Change
Walaupun bintang-bintang berubah tetapi buah pikiran dalam
skripsi ini tidak berubah
Non Scholae Sed Vitae Discimus
Kita belajar bukan demi sekolah melainkan demi kehidupan
This Thesis is dedicated to:
Bapeng, Didi, Kak Ryan,Kak Charles,
Bang Vicki and My Lovely Checa .
“Having you all is the greatest gift that God has given to me”
pemilik kendaraan dengan busnya. Mode monitoring menggunakan kabel dengan informasi yang dikirim dan diterima mengenai kapasitas penumpang pada bus.
Alat ini terbagi atas dua bagian yaitu monitoring pada bus dan monitoring pada pol. Monitoring pada bus terdiri atas 3 bagian yaitu piranti masukan dari sensor, sebuah piranti pemroses mikrokontroler AT89S51 dan piranti keluarannya berupa tampilan seven segment dua digit sedangkan monitoring pada pol terdiri atas sebuah piranti pemroses mikrokontroler AT89S51 dan piranti keluaran berupa tampilan seven segment empat digit. Pada saat alat dijalankan, setiap ada penumpang yang naik maka data di bus dan data di pol akan bertambah satu. Sedangkan jika ada penumpang yang turun maka data di bus akan berkurang satu tetapi data jumlah penumpang yang ada di pol tidak berubah.
Data maksimum dalam bus 60 penumpang dan data maksimum untuk sistem
monitoring di pol 9.999 penumpang dalam satu hari yang akan ditampilkan di seven segment.
Kata kunci : Monitoring, Tampilan Seven Segment, Aplikasi Mikrokontroler AT89S51
through remote monitoring between the bus owner and his bus. The monitoring mode is by using cables with information which is sent and which is received about the passenger capacity of the bus.
This device is divided in two parts, i.e. monitoring device on the bus and monitoring device at the pool. The monitoring device on the bus consists of three parts; they are: input software of sensor, a processor software of AT89S51 Microcontroller and output software in the seven segment two digit display; while the monitoring device at the pool consists of the one processor software AT89S51 Microcontroller and the output is in the form of seven segment four digit display. When the device is being operated, whenever there is one passenger who is getting on board (on the bus) then the data in the bus and in the pool is added by one. On the other hand, a different case will happen that when one passenger is getting of the bus then data in the bus will be reduced by one, but the data about the number of passenger in the pool does not change.
The maximum data in a bus with 60 passengers and the maximum data for passengers monitoring system in the pool 9.999 passengers in one day will be displayed in the seven segment .
Key Words: Monitoring, Seven Segment Display, AT89S51 Microcontroller Application
sekaligus menyenangkan ini. Tugas akhir ini merupakan salah satu syarat bagi penulis untuk meraih gelar Sarjana Teknik pada Jurusan Teknik Elektro, Fakultas Teknik, Universitas Sanata Dharma. Penulisan skripsi ini didasarkan pada apa yang penulis peroleh, mulai dari studi literatur, perancangan, simulasi program pada komputer dengan
software Pinnacle, pembuatan alat sampai pada pengujian alat yang diajukan dan juga kemungkinan pengembangannya.
Pada kesempatan ini, tak lupa penulis ingin mengucapkan limpah terima kasih kepada semua pihak yang telah banyak membantu penulis, antara lain kepada:
1. Jesus Christ, menara dan bentengku. Thanks for guiding me in every step of my life and my journey, thanks for giving me blessing and unconditional love.
2. Bunda Maria…It’s so nice to have someone who always gonna be there for me. Thanks for being that person. Thanks also for listening me.
3. Bapak Ir. Iswanjono, MT (selaku dosen pembimbing I) dan juga Bapak Damar Wijaya, ST, MT (selaku dosen pembimbing II) atas segala bantuan, saran, ide, pemikiran dari awal hingga selesainya Tugas Akhir ini.
4. Seluruh jajaran dosen Elektro, laboran, semua staf dan karyawan yang telah banyak membantu penulis selama menjadi mahasiswa. Terimakasih juga karena bersedia meminjamkan beberapa perangkat kepada penulis.
5. Bapeng, Didi, Kak Ryan, dan Kak Charles.Thanks for funding my education and my life until now. I won’t be here if there are no you. Thanks for all.
6. Yang_Vicky@Tuing_tuing, thanks for your love, your great cares and excellent support. I’m so sorry if I always hurt you. But you must trust me, you are the one that I love and that I need.You are so special in my heart.
7. My first Checa. Thanks for your life in my life.You make me feeling almost perfect.
8. In memorian : NB and NM2. If you’re able to see me now, you must be proud to me.
last forever!
11. My old friends and my true friends: Ria Hitachi, Defa, Susan, Lilis, Eva, Tomycho, Tin, Indah, Dida, Yani, Yuyun and so many of you whatever you are. 12. Teman-teman #1 AP Dancer: Come one, guys…!!!Thanks for your attention in
my life.Go…go..go..and shake the world with your move!
13. Rekan-rekan kuliahku : Maknyak Eny dan Onsa, Elcy, Nika, Lucky, Wahyu W, Marsel, Iung, Agus, Titus, Danang, Bowo, Maya, and all electro-mate. I love all the times with you, guys!
14. Teman-teman Kost Wisma Putri Mawar especially Tina. Thanks for all joyful and madness. Do your best, gals! Trust you heart and fight for your dreams!
Penulis menyadari bahwa dalam skripsi ini masih terdapat banyak kekurangan, oleh karena itu segala kritik, saran dan koreksi yang membangun akan penulis terima dengan senang hati. Terima kasih!
Yogyakarta, Februari 2007 Penulis
LEMBAR PENGESAHAN PEMBIMBING ... iii
LEMBAR PENGESAHAN PENGUJI ... iv
LEMBAR PERNYATAAN KEASLIAN KARYA... v
HALAMAN PERSEMBAHAN DAN MOTO HIDUP... vi
INTISARI ... vii
ABSTRACT... viii
KATA PENGANTAR ... ix
DAFTAR ISI... xi
DAFTAR GAMBAR ... xiii
DAFTAR TABEL... xiv
DAFTAR LAMPIRAN... xv
BAB I. PENDAHULUAN 1.1. Judul... 1
1.2. Latar Belakang Masalah ... 1
1.3. Tujuan dan Manfaat ... 2
1.4. Batasan Masalah ... 2
1.5. Metodologi Penelitian ... 3
BAB II. DASAR TEORI 2.1. Mikrokontroler AT89S51 ... 4
2.1.1. Timer dan Counter dalam Mikrokontroler AT89S51 ... 4
2.1.1.1. Timer Mode Register (TMOD) ... 5
2.1.1.2. Timer Control Register Timer 0 dan 1 ... 6
2.1.1.3. THx dan TLx... 6
2.1.2. Komunikasi Serial... 7
2.1.2.1. Pengertian dan fungsi komunikasi serial ... 7
2.1.2.2. Mode Komunikasi Serial ... 8
2.1.2.3. 8-Bit Shift Register (Mode 0) ... 9
2.1.2.4. 8-Bit UART (Mode 1) ... 10
2.1.2.7. Baud Rate Komunikasi Serial ... 12
2.2. Sensor... 13
2.2.1. Infrared Emitting Diode ... 13
2.2.2. Sensor Fototransistor ... 14
2.2.3. Pengkondisi Sinyal... 16
2.3. Display atau Alat Penampil ... 17
2.3.1. LED (Light Emitting Diode)... 17
2.3.2. Rangkaian Penampil Seven Segment... 18
2.3.3. BCD to Seven Segment Decoder... 20
BAB III. RANCANGAN PENELITIAN 3.1. Perancangan Perngkat Keras... 21
3.1.1. Alat Monitoring Pada Bus ... 22
3.1.2. Alat Monitoring Pada Pol ... 24
3.2. Perancangan Perangkat Lunak ... 25
3.2.1. Perangkat Lunak Pada Alat Monitor di Bus ... 25
3.2.2. Perangkat Lunak Pada Penerimaan di Pol ... 28
BAB IV. PEMBAHASAN 4.1. Pembahasan Pada Alat ... 33
4.2. Pembahasan Pada Sensor ... 34
4.3. Pembahasan Pada Mikrokontroler ... 36
4.4. Pembahasan Pada Komunikasi Serial ... 38
BAB V. KESIMPULAN DAN SARAN 5.1. Kesimpulan ... 40
5.2. Saran ... 40
DAFTAR PUSTAKA ... 41 LAMPIRAN
Gambar 2.2. Register TCON... 6
Gambar 2.3. Diagram Blok Serial Port... 8
Gambar 2.4. Serial Port Transmit Timming ... 10
Gambar 2.5. Serial Port Receive Timming... 10
Gambar 2.6. Pengiriman Data Mode 1 ... 11
Gambar 2.7. Rangkaian Dioda Infrared... 13
Gambar 2.8. Skema fototransistor ... 14
Gambar 2.9. Simbol fototransitor ... 15
Gambar 2.10. Rangkaian dasar fototransistor... 15
Gambar 2.11. Transistor penguat... 16
Gambar 2.12. Schmitt Trigger... 17
Gambar 2.13. LED... 17
Gambar 2.14. Rangkaian guna menyalakan LED... 18
Gambar 2.15. Untai common anode dan common catode... 19
Gambar 2.16. Penampil seven segment... 19
Gambar 3.1. Diagram Blok Alat Monitoring Pada Bus... 21
Gambar 3.2. Diagram Blok Alat Monitoring Pada Pol... 21
Gambar 3.3. Rangkaian Sensor Pada Bus... 22
Gambar 3.4. Rangkaian Penampil Pada bus ... 24
Gambar 3.5. Rangkaian Penampil Pada Pol ... 25
Gambar 3.6. Diagram alir Monitoring Pada Bus ... 26
Gambar 3.7. Program Utama Alat Monitoring Pada Pol ... 29
Gambar 3.8. Rutin Interupsi Serial ... 30
Gambar 4.1. Kenaikan Jumlah Penumpang di Bus ... 33
Gambar 4.2. Kenaikan Jumlah Penumpang di Pol ... 33
Gambar 4.3. Test Point Pada Rangkaian Sensor Penumpang Masuk... 35
Gambar 4.4. Hasil akhir alat ... 37
Gambar 4.5. Sinyal Komunikasi Serial ... 38
Tabel 2.1. Mode operasi pemilih Timer/counter AT89S51 ... 5
Tabel 2.2. Register SCON ... 7
Tabel 2.3. Mode Komunikasi Serial ... 9
Tabel 2.4. Baud Rate Komunikasi Serial... 13
Tabel 2.5. Kebenaran Seven Segment... 20
Tabel 4.1. Hasil Counter Up/ Down di Bus dan di Pol... 34
Tabel 4.2 Hasil Pengukuran Tegangan dan Perhitungan Error pada Rangkaian Sensor Penumpang Masuk………... 35
Lampiran 2. Hasil Compile Program Pada Pol ... L2 Lampiran 3. Gambar Rangkaian Pada Bus ... L3 Lampiran 4. Gambar Rangkaian Penerima di Pol ... L4 Lampiran 5. Data-sheet AT89S51 ... L5 Lampiran 6. Data-sheet SN74lS47 ... L33 Lampiran 7. Data-sheetSeven Segment... L47 Lampiran 7. Data-sheetMM74HC14... L56
1.1 Judul
Sistem Monitoring Jumlah Penumpang Bus berbasis Mikrokontroler AT89S51.
(The Monitoring System on The Number of Bus Passengers Based on AT89S51 Microcontroller).
1.2 Latar Belakang Masalah
Perkembangan teknologi saat ini sangat pesat, hal ini dibuktikan dengan adanya berbagai temuan baru yang berfungsi untuk membantu dan mempermudah manusia dalam melaksanakan aktivitasnya sehari-hari. Salah satu pengembangan yang dilakukan saat ini adalah membuat sistem monitoring dari jarak jauh antara pemilik kendaraan dengan busnya. Dikembangkannya sistem ini karena belum adanya alat pengontrol penumpang bus, yang mengakibatkan pemilik atau pengelola bus kesulitan dalam mengontrol jumlah penumpang yang naik pada bus.
Mode monitoring menggunakan kabel dengan informasi yang dikirim dan diterima mengenai kapasitas penumpang pada bus. Penggunaan kabel sebagai media komunikasi karena pada tugas akhir ini masih merupakan prototype yang masih dapat dikembangkan lagi.
Sistem monitoring jumlah penumpang yang ada pada bus menggunakan mikrokontroler AT89S51 sebagai pengendali utamanya. Pada pintu naik dipasang
mendeteksi karcis tiap penumpang yang naik dan pada pintu turun dipasang
sensor infrared untuk mendeteksi banyaknya penumpang yang turun.
Dalam tugas akhir ini, dibuatlah suatu sistem monitoring jumlah penumpang bus berbasis mikrokontroler AT89S51.
1.3 Tujuan
Tujuan yang akan dicapai dari Sistem Monitoring Jumlah Penumpang Bus Berbasis mikrokontroler AT89S51 ini adalah menghasilkan suatu sistem yang dapat memberi informasi kepada pemilik atau pengelola bus, mengenai jumlah penumpang yang naik pada bus, sehingga mempermudah pengontrolan.
1.4 Batasan Masalah
a. Menggunakan Mikrokontroler AT89S51 sebagai pengendali utama. Menggunakan sensor infrared sebagai alat pendeteksi karcis dan penumpang yang turun. Seven segment dua digit digunakan sebagai penampil keluaran yang menampilkan jumlah penumpang pada bus.
b. Media transmisi yang digunakan adalah kabel dengan mode komunikasi satu arah (simplex).
c. Maksimum penumpang dalam bus enam puluh (60) orang dan maksimum penumpang untuk sistem monitoring pol 9.999 penumpang dalam satu hari yang akan ditampilkan di seven segment.
1.5 Metodologi Penelitian
Dalam perancangan alat ini, penelitian dilakukan dengan cara : 1. Studi literatur dan serangkaian percobaan di laboratorium. 2. Simulasi program pada komputer dengan softwarePinnacle. 3. Mempelajari cara kerja dan menganalisis rangkaian.
Sistematik tugas akhir ini adalah : BAB I PENDAHULUAN
Memuat latar belakang masalah, tujuan dan manfaat penelitian, batasan masalah dan metodologi penelitian.
BAB II DASAR TEORI
Memuat dasar teori untuk mendukung rancangan. BAB III PERANCANGAN
Memuat perancangan perangkat keras dan perangkat lunak beserta implementasinya.
BAB IV PEMBAHASAN
Memuat hasil pengamatan dan pembahasan. BAB V KESIMPULAN DAN SARAN
2.1 Mikrokontroler AT89S51
Mikrokontroler AT89S51 merupakan mikrokontroler buatan Atmel
yang menguasai teknologi pembuatan FPEROM (Flash Programmable and
Erasable Read Only Memory). FPEROM merupakan ROM (Read Only
Memory) yang dapat dihapus dan ditulis kembali dengan teknologi flash.
Kelebihan flash ini adalah mikrokontroler dapat menyimpan program secara
internal, dan tidak membutuhkan ROM eksternal. AT89S51 memiliki 4 kBytes
FPEROM, 256 Bytes RAM, 32 jalur I/O (Input/Output), dan dua 16-bit
timers/counters.
2.1.1. Timer dan Counter dalam Mikrokontroler AT89S51
Mikrokontroler AT89S51 dilengkapi dengan dua buah timer/counter,
yaitu timer 0 dan timer 1. Pencacah timer/counter AT89S51 merupakan
pencacah biner naik (count-up binary counter) yang mencacah dari 0000h
sampai FFFFh. Saat kondisi pencacah berubah dari FFFFh kembali ke 0000h
akan timbul sinyal limpahan (overflow).
Masing-masing timer juga dapat berfungsi sebagai counter. Pada saat
sebagai timer, register naik satu (increment) setiap satu siklus mesin. Pada saat
sebagai counter, register naik satu (increment) pada saat transisi dari 1 ke 0
dari masukan eksternal, T0 dan T1.
2.1.1.1 Timer Mode Register (TMOD)
Penggunaan register TMOD yang ditunjukkan pada Gambar 2.1 adalah
untuk mengatur kerja Timer 0 dan Timer 1.
Register TMOD terbagi atas dua yaitu, bit 0 sampai 3 (TMOD.0
sampai TMOD.3) untuk mangatur kerja Timer 0, sedangkan bit 4 sampai 7
(TMOD.4 sampai TMOD.7) untuk mengatur kerja Timer 1. Register TMOD
merupakan register yang tidak bit addressable. Bit addressable adalah suatu
blok ruang memori yang bisa teralamati setiap bit.
GATE C/T M1 MO GATE C/T M1 M0
Timer1 Timer 0
Gambar 2.1. Register TMOD
GATE: Jika GATE = 1, maka timer/counter “x” aktif bila pin INTx high dan pin TRx juga high.
Jika GATE = 0, maka timer/counter “x” aktif jika hanya pin TRx
high.
C/T : low untuk fungsi timer dan high untuk fungsi counter.
Tabel 2.1 Mode operasi pemilih Timer/counter AT89S51
M1 M0 MODE Operasi
0 0 0 Timer/counter 13-bit
0 1 1 Timer/counter 16-bit
1 0 2 Timer/counter 8-bit isi ulang (auto reload)
M1 dan M0: pemilih mode timer/counter (Mode 0 sampai Mode 3) yang konfigurasinya dapat dilihat pada tabel 2.1
2.1.1.2 TimerControlRegisterTimer 0 dan 1
TCON merupakan bit addressable sehingga bisa diatur setiap bitnya
(dengan instruksi SETB atau CLR). Register TCON yang ditunjukan pada
gambar 2.2, berisi pengaturan timer dan interupsi eksternal sekaligus dalam 1
byte.
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Timer Interupsi
Gambar 2.2. Register TCON
Jika dalam pemrograman tidak memakai interupsi eksternal, maka IE
dan IT dapat diabaikan (diset ‘0’).
TR1 dan TR0 : pengatur aktif dan nonaktif timer / counter.
TF1 dan TF0 : penampung bit limpahan (overflow) timer/counter. IE1 dan IE0 : tanda (flag) interupsi eksternal.
IT1 dan IT0 : menentukan pen-trigger-an interupsi eksternal.
2.1.1.3 THx dan TLx
Pengaksesan timer masing-masing memerlukan dua register 8-bit.
Timer 0 melalui TH0 (Timer 0 High Byte) dan TL0 (Timer 0 Low Byte),
sedangkan timer 1 melalui TH1 (Timer 1 High Byte) dan TL1 (Timer 1 Low
2.1.2 Komunikasi Serial
2.1.2.1 Pengertian dan fungsi komunikasi serial
Komunikasi serial pada mikrokontroler AT89S51 melalui dua kaki yaitu TXD dan RXD. Juga tersedia register yang khusus menangani
komunikasi serial yaitu special function register yang dinamakan SCON dan
SBUF.
SCON merupakan serial control register yang berada di alamat
memori 98H dan merupakan bit addressable register yang terdiri dari bit-bit
control dan status. Bit-bit control inilah yang mengendalikan mode operasi
komunikasi serial sedangkan bit-bit status merupakan indikator yang
menandakan suatu operasi pengiriman atau penerimaan data selesai dilakukan.
Adapun keterangan dari register SCON dapat dilihat pada tabel 2.2.
Tabel 2.2 Register SCON
BIT SIMBOL ADDRESS BIT DESCRIPTION
SCON.7 SM0 9FH Serial Port Mode Bit 0
SCON.6 SM1 9EH Serial Port Mode Bit 1
SCON.5 SM2 9DH Serial Port Mode Bit 2
SCON.4 REN 9CH Receive Enable
SCON.3 TB8 9BH Transmit Bit 8
SCON.2 RB8 9AH Receive Bit 8
SCON.1 TI 99H Transmit Interrupt Flag
SCON.0 RI 98H Transmit Interrupt Flag
SBUF merupakan serial buffer berada yang berada di alamat memori
sementara data yang akan dikirim melalui TXD (write only) dan register yang
menampung sementara data yang diterima melalui RXD (read only). Gambar
2.3 menunjukkan diagram blok serial port.
Gambar 2.3 Diagram Blok Serial Port.
2.1.2.2 Mode Komunikasi Serial
Mikrokontroler AT89S51 mempunyai on chip serial port yang dapat digunakan untuk komunikasi data serial secara full duplex, sehingga port serial
ini masih dapat menerima data pada saat proses pengiriman data terjadi. Untuk
menampung data yang diterima atau data yang akan dikirimkan, AT89S51
mempunyai sebuah register, yaitu SBUF ( serial buffer ) yang terletak pada
alamat 99H. Register ini berfungsi sebagai buffer, sehingga pada saat
mikrokontroler ini membaca data yang pertama dan bila data kedua belum
diterima secara penuh, data ini tidak akan hilang.
Pada mikrokontroler AT89S51 terdapat 4 mode komunikasi serial.
Mode komunikasi serial ini ditentukan oleh bit SM0 dan SM1 yang terdapat
Tabel 2.3 Mode Komunikasi Serial
SM0 SM1 MODE DESCRIPTION BAUD RATE
0 0 0 Shift Register Tetap = 1/12×frekuensi osc
0 1 1 8 Bit UART Ditentukan dengan timer 1
1 0 2 9 Bit UART Tetap = 1/32(1/64)×frekuensi
osc
1 1 3 9 Bit UART Ditentukan dengan timer 1
2.1.2.3 8-Bit Shift Register (Mode 0)
Pada mode ini, pengiriman dan penerimaan data dilakukan melalui
kaki RXD, sedangkan kaki TXD digunakan sebagai keluaran shift clock.
Baud rate komunikasi pada mode ini tetap yaitu sebesar 1/12 dari frekuensi
on-chip oscillator.
Pengiriman data akan dilakukan begitu terjadi instruksi penulisan data
ke register SBUF. Data akan dikirim melalui RXD dengan pulsa clock akan
dikirim melalui TXD. Pada gambar 2.4., data sebesar satu bit dapat dibaca
dengan benar dalam rentang waktu satu machine cycle. Dalam satu machine
cycle, mikrokontroler akan membangkitkan satu shift clock (RND). Setiap satu
RND, satu bit data akan dikirim atau dibaca oleh mikrokontroler seperti
Gambar 2.4 Serial Port Transmit Timing.
Penerimaaan data akan dilakukan jika bit receiver enable (REN) di-set
high dan receive interrupt flag (RI) nonaktif (low).
Gambar 2.5 Serial Port Receive Timing.
2.1.2.4 8-Bit UART (Mode 1)
Pada mode 1, mikrokontroler AT89S51 beroperasi sebagai 8 bit
universal asynchronous receiver transmitter (UART) yang menerima dan
mengirim data melalui komunikasi serial dengan format data yang dimulai
dengan start bit dan diakhiri dengan stop bit. Baud rate komunikasi serial
pada mode ini di-set dengan timer 1overflow rate.
Pada mode ini, setiap pengiriman data dikirim 10 bit data melalui
bernilai 0), 8 bit data dan diakhiri dengan stop bit (selalu bernilai 1).
Pengiriman data akan dilakukan sesuai baud rate yang di-set. Begitu stop bit
dikirimkan maka transmit interrupt flag (TI) akan ter-set high. Ilustrasi
pengiriman data ini dapat dilihat pada gambar 2.6.
Gambar 2.6 Pengiriman Data Mode 1
Pada proses penerimaan,begitu suatu start bit terdeteksi, maka
penerimaan data dilanjutkan, register SBUF akan berisikan 8 data bit,
sedangkan stop bit akan disimpan di bit RB8 yang terdapat di register SCON.
Setelah itu receiver interrupt flag (RI) akan ter-set aktif. Perhitungan untuk
menentukan baudrate adalah sebagai berikut:
Baud rate =
)] 1 ( 256
[ TH
N
frequency oscillator
− (2.1)
2.1.2.5 9-Bit UART dengan Baud Rate Tetap (Mode 2)
Baud rate yang digunakan pada mode 2 ini tetap dengan nilainya yang
dipengaruhi oleh bit SMOD yang ada di register PCON (power control
register). Jika SMOD di-set high (logika 1), maka baud rate komunikasi serial
adalah 1/32 frekuensi on-chip oscillator. Sedangkan jika SMOD di-set low
(logika 0), maka baud rate komunikasi serial adalah 1/64 frekuensi on-chip
oscillator.
Pada saat pengiriman, data bit yang ke-9 disimpan di bit TB8 pada
SCON dan pada saat penerimaan data, bit yang ke-9 ini disimpan di bit RB8
pada SCON.
2.1.2.6 9-Bit UART dengan Baud Rate Bergantung Timer (Mode 3)
Mode 3 ini hampir sama dengan mode 2. Perbedaannya terletak pada
baud rate yang nilainya tidak tetap dan ditentukan oleh setting timer seperti
pada mode 1 komunikasi serial.
2.1.2.7 Baud Rate Komunikasi Serial
Baud rate komunikasi serial terdiri dari 2 jenis yaitu yang tetap dan
bervariasi sesuai setting timer 1. Pada tabel 2.4 ditunjukkan mode komunikasi
serial dan baud rate. Untuk komunikasi serial mode 1 dan 3, baud rate dapat
diatur. Sedangkan mode 0 dan 2, besarnya baud rate tergantung dari osilator
Tabel 2.4 Baud Rate Komunikasi Serial
MODE DESCRIPTION BAUD RATE
0 SMOD tidak berpengaruh Tetap = 1/12×frekuensi oscillator
2 SMOD = 0 (default) Tetap = 1/64×frekuensi oscillator
2 SMOD = 1 Tetap =1/32×frekuensi oscillator
1,3 SMOD = 0 (default) Variasi =Timer 1 Overflow Rate : 32
1,3 SMOD = 1 Variasi =Timer 1 Overflow Rate : 16
2.2 Sensor
Sensor berfungsi untuk memonitor dan menganalisis gejala yang terjadi
pada suatu benda.
2.2.1 Infrared Emitting Diode
Infrared emitting diode adalah dioda yang memancarkan sinar infrared.
Sinar infrared termasuk dalam gelombang elektromagnetik yang mempunyai
frekuensi dan panjang gelombang tertentu. Jika dioda infrared diberi tegangan
maju, maka dioda infrared akan ON seperti pada gambar 2.7 serta akan
mengeluarkan cahaya yang tak terlihat oleh mata.
Untuk mencari nilai RD pada rangkaian LED infrared digunakan persamaan
berikut:
D D D
I V Vcc
R = − (2.2)
dengan:
D
R adalah hambatan dioda
Vcc adalah tegangan catu daya
D
V adalah beda potensial diantara kaki-kaki dioda
D
I adalah arus yang melalui dioda
2.2.2 Sensor Fototransistor
Sensor phototransistor adalah suatu piranti semikonduktor yang peka
terhadap cahaya. Daerah basis dapat dimasuki sinar dari luar melalui suatu
celah transparan dari luar kemasan transistor. Celah ini biasanya dilindungi
oleh suatu lensa kecil yang memusatkan sinar di tepi sambungan basis-emitor,
seperti terlihat pada gambar 2.8, sedangkan arus pada fototransistor
ditunjukkan oleh gambar 2.9.
Gambar 2.9 Simbol fototransitor
Gambar 2.10.Rangkaian dasar fototransistor
Untuk mendapatkan nilai resistor Rc pada gambar 2.10 dilakukan perhitungan
sebagai berikut:
C CE CC
I V V
R= − (2.3)
dangan:
R adalah hambatan yang berapa pada emiter, berguna untuk
membatasi arus yang masuk ke fototransistor.
CC
V adalah tegangan catu daya.
CE
V adalah beda potensial antara collector dan emitter.
C
Untuk rangkaian fototransistor seperti pada gambar 3.10, arus yang mengalir
dirumuskan sebagai berikut:
Ic = β1.λ1 (2.4)
Dengan β1 adalah konstanta dan λ1 adalah besarnya intensita cahaya. Dengan
demikian besarnya tegangan emiter dapat dirumuskan sebagai berikut:
Ve = Vcc - Vce (2.5)
Rumusan 2.4 dapat dijabarkan lagi sebagai berikut:
Ve = R * Ic (2.6)
Jika R tetap, maka tegangan emiter Ve tergantung dari intensitas cahaya yang
masuk ke fototransistor.
2.2.3 Pengkondisi Sinyal
Rangkaian penguat dan Schmitt trigger merupakan sebagian rangkaian
pengkondisi sinyal dalam sistem kendali. Pengkondisi sinyal memiliki tugas
memodifikasi atau mengubah dalam arti luas keluaran sensor untuk
disesuaikan dengan kebutuhan unsur berikutnya. Berdasarkan fungsinya,
pengkondisi sinyal dapat diklasifikasikan sebagai berikut: pertama, sebagai
rangkaian pengkondisi seperti penguatan dan pelemahan. Kedua, rangkaian
pengolah seperti konversi tegangan ke frekuensi dan konversi tegangan ke
arus. Penguat transistor ditunjukan pada gambar 2.11 berikut ini:
Sinyal yang telah dikuatkan dipicu menggunakan Schmitt trigger agar
sinyal keluaran berubah tajam dari tinggi ke rendah atau sebaliknya.
Rangkaian Schmitt trigger menggunakan CMOS Inverting Schmitt Trigger.
Rangkaian inverting schmitt trigger memiliki simbol seperti diperlihatkan
pada gambar 2.12
Gambar 2.12 SchmittTrigger
2.3 Display atau Alat Penampil
Dalam suatu sistem instrumentasi dibutuhkan suatu unit alat penampil
atau peraga alfanumerik yang berfungsi untuk menampilkan hasil keluaran,
maka dianggap perlu untuk mendekodekan bilangan-bilangan tersebut secara
elektronis. Semua jenis rangkaian digital yang dipakai untuk pencacahan akan
memerlukan peragaan / tampilan bilangan hasil hitungan / cacahan sistem
tersebut.
2.3.1 LED (Light Emitting Diode)
Penampil (display) yang banyak dipakai adalah yang menerapkan
LED (Light Emitting Diode). Simbol LED dtunjukkan pada gambar 2.13.
LED
LED merupakan dioda yang mempunyai ciri khas tersendiri karena
terhubung dengan suatu rangkaian yang dialiri arus. Untuk menyalakan sebuah
LED digunakan rangkaian seperti pada gambar 2.14.
VCC
Vd Ra
Gambar 2.14 Rangkaian guna menyalakan LED
Tegangan LED biasanya berkisar antara 1,2 - 2 V sedangkan arus LED
antara 10 -25 mA. Persamaan untuk menentukan arus dioda adalah :
R
I LED
LED
V VCC −
= (2.7)
R adalah hambatan yang dipasang untuk membatasi arus dioda.
Vcc adalah tegangan catu daya.
Vled adalah beda potensial diantara kaki-kaki LED.
Id adalah arus yang melalui LED.
2.3.2 Rangkaian Penampil Seven Segment
Piranti seven segment adalah sebuah penampil yang terdiri atas 7 buah
LED yang berada dalam satu kemasan. Prinsip kerja dari seven segment
seperti LED, sehingga seven segment hanya membutuhkan arus yang kecil
untuk menampilkan angka-angka yang dibangun dari ke tujuh LED tersebut.
Dioda memancarkan cahaya (Light Emitting Diode), merupakan
tertutup, LED yang bersangkutan berprategangan maju dan mengemisikan
cahaya. Tahanan-tahanan seri merupakan hambatan-hambatan pembatas arus
yang dibutuhkan untuk mengatur arus. Untuk memperagakan suatu lambang,
harus dinyalakan tiap batang atau ruas yang berkaitan dengan lambang
tersebut.
Seven segment mempunyai 2 buah tipe yaitu : common anode dan
common catode. Kedua jenis penampil seven segment tersebut memiliki
karakteristik yang hampir sama. Perbedaan antara common anode dan common
catode adalah pada penyambungan ke tujuh kaki-kaki LED-nya, dimana pada
common anode seluruh anode dari ke tujuh LED-nya disambung menjadi satu,
sedangkan pada common catode seluruh catode dari ke tujuh LED-nya
tersambung menjadi satu. Untai dari common anode dan common catode
adalah seperti gambar 2.15.
Gambar 2.15 Untai common anode dan common catode
Rangkaian penampil common anode seven segment dapat dilihat pada
gambar 2.16.
Sebagai contoh untuk memperagakan angka 0 harus dinyalakan ruas a
sampai dengan f, untuk mendapatkan 1 dinyalakan ruas b dan c dengan cara
yang sama setiap angka desimalnya dari 0 hingga 9 dapat diperagakan. Jika
karakter 1 akan ditampilkan, jalur keluaran b dan c dari pegawasandi akan
diset berlogika 1 untuk menyalakan transistor yang sesuai untuk menyinari
segmen b dan c. Jalur yang lain tetap berlogika 0. Untuk lengkapnya, dapat
dilihat pada tabel 2.5 untuk tabel kebenaran tampilan seven segment.
Tabel 2.5 Kebenaran Seven Segment
Cacahan Segmen Yang Menyala
0 a, b, c, d, e, f
1 b, c
2 a. b, g, e, d
3 a, b, g, c, d
4 f, g, b, c
5 a, f, g, c, d
6 a, f, e, d, c, g
7 a, b, c
8 a, b, c, d, e, f, g
9 a, b, g, f, c
2.3.3 BCD to Seven Segment Decoder
Penampil untuk alat ini menggunakan seven segment, oleh karena itu
perlu decoder/driver untuk mengaktifkan seven segment. Hal ini diperlukan
Perancangan tugas akhir ini dibagi menjadi dua tahap, tahap pertama
perancangan perangkat keras dan tahap yang kedua perancangan perangkat lunak.
3.1 Perancangan Perangkat Keras
Perangkat keras terdiri dari dua bagian, pertama berada pada bus yang
berfungsi sebagai sensor, penampil jumlah penumpang dan pengirim data, kedua
berada di pol yang berfungsi sebagai penerima data dan penampil jumlah
penumpang dalam bus. Untuk mendeteksi jumlah penumpang di dalam bus
digunakan sensor infrared berupa fototransistor yang berada pada pintu masuk di
bagian depan dan pada pintu keluar di bagian belakang.
Data dari bus akan dikirimkan ke pol melalui kabel. Diagram blok dari
alat ini seperti ditunjukkan oleh gambar 3.1. Sedangkan alat yang berada di pol
ditunjukkan oleh gambar 3.2.
Gambar 3.1 Diagram Blok Alat Monitoring Pada Bus
Gambar 3.2 Diagram Blok Alat Monitoring Pada Pol
3.1.1 Alat Monitoring Pada Bus
Rangkaian dari sensor dan mikrokontroler ditunjukan oleh gambar 3.3.
Rangkaian sensor ada dua buah yaitu sensor masuk dan sensor keluar. Rangkaian
sensor masuk dihubungkan dengan Pin P3.3, sedangkan sensor keluar
dihubungkan dengan Pin P3.2. Kaki P3.3 dimanfaatkan sebagai sarana I/O biasa
untuk menghitung jumlah penumpang yang masuk pada bis, sedangkan P3.2
sebagai sinyal interupsi eksternal 0. Pada gambar 3.3 digambarkan rangkaian
sensor yang digunakan.
1
Vcc +5 V Vcc +5 V
1
2
47
1
2
P3.2
Vcc +5 V Vcc +5 V 2
Gambar 3.3 Rangkaian Sensor Pada Bus
Saat penumpang memasukan karcis ke dalam kotak, karcis akan
menghalangi sinar infra merah yang masuk ke fototransistor dari dioda infra
merah. Akibat adanya perubahan intensitas cahaya yang masuk ke dalam
fototransistor, sehingga level tegangan di kaki collector ikut berubah. Saat sinar
infrared masuk ke fototransistor tegangan di collector. Untuk menentukan
besarnya nilai R maka ditentukan nilai Ic yang digunakan sebesar 10 mA.
Ve = Vcc – Ic.Rc (3.1)
0 = 5 V- 10.10-3.Rc
2
1
47
R = 1 K
Saat karcis menghalangi sinar infra merah tegangan di collector menjadi tinggi
sebesar 5 volt.
Perubahan tegangan di collector akan menyebabkan perubahan output dari
schmitt trigger. Tujuan dari penggunaan schmitt trigger untuk dapat mendeteksi
perubahan tegangan yang kecil, karena pada praktiknya dioda infra merah tidak
memberikan cukup intensitas cahaya. Dengan menambahkan schmitt trigger
perubahan tegangan yang kecil tetap mampu memberikan input mikrokontroler
sesuai dengan tegangan yang dibutuhkan untuk mencapai logika tinggi dan
rendah.
Mikrokontroler akan menampilkan jumlah penumpang pada penampil
seven segment. Rangkaian dari penampil jumlah penumpang ditunjukan gambar
3.4. Rangkaian penampil ini menggunakan seven segment seri LDS-AA1R. Seven
segment ini adalah common anode seven segment artinya seven segment ini
memiliki anoda bersama untuk tiap LED.
Oleh karena itu digunakan IC BCD to seven segment decoder
SN74LS247, yang merupakan IC aktif low. Sebagai pengaman, baik bagi seven
segment atau IC driver, antara katoda seven segment dan kaki-kaki IC dipasang
resistor. Besarnya nilai resistor berdasarkan persamaan 2.4 didapat sebagai
berikut:
Dengan VCC = 5 V
IMax = 20 mA (didapat dari data sheet)
Maka didapat nilai resistor minimum adalah sebagai berikut:
R
02 . 0
2 . 2 5−
≥ = 140 Ω
Pada perancangan ini resistor yang digunakan sebesar 150 Ω dengan
pertimbangan mendekati nilai perhitungan dan mudah ditemukan di pasaran.
Gambar 3.4 Rangkaian Penampil Pada Bus
3.1.2 Alat Monitoring Pada Pol
Perancangan dan perhitungan nilai komponen penampil sevent segment
dari alat penampil di pol sama dengan penampil pada bus. Setiap kali ada
penumpang yang naik, akan dapat terpantau dari pol. Gambar 3.5 menunjukan
Gambar 3.5 Rangkaian Penampil Pada Pol
3.2 Perancangan Perangkat Lunak
Perancangan perangkat lunak untuk tugas akhir ini juga dibagi menjadi
dua bagian yaitu perancangan untuk alat monitor di bus dan untuk alat monitor di
pol.
3.2.1 Perangkat Lunak Pada Alat Monitor Di Bus
Fungsi dari mikrokontroler bagian bus adalah untuk mendeteksi
penumpang yang masuk ke dalam bus, lalu menampilkan jumlah penumpang di
dalam bus, dan juga mengirim sebuah data secara serial ketika ada penumpang
yang masuk ke dalam bus. Ketika ada penumpang yang keluar dari bus, maka
akan mengurangi jumlah penumpang dalam bus pada penampil.
Terdapat dua program dari perancangan perangkat lunak pada bagian bus.
Program Pertama adalah program utama, yang mempunyai tugas untuk
mendeteksi penumpang yang masuk, dan menampilkan jumlah penumpang di
interupsi ini ketika terjadi logika 0 pada kaki P3.2, atau ketika ada penumpang
yang keluar dalam bus. Diagram alir dari program utama dan program interupsi
eksternal 0 pada perancangan perangkat lunak bagian bus ditunjukkan oleh
Gambar 3.6a dan 3.6b.
(a) (b)
Gambar 3.6 Diagram alir Monitoring Pada Bus
Potongan program dari pogram utama dari diagram alir dapat dilihat
di bawah ini :
ORG 0000h LJMP mulai ORG 0013h LJMP keluar
mulai: mov scon,#40h ; set kirim serial mode 1
mov tmod,#20h ; set timer1 mode 2 8 bit isi ulang mov th1,#0e8h ; isi reg timer1 (baud rate 1200 bps)
setb tr1 ; aktifasi timer1
setb ex0 ; aktifasi interupsi eksternal0 setb ea ; aktifasi layanan interupsi setb p3.3 ; set p3.3 sebagai input
cjne r0,#100,ubah_se
lagi2: lcall ubah&tampil ;panggil sub pogram ubah bcd lcall kirim data ; panggil sub pogram kirim data: jb p3.3,masuk ; tunggu sampai karcis dicabut ubah_se: mov r0,#0
inc r0 ajmp lagi2
Untuk menentukan nilai register TH1 agar sesuai dengan baud rate ada
perhitungan untuk menentukannya. Nilai TH1 sebesar E8h (232d) didapat dengan
perhitungan sebagai berikut:
Baud rate =oscillatorN[256−frequency(TH1)] (3.3)
Dengan N faktor pembagi sebesar 384 jika UART berjalan pada mode SMOD= 0,
maka besarnya TH1 dapat dihitung sebagai berikut:
1200 = )] 1 ( 256 [ 384 11,059x106 TH −
TH1 = 256 – (11,059x106)/(384x1200)
TH1 = 232d =E8h
Dari potongan program utama dapat terlihat ada pemanggilan sub pogram
ubah&tampil, dan sub pogram pengiriman data. Sub pogram pengiriman
ubah&tampil berfungsi untuk merubah nilai di variabel counter menjadi BCD.
Proses ini menggunakan register a dan register b, hasil dari proses perubahan ini
akan disimpan di akumulator dan kemudian dipindahkan ke port 0 agar dapat
ditampilkan ke seven segment. Potongan program sub program ubah&tampil
dijabarkan di bawah ini.
Ubah&tampil:
Mov a,r0 ; nilai r0 dibagi 10 Mov b,#10 ; hasil di a sisa di b
Div a,b ; nibble bawah a ke nibble atas Swap a
Sub program kirim data berfungsi untuk mengirimkan data ke pol. Data
yang dikirimkan sudah ditentukan terlebih dahulu, jadi data yang dikirimkan
bukan data jumlah penumpang yang ada dalam bus, akan tetapi mengirimkan data
ketika ada penumpang naik ke bus. Potongan program sub program kirim data
dijabarkan dibawah ini.
Kirim_pol::
Clr es ; non aktifkan interupsi serial Mov a,#26h
Mov sbuf,a ; kirim data pengenal ke pol Jnb ti,$ ; tunggu data selesai dikirim Clr ti ; nolkan kembali bit ti Setb es
Ret
Mikrokontroler akan melayani program interupsi ketika ada penumpang
keluar. Dalam potongan program di bawah ini terdapat instruksi untuk menunggu
kaki P3.2 mempunyai logika 1, hal ini bertujuan agar menunggu satu penumpang
selesai melewati sensor.
Selesai:
Push acc ; simpan acc Clr ex0
Clr ea ; disable layanan interupsi Dec r0 ; kurangi variabel counter
Lcall ubah&tampil ; panggil sub program ubah&tampil Jnb p3.2,$ ; tunggu selesai 1 penumpag selesai turun Setb ex0
Setb ea ;enable layanan interupsi Pop acc ;ambil acc
3.2.2 Perangkat Lunak Pada Penerimaan Di Pol
Rutin program utama dari alat penerima dan penampil di pol berisi
inisialisasi fungsi yang ada di dalam mikrokontroler. Pada alat ini fungsi yang
menunjukan rutin utama alat penerima di pol.
Gambar 3.7 Program Utama Alat Monitoring Pada Pol
Inisialisasi serial pada alat monitoring di pol diperlukan agar komunikasi
data dapat sinkron dengan alat pengirim di bus. Pada alat monitoring ini UART
yang digunakan adalah mode 1, baud rate 1200 bits/sec.
Inisialisasi UART pada main program adalah sebagai berikut:
Serial_ini:
Mov SCON,#050h ;mode 1 Mov TMOD,#020h ;T1 mode 2 Mov TH1,#0E8h ;baud rate 1200 Setb tr1 ;T1 on
Setb es ;interupsi serial aktif Setb ea
Rutin interupsi serial akan aktif saat 10 bit yang dikirimkan selesai
diterima, dengan bit ri set. Saat interupsi terjadi program akan memanggil rutin
interupsi serial dan menjalankan program yang terdapat di dalam rutin tersebut.
Dalam rutin tersebut jumlah penumpang akan ditambah satu dan kemudian
ditampilkan dalam seven segment. Gambar 3.8 menunjukkan diagram alir dari
Gambar 3.8 Rutin Interupsi Serial
Potongan program interupsi serial akan diuraikan dibawah ini.
Terima_data:
Clr es
Clr ea
Jnb ri,$
Mov a,sbuf
Cjne a,#26h,balik
Inc dptr
Lcall hec to_bcd
Lcall tampil
Balik:
Setb es
Setb ea
ret
Counter pada bagian pol menggunakan dptr, hal ini disebabkan nilai
maksimal yang akan ditampilkan mencapai nilai 9999 sehingga diperlukan
register penampung hasil counter sebesar 16 bit. Saat data dikirimkan sebuah data
sehingga menjadi 4 register penampung bilangan BCD yang akan diumpankan
pada P0 dan P2. Potongan program ubah BCD dan penampil di seven segment
akan diuraikan di bawah ini.
ubah_bcd:
mov r1,dph ;dph ke r1 sebagai msb
mov r2,dpl ; dpl ke r2 sebagai lsb
MOV R3,#0 ; r3 --> satuan
MOV R4,#0 ; r4 --> puluhan
MOV R5,#0 ; r5 --> ratusan
MOV R6,#0 ; r6 --> ribuan
MOV B,#10
MOV A,R2 DIV AB MOV R3,B MOV B,#10 DIV AB MOV R4,B MOV R5,A CJNE R1,#0H,HIGH_BYTE SJMP ENDD HIGH_BYTE: MOV A,#6 ADD A,R3 MOV B,#10 DIV AB MOV R3,B
ADD A,#5 ADD A,R4
MOV B,#10 DIV AB MOV R4,B
ADD A,#2 ADD A,R5
MOV B,#10 DIV AB MOV R5,B
swap a
add a,r5 ; r5(ratusan) jumlahkan dgn a mov p2,a ; sehingga nilai r5 sbg nibble bawah
mov a,r4
swap a
add a,r3
mov p0,a
Pembahasan atas alat “Sistem Monitoring Jumlah Penumpang Bus Berbasis Mikrokontroler AT89S51” dilakukan dengan membandingkan hasil dari pengukuran dan perhitungan secara teori. Pengukuran dilakukan dengan menggunakan alat ukur multitester digital dan osiloskop digital. Hasil dari pengukuran dan pembahasan adalah sebagai berikut.
4.1 Pembahasan Pada Alat
Alat “Sistem Monitoring Jumlah Penumpang Bus Berbasis Mikrokontroler AT89S51” telah bekerja dengan baik sesuai dengan perancangan pada bab 3. Kesimpulan bahwa alat ini telah bekerja diambil setelah melalui pengujian sebagai berikut:
Saat ada penumpang naik (memasukkan karcis) maka jumlah penumpang yang ditampilkan pada seven segment di bus akan bertambah satu demikian juga jumlah penumpang yang tertampil pada seven segment di pol. Gambar 4.1 menunjukkan peningkatan jumlah penumpang di bus, gambar 4.2 menunjukkan jumlah penumpang yang tertampil di pol.
Gambar 4.1 Kenaikan Jumlah Penumpang di Bus
Gambar 4.2 Kenaikan Jumlah Penumpang di Pol
pengujian ini seperti yang tertampil pada tabel 4.1.
Tabel 4.1 Hasil Counter Up/ Down di Bus dan di Pol
Keadaan Di Bus Di Pol
Belum ada penumpang naik 00 0000
1 penumpang naik 01 0001
1 penumpang turun 00 0001
1 penumpang turun 00 0001
1 penumpang naik 01 0002
1 penumpang naik 02 0003
1 penumpang turun 01 0003
………... .. ....
1 penumpang naik 59 0090
1 penumpang naik 60 0091
1 penumpang naik * 0091
1 penumpang turun 59 0091
Keterangan : * : penumpang ditolak untuk naik
Hasil pengujian menunjukkan jumlah penumpang pada bus yang tertampil di seven segment akan bertambah jika ada penumpang yang naik dan akan berkurang jika ada penumpang yang turun. Sedangkan pada pol jumlah penumpang akan bertambah jika ada penumpang yang naik saja.
Jika tampilan pada seven segment sudah mencapai 60, dan kemudian dilakukan counter up, maka tampilan di seven segment adalah . Akan tetapi jika tampilan pada seven segment adalah 00, kemudian dilakukan
counter down maka tampilan pada seven segment tetap, yaitu 00. 4.2 Pembahasan Pada Sensor
Gambar 4.3. Test Point Pada Rangkaian Sensor Penumpang Masuk Dari hasil pengukuran pada testpoint A, pada saat tidak ada karcis yang menghalangi antara fototransistor dengan LED infra merah tegangan di
testpoint A sebesar 0 volt. Pada saat ada karcis yang menghalangi antara fototransistor dengan LED infra merah tegangan pada test point A sebesar 4,9 volt.
Bila dibandingkan hasil pengukuran dengan hasil perhitungan secara teori akan memberikan hasil dan nilai error dengan menghitung nilainya didapatkan dari rumus berikut ini.
% 100 (%)
Error Nilai
Prosentase X
teori hasil teori−
=
Tabel 4.2 Hasil Pengukuran Tegangan dan Perhitungan Error pada Rangkaian Sensor Penumpang Masuk
Kondisi Hasil Pengukuran
telah dibahas pada bab 3. Sedangkan nilai secara teoritis pada titik test B didapat dari data sheet IC 74HC14.
Secara hipotesa perbedaan antara nilai teoritis dengan hasil pengukuran disebabkan adanya cahaya lain, selain sinar infra merah dari LED infra merah yang masuk ke dalam fototransistor, sebagai contoh adalah sinar metahari yang mengandung sinar infra merah. Selain itu perbedaan juga disebabkan alat ukur yang kurang presisi.
Perubahan output 4,9V ke 0,6V dari yang masuk ke schmitt trigger
sudah cukup untuk memicu perubahan output schmitt trigger dari logika rendah ke logika tinggi. Menurut datasheet tegangan threshold menuju logika rendah sebesar 2.7V. Sedangkan tegangan threshold menuju logika tinggi sebesar 1.8V. Jadi output fototransistor sebesar 4,9V dan 0,6V sudah cukup untuk memicu schmitt trigger. Karena IC 74HC14 adalah inverting schmitt
trigger maka saat mendapat input sebesar 0,6V maka output dari schmitt
trigger sebesar 3,7V, dan saat mendapat input sebesar 4,9V maka output dari schmitt trigger sebesar 0,4V.
4.3 Pembahasan Pada Mikronkontroler
(a) (b)
(c)
Gambar 4.4 Hasil akhir alat
Pada gambar 4.4 terlihat ada tiga bagian, dapat terlihat pada bagian (a) adalah saat alat dinyalakan dengan penampil jumlah penumpang bus dan pol menunjukan angka 00 dan 0000. Saat karcis menutupi sensor terlihat penampil pada bagian bus menjadi 01 yang menandakan jumlah penumpang yang ada di bus. Pada bagian pol juga akan bertambah menjadi 0001. Saat penumpang keluar seperti yang ditunjukkan pada bagian (c) jumlah penumpang di bus akan berkurang akan tetapi angka yang ditunjukkan pada bagian pol tetap tidak berkurang.
Komunikasi serial yang digunakan pada tugas akhir ini adalah komunikasi langsung dari mikrokontroler pada bus ke mikrokontroler pada pol, tanpa adanya modulasi ataupun menggunakan standar komunikasi serial seperti RS-232 dan lain-lain. Sehingga hasil pengamatan sinyal komunikasi serial dengan menggunakan osiloskop digital tampak pada gambar 4.5.
Komunikasi serial akan terjadi jika saat penumpang naik. Pada saat itu mikrokontroler di bus akan mengirimkan sinyal berupa data biner 8 digit yaitu 00100110b atau 26h. Dari pengamatan didapat hasil sebagai berikut:
Gambar 4.5 Sinyal Komunikasi Serial
bit yang satu dengan bit yang lain sebesar 833.3 µs. Jadi bit rate/jumlah bit tiap detik yang dikirimkan sebanyak:
Bitrate =
s µ
3 . 833
1
=1204 bps
5.1. Kesimpulan
Berdasarkan perancangan dan penelitian yang telah dilakukan, maka dapat diperoleh beberapa kesimpulan umum sebagai berikut :
1. Data di seven segment pada bus akan bertambah (increment) apabila ada karcis yang masuk atau kondisi di kaki P3.3 rendah, dan akan berkurang (decrement)bila ada interupsi eksternal 0 (penumpang turun).
2. Jumlah penumpang yang ditampilkan di seven segment pada bus hanya sebanyak 60.
3. Pada seven segment di pol menampilkan jumlah penumpang yang naik bus dalam satu hari. Seven segment di pol mampu menampilkan hingga 9.999 jumlah penumpang. Ketika data diterima terjadilah interupsi serial, tetapi data tersebut harus 26h, sehingga terjadilah kenaikan (increment). 4. Pengaturan untuk transfer data serial meliputi : komunikasi satu arah
(simplex), dengan kecepatan transfer data sebesar 1200 bps, 8 bit data, bit start berupa bit 0, 1 bit stop, tanpa bit paritas.
5.2 Saran
Sehubungan alat ini sangat sederhana, maka penulis mencoba untuk memberikan saran-saran agar dapat menjadi lebih baik, antara lain:
1. Jika diterapkan pada bus yang sebenarnya sebaiknya komunikasi data serial dimodulasi dengan gelombang radio.
Agfianto Eko Putra, 2003, Belajar Mikrokontroler AT89C51/52/55 (Teori dan Aplikasi), Edisi kedua, Gava Media, Yogyakarta, 2003
Malvino, A.P, 1989, Prinsip-Prinsip Elektronika, Edisi Ketiga, Penerbit Erlangga, Jakarta
Roger L. Tokheim, 1994, Prinsi-Prinsip Digital, Edisi Kedua, Penerbit Erlangga, Jakarta
Paulus Andi Nalwan, 2003, Panduan Praktis Teknik Antarmuka dan Pemrograman Mikrokontroler AT89C51, PT Elex Media Komputindo, Jakarta
Paulus Andi Nalwan, Timer 89C51, http://delta-electronic.com
Robert Boylestad, / Louis Nashelsky, 1989, Electronic A Survey Of Electrical
Enginnering Principles, Prentice hall international inc.
Texas Instrument, 1994, TCM3105DWL, TCM3105JE, TCM3105JL, TCM3105NE. TCM3105NL FSK Modem, Texas Instruments Inc., Dallas, USA
4 0003 ljmp turun
5 0006 org 30h
6 0030 mulai:
7 0030 mov p0,#0
8 0033 mov r0,#0
9 0035 mov scon,#40h
10 0038 mov tmod,#20h
11 003B mov th1,#0e8h
12 003E setb tr1
13 0040 setb p3.3
14 0042 setb ex0
15 0044 setb ea
16 0046 naik:
17 0046 jnb p3.3,$
18 0049 inc r0
19 004A tampil1:
20 004A mov a,r0
21 004B xrl a,#61
22 004D jnz tampil1
23 004F mov r0,#0eeh
24 0051 lcall ubah&tampil
25 0054 lcall kirim_pol
26 0057 jb p3.3,$
27 005A ajmp naik
28 005C turun:
29 005C clr ex0
30 005E push acc
31 0060 dec r0
32 0061 tampil2:
33 0061 mov a,r0
34 0062 xrl a,#99h
35 0064 jnz tampil2
36 0066 mov r0,#00
37 0068 lcall ubah&tampil
38 006B jnb p3.2,$
39 006E pop acc
40 0070 setb ex0
41 0072 reti
42 0073 ubah&tampil:
43 0073 mov b,#10
50 007E kirim_pol:
51 007E clr ea
52 0080 clr es
53 0082 mov a,#26h
54 0084 mov sbuf,a
55 0086 jnb ti,$
56 0089 clr ti
57 008B setb es
58 008D setb ea
2 0000 ajmp mulai 3 0002 org 23h 4 0023 ajmp data_bis 5 0025 org 30h 6 0030 mulai:
7 0030 mov p0,#0 8 0033 mov p2,#0 9 0036 mov scon,#50h 10 0039 mov tmod,#20h 11 003C mov th1,#0e8h 12 003F setb tr1
13 0041 setb es 14 0043 setb ea 15 0045 ajmp $ 16 0047 data_bis:
17 0047 clr es 18 0049 jnb ri,$ 19 004C clr ri 20 004E mov a,sbuf
21 0050 cjne a,#26h,data_salah 22 0053 inc dptr
23 0054 lcall ubah_bcd 24 0057 lcall tampil 25 005A data_salah:
26 005A setb es 27 005C reti 28 005D ubah_bcd:
29 005D mov r1,dph 30 005F mov r2,dpl 31 0061 MOV R3,#0 32 0063 MOV R4,#0 33 0065 MOV R5,#0 34 0067 MOV R6,#0 35 0069 MOV R7,#0
36 006B MOV B,#10
37 006E MOV A,R2 38 006F DIV AB
39 0070 MOV R3,B
40 0072 MOV B,#10 41 0075 DIV AB
49 0081 MOV B,#10 50 0084 DIV AB 51 0085 MOV R3,B 52 0087 ADD A,#5 53 0089 ADD A,R4
54 008A MOV B,#10 55 008D DIV AB 56 008E MOV R4,B 57 0090 ADD A,#2 58 0092 ADD A,R5
59 0093 MOV B,#10 60 0096 DIV AB 61 0097 MOV R5,B
62 0099 CJNE R6,#0,ADD_IT 63 009C SJMP CONTINUE 64 009E ADD_IT:
65 009E ADD A,R6 66 009F CONTINUE: 67 009F MOV R6,A
68 00A0 DJNZ R1,HIGH_BYTE 69 00A2 MOV B, #10
70 00A5 MOV A,R6 71 00A6 DIV AB 72 00A7 MOV R6,B 73 00A9 MOV R7,A 74 00AA ENDD:
75 00AA ret
77 00AB tampil:
78 00AB mov a,r6 79 00AC swap a 80 00AD add a,r5 81 00AE mov p2,a 82 00B0 mov a,r4 83 00B1 swap a 84 00B2 add a,r3 85 00B3 mov p0,a
1
• Fully Static Operation: 0 Hz to 33 MHz
• Three-level Program Memory Lock
• 128 x 8-bit Internal RAM
• 32 Programmable I/O Lines
• Two 16-bit Timer/Counters
• Six Interrupt Sources
• Full Duplex UART Serial Channel
• Low-power Idle and Power-down Modes
• Interrupt Recovery from Power-down Mode
• Watchdog Timer
• Dual Data Pointer
• Power-off Flag
• Fast Programming Time
• Flexible ISP Programming (Byte and Page Mode)
Description
The AT89S51 is a low-power, high-performance CMOS 8-bit microcontroller with 4K bytes of in-system programmable Flash memory. The device is manufactured using Atmel’s high-density nonvolatile memory technology and is compatible with the indus-try-standard 80C51 instruction set and pinout. The on-chip Flash allows the program memory to be reprogrammed in-system or by a conventional nonvolatile memory pro-grammer. By combining a versatile 8-bit CPU with in-system programmable Flash on a monolithic chip, the Atmel AT89S51 is a powerful microcontroller which provides a highly-flexible and cost-effective solution to many embedded control applications. The AT89S51 provides the following standard features: 4K bytes of Flash, 128 bytes of RAM, 32 I/O lines, Watchdog timer, two data pointers, two 16-bit timer/counters, a five-vector two-level interrupt architecture, a full duplex serial port, on-chip oscillator, and clock circuitry. In addition, the AT89S51 is designed with static logic for operation down to zero frequency and supports two software selectable power saving modes. The Idle Mode stops the CPU while allowing the RAM, timer/counters, serial port, and interrupt system to continue functioning. The Power-down mode saves the RAM con-tents but freezes the oscillator, disabling all other chip functions until the next external interrupt or hardware reset.
8-bit
Microcontroller
with 4K Bytes
In-System
Programmable
Flash
AT89S51
2
AT89S51
2487A–10/01 TQFP 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 P1.2 P1.3 P1.4 (MOSI) P1.5 (MISO) P1.6 (SCK) 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 XTAL2 XTAL1 GND 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) 1 2 3 4 5 6 7 8 9 10 11 33 32 31 30 29 28 27 26 25 24 2344 43 42 41 40 39 38 37 36 35 34
12 13 14 15 16 17 18 19 20 21 22
(MOSI) P1.5 (MISO) P1.6 (SCK) P1.7 RST (RXD) P3.0 NC (TXD) P3.1 (INT0) P3.2 (INT1) P3.3 (T0) P3.4 (T1) P3.5 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)
P1.4 P1.3 P1.2 P1.1 P1.0 NC VCC P0.0 (AD0) P0.1 (AD1) P0.2 (AD2) P0.3 (AD3)
(WR) P3.6 (RD) P3.7
XTAL2 XTAL1 GND GND
(A8) P2.0 (A9) P2.1 (A10) P2.2 (A11) P2.3 (A12) P2.4
7 8 9 10 11 12 13 14 15 16 17 39 38 37 36 35 34 33 32 31 30 29 (MOSI) P1.5 (MISO) P1.6 (SCK) P1.7 RST (RXD) P3.0 NC (TXD) P3.1 (INT0) P3.2 (INT1) P3.3 (T0) P3.4 (T1) P3.5 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)
6 5 4 3 2 1 44 43 42 41 40
18 19 20 21 22 23 24 25 26 27 28
(WR) P3.6 (RD) P3.7 XTAL2 XTAL1 GND
NC
3
2487A–10/01
PORT 2 DRIVERS
PORT 2 LATCH
P2.0 - P2.7
FLASH PORT 0 LATCH RAM PROGRAM ADDRESS REGISTER BUFFER PC INCREMENTER PROGRAM COUNTER DUAL DPTR INSTRUCTION REGISTER B REGISTER
INTERRUPT, SERIAL PORT, AND TIMER BLOCKS
STACK POINTER ACC TMP2 TMP1 ALU PSW TIMING AND CONTROL
PORT 1 DRIVERS
P1.0 - P1.7 PORT 3
LATCH
PORT 3 DRIVERS
P3.0 - P3.7 OSC
GND
VCC
PSEN
ALE/PROG EA / VPP RST
RAM ADDR. REGISTER
PORT 0 DRIVERS P0.0 - P0.7
PORT 1 LATCH WATCH
4
AT89S51
2487A–10/01
GND Ground.
Port 0 Port 0 is an 8-bit open drain bidirectional I/O port. As an output port, each pin can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be used as high-impedance inputs.
Port 0 can also be configured to be the multiplexed low-order address/data bus during accesses to external program and data memory. In this mode, P0 has internal pull-ups.
Port 0 also receives the code bytes during Flash programming and outputs the code bytes during program verification. External pull-ups are required during program verification.
Port 1 Port 1 is an 8-bit bidirectional I/O port with internal pull-ups. The Port 1 output buffers can sink/source four TTL inputs. When 1s are written to Port 1 pins, they are pulled high by the internal pull-ups and can be used as inputs. As inputs, Port 1 pins that are externally being pulled low will source current (IIL) because of the internal pull-ups.
Port 1 also receives the low-order address bytes during Flash programming and verification.
Port 2 Port 2 is an 8-bit bidirectional I/O port with internal pull-ups. The Port 2 output buffers can sink/source four TTL inputs. When 1s are written to Port 2 pins, they are pulled high by the internal pull-ups and can be used as inputs. As inputs, Port 2 pins that are externally being pulled low will source current (IIL) because of the internal pull-ups.
Port 2 emits the high-order address byte during fetches from external program memory and during accesses to external data memory that use 16-bit addresses (MOVX @ DPTR). In this application, Port 2 uses strong internal pull-ups when emitting 1s. During accesses to external data memory that use 8-bit addresses (MOVX @ RI), Port 2 emits the contents of the P2 Spe-cial Function Register.
Port 2 also receives the high-order address bits and some control signals during Flash pro-gramming and verification.
Port 3 Port 3 is an 8-bit bidirectional I/O port with internal pull-ups. The Port 3 output buffers can sink/source four TTL inputs. When 1s are written to Port 3 pins, they are pulled high by the internal pull-ups and can be used as inputs. As inputs, Port 3 pins that are externally being pulled low will source current (IIL) because of the pull-ups.
Port 3 receives some control signals for Flash programming and verification.
Port 3 also serves the functions of various special features of the AT89S51, as shown in the following table.
Port Pin Alternate Functions
5
2487A–10/01
RST Reset input. A high on this pin for two machine cycles while the oscillator is running resets the device. This pin drives High for 98 oscillator periods after the Watchdog times out. The DIS-RTO bit in SFR AUXR (address 8EH) can be used to disable this feature. In the default state of bit DISRTO, the RESET HIGH out feature is enabled.
ALE/PROG Address Latch Enable (ALE) is an output pulse for latching the low byte of the address during accesses to external memory. This pin is also the program pulse input (PROG) during Flash programming.
In normal operation, ALE is emitted at a constant rate of 1/6 the oscillator frequency and may be used for external timing or clocking purposes. Note, however, that one ALE pulse is skipped during each access to external data memory.
If desired, ALE operation can be disabled by setting bit 0 of SFR location 8EH. With the bit set, ALE is active only during a MOVX or MOVC instruction. Otherwise, the pin is weakly pulled high. Setting the ALE-disable bit has no effect if the microcontroller is in external execution mode.
PSEN Program Store Enable (PSEN) is the read strobe to external program memory.
When the AT89S51 is executing code from external program memory, PSEN is activated twice each machine cycle, except that two PSEN activations are skipped during each access to external data memory.
EA/VPP External Access Enable. EA must be strapped to GND in order to enable the device to fetch code from external program memory locations starting at 0000H up to FFFFH. Note, however, that if lock bit 1 is programmed, EA will be internally latched on reset.
EA should be strapped to VCC for internal program executions.
This pin also receives the 12-volt programming enable voltage (VPP) during Flash programming.
XTAL1 Input to the inverting oscillator amplifier and input to the internal clock operating circuit.
XTAL2 Output from the inverting oscillator amplifier
P3.0 RXD (serial input port) P3.1 TXD (serial output port) P3.2 INT0 (external interrupt 0) P3.3 INT1 (external interrupt 1) P3.4 T0 (timer 0 external input) P3.5 T1 (timer 1 external input)
6
AT89S51
2487A–10/01
Table 1. AT89S51 SFR Map and Reset Values
7
2487A–10/01
products to invoke new features. In that case, the reset or inactive values of the new bits will always be 0.
Interrupt Registers: The individual interrupt enable bits are in the IE register. Two priorities can be set for each of the five interrupt sources in the IP register.
Dual Data Pointer Registers: To facilitate accessing both internal and external data memory, two banks of 16-bit Data Pointer Registers are provided: DP0 at SFR address locations 82H-83H and DP1 at 84H-85H. Bit DPS = 0 in SFR AUXR1 selects DP0 and DPS = 1 selects DP1. The user should always initialize the DPS bit to the appropriate value before accessing the respective Data Pointer Register.
Table 2. AUXR: Auxiliary Register
AUXR Address = 8EH Reset Value = XXX00XX0B Not Bit
Addressable
– – – WDIDLE DISRTO – – DISALE
Bit 7 6 5 4 3 2 1 0
– Reserved for future expansion DISALE Disable/Enable ALE
DISALE Operating Mode
0 ALE is emitted at a constant rate of 1/6 the oscillator frequency 1 ALE is active only during a MOVX or MOVC instruction DISRTO Disable/Enable Reset out
DISRTO
0 Reset pin is driven High after WDT times out 1 Reset pin is input only
WDIDLE Disable/Enable WDT in IDLE mode WDIDLE
8
AT89S51
2487A–10/01
Memory
Organization
MCS-51 devices have a separate address space for Program and Data Memory. Up to 64K bytes each of external Program and Data Memory can be addressed.
Program Memory If the EA pin is connected to GND, all program fetches are directed to external memory.
On the AT89S51, if EA is connected to VCC, program fetches to addresses 0000H through FFFH are directed to internal memory and fetches to addresses 1000H through FFFFH are directed to external memory.
Data Memory The AT89S51 implements 128 bytes of on-chip RAM. The 128 bytes are accessible via direct and indirect addressing modes. Stack operations are examples of indirect addressing, so the 128 bytes of data RAM are available as stack space.
Watchdog
Timer
(One-time
Enabled with
Reset-out)
The WDT is intended as a recovery method in situations where the CPU may be subjected to software upsets. The WDT consists of a 14-bit counter and the Watchdog Timer Reset (WDTRST) SFR. The WDT is defaulted to disable from exiting reset. To enable the WDT, a user must write 01EH and 0E1H in sequence to the WDTRST register (SFR location 0A6H). When the WDT is enabled, it will increment every machine cycle while the oscillator is running. The WDT timeout period is dependent on the external clock frequency. There is no way to dis-able the WDT except through reset (either hardware reset or WDT overflow reset). When WDT overflows, it will drive an output RESET HIGH pulse at the RST pin.