Layar adalah bagian penting dari mesin apa pun apakah itu peralatan rumah tangga atau mesin industri. Tampilan tidak hanya menunjukkan opsi kontrol untuk mengoperasikan mesin tetapi juga menunjukkan status dan output dari tugas yang dilakukan oleh mesin itu. Ada banyak jenis tampilan yang digunakan dalam elektronik seperti tampilan 7-segmen, tampilan LCD 16x2, tampilan layar sentuh TFT, tampilan OLED, dll.
Layar LCD 16x2 adalah modul tampilan paling dasar dan juga digunakan di beberapa peralatan elektronik kecil seperti kalkulator, meteran digital, dll. Kami telah melakukan banyak proyek menggunakan LCD 16x2 termasuk antarmuka dasar dengan mikrokontroler lain:
- Antarmuka LCD dengan Mikrokontroler 8051
- Antarmuka LCD dengan Mikrokontroler ATmega32
- Antarmuka LCD dengan Mikrokontroler PIC
- Menghubungkan LCD 16x2 dengan Arduino
- 16x2 LCD Interfacing dengan Raspberry Pi menggunakan Python
Dalam tutorial ini, kita akan melihat bagaimana antarmuka LCD 16x2 dengan mikrokontroler AVR Atmega16 dan menampilkan pesan selamat datang yang sederhana.
Komponen Diperlukan
- Atmega16
- Modul LCD 16x2
- Pelompat
- Papan tempat memotong roti
Diagram Sirkuit
Pemrograman Atmega16 untuk Layar LCD 16x2
Pemrograman tidak membutuhkan pustaka eksternal. Di sini Atmega16 diprogram menggunakan USBASP dan Atmel Studio7.0. Program Lengkap dan Video Kerja diberikan di akhir proyek, cukup unggah program di Atmega16 dan putar 10k POT untuk menyesuaikan kecerahan LCD.Awalnya tentukan Frekuensi CPU dan sertakan pustaka yang diperlukan yang disertakan dengan Paket Atmel Studio seperti untuk mengakses pin IO dan
Tentukan pin RS dan EN LCD dalam program. Pin RS digunakan untuk memilih data dan register perintah. Pin pengaktifan mengunci data.
#define en PA3 #define rs PA2
Juga tentukan PORT Atmega16 mana yang akan digunakan untuk antarmuka LCD. Di sini, PORTA digunakan.
#define lcdDirection DDRA #define lcdPort PORTA
Langkah selanjutnya adalah membuat fungsi yang akan menerima perintah dengan melewatkan parameter. Ada banyak Perintah LCD HEX. Perintah Hex digunakan untuk mendefinisikan fungsi LCD. Karena kita menggunakan Mode LCD 4-bit, byte (8-bit) akan dikirim dalam dua paket. Paket satu akan menjadi Nibble Atas (4-bit) dan paket lainnya akan menjadi Nibble Bawah (4-bit).
void lcdCommand (perintah karakter tidak bertanda) { lcdPort = (lcdPort & 0x0F) - (perintah & 0xF0); lcdPort & = ~ (1 <
Langkah selanjutnya adalah menerima karakter dan mengaitkannya ke port LCD. Karakter yang diterima kemudian dikirim ke LCD nibble by nibble. Fungsi mengambil karakter menggunakan parameter lewat dan kemudian mengambil gigitan atas dan bawah. Pin 'rs' diatur ke tinggi untuk register data dan kemudian pulsa yang naik dikirim untuk mengunci data. Demikian pula gigitan yang lebih rendah dikirim dengan mengubah nilai enable dan mengirimkan pulsa yang meningkat untuk mengaktifkan.
void lcdChar (string karakter tak bertanda) { lcdPort = (lcdPort & 0x0F) - (string & 0xF0); lcdPort - = (1 <
Fungsi ini hanya mengubah karakter menjadi string dan dapat digunakan dalam program nanti di mana penulisan string diperlukan.
void lcdString (char * str) { int j; untuk (j = 0; str! = 0; j ++) { lcdChar (str); } }
Sekarang sebuah fungsi ditulis hanya untuk membersihkan layar. Anda hanya perlu mengirim perintah 01 di HEX dan kemudian tinggal mengatur kursor ke posisi awal.
void lcdClear () { lcdCommand (0x01); _delay_ms (2); lcdCommand (0x80); }
Sekarang di fungsi utama, LCD diinisialisasi. Awalnya atur arah PORT untuk LCD ke antarmuka. Di sini, PORT diatur sebagai OUTPUT jadi atur FF.
lcdDirection = 0xFF; _delay_ms (20)
Kemudian atur LCD dalam mode 4-bit dengan mengirimkan 02 dalam hex. Juga kirim 28 dalam hex untuk mengaturnya dalam 2 baris, piksel matriks 15x7 dalam mode 4-bit.
lcdCommand (0x02); lcdCommand (0x28);
The perintah 0c dan 06 digunakan untuk mengontrol posisi kursor. Dan akhirnya bersihkan layar dengan mengirimkan 01 dalam hex. Ini akan menyelesaikan inisialisasi LCD.
lcdCommand (0x0c); lcdCommand (0x06); lcdCommand (0x01);
Setelah inisialisasi selesai tinggal uji LCD dengan mengirimkan string. Di sini kita mengirimkan String " Interfacing LCD " di 1 st baris.
lcdString ("LCD Antarmuka");
Kemudian pindahkan kursor ke baris berikutnya dengan mengirimkan perintah c0 dalam hex. Dan terakhir pada posisi ini, tuliskan string "With Atmega1 6".
lcdCommand (0xC0); lcdString ("Dengan Atmega16");
Ini menyelesaikan tutorial lengkap tentang Menghubungkan LCD 16x2 dengan Atmega16. Perhatikan bahwa jika Anda tidak mendapatkan gambar atau piksel apa pun, periksa kabel Anda sesuai dengan kode dan diagram sirkuit atau ubah nilai POT yang terpasang ke pin V0 LCD. Jika Anda memiliki keraguan atau saran, Anda dapat menghubungi kami baik dengan menulis ke forum kami atau komentar di bawah.