Top Banner
[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
72

Reklame Berbasis Mikrokontroler AT89s52

Jun 18, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[email protected]

Gambar Diagram Blok Arsitektur AT89X51/52

Pin-pin Mikrokontroler

Page 4: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[email protected]

Gambar Rangkaian Sensor dan Komparator

Page 34: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[email protected]

Gambar Rangkaian Kendali

Page 36: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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: Reklame Berbasis Mikrokontroler AT89s52

[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();