Ini adalah tutorial keenam dalam Seri Tutorial PIC kita, dalam tutorial ini kita mempelajari Antarmuka LCD 16x2 dengan Mikrokontroler PIC. Dalam tutorial kami sebelumnya, kami telah mempelajari dasar-dasar PIC menggunakan beberapa Program berkedip LED dan juga telah mempelajari Cara menggunakan Pengatur Waktu di Mikrokontroler PIC. Anda dapat memeriksa di sini semua tutorial tentang Belajar Mikrokontroler PIC menggunakan kompiler MPLABX dan XC8.
Tutorial ini akan menjadi salah satu yang menarik karena kita akan belajar Bagaimana Menghubungkan LCD 16x2 dengan PIC16F877A, periksa Video rinci di akhir tutorial ini. Lewatlah sudah masa lalu di mana kami menggunakan LED untuk indikasi pengguna. Mari kita lihat bagaimana kita dapat membuat proyek kita terlihat lebih keren dan berguna dengan menggunakan layar LCD. Juga periksa artikel kami sebelumnya tentang Interfacing LCD dengan 8051, dengan Arduino, dengan Raspberry Pi, dengan AVR.
Fungsi Antarmuka LCD dengan Mikrokontroler PIC:
Untuk mempermudah, kami telah membuat perpustakaan kecil yang dapat mempermudah segala hal saat menggunakan LCD ini dengan PIC16F877A kami. File header "MyLCD.h" diberikan di sini untuk diunduh, yang berisi semua fungsi yang diperlukan untuk menggerakkan LCD menggunakan PIC MCU. Kode perpustakaan dijelaskan dengan baik oleh baris komentar tetapi jika Anda masih ragu, hubungi kami melalui bagian komentar. Juga periksa artikel ini untuk kerja LCD Dasar dan Pinout-nya.
Catatan: Itu selalu disarankan untuk mengetahui apa yang sebenarnya terjadi di dalam file header Anda karena ini akan membantu Anda dalam debugging atau saat mengubah MCU.
Sekarang, ada dua cara untuk menambahkan kode ini ke dalam program Anda. Anda dapat menyalin semua baris kode di atas di MyLCD.h dan menempelkannya sebelum void main (). Atau Anda dapat mengunduh file header menggunakan tautan dan menambahkannya ke file header proyek Anda ( #include "MyLCD.h "; ). Ini dapat dilakukan dengan mengklik kanan pada file header dan memilih Tambahkan Item yang ada dan menjelajah ke file header ini.
Di sini saya telah menyalin dan menempelkan kode file header ke file C utama saya. Jadi jika Anda menggunakan kode kami, maka Anda tidak perlu mengunduh dan menambahkan file header ke dalam program Anda, cukup gunakan Kode lengkap yang diberikan di akhir Tutorial ini. Perhatikan juga bahwa pustaka ini hanya akan mendukung Mikrokontroler PIC seri PIC16F.
Di sini saya menjelaskan setiap fungsi di dalam file header kami di bawah ini:
void Lcd_Start (): Fungsi ini harus menjadi fungsi pertama yang harus dipanggil untuk mulai bekerja dengan LCD kita. Kita harus memanggil fungsi ini hanya sekali untuk menghindari kelambatan dalam program.
batal Lcd_Start () {Lcd_SetBit (0x00); untuk (int i = 1065244; i <= 0; i--) NOP (); Lcd_Cmd (0x03); __delay_ms (5); Lcd_Cmd (0x03); __delay_ms (11); Lcd_Cmd (0x03); Lcd_Cmd (0x02); // 02H digunakan untuk Kembali ke rumah -> Menghapus RAM dan menginisialisasi LCD Lcd_Cmd (0x02); // 02H digunakan untuk Kembali ke rumah -> Menghapus RAM dan menginisialisasi LCD Lcd_Cmd (0x08); // Pilih Baris 1 Lcd_Cmd (0x00); // Hapus Baris 1 Tampilan Lcd_Cmd (0x0C); // Pilih Baris 2 Lcd_Cmd (0x00); // Hapus Baris 2 Tampilan Lcd_Cmd (0x06); }
Lcd_Clear (): Fungsi ini membersihkan layar LCD dan dapat digunakan di dalam loop untuk menghapus tampilan data sebelumnya.
Lcd_Clear () {Lcd_Cmd (0); // Hapus LCD Lcd_Cmd (1); // Pindahkan kursor ke posisi pertama}
void Lcd_Set_Cursor (x pos, y pos): Setelah dimulai, LCD kita siap untuk menerima perintah, kita dapat menginstruksikan LCD untuk mengatur kursornya di lokasi yang Anda inginkan dengan menggunakan fungsi ini. Misalkan jika kita membutuhkan kursor pada karakter ke-5 dari baris ke-1. Maka fungsinya akan menjadi kosong Lcd_Set_Cursor (1, 5)
kosongkan Lcd_Set_Cursor (karakter a, karakter b) {karakter temp, z, y; jika (a == 1) {temp = 0x80 + b - 1; // 80H digunakan untuk memindahkan kursor z = temp >> 4; // Turunkan 8-bit y = temp & 0x0F; // Atas 8-bit Lcd_Cmd (z); // Setel Baris Lcd_Cmd (y); // Setel Kolom} lain jika (a == 2) {temp = 0xC0 + b - 1; z = suhu >> 4; // Turunkan 8-bit y = temp & 0x0F; // Atas 8-bit Lcd_Cmd (z); // Setel Baris Lcd_Cmd (y); // Setel Kolom}}
void Lcd_Print_Char (char data): Setelah kursor disetel, kita dapat menulis karakter ke posisinya dengan memanggil fungsi ini.
void Lcd_Print_Char (char data) // Kirim 8-bit melalui mode 4-bit {char Lower_Nibble, Upper_Nibble; Lower_Nibble = data & 0x0F; Upper_Nibble = data & 0xF0; RS = 1; // => RS = 1 Lcd_SetBit (Upper_Nibble >> 4); // Kirim paruh atas dengan menggeser 4 EN = 1; untuk (int i = 2130483; i <= 0; i--) NOP (); EN = 0; Lcd_SetBit (Lower_Nibble); // Kirim Setengah Bawah EN = 1; untuk (int i = 2130483; i <= 0; i--) NOP (); EN = 0; }
void Lcd_Print_String (char * a): Jika sekelompok karakter akan ditampilkan, maka fungsi string dapat digunakan.
batalkan Lcd_Print_String (char * a) {int i; untuk (i = 0; a! = '\ 0'; i ++) Lcd_Print_Char (a); // Pisahkan string menggunakan pointer dan panggil fungsi Char}
Setiap kali Lcd_Print_Char (data karakter) dipanggil, nilai karakter masing-masing dikirim ke baris data LCD. Karakter ini mencapai HD44780U dalam bentuk bit. Sekarang IC ini menghubungkan bit dengan karakter yang akan ditampilkan dengan menggunakan memori ROM seperti yang ditunjukkan pada tabel di bawah ini. Anda dapat menemukan bit untuk semua karakter dalam lembar data Pengontrol LCD HD44780U.
Sekarang, karena kita puas dengan file header kita, mari kita buat sirkuit dan uji programnya. Juga periksa file header lengkap yang diberikan pada tautan yang diberikan di atas.
Diagram Sirkuit dan Pengujian:
Berikut adalah diagram rangkaian Interfacing LCD 16x2 dengan Mikrokontroler PIC.
Saya belum menunjukkan Power supply atau koneksi ICSP di sirkuit di atas, karena kami menggunakan papan yang sama yang telah kami gunakan di tutorial sebelumnya, periksa di sini.
Satu hal penting yang perlu diperhatikan dalam program ini adalah definisi pin LCD:
# Tentukan RS RD2 # Tentukan EN RD3 # Tentukan D4 RD4 # Tentukan D5 RD5 # Tentukan D6 RD6 # Tentukan D7 RD7
Definisi pin ini dapat diubah sesuai dengan pengaturan perangkat keras pemrogram. Ingatlah untuk mengubah konfigurasi port yang dihormati di fungsi utama jika Anda mengubahnya di sini.
Perangkat keras untuk proyek ini sangat sederhana. Kami akan menggunakan kembali modul PIC yang sama yang kami gunakan terakhir kali dan menghubungkan modul LCD ke PIC kami menggunakan kabel jumper.
Hubungan tersebut dapat dipahami dengan tabel berikut:
Nomor Pin LCD |
Nama Pin LCD |
Nama Pin MCU |
Nomor Pin MCU |
1 |
Tanah |
Tanah |
12 |
2 |
VCC |
+ 5V |
11 |
3 |
VEE |
Tanah |
12 |
4 |
Daftar Pilih |
RD2 |
21 |
5 |
Baca tulis |
Tanah |
12 |
6 |
Memungkinkan |
RD3 |
22 |
7 |
Bit Data 0 |
NC |
- |
8 |
Bit Data 1 |
NC |
- |
9 |
Bit Data 2 |
NC |
- |
10 |
Bit Data 3 |
NC |
- |
11 |
Bit Data 4 |
RD4 |
27 |
12 |
Bit Data 5 |
RD5 |
28 |
13 |
Bit Data 6 |
RD6 |
29 |
14 |
Bit Data 7 |
RD7 |
30 |
15 |
LED Positif |
+ 5V |
11 |
16 |
LED Negatif |
Tanah |
12 |
Sekarang mari kita membuat koneksi, membuang kode ke MCU kita dan memverifikasi hasilnya.
Jika Anda memiliki masalah atau keraguan, silakan gunakan bagian komentar. Juga periksa Video Demo yang diberikan di bawah ini.