menuju akhir
a. Mempelajari aplikasi output pada mikrokontroller PIC 16F877A
b. Mempelajari aplikasi input pada mikrokontroller PIC 16F877A
c. Mempelajari aplikasi I/O pada mikrokontroller PIC 16F877A
a. Module PIC 16F877A
b. LCD
c. Keypad
> Dasar Teori Mikrokontroler
Mikrokontroler
PIC16F877A merupakan salah satu mikrokontroler dari keluarga PICmicro
yang popular digunakan sekarang ini, mulai dari pemula hingga para
profesional. Hal tersebut karena PIC16F877A sangat praktis dan
menggunakan teknologi FLASH memori sehingga dapat di program-hapus
hingga seribu kali. Keunggulan mikrokontroler jenis RISC ini dibanding
dengan mikrokontroler 8-bit lain dikelasnya terutama terletak pada
kecepatan dan kompresi kodenya. Selain itu, PIC116F877A juga tergolong
praktis dan ringkas karena memiliki kemasan 40 pin dengan 33 jalur I/O.
Anggota
keluarga PICmicro buatan Microchip Inc. cukup banyak. Ada yang
menggunakan FLASH memori dan ada pula yang jenis OTP (One Time
Programmable). Mikrontroler dari keluarga PICmicro yang popular, antara
lain PIC2C08, PIC16C54, PIC16F84. Agar lebih mengenal PIC16F877A,
berikut ini diberikan fitur-fitur penting yang terdapat pada PIC16F877A.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnTcbNc9YZf4JFusk26xFr69Mg78u6pWVQcyJ0mF5Yhnr-4bTco5KcNRk3sZpmsTfgJy5CjRqgQa_v6Lh34ExojvNz_LWDpME1MlQ0kUroT7Ddmbk2xRb_ZqfDueIr7jGgsA-wwa7vD3s/s1600/pic1.jpg)
MIkrokontroller PIC16F877A
fitur fitur PIC RISC CPU yang mempunyai performance tinggi
- Hanya 35 jenis instruksi yang perlu dipelajari
- Semua instrujsi mempunyai siklus tunggal kecuali untuk instruksi percabangan.
- Kecepatan Instruksi: DC – 20 MHz clock input DC – 200 ns instruction cycle
- 8K x 14 words of FLASH Program Memory, 368 x 8 bytes of Data Memory (RAM) , 256 x 8 bytes of EEPROM Data Memory
- Pinout compatible dengan PIC16C73B/74B/76/77
- Interrupt (14 sumber interrupt)
- Delapan level hardware stack
- Direct, indirect dan relative addressing modes
- Power-on Reset (POR)
- Power-up Timer (PWRT) dan Oscillator Start-up Timer (OST)
- Watchdog Timer (WDT) dengan on-chip RC oscillator
- Programmable code protection dan Fully static design
- Power saving SLEEP mode
- Selectable oscillator options
- Low power, high speed CMOS FLASH/EEPROM technology
- In-Circuit Serial Programming (ICSP) hanya dengan dua pin
- Single 5V In-Circuit Serial Programming capability
- Processor read/write access to program memory
- Wide operating voltage range: 2.0V to 5.5V
- High Sink/Source Current: 25 mA
- Commercial, Industrial and Extended temperature ranges
Deskripsi pin pin
Mikrokontroler
PIC16F877A di produksi 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 6 pada Port A, 8 pada Port B, 8 pada Port C, 8 pada Port D, 3 pada
Port E. Ada pula beberapa Pin pada mikrokontroler yang memiliki fungsi
ganda.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK9pA8EUk03tNQIww34W2W_myFY9spMqkRbzUO25k7R9wi70fknK56MyqlGFGL-5zMv5E6L4nMbWXrlfNiRUMSTXTjOAMk3GzmxfEFDemHakQ82753sHWcQpzktCqagoO0P81jkkm_ZR0/s320/pic.jpg)
Organisasi Memori
Memori
pada PIC16F877A dapat dipisahkan menjadi dua blok memori, satu untuk
memori program dan satu untuk memori data. Memori EEPROM dan register
GPR didalam RAM merupakan memori data, sedangkan memori FLASH merupakan
memori program.
Pembangkit Clock-Oscilator
Nilai kristal yang dapat dipakai maksimum adalah 4 MHz atau 10 MHz, hal ini karena mikrokontroler PIC16F84 dibuat dalam 2 versi frekuensi kerja. Untuk menentukan frekuensi maksimumnya dapat dilihat pada badan mikrokontroler. Jika terdapat tulisan PIC16F84-04/P berarti frekuensi maksimum yang diijinkan adalah 4 MHz.
Prosedur Percobaan
1. Pastikan semua supply dalam keadaan off
![lcd](https://fahmizaleeits.files.wordpress.com/2010/04/lcd.jpg?w=210&h=144)
3. Buatlah listing program yang telah ada pada modul
4. periksakan rangkaian kepada asisten yang mengawas
5. Hidupkan semua supply
6. Upload program dari laptop ke modul
7. Tekan tombol Reset
8. Amati percobaan, jika tidak sesuai perbaiki rangkaian atau program
9. Jika sesuai, maka selesai dan demokan pada asisten yang mengawas
10.Jelaskan prinsip k78erja + program dan hubungan keduanya kepada asisten
11.Demokan ke pembimbing praktikum
12.Matikan supply
> Dasar Teori LCD
LCD (Liquid Crystal Display) adalah suatu jenis media tampil yang
menggunakan kristal cair sebagai penampil utama. LCD sudah digunakan
diberbagai bidang misalnya alal–alat elektronik seperti televisi,
kalkulator, ataupun layar komputer. Pada bab ini aplikasi LCD yang
dugunakan ialah LCD dot matrik dengan jumlah karakter 2 x 16. LCD sangat
berfungsi sebagai penampil yang nantinya akan digunakan untuk
menampilkan status kerja alat. Adapun fitur yang disajikan dalam LCD ini
adalah :
a. Terdiri dari 16 karakter dan 2 baris.b. Mempunyai 192 karakter tersimpan.
c. Terdapat karakter generator terprogram.
d. Dapat dialamati dengan mode 4-bit dan 8-bit.
e. Dilengkapi dengan back light.
Gambar LCD 2*16
Pin | Deskripsi |
1 | Ground |
2 | Vcc |
3 | Pengatur kontras |
4 | “RS” Instruction/Register Select |
5 | “R/W” Read/Write LCD Registers |
6 | “EN” Enable |
7-14 | Data I/O Pins |
15 | Vcc |
16 | Ground |
Cara kerja LCD 2*16 secara umum
Pada aplikasi umumnya RW diberi logika rendah “0”. Bus data terdiri dari
4-bit atau 8-bit. Jika jalur data 4-bit maka yang digunakan ialah DB4
sampai dengan DB7. Sebagaimana terlihat pada table diskripsi, interface LCD merupakan sebuah parallel bus,
dimana hal ini sangat memudahkan dan sangat cepat dalam pembacaan dan
penulisan data dari atau ke LCD. Kode ASCII yang ditampilkan sepanjang
8-bit dikirim ke LCD secara 4-bit atau 8 bit pada satu waktu. Jika mode
4-bit yang digunakan, maka 2 nibble data dikirim untuk membuat
sepenuhnya 8-bit (pertama dikirim 4-bit MSB lalu 4-bit LSB dengan pulsa
clock EN setiap nibblenya). Jalur kontrol EN digunakan untuk
memberitahu LCD bahwa mikrokontroller mengirimkan data ke LCD. Untuk
mengirim data ke LCD program harus menset EN ke kondisi high “1” dan
kemudian menset dua jalur kontrol lainnya (RS dan R/W) atau juga
mengirimkan data ke jalur data bus.
Saat jalur lainnya sudah siap, EN harus diset ke “0” dan tunggu beberapa saat (tergantung pada datasheet LCD),
dan set EN kembali ke high “1”. Ketika jalur RS berada dalam kondisi
low “0”, data yang dikirimkan ke LCD dianggap sebagai sebuah perintah
atau instruksi khusus (seperti bersihkan layar, posisi kursor dll).
Ketika RS dalam kondisi high atau “1”, data yang dikirimkan
adalah data ASCII yang akan ditampilkan dilayar. Misal, untuk
menampilkan huruf “A” pada layar maka RS harus diset ke “1”. Jalur
kontrol R/W harus berada dalam kondisi low (0) saat informasi pada data bus akan dituliskan ke LCD. Apabila R/W berada dalam kondisi high “1”, maka program akan melakukan query (pembacaan)
data dari LCD. Instruksi pembacaan hanya satu, yaitu Get LCD status
(membaca status LCD), lainnya merupakan instruksi penulisan. Jadi hampir
setiap aplikasi yang menggunakan LCD, R/W selalu diset ke “0”. Jalur
data dapat terdiri 4 atau 8 jalur (tergantung mode yang dipilih
pengguna), DB0, DB1, DB2, DB3, DB4, DB5, DB6 dan DB7. Mengirim data
secara parallel baik 4-bit atau 8-bit merupakan 2 mode operasi primer. Untuk membuat sebuah aplikasi interface LCD, menentukan mode operasi merupakan hal yang paling penting.
>Dasar Teori Rangkaian Clock
Rangakaian
clock berfungsi untuk pembentuk/membangkitkan pulsa/gelombang kotak
secara terus-menerus dan rangkaian ini tidak mempunyai kondisi
stabil/setimbang. Rangkaian clock termasuk golongan Astabil
Multivibrator dengan IC 555. Output rangkaian clock digunakan untuk
input rangkaian-rangkaian logika yang sekuensial (berhubungan dengan
waktu). Yang termasuk rangkaian logika sekuensial contohnya: Flip-Flop,
Shift Register, dan Counter. Adapun fungsi rangkaian clock yaitu, untuk
mengatur jalannya data dalam penggeseran ke kanan atau ke kiri, maupun
dalam perhitungan/pencacahan bilangan biner. Yang dimaksud rangkaian
Astabil Multivribator Adalah multivribator yang tidak stabil tegangan
output-nya (tegangan pengeluarannya berubah-ubah) tanpa adanya sinyal
masukan yang diberikan. Rangakaian clock dengan IC 555 besrta
pulsa-pulsa pada pin 3dan pin 6 ditunjukkan pada gambar ini
Pada gambar rangkaian clock diatas
akan dijabarkan mengenai cara kerja dari sistem rangkaian tersebut.
Pada simbol C akan naik melebihi kira-kira 2/3 Vcc jika ada tegangan
yang masuk ke dalam rangkaian tersebut. Dan ada penggunaan rumus
tersendiri jika Kapasitor C mulai dikosongkan dengan menggunakan
komponen Rb . Rumus yang terjadi adalah :
T : Rb x C
Keluaran
atau output akan naik dan juga tinggi jika tegangan di Kapasitor (C)
mulai turun hingga mencapai rumus ( Vcc/3). Komponen IC 555 memiliki
besar tegangan yang akan naik dan turun secara eksponensial. Gelombang
segi empat menjadi bentuk dari keluaran atau output komponan IC 555 ini.
Bentuk keluaran yang tidak simetri ini disebabkan waktu yang dibutuhkan
untuk pengisian lebih lama dibandingkan dengan waktu untuk pengosongan
komponen ini. Dan keadaan keluaran yang rendah lebih cepat dibandingkan
dengan kadar keluaran yang lebih tinggi. Dan perhitungan untuk
menentukan asimetris dari keluaran atau output rangkaian clock
menggunakan rumus :
W : 0.693 (RA + Rb) * C
T : 0.693 * Rb * C
T : W + t
Dan W adalah lebar pulsa sementara t adalah waktu atau lama periode dengan besarnya frekuensi dihitung F : 1/T.>Dasar Teori Keypad
Keypad
adalah bagian penting dari suatu perangkat elektronika yang membutuhkan
interaksi manusia. Keypad berfungsi sebagai interface antara perangkat
(mesin) elektronik dengan manusia
atau
dikenal dengan istilah HMI (Human Machine Interface). Matrix keypad 4×4
merupakan salah satu contoh keypad yang dapat digunakan untuk
berkomunikasi antara manusia dengan mikrokontroler. Konfigurasi keypad
dengan susunan bentuk matrix ini bertujuan untuk penghematan port
mikrokontroler karena jumlah key (tombol) yang dibutuhkan banyak pada
suatu sistem dengan mikrokontroler. Konstruksi matrix keypad 4×4 untuk
mikrokontroler dapat dibuat seperti pada gambar berikut:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm_5uOvzvDrXgp1NT1Mxl1OGPQfIL-WhHRQRkyxG8-j9r652JslWFUUUw2jWj07GsMMpUxJu1QgfrWLkqx7YnTmedJwBvBsKY0ghIDpcjlNs8v3x8lGYjxKGRThR9SsEBAxmQh19zQvaI/s1600/keypad.gif)
Proses
scaning untuk membaca penekanan tombol pada matrix keypad 4×4 untuk
mikrokontroler diatas dilakukan secara bertahap kolom demi kolom dari
kolom pertama sampai kolom ke 4 dan baris pertama hingga baris ke 4.
Misal kita asumsikan keypad aktif LOW (semua line kolom dan baris
dipasang resistor pull-up) dan dihubungkan ke port mikrokontrolr dengan
jalur kolom adalah jalur input dan jalur baris adalah jalur output maka
proses scaning matrix keypad 4×4 diatas dapat dituliskan sebagai
berikut.
· Mengirimkan
logika Low untuk kolom 1 (Col1) dan logika HIGH untuk kolom yang lain
kemudian membaca data baris, misal tombol SW1 ditekan maka data baris
pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111,
atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW
sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga
data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang
dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di
tekan maka data pembacaan baris akan 1111.
· Mengirimkan
logika Low untuk kolom 2 (Col2) dan logika HIGH untuk kolom yang lain
kemudian membaca data baris, misal tombol SW1 ditekan maka data baris
pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111,
atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW
sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga
data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang
dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di
tekan maka data pembacaan baris akan 1111.
· Mengirimkan
logika Low untuk kolom 3 (Col3) dan logika HIGH untuk kolom yang lain
kemudian membaca data baris, misal tombol SW1 ditekan maka data baris
pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111,
atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW
sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga
data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang
dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di
tekan maka data pembacaan baris akan 1111.
Mengirimkan
logika Low untuk kolom 4 (Col4) dan logika HIGH untuk kolom yang lain
kemudian membaca data baris, misal tombol SW1 ditekan maka data baris
pertama (Row1) akan LOW sehingga data baris yang dibaca adalah 0111,
atau tombol yang ditekan tombol SW5 maka data pada baris ke 2 akan LOW
sehingga data yang terbaca 1011, atau tombol SW9 yang ditekan sehingga
data yang terbaca 1101, atau tombol SW13 yang ditekan maka data yang
dibaca adalah 1110 dan atau tidak ada tombol pada kolom pertama yang di
tekan maka data pembacaan baris akan 1111. ![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7G7fox3c9OD5RUeJgmYgIUFPc6gxGL16NcBRF1h9FdZqGMrPrE1DK9hOBvh5RD_5vQQxivMubPYrkAk6iA27YkdkzbEX6mRKOTbfAqZp9TFsx5yEdoVEhHLdcE3rd0uc6QWX0vRIiFZ3h/s400/modul+42.jpg)
LCD
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicZCi8E4p-H8p4WS_hn_ej2vf0UZn1rHJ1F9woyyQRzqnN3Htamu3jldXI05tP0J5n7Mzz-PIHyXqXNtoSnXFl5pecayf7aYTipxGVE46G7akhyth08ik2zYmESIhaYBAx2XYboFJfKz9W/s400/PIC.jpg)
Mikroprosesor PIC16F877A
int i;
char keypadPort at PORTD;
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC1_bit;
sbit LCD_D4 at RC2_bit;
sbit LCD_D5 at RC3_bit;
sbit LCD_D6 at RC4_bit;
sbit LCD_D7 at RC5_bit;
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC1_bit;
sbit LCD_D4_Direction at TRISC2_bit;
sbit LCD_D5_Direction at TRISC3_bit;
sbit LCD_D6_Direction at TRISC4_bit;
sbit LCD_D7_Direction at TRISC5_bit;
void main()
{ Keypad_Init();
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
while(1)
{kp = 0;
kp = Keypad_Key_Press();
i=16 ;
if(kp==2)
{while (i>=1)
{Lcd_Out(1,i,"2");delay_ms(100) ;Lcd_Cmd(_LCD_CLEAR); i--;}
}
}
}
4.8 Video Rangkaian [kembali]
4.9 Link Download [kembali]
simulasi rangkaian klik : https://youtu.be/V753RWGslfk
Tidak ada komentar:
Posting Komentar