Page 1
[email protected]
Pengertian Mikrokontroler
Mikrokontroler adalah salah satu dari bagian dasar suatu sistem komputer. Meskipun
mempunyai bentuk yang jauh lebih kecil dari pada suatu komputer pribadi,
mikrokontroler dibangun dari elemen-elemen dasar yang sama. Secara sederhana,
komputer akan menghasilkan output spesifik berdasarkan input yang diterima dan
program yang dikerjakan.
Pada tahun 1970 mikroposesor (‘computer on a chip’) intel 4004 pertama diproduksi
secara masal, pertumbuhannya sangat cepat. Pengembangan mikoprosesor
dengan menggunakan teknik pabrikasi yang sama dan konsep pemrograman
yang sama melahirkan mikrokontroler. Mikrokontroler tidak dikenal secara luas
karena hanya ditujukan untuk komunitas teknik. Mikroprosesor adalah cpu computer,
untuk dapat digunakan secara umum,masih diperlukan:
• Memory (RAM, ROM) dan juga decoder memory
• I/O dan decoder I/O
• Piranti khusus (Interupsi, timer, counter, etc)
• Clock Generator
Seperti umunya komputer, mikrokonroler adalah alat yang mengerjakan intruksi-
intruksi yang di berikan kepadanya. Artinya,bagian terpenting dan utama suatu sistem
terkkomputerisasi adalah program itu sendiri yang dibuat oleh seorang programer.
Program ini menginstrusikan komputer untuk melakukan jalinan yang panjang dari
aksi-aksi sederhan untuk melakukan tugas yang lebih kompleks yang diinginkan oleh
Page 2
[email protected]
programer.
Mikrokontroler didesain sebagai True computer on a chip, jadi mikrokontroler
sudah mempunyai piranti-piranti tambahan untuk membangun suatu sistem computer
digital. Mikrokontroler dirancang dengan intruksi yang bisa mengakses piranti
terprogram dan dioptimalkan untuk instruksi bit dan byte, sementara computer PC
didesain dengan instruksi untuk mengases data data multy byte.
Moikrokontroler merupakan sistem komputer yang seluruh atau sebagian besar
elemennya dikemas dalam satu chip IC, sehingga sering juga di sebut dengan single
chip microcomputer. Mikrokontroler biasa dikelompokan dalam satu keluarga,
masing masing mikrokontroler mempunyai spesifikasi tersendiri namun masih
kompatibekl dalam pemprogramanya. Misalnya keluarga MCS-51 yang di produksi
oleh ATMEL sepeti AT89C51, AT89S52 dengan kapasitas memori program internal
sebesar 8kByte dan 3buah timer AT98cX051 jumlah port 2 dan sebagainya.
Kontruksi Mikrokontroler
Page 3
[email protected]
Gambar Diagram Blok Arsitektur AT89X51/52
Pin-pin Mikrokontroler
Page 4
[email protected]
Gambar Susunan Pin Atmel-51
Fungsi masing-masing pin pada mikrokontroler :
VCC
Berfungsi sebagai sumber tegangan +5v
GND
Berfungsi sebagai pentanahan (ground)
Port0
Port 0 adalah masukan/keluaran 8 bit dengan nam P0.0-P0.7 jenisnya kerap
terbuka masukan dua arah (open drain bi directional I/O port). Jika port 0
berlogika 1 maka dapat di gunakan sebagai masukan yang mempunyai
impedansi tinggi.
Selain sebagai berfungsi sebagai masukan/keluaran, port 0 juga berfungsi
Page 5
[email protected]
sebagai
1. Multipleks antara byte alamat rendah (A0 s/d A7) dan data (D0 s/d 07) pada
saat mengakses memori program eksternal atau memori data internal.
2. Masukan byte kode program selama pemprograman flas memori (memori
program internal atau onchip)dan keluaran saat verifikasi. Resistor pullup
dibutuhkan selama verivikasi.
Port1
Port 1 adalah masukan/keluaran 8 bit dengan nama masing-masng P1.0-P1.7
yang bersifat dua arah. Port 1 sudah di pasang resitor pullup secara internal. Jika
logika satu di tuliskan pada port 1 maka keluaran akan berlogika 1 dan dapat di
gunakan sebagai masukan.
Fungsi lain port 1 :
a. Untuk mikrokontoler AT89C51/52
Port 1 sebagaoi masukan alamat rendah pada saat pemprograman
memori flas internal dan verifikasi
Khusus untuk AT89C52 port P1.0 dan P1.1 mempunyai fungsi lain
yaitu
Pin Fungsi
Page 6
[email protected]
P1.0 T2 (masukan pencacah eksternal ke timer/counter
2)keluaran clock.
P1.1 T2EX (Timer/counter 2 reloed trigger dan kendali arah)
Tabel Fungsi dari mikrokontroler AT89C52 di port P1.0 dan P1.1
b. Untuk mikrokontroler AT89Cx051
Port 1 sebagai masukan byte kode program saat pemprograman dan
keluaran kode program saat verivikasi.
Port P1.0 dan P1.1 membutuhkan resistor pull-up dan mempunyai fungsi
lain yaitu :
Pin Fungsi
P1.0 Masukan positif (AND) untuk komparator analog
P1.1 Masukan negatif (AN1) untuk komparator analog
Tabel Fungsi dari mikkrokontroler AT89Cx051 di port P1.0 dan P1.1
Port2 (Pada AT89CX051 tidak ada)
Port 2 sama dengan port 1 yautu masukan/keluaran 8 bit dengan nam masing-
masing P1.0-P1.7 yang bersifat dua arah. Port 2 sudah di pasang resistor pullup
secara internal. Jika logika 1 di tuliskan pada port 2 maka keluaran akan
berlogika 1 dan dapat digunakan sebagai masukan.
Fungsi lain port 2 adalah :
Sebagai byte alamat tinggi pada saat menjalankan program dan memori
Page 7
[email protected]
program eksternal dan mengakses data data pada memori dat eksternal
dengan mengunakan pengalamatan 16 bit (intruksi MOVX@DPTR)
sedangjan jika mengunakan pengalamatan 8 bit (intrksi MOX @RI)maka
port 2 berisi SFR P2.
Sebagai bit alamat atas (AB s/d A12 untuk AT89C51 dan AB s/d A13 untuk
AT89C52) dan kendali saat pemprograman memori flas internal dan
verivikasi.
Port3
Port 3 sama denga port 1 dan port 2 yaitu masukan/keluaran 8 bit dengan nama
masing-masing P3.0 s/d P3.7
Yang bersifat dua arah. Port 3 sudah di pasang resistor pullup secara internal.
Jika logika 1 dituliskan pada port 3 maka keluaran akan berlogika 1 dan dapat
digunakan sebagai masukan.
Selain sebagai masukan/keluaran biasa, port 3 juga mempunyai fungsi khusus
seperti pada tabel di bawah
Page 8
[email protected]
Pin Port Fungsi khusus AT89C52/51 AT89CX
051
P3.0 RXD (port masukan serial) Ada Ada
P3.1 TXD (port keluaran serial) Ada Ada
P3.2 INT0 (interupsi eksternal 0, aktif rendah) Ada Ada
P3.3 INT1 (interupsi internel 1, aktif rendah) Ada Ada
P3.4 T0 (masukan eksternal timer 0) Ada Ada
P3.5 T1 (masukan eksternal timer 1) Ada Ada
P3.6 WR (signal tulis untuk memori eksternal,
aktif rendah)
Ada Tidak ada
P3.7 RD (signal baca untuk memori eksternal,
aktif rendah)
Ada Tidak ada
Tabel Fungsi khusus mikrokontroler AT89C51/52 di port 3
Fungsi lain adalah sebagai masukan signal signal kendali pada saat pemprograman
memori flash dan ferivikasi. Khusus pada AT89Cx051 P3.6 tidak ada pin yang keluar
dari IC karena digunakan secara internal untuk membaca keluaran komparator analog.
Page 9
[email protected]
RST
Berfungsi sebagai masukan reset. Jika RST diberi logika tinggi dalam waktu 2 siklus
mesin maka mikrokontroler akan di rest. Pada AT89CX051 pin RST juga di gunakan
sebagai masukan tegangan pemprograman (VPP) pada saat tegangan memori flash
internal.
ALE/PROG (AT89CX051 tidak punya)
Signal Address Latch Enable (ALE) dugunakan untuk mengaktifkan IC latc agar data
alamat rendah di simpan. ALE aktif ketika mengakses program eksternal. Pin ini juga
digunakan untuk memberikan pulsa pemprograman memori flas internal. Dalam
keadaan normal ALE mengeluarkan pulsadengan frekuensi konstan yaitu 1/6
frekuensi osilator. Sehingga dapat digunakan untuk pewaktuaan eksternal.
PSEN (Program Store Enable) (Pada AT89XC051 tidak ada)
PSEN adalah keluaran signal strobe untuk membaca kode program. Ketika
AT89C51/52 mengeksekusi memori program eksternal signal PSEN diaktifkan dua
kali setiap siklus mesinya.
EA/Vpp (Eksternal Access Enable) (Pada AT89XC051 tidak ada)
EA harus dihubungkan dengan ground ika semua program diakses dari memori
program ekstrenal yang dimulai dari alamat 0x0000 s/d 0xFFFF. Jika program yang
akan dieksekusi berasal dari memori program internal dan eksternal maka EA
dihubungkan dengan VCC.
Pin EA juga digunakan sebagai masukan teganggan pemprograman ketika akan
memprpogram memori flash internal.
Page 10
[email protected]
XTAL-1
Masukan penguat osilator membalik dan masukan rangkaian clock internal.
XTAL-2
Keluaran dari penguat osilator membalik.
Struktur Memori
AT89S52 memiliki struktur memori program dan memori data terpisah yang
masing-masing berkapasitas 64 KByte. Seperti yang terlihat pada Gambar 2.3
memori data internal dialamati oleh (Random Acces Memory) RAM Address
Register (Register Alamat RAM) sedangkan memori program internal (Flash
PEROM) dialamati oleh Program Address Register (Register Alamat
Program). Adanya struktur memori yang terpisah menyebabkan memori data
(RAM) internal dan memori program internal (Flash PEROM) memiliki alamat
awal yang sama (alamat $00H), namun secara fisik kedua memori
tersebut tidak saling berhubungan.
Memori Program Internal (Flash PEROM)
AT89S52 memiliki 8 Kbyte Flash PEROM (Programmable and Erasable Read
Only Memory), yaitu ROM yang dapat ditulis ulang atau dihapus. Flash
PEROM di dalam AT89S52 menggunakan Atmel’s High-Density Non
Volatile Technology yang memiliki kemampuan untuk ditulis ulang hingga
1000 kali. Untuk dapat mempergunakan memori program internal, pin 31 ( EA
Page 11
[email protected]
/Vpp) diberi logika ‘1’. Dengan kapasitas memori program internal sebesar 8
Kbyte, maka memori program internal memiliki alamat 0000h hingga 0FFFh. Bila
dikehendaki penggunaan memori eksternal dengan alamat yang sama, maka pin
31 (EA /Vpp) diberi logika ‘0’.
Pin 29 AT89S58 PSEN (Program Store Enable) digunakan untuk
membedakan antara pengaksesan memori program eksternal dan memori data
eksternal. Bila PSEN berlogika ‘0’ maka memori program eksternal aktif,
sedangkan bila PSEN berlogika ‘1’ maka memori data eksternal yang aktif.
Memori Data (RAM) Intrenal
AT89S52 memiliki Memori Data Internal (RAM Internal) dengan
kapasitas 256 Byte. RAM internal AT89S51 terdiri dari dua bagian yaitu 128 Byte
bagian bawah dan 128 Byte bagian atas. Memori program dan memori data
internal ditunjukkan pada Gambar.
Gambar Memori program dan data AT89S52
Page 12
[email protected]
Memori data internal AT89S52 bagian bawah menempati alamat 00H-7FH
yang digunakan sebagai pengelompokan register (Register Banks),
segmen memori yang dapat dialamati secara per bit (Bit Addressable
Segment), dan area memori data yang dapat digunakan untuk berbagai
keperluan. Memori data internal AT89S52 bagian atas menempati alamat
80H-FFH yang digunakan sebagai SFR (special function register).
Pembagian memori data internal ditunjukkan pada gambar (a), dan memori
data bagian bawah pada gambar (b).
(a) (b)
Gambar Memori data (RAM) internal AT89S51
Page 13
[email protected]
Spesial Function Register (SFR)
SFR merupakan register khusus yang digunakan sebagai kendali, buffer atau fungsi
khusus lainya. SFR dipetakan mulai alamat 0x80 s/d 0xFF. Tidak seluruh ruang
alamat diimplementasikan dengan suatu register.
0F8H 0FFH
0F0HB
000000000F7H
0E8H 0EFH
0E0HACC
000000000E7H
0D8H 0DFH
0D0HPSW
000000000D7H
0C8H T2CON #
00000000
T2MOD #
xxxxxx00
RCAP2L #
00000000
RCPA2H #
00000000
TL2 #
00000000
TH2 #
00000000 0CFH
0C0H 0C7H
0B8HIP
XX0000000BFH
0B0HP3
111111110B7H
0A8HIE
0X0000000AFH
0A0HP2
11111111
AUXR1
XXXXXXX0
WDTRST
XXXXXXXX0A7H
098HSCON
00000000
SBUF
XXXXXXXX09FH
090HP1
11111111097H
088HTCON
00000000
TMOD
00000000
TL0
00000000
TL1
00000000
TH0
00000000
TH1
00000000
AUXR
XXX00XX008FH
080HP0
11111111
SP
00000111
DP0L
00000000
DP0H
00000000
DP1L
00000000
DP1H
00000000
PCON
0XXX0000087H
Tabel Peta Memori SFR AT89S52 beserta nilai awalnya.
Page 14
[email protected]
Kegunaan dan pemakaian register-register dasar tersebut antara lain sebagai berikut:
a. Program Counter
Program Counter (PC) dalam AT89S52 merupakan register dengan kapasitas 16
bit. Di dalam PC dicatat nomor memori program yang menyimpan instruksi
berikutnya yang akan diambil (fetch) sebagai instruksi untuk dikerjakan (execute).
Saat setelah reset PC bernilai 0000h. Hal ini berarti MCS51 akan segera
mengambil isi memori-program nomor 0 sebagai instruksi. Nilai PC otomatis
bertambah 1 setelah prosesor mengambil instruksi 1 byte. Pertambahan nilai PC
setelah menjalankan instruksi, tergantung pada jumlah byte instruksi
bersangkutan. Ada instruksi yang hanya 1 byte, ada instruksi yang sampai 4 byte.
b. Akumulator (ACC)
Akumulator AT89S52 memiliki lebar data 8 bit (1 Byte). Akumulator berfungsi
untuk menampung (accumulate) hasil dari hampir semua operasi aritmatik dan
operasi logika, serta digunakan pada proses pengambilan dan pengiriman data ke
memori eksternal.
c. Port
AT89S52 memiliki empat buah Port yaitu Port 0, Port 1, Port 2 dan Port 3 yang
terletak pada alamat 80H, 90H, A0H dan B0H.
d. Stack Pointer (SP)
Stack Pointer merupakan sebuah register 8 bit yang dipakai untuk menyimpan
alamat dari sebuah data. Isi register ini menunjukkan dimana data selanjutnya
yang harus diambil dari stack pada RAM internal.
Page 15
[email protected]
e. Program Status Word
Program Status Word (PSW) berfungsi mencatat kondisi prosessor setelah
melaksanakan sebuah instruksi. Tabel menunjukkan susunan bit-bit register PSW
pada mikrokontroler AT89S52.
PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0
CY AC F0 RS1 RS0 OV - P
Register PSW (Program Status Word).
Flag Carry (CY) berfungsi mendeteksi terjadinya kelebihan/limpahan pada
operasi penjumlahan atau terjadi peminjaman pada operasi pengurangan.
Flag Auxiliary Carry (AC) akan berlogika ‘1’ (set) bila terjadi limpahan dari bit
ketiga hingga keempat pada proses penjumlahan.
Flag 0 (F0) digunakan untuk tujuan umum yang disediakan untuk kebutuhan
pengguna.
Bit pemilih register Bank (RS1 dan RS0) digunakan untuk menentukan lokasi
Register Bank (R0 hingga R7) yang akan digunakan pada memori.
Flag Overflow (OV) akan berlogika ‘1’ (set) apabila pada operasi aritmetik
menghasilkan bilangan yang lebih besar dari 128 atau lebih kecil dari -128.
Bit Paritas (P) akan berlogika ‘1’ (set) apabila bit berlogika ‘1’ dalam akumulator
berjumlah ganjil, dan bit paritas (P) akan berlogika ‘0’ (clear) bila bit berlogika
‘1’ dalam akumulator berjumlah genap.
Page 16
[email protected]
f. Register B
Register B merupakan register dengan kapasitas 8 bit yang merupakan register
pembantu Akumulator saat menjalankan instruksi perkalian dan pembagian.
Register B juga dapat digunakan sebagai register serbaguna.
g. DPH dan DPL
Data Pointer High Byte (DPH) dan Data Pointer Low Byte (DPL) masing-masing
merupakan register dengan kapasitas 8 bit. Dalam pemakaiannya, kedua register
ini digabungkan menjadi satu register 16 bit yang dinamakan sebagai Data
Pointer Register (DPTR). Register ini biasa dipakai untuk mengakses kode atau
data yang terletak di memori eksternal.
h. Register Timer
AT89S52 memiliki tiga buah 16 bit Timer/Counter, yaitu Timer 0,Timer dan
Timer2. Timer 0 terletak di alamat 8AH untuk TL0, dan di alamat 8CH untuk
TH0. Timer 1 terletak di alamat 8BH untuk TL1, dan di alamat 8DH untuk
TH1.Timer 2 terletak di alamat 0C8H sampai dengan 0CFH
i. Register TMOD
Untuk mengatur mode kerja Timer 0 dan Timer 1, digunakan register TMOD yang
terletak di alamat 89H. Timer bisa diatur menjadi mode Timer 16 bit, Timer 13
bit, Timer 8 bit yang bisa isi ulang secara otomatis, atau 2 buah Timer 8 bit yang
terpisah. Selain itu, dapat juga diatur agar proses proses pencacahan timer bisa
Page 17
[email protected]
dikendalikan lewat sinyal dari luar IC AT89S51, atau timer dipakai untuk
mencacah sinyal-sinyal dari luar IC.
j. Register TCON
Untuk memulai proses pencacahan timer, menghentikan proses pencacahan timer
dan untuk memantau apakah terjadi limpahan dalam proses pencacahan
digunakan register TCON yang terletak di alamat 88H.
k. Register Port Serial
AT89S52 memiliki sebuah port komunikasi serial yang telah terintegrasi di dalam
keping IC mikrokontroler (on chip serial port) yang dapat digunakan untuk
berkomunikasi dengan peralatan lain yang juga menggunakan serial port seperi
modem, shift register.
l. Register SBUF
Register Port Serial terletak di alamat 99H dengan nama SBUF (Serial Buffer).
Penyangga (Buffer) berfungsi untuk proses pengiriman dan pengambilan data.
m. Register SCON
Untuk mengatur mode komunikasi serial, dapat dilakukan dengan mengubah isi
register SCON yang terletak pada alamat 98H.
n. Register Interupsi
AT89S52 memiliki lima buah interupsi dengan dua tingkat prioritas interupsi.
Interupsi akan selalu nonaktif setiap kali sistem AT89S52 reset. Register-register
yang berhubungan dengan interupsi adalah register pengaktif interupsi (Interrupt
Enable Register, IE) dan register prioritas interupsi (Interrupt Priority Register,
Page 18
[email protected]
IP). IE terletak di alamat A8H, dan berfungsi untuk mengatur keaktifan tiap-tiap
interupsi. IP terdapat di alamat B8H dan befungsi untuk menentukan prioritas
interupsi
Sistem Interupsi
Pelaksanaan program pada CPU mikrokontroler AT89S52 dapat
dihentikan sementara dengan cara meminta sebuah interupsi. Apabila
CPU mendapat permintaan interupsi, maka program counter akan diisi
alamat dari vektor interupsi. CPU kemudian melaksanakan rutin pelayanan
interupsi mulai dari alamat tersebut. Bila rutin pelayanan interupsi selesai
dilaksanakan, maka CPU AT89S52 kembali ke pelaksanaan program
utama yang ditinggalkan. Instruksi RETI (return from interupt routine) harus
digunakan untuk kembali dari layanan rutin interupsi. Instruksi ini digunakan
agar saluran interupsi kembali dapat dipakai.
Mikrokontoler AT89S52 menyediakan 5 sumber interupsi yaitu: interupsi eksternal
(Eksternal interupt) yang berasal dari pin INT0 dan INT1 interupsi timer (Timer
Interupt) yang berasal dari Timer 0 maupun Timer 1, dan yang terakhir adalah
interupsi port serial (Serial Port Interupt) yang berasal dari bagian penerima dan
pengirim port serial.
Masing-masing interupsi dapat diaktifkan dan dimatikan secara individual atau
dengan me-nol kan bit-bit IE (interup enable) dalam SFR.
Page 19
[email protected]
Alamat awal layanan rutin interupsi dari setiap sumber interupsi ditunjukkan pada
Tabel berikut.
Interupsi Alamat Prioritas Interupsi
INT0 03h 1
Interupsi Timer 0Bh 2
INT1 13h 3
Interupsi Timer 1 1Bh 4
Interupsi Port Serial 23h 5
Alamat Layanan Interupsi.
Ada dua buah register yang mengontrol interupsi, yaitu IE (Interupt Enable)
dan IP (Interupt Priority). Register IE berfungsi untuk mengaktifkan atau
menonaktifkan sumber interupsi, sedangkan register IP digunakan untuk
menentukan prioritas suatu sumber interupsi terhadap sumber interupsi lainnya,
yaitu apabila ada dua atau lebih interupsi secara bersamaan. Jika register IP tidak
didefinisikan, maka prioritas interupsi menggunakan urutan prioritas seperti
dicantumkan pada Tabel
Optocoupler
Ouptocoupler di bentuk dari penggabungan dari sebuah sumber cahaya dengan
phototransistor (Malvino, 1999:167). Dioda hanya sebagai sumber cahaya dipasang
langsung dengan sumber tegagan. Keluaran sumber cahaya akan berbanding lurus
denag tegangan masukan pada dioda cahaya. Dioda cahaya sebagai masukan biasa
Page 20
[email protected]
terdiri atas sutu/beberapa buah dioda untuk menambah intensitas cahya, demikian
pula dengan jenis cahaya yang di pakai, bisa cahaya infra merah atau cahay tampak
mata.
Aplikasi dari optocoupler yang semula berupa phototransistor berkembang menjadi
photothyristor dan opto isolator Triac drive. Kontruksi masing-masing jenis
optocoupler tersebut dapat di lihat pada gambar di bawah ini :
Gambar Jenis-jenis optocouplerKeteragan:
(a) Phototransistor Optocoupler
(b) Phototransistor Optocoupler
(c) Optosilator Triac driver
Pengunaan optocoupler adalah sebgai isolasi. Optocoupler merupakan komponen
yang digunakan sebagai kendali I/O untuk peralatan yang beroprasi dengan
teganggan rendah maupun teganggan tinggi, sehingga tidak terjadi kerusakan antara
pengendali dan peralatan yang dikendalikan.
Seven Segment
Sevet Segmen merupakan peraga angka yang dapat memperagakan angka dari 0
sampai 9. Seven Segment ini dibentuk oleh 7 buah segmen yang tersusun sedemikian
Page 21
[email protected]
rupa sehingga jika ada beberapa segmen tertentu yang aktif maka akan membentuk
sebuah angka. Penampil 7 segment yang digunakan adalah common anoda. Data yang
digunakan untuk menghasilkan angka atau huruf tertentu didapatkan dengan cara
seperti pada tabel.. jika A, B dan C hidup maka yang akan di tampilkan angka 7 dan
seterusnya.
.dtGambar Seven Segment
Gambar Rangkaian Dasar Seven Segment
Prinsip Kerja dari sevent segment adalah :
Jika saklar di a ditutup, maka arus mengalir dari Ground melalui tahanan
pembatas hingga LED segmen-a dan keluar melalui hubungan anoda biasa ke catu
Page 22
[email protected]
daya. Dengan demikian hanya segmen a saja yang menyala. Jika kita ingin
menampilkan angka 8 desimal pada peraga, saklar a, b, c, d, e, f, dan g ditutup,
sehingga pada rangkaian akan menyala decimal 8. Dalam hal ini tegangan ground
(LOW) mengaktifkan segmen LED.
Sevent segment disini di gunakan sebagai pewaktu untuk setiap pergantian iklan
dan kita dapat mengatur waktunya sesuai dengan keinginan kita.. Dalam alat ini
di pasang dua buah sevent segment..7 segment adalah komponen elektronika yang
berfungsi menmpilkan data dalam bentuk 7 buah led yang disususn membentuk
display. 7 Segment ada yang betipe common anoda (CA) atau common cathoda
(CA). Sedangakan proses penampilan data pada 7 segment tersebut dapat
menggunakan teknik scanning display. Biasanya digunakan IC serial shift register
seperti 74HC164, yang mampu mengeluarkan data QA-QG sebagai sumber input
bagi 7 segment.Untuk memberikan sumber daya ke sebuah 7 segment, maka basis
resistor yang men-drive 7 segment terebut harus diberi logika 0. Sementara itu,
kedelapan segment dari semua sevent segment di-parelkan dan dihubungkan juga
ke sebuah shift register SIPO.
Page 23
[email protected]
Data Karakter Angka Pada 7 Segment
P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0Heksa Karakter
Titik
(dt)Dt G F E D C B A
1 1 0 0 0 0 0 0 0xC0 0 Padam
1 1 1 1 1 0 0 1 0xF9 1 Padam
1 0 1 0 0 1 0 0 0xA4 2 Padam
1 0 1 1 0 0 0 0 0xB0 3 Padam
1 0 0 1 1 0 0 1 0x99 4 Padam
1 0 0 1 0 0 1 0 0x92 5 Padam
1 0 0 0 0 0 1 0 0x82 6 Padam
1 1 1 1 1 0 0 0 0xF8 7 Padam
1 0 0 0 0 0 0 0 0x80 8 Padam
1 0 0 1 0 0 0 0 0x90 9 Padam
0 1 0 0 0 0 0 0 0x40 0 nyala
0 1 1 1 1 0 0 1 0x79 1 nyala
0 0 1 0 0 1 0 0 0x24 2 nyala
0 0 1 1 0 0 0 0 0x30 3 nyala
0 0 0 1 1 0 0 1 0x19 4 nyala
0 0 0 1 0 0 1 0 0x12 5 nyala
0 0 0 0 0 0 1 0 0x02 6 nyala
0 1 1 1 1 0 0 0 0x78 7 nyala
0 0 0 0 0 0 0 0 0x00 8 nyala
0 0 0 1 0 0 0 0 0x10 9 nyala
Catatan : Logika 0 segment menyala, logika 1 segment padam
Page 24
[email protected]
Motor Steper
Motor stepper adalah salah satu jenis motor elektromagnetik yang dapat mengubah
masukan berupa sinyal digital menjadi keluaran yang berupa putaran. Berbeda
dengan motor DC biasa, yang berputar secara tetap selama mendapat energi listrik.
Pada motor stepper bergerak langkah demi langkah sesuai urutan pulsa digital yang
diberikan. Setiap perubahan yang tepat dari urutan kombinasi pulsa digital akan
menyebabkan motor bergerak beberapa derajat.
Pada umumnya motor stepper hanya mempunyai kumparan pada statornya sedangkan
pada bagian rotornya merupakan permanen magnet. Dengan model rotor seperti ini
maka motor stepper dapat diatur posisinya pada posisi tertentu dan atau berputar
kearah yang diinginkan, searah jarum jam atau sebaliknya.
Kecepatan motor stepper pada dasarnya ditentukan oleh kecepatan pemberian data
pada statornya. Semakin cepat data yang diberikan maka motor stepper akan semakin
cepat pula berputarnya. Pada kebanyakan motor stepper kecepatannya dapat diatur
dalam daerah frekuensi audio dan menghasilkan putaran yang cukup cepat.
Pada dasarnya motor stepper terdiri atas sebuah rotor yang dikelilingi stator. Rotor ini
merupakan magnet permanen, sedangkan stator merupakan magnet listrik. Apabila
stator dialiri arus listrik, maka terjadilah medan listrik. Karena kutub medan rotor dan
Page 25
[email protected]
kutub medan listrik pada stator sama, terjadilah gaya saling tolak menolak antar kutub
tersebut yang mengakibatkan rotor akan bergerak.
Motor stepper dibedakan menjadi dua macam berdasarkan magnet yang digunakan,
yaitu tipe permanen magnet dan tipe variabel reluktansi. Pada umumnya motor
stepper yang digunakan saat ini adalah motor stepper yang mempunyai variabel
reluktansi. Cara yang paling mudah untuk membedakan antara tipe motor stepper
diatas adalah dengan cara memutar motor dengan dengan tangan ketika tidak
dihubunglan dengan power supply.
Pada motor stepper yang mempunyai permanen magnet maka ketika diputar dengan
tangan akan terasa lebih tersendat karena adanya gaya yang ditimbulkan oleh
permanen magnet. Tetapi ketika menggunakan motor dengan variabel reluktansi
maka ketika diputar akan terasa lebih halus karena sisa reluktansinya cukup kecil.
Variabel Reluktansi Motor Stepper
Pada motor yang mempunyai variabel reluktansi maka semua lilitan pada ujungnya
dijadikan satu pada sebuah pin common. Untuk dapat menggerakan motor ini maka
aktivasi tiap-tiap lilitan harus sesuai urutannya.
Gambar berikut merupakan struktur dari gambar motor stepper dengan variabel
reluktansi dimana tiap stepnya adalah 300 mempunyai 4 buah kutub pada rotor dan 6
buah kutub pada statornya yang terletak saling berseberangan.
Page 26
[email protected]
Gambar Variabel Reluktansi Motor Stepper(Koselan, 2002:1)
Jika lilitan 1 dilewati mole arus, lilitan 2 dan 3 akan mati maka kumparan 1 akan
menghasilkan gaya tolakan kepada rotor dan rotor akan berputar sejauh 300 searah
jarum jam.
Jika kondisi seperti ini berulang terus menerus secara berurutan maka lilitan 2
dilewati arus kemudian lilitan 3 maka motor akan berputar secara terus menerus.
Step Lilitan 1 Lilitan 2 Lilitan 3
1 On Off Off
2 Off On Off
3 Off Off On
4 Off Off Off
1 On Off Off
Data pemberian pulsa pada variabel reluktansi motor stepper.
Kondisi on pada data diatas diartikan bahwa lilitan yang bersangkutan dilewati
arus sehingga menghasilkan gaya tolak pada rotor. Sedangkan kondisi off
diartikan bahwa lilitan tidak dialiri arus.
Page 27
[email protected]
Permanen Magnet
1. Unipolar Motor Stepper
Motor stepper dengan tipe unipolar adalah motor stepper yang memiliki lilitan
dengan masing-masing lilitan ditengah-tengahnya diberi tap seperti tampak
pada gambar.
Gambar Lilitan Stator Unipolar Motor Stepper(Koselan, 2002:1)
Motor ini mempunyai step tiap300 dan mempunyai dua buah lilitan yang
didistribusikan berseberangan 1800 diantara kutub pada stator. Sedangkan
pada rotornya menggunakan magnet permanen yang berbentuk silinder
dengan mempuyai 6 buah kutub, 3 kutub selatan dan 3 kutub utara.
Dengan konstruksi seperti ini jika dibutuhkan kepresisian dari motor stepper
yang lebih tinggi dibutuhkan pula kutub-kutub pada stator dan rotor yang
semakin banyak pula. Pada gambar motor tersebut akan bergerak setiap step
sebesar 300 dengan 4 bit urutan data (terdapat dua buah lilitan dengan tap,
total lilitan menjadi 4 lilitan).
Page 28
[email protected]
Ketika arus mengalir melalui tap tengah pada lilitan pertama akan
menyebabkan kutub pada stator bagian atas menjadi kutub utara sedangkan
kutub stator bagian bawah menjadi kutub selatan. Kondisi ini akan
menyebabkan rotor mendapat gaya tarik menuju kutub-kutub ini.
Ketika arus yang mengalir melalui lilitan 1 dihentikan dan lilitan 2 diberi arus
maka rotor akan bergerak lagi menuju kutub-kutub ini. Sampai disini rotor
sudah berputar sampai 300 atau 1 step.
Urutan data pemberian pulsa untuk motor stepper dengan tipe unipolar
ditunjukan pada table
Urutan pulsa motor stepper dengan tipe unipolar (Torsi Normal)
Step Lilitan 1a Lilitan 1b Lilitan 2a Lilitan 2b1 On Off Off Off2 Off Off On Off3 Off On Off Off4 Off Off Off On1 On Off Off Off
(Koselan. 2002:2)
Urutan pemberian pulsa motor stepper tipe unipolar (Torsi Besar)
Step Lilitan 1a Lilitan 1b Lilitan 2a Lilitan 2b1 Off On Off On2 Off On On Off3 On Off On Off4 On Off Off On1 Off On Off On
(Koselan. 2002:2)
Untuk meningkatkan torsi yang tidak terlalu besar maka dapat diberikan
urutan penberian dimana terdapat dua buah lilitan yang diberi arus pada satu
waktu yang sama. Dengan pemberian urutan data seperti ini akan
Page 29
[email protected]
menghasilkan torsi yang lebih besar dan tentunya membutuhkan daya yang
lebih besar.
2. Bipolar Motor Stepper
Motor dengan tipe bipolar ini mempunyai konstruksi yang hampir sama
dengan konstruksi motor stepper tipe unipolar namun tidak terdapat tap pada
lilitannya, seperti tampak pada gamba.
Gambar Lilitan Stator Bipolar Motor Stepper(Koselan, 2002:1)
Penggunaan motor dengan tipe bipolar ini membutuhkan rangkaian yang
sedikit lebih rumit untuk mengatur agar motor ini dapat berputar dua arah.
Biasanya untuk menggerakan motor stepper ini membutuhkan driver motor
yang sering dikenal sebagai H Bridge. Rangkaian ini akan mengontrol tiap-
tiap lilitan secara independen termasuk dengan polaritasnya untuk tiap-tiap
lilitan. Untuk mengontrol agar motor ini dapat berputar 1 step maka perlu
diberikan arus untuk tiap-tiap lilitan dengan polaritas tertentu pula.
Page 30
[email protected]
Perancangan alat dalam pembuatan alat sleading reklame berbasis mikrokontroler
meliputi perancangan perangkat keras (hardware) dan perancangan perangkat
lunak (software). Perancangan perangkat keras mencakup perancangan seluruh
bagian/blok/rangkaian pembentuk sistem. Perancangan perangkat lunak mencakup
perancangan program untuk mikrokontroler AT89S52 yang mengatur kerja sistem
dengan fungsi utama yaitu perintah sensor dalam mendeteksi warna putih dan hitam.
Alat ini bekerja dengan sistem mengulumg iklan dari atas ke bawah dan sebaliknya
dari bawah ke atas. Jadi kita dapat mengisi jumlah iklan sesuai dengan keinginan kita.
Sistem kendali sleading reklame berbasis mikrokontroler AT89S52 merupakan
aplikasi perpaduan antara sistem kendali dalam bentuk perangkat keras maupun
perangkat lunak, sehingga perlu dipersiapkan beberapa hal yang mendukung jalannya
penelitian.
Metode penulisan Tugas Akhir ini menggunakan teknik studi pustaka dan percobaan
laboratorium. Studi kepustakaan dilakukan untuk mencari materi yang mendukung
dan yang sesuai dengan materi Tugas Akhir ini, sedangkan percobaan laboratorium
dilakukan untuk menguji cara kerja yang sebenarnya alat yang akan dibuat dan
melakukan perbaikan jika terjadi kesalahan.
Page 31
[email protected]
Diagram Blok Rangkaian
Gambar Diagram Blok Rangkaian
Perencanaan rangkaian
Rangkain sensor dan komparator
Sleading reklame berbasis mikrokontroler ini menggunakan sensor yang berfungsi
sebagai pengepas posisi iklan. Dimana sensor ini di pasang di dekat reklame dan di
setiap sudut reklame di kasih tanda warna hitam agar sensor dapat mendeteksi iklan
dan iklan akan berhenti. Masing-masing sensor dipasang sedemikian rupa sehingga
output yang diumpankan ke mikrokontroller dapat diolah dan diteruskan ke motor
sebgai penggeraknya.
Komparator adalah pembanding. Prinsip kerja dari komparator adalah Output akan
mengeluarkan logic 1 saat tegangan input lebih besar dari pada tegangan referensi
MikrokontrolerAT89S52
Driver Steper
Layar Reklame
M. Steper
Driver 7 segment 7 segment
Driver sensor
Sensor
Page 32
[email protected]
dan output akan mengeluarkan logic 0 saat tegangan input lebih kecil dari pada
tegangan referensi.
Tegangan referensi (+V) > (-V) Vo = 1
Tegangan referensi (+V) < (-V) Vo = 0
Atau Jika tegangan referensi lebih kecil dari masukannya maka keluarannya
mendekati +VCC, tetapi apabila tegangan referensi lebih besar dari masukannya maka
tegangan keluarannya mendekati –VEE. Hal ini terjadi bila tegangan referensi
diberikan ke masukan membalik. Jika tegangan referensi diberikan ke masukan tak
membalik maka akan terjadi hal yang sebaliknya.
Page 33
[email protected]
Gambar Rangkaian Sensor dan Komparator
Page 34
[email protected]
Kompaator sebagai pengubah media sinyal dalam pengertian bahwa sinyal yang
diubah merupakan bentuk analog ke digital. Sinyal analog dapat diketahui apabila
dalam pengukuran dengan mengunakan alat bantu multimeter. Sedangkan sinyal
digital dapat diketahui perhitunganya dengan perubahan pada masing-masing
komparator apabila dalam keadaan On atau Off.
Rangkaian kendali
untuk menghidupkan dan mematikan motor tersebut pada perencangan ini
dikendalikan oleh sensor IC mikrokontroler yaitu sebagai sentral kendali penggerak
motor steper pada sleading reklame. Mikrokontroller mempunyai empat port 0, port
1, port 2, port 3, yang memiliki resistor pull up jika di gunakan sebagai masukan. Pin
pada port 0, port 1, port 2, port 3 akan berada pada posisi HIGH jika dalam keadaan
terbuka akan menjadi sumber arus jika dihubungkan dengan piranti eksternal ke
ground. Port 0 tidak memilki pull up dan akan mempunyai impedansi yang tinggi jika
digunakan sebagi masukan.
Page 35
[email protected]
Gambar Rangkaian Kendali
Page 36
[email protected]
Driver motor
Gambar Driver Motor
Driver motor ini merupakan driver motor yang mampu mengerakan motor secara
bolak balik dimana mengunakan transistor jenis BD139 dan 2N3055. Driver motor
disini mengunakan catu daya sendiri. Masukan dari driver motor ini adalah dari pin-
pin IC komparator LM339. Pada driver motor disini juga mengunakan resistor 4K7
dan dioda 1N4002. Motor yang digunkan dalam alat ini motor steper yang
mempunysi tegangan sebesar 12 volt. Dimana driver motor yang satu dengan yang
lain di paralelkan dan akan masuk kerangkaian kendali.
4K7
1N40
02
1N40
02
2N3055
4K7
D3
BD139
4K7
2N3055
1234
2N3055
D1
2N3055
BD139
1N40
02
L2
C12345
BD1391N
4002
4K7
L3L4
BD139
D2
12VDC
D0 L1
Page 37
TRAFO 5A
DI0DE 5ASWITCH
25220 VAC
+
2200uF/25V
CT24VDC
12
25
[email protected]
Rangkaian keseluruhan
Gambar Rangkaian Keseluruhan
Rangkaian catu daya +12 Volt
Gambar Catu daya +12 volt
Rangkaian catu daya ini akan berfungsi untuk menyediakan tegangan catu yang
nantinya dipakai untuk beban motor. Dimana tegangan motor yang digunakan sebesar
12 volt. Catu daya Catu daya ini dengan keluaran 12 volt prinsipnya adalah keluaran
12
Page 38
[email protected]
12 volt DC yang melalui diode 5A dilakukan filter oleh kapasitor 2200uF/25V
sehingga menghasilkan tegangan +24 volt.
Rangkain catu daya +5 Volt
Catu daya +5 Volt
Catu daya +5 volt digunakan untuk suplai daya penggerak tampilan sevent segment
sekaligus sebagai suplai daya pada Mikrokontroler. Keluaran +5 volt diatur oleh IC
regulator LM7805 yang sebelumnya telah dilakukan filter dengan dua kapasitor
100uF/25V dan 1000uF/25V untuk menghasilkan tegangan konstan +5 volt.
+100uF/25V
LM78051
2
3VI G
ND
VO
220 VAC
12
++2200uF/35V- +
BRIDGE
1
4
3
2
5VDC
GND
12
S1
Trafo 2A
15
1000uF/25V
1N4001
2N3055
Page 39
[email protected]
Prinsip kerja alat
Tidak
Ya
Tidak
Ya
Tidak
ya
Gambar Flow chart prinsip kerja alat
Timer
Cek iklan
I
Putar atas
Putar bawah
Cek iklan terakhir
Timer
Timer
Cek iklan I
Page 40
[email protected]
Cara Kerja Alat :
Pada saat kondisi ON maka timer akan berjalan dan akan mulai menghitung waktu
yang telah diset. Setelah timer selesai maka relame akan berjalan dan mengecek
apakah itu iklan I kalau ya motor akan berputar ke atas dan timer akan berjalan, kalau
tidak maka akan mengecek apakah itu iklan terakhir seandainya tidak juga maka
motor akan berputar ke atas tapi seandainya tadi iklan terakhir maka akan berputar ke
bawah. Jika sensor 3 off maka timer akan mulai berjalan setelah timer menunjukan 00
maka reklame berjalan dan akan mengecek kembali apakah itu iklan I kalau ya motor
akan berputar ke atas lagi kalau tidak motor akan berputar ke bawah dan seterusnya.
Perencanaan software
Mikrokontroler AT89S52 membutuhkan perangkat lunak agar dapat menjadi alat
kendali. Perangkat lunak yang digunakan untuk pemograman mikrokontroler
AT89S52 adalah menggunakan syn Text Editor. Program ini bekerja dibawah sistem
operasi windows. Keuntungan penggunaan bahasa pemograman ini adalah hasil
pemograman pada chip yang sudah selesai dapat langsung ditampilkan pada monitor
dan apabila terjadi kesalahan pemograman atau ingin mengganti isi program suatu
chip tidak perlu melepas chip. Sedangkan kelemahan utamanya bahasa pemograman
ini hanya bisa digunakan untuk keluarga mikrokontroler MSC-51.
listing program sleading reklame berbasis mikrokontroler AT89S52 dengan
menggunakan program bahasa C.
Page 41
[email protected]
Program sensor
else if(P2==0xf2) //apakah ini iklan tengahan?
{
if(arah==1)
{
while(P2_1==1) //masih si atas tanda
{
put_mot_atas();
}
while(P2_1==0) //masuk ke garis hitam
{
put_mot_atas();
}
}
else if(arah==0)
{
while(P2_1==1)
{
put_mot_bawah();
}
while(P2_1==0)
{
put_mot_bawah();
}
}
else{}
}
else if(P2==0xf6) //apakah ini iklan paling bawah?
Page 42
[email protected]
{
while(P2_1==1) //putih =1 hitam=0
{
put_mot_bawah();
}
while(P2_1==0)
{
put_mot_bawah();
}
arah = 0;
Program menampilkan sevent segment
unsigned char bin7seg(unsigned char c,bit status)
{
code char
d7seg_dt_off[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
code char
d7seg_dt_on[10]={0x40,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
if (status)
return d7seg_dt_on[c];
else
return d7seg_dt_off[c];
}
void display(unsigned int angka)
{
unsigned char i;
char dig1,dig2,dig3,dig4;
Page 43
[email protected]
dig1=angka/600;
angka%=600;
dig2=angka/60;
angka%=60;
dig3=angka/10;
angka%=10;
dig4=angka%10;
for(i=0;i<50;i++)
{
P1=bin7seg(dig1,0);
P3=0x10;
tunda(5);
P1=bin7seg(dig2,0);
P3=0x08;
tunda(5);
P1=bin7seg(dig3,0);
P3=0x02;
tunda(5);
P1=bin7seg(dig4,0);
P3=0x01;
tunda(5);
}
Page 44
[email protected]
Program jalanya motor
void put_mot_atas()
{
P0=0x80;
tunda(5);
P0=0xc0;
tunda(5);
P0=0x40;
tunda(5);
P0=0x60;
tunda(5);
P0=0x20;
tunda(5);
P0=0x30;
tunda(5);
P0=0x10;
tunda(5);
P0=0x90;
tunda(5);
}
void put_mot_bawah()
{
P0=0x08;
tunda(5);
P0=0x0c;
tunda(5);
P0=0x04;
Page 45
[email protected]
tunda(5);
P0=0x06;
tunda(5);
P0=0x02;
tunda(5);
P0=0x03;
tunda(5);
P0=0x01;
tunda(5);
P0=0x09;
tunda(5);
}
Page 46
[email protected]
LISTING PROGRAM UTUH
#include<at89x52.h>
void tunda1ms();
void tunda(unsigned int n);
void display(unsigned int angka);
void put_mot_atas();
void put_mot_bawah();
char arah;
void main()
{
unsigned int i;
arah = 1;
while(1)
{
P0=0x00;
for(i=10;i>0;i--) //maksimal i=5940 !!! ingat
{
P0=0x00;
display(i);
while(P2_7==0)
{
put_mot_atas();
}
while(P2_6==0)
{
put_mot_bawah();
Page 47
[email protected]
}
}
display(i);
if(P2==0xf3) //apakah ini iklan paling atas?
{
while(P2_1==1)
{
put_mot_atas();
}
while(P2_1==0)
{
put_mot_atas();
}
arah = 1;
}
else if(P2==0xf2) //apakah ini iklan tengahan?
{
if(arah==1)
{
while(P2_1==1) //masih si atas tanda
{
put_mot_atas();
}
while(P2_1==0) //masuk ke garis hitam
{
put_mot_atas();
}
Page 48
[email protected]
}
else if(arah==0)
{
while(P2_1==1)
{
put_mot_bawah();
}
while(P2_1==0)
{
put_mot_bawah();
}
}
else{}
}
else if(P2==0xf6) //apakah ini iklan paling bawah?
{
while(P2_1==1) //putih =1 hitam=0
{
put_mot_bawah();
}
while(P2_1==0)
{
put_mot_bawah();
}
arah = 0;
}
else
{
Page 49
[email protected]
while(P2_1==0)
{
put_mot_atas();
}
}
}
}
unsigned char bin7seg(unsigned char c,bit status)
{
code char
d7seg_dt_off[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
code char d7seg_dt_on[10]={0x40,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
if (status)
return d7seg_dt_on[c];
else
return d7seg_dt_off[c];
}
void display(unsigned int angka)
{
unsigned char i;
char dig1,dig2,dig3,dig4;
dig1=angka/600;
angka%=600;
dig2=angka/60;
angka%=60;
Page 50
[email protected]
dig3=angka/10;
angka%=10;
dig4=angka%10;
for(i=0;i<50;i++)
{
P1=bin7seg(dig1,0);
P3=0x10;
tunda(5);
P1=bin7seg(dig2,0);
P3=0x08;
tunda(5);
P1=bin7seg(dig3,0);
P3=0x02;
tunda(5);
P1=bin7seg(dig4,0);
P3=0x01;
tunda(5);
}
}
void put_mot_atas()
{
P0=0x80;
tunda(5);
P0=0xc0;
Page 51
[email protected]
tunda(5);
P0=0x40;
tunda(5);
P0=0x60;
tunda(5);
P0=0x20;
tunda(5);
P0=0x30;
tunda(5);
P0=0x10;
tunda(5);
P0=0x90;
tunda(5);
}
void put_mot_bawah()
{
P0=0x08;
tunda(5);
P0=0x0c;
tunda(5);
P0=0x04;
tunda(5);
P0=0x06;
tunda(5);
P0=0x02;
tunda(5);
Page 52
[email protected]
P0=0x03;
tunda(5);
P0=0x01;
tunda(5);
P0=0x09;
tunda(5);
}
void tunda1ms()
{
unsigned int i;
for(i=0;i<100;i++);
}
void tunda(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++)
tunda1ms();