Pada bab ini akan di bahas tentang perancangan sebuah alat yang meliputi diagram blok rangkaian dan realisasi rangkaian dengan prinsip kerja dari masingmasing blok rangkaian yang digunakan pada Perancangan Sistem Antrian Digital Berbasis Mikrokontroler AT89S51. Diagram Gambar 3-1. INPUT Saklar PENGOLAH Mikrokontroler AT89S51 OUTPUT 7-Segmen Buzzer blok rangkaian di perlihatkan pada
Gambar 3-1 Diagram Blok Perancangan Sistem Antrian Digital Berbasis Mikrokontroler AT89S51.
Dari uraian diagram blok diatas , Penulis akan menguraikan cara kerja tiap-tiap blok rangkaian adalah sebagai berikut : a. Saklar berfungsi untuk sebagai inputan ke mikrokontroler. b. Mikrokontroler AT89S51 berfungsi untuk mengendalikan tampilan 7-segment dan buzzer berdasarkan sinyal masukan dari saklar yang ditekan(sebagai pemroses). c. Tampilan 7-segment berfungsi untuk menunjukkan (output) . d. Buzzer berfungsi sebagai indikator antrian pada saat inputan berupa saklar ditekan (output).
27
28
3.1.1 Blok Catu daya Catu daya berfungsi untuk memberikan suplay tegangan, khususnya ke IC mikrokontroler AT89S51, catu daya yang di gunakan adalah 5 Volt dc. Untuk menurunkan tegangan trafo dari 9 V menjadi 5 V maka di gunakan IC voltage regulator LM7805. Pada rangkaian catu daya, dioda 1N4001 berfungsi sebagai penyearah gelombang penuh dari ac ke dc dengan arus sebesar 1 Ampere, sedangkan kapasitor 100 F dan 100nF berfungsi sebagai filter tegangan dc atau penghalus pulsa-pulsa tegangan yang dihasilkan oleh dioda penyearah. Skema rangkaian perlihatkan pada Gambar 3.2. catu daya di
3.1.2 Blok Pemberi Sinyal (Input) Pada Blok Pemberi Sinyal (input) saklar yang digunakan adalah saklar push-on (saklar tekan) dimana berfungsi untuk memberikan inputan ke bagian pemroses (mikrokontroler AT89S51). Skema rangkaian saklar di perlihatkan pada Gambar 3.3.
29
Output dari saklar akan langsung disambungkan ke mikrokontroler pada port 1.0. Pada kondisi awal saat saklar tidak ditekan ( tidak terhubung ) maka inputan mikrokontrol akan berlogika 1 (aktif high), bila saklar ditekan ( terhubung ) maka saklar akan mengeluarkan pulsa berlogika 0 karena saklar (P1.0) di hubungkan ke ground . Pada kondisi inilah merupakan input bagi port 1.0 pada mikrokontroler. Dan jika saklar dilepas kembali (tidak ditekan ) maka inputan akan berlogika 0.
Dalam hal ini cara kerja mikrokontroler AT89S51 hampir sama dengan otak manusia, mikrokontroler akan mengendalikan seluruh rangkaian. Agar dapat mengerjakan suatu perintah maka mikrokontroler harus diisi program dahulu. Mikrokontroler AT89S51 hanya memerlukan tambahan 3 kapasitor, 1 resistor dan 1 kristal serta catu daya 5 Volt. Kristal dengan frekuensi 11,0592MHz dan dua buah kapasitor 30 pF di pakai untuk melengkapi rangkaian oscillator. Pembentuk clock yang menentukan kecepatan kerja mikrokontroler. Kapasitor 10 F dan resistor 10 KOhm di pakai untuk membentuk rangkaian reset dimana rangkaian ini pada saat pertama kali catu daya di hidupkan, akan mereset rangkaian mikrokontroler sehingga program di pastikan akan bekerja dari awal. Prinsip kerja rangkaian reset adalah proses pengisian kapasitor yang di tunda oleh sebuah resistor sehingga pada saat pengisian kapasitor akan terjadi proses keadaan dari tegangan rendah (low) ke tegangan tinggi (high), keadaan inilah yang akan mereset rangkaian mikrokontroler. Port 0 mikrokontroler AT89S51 merupakan keluaran untuk alamat (address AD0-AD7) tidak mempunyai tahanan yang terhubung ke Vcc, seperti pada konstruksi port-port yang lain. Pada saat port 0 di pakai sebagai port output tegangan pada kaki P0.x tidak mungkin menjadi high (tegangan ambang), untuk mengatasi hal ini maka harus di pasangkan tahanan ke Vcc diluar chip IC mikrokontroler.
30
+5V
100 10 F
a b c d e f g
Tampilan 7-Segment
10 K
30 pf
P3.0 EA/VPP P3.1 ALE / PROG PSEN P3.2 P2.7 P3.3 P2.6 P3.4 P2.5 P3.5 P3.6 P2.4 P3.7 P2.3 XTAL 1 P2.2 P2.1 XTAL 2 P2.0 GND
30 pf
Berikut ini merupakn tabel dari pemasangan pin-pin mikrokontroler AT89S51 pada pada Perancangan Sistem Antrian Digital Berbasis Mikrkontrol AT89S51.
31
In / Out Input Input Input 0 volt Output 5 volt Output Output 5 volt
Ket P1.0 P1.1 P1.7 RST P3.0 P3.7 XTAL GND P2.0 P2.3 P2.4 P2.7 PSE ALE EA/VPP P0.7 P0.0 P0.6
Fungsi Masukan dari saklar Tidak terpakai Reset Tidak terpakai Osilator kristal 11.0592 MHz Ground Tidak terpakai Keluaran ke driver 7-Segment Tidak terpakai (Program Stoage Enable) Tidak terpakai(Address Lacth Enable) Externel Access Enable Keluaran ke Buzzer sebagai indikator Keluaran data 7-Segment Vcc
3.1.4 Blok Pemberi Informasi (Output) a. Blok Sevent Segment Pada blok ini penulis menggunakan 7_segment jenis Common Anoda (CA) dan driver 7_segment yang berfungsi untuk mengendalikan penyalaan digit 7_segment , rangkaian driver ini di buat dengan menggunakan transistor type C9012,dimana transistor ini berperan sebagai saklar (swicth) untuk menghubungkan Vcc 7_segment dengan catu daya +5V. Rangkaian blok 7_segment diperlihatkan pada Gambar 3.5.
32
b.
Buzzer Pada alat ini buzzer berfungsi untuk indikator bunyi atau penanda apabila saklar
di tekan dan memulai antrian berikutnya. Buzzer terhubung pada port 0.7 mikrokontroler, rangkaian buzzer menggunakan transistor type C9012 (general
purpose), pada dasarnya, buzzer di hubungkan ke tegangan Vcc 5 Volt, karena adanya transistor sebagai swicth , maka buzzer mendapatkan arus atau tidaknya tergantung dari kondisi transistor saat itu, jika transistor ON ( karena adanya arus low pada basis, dengan pemberian logika 0), maka buzzer mendapat tegangan Vcc, namun sebaliknya jika transistor OFF (karena adanya arus high pada basis, dengan pemberian logika 1), maka buzzer juga OFF. Tahanan 2,2 K pada kaki basis transistor berfungsi sebagai pembatas arus yang masuk melalui basis. Skema rangkaian buzzer di pelihatkan pada Gambar 3-6.
33
3.2 Prinsip Kerja Rangkaian Rangkaian ini bekerja berdasarkan adanya penekanan saklar. Saklar yang ditekan akan menjadi inputan pada mikrokontroler, kemudian mikrokontroler akan mengendalikan tampilan 7-segment untuk menunjukkan penghitungan data antrian dan, buzzer untuk indikator atau menandakan proses penghitungan antrian terdahulu telah selesai dan memanggil antrian berikutnya untuk melakukan transaksi.
34
3.3 Diagram Alur Program AT89S51 Sebelum membuat suatu program yang di rencanakan maka langkah awal dalam perancangan software adalah membuat suatu diagram alur atau flowchart sebagai acuan pembuatan listing program. Diagram alur program tersebut di perlihatkan oleh gambar 3.8 berikut ini :
35
Prinsip kerja diagram alur program adalah sebagai berikut : 1. Program di mulai dengan inisialisasi Timer yaitu dengan mengisi TMOD (Timer Mode Register) dengan 01H, TL0 (Timer 0 Low Byte) dengan 0B8H, dan TH0 (Timer 0 High Byte) dengan 8EH, artinya proses interupsi terjadi selama 25 ms yaitu dari proses penekanan saklar , penghitungan , penampilan data di seven segmen dan sampai buzzer berbunyi, list program : UTAMA: mov TMOD,#01H mov TL0,#0B8H mov TH0,#8EH ; memasukkan nilai 01H ke register TMOD ; memasukan nilai 0B8H ke register TL0 ; memasukan nilai 8EH ke register TH0
2.
Berikutnya adalah insialisasi Interupsi dengan mengisi TL0 (Timer 0 Low Byte) dengan 0B8H, dan TH0 (Timer 0 High Byte) dengan 8EH, list program : INTERRUPT : BACA: mov TL0,#0B8H mov TH0,#8EH ; memberikan nilai TL0 dengan nilai 0B8H ; memberikan nilai TH0 dengan alamat 8EH
3.
Selanjutnya Interupsi Timer 0 dan Interupsi global diaktifkan, dengan list program : setb ET0 setb EA ; memberikan bit 1 ke pin ET0 ( enable Timer 0 ) ; memberikan bit 1 ke EA ( aktifkan interupsi )
4.
Timer 0 dihidupkan , dengan list program : setb TR0 ; memberikan bit 1 ke TR0 ( aktifkan Timer 0 )
5.
Register 1 , 2 , 3 dan 4 di isi dengan 0, list program : AWAL: mov R1,#0 mov R2,#0 ; memberikan register 1 dengan nilai awal 0 ; memberikan register 2 dengan nilai awal 0
36
; memberikan register 3 dengan nilai awal 0 ; memberikan register 4 dengan nilai awal 0
6.
Data dari akumulator dikirim dan ditampilkan ke Port 0, kemudian discan secara berulang dari P2.7 ke P2.4, dengan list program : LOOP: mov A,R1 mov dptr,#ANGK movc A,@A+DPTR ; memasukan nilai di R1 ke A ; menunjuk data pointer ke ANGK ; menjumlahkan isi data pointer dengan akumulator mov P0,A clr P2.7 ; memasukan nilai a ke P0 ; memberikan P2.7 dengan nilai bit 0 ; memanggil subroutin delay ; memberikan bit 0 pada pin P2.7
; memasukan nilai R2 ke dalam A ; menunjuk ke data pointer ANGK ; menjumlahkan isi data pointer dengan akumulator
; memasukan nilai A ke P0 ; memberikan bit 0 pada pin P2.6 ; memanggil subroutin delay ; memberikan bit 0 pada pin P2.6
; memasukan nilai R3 ke dalam A ; menunjuk ke data pointer ANGK ; menjumlahkan isi data pointer dengan akumulator
mov P0,A
; memasukan nilai A ke P0
37
clr
P2.5
; memberikan bit 0 pada pin P2.5 ; memanggil subroutin delay ; memberikan bit 0 pada pin P2.5 ; memasukan nilai R2 ke dalam A ; menunjuk ke data pointer ANGK ; menjumlahkan isi data pointer dengan akumulator
; memasukan nilai A ke P0 ; memberikan bit 0 pada pin P2.4 ; memanggil subroutin delay ; memberikan bit 0 pada pin P2.4 ; kembali ke loop
7.
Apabila R6 dan R5 sama dengan 0 maka P0.7 diberi logika 1 (non aktifkan buzzer) kemudian baca port 1, tetapi apabila R6 dan R5 tidak sama dengan 0 maka proses berikutnya baca port 1, dengan list program : djnz R6,SKIP ; mengurangi satu nilai R6 jika R6 tidak sama dengan 0 loncat ke SKIP djnz R5,SKIP ; mengurangi satu nilai R5 jika R5 tidak sama dengan 0 loncat ke SKIP setb P0.7 ; memberikan pin P0.7 dengan data 1
; memasukan nilai P1 ke A
cjne A,#0FFH,TEKAN ; Jika A tidak sama dengan 0FFH loncat ke subroutin TEKAN sjmp BACK ; Loncat ke BACK
38
8.
Langkah berikutnya jika apakah saklar ditekan ? jika ya kemudian bunyikan buzzer (isi P0.7 dengan logika 0) dan naikkan indeks data R2 dengan 1.
TEKAN: cjne A,#0FEH,BALIK ; Jika A tidak sama dengan 0FEH loncat ke Keluar TM TS : jb : jnb P1.0,TM P1.0,TS ; Loncat ke TM jika P1.1 sama dengan 1 ; Loncat ke TS jika P1.1 tdk sama dengan 1
; Subroutin untuk mengurangi efek Debaunce ; Loncat ke TS jika P1.1 tdk sama dengan 1 ; Mengurangi satu nilai accumulator jika acc tidak sama dengan 0 loncat ke DBNLESS
clr
P0.7
; memberikan bit 0 pada P0.7 ; memasukan nilai 0H ke R6 ; memasukan nilai AH ke R5 ; memberikan R4 ditambah 1 ; memanggil prosedur UJI_TEKAN
call UJI_TEKAN
cjne R4,#0AH,BACK
39
cjne R3,#0AH,BACK
cjne R2,#0AH,BACK
cjne R1,#0AH,BACK
mov R1,#0 mov R2,#0 mov R3,#0 mov R4,#0 jmp BACK
; memasukan register 1 sama dengan 0 ; memasukan register 2 sama dengan 0 ; memasukan register 3 sama dengan 0 ; memasukan register 4 sama dengan 0 ; Loncat ke BACK
UJI_TEKAN: cjne R2,#1H,BALIK cjne R1,#0H,BALIK ; Jika R2 tdk sama dengan 1H loncat ke BALIK ; Jika R1 tdk sama dengan 0H loncat ke BALIK
DELAY : mov R7,#100 DELAY1: mov R6,#25 DELAY2: djnz R6,DELAY2 djnz R7,DELAY1 ret
40
BACK BALIK
: ret : ret
; return ; return
ANGK : db 11000000b db 11111001b db 10100100b db 10110000b db 10011001b db 10010010b db 10000010b db 11111000b db 10000000b db 10010000b end
; Angka 0 ; Angka 1 ; Angka 2 ; Angka 3 ; Angka 4 ; Angka 5 ; Angka 6 ; Angka 7 ; Angka 8 ; Angka 9
3.4
Pemrograman Mikrokontroler AT89S51 Pemrograman Mikrokontroler dilakukan dengan cara menuliskan program ke
memori EEPROM mikrokontroler AT89S51 dengan bantuan perngkat DT51 Downloader. Pada pemrograman ini, penulis menggunakan pemrograman secara serial yaitu melalui port serial PC (COM1). Sebelum melakukan pemrograman terlebih dahulu melakukan pengaturan Timer untuk menentukan kecepatan tranfer data (Baudrate) pada komunikasi port serial. Dengan mengubah bit SMOD yang terletak pada register PCON (Power Control) menjadi set (kondisi awal saat sistem di-reset adalah clear) maka baudrate pada mode 1 , 2 , dan 3 akan berubah menjadi dua kali lipat kondisi awal. Pada mode 1 , 2 , dan 3 baudrate dapat diatur dengan timer 1 , namun biasanya digunakan timer mode 2 (8 bit auto-reload) yang hanya menggunakan register TH1.
41
Pengiriman bit data terjadi tiap kali 1 Overflow sebanyak 32 kali , sehingga dapat di simpulkan bahwa ;
Apabila diinginkan baudrate sebesar 9600 bps maka Timer 1 harus diatur agar 1 Over-flow setiap detik . 9600 x 32 Timer 1 Over-flow setiap kali TH1 mencapai nilai limpahan (over-flow) dengan frekuensi sebesar fosc / 12 dalam periode 12 / fosc . Dari informasi ini akan di temukan formula berikut ;
Dengan frekuensi osilator mikrokontrol AT89S51 sebesar 11,0592 MHz , TH1 adalah 253 atau 0FDH. 3.4.1 Perangkat DT-51TM Low Cost Micro System v2.0 Rangkaian Development system mikrokontroler yang digunakan adalah DT51 low Cost Micro System v2.0. Rangkaian ini merupakan suatu modul single chip dengan mikrokontroler AT89S51 dan kemampuan komunikasi serial secara UART serta Insystem Programming.
42
Spesifikasi Hardware : 1. Mikrokontroler AT89S51 dengan 4Kbyte Flash memory. 2. Memiliki hingga 32 pin jalur input/output dengan pull-up. 3. Rangkaian RC reset, tombol reset, serta brown-out detector. 4. Frekuensi osilator sebesar 11,0592 MHz. 5. Tersedia jalur komunikasi serial UART RS-232 yang telah disempurnakan, dengan konektor RJ11 6. Tersedia port untuk pemograman secara ISP. 7. Tegangan input 9-12 VDC pada Vin dan tegangan output 5 VDC pada Vout. Dalam modul DT51 low Cost Micro System v2.0 ini disertakan 2 perangkat kabel yaitu kabel AT89 ISP Programmer dan kabel serial. Kabel AT89S51 ISP Programmer digunakan sebagai sarana pemrograman ISP (In System Programing) ,sedangkan kabel serial digunakan untuk komunikasi serial mikrokontroler dengan PC.
1. Pemasangan kabel AT89 ISP Programmer Kabel pemograman ISP AT89 memiliki dua konektor, DB25 dan Black Housing 10 pin. Pemasangan kabel ini dapat dilihat pada gambar 3.13. Konektor DB25 dihubungkan dengan Parallel Port komputer sedangkan Black Housing dihubungkan dengan target board.
43
2. Pemasangan Kabel Serial DT-51 dapat berkomunikasi secara serial dengan PC. Kabel serial digunakan untuk menghubungkan PC dan DT-51 melalui port serial (konektor DB9). Port serial pada PC sering disebut COM1 dan COM2. Koneksi kabel serial dengan PC dapat dilihat pada gambar 3.10. Konektor female DB9 dihubungkan ke salah satu Serial Port PC dan konektor male DB9 dihubungkan ke DT-51.
3.4.2 Perancangan Perangkat Lunak (Software) Dalam perancangan perangkat lunak ini penulis menggunakan program bantuan yaitu : NOTEPAD.EXE, ASM51.EXE, dan DT51Lwin.EXE 1. NOTEPAD.EXE, digunakan sebagai editor. Listing program berbahasa assembly ditulis dan diubah menggunakan Notepad. Listing program tersebut disimpan dengan format (nama file).ASM. 2. ASM51.EXE, digunakan sebagai hex assembler. ASM51 akan mengubah listing program yang sudah dibuat Notepad menjadi file hexadesimal. Hasil proses ini akan menghasilkan file (nama file).HEX , file ini adalah file yang akan di download ke memori EEPROM Mikrokontroler AT89S51. 3. DT51Lwin.EXE, merupakan software Downloader untuk mendownload program ke memori EEPROM IC Mikrokontroler AT89S51.
44
3.4.3 Proses Download Program ke Mikrokontroler AT89S51 Langkah langkah men men-download program ke mikrokontroler AT89S51 : 1. Menuliskan listing program program pada Notepad kemudian program disimpan dalam format (nama file).ASM. 2. Mengubah file (nama file).ASM menjadi format (nama file). HEX yang dapat di didownload ke DT-51. Langkah ini disebut juga proses assembling. Program yang 51. digunakan untuk melakukan proses tersebut adalah ASM51.EXE. Proses assembling dilakukan dengan mengetikkan ASM51 (nama file).ASM pad MSpada DOS promp.
45
4. Mengatur komunikasi port serial melalui COM Option, pilih COM1. 5. Mengatur Baudrate pemrograman mel melalui Baudrate Option, pilih 9600 bps
6. Membuka file .Hex yang akan di download melalui menu Open File & Download. Hex
46
7. Menjalankan proses download program dengan menekan tombol ReDownload , dan tunggu sampai proses pengisian program selesai.