Unit tampilan adalah perangkat keluaran terpenting dalam proyek tertanam dan produk elektronik. LCD 16x2 adalah salah satu unit tampilan yang paling banyak digunakan. LCD 16x2 berarti ada dua baris di mana 16 karakter dapat ditampilkan per baris, dan setiap karakter membutuhkan ruang matriks 5X7 pada LCD. Dalam tutorial ini kita akan menghubungkan modul LCD 16X2 ke mikrokontroler 8051 (AT89S52). Interfacing LCD dengan mikrokontroler 8051 mungkin terlihat cukup rumit untuk pemula, tetapi setelah memahami konsepnya akan terlihat sangat sederhana dan mudah. Meskipun mungkin memakan waktu karena Anda perlu memahami dan menghubungkan 16 pin LCD ke mikrokontroler. Jadi pertama-tama mari kita pahami 16 pin modul LCD.
Kita dapat membaginya dalam lima kategori, Pin Power, Pin Kontras, Pin Kontrol, Pin Data dan Pin Backlight.
Kategori |
Pin NO. |
Nama Pin |
Fungsi |
Pin Daya |
1 |
VSS |
Pin Ground, terhubung ke Ground |
2 |
VDD atau Vcc |
Pin tegangan + 5V |
|
Kontras Pin |
3 |
V0 atau VEE |
Pengaturan Kontras, terhubung ke Vcc melalui resistor variabel. |
Pin Kontrol |
4 |
RS |
Register Pilih Pin, RS = 0 Mode perintah, RS = 1 Mode data |
5 |
RW |
Baca / Tulis pin, RW = 0 Mode tulis, RW = 1 Mode baca |
|
6 |
E |
Aktifkan, pulsa tinggi ke rendah perlu mengaktifkan LCD |
|
Pin Data |
7-14 |
D0-D7 |
Pin Data, Menyimpan Data untuk ditampilkan pada LCD atau instruksi perintah |
Pin Lampu Latar |
15 |
LED + atau A |
Untuk menyalakan Lampu Latar + 5V |
16 |
LED- atau K. |
Tanah Backlight |
Semua pin dapat dipahami dengan jelas berdasarkan nama dan fungsinya, kecuali pin kontrol, sehingga dijelaskan di bawah ini:
RS: RS adalah pin pilihan register. Kita perlu mengaturnya ke 1, jika kita mengirim beberapa data untuk ditampilkan pada LCD. Dan kami akan mengaturnya ke 0 jika kami mengirim beberapa instruksi perintah seperti membersihkan layar (kode hex 01).
RW: Ini adalah pin Read / write, kami akan mengaturnya ke 0, jika kami akan menulis beberapa data pada LCD. Dan atur ke 1, jika kita membaca dari modul LCD. Umumnya ini diset ke 0, karena kita tidak perlu membaca data dari LCD. Hanya satu instruksi "Dapatkan status LCD", perlu dibaca beberapa kali.
E: Pin ini digunakan untuk mengaktifkan modul ketika diberikan pulsa tinggi ke rendah. Denyut nadi 450 ns harus diberikan. Transisi dari TINGGI ke RENDAH membuat modul AKTIF.
Ada beberapa instruksi perintah preset di LCD, kami telah menggunakannya dalam program kami di bawah ini untuk menyiapkan LCD (dalam fungsi lcd_init ()). Beberapa instruksi perintah penting diberikan di bawah ini:
Kode Hex |
Perintah ke Daftar Instruksi LCD |
0F |
LCD ON, kursor ON |
01 |
Hapus tampilan layar |
02 |
Kembali ke rumah |
04 |
Kursor pengurangan (geser kursor ke kiri) |
06 |
Kursor kenaikan (geser kursor ke kanan) |
05 |
Geser tampilan ke kanan |
07 |
Geser tampilan ke kiri |
0E |
Tampilan ON, kursor berkedip |
80 |
Paksa kursor ke awal baris pertama |
C0 |
Paksa kursor ke awal baris kedua |
38 |
2 baris dan matriks 5 × 7 |
83 |
Garis kursor 1 posisi 3 |
3C |
Aktifkan baris kedua |
08 |
Tampilan OFF, kursor OFF |
C1 |
Lompat ke baris kedua, posisi 1 |
OC |
Tampilan ON, kursor OFF |
C1 |
Lompat ke baris kedua, posisi 1 |
C2 |
Lompat ke baris kedua, posisi 2 |
Diagram Sirkuit dan Penjelasannya
Diagram rangkaian untuk antarmuka LCD dengan mikrokontroler 8051 ditunjukkan pada gambar di atas. Jika Anda memiliki pemahaman dasar tentang 8051 maka Anda harus tahu tentang EA (PIN 31), XTAL1 & XTAL2, pin RST (PIN 9), Vcc dan Pin Ground mikrokontroler 8051. Saya telah menggunakan pin ini di sirkuit di atas. Jika Anda tidak tahu tentang itu maka saya sarankan Anda untuk membaca Artikel ini Antarmuka LED dengan Mikrokontroler 8051 sebelum melalui antarmuka LCD.
Jadi selain pin diatas kita telah menghubungkan pin data (D0-D7) dari LCD ke mikrokontroler Port 2 (P2_0 - P2_7). Dan pin kontrol RS, RW dan E masing-masing ke pin 12,13,14 (pin 2,3,4 dari port 3) mikrokontroler.
PIN 2 (VDD) dan PIN 15 (Pasokan lampu latar) dari LCD terhubung ke tegangan (5v), dan PIN 1 (VSS) dan PIN 16 (Tanah backlight) terhubung ke ground.
Pin 3 (V0) dihubungkan ke tegangan (Vcc) melalui resistor variabel 10k untuk mengatur kontras LCD. Kaki tengah dari resistor variabel terhubung ke PIN 3 dan dua kaki lainnya terhubung ke suplai tegangan dan Ground.
Penjelasan Kode
Saya telah mencoba menjelaskan kode melalui komentar (dalam kode itu sendiri).
Seperti yang telah saya jelaskan sebelumnya tentang mode perintah dan mode data, Anda dapat melihat bahwa saat mengirim perintah (fungsi lcd_cmd) kami telah mengatur RS = 0, RW = 0 dan pulsa TINGGI ke RENDAH diberikan ke E dengan menjadikannya 1, lalu 0 Juga ketika mengirim data (fungsi lcd_data) ke LCD kami telah mengatur RS = 1, RW = 0 dan TINGGI ke RENDAH pulsa diberikan ke E dengan membuatnya 1 hingga 0. Fungsi msdelay () telah dibuat untuk membuat penundaan dalam milidetik dan sering dipanggil dalam program, ini dipanggil agar modul LCD memiliki waktu yang cukup untuk menjalankan operasi dan perintah internal.
Loop sementara telah dibuat untuk mencetak string, yang memanggil fungsi lcd_data setiap kali mencetak karakter hingga karakter terakhir (null terminator- '\ 0').
Kami telah menggunakan fungsi lcd_init () untuk menyiapkan LCD dengan menggunakan instruksi perintah preset (dijelaskan di atas).