0% menganggap dokumen ini bermanfaat (0 suara)
394 tayangan21 halaman

Interface LCD Pada Mikrokontroler Arduino

Program menggunakan mikrokontroler AVR dan LCD 16x2 untuk menampilkan tulisan berdasarkan tekanan tombol. Tekan tombol pertama kali akan menampilkan "WELCOME", kedua kali "NAMA", dan ketiga kali "TANGGAL LAHIR".

Diunggah oleh

Nanak Cito Tetuko
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
394 tayangan21 halaman

Interface LCD Pada Mikrokontroler Arduino

Program menggunakan mikrokontroler AVR dan LCD 16x2 untuk menampilkan tulisan berdasarkan tekanan tombol. Tekan tombol pertama kali akan menampilkan "WELCOME", kedua kali "NAMA", dan ketiga kali "TANGGAL LAHIR".

Diunggah oleh

Nanak Cito Tetuko
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 21

Tugas Pengganti Praktikum

Interface LCD
Pemrograman Mikrokontroler

Oleh :
Nanak Cito Tetuko
10511810000087

Dosen Pengampu :
Brian Raafiu S.ST, M.T.

DEPARTEMEN TEKNIK INSTRUMENTASI


INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA
2020
BAB I
DASAR TEORI

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.

1.2 Fungsi PIN 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.

1.3 interface LCD di mikrokontroler AVR

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.

1.3.1 Rangkaian Hardware


No Pin Nama Koneksi
4 RS PORTD.0
5 RW PORTD.1
6 E PORTD.2
7-10 DB0-DB3 No Cennection
11 D4 PORTD.3
12 D5 PORTD.4
13 D6 PORTD.5
14 D7 PORTD.6
Table 1 Interface LCD
1.3.2 Pemrograman

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.

Source Code Fungsi


#include <alcd.h> Memanggil librari LCD untuk mengaktifkan.
lcd init(jml kolom); Menentukan banyak kolom yang ditentukan
lcd gotoxy(x,y); Menentukanposisi kursor utuk memasukkan
karakter. x adalh colom, dan y adalah baris
lcd puts("isi"); Menuliskan isi pada LCD
lcd putsf("isi");
lcd clear(); Membersihkan Tulisan
pada LCD

1.4 Interface LCD di Mikrokontroler Arduino

Sama seperti mikrokontroler AVR, LCD dengan kontrol dari Arduino menggunakan data
output digital yang dikirim sesuai instruksi program.
1.4.1 Rangkaian Hardware

1.4.2 Pemrograman Software

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.

Source Code Fungsi


#include <LiquidCrystal> Memanggil librari LCD
untuk mengaktifkan.
LiquidCrystal lcd(12, 11, 5, 4, 3, Menentukan Pin Interface
2); LCD
lcd.begin(16,2); Menentukan banyak kolom
yang ditentukan
lcd.setCursor(0,1); Menentukan posisi kursor
utuk memasukkan
karakter. x adalh colom,
dan y adalah baris
lcd.print("isi") Menuliskan isi pada LCD
lcd.clear(); Membersihkan Tulisan
pada LCD
BAB II
PROSEDUR PRAKTIKUM

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.

Adapun prosedur Praktikum kali ini adalah sebagai berikut :

2.1 Alat dan Bahan

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

2.2 Langkah Percobaan

2.2.1 Pada mikrokontroler AVR

1. Membuat Rangkaian pada Software Proteus

2. Menentukan PIN pada Alphanumeric LCD di software codevision AVR


3. Membuat Algoritma pada Software Code Vision AVR
2.2.2 Pada mikrokontroler Arduino

1. Membuat rangkaian pada software proteus

2. Membuat algoritma pada software Arduino IDE


BAB III
HASIL PRAKTIKUM

Adapun hasil praktikum kali ini adalah sebagai berikut :

3.1 Pada mikrokontroler AVR

3.1.1 Algoritma
3.1.2 Rangkaian dan Simulasi

Kondisi Awal :

Saat Push Button ditekan satu kali :

Saat Push Button ditekan untuk kedua kalinya :


Saat Push Button ditekan ketiga kalinya :

3.2 Pada Mikrokontroler Arduino

3.2.1 Algoritma
3.2.2 Rangkaian dan Simulasi

Kondisi Awal :

Saat Push Button ditekan satu kali :

Saat Push Button ditekan keduakalinya :


Saat Push Button ditekan ketigakalinya :
BAB IV
ANALISA

4.1 Pada Mikrokontroler AVR

4.1.1 Rangkaian

Interfacingnya adalah sebagai berikut :

No Pin Nama Koneksi


4 RS PORTD.0
5 RW PORTD.1
6 E PORTD.2
7-10 DB0-DB3 No Cennection
11 D4 PORTD.3
12 D5 PORTD.4
13 D6 PORTD.5
14 D7 PORTD.6
PushButton PushButton PORTA.0

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;
}
}
}

Source Code dan Fungsi :

Source Code Fungsi


#include <mega16.h> Memanggil library ATMega 16
#include <alcd.h> Memanggil librari LCD untuk mengaktifkan.
#include <delay.h> Memanggil library delay
int shit Menyimpan variabel shit pada tipe data integer
PORTA.0 = 1; Menentukan Kondisi awal port A.0 (Kondisi
awal Port A = 1)
DDRA.0 = 0; Menentukan input/output pada port A.0 (Port
A sebagai input)
Switch-Case Sebagai percabangan dan penentuan kondisi
lcd gotoxy(x,y); Menentukanposisi kursor utuk memasukkan
karakter. x adalh colom, dan y adalah baris
lcd puts("isi"); Menuliskan isi pada LCD
delay_ms (10) Sebagai Delay sebesar 10 ms
lcd clear(); Membersihkan Tulisan
pada LCD
Pada kondisi awal, program yang dieksekusi adalah pada case 1 :

{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 Pada Mikrokontroler Arduino

4.2.1 Rangkaian

Interfacingnya adalah sebagai berikut :

No Pin Nama Koneksi


4 RS PIN 7
5 RW Ground
6 E PIN 6
7-10 DB0-DB3 No Cennection
11 D4 PIN 5
12 D5 PIN 4
13 D6 PIN 3
14 D7 PIN 2
PushButton PushButton PIN 12
4.2.2 Pemrograman

#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 :

Source Code Fungsi


#include <LiquidCrystal> Memanggil librari LCD
untuk mengaktifkan.
LiquidCrystal lcd(12, 11, 5, 4, 3, Menentukan Pin Interface
2); LCD
lcd.begin(16,2); Menentukan banyak kolom
yang ditentukan
lcd.setCursor(0,1); Menentukan posisi kursor
utuk memasukkan
karakter. x adalh colom,
dan y adalah baris
lcd.print("isi") Menuliskan isi pada LCD
Switch-Case Membuat percabangan
lcd.clear(); Membersihkan Tulisan
pada LCD

Pada kondisi awal, program yang dieksekusi adalah pada case 1 :

{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

Adapun kesimpulan dari praktikum kali ini adalah sebagai berikut :

1. Percabangan Switch-Case dapat dibuat untuk menyelesaikan permasalahan jika tombol


(Push button) ditekan akan tampil tulisan WELCOME di LCD, dan jika ditekan lagi
untuk kedua kalinya akan muncul NAMA anda, dan terakhir jika ditekan lagi akan
muncul TANGGAL LAHIR anda.
2. Waktu delay pada program diperlukan agar perpindahan kondisi tidak terlalu cepat

Anda mungkin juga menyukai