Mikrokontroler Jobsheet 5 Antarmuka Mikrokontroler Dengan LCD (Risyad)
Mikrokontroler Jobsheet 5 Antarmuka Mikrokontroler Dengan LCD (Risyad)
Oleh :
Nama : Risyad Bagas P
NIM : 210536615202
Prodi : S1 Teknik Elektro
Offering :B
TUJUAN
LCD M1632
Modul LCD M1632 seperti dalam Gambar 5.1 merupakan modul LCD dengan
tampilan 16 x 2 baris dengan konsumsi daya yang rendah. Modul ini dilengkapi dengan
mikrokontroler yang didisain khusus untuk mengendalikan LCD. Mikrokontroler HD44780
buatan Hitachi yang berfungsi sebagai pengendali LCD ini mempunyai CGROM (Character
Generator Read Only Memory), CGRAM (Character Generator Random Access Memory), dan
DDRAM (Display Data Random Access Memory).
CGROM
CGROM adalah merupakan memori untuk menggambarkan pola sebuah karakter di
mana pola tersebut sudah ditentukan secara permanen dari HD44780 sehingga pengguna
tidak dapat mengubah lagi. Namun karena ROM bersifat permanen, maka pola karakter
tersebut tidak akan hilang walaupun power supply tidak aktif. Pada Gambar 6.3, tampak
terlihat pola-pola karakter yang tersimpan dalam lokasi-lokasi tertentu dalam CGROM.
Pada saat HD44780 akan menampilkan data 41H ke DDRAM, maka HD44780 akan
mengambil data di alamat 41H (0100 0001) yang ada pada CGROM yaitu pola karakter
A.
Dalam Gambar 5.4 modul LCD dihubungkan ke PORTB mikrokontroler dimana kaki
RS, RD, EN terhubung ke PORTB.0-PORTB.2 dan D4, D5, D6, D7 terhubung ke
PORTB.4-PORTB.7.
Gambar 5.3 pola Karakter dalam CGROM
1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama
1 buah catu daya DC +5V
1 buah multimeter
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah LCD
1 buah kabel printer USB
PROSEDUR
1. Rangkailah peralatan yang diperlukan seperti dalam Gambar 6.5. Hubungkan soket
jumper PORTB pada minimum system dengan soket jumper pada LCD.
5. Buatlah file source (.c) kemudian hubungkan file project dengan file source seperti
pada praktikum sebelumnya.
7. Buatlah program utama dan tuliskan program berikut di dalam program utama .
8. Tuliskan program berikut dalam program utama tepatnya di dalam while(1).
9. Compile dan Build program jika ada yang error perbaiki program. Masukkan file
hex menggunakan Khanzama AVR Programer. Klik auto program, amati tampilan
LCD.
10. Hapus program yang ada di dalam while. Tuliskan program berikut di dalam while(1).
11. Compile dan Build program jika ada yang error perbaiki program. Masukkan file
hex menggunakan Khanzama AVR Programer. Klik auto program, amati tampilan
LCD.
12. Hapus program yang ada di dalam while. Tuliskan program berikut di dalam
while(1). while (1)
{
lcd_gotoxy(0,0);//menempatkan kursor di baris 0 kolom 0
lcd_putsf("Saya belajar");//menampilkan string “Saya belajar”
}
13. Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex
menggunakan Khanzama AVR Programer. Klik auto program, amati tampilan LCD.
14. Hapus program yang ada di dalam while. Tuliskan program berikut di dalam while( 1).
15. Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex
menggunakan Khanzama AVR Programer. Klik auto program, amati tampilan LCD.
16. Hapus program yang ada di dalam while. Tuliskan program berikut di dalam while(1).
17. Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex
menggunakan Khanzama AVR Programer. Klik auto program, amati tampilan LCD.
18. Buatlah tampilan nama anda berjalan dari kiri ke kanan pada baris 0 dan NIM anda
berjalan dari kanan ke kiri pada baris 1 (tampidlan di baris 0 dan 1 muncul secara
bersamaan).
19. Ubahlah nilai dalam lcd_init(16) menjadi lcd_init(40) dan lihat perbedaannya.
#include <mega8535.h>
#include <alcd.h>
#include <delay.h>
void main()
{
lcd_init(16);
while(1)
{
lcd_gotoxy(0,0);
lcd_putchar(0x41);
}
}
#include <mega8535.h>
#include <alcd.h>
#include <delay.h>
void main()
{
lcd_init(16);
while(1)
{
lcd_gotoxy(0,0);
lcd_putchar(0x41);
delay_ms(1000);
lcd_clear();
lcd_gotoxy(0,1);
lcd_putchar(0x30);
delay_ms(1000);
}
}
#include <mega8535.h>
#include <alcd.h>
#include <delay.h>
void main()
{
lcd_init(16);
while(1)
{
lcd_gotoxy(0,0);
lcd_putsf("Saya belajar");
}
}
Gambar 3 Hasil Percobaan Nomor 12
#include <mega8535.h>
#include <alcd.h>
#include <delay.h>
void main()
{
lcd_init(16);
while(1)
{
lcd_gotoxy(0,1);
lcd_putsf("Antarmuka LCD");
}
}
#include <mega8535.h>
#include <alcd.h>
#include <delay.h>
void main()
{
lcd_init(16);
while(1)
{
lcd_gotoxy(0,0);
lcd_putsf("Saya belajar");
lcd_gotoxy(0,1);
lcd_putsf("Antarmuka LCD");
}
}
#include <mega8535.h>
#include <alcd.h>
#include <delay.h>
#include <string.h>
char text[17] = "Risyad Bagas P ";
char c;
while(1)
{
for (n=16,y=0; n>0,y<16; y++,n--)
{
lcd_clear();
lcd_gotoxy (0,0);
lcd_printf("%s",text);
lcd_gotoxy (0,1);
lcd_printf("%s",NIM);
b=NIM[0];
c=text[15];
for (i=15,x=0; i>0,x<16; i--,x++)
{
text[i]=text[i-1];
NIM[x]=NIM[1+x];
}
text[0]=c;
text[16]=0;
NIM[15]=b;
NIM[16]=0;
delay_ms(150);
}
}
}
#include <mega8535.h>
#include <alcd.h>
#include <delay.h>
#include <string.h>
char text[17] = " Risyad Bagas P ";
char c;
while(1)
{
for (n=16,y=0; n>0,y<16; y++,n--)
{
lcd_clear();
lcd_gotoxy (0,0);
lcd_printf("%s",text);
lcd_gotoxy (0,1);
lcd_printf("%s",NIM);
b=NIM[0];
c=text[15];
for (i=15,x=0; i>0,x<16; i--,x++)
{
text[i]=text[i-1];
NIM[x]=NIM[1+x];
}
text[0]=c;
text[16]=0;
NIM[15]=b;
NIM[16]=0;
delay_ms(150);
}
}
}
1. Analisis data hasil percobaan pada langkah percobaan nomor 8 sampai dengan nomor
16!
Program nomor 8
Program nomor 8 menampilkan karakter huruf A pada bagian kiri atas LCD.
Program diawali dengan menuliskan header program #include <mega8535.h>
untuk mengaktifkan fungsi IC ATmega 8535, #include <alcd.h> untuk
mengaktifkan fungsi LCD dan #include <delay.h> untuk mengaktifkan fungsi delay
pada tampilan LCD. Setelah header program kemudian adalah tipe data void
dilanjutkan lagi dengan inisialisasi lcd_init(16) yang bermakna bahwa kolom yang
tersedia pada lcd adalah 16 (kolom 0-15). Jika angka dalam kolom dirubah, maka
jumlah kolom yang dapat diisi karakter sama dengan angka yang tertera pada angka
inisialisasi. Setelah itu masuk pada program utama while (1). Karakter atau char
“A” muncul pada baris 0 dan kolom 0, karena terdapat sintaks program
lcd_gotoxy(0,0); yang bertujuan untuk menaruh kursor di baris 0 dan kolom 0.
Sedangkan karakter atau char “A” muncul dikarenkan adanya lcd_putchar(0x41);
yang berfungsi untuk menampilkan char “A” tersebut. Sehingga pada tampilan
LCD menampilkan karakter A di baris 0 dan kolom 0.
Program nomor 10
Sama seperti program pertama, akan tetapi karakter yang ditampilkan tidak hanya
terdapat di baris satu saja, tetapi juga terdapat di baris dua. Perbedaan tersebut
dikarenakan pada program utama tidk hanya memberikan perintah baris satu saja
(menampilkan karakter “A” seperti program nomor 8) tetapi juga diberikan
perintah untuk menampilkan karakter pada baris kedua. Perintah untuk mengisi
baris kedua ditandai dengan sintaks lcd_gotoxy(0,1); yang berarti bahwa daerah
lcd yang dituju adalah baris 1 dan kolom 0. Sedangkan karakter yang ditampilkan
adalah karakter “0”, karakter tersebut di tunjukkan dengan sintaks
lcd_putchar(0x30). Delay pada program ini berfungsi untuk memberikan perintah
jeda selama 1000ms atau 1 detik pada tampilan LCD.
Program nomor 12
Berbeda dengan program yang terdapat pada program nomor 8 dan program nomor
10, program nomor 12 adalah program yang berfungsi untuk menampilkan string
atau kumpulan beberapa karakter. Kalimat (string) “Saya Belajar” muncul pada
baris 0 dan kolom 0, hal tersebut disebabkan oleh script lcd_gotoxy(0,0); yang
berfungsi untuk menempatkan kalimat tersebut dibaris 0 dan kolom 0. Sedangkan
untuk memunculkan kalimat “Saya Belajar” itu sendiri menggunakan script
lcd_putsf("Saya belajar");.
Program nomor 14
Sama halnya dengan program nomor 12, program ini merupakan program yang
berfungsi untuk menampilkan kalimat. Kalimat yang ditampilkan berbeda dengan
program nomor 12. Perbedaannya terdapat pada kalimat yang ditampilkan dan baris
yang dituju. Pada program tiga kalimat yang ditampilkan adalah “Saya Belajar”
pada baris 0 dan kolom 0, sedangkan pada progam empat kalimat yang ditampilkan
adalah “Antarmuka LCD” pada baris 1 dan kolom 0 . Kalimat (string) “Antarmuka
LCD” muncul pada baris 1 dan kolom 0, disebabkan oleh script lcd_gotoxy(0,1);
yang berfungsi untuk menempatkan kalimat tersebut dibaris 1 dan kolom 0.
Sedangkan untuk memunculkan kalimat “Antarmuka LCD” itu sendiri
menggunakan script lcd_putsf("Antarmuka LCD");.
Program 16
Program nomor 16 pada dasarnya adalah gabungan antara program nomor 12 dan
program nomor 14, yaitu program yang berfungsi menampilkan kalimat di dua
baris sekaligus. Kalimat yang ditampilkan yaitu “Saya Belajar” pada baris 0 dan
“Antarmuka LCD” pada baris 1. Kalimat (string) “Saya Belajar” muncul pada baris
0 dan kolom 0, disebabkan oleh script lcd_gotoxy(0,0); yang berfungsi untuk
menempatkan kalimat tersebut dibaris 0 dan kolom 0. Kalimat (string) “Antarmuka
LCD” muncul pada baris 1 dan kolom 0, disebabkan oleh script lcd_gotoxy(0,1);
yang berfungsi untuk menempatkan kalimat tersebut dibaris 1 dan kolom 0.
Sedangkan untuk memunculkan kalimat “Saya Belajar” itu sendiri menggunakan
script lcd_putsf("Saya belajar");. Dan untuk memunculkan kalimat “Antarmuka
LCD” itu sendiri menggunakan script lcd_putsf("Antarmuka LCD");. Sehingga
pada tampilan LCD muncul kalimat Saya Belajar di baris 0 dan kolom 0 dan
Antarmuka LCD pada baris 1 kolom 0.
Pada progam nomor 18 ini akan menampilkan karakter nama yang akan berjalan dari
kiri ke kanan pada baris 0 dan NIM yang berjalan dari kanan ke kiri pada baris 1
(tampilan di baris 0 dan 1 muncul secara bersamaan). pada progam ini menggunakan
lcd_init(16); yang artinya jumlah karakter yang disediakan adalah sebanyak 16 karakter.
Pada program ini menggunakan perulangan for untuk setiap pergerakan karakter dan
dibantu fungsi array untuk menampilkan nama maupun NIM. Adapun program
utamannya adalah sebagai berikut:
while(1)
{
for (n=16,y=0; n>0,y<16; y++,n--)
{
lcd_clear();
lcd_gotoxy (0,0);
lcd_printf("%s",text);
lcd_gotoxy (0,1);
lcd_printf("%s",NIM);
b=NIM[0];
c=text[15];
for (i=15,x=0; i>0,x<16; i--,x++)
{
text[i]=text[i-1];
NIM[x]=NIM[1+x];
}
text[0]=c;
text[16]=0;
NIM[15]=b;
NIM[16]=0;
delay_ms(150);
}
}
Fungsi dari sintaks lcd_init(); adalah kapasitas satu baris lcd untuk menampung
sebuah karakter. Contoh perbedaan lcd_init(16) dan lcd_init(40) dapat dilihat pada
program nomor 18, saat Nama Mahasiswa berjalan dari kiri ke kanan, apabila
menggunakan lcd_init(16) dan karakter yang ditampung tidak mencukupi, maka
karakter tersebut akan dilanjutkan kepada baris 1. Sedangkan pada saat menggunakan
lcd_init(40) karakter yang ditampung cenderung lebih banyak (40 kolom tersedia)
sehingga karakter tidak langsung diteruskan kepada baris 1 dikarenakan masih
memiliki kapasitas untuk menampung karakter tersebut.
KESIMPULAN
LCD (Liquid Crystal Display) merupakan salah satu pitanti elektronik yang berfungsi untuk
menampilkan karakter, gambar maupun tulisan sesuai yang kita inginkan melalui program
yang telah dibuat.
LCD M1632 adalah LCD dengan tampilan 16 kolom x 2 baris dengan konsumsi daya yang
rendah
LCD memiliki 3 memori utama, yaitu CGROM (Character Generator Read Only Memory),
CGRAM (Character Generator Random Access Memory), dan DDRAM (Display Data
Random Access Memory).
DDRAM merupakan memori tempat karakter yang ditampilkan berada.
CGRAM merupakan memori untuk menggambarkan pola sebuah karakter di mana bentuk
dari karakter dapat diubah-ubah sesuai keinginan
CGROM merupakan memori untuk menggambarkan pola sebuah karakter di mana pola
tersebut sudah ditentukan secara permanen dari HD44780 sehingga pengguna tidak dapat
mengubah lagi
Langkah penting sebelum mengintegrasikan LCD dengan mikrokontroller adalah mengatur
konfigurasi program pada libraries untuk mengaktifkan LCD.
Untuk mengatur pergerakan karakter, kita bisa memanfaatkan fungsi for.