BAB 2 TEORI DASAR
2.1 Motor Mesin putar listrik adalah suatu alat pengubah tenaga listrik menjadi gerak mekanik. Jika mengubah tenaga mekanik menjadi tenaga listrik maka disebut generator, sedangkan jika mengubah tenaga listrik menjadi tenaga mekanik disebut motor. Motor mempunyai sistem magnetik yang dibagi dalam dua bagian, dipisahkan oleh suatu batas udara, bagian tetap dari suatu motor disebut sebagai stator, dan bagian yang berputar disebut rotor. Salah satu bagian dari motor diatas memiliki kumparan yang fungsi utamanya adalah medan magnet utama dari motor, bagian ini dikenal sebagai sistem medan. Fungsi dari bagian lainnya adalah untuk membawa arus utama dari mesin, disebut jangkar (armature). Energi gerak pada motor terjadi melalui perantaraan medan magnetis dan medan listrik. Dalam sistem motor terdapat bagianbagian yang dirancang untuk membangkitkan medan magnet dan medan listrik.
2.1.1 Motor DC Pada motor DC terjadi perubahan energi listrik menjadi energi mekanik dengan menggunakan arus searah (direct current) sebagai sumber daya penggeraknya. Motor memiliki dua bagian utama yaitu stator (bagian yang diam) dan rotor (bagian yang bergerak). Komponen rotor terdiri dari poros, jangkar, inti armatur, lilitan armatur dan komutator/cincin terbelah. Sedangkan komponen utama stator terdiri dari sikat dan magnet utama. Konstruksi sederhana motor DC tersebut selengkapnya ditunjukkan pada gambar berikut.
4
5
Gambar 2.1 Konstruksi Motor DC Komutator pada rotor bersinggungan dengan sikat dari stator dimana pemberian sumber daya diberikan melalui sikat tersebut. Persinggungan antara sikat dan komutator menyebabkan arus mengalir ke kumparan jangkar. Arus yang mengalir pada kumparan jangkar tersebut menghasilkan medan magnet yang berinteraksi dengan medan magnet dari medan magnet utama pada stator. Berdasarkan kaidah tangan kanan, bila arah arus diibaratkan dengan ibu jari maka arah medan magnet yang timbul dapat diibaratkan dengan keempat jari lainnya.
2.2 LCD Matriks M1632 Liquid Crystal Display (LCD) matriks adalah salah satu jenis tampilan yang dapat digunakan untuk menampilkan karakter-karakter (angka, huruf dan karakterkarakter symbol lainnya) selain tampilan LCD lain dan tampilan seven segment. Keistimewaan dari LCD matriks ini disbanding LCD lain dan seven segment adalah dapat digunakan untuk menampilkan karakter-karakter symbol seperti α,β,Σ,±,{,} dan lain sebagainya. Hal ini karena pada LCD matrks digunakan dot-matriks (titik-titik yang membentuk matriks) untuk menampilkan suatu karakter sehingga LCD matriks
6
dapat ditampilkan lebih banyak bentuk karakter disbanding modul tampilan lainnya. Untuk menghubungkan dengan mikrokontroler telah dipersiapkan kaki-kaki pada modul LCD matriks yang secara kompatibel dapat langsung dihubungkan dengan port-port mikrokontroller. Konfigurasi kaki-kaki pada LCD matriks ini diperlihatkan pada tabel 2.1. Tabel 2.1 Konfigurasi Kaki LCD Matriks Input/Output
Fungsi
VSS
–
Ground dari modul ke rangkaian
VCC
Input
Catu daya luar +5 Volt ke modul tampilan
VLCD
Input
Tegangan kemudi LCD - Tegangan pengatur kontras dan sudut penglihatan modul LCD Sinyal pemilih mode : RS
Input
0 = Operasi kirim instruksi ke LCD 1 = Operasi kirim data ke LCD
R/W
Input
Kontrol arah data : 0 = Tulis ke modul LCD 1 = Baca dari modul LCD
Eclock DB0 DB3 DB4 DB7
Input
Operasi enable = Mengaktifkan fungsi baca atau tulis 4 bit MSB dari bus data dua arah. Jalur-jalur ini
Input/Output hanya digunakan pada mode transfer data 8 bit. Input/Output
4 Bit MSB dari bus data dua arah. Jalur-jalur ini digunakan baik pada mode 4 bit maupun pada mode transfer data 8 bit.
7
Tabel di bawah ini memperlihatkan daftar instruksi dalam pengoperasian LCD matrik M1632. Tabel 2.2 Tabel Instruksi Operasi LCD Matriks KODE R
R
R
R
R
R
R
R
R
/
/
/
/
/
/
/
/
/
S
W
7
6
5
4
3
2
1
INTRUKSI
KETERANGAN
WAKTU
Mengosongkan display dan
1,64 mS
DBO
Clear Display
0
0
0
0
0
0
0
0
0
1
mengembalikan kursor keposisi Home Mengembalikan kursor keposisi
1,64 mS
Return Home
0
0
0
0
0
0
0
0
1
·
home,mengembalikan dsplay keposisi original,isi DDRAM tidak berubah dan set almt DDRAM ke 0 Menetapkan arah gerak kursor dan
40 micro sec
menetapkan apakah display akan 1
digeser atau tidak,operasi ini
Entry Mode Set
0
0
0
0
0
0
0
0
/
S
D
dilakukan selama penulisan/pembacaan data dari DDRAM/CGRAM dan pada operasi normal "S" diset 0
Display ON/OFF
0
0
0
0
0
0
1
D
C
B
Control
Set ON/OFF semua Display(D),
40 micro sec
kursor ON/OFF ( C ) dan blink kursor ON/OFF ( B )
Cursor
Or
Display shiift
0
0
0
0
0
1
S
R
/
/
C
L
N
F
Pindahkan kursor atau geser ·
·
display ( S/C ),arah pergeseran (R/L) dan isi DDRAM tidak berubah Set lebar data interface (DL),
Function Set
0
0
0
0
1
Set CGRAM
0
0
0
1
ACG
D L
Address
40 micro sec
·
·
40 micro sec
jumlah baris pada display (N) dan huruf karakter (F) Set CGRAM addres dan CGRAM
40 micro sec
data dikirim dan diterima setelah setting ini Set DDRAM addres dan DDRAM
Set DDRAM
0
0
1
ADD
40 micro sec
DDRAM data dikirim dan diterima setelah setting ini Baca busy flag(BF) yang
1 micro sec
8
Read
Busy
Flag &
0
1
B
Address
AC
Menandakan operasi internet mulai
F
dilakukan dan membaca alamat isi Counter
Write
Data
To
1
0
TULIS DATA
CG/DDRAM
Tulis data kedalam DDRAM atau
40 micro sec
CGRAM
Tabel 2.3 menjelaskan fungsi-fungsi bit dari tabel 2.2 jika diberi harga high (1) maupun low (0). Dalam pengoperasian LCD matriks sebagai modul tampilan, diperlukan instruksi-instruksi sebagai fungsi cara pengoperasian LCD. Pengiriman instruksi-instruksi pada LCD matriks harus satu-persatu dan tidak dapat dikirim sebelum instruksi sebelumnya selesai dikerjakan. Hal ini dapat dilakukan dengan memeriksakan bendera Busy (Busy Flag) atau memberikan penundaan waktu yang cukup sebelum memberikan instruksi sebelumnya. Tabel 2.3 Deskripsi Bit Dari Daftar instruksi LCD
Bit Name Settings 0 = Decrement Cursor
1 = Increment Cursor
position
position
S
0 = No Display shift
1 = Display shift
D
0 = Display off
1 = Display on
C
0 = Cursor off
1 = Cursor on
B
0 = Cursor blink off
1 = Cursor blink on
S/C
0 = Move cursor
1 = Shift Display
R/L
0 = Shift left
1 = Shift right
DL
0 = 4-bit interface
1 = 8-bit interface
N
0 = 1/8 or 1/11 Duty
1 = 1/16 Duty ( 2 lines)
I/D
( 1 line) F
0 = 5 x 7 dots
1 = 5 x 10 dots
9
BF
0 = Can accept
1 = Internal operaton
intruction
In progress
Data yang dikirim ke jalur data LCD dapat berupa kode karakter maupun kode instruksi. Kedua jenis data tersebut dapat dibedakan dari cara pengirimannya. Hal ini tampak dari perbedaan kondisi pada pin RS. Dimana pin RS harus diberi tegangan berlogika 0 saat pengiriman data berupa kode karakter.
2.3 Mikrokontroller AT89S52 AT89S52 digunakan pada tugas akhir ini karena mudah dalam pengisian dan penghapusan programnya serta mikrokontroller ini juga memiliki pin I/O (input/output) yang cukup banyak sehingga sering digunakan dalam aplikasi-aplikasi rangkaian elektronik. AT89S52 adalah mikrokontroller CMOS 8-bit dengan 8Kbytes Flash Programmable and Erasable Read Only Memory (PEROM) yang mengkonsumsi daya rendah. Dengan adanya Flash PEROM, IC ini dapat dengan mudah diprogram atau dihapus menggunakan programmer yang ada hingga 1000 kali pemrograman dan penghapusan. IC ini memiliki 40 kaki dan terdapat 4 port I/O yang dapat digunakan menurut software. Pin diagram dari AT89S52 diperlihatkan pada gambar 2.2
10
Gambar 2.2 Pin Diagram IC 89S52 Beberapa jenis mikrokontroller dari keluarga µCS-52 seperti 8031 diberikan pada tabel 2.4 berikut. Tabel 2.4 Anggota Keluarga µCS-52 Device Internal memory
Timer
/ Interrupts
Program
Data
counter
8031
None
128k x 8 bit ROM
2 x 16 bit
5
8031A
None
128k x 8 bit ROM
2 x 16 bit
5
8051
4k x 8 bit ROM
128k x 8 bit ROM
2 x 16 bit
5
8051A
4k x 8 bit ROM
128k x 8 bit ROM
2 x 16 bit
5
8751H
4k x 8 bit EPROM
128k x 8 bit RAM
2 x 16 bit
5
8751H
4k x 8 bit EPROM
128k x 8 bit RAM
2 x 16 bit
5
bit 128k x 8 bit RAM
2 x 16 bit
5
h
H
-8 8951
4k
x
EEPROM
8
11
2.3.1
Fungsi Masing-masing Pin 1. Pin 1 sampai 8 merupakan port paralel 8 bit dua arah (bidirectional) yang dapat digunakan untuk keperluan umum (general purpose). 2. Pin 9 (reset) adalah masukan aktif tinggi. Pulsa transisi dari rendah ke tinggi akan mereset mikrokontroller AT89S52. 3. Pin 10 sampai 17 (port 3) adalah port paralel 8 bit dua arah yang memiliki fungsi pengganti. Fungsi pengganti meliputi TXD (Transmit Data), RXD (Receive Data), INT0 (interrupt 0), INT1 (interrupt 1 ), T0 (timer 0), T1 (timer 1), WR (write), RD (read). Bila fungsi pengganti tidak dipakai, pin-pin ini dapat digunakan sebagai port paralel 8 bit serbaguna. Tabel 2.5 Data port pin IC AT89S52 Port Pin
Fungsi Alternatif
P3.0
RXD (serial input port)
P3.1
TXD (serial output port)
P3.2
INT0 (eksternal interupt 0)
P3.3
INT1 (eksternal interupt 1)
P3.4
T0 (timer 0 eksternal input)
P3.5
T1 (timer 1 eksternal input)
P3.6
WR (eksternal data memory write strobe)
P3.7
RD (eksternal data memory read strobe)
4. Pin 18 (XTAL 1) adalah pin masukan ke rangkaian osilator internal. Pin ini dipakai bila menggunakan osilator kristal. 5. Pin 20 (GND) dihubungkan ke ground. 6. Pin 21 - 28 (port 2) adalah port paralel 8 bit dua arah. Port ini mengirimkan alamat untuk mengakses memory eksternal. 7. Pin 29 adalah pin PSEN (Program Store Enable) merupakan sinyal pengontrol yang memperbolehkan program memory eksternal masuk ke dalam bus selama proses pemberian / pengambilan instruksi. 8. Pin 30 adalah pin ALE (Address Latch enable) yang digunakan untuk menahan
12
alamat memory eksternal selama pelaksanaan instruksi. 9. Pin 31 adalah pin EA (External Address) diberi logic rendah untuk penggunaan memory eksternal sedangkan untuk penggunaan memory internal diberi logic tinggi. 10. Pin 32 - 39 (port 0) merupakan port paralel 8 bit open drain dua arah. Bila digunakan untuk mengakses memori luar port ini akan memultipleks alamat memory dengan data. 11. Pin 40 (Vcc) dihubungkan ke sumber tegangan +5 volt.
2.3.2
Diagram Blok Mikrokontroller AT89S52
Bagian dalam IC mikrokontroller AT89S52 diperlihatkan pada gambar 2.3
Gambar 2.3 Arsitektur Mikrokontroller AT89S52 Berdasarkan gambar fungsi tiap bagian dari IC mikrokontroller AT89S52 adalah sebagai berikut
13
a. Osilator dan Sistem Clock Mikrokontroller AT89S52 Sinkronisasi rangkaian clock semuanya dioperasikan secara internal dan merupakan sistem pewaktu utama dari mikrokontroller ini. Sumber pembangkit frekuensi (osilator) dapat disusun secara internal maupun eksternal. Untuk penggunaan osilator internal diperlukan sebuah kristal atau resonator keramik antara pin XTAL1 dan XTAL2 dan dua buah kapasitor ke ground, sedangkan untuk penggunaan osilalor eksternal rangkaiannya dihubungkan dengan sinyal clock dari luar. Untuk lebih jelasnya dapat dilihat pada data sheet. b Program Counter (PC) Mikrokontroller AT89S52 berisikan program counter 16 bit yang dipergunakan untuk menahan data byte address yang akan menunjukkan alamat-alamat sistem memory. Setiap byte instruksi program yang tersimpan dilokasi memori (internal maupun eksternal), bila instruksi tersebut dieksekusi maka pengambilan / pengalamatan byte data tersebut akan melalui program counter. Isi dari PC ini akan dengan secara otomatis bertambah sesuai dengan panjang byte dari instruksi yang telah dilaksanakan. c Memori Internal Untuk memaksimalkan fungsi dari mikrokontroller AT89S52 digunakan memory internal yang mencakup memori program yang terdapat pada EEPROM sebanyak 4 Kbyte. Setiap awal program atau reset, CPU akan memulai eksekusi program dari alamat 0000h. Memori data yang terdapat pada RAM sebesar 128 byte. Memori data internal dipetakan menjadi 3 bagian yaitu: 1.
32 byte register yang merupakan register kerja (working register) yang dibagi dalam 4 kelompok (bank) yaitu bank 0, bank l , bank 2 dan bank 3. Masing-masing bank terdiri dari 8 buah register yang selanjutnya masing-masing register tersebut akan diberi nama dengan R0, R1, R2, R3, R4, R5, R6 dan R7. Untuk pemilihan bank ditentukan inisialisasi RS1 dan RS2 pada bit flag pada PSW.
2.
16 byte register yang berfungsi dalam manipulasi bit disebut juga bit addressable register.
3.
Lokasi alamat 30h-7Fh yang merupakan register untuk keperluan umum.
14
2.3.3 Register Fungsi Khusus (Special Function Register) 1.
Register A (akumulator) Merupakan register yang paling penting diantara kedua register CPU ini sebab dipakai untuk beberapa operand seperti operand penjumlahan, pengurangan, perkalian bilangan bulat, pembagian bilangan bulat boolean, manipulasi bit transfer data ke memori eksternal dan register penampung.
2.
Register B Digunakan bersama register A didalam proses perkalian dan pengurangan.
3.
Program Status Word (PSW) Register ini berisi beberapa bit status yang mencerminkan keadaan mikrokontroller. Satu bit register flag disediakan untuk menyimpan setiap kondisi dari hasil operand suatu instruksi program. Selain itu kondisi dari instruksi dapat di test melalui flag. Defenisi dari bit-bit dalam PSW dijelaskan sebagai berikut :
Tabel 2.6 Program Status Word MSB C
LSB AC
F0
RS1
RS0
OV
-
P
Ket : C
= carry flag
AC
= auxialarry flag
F0
= flag 0 general purpose
RS1
= bank register selector bit
RS0
= bank register selector bit
4. Stack Pointer (SP) Stack adalah daerah dalam RAM internal yang dipergunakan untuk menyelamatkan sementara isi register yang akan dipergunakan untuk keperluan lain. Stack ini bcrhubungan dengan berhubungan dengan instruksi PUSH dan POP. Hal ini penting karena jumlah register yang ada terbatas. Berikut ini adalah gambaran mengenai kerja dari operasi stack.
15
SP = 0Ah
Alamat 0Ah
SP = 09h
SP = 0Ah Ambil data
Simpan data Alamat 09h Simpan data SP = 06h
SP = 0Ah Ambil data
Alamat 06h Simpan data
SP = 0Ah Ambil data
SP = 07h
Alamat 07h
Simpan data ke stack, increment lalu simpan
RAM internal (ambil lalu increment)
SP = 0Ah
Gambar 2.4 Stack pointer pada 89S52
5.
Register data Pointer (DPTR) DPTR register merupakan register 16 bit yang dibagi menjadi dua bagian masing-masing 8 bit DPH (Data Pointer High) dan 8 bit DPL (Data Pointer Low). Register ini dipakai untuk melengkapi akses kode internal dan eksternal.
6.
Register Interrupt Priority (IP) Register ini mengatur prioritas dari interupsi yang masuk, interupsi prioritas rendah dapat diinterupsi oleh interupsi prioritas tinggi.
7.
Register lnterupt Enable (IE) Sumber interupsi pada mikrokontroller ini dapat diaktifkan atau dilumpuhkan secara software dengan mengatur bit di SFR yang bernama IE.
8. Register Timer/counter Register ini mengatur periode waktu untuk Timer/counter bekerja, contohnya: a. Sebagai timer/counter 8 bit. T = (255 - Ux) x T (periode dari mikrokontroller). Dimana Ux adalah isi register U0 atau UI.
16
b. Sebagai timer/counter 16 bit. T = (65535 - THx Ux) x T (periode dari mikrokontroller) THx : isi register TH0 atau TH1 Ux 9.
: isi register U0 atau TH1
Register Timer/counter mode Control (TMOD) Register ini mengatur pemilihan mode operasi timer/counter dimana definisi bitnya adalah sebagai berikut : Tabel 2.7 Tabel kontrol mode timer/counter 89S52 MSB
LSB
GATE C/T
M1
M0
GATE C/T
M1
M0
Ket : GATE = saat TRx dalam TCON diset high dan gate =1, timer/counter akan berjalan ketika TRx = 1 C/T
= pemilihan fungsitimer/counter. Clear (0) untuk
operasi
timer dan Set (1) untuk operasi counter. M1
= bit pemilih mode
M0
= bit pemilih mode
Tabel 2.8 Tabel pemilihan mode counter 89S52 M1 M0 Mode Operasi 0
0
0
Timer 13 bit
0
1
1
Timer/counter 16 bit
1
0
2
Timer autoreload 8 bit
1
1
3
U0 adalah timer/counter 8 bit
10. Register Timer/counter control (TCON) Register ini mengatur kerja timer/counter. Adapun definisi dari bit-bit pada TCON adalah sebagai berikut :
17
Tabel 2.9 Tabel kontrol timer/counter 89S52 MSB TF1
LSB TR1
TF0
TR0
IE1
IT1
IE0
IT0
Ket : TF1
= timer l overflow flag
TR1
= Bit untuk menjalankan timer 1
TF0
= 0 overflow flag
TR0
= Bit untuk menjalankan timer 0
IE1
= external interrupt 1 edge flag
IT1
= interrupt 1 control bit
IE0
= external interrupt 1 edge flag
IT0
= interrupt 1 control bit
11. Register Serial Control (SCON) Register ini digunakan untuk mengontrol komunikasi data serial. Bit-bit SCON didefinisikan sebagai berikut : Tabel 2.10 Tabel kontrol mode serial 89S52 MSB SM0
LSB SM1
SM2
REN
TB8
RB8
T1
R1
Ket : SM0
= pemilih mode serial.
SM1
= pemilih mode serial.
SM2 = membuat enable komunikasi multiprosesor dalam mode 2 atau mode3. REN = set/clear secara software penerimaan. TB8
= ser/clear secara software bit 9 yang dikirim dalam mode 2 atau mode3.
RB8
= dalam mode 0 RB8 tidak digunakan. Dalam mode 1 SM2 = 0, RB8 merupakan bit stop yang diterima.
jika
18
T1
= transmit interupt flag.
R1
= receive interupt flag.
Tabel 2.11 Tabel pemilihan mode serial SM1
SM0
Mode Operasi
Operasi
0
0
8 bit shift register 1/12 frekuensi osilator
0
1
8 bit UART
Variable
1
0
9 bit UART
1/32 atau 1/64 frekuensi osilator
1
1
9 bit UART
Variable
12. Register Serial Data Buffer (SBUF) Register SBUF secara fisik terdiri dari dua buah register. Yang satu hanya bisa ditulis dan dipergunakan
untuk menahan data
yang akan
ditransmisikan oleh mikrokontroller melalui pin TxD dan yang satunya lagi hanya bisa dibaca dan menahan data yang diterima dari luar melalui pin RxD. Kedua register ini memiliki alamat yang sama yaitu 99h. 13. Register Power Control (PCON) Register ini mengatur SMOD yang akan digunakan untuk mengatur baud rate dan juga mengatur kerja mikrokontoller dalam mode idle. 14. Port I/O Port I/O disediakan oleh mikrokontroller sebanyak 4 buah yang terdiri dari port 0, port 1 , port 2 dan port 3. Seluruh port dapat dialamati per bit atau byte. Port 0 dan port 2 digunakan untuk pengaturan alamat dan data dalam memori eksternal, port 3 untuk sinyal kontrol dan port 1 berfungsi sebagai I/O.
19
2.3.4
Mode Pengalamatan Data Pemrograman pada mikrokontroller AT89S52 sering melibatkan pertukaran data
dari lokasi alamat satu ke yang lain. Mode pengalamatan pada mikrokontroller dikelompokkan sebagai berikut : a.
Pengalamatan langsung (Direct addressing) Mode pengalamatan langsung hanya datap dilakukan terhadap RAM internal dan SFR didalam instruksinya, operand diisi dengan suatu alamat dan byte/bit. Contoh :
b.
Mov A,add
: copy data dari alamat address langsung ke registerA
Mov add,Rr
: copy data register Rr ke alamat address langsung
Pengalamatan tidak langsung ( indirect addressing) Operan pengalamatan tak langsung menunjuk ke sebuah register yang berisi lokasi alamat memory yang akan digunakan dalam operansi. Lokasi yang nyata tergantung pada isi register saat instruksi dilaksanakan. Untuk melaksanakan pengalamatan tidak langsung digunakan symbol @. Contoh: Add A,@R0
: Tambahkan isi RAM yang lokasinya ditunjukkan oleh register R0 ke akumulator
Dec @R1
: Kurangi satu isi RAM yang alamatnya ditunjukkan Oleh register R1.
Movx @DPTR : Pindahkan isi dari akumulator ke alamat memory 16
Bit
(memori luar atau dalam) yang ditunjukkan oleh data pointer (DPTR) c.
Pengalamatan register (register addressing) Pengalamatan register memindahkan data antar register internal pada mode pengalamatan ini, akumulator atau R0 - R7 yang dipergunakan sebagai sumber atau target. Mov A,Rr
: copy data dari register Rr ke register A
Mov Rr,A
: copy data dari register A ke register Rr
20
d.
Pengalamatan langsung (Immediate Adrressing) Mode
pengalamatan
langsung
memungkinkan
pemrograman
untuk
memindahkan konstanta data sebesar 8 atau 16 bit ke suatu lokasi alamat memory. Nilai sebuah konstanta dapat langsung mengikuti dasar opcode pada memory program. Didalam bahasa rakitan mikrokontroller operand berupa konstanta diawali dengan tanda ‘#’. Operand bisa berupa string, numerik, variabel simbolik atau ekspresi aritmatik, konstanta bisa ditulis dengan format decimal, biner atau heksadecimal. Contoh :
e.
Mov DPTR.#nn
: copy nn ke register DPTR
Mov Rr,#n
: copy 8 bit ke register Rr
Pengalamatan berindeks (indexing addressing) Pengalamatan berindeks hanya dapat dilakukan terhadap memori program dan bertujuan untuk membaca label pencarian (look up table) di memory program.
f.
Pengalamatan bit (bit addressing) Pengalamatan bit adalah penunjukkan alamat ke lokasi bit dalam RAM internal (byte 32 - 37) atau perangkat keras. Untuk melakukan pengalamatan bit digunakan symbol titik (.). Contoh :
2.3.5
Setb TR1
: set TR1 (Timer 1 ) ON
Setb 88h,6
: set bit 6 pada lokasi 88h (Timer 1 ) ON
Pemrograman Mikrokontroller AT89S52 Pemrograman 89S52 dilakukan dengan menggunakan program Rigel dan ISP
melalui port LPT dari sebuah komputer. Di dalam membuat program pada 89S52 diperlukan pengetahuan tentang instruksi-instruksi yang berlaku bagi 89S52 yang akan dibahas sebagai berikut :
21
2.3.5.1 Instruksi aritmatik a. Penambahan (ADD) Instruksi ini akan menjumlahkan data dengan isi akumulator dan hasilnya disimpan dalam akumulator. Penambahan ada 2 macam yaitu tanpa carry (ADD) dan dengan carry (ADDC). ADD
: (A) ← (A) + data
ADDC
: (A) ← (A) + (C) + data
Bilangan berukuran 1 byte dapat ditambahkan dengan perintah ADD maupun ADDC. b. Pengurangan (SUBB) lnstruksi ini akan mengurangkan isi akumulator dengan isi carry flag dan isi hasilnya disimpan dalam akumulator. : (A) ← (A) - (C) – data
SUBB c. Perkalian (MUL)
Instuksi ini akan mengalikan isi akumulator dengan isi register B. : (AB) ← ( A ) * ( B )
MUL
Byte bawah basil perkalian disimpan dalam akumulator, byte atas disimpan dalam register B. d. Pembagian (DIV) Pembagian juga melibatkan register B. Isi register akumulator akan dibagi oleh isi register B. : (AB) ← (A)/(B)
DIV
Register A akan berisi hasil bagi sedangkan reg. B berisi sisa pembagian. e. Penambahan satu (INC) Proses increment merupakan proses penambahan satu pada isi suatu register atau memory. INC
: (A) ← (A) + 1
22
Pemakaian konstruksi increment menghemat pemakaian memory karena instruksi INC merupakan instruksi 1 byte (tidak memakai operand). f. Pengurangan satu (DEC) Proses decrement merupakan kebalikan dari proses increment yaitu mengurangkan satu dari register atau memory. DEC
:(R0) ← (R0)– 1
Pada instruksi ini isi register R0
dikurangi satu dan hasilnya disimpan kembali dalam register tersebut. Sama seperti INC, instruksi DEC juga merupakan instruksi 1 byte. 2.3.5.2
Instruksi logika dan manipulasi bit
a. Logika AND (ANL) Instruksi ini melakukan proses logika AND antara suatu register dengan register, register dengan data, carry flag dengan isi suatu alamat bit, dan lain-lain. b. Logika OR (ORL) Instruksi ini melakukan proses logika OR antara suatu register dengan register, register dengan data, carry flag dengan isi suatu alamat bit, dan lain-lain. c. Instruksi NOT (CPL, komplemen) Instruksi ini melakukan proses logika NOT pada suatu register, data, carry flag, isi suatu alamat dan lain-lain d. Logika XOR (XRL) Instruksi ini melakukan proses logika XOR antara suatu register dengan register, register dengan data, carry flag dengan isi suatu alamat bit, dan lain-lain.
23
e. Putar ke kiri (RL) Instruksi ini akan memutar isi akumulator 1 bit ke kiri. Bagian MSB akan mengisi bagian LSB. Contoh, misalnya akumulator mula-mula berisi 10111011h dengan perintah RL A akan menyebabkan isi akumulator menjadi 01110111h.
1
0
1
1
1
0
1
1
C
1
C
Sebelum isi akumulator diputar
0
1
1
1
0
1
1
Sesudah isi akumulator diputar Gambar 2.5 Pemutaran isi akumulator ke kiri tanpa carry f. Putar ke kanan (RR) Instruksi ini akan memutar isi akumulator 1 bit ke kanan. Bagian LSB akan menjadi MSB. Contoh, misalnya akumulator mula-mula berisi 11100101h. Dengan perintah RR A akan menyebabkan isi akumulator menjadi 11110010h.
1
0
1
1
1
0
1
1
C
1
C
Sebelum isi akumulator diputar
1
1
0
1
1
1
0
Sesudah isi akumulator diputar
Gambar 2.6 Pemutaran isi akumulator ke kanan tanpa carry
24
g. Putar ke kanan dengan carry (RRC) Instruksi ini akan menggeser isi akumulator 1 bit ke kanan. Bagian LSB akan mengisi bagian carry flag, isi carry flag akan menjadi MSB.
1
0
1
1
1
0
1
1
0
Sebelum isi akumulator diputar
0
1
0
1
1
1
1
0
1
Sesudah isi akumulator diputar
Gambar 2.7 Pemutaran isi accumulator ke kanan dengan carry h. Putar ke kiri dengan carry (RLC) Instruksi ini akan memutar isi akumulator 1 bit ke kiri. Bagian MSB akan mengisi bagian carry flag, isi carry flag akan menjadi LSB.
1
0
1
1
1
0
1
1
0
Sebelum isi akumulator diputar
0
1
1
1
0
1
1
0
Sesudah isi akumulator diputar
Gambar 2.8 Pemutaran isi akumulator ke kiri dengan carry
1
25
2.3.5.3 Instruksi pencabangan Instruksi ini akan melakukan pencabangan ke suatu alamat dimana instruksi ini terdiri dari dua bagian: 1. Pencabangan dengan syarat, instruksi-instruksinya antara lain: a. CJNE
: Instruksi ini akan membandingkan sisa Register atau isi memori
dengan data, bila sama maka instruksi selanjutnya yang akan dituju dan bila tidak sama instruksi yang ditunjuk label yang akan dilaksanakan. Contoh : CJNE R0,#02h,Label Berarti jika R0 tidak sama dengan 02h maka instruksi akan menuju ke label. b. DJNZ
: Instruksi ini akan mengurangi isi register atau memori dengan
satu, bila sudah 0 instruksi selanjutnya dilaksanakan. Bila belum 0 instruksi dilanjutkan ke label. c. JB
: Instruksi ini akan menguji suatu alamat bit, bila isinya 1
instruksi akan menuju ke label dan bila isinya 0 instruksi selanjutnya yang dieksekusi. d. JBC
: Instruksi ini akan menguji suatu alamat bit. Apabila berisi l (set)
bit tersebut akan di-clear dan dieksekusi menuju label. Bila alamat berisi 0 instruksi selanjutnya yang dieksekusi. e. JC
: Instruksi ini akan menguji carry flag. Apabila berisi 1 eksekusi
akan menuju label dan bila carry flag berisi 0 instruksi selanjutnya yang akan dieksekusi. f. JNB
: Instruksi ini menguji suatu alamat bit. Bila isinya 0 eksekusi
akan menuju alamat kode dan bila isinya 1 instruksi selanjutnya yang akan dilaksanakan. g. JNC
: Instruksi ini menguji carry flag. Jika berisi 0 eksekusi akan
menuju alamat kode dan bila berisi 1 instruksi selanjutnya yang akan dilaksanakan. h. JNZ
: Instruksi ini menguji akumulator. Bila nilainya 0 eksekusi akan
menuju alamat kode dan jika berisi 1 instruksi selanjutnya yang akan dilaksanakan.
26
i. JZ
: Instruksi ini akan menguji akumulator. Bila nilainya 0 eksekusi
akan menuju kode alamat dan bila nilainya 1 instruksi selanjutnya yang akan dilaksanakan. 2. Percabangan tanpa syarat Instruksi pencabangan tanpa syarat meliputi SJMP (short jump) dan LJMP (Long jump). 2.4
Port Serial AT89S52 Port serial pada 89S52 terletak pada port 3.0 sebagai data receiver (RxD) dan port 3.1 sebagai data transmitter (TxD). Port serial digunakan secara umum sebagai komunikasi data antar mikrokontroller pada suatu sistem dan sering juga digunakan sebagai port output untuk mengontrol rangkaian lain seperti shift register.
Gambar 2.9 Blok diagram komunikasi serial antar mikrokontroller 89S52 2.5
Minimum sistem AT89S52 Mikrokontroller AT89S52 yang telah diisikan program dapat dengan mudah
dioperasikan pada suatu sistim elektronik. Namun diperlukan rangkaian minimum sistem bagi IC tersebut yaitu dengan memberikan sinyal osilator bagi mikrokontroller selain power supply. Rangkaian osilator dapat dibuat secara internal maupun external dengan konfigurasi seperti berikut ini:
27
a.
Internal oscillator, rangkaian ini dibentuk dengan memberikan kristal osilator maupun resonator keramik pada pin-pin XTAL1 dan XTAL2.
Gambar 2.10 Rangkaian internal osilator
Catatan : C1, C2
= 30 pF ± 10 pF untuk kristal = 40 pF ± 10 pF untuk Resonator keramik
b.
External oscillator, rangkaian ini dibentuk dengan memberikan sinyal osilator dari luar ke pin XTAL1 dan membiarkan pin XTAL2 tidak terhubung.
Gambar 2.11 Rangkaian external osilator
28
Sedangkan pada rancangan Tugas Akhir ini digunakan konfigurasi internal osilator menggunakan kristal 11,0592 MHz seperti ditunjukkan pada gambar minimum sistem berikut :
Gambar 2.12 Rangkaian external osilator pada minimum sistem 89S52 2.6 Radio Frequency Identification (RFID) RFID adalah proses identifikasi seseorang atau objek dengan menggunakan frekuensi transmisi radio. RFID menggunakan frekuensi radio untuk membaca informasi dari sebuah devais kecil yang disebut tag atau transponder (Transmitter + Responder). Tag RFID akan mengenali diri sendiri ketika mendeteksi sinyal dari devais yang kompatibel, yaitu pembaca RFID (RFID Reader). RFID adalah teknologi identifikasi yang fleksibel, mudah digunakan, dan sangat cocok untuk operasi otomatis. RFID mengkombinasikan keunggulan yang tidak tersedia pada teknologi identifikasi yang lain. RFID dapat disediakan dalam devais yang hanya dapat dibaca saja (Read Only) atau dapat dibaca dan ditulis (Read/Write), tidak memerlukan kontak langsung maupun
29
jalur cahaya untuk dapat beroperasi, dapat berfungsi pada berbagai variasi kondisi lingkungan, dan menyediakan tingkat integritas data yang tinggi. Sebagai tambahan, karena teknologi ini sulit untuk dipalsukan, maka RFID dapat menyediakan tingkat keamanan yang tinggi. Pada sistem RFID umumnya, tag atau transponder ditempelkan pada suatu objek. Setiap tag membawa dapat membawa informasi yang unik, di antaranya: serial number, model, warna, tempat perakitan, dan data lain dari objek tersebut. Ketika tag ini melalui medan yang dihasilkan oleh pembaca RFID yang kompatibel, tag akan mentransmisikan informasi yang ada pada tag kepada pembaca RFID, sehingga proses identifikasi objek dapat dilakukan. Sistem RFID terdiri dari empat komponen, di antaranya seperti dapat dilihat pada gambar 2.13
Gambar 2.13 Komponen RFID
1. Tag Ini adalah devais yang menyimpan informasi untuk identifikasi objek. Tag RFID sering juga disebut sebagai transponder. 2. Antena untuk mentransmisikan sinyal frekuensi radio antara pembaca RFID dengan tag RFID. 3. Pembaca RFID
adalah devais yang kompatibel dengan tag RFID yang akan
berkomunikasi secara wireless dengan tag.
30
4. Software Aplikasi adalah aplikasi pada sebuah workstation atau PC yang
dapat
membaca data dari tag melalui pembaca RFID. Baik tag dan pembaca RFID diperlengkapi dengan antena sehingga dapat menerima dan memancarkan gelombang elektromagnetik. 2.6.1 Pembaca RFID Sebuah pembaca RFID harus menyelesaikan dua buah tugas, yaitu: • Menerima perintah dari software aplikasi • Berkomunikasi dengan tag RFID Pembaca RFID adalah merupakan penghubung antara software aplikasi dengan antena yang akan meradiasikan gelombang radio ke tag RFID. Gelombang radio yang diemisikan oleh antena berpropagasi pada ruangan di sekitarnya. Akibatnya data dapat berpindah secara wireless ke tag RFID yang berada berdekatan dengan antena.
2.6.2 Tag RFID Tag RFID adalah devais yang dibuat dari rangkaian elektronika dan antena yang terintegrasi di dalam rangkaian tersebut. Rangkaian elektronik dari tag RFID umumnya memiliki memori sehingga tag ini mempunyai kemampuan untuk menyimpan data. Memori pada tag secara dibagi menjadi sel-sel. Beberapa sel menyimpan data Read Only, misalnya serial number yang unik yang disimpan pada saat tag tersebut diproduksi. Sel lain pada RFID mungkin juga dapat ditulis dan dibaca secara berulang. Berdasarkan catu daya tag, tag RFID dapat digolongkan menjadi: 1. Tag Aktif
yaitu tag yang catu dayanya diperoleh dari batere, sehingga akan
mengurangi daya yang diperlukan oleh pembaca RFID dan tag dapat mengirimkan informasi dalam jarak yang lebih jauh. Kelemahan dari tipe tag ini adalah harganya yang mahal dan ukurannya yang lebih besar karena lebih komplek. Semakin banyak fungsi yang dapat dilakukan oleh tag RFID maka rangkaiannya akan semakin komplek dan ukurannya akan semakin besar.
31
2. Tag Pasif yaitu tag yang catu dayanya diperoleh dari medan yang dihasilkan oleh pembaca RFID. Rangkaiannya lebih sederhana, harganya jauh lebih murah, ukurannya kecil, dan lebih ringan. Kelemahannya adalah tag hanya dapat mengirimkan informasi dalam jarak yang dekat dan pembaca RFID harus menyediakan daya tambahan untuk tag RFID. Tag RFID telah sering dipertimbangkan untuk digunakan sebagai barcode pada masa yang akan datang. Pembacaan informasi pada tag RFID tidak memerlukan kontak sama sekali. Karena kemampuan rangkaian terintegrasi yang modern, maka tag RFID dapat menyimpan jauh lebih banyak informasi dibandingkan dengan barcode. Pada table 1 diilustrasikan perbedaan utama antara teknologi barcode dengan RFID.
Tabel 2.11 Perbandingan Teknologi Barcode dengan RFID
32
2.7 Visual Basic Visual Basic 6.0 merupakan salah satu bahasa pemrograman visual. Dengan Visual Basic 6.0, dapat dengan mudah untuk membuat suatu program aplikasi. Walaupun kemudahan diberikan dalam pembuatan program aplikasi, tetapi program aplikasi yang dihasilkan juga baik. Ini disebabkan dalam pengembangan program aplikasi Visual Basic 6.0 didukung oleh banyak fasilitas. Dalam membangun sebuah aplikasi Database dengan Visual Basic 6.0, dapat dilakukan dengan mudah sesuai keinginan. Dengan adanya kontrol-kontrol ActiveX yang mudah digunakan, dapat lebih mudah dalam membuat program aplikasi database.
2.7.1 IDE Visual Basic 6.0 Untuk dapat menggunakan Visual Basic, IDE (Integrated Development Environment) atau lingkungan kerja dari Visual Basic 6.0 harus diketahui. Tampilan IDE Visual Basic 6.0 terlihat seperti Gambar 2.13.IDE pada Visual Basic 6.0 dibagi menjadi delapan bagian besar, yaitu menu, toolbar, toolbox, project explorer, properties window, form layout window, form dan kode editor.
33
Gambar 2.14 Tampilan IDE Visual Basic 6.0
2.7.1.1 Menu Bagian menu Visual Basic 6.0 terlihat seperti pada Gambar 2.15
Gambar 2.15. Menu Utama VB 6
Pada bagian menu terdapat tiga belas menu utama, yaitu menu File, Edit, View, Project, Format, Debug, Run, Query, Diagram, Tools, Add-Ins, Window dan Help. Dan tinggal mengklik menu utama kemudian memilih submenu.
2.7.1.2 Toolbar Toolbar fungsinya sama seperti fungsi dari menu, hanya saja pada toolbar pilihan-pilihan berbentuk icon. Untuk memilih suatu proses yang akan dilakukan, tinggal mengklik icon yang sesuai dengan proses yang diinginkan, Bagian toolbar terlihat seperti pada gambar 2.16
34
Gambar 2.16. Toolbar
Icon-icon pada toolbar adalah pilihan-pilihan pada menu yang sering digunakan dalam membuat program aplikasi. Dengan adanya toolbar, memudahkan proses yang sering dipilih tanpa harus memilihnya pada menu.
2.7.1.3 Toolbox Toolbox adalah tempat dimana control-kontrol diletakkan. Kontrol-kontrol yang terdapat pada toolbox dipakai dalam pembuatan program aplikasi. Untuk membuat objek kontrol pada form program aplikasi, diambil dari kontrol-kontrol yang ada pada toolbox. Bagian toolbox terlihat seperti pada gambar 2.17
Gambar 2.17 Toolbox
35
2.7.1.4 Project Explorer Project Explorer adalah tempat untuk melihat daftar dari form dan module yang digunakan dalam proyek. Melalui Project Explorer dapat juga dipilih form yang akan dpakai. Bagian Project Explorer terlihat seperti pada gambar 2.18
Gambar 2.18 Project Explorer 2.7.1.5 Properties Window Properties Window adalah tempat untuk properti dari setiap obyek kontrol. Properties Window juga dipakai untuk mengatur properti dari obyek kontrol yang dipakai. Dengan Properties Window, dapat mengubah properti yang nantinya akan dipakai sebagai default dari obyek kontrol pada waktu program pertama kali dieksekusi. Bagian properti window terlihat seperti Gambar 2.19
Gambar 2.19 Properties Window
36
2.7.1.6 Form Layout Window Form Layout Window berfungsi untuk melihat posisi form pada layar monitor pada waktu program dieksekusi. Untuk menggeser posisi form, klik dan geser posisi form pada form layout window sesuai dengan posisi yang
diinginkan pada layar
monitor. Bagian form layout window adalah seperti pada gambar 2.20
Gambar 2.20 Form Layout Window
2.7.1.7 Form Form adalah tempat untuk membuat tampilan (user interface) pada program aplikasi. Pada form, dapat diletakkan atau ditambahkan objek kontrol. Bagian form adalah seperti pada gambar 2.21
37
Gambar 2.21Form
2.7.1.8 Kode Editor Kode Editor adalah tempat untuk meletakkan atau menuliskan kode program pada program aplikasi. Gambar Kode Editor adalah seperti pada gambar di bawah ini.
Gambar 2.22 Kode Edtor
38
Untuk menggunakan Kode Editor, dapat dilakukan dengan 5 cara, yaitu: 1. Klik menu View lalu klik Code. 2. Klik ganda pada form atau objek control yang terdapat pada form. 3. Klik kanan pada form lalu klik View Code. 4. Klik kanan pada Project Explorer lalu klik View Code. 5. Klik icon View Code pada project explorer.