BAB III PERANCANGAN ALAT
3.1 Diagram Blok Rangkaian
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
blok rangkaian di perlihatkan pada
Gambar 3-1. INPUT
PENGOLAH
OUTPUT
Saklar
Mikrokontroler AT89S51
• 7-Segmen • Buzzer
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
catu daya di
perlihatkan pada Gambar 3.2.
Gambar 3.2 Skema rangkaian catudaya
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.
Gambar 3.3 Skema rangkaian saklar sebagai inputan
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.
3.1.3 Blok Pengolah (Proses)
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
Skema rangkaian mikrokontroler AT89S51 diperlihatkan pada Gambar 3.4. 5V R pack 10K
AT89S51 saklar
+5V 100
10 µF
10 K
30pf
30pf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RESET
VCC 40 P0.0 39 P0.1 38 P0.2 37 36 P0.3 P0.4 35 P0.5 34 P0.6 33 P0.7 32
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 XTAL1 P2.2 P2.1 XTAL2 P2.0 GND
31 30 29 28 27 26 25 24 23 22 21
Tampilan 7-Segment
a b c d e f g
Buzzer Driver 7-Segment
XTAL 11, 0598MHz
Gambar 3.4 Skema rangkaian Mikrokontroler AT89S51.
Berikut ini merupakn tabel dari pemasangan pin-pin mikrokontroler AT89S51 pada pada Perancangan Sistem Antrian Digital Berbasis Mikrkontrol AT89S51.
31
Tabel 3-1 Pemasangan pin-pin pada mikrokontroler AT89S51
Pin
In / Out
Ket
Fungsi
1
Input
P1.0
Masukan dari saklar
2-8
-
P1.1 – P1.7
Tidak terpakai
9
Input
RST
Reset
10-17
-
P3.0 – P3.7
Tidak terpakai
18-19
Input
XTAL
Osilator kristal 11.0592 MHz
20
0 volt
GND
Ground
21-24
-
P2.0 – P2.3
Tidak terpakai
25-28
Output
P2.4 – P2.7
Keluaran ke driver 7-Segment
29
-
PSE
Tidak terpakai (Program Stoage Enable)
30
-
ALE
Tidak terpakai(Address Lacth Enable)
31
5 volt
EA/VPP
Externel Access Enable
32
Output
P0.7
Keluaran ke Buzzer sebagai indikator
33-39
Output
P0.0 – P0.6
Keluaran data 7-Segment
40
5 volt
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
Gambar 3.5 Skema Rangkaian 7_segment.
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.
Gambar 3-6. Skema rangkaian buzzer
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.
Gambar 3.7 Rangkaian Keseluruhan
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 :
Gambar 3.8 Diagram Alur Program
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:
2.
mov TMOD,#01H
; memasukkan nilai 01H ke register TMOD
mov TL0,#0B8H
; memasukan nilai 0B8H ke register TL0
mov TH0,#8EH
; memasukan nilai 8EH ke register TH0
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:
3.
mov TL0,#0B8H
; memberikan nilai TL0 dengan nilai 0B8H
mov TH0,#8EH
; memberikan nilai TH0 dengan alamat 8EH
Selanjutnya Interupsi Timer 0 dan Interupsi global diaktifkan, dengan list program :
4.
setb ET0
; memberikan bit 1 ke pin ET0 ( enable Timer 0 )
setb EA
; memberikan bit 1 ke EA ( aktifkan interupsi )
Timer 0 dihidupkan , dengan list program : setb TR0
5.
; memberikan bit 1 ke TR0 ( aktifkan Timer 0 )
Register 1 , 2 , 3 dan 4 di isi dengan 0, list program : AWAL:
mov R1,#0
; memberikan register 1 dengan nilai awal 0
mov R2,#0
; memberikan register 2 dengan nilai awal 0
36
6.
mov R3,#0
; memberikan register 3 dengan nilai awal 0
mov R4,#0
; memberikan register 4 dengan nilai awal 0
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
; memasukan nilai di R1 ke A
mov dptr,#ANGK
; menunjuk data pointer ke ANGK
movc A,@A+DPTR
; menjumlahkan isi data pointer dengan akumulator
mov P0,A
; memasukan nilai a ke P0
clr
; memberikan P2.7 dengan nilai bit 0
P2.7
call delay
; memanggil subroutin delay
setb p2.7
; memberikan bit 0 pada pin P2.7
mov A,R2
; memasukan nilai R2 ke dalam A
mov dptr,#ANGK
; menunjuk ke data pointer ANGK
movc A,@A+DPTR
; menjumlahkan isi data pointer dengan akumulator
mov P0,A
; memasukan nilai A ke P0
clr
; memberikan bit 0 pada pin P2.6
P2.6
call delay
; memanggil subroutin delay
setb
P2.6
; memberikan bit 0 pada pin P2.6
mov A,R3
; memasukan nilai R3 ke dalam A
mov dptr,#ANGK
; menunjuk ke data pointer ANGK
movc A,@A+DPTR
; 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
call delay
; memanggil subroutin delay
setb
P2.5
; memberikan bit 0 pada pin P2.5
mov A,R4
; memasukan nilai R2 ke dalam A
mov dptr,#ANGK
; menunjuk ke data pointer ANGK
movc A,@A+DPTR
; menjumlahkan isi data pointer dengan akumulator
7.
mov P0,A
; memasukan nilai A ke P0
clr
; memberikan bit 0 pada pin P2.4
P2.4
call delay
; memanggil subroutin delay
setb
P2. 4
; memberikan bit 0 pada pin P2.4
jmp
loop
; kembali ke loop
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
SKIP: mov A,P1
; 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
: jb
P1.0,TM
; Loncat ke TM jika P1.1 sama dengan 1
TS
: jnb
P1.0,TS
; Loncat ke TS jika P1.1 tdk sama dengan 1
mov A,#tunggu clr P0.7
; memberikan pin P0.7 dengan data 0
DBNLESS :
; Subroutin untuk mengurangi efek Debaunce
jnb
P1.0,TS
djnz acc, DBNLESS
; 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
mov R6,#0H
; memasukan nilai 0H ke R6
mov R5,#0AH
; memasukan nilai AH ke R5
inc
; memberikan R4 ditambah 1
R4
call UJI_TEKAN
; memanggil prosedur UJI_TEKAN
cjne R4,#0AH,BACK
; Jika R4 tidak sama dengan 0AH loncat ke BACK
mov R4,#0
; memasukan R4 dengan nilai 0
inc R3
; memberikan R3 ditambah 1
39
cjne R3,#0AH,BACK
; Jika R3 tidak sama dengan 0AH loncat ke BACK
mov R3,#0
; memasukan R3 dengan nilai 0
inc R2
; memberikan R2 ditambah 1
cjne R2,#0AH,BACK
; Jika R2 tidak sama dengan 0AH loncat ke BACK
mov R2,#0
; memasukan R2 dengan nilai 0
inc R1
; memberikan R1 ditambah 1
cjne R1,#0AH,BACK
; Jika R1 tidak sama dengan 0AH loncat ke BACK
mov R1,#0
; memasukan register 1 sama dengan 0
mov R2,#0
; memasukan register 2 sama dengan 0
mov R3,#0
; memasukan register 3 sama dengan 0
mov R4,#0
; memasukan register 4 sama dengan 0
jmp BACK
; Loncat ke BACK
UJI_TEKAN: cjne R2,#1H,BALIK
; Jika R2 tdk sama dengan 1H loncat ke BALIK
cjne R1,#0H,BALIK
; Jika R1 tdk sama dengan 0H loncat ke BALIK
DELAY : mov R7,#100
; prosedur delay
DELAY1: mov R6,#25
; prosedur delay
DELAY2: djnz R6,DELAY2
; prosedur delay
djnz R7,DELAY1
; prosedur delay
ret
40
BACK
: ret
; return
BALIK
: ret
; return
ANGK : db 11000000b
; Angka 0
db 11111001b
; Angka 1
db 10100100b
; Angka 2
db 10110000b
; Angka 3
db 10011001b
; Angka 4
db 10010010b
; Angka 5
db 10000010b
; Angka 6
db 11111000b
; Angka 7
db 10000000b
; Angka 8
db 10010000b
; Angka 9
end
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 ;
Baudrate (jumlah bit yang terkirim tiap detik) adalah :
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.
Gambar 3.9 Koneksi kabel ISP Programmer
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.
Gambar 3.10 Koneksi kabel Serial
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 didi download ke DT-51. 51. Langkah ini disebut juga proses assembling. Program yang digunakan untuk melakukan proses tersebut adalah ASM51.EXE. Proses assembling dilakukan dengan mengetikkan ”ASM51 (nama file).ASM” pad pada MSDOS promp.
Gambar 3.11 Konversi File .asm ke file.Hex
3. Menjalankan Software DT51Lwin.EXE
Gambar 3.12 Program DT51Lwin.EXE
45
4. Mengatur komunikasi port serial melalui COM Option, pilih COM1. 5. Mengatur Baudrate pemrograman mel melalui Baudrate Option, pilih 9600 bps
Gambar 3.1 3.13 Pengaturan Port dan Baudrate
6. Membuka file .Hex Hex yang akan di download melalui menu Open File & Download.
Gambar 3.1 3.14 Proses Men-load file untuk di Download.
46
7. Menjalankan proses download program dengan menekan tombol ReDownload , dan tunggu sampai proses pengisian program selesai.
Gambar 3.15 Proses Pengisian Program
Gambar 3.16 Proses Pengisian Selesai.