Interface LCD Pada Mikrokontroler Arduino [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

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 perintahperintah 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 4 5 6 7-10 11 12 13 14



Nama Koneksi RS PORTD.0 RW PORTD.1 E PORTD.2 DB0-DB3 No Cennection D4 PORTD.3 D5 PORTD.4 D6 PORTD.5 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 #include lcd init(jml kolom); lcd gotoxy(x,y); lcd puts("isi"); lcd putsf("isi"); lcd clear();



Fungsi Memanggil librari LCD untuk mengaktifkan. Menentukan banyak kolom yang ditentukan Menentukanposisi kursor utuk memasukkan karakter. x adalh colom, dan y adalah baris Menuliskan isi pada LCD 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 #include LiquidCrystal lcd(12, 11, 5, 4, 3, 2); lcd.begin(16,2); lcd.setCursor(0,1);



lcd.print("isi") lcd.clear();



Fungsi Memanggil librari LCD untuk mengaktifkan. Menentukan Pin Interface LCD Menentukan banyak kolom yang ditentukan Menentukan posisi kursor utuk memasukkan karakter. x adalh colom, dan y adalah baris Menuliskan isi pada LCD 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 4 5 6 7-10 11 12 13 14 PushButton



Nama RS RW E DB0-DB3 D4 D5 D6 D7 PushButton



4.1.2 Pemrograman #include #include #include void main(void) {int shit; shit=1;



Koneksi PORTD.0 PORTD.1 PORTD.2 No Cennection PORTD.3 PORTD.4 PORTD.5 PORTD.6 PORTA.0



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 #include #include #include int shit PORTA.0 = 1; DDRA.0 = 0; Switch-Case lcd gotoxy(x,y); lcd puts("isi"); delay_ms (10) lcd clear();



Fungsi Memanggil library ATMega 16 Memanggil librari LCD untuk mengaktifkan. Memanggil library delay Menyimpan variabel shit pada tipe data integer Menentukan Kondisi awal port A.0 (Kondisi awal Port A = 1) Menentukan input/output pada port A.0 (Port A sebagai input) Sebagai percabangan dan penentuan kondisi Menentukanposisi kursor utuk memasukkan karakter. x adalh colom, dan y adalah baris Menuliskan isi pada LCD Sebagai Delay sebesar 10 ms 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 4 5 6 7-10 11 12 13 14 PushButton



Nama RS RW E DB0-DB3 D4 D5 D6 D7 PushButton



Koneksi PIN 7 Ground PIN 6 No Cennection PIN 5 PIN 4 PIN 3 PIN 2 PIN 12



4.2.2 Pemrograman #include 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 #include LiquidCrystal lcd(12, 11, 5, 4, 3, 2); lcd.begin(16,2); lcd.setCursor(0,1);



lcd.print("isi") Switch-Case lcd.clear();



Fungsi Memanggil librari LCD untuk mengaktifkan. Menentukan Pin Interface LCD Menentukan banyak kolom yang ditentukan Menentukan posisi kursor utuk memasukkan karakter. x adalh colom, dan y adalah baris Menuliskan isi pada LCD Membuat percabangan 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