kendali motor stepper dengan komunikasi serial...
TRANSCRIPT
i
KENDALI MOTOR STEPPER DENGAN KOMUNIKASI SERIAL BERBASIS MIKROKONTROLER AT89S51
TUGAS AKHIR
STENLY HUTUBESSY 985114001
PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS TEKNIK
UNIVERSITAS SANATA DHARMA YOGYAKARTA
2006 STEPPER MOTOR CONTROL WITH SERIAL
COMMUNICATION BASED ON MICROCONTROLLER AT89S51
ii
FINAL PROJECT
In partial fulfillment of the requirements for the Degree SARJANA TEKNIK Electrical Engineering Study Program
STENLY HUTUBESSY
985114001
ELECTRICAL ENGINEERING STUDY PROGRAM ELECTRICAL ENGINEERING DEPARTMENT
ENGINEERING FACULTY SANATA DHARMA UNIVERSITY
YOGYAKARTA 2006
vii
HALAMAN PERSEMBAHAN
Karya ini kupersembahan teristimewa kepada Tuhan Yesus Kristus
Terima Kasih Tuhan atas Semua Hal yang engkau berikan bagi ku,
Terima Kasih atas Tuntunan dan Penyertaan-Mu dalam hidup yang begitu penuh
rahasia ini sehingga hamba dapat menyelesaikan Karya ini Tuhan,
Terima Kasih Tuhan Yesus hidupku berarti hanya dalam Tangan-Mu.
Untuk Papa dan Mama
Terima Kasih untuk kasih sayang yang tiada batasnya,
pengorbanan,pengertian,perlindungan
dan kepercayaan untukku,
Kakak-kakakku
Kalianlah yang Terbaik.
viii
KATA PENGANTAR
Dalam nama Tuhan Yesus Kristus segala hormat dan kemuliaan, Puji syukur
Kepada Allah Bapa di Surga yang memberikan rahmat sehingga penulis dapat
menyelesaikan skripsi ini dengan baik.
Penulis mengucapkan terima kasih kepada:
1. Bapak Ir. Iswanjono, MT selaku pembimbing Tugas Akhir yang telah
membantu dan membimbing dalam pembuatan Tugas Akhir ini.
2. Bapak Ir. Linggo Sumarno, MT yang selalu memberikan semangat untuk
penulis.
3. Seluruh dosen dan karyawan Fakultas Teknik Universitas Sanata Dharma
yang telah membantu dalam pembuatan Tugas Akhir ini.
4. Papa, Mama, Kakak-kakakku Adel, Kenny, Gerald, Charlie, Shirley dan
Keponakan tersayang Maryo yang selalu memberikan perhatian dan kasih
sayang, doa, dan masukan hingga terselesaikannya skripsi ini.
5. Adik-adikku Valen Latumahina, Marchello Pelamonia, Bendjamin
Manuputty, Franky Likumahwa,Yuyun Likumahwa, Ansye Likumahwa,
Stanley Likumahwa, Jemmy Likumahwa, Ivan Ahuluheluw Bersandar selalu
pada Tuhan.
6. Keluarga Besar Hutubessy, Siwabessy, Lumalessil, Sapulette, Latumahina,
Likumahwa, terima kasih atas doanya.
x
KENDALI MOTOR STEPPER DENGAN KOMUNIKASI SERIAL BERBASIS MIKROKONTROLER AT89S51
Oleh
STENLY HUTUBESSY 985114001
INTISARI
Kendali Motor Stepper berbasis mikrokontroler dapat mengendalikan posisi
atau sudut tertentu. Putaran motor stepper pada setiap penekanan tombol pada
keypad sudah ditentukan besaran sudut yang diinginkan. Mikrokontroler pengirim
hanya perlu mengakses data masukan dari keypad. Data- data yang diambil
kemudian ke mikrokontroler penerima sebagai indeks data dari data-data yang
berfungsi untuk mengendalikan putaran motor stepper..
Dari hasil percobaan diketahui bahwa alat mampu menggerakan sudut
putaran motor yang diinginkan sesuai dengan besaran sudut yang ditentukan. Setiap
penekanan tombol pada keypad akan ditampilkan oleh seven segmen sebagai
penampil dalam alat ini.
Kata kunci : Keypad Matriks, aplikasi mikrokontroler AT89S51, Motor Stepper.
xi
STEPPER MOTOR CONTROL WITH SERIAL COMMUNICATION BASED ON MICROCONTROLLER AT89S51
STENLY HUTUBESSY 985114001
Abstract
Stepper Motor control based on Microcontroller get the whip hand of the
certain angle. Stepper motor rotation an each a press button of keypad has been
determined by mulberry angle wanted. Microcontroller cosignor only data access
input require to from keypad. The data which taken later to microcontroller receiver
as an index data from functioning data to control the rotation of stepper motor.
Result from the experiment known that the appliance able to control of motor
angle rotation which to determined mulberry angle wanted. An each a press button of
keypad will be shown by seven segment as display in this appliance.
Keyword : Keypad Matrix, Application of mikrokontroler AT89S51, Stepper Motor.
xii
DAFTAR ISI
HALAMAN
JUDUL…………………………………………………………………..i
LEMBAR
PERSETUJUAN………………………………………………………….iii
LEMBAR
PENGESAHAN…………………………………………………..............iv
LEMBAR PERNYATAAN KEASLIAN KARYA…………………………………..v
PERSEMBAHAN…………………………………………………………………....vi
KATA PENGANTAR………………………………………………………………vii
INTISARI……………………………………………………………………............ix
ABSTRACT……………………………………………………………………...........x
DAFTAR ISI…………………………………………………………………...........xi
DAFTAR GAMBAR………………………………………………………………xvi
DAFTAR TABEL………………………………………………………………..xviii
DAFTAR LAMPIRAN……………………………………………………………xix
BAB I. PENDAHULUAN
I.1 Latar Belakang…………………………………………………………..1
I.2 Perumusan Masalah……………………….……………………….........1
I.3 Pembatasan Masalah…..…………………………………………….......2
I.4 Tujuan Penelitian………………………………………………………..2
I.5 Manfaat Penelitian………………………………………………………2
xiii
I.6 Sistimatika Penulisan……………………………………………………3
BAB II. DASAR TEORI
II.1 Keypad………………………………………………………………...5
II.2 Mikrokontroler AT89S51………………………………………..........6
II.2.1 Memori Mikrokontroler AT89S51……………………..........7
II.2.1.1 Memori Program……………………………...........8
II.2.2 Special Function Register (SFR)……………………………..9
II.2.2.1 Accumulator………………………………………..9
II.2.2.2 Register B…………………………………………10
II.2.2.3 Register Port………………………………………10
II.2.2.4 Register Timer…………………………………….10
II.2.2.5 Program Status Word (PSW)……………………...10
II.2.2.6 Data Pointer………………………………….........11
II.2.2.7 Stack Pointer (SP)…………………………………11
II.2.2.8 Serial Data Buffer…………………………………12
II.2.3 Mode Pengalamatan………………………………………....12
II.2.3.1 Pengalamatan langsung……………………………12
II.2.3.2 Pengalamatan tak langsung………………………..13
II.2.3.3 Pengalamatan Segera………………………………13
II.2.3.4 Pengalamatan Bit…………………………………..14
II.2.3.5 Pengalamatan Kode………………………………..14
II.2.4 Timer…………………………………………………………15
II.2.4.1 TMOD (Timer mode register)……………………...15
xiv
II.3 Motor Stepper…………………………………………………………16
II.3.1 Motor Stepper dengan eksitasi tunggal………………………18
II.3.2 Motor Stepper dengan eksitasi ganda………………………..19
II.3.2.1 Full Step………………………………………........19
II.3.2.2 Half Step……………………………………………20
II.3.2.3 Metode Langkah Seperempat………………………21
II.3.2.4 Metode Langkah Seperdelapan Mikro……………..22
II.4 Operasi Serial Port…………………………………………………….23
II.4.1 Baud Rate…………………………………………………….29
II.5 Penampil Tujuh Segmen………………………………………………30
BAB III. PERANCANGAN ALAT
III.1 Perancangan Perangkat Keras (Hardware)…………………………...32
III.1.1 Koneksi Keypad 3x4 dengan mikrokontroler AT89S51……34
III.1.2 Komunikasi serial Antar Mikrokontroler AT89S51………...36
III.1.3 Koneksi Tujuh Segmen dengan Mikrokontroler…………….37
III.2 Diagram Alir Program………………………………………………..38
III.3 Rangkaian Lengkap Komunikasi Serial………………………………42
BAB IV. ANALISA DAN PEMBAHASAN
IV.1 Pengujian Keypad Matriks 4x3……………………………………….43
IV.2 Pengujian Mikrokontroler AT89S51…………………………………49
IV.3Pengujian Motor Stepper……………………………………………….51
xv
BAB V. PENUTUP
V.1 esimpulan…………………………………………………………......56
V.2 Saran…………………………………………………………………....56
DAFTAR PUSTAKA……………………………………………………………….58
LAMPIRAN…………………………………………………………………………59
xvi
DAFTAR GAMBAR
Gambar2.1. Keypad Matriks 3x4…………….……………………………………….6
Gambar 2.2. Peta Memori rogram………………………………………….………..8
Gambar .3. Program Status Word ……...………………………………………......11
Gambar 2.4. Peta Register TMOD …...……………………………………………..15
Gambar .5. Struktur Dasar Motor Stepper ………………….…………...................17
Gambar .6. Motor Stepper Bipolar dan Unipolar......................................................17
Gambar .7. Metode Langkah Eksitasi Tungga l………………………………….....19
Gambar .8. Eksitasi Ganda dengan Metode Langkah Penuh……………………….20
Gambar .9. Metode Langkah Setengah……………………………………………..21
Gambar 2.10. Metode Langkah Seperempat………………………………………...22
Gambar 2.11. Metode Langkah Mikro berupa Pulsa………………………………..23 Gambar 2.12. Langkah Seperdelapan Mikro Berupa Step………………………..23 Gambar 2.13. Susunan Bit dalam SCON…………………………………………....26 Gambar 2.14. Penampil tujuh segmen………………………………………………31 Gambar 3.1. Diagram Kotak pengendalian motor stepper………………………….32 Gambar 3.2. Keypad matriks 4x3…………………………………………………...35 Gambar 3.3. Rangkaian Komunikasi Serial…………………………………………42 Gambar 4.1 Rangkaian dari keypad matrik 4x3.........................................................44
xvii
DAFTAR TABEL
Tabel2.1. Eksitasi Tunggal…………….……………………....................................17
Tabel 2.2. Eksitasi Ganda dengan Metode Langkah Penuh ………………………...19
Tabel 2.3. Metode Langkah Setengah (Half Step)…………………………………..20
Tabel 2.4. Penentuan mode kerja port serial …………….…………….....................27
Tabel 2.5. Baud Rate yang sering dipakai yang dihasilkan timer 1…………............30
Tabel 4.1. Hasil pengujian tombol keypad matrik 4x3……………………………...45 Tabel 4.2. Sudut Putaran Motor Stepper dengan Masukan Keypad...........................55
xviii
DAFTAR LAMPIRAN
Lampiran 1 Gambar Rangkaian Lengkap Komunikasi Serial
Lampiran 2. Listing Program Lengkap Komunikasi Serial
Lampiran 3. Data sheet Atmel AT89S51
Lampiran 4 Data sheet IC SN74HC541
Lampiran 5 Data sheet IC ULN 2003
BAB I
PENDAHULUAN 1.1 Latar Belakang
Seiring dengan perkembangan teknologi, timbul kecenderungan diterapkannya
sistem pengendalian secara otomatis dalam proses industri modern. Juga dalam
kehidupan sehari-hari banyak ditemukan peralatan-peralatan yang bekerja
berdasarkan pada posisi atau sudut yang sesuai kebanyakan masih dilakukan secara
manual. Oleh karena itu dalam model ini akan dibuat suatu model pengaturan posisi
atau sudut yang bekerja secara elektronis.
Perpaduan antara mikrokontroler ( software ) dengan peralatan mekanis dan
elektronis ( hardware ) merupakan dimensi baru yang sedang marak digemari orang.
Sistem pengendalian yang digunakan adalah dengan komunikasi serial berbasis
mikrokontroler. Mikrokontroler AT89S51 merupakan sebuah kompone n elektronika
yang dapat bekerja sesuai dengan program yang diisikan ke dalam memorinya.
Dengan demikian penulis mencoba menggunakan keunggulan mikrokontroler ini
sebagai pengendali posisi motor stepper sesuai dengan sudut yang diinginkan.
1.2 Perumusan masalah
Pada Tugas Akhir ini diterapkan prinsip kerja dari motor stepper dan
pengendali posisi pada motor stepper yang dirancang dengan teknologi
mikrokontroler AT89S51 dan beberapa komponen elektronis lainnya. Motor stepper
akan diatur untuk arah putaran searah putaran jarum jam dan arah putaran berlawanan
dengan arah putaran jam.
1.3 Pembatasan Masalah
Dalam penulisan Tugas Akhir ini, penulis hanya menjelaskan sebatas tahap
perancangan dan prinsip dari alat pengendali posisi motor stepper yang merupakan
salah satu aplikasi yang dapat dibuat dengan teknologi mikrokontroler yang
dihubungkan secara serial dimana setiap penekanan tombol pada keypad akan
berputar sebesar kelipatan 10º.
1.4 Tujuan Penelitian
1. Mampu menggerakan motor stepper dengan berbagai sudut dengan arah
searah putaran jarum jam.
2. Mampu membuat prototype aplikasi komunikasi serial mikrokontroler
sebagai model penggerak motor stepper.
1.5 Manfaat Penelitian
Adapun manfaat yang dapat diambil dalam melakukan penelitian ini adalah :
1. Mengaplikasikan ilmu yang telah diperoleh kedalam suatu bentuk karya
nyata.
2. Mengembangkan dan memanfaatkan mikrokontroler terutama AT89S51
dalam menentukan sudut atau putaran motor yang diinginkan.
1.6 Sistimatika Penulisan
Penulisan ini akan dibagi dalam beberapa bagian, anatara lain:
BAB I Pendahuluan
Bab ini berisi latar belakang, perumusan masalah, pembatasan
masalah, tujuan penelitian, dan sistematika yang digunakan dalam penulisan
ini.
BAB II. Dasar Teori
Bab ini berisi teori-teori yang digunakan dalam penelitian ini, antara
lain membahas tentang Keypad matriks, Penampil 7 Segment, motor stepper,
driver motor, Operasi port serial dan penjelasan singkat tentang
mikrokontroler AT89S51.
BAB III. Perancangan Pengendali Posisi Motor Stepper.
Bab ini menjelaskan perangkat keras dan perangkat lunak yang
digunakan untuk perancangan alat pengendali posisi motor stepper yang
terdiri dari, papan tombol, driver motor, rangkaian pengendali tujuh segment,
penggerak motor stepper.
BAB IV. Hasil Pengamatan dan Analisa.
Berisi data-data hasil pengujian, cara pengamatan, dan analisis data
tersebut.
BAB V. Kesimpulan.
Berisi ringkasan atau kesimpulan yang diperoleh dari hasil penelitian
yang telah dilakukan.
BAB II
DASAR TEORI
Untuk mencapai titik atau posisi tertentu, biasanya dilakukan pengaturan atau
pengendalian, begitu juga dengan pengendali posisi motor stepper. ini dimaksudkan
sebagai suatu pengendali posisi dengan menggunakan motor stepper sebagai
komponen utama.
II.1 Keypad
Keypad adalah salah satu alat yang biasa digunakan untuk memberikan
masukan pada mikrokontroler. Keypad terdiri dari beberapa saklar yang dihubungkan
dengan port-port pada mikrokontroler.
Keypad yang digunakan biasanya bertipe matriks yang terdiri dari beberapa
saklar yang tersusun dalam bentuk kolom dan baris yang masing-masing
dihubungkan dengan port I/O mikrokontroler. Pembacaan keypad matriks dilakukan
dengan cara scanning process. Saklar-saklar tersebut dihubungkan sedemikian rupa
sehingga apabila salah satu saklar ditekan maka akan menghubungkan salah satu
baris dengan salah satu kolom. Gambar 2.1 merupakan matriks keypad 3x4.
Gambar 2.1 keypad matriks 3x4
II.2 Mikrokontroler AT89S51
Mikrokontroler AT89S51 ialah mikrokomputer CMOS 8 bit dengan 4 KB
Flash Programmable and Erasable Read Only Memory (PEROM). Mikrokontroler
berteknologi non-volatile MCS-51 (seperti mikrokontroler 8051 yang terkenal dan
banyak digunakan beberapa waktu lalu) yang telah menjadi standar industri, baik
dalam jumlah pin IC maupun set instruksinya.
AT89S51 mempunyai memori yang terdiri dari RAM internal dan Special
Function Register. RAM internal berukuran 128 byte dan beralamatkan 00H-7H serta
dapat diakses menggunakan RAM address register. RAM internal terdiri dari delapan
buah register (R0-R7) yang membentuk register banks. Special Function Register
yang berjumlah 21 buah berada di alamat 80H-FFH. RAM ini berbeda lokasi dengan
Flash Perom dengan alamat 000H-7FFH.
1 2 3
4 5 6
7 8 9
* 0 #
P0.1
P0.0
P0.3
P0.2
P0.6 P0.5 P0.4
Beberapa fasilitas yang dimiliki oleh mikrokontroler AT89S51 adalah sebagai
berikut:
• Sebuah Central Processing Unit 8 bit.
• Osilator internal dan rangkaian pewaktu.
• RAM internal 128 byte.
• Flash memori 4 Kbyte.
• Lima buah jalur interupsi (dua buah interupsi eksternal dan tiga buah
interupsi internal).
• Emapt buah programable port I/O yang masing-masing terdiri dari
delapan buah jalur I/O.
• Sebuah port serial dengan kontrol serial full duplex UART.
• Kemampuan untuk melaksanakan operasi aritmetika dan operasi
logika.
• Kecepatan dalam melaksanakan operasi aritmetika dan operasi logika.
• Kecepatan dalam melaksanakan instruksi per siklus 1 mikrodetik pada
frekuensi 12 MHz.
II.2.1 Memori Mikrokontroler AT89S51
Mikrokontroler memiliki memori program dan memori data yang terpisah.
Program diletakan pada memori ROM (Read Only Memory ) sedangkan data diletakan
pada RAM (Random Acces Memory).
II.2.1.1 Memori Program
Program mikrokontroler disimpan dalam FPEROM yang sering kali disebut
memori program. ROM merupakan memori yang hanya dapat dibaca. Isi ROM tidak
akan berubah walau mikrokontroler kehilangan catu daya (volatile memory).
Memori program yang tersedia dalam chip Mikrokontroler AT89S51 hanya
sebesar 4 kb (internal memory). Namun tersedia jalur ekspansi untuk memperbesar
kapasitas memori tersebut sampai 64 kB dengan menambah ROM (external memory).
Diagram memori program dalam mikrokontroler AT89S51 ditunjukan pada
gambar dibawah ini:
FFFF FFFF
!000
+ atau
0FFF
0 0
Gambar.2.2 Peta Memori Program
Memory Eksternal
60 kB
ROM
Memory internal 4 kB
FLASH
External ROM
Memori Eksternal
64 kB
II.2.2 Special Function Register (SFR)
Special function register (SFR) adalah register-register yang mempunyai
fungsi khusus, diantaranya ada yang digunakan untuk mengatur input output data dari
mikrokontroler. Selain itu, ada juga Special Function Register yang digunakan untuk
mengatur dan memantau kondisi UART, yaitu pada register SCON. Register yang
digunakan untuk mengatur kerja timer adalah register timer adalah register TCON.
Special function register terdapat pada ruang memori RAM yang mempunyai
alamat 80H sampai FFH. Tidak semua alamat itu dipakai oleh Special Function
Register. Pada special Function Register terdapat beberapa alamat yang bisa dialamati
secara bit dan ada yang tidak bisa dialamati secara bit. Pada Special Function
Register yang bisa dialamati secara bit, alamat pada digit keduanya adalah digit 0
atau 8, misalnya 80H, 88H, 90H, 98H, dan F8H. Special Function Register
Akumulator adalah salah satunya yang sering dipakai untuk dialamati secara bit dan
mempunyai alamat E0H, misalnya A.0, A.1, A.2, A.3, A.4, A.5, A.6, dan A.7.
Register ialah penampung data sementara yang terletak dalam CPU. Mikrokontroler
AT89S51 mempunyai register-register sebagai berikut:
II.2.2.1 Accumulator
Accumulator merupakan register yang berfungsi untuk menyimpan data
sementara. Register Accumulator ini sering digunakan dalam proses Aritmetika,
logika, pengambilan data dan pengiriman data. Accumulator ialah sebuah register 8
bit yang merupakan pusat dari semua operasi accumulator.
II.2.2.2 Register B
Register B dapat digunakan untuk proses aritmetika dan dapat juga
difungsikan sebagai register biasa.
II.2.2.3 Register Port
pada register ini terdapat 4 buah yaitu register port 0, port 1, port 2, dan port
3. Register port ini digunakan sebagai sarana input/output untuk menyimpan data dari
atau ke port untuk masing-masing P0, P1, P2, dan P3.
II.2.2.4 Regis ter Timer
Mikrokontroler AT89S51 mempunyai dua buah 16 bit timer, yaitu Timer 0
dan Timer 1. Timer 0 dibentuk oleg register TH0 dan TL0.Timer 1 dibentuk oleh
register TH1 dan TL1. Perilaku dari register TH0, TH1, TL0 dan TL1 diatur oleh
register TMOD dan regsiter TCON.
II.2.2.5 PSW (Program Status Word)
Program ststus word adalah suatu register yang berisi bit-bit status yang
berkaitan dengan kondisi CPU saat itu. PSW seperti gambar dibawah, PSW berada
pada SFR yang beralamatkan D0H. ststus bit yang tersimpan dalam register ini
meliputi Carry Bit, The Auxiliary Carry dua bit pemilih bank register yaitu: RS0 dan
RS1, Overflow, Flag sebuah bit paritas adalah 1 (p = 1), bila cacah logic 1 pada
accumulator genap maka p=0 sehingga bit paritas ini menjadi agar cacah logic 1
selalu genap. Sedangkan dua bit sisanya yaitu PSW 1 dan PSW 5 adalah bit yang
tidak terikat sehingga dapat digunakan sebagai flag serbaguna. Register ini berisi
beberapa bit ststus yang mencerminkan keadaan mikrokontroler. Definisi dari bit-bit
dalam PSW dijelaskan dalam gambar dibawah ini:
CY AC F0 RS1 RS2 OV - P
Gambar.2.3 Program Status Word
II.2.2.6 Data Pointer
Data Pointer atau DPTR merupakan register 16 bit yang terletak di alamat
82H untuk DPL (data pointer low) dan 83H untuk DPH (data pointer high). Biasanya
data Pointer digunakan untuk mengakses data atau source code yang terletak di
memori eksternal.
II.2.2.7 Stack Pointer (SP)
Stack Pointer merupakan sebuah register 8 bit yang mempunyai fungsi khusus
sebagai penunjuk alamat atau data paling atas pada operasi penumpukan di RAM.
Stack Pointer terletak di alamat 81H. Penunjuk penumpukan selalu berkurang dua
tiap kali data didorong masuk ke dalam lokasi penumpukan dan selalu bertambah dua
tiap kali data ditarik ke luar dari lokasi penumpukan.
II.2.2.8 Serial Data Buffer
Serial Data Buffer terletak pada lokasi 99h yang dibagi menjadi dua regsiter
yang terpisah, yaitu transmit buffer dan receive buffer. Saat data disalin ke serial data
buffer maka data sesungguhnya diterima dan diteruskan ke dan dari serial port.
II.2.3 Mode Pengalamatan
Untuk mengakses data dan program yang disimpan di dalam memori,
diperlukan pengalamatan agar tidak terjadi kesalahan dalam pengambilan data.
Pengaksesan memori data dan memori program pada AT89S51 menggunakan
pengalamatan yang berbeda untuk membedakan antara data yang tersimpan di
memori data dan memori program. Mode pengalamatan yang didukung oleh
AT89S51 adalah :
II.2.3.1 Penga lamatan Langsung (Direct Addressing Mode)
Pengalamatan langsung dilakukan dengan memberikan nilai ke suatu register
secara langsung. Pengalamatan ini hanya dapat digunakan untuk RAM internal dan
SFR.
Contoh:
Mov A, 10H, instruksi ini melakukan operasi memindahkan data pada alamat 10H ke
dalam akumulator.
Add A,R1, instruksi ini melakukan operasi penambahan data pada register R1 dengan
data pada akumulator dan hasilnya disimpan di akumulator.
II.2.3.2 Pengalamatan Tak Langsung (Indirect Addressing Mode)
Pada pengalamatan tak langsung, instruksi menunjuk pada sebuah register
yang berisi alamat memori yang akan dituju. Pengalamatan tak langsung ini biasanya
mengguakan simbol @ yang maksudnya menunjuk alamat memori yang terdapat
pada register tersebut.
Contoh:
Dec @R0, inistruksi ini melakukan operasi pengurangan data dari alamat memori
yang ditunjuk oleh register R0 dengan 1.
Mov A, @R1, instruksi ini melakukan operasi memindahkan data dari alamat memori
yang ditunjuk oleh register R1 ke akumulator.
II.2.3.3 Pengalamatan Segera
Pengalamatan segera pada sebuah operasi dilakukan dengan memberikan data
secara langsung tanpa perantara dari alamat tertentu. Biasanya pengalamatan segera
ini diawali dengan tanda #.
Contoh :
Mov A, #10H, instruksi ini melakukan operasi memindahkan data 10H kedalam
akumulator.
Mov R1, #20H, instruksi ini melakukan operasi memindahkan data 20H ke dalam
register R1.
II.2.3.4 Pengalamatan Bit
Pengalamatan bit pada sebuah operasi digunakan untuk mengalamati suatu
alamat secara bit. Pengalamatan bit ialah penunjukan menggunakan simbol (.) yang
menunjuk alamat lokasi bit, baik dalam RAM internal atau perangkat keras.
Contoh:
Clr A.2, instruksi ini memberi data bit pada alamat A.2 dari akumulator dengan nilai
nol.
Setb A.1, instruksi ini memberi data bit pada alamat A.1 dari akumulator dengan nilai
1.
II.2.3.5 Pengalamatan Kode
Pada pengalamatan kode ini, proses pengalamatannya ditujukan langsung
pada kode atau sering disebut dengan rutin. Pengalamatan kode terjadi ketika operand
merupakan alamat dari instruksi JUMP dan CALL.
Contoh :
Ajmp start, instruksi melakukan lompatan ke subrutin start.
Call delay, instruksi ini melakukan proses pengambilan subrutin delay
II.2.4 Timer
Timer berfungsi untuk mengatur waktu kerja yang dibutuhkan AT89S51.
terdapat dua buah timer, yaitu timer 0 dan timer 1. masing-masing timer terdiri dari
16 bit counter yang dapat diprogram. Register-register timer meliputi :
II.2.4.1 TMOD (Timer Mode Register)
Timer ini tidak dapat diakses secara bit (not bit addressable), dan beralamat di
89H.
Gate(1) C/T (1) M1 (1) M0 (1) Gate (0) C/T (0) M1 (0) M0(0)
Timer 1 Timer 0
Gambar. 2.4 Peta Register TMOD
• Gate : Timer akan berjalan jika bit ini diset dan INT0 (untuk Timer
0) atau INT1 (untuk Timer 1) berkondisi High.
• C/T : jika bernilai 1 maka timer akan bertindak sebagai counter dan
jika bernilai 0 maka timer akan bertindak sebagai timer.
• M1 dan M0 : untuk memilih mode timer.
II.3 Motor Stepper
Motor stepper merupakan motor khusus yang digunakan dalam pengendalian
posisi yang memerlukan ketelitian. Selain motor stepper masih terdapat satu jenis lagi
yang dapat digunakan yaitu motor servo. Namun motor servo mengacu pada sistem
umpan balik analog, seperti penggunaan potensiometer sebagai umpan balik
pengendalian posisi rotor dan terdapat juga rangkaian pengendalian arus motor.
Motor stepper dapat digunakan pada sistem kalang terbuka untuk
pengoperasian dengan kecepatan rendah dan beban tetap, untuk sistem kalang
tertutup memungkinkan pengendalian motor stepper pada kecepatan tinggi dan beban
bervariasi. Pada motor stepper jika beban yang diberikan tidak sebanding dengan
torque (torsi) motor, maka pada sistem kalang tertutup dapat menyebabkan posisi
rotor tidak terdeteksi sehingga perlu di inisialisasi sedangkan motor servo tidak
menjadi masalah.
Motor stepper pada dasarnya sama dengan motor-motor listrik pada umumnya
yaitu memiliki bagian yang berputar disebut rotor dan bagian yang tidak berputar
disebut stator. Pada bagian yang berputar (rotor) berupa sebuah magnet dan pada
bagian yang tidak bergerak (stator) berupa kumparan. Kumparan pada stator ini bila
dialiri arus listrik akan membentuk medan magnet.
Untuk menjalankan motor stepper ini digunakan driver motor stepper unipolar ULN
2803. Untuk jelasnya dapat dilihat pada gambar 2.5
N
SCommon
L4 (kumparan 4 )
L3 ( kumparan 3 )
L2 (kumparan 2 )
L1 ( kumparan 1)
Rotor
Medan Putar Rotor
Kumparan pada stator
Gambar 2.5 Struktur Dasar Motor Stepper.
Motor stepper adalah suatu jenis motor elektrik yang dapat dikendalikan
posisi sudutnya. Posisi sudut yang dibentuk tergantung pada banyaknya pulsa yang
diberikan pada motor stepper untuk mengendalikan langkah (step). Untuk jenis motor
stepper tertentu mempunyai karakteristik 1,8º setiap langkahnya (step). Motor stepper
ada 2 jenis yaitu motor stepper unipolar dan motor stepper bipolar, perbedaan antara
2 jenis motor stepper tersebut dapat dilihat pada gambar 2.6.
Gambar 2.6 Motor Stepper Bipolar dan Unipolar.
Motor stepper yang digunakan dalam perakitan alat adalah motor stepper
jenis unipolar. Pada jenis motor stepper unipolar, arus mengalir searah dan perubahan
arah putar motor tergantung dari lilitan (koil) yang dialiri arus. Lilitan yang ada
terpisah dalam 2 bagian dan masing-masing bagian hanya dilewati arus dalam satu
arah saja. Jenis unipolar memerlukan rangkaian driver yang lebih sederhana dan
banyak dipasaran. Cara pengendalian motor stepper pada intinya adalah memberikan
tegangan pada kumparan motor stepper dengan urutan tertentu. Ada 2 cara pemberian
tegangan pada kumparan yaitu :
II.3.1. Motor stepper dengan eksitasi tunggal
Urutan pemberian tegangan pada kumparan eksitasi tunggal seperti pada tabel
2.1.
Tabel 2.1 Eksitasi Tunggal
Langkah Lilitan I Lilitan II Lilitan III Lilitan IV
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1
Tanda ‘1’ pada setiap lilitan menandakan bahwa lilitan tersebut dalam
keadaan “on” dan diberikan tegangan catu daya yang besarnya tergantung pada
kemampuan motor stepper. Pada motor stepper dengan kemampuan 12 volt maka
diberikan tegangan catu daya sebesar 12 volt. Setiap langkah (step) akan
menghasilkan sudut 1,8º.
L1 U L4 L2 L3
L1 U L4 L2 L3
L1 U L4 L2 L3
L1 U L4 L2 L3
Langkah I Langkah II Langkah III Langkah IV
Gambar 2.7 Metode Langkah Eksitasi Tunggal
II.3.2 Motor stepper dengan eksitasi ganda
Pada motor stepper dengan kumparan eksitasi ganda terdapat empat buah
metode urutan pemberian tegangan yaitu :
II.3.2.1 Full Step
Metode langkah penuh akan menghasilkan sudut penuh sesuai dengan
spesifikasi motor stepper, misalnya motor stepper dengan sudut 1,8º akan
menghasilkan sudut 1,8º. Pemberian tegangan dilakukan sekaligus untuk dua
kumparan atau lilitan pada setiap langkahnya. Hal ini dapat dilihat dalam tabel 2.2.
Tabel 2.2 Eksitasi Ganda dengan Metode Langkah Penuh
Langkah Lilitan I Lilitan II Lilitan III Lilitan IV
1 1 1 0 0
2 0 1 1 0
3 0 0 1 1
4 1 0 0 1
L1 U L4 L2 L3
L1 U L4 L2 L3
L1 U L4 L2 L3
L1 U L4 L2 L3
Langkah I Langkah II Langkah III Langkah IV
Gambar 2.8 Eksitasi Ganda dengan Metode Langkah Penuh
II.3.2.2 Half Step
Metode setengah langkah akan menghasilkan sudut paruh dari sudut
spesifikasi motor, misalnya sudut 1,8° akan menghasilkan sudut 0,9°. Hal ini dapat
dilihat pada tabel 2.3.
Tabel 2.3 Metode Langkah Setengah (Half Step)
Langkah Lilitan I Lilitan II Lilitan III Lilitan IV
1 1 0 0 0
2 1 1 0 0
3 0 1 0 0
4 0 1 1 0
5 0 0 1 0
6 0 0 1 1
7 0 0 0 1
8 1 0 0 1
Untuk metode half step hanya ada satu perubahan pemberian tegangan
kumparan pada setiap langkahnya.
L1 U L4 L2 L3
L1 U L4 L2 L3
L1 U L4 L2 L3
L1 U L4 L2 L3
Langkah I Langkah II Langkah III Langkah IV
L1 U L4 L2 L3
L1 U L4 L2 L3
L1 U L4 L2 L3
L1 U L4 L2 L3
Langkah V Langkah VI Langkah VII Langkah VIII
Gambar 2.9 Metode Langkah Setengah
II.3.2.3 Metode Langkah Seperempat (Seperempat Micro Step)
Metode ini akan menghasilkan sudut putaran sebesar 0,45° setiap step-nya.
Eksitasi arus pada lilitan dilakukan secara bertingkat mengacu pada prinsip kerja
suatu DAC. Besar sudut ini merupakan seperempat dari besar sudut pada metode full
step. Besar Imaks yang diberikan pada motor stepper adalah 0,144 A.
L1 U L4 L2 L3
L1 U L4 L2 L3
L1 U L4 L2 L3
L1 U L4 L2 L3
Langkah 1-4 Langkah 5-8 Langkah 9-12 Langkah 13-16
Gambar 2.10 Metode Langkah Seperempat
II.3.2.4 Metode Langkah Seperdelapan Mikro (Mikro Step)
Metode ini merupakan pengembangan dari dua metode sebelumnya. Eksitasi
arus pada lilitan dilakukan secara bertingkat yang mengacu pada prinsip kerja suatu
pengubah digital ke analog. Pada langkah mikro besar sudut yang dihasilkan lebih
kecil dari dua metode sebelumnya, dalam hal ini besar sudut yang dihasilkan pada
metode langkah mikro adalah 0,225° setiap langkahnya. Besar sudut ini merupakan
1/8 dari besar sudut pada metode langkah penuh. Besar Imaks yang diberikan pada
motor adalah 0,144 A.
Gambar 2.11 Metode Langkah Mikro berupa pulsa L1 U L4 L2 L3
L1 U L4 L2 L3
Langkah 1-8 Langkah 9-16
Langkah 17-24 Langkah 25- 32
Gambar 2.12 Metode Langkah Seperdelapan Mikro Berupa Step
II.4 Operasi Serial Port
Pada Mikrokontroler AT89S51 mempunyai On Chip Serial Port yang dapat
digunakan untuk komunikasi data secara Full-Duplex sehingga port serial ini masih
dapat menerima data pada saat proses pengiriman data terjadi. Untuk menampung
data yang diterima atau dat yang akan dikirimkan, 89S51 mempunyai sebuah register,
yaitu SBUF yang terletak pada alamat 99h. register ini berfungsi sebagai buffer
L1 U L4 L2 L3
L1 U L4 L2 L3
sehingga pada saat mikrokontroler ini membaca data yang pertama dan data kedua
belum diterima secara penuh, data ini tidak akan hilang.
Pada kenyataannya, register SBUF terdiri atas dua buah register yang ternyata
menempati alamat yang sama, yaitu 99h. register tersebut adalah Transmit Register
yang bersifat write only (hanya dapat dibaca saja). Pada proses penerimaan data dari
port serial, data yang masuk ke dalam port serial akan ditampung pada Receive
Register terlebih dahulu dan akan diteruskan ke jalur bus internal pada saat
pembacaan register SBUF sedangkan pada proses pengiriman data ke serial port, data
yang ditulis dari bus internal akan ditampung pada Transmit Register terlebih dahulu
sebelum dikirimkan ke port serial.
Pada port serial AT89S51 dapat digunakan untuk komunikasi data secara
sinkron maupun asinkron. Komunikasi data serial secara simkron merupakan bentuk
komunikasi data serial yang memerlukan sinyal clock untuk sinkronisasi. Sinyal
clock tersebut akan tersulut pada setiap bit pengiriman data, sedangkan komunikasi
asinkron tidak memerlukan sinyal clock untuk sinkronisasi. Pengiriman data pada
komunikasi serial 89S51 dilakukan mulai dari bit yang paling rendah (LSB) hingga
bit yang paling tinggi (MSB).
Port serial pada AT89S51 bisa digunakan dalam 4 kode kerja yang berbeda.
Dari 4 mode tersebut, 1 mode bekerja secara sinkron dan yang 3 lainnya bekerja
secara asinkron. Keempat mode yang digunakan dalam komunikasi serial tersebut
adalah:
a. Mode0 : mode ini bekerja secara sinkron, data serial dikirim dan
diterima melalui kaki P3.0 (RxD), sedangkan kaki P3.1 (TxD)
dipakai untuk menyalurkan detak pendorong data serial yang
dibangkitkan AT89S51. data dikirim atau diterima 8 bit
sekaligus, dimulai dari bit yang bobotnya paling kecil atau
LSB (bit 0) dan diakhiri dengan bit yang bobotnya paling
besar atau MSB (bit 7). Kecepatan pengiriman data ( Baud
rate ) adalah 1/12 dari frekuensi kristal yang digunakan.
b. Mode1 : dimode ini, yang digunakan untuk pengiriman datatetap
digunakan kaki pin P3.1 (TxD) dan diterima melalui kaki pin
P3.0 (RxD). Pada mode 1 ini p[engiriman data dilakukan
secara asinkron, dimana pada mode ini data dikirim dan
diterima 10 bit sekaligus, diawali 1 bit start, disusul dengan 8
bit data yang dimulai dari bit yang bobotnya paling kecil (bit
0), diakhiri dengan 1 bit stop. Adalah RB8 pada register
SCON. Kecepatan pengiriman data ( baud rate ) bisa diatur
sesuai keperluan. Pada mode inilah (mode2 dan mode3)
dikenal secara umum sebagai UART (universal
Asynchronous Receiver or Transmitter).
c. Mode2 : data dikirim atau diterima 11 bit sekaligus, diawali 1 bit start,
kemudian disusul 8 bit data yang dimulai dari bit yang
berbobot paling kecil (bit 0), lalu bit ke 9 yang dapat diatur
lebih lanjut, diakhiri dengan 1 bit stop. Pada AT89S51 yang
berfungsisebagai pengirim, bit 9 tersebut berasal dari bit TB8
pada register SCON, sedangkan pada bit stop tidak ditampung
tetapi diabaikan. Kecepatan pengiriman data (baud rate) bisa
dipilih antara 1/32 atau 1/64 dari frekuensi kristal yang
digunakan.
d. Mode3 : pada mode 3 ini bekerja seperti halnya dengan mode 2, tetapi
untuk kecepatan pengiriman data (baud rate) bisa diatur
sesuai dengan keperluan seperti mode 1.
Register kontrol dan ststus untuk port serial berada dalam SCON ( Serial Port
Control Register ) dapat dilihat pada gambar dibawah.
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
SM0 SM1 SM2 REN TB8 RB8 T1 R1
Reset 0 0 0 0 0 0 0 0
Gambar 2.13 Susunan Bit dalam SCON
Keterangan :
a. Bit SM0 dan SM1 (bit 7 dan bit 6 pada register SCON) dipakai untuk
menentukan mode kerja dari port serial. Setelah reset kedua bit ini bernilai
“0” dan penentuan mode kerja port serial mengikuti tabel 2-1
Tabel 2.4 Penentuan mode kerja port serial
SM0 SM1 Mode Keterangan Baud Rate 0 0 0 Register geser Tetap (fosc/12) 0 1 1 UART 8-bit Bisa diubah-ubah
(dengan Timer 1 0 2 UART 9-bit Tetap (fosc/64) atau
fosc/32) 1 1 3 UART 9-bit Bisa diubah-ubah
(dengan Timer)
b. bit REN (Bit 4) dipakai untuk mengaktifkan kemampuan port serial untuk
menerima data. Pada mode0 kaki RxD (P3.0) dipakai untuk mengirim data
serial dan juga untuk menerima data serial. Sifat ini terbawa pula pada saat
port serial bekerja pada mode1, mode2 dan mode3, meskipun pada mode-
mode tersebut kaki RxD hanya dipakai untuk mengirim data, agar kaki
RxD bisa dipakai untuk menerima data, terlebih dahulu harus dibuat REN
= ‘1’. Setelah di-reset bit REN bernilai ‘0’.
c. Pada mode2 dan mode3, port serial bekerja dengan 9 bit data (dari 11 bit,
1 bit untuk start dan bit 1 untuk s top), SBUF yang kapasitasnya 8 bit tidak
cukup untuk keperluan ini. Bit ke-9 yang akan dikirim terlebih dahulu
diletakan di TB8 (bit3), sedangkan bit RB8 (bit2) merupakan bit yang
dipakai untuk menampung bit ke-9 yang diterima port serial.
d. Pada mode1, RB8 digunakan untuk menampung bit stop yang diterima,
dengan demikian apabila RB8 bernilai ‘1’ maka data diterima dengan
benar, sebaliknya apabila RB8 bernilai ‘0’ berarti terjadi kesalahan frame
(framing error). Kalau bit SM2 (bit 5) berniali ‘1’ pada mode1, jika terjadi
kesalahan frame, R1 tidak akan menjadi ‘1’ (aktif) meskipun SBUF sedah
berisi data dari port serial (bit stop diterima dengan benar). Bit ke-9 dapat
dipakai sebagai bit paritas, hanya saja bit paritas yang dikirim harus
ditentukan sendiri dengan program dan diletakan pada TB8 dan bit paritas
yang diterima pada RB8 dipakai untuk menentukanintegritas data secara
program pula. Tidak seperti pada UART standart, semua dikerjakan pada
perangkat keras dalam UART.
e. Bit TI (bit1) merupakan sinyal yang setara dengan sinyal THRE
(Transmitter Holding Register Empty) yang umum dijumpai pada UART
standart. Setelah port serial selesai mengirim data yang tersimpan pada
SBUF, maka pada bit TI akan bernilai ‘1’ secara otomatis, kemudian bit
ini harus di-nolkan dengan program agar dapat dipakai untuk memantau
keadaan SBUF pada pengiriman data berikutnya.
f. Bit R1 (bit 0) merupakan sinyal yang setara dengan sinyal RDA (Receiver
Data Available) yang umum dijumpai pada uART standart. Setelah SBUF
menerima data dari port serial, bit pada R1 akan bernilai ‘1’ secara
otomatis, kemudian bit ini harus di-nol-kan dengan program agar dapat
digunakan untuk memantau keadaan pada SBUF dalam penerimaan data
berikutnya.
II.4.1 BAUD RATE
Baud Rate untuk mode0 nilainya tetap dan mengikuti persamaan berikut ini:
Baud Rate Mode0 = Frekuensi Kristal/12 ……………………. (II.1)
Baud Rate untuk Mode2 bergantung dari nilai bit SMOD pada register PCON.
Jika SMOD bernilai ‘0’, baud rate-nya 1/64 dari frekuensi kristal, jika SMOD bernilai
‘1’ maka baud rate-nya 1/32 frekuensi kristal, pada baud rate mode2 mengikuti
persamaan:
Baud Rate mode2 = 2SMOD/64 x Frekuensi Kristal ……………………….(II.2)
Untuk menentukan baud rate dari mode1 dan mode3, pada AT89S51
tergantung dari laju (rate) limpahan Timer 1.
Pada timer 1 dapat digunakan untuk generator baud rate, maka baud rate pada
mode1 dan mode3 ditentukan berdasarkan laju limpahan timer 1 dan nilai dari SMOD
dari gambar dibawah, dengan persamaan:
Baud rate mode1 dan mode3 = 2 SMOD/32x (laju limpahan timer1) ……….(II.3)
Tabel 2.5 Baud Rate yang sering dipakai yang dihasilkan timer 1
TIMER1 Baud Rate
Fosc
SMOD
C/~T Mode
Nilai isi ulang
Mode0 Max: 1 Mhz
12 MHz X X X X
Mode2 Max: 375 KHz
12 MHz 1 X X X
Mode1&3: 62,5 KHz
12 MHz 1 0 2 FFH
19,2 KHz 11,059 MHz
1 0 2 FDH
9,6 KHz 11,059 MHz
0 0 2 FDH
4,8 KHz 11,059 MHz
0 0 2 FAH
2,4 KHz 11,059 MHz
0 0 2 F4H
1,2 KHz 11,059 MHz
0 0 2 E8H
137,5 Hz 11,986 MHz
0 0 2 1DH
110 Hz
6 MHz 0 0 2 72H
110
12 MHz 0 0 1
II.5 Penampil Tujuh Segmen
Pada dasarnya penampil tujuh segmen terdiri dari tujuh buah LED ( Light
Emmiting Diode ). LED digunakan untuk mengubah arus listrik menjadi cahaya
sehingga untuk menyalakan salah satu LED pada segmen, maka arus listrik harus
diarahkan ke dioda LED dari segmen yang dimaksud.
Menurut cara pemberian tegangan, maka suatu tujuh segmen terdiri dari dua
macam, yaitu: anoda bersama dan katoda bersama. Perbedaan antara keduanya hanya
terletak pada penyambungan antara LED yang terdapat pada segmen yang satu
dengan yang lain. Pada anoda bersama, anoda dari ketujuh LED terhubung menjadi
satu gambar.
Pada umumnya, ketujuh LED pada tujuh segmen diberi label A
sampai G seperti disajikan pada gambar 2.15
Gambar 2.14. Penampil tujuh segmen
A
F B G
E C D
BAB III
PERANCANGAN ALAT
III.1 Perancangan Perangkat Keras (Hardware)
Sistem Pengendali Motor Stepper terdiri atas 4 bagian utama yaitu Keypad
Matriks, mikrokontroller sebagai pengontrol/pengolah data yang di dalamnya terdapat
program-program, penguat arus motor stepper dalam hal ini menggunakan Driver
Motor Stepper ULN 2003 dan piranti-piranti output yang terdiri dari Seven Segment
dan motor stepper. Diagram blok sistem pengendali motor stepper dapat dilihat pada
gambar 3.1.
Gambar 3.1 Diagram Kotak pengendalian motor stepper
Keypad Matriks
3 x 4
Mikrokontroler AT89S51
(Penerima)
Mikrokontroler AT89S51 (Peirim)
Penampil Seven Segment
Driver motor Stepper ULN
2003
Motor Stepper
Unipolar
Penjelasan secara umum dari diagram kotak pada gambar 3.1 adalah sebagai
berikut:
1. Bok Keypad 3x4
Pada perancangan keypad digunakan untuk memberikan data masukan untuk
mikrokontroler AT89S51, masukan dari keypad akan mengatur putaran motor
stepper. Keypad yang digunakan pada perancangan ini adalah keypad type matriks
3x4, keypad terdiri dari beberapa saklar yang terhubung dengan port-port dari
mikrokontroler AT89S51. pembacaan keypad tipe matriks dapat dilakukan dengan
cara scanning proses atau dengan cara metode polling biasa. Menekan tombol pada
keypad berarti menghubungkan suatu baris dengan suatu kolom pada keypad tersebut.
Setelah data yang diambil valid, maka program akan menunggu tombol keypad
dilepaskan dengan menunggu kondisi FFh kembali serta melakukan konversi
berdasarkan tabel keypad setelah kondisi tersebut terpenuhi. Proses konversi tabel
keypad dilakukan dengan menganggap data dari keypad sebagai suatu alamat
memori. Isi dari alamat tersebut berupa data yang dianggap sebagai tanda saat tombol
tersebut ditekan.
2. Blok mikrokontroler AT89S51 Bagian ini terdiri dari mikrokontroler AT89S51 yang merupakan pusat
pengendalian dari setiap blok. Mikrokontroler menerima data dari keypad dan
kemudian mengo lah data tersebut, kemudian data tersebut dikirim ke mikrokontroler
AT89S51 sebagai penerima melalui komunikasi serial dan data tersebut diolah, lalu
ditampilkan pada 7 segment dan dikirimkan ke port serial
3. Blok Driver Motor Stepper ULN 2003
Bagian ini merupakan driver dari motor stepper yang akan menggerakan
motor stepper dengan penguatan arus maksimal 500mA.
4. Blok Motor Stepper
Motor stepper dengan 5 buah kabel atau 6 buah kabel yang commonnya
dijadikan satu, dipilih jenis ini karena paling mudah pengoperasiannya. Inti motor
dan switch pada masing-masing kumparan, dengan membuka dan menutup switch
tersebut maka inti motor dapat berputar dengan arah tertentu.
5. Blok Penampil 7 Segment
Bagian ini berfungsi untuk menampilakn nomer dari keypad yang akin
ditekan. Bagian ini langsung terhubung atau tersambung melalui port 0 dari
mikroikontroler.
III.1.1 Koneksi Keypad 3x4 dengan mikrokontroler
Pembacaan keypad tipe matriks dapat dilakukan dengan cara scanning proses
atau dengan cara metode polling biasa. Menekan tombol pada keypad berarti
menghubungkan suatu baris dengan suatu kolom pada keypad tersebut. Pada
perancangan disini baris dari keypad dihubungkan dengan port 0 (P0.0, P0.1, P0.2,
P0.3), sedangkan kolom dary keypad dihubungkan dengan port 0 (P0.4, P0.5, P0.6)
dari mikrokontroler AT89S51.
1 2 3
4 5 6
7 8 9
* 0 #
P0.1
P0.0
P0.3
P0.2
P0.6 P0.5 P0.4
Dengan rangkaian seperti pada gambar 3.2, pada kondisi tidak terjadi
penekanan tombol pada keypad, maka kondisi logika pada port 1 adalah logika ‘1’
pada setiap bitnya. Saat salah satu tombol dari keypad tertekan, baris dan kolom
yang terhubung akin terhubung ke ground sehingga kondisi dan kolom tersebut akin
berlogika ‘0’. Setiap tombol pada keypad akin memberikan logika ‘0’ pada baris dan
kolom tertentu sehingga setiap tombol akin membentuk data tertentu pada port 1.
Gambar 3.2 Keypad matriks 4x3
Penekanan tombol pada keypad dapat menimbulkan getaran yang akan
menimbulkan data yang belum valid pada port 1. program harus menunggu hingga
data yang ditekan pada keypad benar-benar data yang valid terlebih dahulu sebelum
proses pengambilan data dilakukan. Setiap penekanan tombol pada keypad akan
selalu menimbulakn dua buah logika ‘0’ pada port 1. oleh karena itu untuk
mengetahui apakah data yang dikeluarkan dari keypad sudah valid. Pada program
dapat diberikan delay untuk melihat apakah data yang dikirimkan dari keypad sudah
valid atau belum. Untuk setiap penekanan tombol pada keypad diberikan delay 20 ms
pada setiap penekanan tombol.
Setelah data yang diambil valid, maka program akin menunggu tombol
keypad dilepaskan dengan menunggu kondisi FFh kembali serta melakukan konversi.
Proses konversi tabel keypad dilakukan dengan menganggap data dari keypad sebagai
suatu alamat memori. Isi dari alamat tersebut berupa data yang dianggap sebagai
tanda saat tombol tersebut ditekan.
III.1.2 Komunikasi Serial Antar Mikrokontroler AT89S51
Pada komunikasi serial ini, data dikirim melalui kaki P3.1 (RxD), pengiriman
data dikirim secara asinkron, dimana data dikirim dan diterima 10 bit sekaligus,
diawali 1 bit start, disusul dengan 8 bit data yang dimulai dari bit yang bobotnya
paling kecil (bit 0), diakhiri dengan 1 bit stop. Dan yang berfungsi sebagai penerima
bit stop adalah RB8 pada register SCON. Kecepatan pengiriman data (baud rate) bisa
diatur sesuai keperluan, dan data yang diterima pada mikrokontroler yaitu pada kaki
P3.0 (RxD).
III.1.3 Koneksi 7 Segment dengam mikrokontroler
7segment digunakan untuk menampilkan data dari keypad yang akan ditekan.
Untuk menampilkan data pada 7segment digunakan metode scanning display. Pada
metode ini dapat menampilkan data pada sebuah 7segment. Data yang akan
ditampilkan pada 7segment sesuai dengan data masukan dari keypad, setelah melalui
proses dari mikrokontroler. Port 2 dari mikrokontroler akan berfungsi untuk
mengirimkan data segment, yang akan menghubungkan common dari 7segment
dengan port2, dari port yang saling terhubung akan menghasilkan data, yang
selanjutnya akan ditampilkan pada display 7segment.
Nilai R dari rangkaian 7segment, dapat dihitung dengan rumusan sbb:
R = Vcc-Vled/Iled ; Iled = 10 mA, Vcc = 5 V, V led = 1.7 V
R = 5V- 1.7V/ 0.10mA
R = 330 ohm.
III.2 Diagram Alir Program.
Mulai
Inisialiasi Port
Inisialiastimer 1mode 2
Nilai baud rate F9H
Aktifkan timer 1
Pilih serial mode 1
Isi register 0 = 0
Aktifkan intrupsiglobal
Aktifkan intrupsiserial
Proses scanning keypad
Inisialiasi Port
A = B7H ?
Tampilkan angka 1
Isi register 0 = 10
B
A = D7H ?
Tampilkan angka 2
Isi register 0 = 20
B
A = E7H ?
Tampilkan angka 3
Isi register 0 = 30
B
CTidak
Ya
Tidak
Ya
Tidak
Ya
A
C
A = BBH ?
Tampilkanangka 4
Isi register 0 =40
B
A = DBH ?
Tampilkanangka 5
Isi register 0 =50
B
A = EBH ?
Tampilkanangka 6
Isi register 0 =60
B
A = BDH ?
Tampilkanangka 7
Isi register 0 =70
B
A = DDH ?
Tampilkanangka 8
Isi register 0 =80
B
Tidak
Ya
Tidak Tidak Tidak
YaYa Ya Ya
Tidak D
D
A = EDH ?
Tampilkanangka 9
Isi register 0 =90
B
A = BEH ?
Tampilkanangka 0
Isi register 0 =0
B
Tidak
Ya
Tampilkanangka 0
A
Tidak
Ya
B
Matikanintrupsi serial
Kosongkanakumulator
Salin isi R0 keA
Kirim data baru
Sinyal adapengiriman
baru
Tunggu datasebelumnya
selesai
A
Matikanintrupsi serial
Tunggu SBUFberisi data baru
Penandasudah diambil
Ambil data
Aktifkanintrupsi serial
Mulai scanningdata
A = 10 ? A = 20 ?
Isi register 2 =10
Aktifkan motorstepper 10 x
1,8'
Mulai
Isi register 2 =20
Aktifkan motorstepper 20 x
1,8'
A = 30 ?
Isi register 2 =30
Aktifkan motorstepper 30 x
1,8'
Tidak
Ya
Tidak
Ya Ya
TidakD
D
A = 40 ?
Isi register 0 = 40
Aktifkan motorstepper 40 x 1,8'
A = 50 ?
Isi register 0 = 50
Aktifkan motorstepper 50 x 1,8'
A = 60 ?
Isi register 0 = 60
Aktifkan motorstepper 60 x 1,8'
A = 70 ?
Isi register 0 = 70
Aktifkan motorstepper 70 x 1,8'
A = 80 ?
Isi register 0 = 80
Aktifkan motorstepper 80 x 1,8'
TidakTidak Tidak Tidak Tidak
Ya Ya Ya Ya Ya
A = 90 ?
Isi register 0 = 90
Aktifkan motorstepper 90 x 1,8'
A = 0 ?
Isi register 0 = 0
Aktifkan motorstepper 0 x 1,8'
Tidak Tidak
YaYa
Selesai
Selesai
III.3 Rangkaian Lengkap komunikasi Serial
Gambar 3.3 Rangkaian Komunikasi Serial
BAB IV
ANALISA DAN PEMBAHASAN
Pada bagian ini akan dibahas analisis hasil pengujian rangkaian secara perblok
dari keseluruhan aplikasi mikrokontroler AT89S51 sebagai komunikasi serial untuk
pengendali besarnya derajat putaran motor stepper unipolar. Masukan data dari
keypad matrik 4x3 sebagai input pengendali besarnya derajat putaran motor stepper.
Setiap data/tombol keypad masukan akan dibaca oleh mikrokontroler AT89S51,
kemudian hasilnya langsung ditampilkan kedalam seven segment satu digit. Register
0 sebagai media penyimpan data sementara besarnya derajat putaran motor stepper
sebelum dikirim melalui serial buffer. Bila alat sudah siap, maka langkah selanjutnya
adalah melakukan pengujian per blok rangkaian. Pengujian alat dapat dilakukan
secara hardware maupun software. Pengujian dilakukan sesudah semua komponen
dan rangkaian yang dirancang tersebut dipastikan benar.
4.1 Pengujian Keypad Matrik 4x3
Rangkaian keypad ini merupakan rangkaian yang berfungsi sebagai tombol
masukan data untuk mengendalikan besarnya derajat putaran motor stepper secara
manual. Keypad tersusun atas beberapa tombol secara matrik 4x3 dan masing –
masing tombol salah satu kakinya ada yang terhubung ke ground. Keluaran kaki dari
setiap tombol matrik 4x3 dari rangkaian ini terhubung langsung ke alamat port P0,
yaitu P0.0 sampai P0.3 sebagai baris tombol dan P0.4 sampai P0.6 sebagai kolom
tombol pada mikrokontroler AT89S51.
1 2 3
4 5 6
7 8 9
* 0 #
P0.1
P0.0
P0.3
P0.2
P0.6 P0.5 P0.4
Gambar 4.1 Rangkaian dari keypad matrik 4x3
Pengujian keypad dilakukan dengan cara melakukan penekanan setiap tombol,
dan kaki ground dihubungkan dengan ground, kaki P0.0 – P0.6 dihubungkan dengan
multimeter, maka dapat diketahui kondisi keluaran pada P0.0 sampai P0.6 apakah
berlogika high atau low saat terjadi penekanan setiap tombol. Jika terjadi penekanan
pada tiap tombol keypad, maka kaki port 0 pada baris dan kolom terhubung ke
ground sehingga baris dan kolom akan berlogika low. Proses pengambilan data dari
keypad yaitu dengan cara membandingkan data awal keypad sebelum terjadi
penekanan, dengan data setelah penekanan pada keypad dengan bantuan multimeter
analog.
Berikut ini tabel 4.1, hasil pengujian dari tiap penekanan tombol pada keypad.
Tabel 4.1 Hasil pengujian tombol keypad matrik 4x3
Tombol P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 Hexa 1 1 0 1 1 0 1 1 1 B7 2 1 1 0 1 0 1 1 1 D7 3 1 1 1 0 0 1 1 1 E7 4 1 0 1 1 1 0 1 1 BB 5 1 1 0 1 1 0 1 1 DB 6 1 1 1 0 1 0 1 1 EB 7 1 0 1 1 1 1 0 1 BD 8 1 1 1 1 1 1 0 1 DD 9 1 1 0 0 1 1 0 1 ED 0 1 0 1 1 1 1 1 0 BE
Pengujian secara software juga dapat dilakukan yaitu dengan cara
memprogram mikrokontroler AT89S51 untuk membaca tombol keypad yaitu
membandingkan data masukan/penekanan dengan data yang Hexa yang disimpan
dalam memori program/ram melalui proses scanning. Jika tombol ditekan, jika data
masukan sama dengan data dalam memori program/ram, maka akan menampilkan
angka yang sesuai dengan angka tombol yang ditekan kedalam seven segment.
Listing program proses pembacaan tombol keypad secara lengkap seperti dibawah ini
:
key:
clr a ; Pengosongan akumulator
mov a,p0
cjne a,#0b7h,key1 ; Pemeriksaan tombol 1
mov p2,#0f9h ; Tampilkan angka 1
mov r0,#10
jmp kirim
key1:
cjne a,#0d7h,key2 ; Pemeriksaan tombol 2
mov p2,#10100100b ; Tampilkan angka 2
mov r0,#20
jmp kirim
key2:
cjne a,#0e7h,key3 ; Pemeriksaan tombol 3
mov p2,#10111000b ; Tampilkan angka 3
mov r0,#30
jmp kirim
key3:
cjne a,#0bbh,key4 ; Pemeriksaan tombol 4
mov p2,#10011001b ; Tampilkan angka 4
mov r0,#40
jmp kirim
key4:
cjne a,#0dbh,key5 ; Pemeriksaan tombol 5
mov p2,#10010010b ; Tampilkan angka 5
mov r0,#50
jmp kirim
key5:
cjne a,#0ebh,key6 ; Pemeriksaan tombol 6
mov p2,#10000011b ; Tampilkan angka 6
mov r0,#60
jmp kirim
key6:
cjne a,#0bdh,key7 ; Pemeriksaan tombol 7
mov p2,#11110000b ; Tampilkan angka 7
mov r0,#70
jmp kirim
key7:
cjne a,#0ddh,key8 ; Pemeriksaan tombol 8
mov p2,#10000000b ; Tampilkan angka 8
mov r0,#80
jmp kirim
key8:
cjne a,#0edh,key9 ; Pemeriksaan tombol 9
mov p2,#10010000b ; Tampilkan angka 9
mov r0,#90
jmp kirim
key9:
cjne a,#0beh,key10 ; Pemeriksaan tombol 0
mov p2,#11000000b ; Tampilkan angka 0
mov r0,#100
jmp kirim
key10:
jmp key
Keterangan program :
Secara garis besar langkah – langkah diatas yaitu membandingkan data
masukan tombol dengan data pada memori program mikrokontroler AT89S51.
Pertama membaca setiap penekanan tombol kemudian disimpan dalam akumulator
untuk dibandingkan dengan data pada memori program D7H bila tidak sama, maka
program lompat ke label key1, jika sama dengan data D7H maka tampilkan angka 1
melalui port 2. Pada label key1 akan membandingkan isi akumulator dengan data
D7H, bila tidak sama maka akan lompat ke label key2, jika sama dengan data D7H
maka tampilkan angka 2.
Pada label key2 akan membandingkan isi akumulator dengan data E7H, bila
tidak sama maka akan lompat ke label key3, jika sama dengan data E7H maka
tampilkan angka 3. Pada label key3 akan membandingkan isi akumulator dengan data
BBH, bila tidak sama maka akan lompat ke label key4, jika sama dengan data BBH
maka tampilkan angka 3. Pada label key4 akan membandingkan isi akumulator
dengan data DBH, bila tidak sama maka akan lompat ke label key5, jika sama dengan
data DBH maka tampilkan angka 4. Pada label key5 akan membandingkan isi
akumulator dengan data EBH, bila tidak sama maka akan lompat ke label key6, jika
sama dengan data EBH maka tampilkan angka 5. Pada label key6 akan
membandingkan isi akumulator dengan data BDH, bila tidak sama maka akan lompat
ke label key7, jika sama dengan data BDH maka tampilkan angka 6. Pada label key7
akan membandingkan isi akumulator dengan data DDH, bila tidak sama maka akan
lompat ke label key8, jika sama dengan data DDH maka tampilkan angka 7. Pada
label key8 akan membandingkan isi akumulator dengan data EDH, bila tidak sama
maka akan lompat ke label key9, jika sama dengan data EDH maka tampilkan angka
8. Pada label key9 akan membandingkan isi akumulator dengan data BEH, bila tidak
sama maka akan lompat ke label key10, jika sama dengan data BEH maka tampilkan
angka 9. Pada label key10 program lompat ke label key untuk melakukan scanning
pembacaan ulang.
4.2 Pengujian Mikrokontroler AT89S51
Mikrokontroler AT89S51 merupakan pengendali utama sistem komunikasi
serial yang digunakan untuk mengendalikan derajat/lebar putaran motor stepper
dengan kecepatan transfer data sebesar 9600 dengan frekuensi kristal yang digunakan
pada mikrokontroler sebesar 12 MHz. Nilai THI merupakan nilai isi ulang baud rate
9600, untuk lebih jelasnya dapat dilihat melalui perhitungan rumus dibawah ini :
16)256(129600
xTHIxfosc−
= baud rate mode 1 dengan SMOD = 1
jika nilai THI = F9H = 249 desimal, maka
892316)249256(12
129600 =
−=
xx
8923 merupakan nilai baud rata actual dengan ralat sebesar 7 %.
Sistim pengiriman data melalui kaki P3.1 (TxD) dan di terima melalui kaki
P3.2 (RxD), secara asinkron. Pada mode 1 data dikirim/diterima dimulai dari bit yang
paling terkecil (bit 0). Program subrutin yang dipakai untuk mengirim data adalah
sebagai berikut :
kirim:
clr es ; matikan intrupsi serial
clr a
mov a,r0 ; data baru yang akan dikirim
mov sbuf,a ; kirim data baru
jnb TI,$ ; tunggu data sebelumnya selesai dikirim
clr TI ; sinyal ada pengiriman baru
ljmp key
Pada subruitn serial kirim yaitu untuk mengirim data (semua mode port
serial). Pada baris JNB TI,$ menunggu TI menjadi 1 (aktif), untuk memastikan
pengiriman data yang sebelumnya sudah selesai. Data yang akan dikirim sebelumnya
disimpan dalam Akumulator A MOV SBUF,A. Agar TI dapat dipakai untuk
memantau keadaan SBUF pada pengiriman data berikutnya, maka TI harus dinolkan
secara manual.
Program untuk menerima data serial yang telah dikirim menggunakan
subrutin penerima data sebagai berikut:
Terima:
clr es ; matikan serial intrupsi
jnb RI,$ ; tunggu SBUF berisi data baru
clr RI ; pertanda data sudah diambil
clr a
mov a,sbuf ; ambil data
setb es ; aktifkan kembali serial intrupsi
Subrutin serial intrupsi dipakai untuk menerima data serial (untuk semua
mode) JNB RI,$ menunggu RI menjadi 1 (aktif), untuk memastikan sudah ada data
baru yang diterima pada SBUF. Pada intruksi MOV SBUF,A adalah proses
mengambil data serial dari buffer. Agar RI dipakai untuk memantau keadaan SBUF
pada pengiriman data berikutnya, maka RI harus di nolkan secara manual.
4.3 Pengujian Motor Stepper
Motor stepper yang digunakan disini adalah menggunakan motor stepper jenis
unipolar denganv tegangan 12 volt. Pengendalian motor stepper hanya digunakan
untuk mengetahui jumlah pulsa yang digunakan untuk menggerakan putaran motor
stepper. Jumlah pulsa akan menentukan besar sudut putar, motor yang digunakan
mempunyai sudut derajat sebesar 1,20. Arah putaran motor stepper hanya satu arah
dan setiap penekanan tombol keypad akan mempengaruhi besarnya sudut putar.
Pengujian motor stepper bisa menggunakan secara hardware maupun secara software.
Secara hardware dengan memberi tegangan sebesar 5 volt pada setiap kutub dan
pengujian secara software dengan memberi pulsa ke setiap kutub motor melalui
program pada mikrokontroler. Program untuk mengendalikan putaran motor stepper
adalah sebagai berikut:
banding:
cjne a,#10,banding1
mov r2,#8 ; data pulsa motor berputar sebesar 100
call putar_kanan
banding1:
cjne a,#20,banding2
mov r2,#17 ; data pulsa motor berputar sebesar 200
call putar_kanan
banding2:
cjne a,#30,banding3
mov r2,#25 ; data pulsa motor berputar sebesar 300
call putar_kanan
banding3:
cjne a,#40,banding4
mov r2,#34 ; data pulsa motor berputar sebesar 400
call putar_kanan
banding4:
cjne a,#50,banding5
mov r2,#42 ; data pulsa motor berputar sebesar 500
call putar_kanan
banding5:
cjne a,#60,banding6
mov r2,#50 ; data pulsa motor berputar sebesar 60
call putar_kanan
banding6:
cjne a,#70,banding7
mov r2,#59 ; data pulsa motor berpoutar sebesar 700
call putar_kanan
banding7:
cjne a,#80,banding8
mov r2,#67 ; data pulsa motor berputar sebesar 800
call putar_kanan
banding8:
cjne a,90,banding9
mov r2,#75 ; data pulsa motor berputar sebesar 900
call putar_kanan
banding9:
cjne a,#0,selesai
ljmp selesai
selesai:
reti
putar_kanan:
mov a,r3
rl a
cjne a,#0feh,terus
mov r3,#0efh
mov a,#0efh.
Keterangan :
Pada label putar_kanan terdapat intruksi MOV A,R3, dimana R3 merupakan
titik awal motor stepper berputar dan R3 diisi dengan data EFH. Kemudian di geser
kanan RL A isi akumulator satu Bit dan kemudian dibandingkan dengan data FEH,
jika tidak sama lompat ke label terus. Pada label terus isi akumulator dikeluarkan
pada P0 yang terhubung dengan IC ULN2003 sebagai driver motor stepper. Isi
akumulator disimpan kembali ke register 3 kemudian memanggil tunda waktu. MOV
P0,30FFH adalah perintah untuk mema tikan motor stepper setiap satu kali pulsa yang
diberikan. Kemudian isi R2 dikurangi 1 dan dibandingkan dengan data nol jika tidak
sama maka lompat ke label putar_kanan, isi R2 menentukan besarnya sudut putar.
Analiasa perhitungannya adalah :
Derajat putar = 1,2 x jumlah pulsa
Untuk memutarkan motor stepper sebesar 100 maka membutuhkan jumlah
pulsa sebanyak :
8333,8
2.1100
≈=
=
pulsajumlah
pulsajumlah
Tabel 4.2 Sudut Putaran Motor Stepper dengan Masukan Keypad
Tombol Keypad Besaran Sudut
1 10º
2 20º
3 30º
4 40º
5 50º
6 60º
7 70º
8 80º
9 90º
BAB V
PENUTUP
5.1 Kesimpulan
Setelah dilakukan pengamatan seperti pada bab IV terhadap alat yang dibuat
baik secara hardware maupun software maka diperoleh beberapa kesimpulan yaitu:
• Setiap data masukan akan dibaca oleh mikrokontroler AT89S51, dan langsung
ditampilkan dalam seven segment satu digit.
• Perubahan posisi sudut putar motor stepper setiap kelipatan 10º, sesuai dengan
masukan pada memori mikrokontroler dimana setiap tombol pada keypad
sudah diisi besaran sudut yang diinginkan.
• Putaran motor stepper akan kembali ke posisi semula apabila ditekan tombol
0 pada keypad.
5.2 Saran
Kendali motor stepper berbasis mikrokontroler AT89S51 dengan tampilan
seven segment merupakan salah satu aplikasi dari mikrokontroler namun yang
ditampilkan hanya besaran sudut putar motor stepper.
Perancangan secara hardware sebaiknya didahului dengan perancangan
software, hal ini dilakukan guna mengurangi kemungkinan kesalahan dan penekanan
biaya pada perancangan.
Perancangan secara software menggunakan hendaknya didahului perancangan
diagram alir. Hal ini memudahkan dalam penulisan urutan perintah-perintah yang
akan dipakai.
DAFTAR PUSTAKA
Agfianto Eko Putra. Belajar Mikrokontroler AT89C51/52/55 (Teori dan Aplikasi),
Penerbit Gava Media, Yogyakarta.
Paulus Andi Nalwan. Panduan Praktis Teknik Antarmuka dan Pemrograman
Mikrokontroler AT89C51, PT Elek Media Komputindo, Jakarta.
Wasito S. Pelajaran Elektronika Jilid 1A, Penerbit Karya Utama, Jakarta.
Suhata, ST. Aplikasi Mikrokontroler Sebagai Pengendali Peralatan Elektronik Via
Line Telepon, Penerbit Elex Media Komputindo, Jakarta
Terpadu Linear oleh Ir. Herman Widodo Soemitro, Penerbit Erlangga,
Jakarta.
http://www.maxim-ic. com
http://www.innovativeelectronics.com
LAMPIRAN
Listing Program Lengkap Komunikasi serial
Program secara lengkap adalah sebagai berikut:
org 0h
ljmp utama
org 23h
clr es
jnb RI,$
clr RI
clr a
mov a,sbuf
setb es
banding:
cjne a,#10,banding1
mov r2,#10
call putar_kanan
banding1:
cjne a,#20,banding2
mov r2,#20
call putar_kanan
banding2:
cjne a,#30,banding3
mov r2,#30
call putar_kanan
banding3:
cjne a,#40,banding4
mov r2,#40
call putar_kanan
banding4:
cjne a,#50,banding5
mov r2,#50
call putar_kanan
banding5:
cjne a,#60,banding6
mov r2,#60
call putar_kanan
banding6:
cjne a,#70,banding7
mov r2,#70
call putar_kanan
banding7:
cjne a,#80,banding8
mov r2,#80
call putar_kanan
banding8:
cjne a,90,banding9
mov r2,#90
call putar_kanan
banding9:
cjne a,#0,selesai
mov r2,#100
call putar_kanan
ljmp selesai
selesai:
reti
utama: mov p0,#0ffh
mov p2,#0h
mov p3,#0ffh
mov tmod,#20h
mov th1,#0f9h
setb tr1
mov scon,#50h
mov r0,#0
setb ea
setb es
key:
clr a
mov a,p0
cjne a,#0b7h,key1
mov p2,#0f9h
mov r0,#10
jmp kirim
key1:
cjne a,#0d7h,key2
mov p2,#10100100b
mov r0,#20
jmp kirim
key2:
cjne a,#0e7h,key3
mov p2,#10111000b
mov r0,#30
jmp kirim
key3:
cjne a,#0bbh,key4
mov p2,#10011001b
mov r0,#40
jmp kirim
key4:
cjne a,#0dbh,key5
mov p2,#10010010b
mov r0,#50
jmp kirim
key5:
cjne a,#0ebh,key6
mov p2,#10000011b
mov r0,#60
jmp kirim
key6:
cjne a,#0bdh,key7
mov p2,#11110000b
mov r0,#70
jmp kirim
key7:
cjne a,#0ddh,key8
mov p2,#10000000b
mov r0,#80
jmp kirim
key8:
cjne a,#0edh,key9
mov p2,#10010000b
mov r0,#90
jmp kirim
key9:
cjne a,#0beh,key10
mov p2,#11000000b
mov r0,#100
jmp kirim
key10:
jmp key
kirim:
clr es
clr a
mov a,r0
mov sbuf,a
jnb TI,$
clr TI
ljmp key
putar_kanan:
mov a,r3
rl a
cjne a,#0feh,terus
mov r3,#0efh
mov a,#0efh
terus:
mov p1,a
mov r3,a
call delay
mov p1,#0ffh
djnz r2,putar_kanan
ret
delay:
mov r6,#15
delay1:
mov r7,#0h
djnz r7,$
djnz r6,delay1
ret
end