- 16x2 Dot Matrix LCD Controller IC HD44780:
- Menampilkan Karakter Kustom pada LCD 16x2:
- Penjelasan Pemrograman dan Kerja:
- Koneksi dan Pengujian Sirkuit:
Dalam tutorial sebelumnya, kita telah belajar Bagaimana Menghubungkan LCD 16 * 2 dengan Mikrokontroler PIC. Kami menyarankan Anda untuk melakukannya sebelum melangkah lebih jauh, jika Anda adalah pemula dalam mikrokontroler PIC. Sebelumnya kita juga telah mempelajari dasar-dasar PIC menggunakan Program LED Blinking dan Timer pada Mikrokontroler PIC. Anda dapat memeriksa di sini semua tutorial tentang Belajar Mikrokontroler PIC menggunakan kompiler MPLABX dan XC8.
Dalam tutorial ini, mari kita membuatnya lebih menarik dengan membuat karakter kustom kita sendiri dan menampilkannya di layar LCD menggunakan Mikrokontroler PIC16F877A PIC. Juga ada beberapa karakter khusus yang sebagian besar digunakan yang ditentukan sebelumnya yang diberikan oleh IC HD44780A itu sendiri, kita juga akan melihat bagaimana kita dapat menggunakannya. Seperti yang dijelaskan dalam tutorial kami sebelumnya, LCD kami memiliki pengontrol Hitachi HD44780 yang tertanam di dalamnya yang membantu kami menampilkan karakter. Setiap karakter yang kami tampilkan sudah ditentukan sebelumnya di dalam ROM IC HD44780. Kita akan mempelajari tentang pengontrol LCD IC HD44780, sebelum menampilkan karakter pada LCD.
16x2 Dot Matrix LCD Controller IC HD44780:
Untuk menampilkan karakter kustom, kita harus memberi tahu IC bagaimana karakter kustom akan terlihat. Untuk melakukan itu, kita harus mengetahui tentang Tiga jenis Kenangan yang ada di dalam IC pengontrol LCD HD44780:
Character Generator ROM (CGROM): Ini adalah memori hanya baca yang, seperti yang dikatakan sebelumnya, berisi semua pola karakter yang telah ditentukan sebelumnya di dalamnya. ROM ini akan bervariasi dari setiap jenis IC Antarmuka, dan beberapa mungkin memiliki beberapa karakter khusus yang telah ditentukan sebelumnya.
Display Data RAM (DDRAM): Ini adalah memori akses acak. Setiap kali kita menampilkan karakter, polanya akan diambil dari CGROM dan ditransfer ke DDRAM dan kemudian akan ditempatkan di layar. Sederhananya, DDRAM akan memiliki pola dari semua karakter yang sedang ditampilkan di Layar LCD. Dengan cara ini untuk setiap siklus IC tidak perlu mengambil data dari CGROM, dan membantu mendapatkan frekuensi pembaruan yang singkat
Character generator RAM (CGRAM): Ini juga merupakan memori akses acak, sehingga kita dapat menulis dan membaca data darinya. Sesuai dengan namanya, memori ini akan menjadi salah satu yang dapat digunakan untuk menghasilkan karakter kustom. Kita harus membentuk pola karakter dan menuliskannya di CGRAM, pola ini dapat dibaca dan ditampilkan di Layar bila diperlukan.
Sekarang, karena kita mendapat pemahaman dasar tentang jenis Memori yang ada di IC antarmuka HD44780. Mari kita lihat lembar datanya untuk memahami lebih banyak.
Seperti yang tersirat dalam datasheet, IC HD44780 telah menyediakan 8 Lokasi untuk menyimpan pola kustom kami di CGRAM, juga di sebelah kanan kami dapat melihat bahwa ada beberapa karakter yang telah ditentukan sebelumnya yang juga dapat ditampilkan di Layar LCD kami. Mari kita lihat bagaimana kita bisa melakukannya.
Menampilkan Karakter Kustom pada LCD 16x2:
Untuk menampilkan karakter khusus, pertama-tama kita harus membuat pola untuk itu dan kemudian menyimpannya ke CGRAM. Karena kita sudah memiliki fungsi perpustakaan, seharusnya mudah untuk melakukan ini dengan beberapa perintah sederhana. Ini adalah fungsi Library untuk LCD, tetapi di sini kami telah menyalin semua fungsi Library di program itu sendiri, jadi tidak perlu menyertakan file header ini ke dalam program kami. Juga periksa artikel ini untuk kerja LCD Dasar dan Pinout-nya.
Langkah pertama adalah menghasilkan pola atau karakter kustom. Seperti yang kita ketahui setiap karakter merupakan kombinasi dari 5 * 8 titik. Kita harus memilih titik (piksel) mana yang harus tinggi dan mana yang harus tetap rendah. Cukup gambar kotak seperti di bawah ini dan beri bayangan pada area berdasarkan karakter Anda. Karakter saya di sini adalah seorang pria tongkat (semoga terlihat seperti itu). Setelah diarsir, tuliskan nilai biner ekuivalen dari setiap byte seperti yang ditunjukkan di bawah ini.
Cukup letakkan '1' di wilayah yang diarsir dan '0' di wilayah yang tidak diarsir untuk setiap byte, dan pola kustom kami sudah siap. Demikian pula saya telah membuat 8 kode pola khusus untuk 8 ruang memori kami menyajikannya CGROM. Mereka tercantum dalam tabel di bawah.
S. TIDAK: |
Karakter Kustom |
Kode Pola |
1 |
0b01110, 0b01110, 0b00100, 0b01110, 0b10101, 0b00100, 0b01010, 0b01010 |
|
2 |
0b00000, 0b00000, 0b01010, 0b00100, 0b00100, 0b10001, 0b01110, 0b00000 |
|
3 |
0b00100, 0b01110, 0b11111, 0b11111, 0b01110, 0b01110, 0b01010, 0b01010 |
|
4 |
0b01110, 0b10001, 0b10001, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
5 |
0b01110, 0b10000, 0b10000, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
6 |
0b00000, 0b10001, 0b01010, 0b10001, 0b00100, 0b01110, 0b10001, 0b00000 |
|
7 |
0b00000, 0b00000, 0b01010, 0b10101, 0b10001, 0b01110, 0b00100, 0b00000 |
|
8 |
0b11111, 0b11111, 0b10101, 0b11011, 0b11011, 0b11111, 0b10001, 0b11111 |
Catatan: Tidak wajib memuat semua 8 ruang yang disediakan di CGRAM.
Penjelasan Pemrograman dan Kerja:
Sekarang kode pola kita sudah siap, kita tinggal memuatnya ke CGRAM LCD dan menampilkannya menggunakan mikrokontroler PIC. Untuk memuatnya ke CGRAM kita dapat membentuk array 5 * 8 elemen dan memuat setiap byte dengan menggunakan ' for loop '. Array kode pola ditunjukkan di bawah ini:
const unsigned short Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // Kode untuk ruang memori CGRAM 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b10001,0b01110,0b00000, // Code for Ruang memori CGRAM 2 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // Kode untuk ruang memori CGRAM 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b11111,0bRAM000, // Kode untuk memori CGRAM spasi 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // Kode untuk ruang memori CGRAM 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00000, // Kode untuk ruang memori CGRAM 6 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // Kode untuk ruang memori CGRAM 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11111 // Kode untuk ruang memori CGRAM 8};
Setiap ruang memori dimuat dengan pola karakternya masing-masing. Untuk memuat pola ini ke dalam IC HD44780, lembar data HD44780 harus direferensikan, tetapi hanya baris perintah yang dapat digunakan untuk mengatur alamat CGRAM
// *** Muat karakter khusus ke dalam CGROM *** ////// Lcd_Cmd (0x04); // Tetapkan Alamat CGRAM Lcd_Cmd (0x00); //.. setel Alamat CGRAM untuk (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // Kembali ke Beranda Lcd_Cmd (2); //.. kembali ke Beranda // *** Memuat karakter khusus lengkap *** //////
Di sini, di dalam ' for loop' setiap nilai biner dimuat ke CGROM. Setelah pola dimuat, karakter khusus dapat dibuat untuk ditampilkan hanya dengan memanggil lokasi pola menggunakan fungsi void Lcd_Print_Char (data karakter) seperti yang ditunjukkan di bawah ini.
Lcd_Print_Char (0); // Tampilkan Karakter Kustom 0 Lcd_Print_Char (1); // Tampilkan Karakter Kustom 1 Lcd_Print_Char (2); // Tampilkan Karakter Kustom 2 Lcd_Print_Char (3); // Tampilkan Karakter Kustom 3 Lcd_Print_Char (4); // Tampilkan Karakter Kustom 4 Lcd_Print_Char (5); // Tampilkan Karakter Kustom 5 Lcd_Print_Char (6); // Tampilkan Karakter Kustom 6 Lcd_Print_Char (7); // Menampilkan Karakter Kustom 7
Cetak Karakter Khusus yang Ditetapkan Sebelumnya:
IC HD44780 memiliki beberapa karakter khusus yang telah ditetapkan sebelumnya yang disimpan di DDROM. Karakter ini dapat langsung dicetak ke layar dengan mengacu pada nilai binernya di lembar data.
Misalnya: Nilai biner dari karakter "ALPHA" adalah 0b11100000. Cara mendapatkannya dapat dipahami dari gambar di bawah ini, demikian juga Anda bisa mendapatkan nilai untuk setiap karakter khusus yang telah ditentukan sebelumnya di IC.
Setelah nilai biner diketahui, karakter terkait dapat dicetak ke layar hanya dengan menggunakan fungsi void Lcd_Print_Char (char data) seperti yang ditunjukkan di bawah ini, Lcd_Print_Char (0b11100000); // nilai biner alfa dari lembar data
The kode lengkap dari proyek ini diberikan di bawah ini pada bagian Code, juga memeriksa detail Video penjelasan pada akhir tutorial ini.
Koneksi dan Pengujian Sirkuit:
Proyek ini tidak memiliki persyaratan perangkat keras tambahan, kami hanya menggunakan koneksi yang sama dari tutorial antarmuka LCD sebelumnya dan menggunakan papan yang sama yang telah kami buat di Tutorial berkedip LED. Seperti biasa mari kita simulasikan program menggunakan Proteus untuk memverifikasi keluaran kita.
Setelah kami menjalankan simulasi seperti yang diharapkan, mari langsung membakar kode ke dalam pengaturan Perangkat Keras kami. The output program harus sesuatu seperti ini:
Jadi begitulah cara Anda dapat Menampilkan Karakter Kustom apa pun pada LCD 16x2 menggunakan Mikrokontroler PIC dengan kompiler MPLABX dan XC8. Lihat juga Seri Pembelajaran Mikrokontroler PIC lengkap kami di sini.