BAB II MIKROKONTROLER PIC16F877 DAN KOMPONEN PENDUKUNGNYA
2.1
Mikrokontroler PIC16F877
Mikrokontroler PIC16F877 adalah mikrokontroler produksi Microchip Technology
Inc yang popular digunakan sekarang ini. Merupakan salah satu mikrokontroler dari keluarga PICmicro yang menggunakan teknologi FLASH memori, sehingga dapat diprogram atau dihapus hingga seribu kali. Prosesor (CPU) mikrokontroler PIC16F877 merupakan jenis RISC, dan ini menjadi keunggulan dibandingkan dengan mikrokontroler 8-bit lain dikelasnya dalam hal kecepatan dan kompresi kode-kode program. Sebagaimana mikrokontroler pada umumnya, secara internal mikrokontroler PIC16F877 terdiri atas unit-unit fungsional Arithmetic and Logical Unit (ALU), kumpulan register kerja, register dan dekoder instruksi, pewaktu dan komponen kendali lainnya. Berbeda dengan sebuah mikroprosessor, sebuah mikrokontroler telah menyediakan komponen memori dalam serpih yang sama (in chip). Mikrokontroler ini menerapkan arsitektur Harvard yang memisahkan memori program dengan memori data dan bus alamat dengan bus data, sehingga pengaksesan program dan pengaksesan data dapat dilakukan secara bersamaan (concurrent). 2.1.1 Fitur Mikrokontroler PIC16F877 Keunggulan yang mendasari dalam teknologi mikrokontroler PIC16F877 antara lain sebagai berikut : A. Fitur Peripheral
Timer
Watchdog Timer 8 Bit. Timer 0, 8 bit (timer / counter dengan 8 bit prescaler). 5
Universitas Sumatera Utara
6
Timer 1, 16 bit (timer / counter dengan prescale). Timer 2, 8 bit (timer / counter dengan prescaler dan postscaler).
USART (Universal Serial Asynchronous Receiver Transmiter).
PORT Serial Sinkron. Serial Peripheral Interface (SPI) Master mode. Inter-Integrated Circuit (I2C) Master/Slave.
Parallel Slave Port (PSP) 8-bits wide, dengan external RD, WR and CS controls Dua Capture, Compare, PWM modul. Capture 16 bit, max. resolusi 12.5 ns. Compare 16 bit, max. resolusi 200 ns. PWM max. resolusi 10-bit.
PORT Paralel PORTB : 8 Bit digital I/O. PORTC : 8 Bit digital I/O. PORTD : 8 Bit digital I/O.
B. Fitur Analog
PORT Paralel
PORTE : 3 Bit digital I/O atau 3 canel masukan Analog.
PORTA : 6 Bit digital I/O atau 5 canel masukan Analog.
A/D 10 Bit (Analog to Digital Converter).
10-bit, up to 8-channel Analog-to-Digital Converter (A/D).
Brown-out Reset (BOR).
Analog Comparator module with:
Universitas Sumatera Utara
7
Two analog compar Programmable on-chip voltage reference (VREF) module. C. Fitur Mikrokontroler
RISC CPU yang mempunyai performance tinggi.
Memori Memori Program
Flash ROM : 8 K x 14 Bit. Stack : 8 x 13 Bit.
Memori Data
RAM : 368 x 8 Bit. EEPRON : 225 x 8 Bit.
2.1.2
Programmable code protection.
Power saving Sleep mode.
Selectable oscillator options.
In-Circuit Serial Programming (ICSP) hanya dengan dua pin.
Watchdog Timer (WDT) dengan on-chip RC oscillator.
High Sink / Source Current: 25 mA.
Wide operating voltage range: 2.0V to 5.5V.
Processor read / write access to program memory.
Low power, high speed CMOS FLASH / EEPROM technology.
Pin Mikrokontroler PIC 16F877 Mikrokontroler PIC16F877A diproduksi dalam kemasan 40 pin PDIP (Plastik Dual
In Line) maupun 40 pin SO (Small Outline). Namun yang banyak terdapat dipasaran adalah kemasan PDIP. Pin-pin untuk I/O sebanyak 33 pin yang terdiri atas 5 PORT, yaitu 6 pin pada PORT A, 8 pin pada PORT B, 8 pin pada PORT C, 8 pin pada PORT D, dan 3 pin pada PORT E. Tujuh pin lainnya berfungsi sebagai pin tegangan input (+), ground,
Universitas Sumatera Utara
8
oscilator clock ekternal dan master clear / reset aktif low. Berikut konfigurasi dan fungsifungsi pin mikrokontroler PIC16F877 dalam kemasan DIP (Dual In Line).
Gambar 2.1 Konfigurasi Pin Mikrokontroler PIC16F877 1.
PORT A (RA0-RA5) Pin pada PORT A berfungsi sebagai (I/O) dua arah (bidirectional), dan juga
mempunyai fungsi alternatif seperti pada Tabel 2.1. Tabel 2.1
Nama Pin
Fungsi Alternatif PORT A
Nomor Pin (DIP 40)
RA0 / AN0
2
RA1 / AN1
3
Fungsi Alternatif RA0
Digital I/O - 0
AN0
Input analog - 0
RA1
Digital I/O - 1
AN1
Input analog - 1
Universitas Sumatera Utara
9
RA2 / AN2 /
4
VREF-
RA3 / AN3 / VREF+
5
RA4 / T0CKI /C1OUT
RA5 /AN5/
6
/
7
C2OUT
RA2
Digital I/O – 2
AN2
Input analog – 2
VREF-
Tegangan referensi rendah
RA3
Digital I/O – 3
AN3
Input analog – 3
VREF+
Tegangan referensi tinggi
RA4
Digital I/O – 4
T0CKI
Input analog – 4
C1OUT
Masukan clock eksternal timer 0
RA5
Digital I/O – 5
AN5
Input analog – 5 Slave select untuk komunikasi serial
C2OUT
2.
Comparator C2 output
PORT B (RB0-RB7) Pin pada PORT B berfungsi sebagai (I/O) dua arah (bidirectional), dan juga
mempunyai fungsi alternatif seperti pada Tabel 2.2. Tabel 2.2
Nama Pin RB0 / INT
Fungsi Alternatif PORT B
Nomor Pin (DIP 40) 33
Fungsi Alternatif RB0
Digital I/O – 0
INT
External Interrupt
RB1
34
Digital I/O – 1
RB2
35
Digital I/O – 2
RB3 / PGM
36
RB3
Digital I/O – 3
PGM
Programming Enable Pin
RB4
37
Digital I/O – 4
RB5
38
Digital I/O – 5
Universitas Sumatera Utara
10
RB6 RB6 / PGC
39
Digital I/O – 6 Serial Programming Clock (Pemrograman cara
PGC
ICSP)
RB7 RB7 /PGD
3.
40
Digital I/O – 7 Serial Programming Data (Pemrograman cara
PGD
ICSP)
PORT C (RC0-RC7) Pin pada PORT C berfungsi sebagai (I/O) dua arah (bidirectional), dan juga
mempunyai fungsi alternatif seperti pada Tabel 2.3. Tabel 2.3
Nama Pin
RC0 / T1OSO / T1CKI
RC1 / TIOSI / CCP2
Nomor Pin (DIP 40)
15
16
Fungsi Alternatif RC0
Digital I/O - 0
TIOSO
Timer 1 Oscillator Output
T1CKI
Timer 1 Clock Input eksternal
RC1
Digital I/O – 1
TIOSI
Timer 1, Oscillator Input
CCP2 RC2
RC2 / CCP1
RC3 / SCK / SCL
Fungsi Alternatif PORT C
17 CCP1
Ouput Analog – 1, dengan pengaturan sinyal input (secara PWM) Digital I/O – 2, Output Analog – 2, dengan pengaturan sinyal input (secara PWM)
RC3
Digital I/O -3
SCK
Clock SPI (synchronous Serial Port)
18
Universitas Sumatera Utara
11
RC4 / SDI / SDA
RC5 / SDO /
RC6 / TX / CK
RC7 / RX / DT
4.
23
SCL
Clock slave select
RC4
Digital I/O – 4
SDI
Masukan data SPI (master mode)
SDA
Masukan data slave select
RC5
Digital I/O – 5
SDO
Keluaran data SPI (master mode)
RC6
Digital I/O – 6
TX
Transmiter USART
CK
USART Clock
RC7
Digital I/O – 7
RX
Receiver USART
DT
Data USART
24
25
26
PORT D (RD0-RD7) Pin pada PORT D berfungsi sebagai (I/O) dua arah (bidirectional), dan juga
mempunyai fungsi alternatif seperti pada Tabel 2.4. Tabel 2.4 Fungsi Alternatif PORT D
Nama Pin
Nomor Pin (DIP 40)
RD0 / PSP0
19
RD1 / PSP1
20
RD2 / PSP2
21
Fungsi Alternatif RD0
Digital I/O – 0
PSP0
Parallel Slave Port – 0
RD1
Digital I/O – 1
PSP1
Parallel Slave Port – 1
RD2
Digital I/O – 2
PSP2
Parallel Slave Port – 2
Universitas Sumatera Utara
12
5.
RD3 / PSP3
22
RD4 / PSP4
27
RD5 / PSP5
28
RD6 / PSP6
29
RD7 / PSP7
30
RD3
Digital I/O – 3
PSP3
Parallel Slave Port – 3
RD4
Digital I/O – 4
PSP4
Parallel Slave Port – 4
RD5
Digital I/O – 5
PSP5
Parallel Slave Port – 5
RD6
Digital I/O – 6
PSP6
Parallel Slave Port – 6
RD7
Digital I/O – 7
PSP7
Parallel Slave Port – 7
PORT E (RE0-RE2) Pin pada PORT E berfungsi sebagai (I/O) dua arah (bidirectional), dan juga
mempunyai fungsi alternatif seperti pada Tabel 2.5. Tabel 2.5 Fungsi Alternatif PORT E
Nama Pin
Nomor Pin (DIP 40)
Fungsi Alternatif RE0
RE0 /
RE1 /
RE2 /
/ AN5
/ AN6
/ AN7
8
Digital I/O – 0
Read Control in PSP mode
AN5
Input Analog – 5
RE1
Digital I/O – 1
9
Write Control in PSP mode AN6
Input Analog – 6
RE2
Digital I/O – 2
10
Chip Select Control in PSP mode AN7
Input Analog – 7
Universitas Sumatera Utara
13
6.
OSC1 dan OSC2 Merupakan masukan untuk sumber penabuh luar (external clock), berupa kristal
atau rangkaian RC untuk mengaktifkan osilator yang terdapat pada mikrokontroler PIC16F877A. OSC1 pada pin 13 sebagai input clock dan OSC2 pada pin 14 sebagai output clock. 7.
MCLR /VPP Pin nomor 1, yang merupakan masukan untuk reset atau tegangan masukan pada
saat memprogram. 8.
VDD dan VSS Pin VDD dihubungkan dengan sumber tegangan +5 Volt dan VSS pada ground. Pin
VDD adalah pada nomor 11 dan 32, sedangkan pin VSS pada nomor 12 dan 31. 2.1.3 Memori Memori adalah sebuah tempat atau media penyimpanan, yang terdiri blok / kotakkotak atau lokasi yang memiliki alamat / address sendiri. Setiap blok menyimpan kata (word). Word merupakan sebuah informasi unit logika. Memori pada sebuah mikrokontroler, berfungsi menyimpan program yang akan dijalankan dan data yang digunakan program tersebut . Memori yang tersedia dapat berupa Volatile memori, seperti RAM (Random Acces Memory) atau Nonvolatile, seperti ROM, PROM, EPROM, EEPROM. 2.1.3.1 Memori Program Memori program berfungsi sebagai tempat penyimpanan program / aplikasi perangkat lunak. Ruang memori dalam menyimpan program berisikan semua kode yang akan dijalankan / dipakai sebuah aplikasi, dan sekaligus berisikan nilai awal untuk variabel
Universitas Sumatera Utara
14
yang digunakan. Memori program bersifat nonvolatile, yaitu kemampuan memori untuk memelihara informasi / data yang disimpan walaupun tidak mendapat catu daya. Memori program dalam mikrokontroler PIC16F877A terdiri atas : Flash ROM : 8K x 14 bit. Memori Stack : 8 x 13 bit. Perealisasian
memori
program
dalam
teknologi
FLASH
memori,
akan
memungkinkan melakukan pemrogram atau penghapusan program hingga seribu kali. Dengan berukuran word 14 bit dan kapasitas 8K word, memori program ini hanya dapat diakses oleh Program Counter (PC). Hal ini dikarenakan PC berukuran 13 bit. PC ialah register yang memilihara jalannya urutan program dengan menyimpan alamat instruksi yang sedang dijalankan. Alamat awal program biasanya nol, dimana instruksi pertama program akan disimpan kecuali penulis program menentukan lain. Setiap instruksi dijalankan, PC akan bertambah satu untuk menunjuk keinstruksi selanjutnya. Percabangan dan jump (pelompatan) tidak dilaksanakan dalam satu instruksi. Stack berkapasitas 8 lokasi dengan lebar word 13 bit, tidak termasuk kedalam program ataupun data. Stack digunakan menyimpan isi PC bila ada instruksi CALL, dan digunakan hanya secara internal untuk menyimpan alamat instruksi kembali dari subrutin dengan cara LIFO ( Last In First Out ). 2.1.3.2
Memori Data Memori data terbagi dalam beberapa ruang (semacam halaman / bank), memuat
register yang mempunyai fungsi-fungsi umum dan khusus yang tersendiri. Memori data ini terdiri atas RAM 368 X 8 Bit (tersusun sebagai file register) dan EEPROM 256 X 8 bit. Pengaksesan register file secara langsung sangat sederhana yaitu dengan mencantumkan nomor alamat register dalam instruksinya. Pengaksesan secara tak langsung (terindeks)
Universitas Sumatera Utara
15
dilakukan melalui register indeks INDF (register pertama pada setiap bank), yang sebenarnya bukanlah register fisik. Setiap pengaksesan register INDF sebenarnya mengakses register yang ditunjuk oleh register pemilih register yaitu FSR (File Select Register). 2.2
LED Light Emitting Dioda atau lebih dikenal dengan sebutan LED adalah, dioda
(semikonduktor) yang dapat memancarkan cahaya monokromatik pada saat mendapat arus bias maju (forward bias). Warna yang dihasilkan bergantung pada bahan semikonduktor yang dipakai. Berbeda dengan dioda pada umumnya, kemampuan mengalirkan arus pada LED cukup rendah yaitu maksimal 20 mA dan jatuh tegangan pada LED juga berpariasi sesuai warna LED tersebut. Tegangan jatuh (forward voltage) merupakan besar tegangan pada saat LED mulai konduksi atau memancarkan cahaya. Berikut nilai tegangan jatuh (VF) dan kurva karakteristik pada sebuah LED menurut warna yang dihasilkan. Infra merah : 1,6 V
Merah : 1,8 V – 2,1 V
Putih : 3,0 V – 3,6 V
Biru : 3,0 V – 3,5 V
Hijau : 2,6 V
Kuning : 2,4 V
Orange : 2,2 V
Gambar 2.2 Kurva Karakteristik LED
Universitas Sumatera Utara
16 6
Apabiila LED diaaliri arus leebih besar dari d 20 mA maka LED D akan rusak k, sehinggaa daalam peneraapannya LE ED selalu ddiseri deng gan sebuah resistor, yaang berfungsi sebagaii peembatas aruus. Simbol sebuah s LED D seperti Gaambar 2.3.
Gam mbar 2.3 Simbol LE ED Dalam m bidang ellektronika, LED secaara umum berfungsi b seebagai indik kator / pilott laamp suatu perangkat p yang y menuunjukkan sttatus on off ff perangkatt tersebut. Sedangkann unntuk saat inni dengan perkembanngan teknologi, LED tidak t hanyaa difungsik kan sebagaii inndikator / piilot lamp saaja namun diaplikasikan sebagai lampu peneerangan hem mat energi,, laampu dekorrasi, displaay kontrol, running text, t displaay monitor (LED mo onitor) dann seebagainya. 2..3
Seven n Segment Sevenn Segment adalah a suatuu komponen n elektronik ka terdiri ataas gabungan n 7 bagian /
ruuas LED (L Light Emittiing Diode) yang diran ngkai memb bentuk tam mpilan angk ka 8. Setiapp baagian / ruas LED terdirri dari 1 atau au 2 LED daan diidentifiikasi sebagaai huruf A, B, C, D, E,, F,, G yang disebut dengaan dot matrrix. Konfigu urasi seven segment teersebut sepeerti Gambarr 2.4. Seven segment difu fungsikan seebagai disp play atau memampika m an karakter angka dann huuruf. Displaay seven seegment dapaat menampllikan karak kter angka ddesimal 0 – 9. Karenaa haanya terdirii dari 7 baagian / ruass maka tam mpilan huru uf yang dihhasilkan dissplay sevenn seegment tidaak dapat meenampilkann karakter hu uruf secaraa lengkap A - Z, akan tetapi hanyaa kaarakter huruuf A-F saja.
Universitas Sumatera Utara
17
Gambar 2.4 Konfigurasi Seven Segment Ada 2 jenis rangkaian dasar dari seven segment, yaitu seven segment common anoda dan seven segment common katoda. Pada seven segment common anoda, untuk mengaktifkan karakter display seven segment diperlukan logika low (0) pada jalur A - F, dan sebaliknya pada seven segment common katoda yaitu untuk mengaktifkan display seven segment diperlukan logika high (1). Rangkaian internal seven segment common anoda dan common katoda adalah seperti Gambar 2.5 dan 2.6.
Gambar 2.5 Rangkaian dasar Seven Segment Common Anoda
Gambar 2.6 Rangkaian dasar Seven Segment Common Katoda 2.4
Komunikasi serial RS232 RS232 singkatan dari Recomemded Standard Number 232, yang merupakan sebuah
standard yang dibuat oleh Electronic Industry Association, dengan tujuan untuk membuat standarisasi antarmuka atau interface antara peralatan terminal data dan peralatan
Universitas Sumatera Utara
18 8
koomunikasi data d serial dengan mennggunakan data binerii sebagai daata yang ak kan dikirim m m maupun yangg diterima. RS232 ini jjuga dapat diartikan seebagai suatuu standard komunikasi k i seerial yang digunakan d seebagai koneeksi antara peripheral-p p peripheral, seperti kon neksi antaraa koomputer deengan modeem, atau kom mputer deng gan mouse bahkan b bisaa juga antarra komputerr deengan kompputer. Dalaam pengimpplementasiaan RS232 ini, i salah saatunya adaalah dengann m menggunakann konektorr DB9. Berikkut konfigurrasi dan funngsi pin ko onektor DB9 9 adalah seeperti Gamb bar 2.7 dann paada Tabel 2.6.
(bb)
(a)
(c)
nektor DB99 Jantan b)). Konektorr DB9 Betiaana c). Konfigurasi Gambar 2..7 a). Kon Pin Konek ktor DB9 ktor DB9 Tabel 22.6 Fungsii Pin Konek
Pin
Nama a Signa al
Fun ngsi
1
DCD D
Dataa Carrier Detect, D sinyaal yang meenyatakan bahwa b modeem telah menerima sinyal carrrier valid d dari modeem lain.
2
RXD D
Sinyaal data dari modem ke PC (Penerim maan).
3
TXD D
Sinyaal data dari PC ke mod dem (Pengirriman).
4
DTR R
Dataa Terminal Ready, siinyal kenddali dari PC ke modeem, untuk mengaktifka m an modem.
5
GND D
Sinyaal Ground.
Universitas Sumatera Utara
19
6
DSR
Data Set Ready, sinyal kendali dari modem ke PC yang menyatakan bahwa modem siap mengirim atau menerima data.
7
RTS
Request To Send, sinyal kendali dari PC yang menandakan bahwa PC siap menerima data.
8
CTS
Clear To Send, sinyal kendali dari modem yang menandakan bahwa modem siap menerima data.
9
RI
Ring Indicator, sinyal kendali ke PC, tanda bahwa saluran telepon berdering.
Level tegangan pada RS232 adalah sebagai berikut:
Logika 1 terletak antara -3 Volt sampai -15 Volt.
Logika 0 terletak antara +3 Volt sampai +15 Volt.
Daerah tegangan antara -3 Volt sampai +3 Volt adalah invalid level, yaitu tegangan yang tidak memiliki level logika pasti sehingga harus dihindari. Demikian juga level tegangan dibawah -15 Volt dan diatas +15 Volt juga harus dihindari, karena bisa merusak line driver pada saluran RS232.
2.5
IC MAX232 IC MAX232 adalah komponen untuk mengubah sinyal / level tegangan dari RS232
ke sinyal / level tegangan TTL saat terjadi komunikasi data antara komputer (atau alat lain yang menggunakan RS232) dengan mikrokontroler. IC ini memiliki dua pembangkit tegangan internal yang berfungsi untuk menkonversi tegangan +5V menjadi ± 10V (tanpa beban). Konverter pertama menggunakan kapasitor C1 untuk menggandakan tegangan input +5V menjadi +10V saat C3 berada pada output V+. Konverter kedua menggunakan kapasitor C2 untuk merubah +10V menjadi -10V saat C4 berada pada output -V. IC MAX 232 juga mempunyai dua set komunikasi serial USART (Universal
Universitas Sumatera Utara
20
Gambar 2.8 IC MAX 232 Synchronous and Asynchronous Serial Receiver and Transmitter) ataupun RS232 converter. Pin 11 dan 10 adalah input UART atau UART Transmitter, pin 14 dan 7 adalah output RS232 atau RS232 Receiver. Pin 12 dan 9 adalah output UART atau UART Receiver, pin 13 dan 8 adalah input RS232 atau RS232 Transmitter. Untuk lebih jelas dapat dilihat pada Gambar 2.9 berikut ini.
Gambar 2.9 Konfigurasi Pin IC MAX 232
Universitas Sumatera Utara