Interface LCD Pada Mikrokontroler Arduino
Interface LCD Pada Mikrokontroler Arduino
Interface LCD
Pemrograman Mikrokontroler
Oleh :
Nanak Cito Tetuko
10511810000087
Dosen Pengampu :
Brian Raafiu S.ST, M.T.
1.1 LCD
Menurut Adrianto (2015) LCD adalah suatu display dari bahan cairan kristal yang
pengoperasiannya menggunakan sistem dot matriks. LCD banyak digunakan sebagai display
dari alat-alat elektronika seperti kalkulator, multimeter digital, jam digital dan sebagainya.
Secara Garis Besar, terdapat dua jenis LCD yaiut LCD teks dan LCD gra_k. LCD teks
digunakan untuk menampilkan teks atau simbol-simbol tertentu. Adapun LCD grafik
memungkinkan untuk menampilkan gambar.
Kemampuan LCD tidak hanya menampilkan angka, tetapi juga huruf, kata, dan semua sarana
simbol dengan lebih bagus dan serbaguna daripada penampilan-penampilan yang
menggunakan seven segment LED. Modul LCD mempunyai basic interfaces cukup baik yang
sesuai dengan sistem mikrokontroler AVR maupun Arduino. Bentuk dan ukuran modul-modul
berbasis karakter banyak ragamnya. Salah satu variasi bentuk dan ukuran yang tersedia dan
dipergunakan pada peralatan ini adalah 16x2 karakter (panjang 16, baris 2, karakter 32) dan 16
pin. Akses pin yang tersedia mempunyai 8 jalur hubungan data, 3 jalur hubungan kontrol, dan
3 jalur catu daya. Sementara pada modul LCD dengan fasilitas back lighting terdapat 2 jalur
catu untuk back lighting. Dengan demikian, semua dapat ditampilkan dalam kondisi cahaya
kecil. Ketika power dinyalakan, display menampilkan sederet persegi gelap dan mungkin
hanya pada sebagian display. Sel-sel karakter ini sebenarnya merupakan bagian yang mati.
Modul display me-reset sendiri pada bagian awal ketika power dinyalakan, yaitu layar menjadi
kosong sehingga karakterkarakter tidak dapat terlihat. Dengan demikian, Perlu memberikan
perintah pada poin ini untuk menyalakan LCD.
Modul LCD berukuran 16 karakter x 2 baris dengan fasilitas back lingting memiliki 16 pin
yang terdiri atas 8 jalur data, 3 jalur kontrol, dan jalur catu daya.
• Pin 1 dan 2 Merupakan sambungan catu daya, Vss, dan Vdd. Pin Vdd dihubungkan
dengan tegangan positif catu daya, sedangkan Vss pada 0 volt atau ground. Meskipun
demikian, data menentukan catu 5 Vdc (hanya beberapa mA), menyediakan 6V dan
4,5V yang keduanya bekerja dengan baik, bahkan 3V cukup untuk beberapa modul.
• Pin 3 Merupakan pin kontrol Vcc yang digunakan untuk mengatur kontras display.
Idealnya pin ini dihubungkan dengan tegangan yang bisa diubah untuk memungkinkan
pengaturan tingkatan kontras display sesuai kebutuhan.
• Pin 4 Merupakan register select (RS), masukan yang pertama dari 3 command control
input. Dengan membuat RS menjadi high, data karakter dapat ditransfer dari dan
menuju modulnya.
• Pin 5 Merupakan Read/Write (R/W). Cara memfungsikan perintah Write adalah R/W
low atau menulis karakter ke modul. R/W high untuk membaca data karakter
atauinformasi status registernya.
• Pin 6 Merupakan Enable (E). Input ini digunakan untuk transfer actual perintah-
perintah atau karakter anatara modul dengan hubungan data. Ketika menulis ke display,
data ditransfer hanya pada perpindahan high/low. Namun, ketika membaca dari display,
data akan menjadi lebih cepat tersediasetelah perpindahan dari low ke high dan tetap
tersedia hingga sinyal low kembali.
• Pin 7 sampai 14 Pin 7 dampai 14 adalah jalur 8 jalur data (D0-D7) di mana data dapat
ditransfer ke dan dari display.
• Pin 15 dan 16 Pin 15 atau A (+) mempunyai level DC +5V dan berfungsi sebagai LED
backlight +, sedangkan pin 16 atau K (-) memiliki level 0V dan berfungsi sebagai LED
backlight.
Penggunaan LCD dengan kontrol dari Mikrokontroler AVR menggunakan data output digital,
yang dikirim sesuai dengan instruksi program. Pin data yang digunakan untuk berkomunikasi
hanya menggunakan 4 pin data saja, yaitu D4-D7.
Pada umumnya, pemrograman LCD pada AVR memanfaatkan library bawaan seperti yang
tersedia pada aplikasi CodeVision AVR yaitu "alcd:h". Berikut adalah source code dan
fungsinya pada penggunaan LCD.
Sama seperti mikrokontroler AVR, LCD dengan kontrol dari Arduino menggunakan data
output digital yang dikirim sesuai instruksi program.
1.4.1 Rangkaian Hardware
Pada aplikasi Arduino IDE memerlukan satu library yang bernama "LiquidCrystal:h", library
ini menyediakan perintah dasar yang langsung dapat digunakan, perintah dasar dapat dilihat
pada tabel berikut.
Pada praktikum kali ini akan dibuat rangkaian dan program menggunakan mikrokontroler AVR
dan Arduino menggunakan interface 1 buah LCD, dan 1 buah pushbutton. Program dibuat
dengan algoritma, jika tombol ditekan akan tampil tulisan WELCOME di LCD, dan jika
ditekan lagi untuk kedua kalinya akan muncul NAMA praktikan, dan terakhir jika ditekan lagi
akan muncul TANGGAL LAHIR praktikan.
1. Personal Computer
2. Software Proteus (LCD, Library Arduino, Library AVR, Resistor, Push Button,
Power, Ground)
3. Software Arduino Ide
4. Software Code Vision AVR
3.1.1 Algoritma
3.1.2 Rangkaian dan Simulasi
Kondisi Awal :
3.2.1 Algoritma
3.2.2 Rangkaian dan Simulasi
Kondisi Awal :
4.1.1 Rangkaian
4.1.2 Pemrograman
#include <mega16.h>
#include <alcd.h>
#include <delay.h>
void main(void)
{int shit;
shit=1;
PORTA.0 = 1;
DDRA.0 = 0;
lcd_init(16);
while (1)
{switch(shit)
{case 1:
if (PINA.0==0){delay_ms(10); lcd_clear(); shit=2;}
break;
case 2:
lcd_gotoxy(0,0);
lcd_puts("WELCOME");
if (PINA.0==0){delay_ms(10); lcd_clear(); shit=3;}
break;
case 3:
lcd_gotoxy(0,0);
lcd_puts("NANAK CITO T");
if (PINA.0==0){delay_ms(10); lcd_clear(); shit=4;}
break;
case 4:
lcd_gotoxy(0,0);
lcd_puts("6 MEI 2000");
if (PINA.0==0){delay_ms(10); lcd_clear(); shit=1;}
break;
}
}
}
{case 1:
if (PINA.0==0){delay_ms(10); lcd_clear(); shit=2;}
break;
hal ini dikarenakan sebelumnya saya menentukan nilai int shit; shit=1;. switch(shit). Dimana
nilai shit akan menentukan case ke berapa yang akan dieksekusi. Saat nilai shit = 1 maka
program yang dieksekusi pada case 1, dan saat shit = 2 maka program yang dieksekusi pada
case 2.
if (PINA.0==0){delay_ms(10); lcd_clear(); shit=2;}
kemudian jika nilai PINA.0 = 0 (saat PushButton ditekan) maka akan delay sebesar 10 mili
sekon, tulisan pada LCD akan dihapus, dan program yang dieksekusi pindah pada pada case 2
sesuai dengan nilai shit. Maksud dari delay 10 sekon pada program adalah untuk memberi jeda
saat push button ditekan agar perpindahan kondisi tidak terlalu cepat.
case 2:
lcd_gotoxy(0,0);
lcd_puts("WELCOME");
if (PINA.0==0){delay_ms(10); lcd_clear(); shit=3;}
break;
saat program mengeksekusi case 2 maka LCD akan menampilkan Tulisan “WELCOME” pada
cursor x=0 y=0. Dan jika nilai PINA.0 = 0 (saat PushButton ditekan) maka akan delay sebesar
10 mili sekon, tulisan pada LCD akan dihapus, dan program yang dieksekusi pindah pada pada
case 3 sesuai dengan nilai shit. Maksud dari delay 10 sekon pada program adalah untuk
memberi jeda saat push button ditekan agar perpindahan kondisi tidak terlalu cepat.
case 3:
lcd_gotoxy(0,0);
lcd_puts("NANAK CITO T");
if (PINA.0==0){delay_ms(10); lcd_clear(); shit=4;}
break;
saat program mengeksekusi case 3 maka LCD akan menampilkan Tulisan “NANAK CITO T”
pada cursor x=0 y=0. Dan jika nilai PINA.0 = 0 (saat PushButton ditekan) maka akan delay
sebesar 10 mili sekon, tulisan pada LCD akan dihapus, dan program yang dieksekusi pindah
pada pada case 4 sesuai dengan nilai shit. Maksud dari delay 10 sekon pada program adalah
untuk memberi jeda saat push button ditekan agar perpindahan kondisi tidak terlalu cepat
case 4:
lcd_gotoxy(0,0);
lcd_puts("6 MEI 2000");
if (PINA.0==0){delay_ms(10); lcd_clear(); shit=1;}
break;
saat program mengeksekusi case 4 maka LCD akan menampilkan Tulisan “6 MEI 2000” pada
cursor x=0 y=0. Dan jika nilai PINA.0 = 0 (saat PushButton ditekan) maka akan delay sebesar
10 mili sekon, tulisan pada LCD akan dihapus, dan program yang dieksekusi pindah pada pada
case 1 sesuai dengan nilai shit. Maksud dari delay 10 sekon pada program adalah untuk
memberi jeda saat push button ditekan agar perpindahan kondisi tidak terlalu cepat.
4.2.1 Rangkaian
#include <LiquidCrystal.h>
LiquidCrystal lcd (7, 6, 5, 4, 3, 2);
int shit=1;
void setup() {
pinMode(12, INPUT_PULLUP);
lcd.begin(16, 2);
}
void loop() {
int button = digitalRead(12);
switch(shit)
{case 1:
if (button==LOW){ lcd.clear(); delay(300); shit=2; }
break;
case 2:
lcd.setCursor(0,0);
lcd.print("WELCOME");
if (button==LOW){ lcd.clear(); delay(300); shit=3;}
break;
case 3:
lcd.setCursor(0,0);
lcd.print("NANAK CITO T");
if (button==LOW){ lcd.clear(); delay(300); shit=4;}
break;
case 4:
lcd.setCursor(0,0);
lcd.print("6 MEI 2000");
if (button==LOW){ lcd.clear(); delay(300); shit=1;}
break;
}
}
Source code dan Fungsi :
{case 1:
if (button==LOW){ lcd.clear(); delay(300); shit=2; }
break;
hal ini dikarenakan sebelumnya saya menentukan nilai int shit=1;. switch(shit). Dimana nilai
shit akan menentukan case ke berapa yang akan dieksekusi. Saat nilai shit = 1 maka program
yang dieksekusi pada case 1, dan saat shit = 2 maka program yang dieksekusi pada case 2.
if (button==LOW){ lcd.clear(); delay(300); shit=2; }
kemudian jika nilai button = LOW (saat PushButton ditekan) maka akan delay sebesar 300 mili
sekon, tulisan pada LCD akan dihapus, dan program yang dieksekusi pindah pada pada case 2
sesuai dengan nilai shit. Maksud dari delay 300 sekon pada program adalah untuk memberi
jeda saat push button ditekan agar perpindahan kondisi tidak terlalu cepat.
case 2:
lcd.setCursor(0,0);
lcd.print("WELCOME");
if (button==LOW){ lcd.clear(); delay(300); shit=3;}
break;
saat program mengeksekusi case 2 maka LCD akan menampilkan Tulisan “WELCOME” pada
cursor x=0 y=0. Dan jika nilai Button = LOW (saat PushButton ditekan) maka akan delay
sebesar 300 mili sekon, tulisan pada LCD akan dihapus, dan program yang dieksekusi pindah
pada pada case 3 sesuai dengan nilai shit. Maksud dari delay 300 sekon pada program adalah
untuk memberi jeda saat push button ditekan agar perpindahan kondisi tidak terlalu cepat.
case 3:
lcd.setCursor(0,0);
lcd.print("NANAK CITO T");
if (button==LOW){ lcd.clear(); delay(300); shit=4;}
break;
saat program mengeksekusi case 3 maka LCD akan menampilkan Tulisan “NANAK CITO T”
pada cursor x=0 y=0. Dan jika nilai PINA.0 = 0 (saat PushButton ditekan) maka akan delay
sebesar 300 mili sekon, tulisan pada LCD akan dihapus, dan program yang dieksekusi pindah
pada pada case 4 sesuai dengan nilai shit. Maksud dari delay 300 sekon pada program adalah
untuk memberi jeda saat push button ditekan agar perpindahan kondisi tidak terlalu cepat
case 4:
lcd.setCursor(0,0);
lcd.print("6 MEI 2000");
if (button==LOW){ lcd.clear(); delay(300); shit=1;}
break;
saat program mengeksekusi case 4 maka LCD akan menampilkan Tulisan “6 MEI 2000” pada
cursor x=0 y=0. Dan jika nilai PINA.0 = 0 (saat PushButton ditekan) maka akan delay sebesar
300 mili sekon, tulisan pada LCD akan dihapus, dan program yang dieksekusi pindah pada
pada case 1 sesuai dengan nilai shit. Maksud dari delay 300 sekon pada program adalah untuk
memberi jeda saat push button ditekan agar perpindahan kondisi tidak terlalu cepat.
BAB V
KESIMPULAN