- Pengawal LCD 16x2 Dot Matrix IC HD44780:
- Memaparkan Karakter Khusus pada LCD 16x2:
- Pengaturcaraan dan Penjelasan Kerja:
- Sambungan dan Ujian Litar:
Dalam tutorial sebelumnya, kami telah mempelajari Cara Memadankan LCD 16 * 2 dengan PIC Microcontroller. Kami mengesyorkan anda untuk melaluinya sebelum melangkah lebih jauh, jika anda pemula dalam mikrokontroler PIC. Sebelum ini kami juga telah mempelajari asas-asas PIC menggunakan LED berkedip Program dan Timer dalam PIC Microcontroller. Anda boleh menyemak di sini semua tutorial tentang Pembelajaran PIC Microcontrollers menggunakan MPLABX dan XC8 compiler.
Dalam tutorial ini, marilah kita menjadikannya lebih menarik dengan membuat watak khas kita sendiri dan memaparkannya di skrin LCD kita menggunakan PIC16F877A PIC Microcontroller. Terdapat juga beberapa watak khas yang telah ditentukan sebelumnya yang diberikan oleh IC HD44780A itu sendiri, kita juga akan melihat bagaimana kita boleh menggunakannya. Seperti yang dijelaskan dalam tutorial sebelumnya, LCD kami mempunyai pengawal Hitachi HD44780 yang disertakan di dalamnya yang membantu kami memaparkan watak. Setiap watak yang kami paparkan sudah ditentukan sebelumnya di dalam ROM HD44780 IC. Kami akan belajar mengenai pengawal LCD IC HD44780, sebelum memaparkan watak pada LCD.
Pengawal LCD 16x2 Dot Matrix IC HD44780:
Untuk memaparkan watak khusus, kita harus memberitahu IC bagaimana watak watak itu akan kelihatan. Untuk melakukan itu, kita harus mengetahui tentang Tiga jenis Memori yang terdapat di dalam IC pengawal LCD HD44780:
ROM Penjana Karakter (CGROM): Ini adalah memori hanya baca yang, seperti yang dinyatakan sebelumnya, mengandungi semua corak watak yang telah ditentukan sebelumnya di dalamnya. ROM ini akan berbeza-beza dari setiap jenis IC Antaramuka, dan beberapa mungkin mempunyai beberapa watak khusus yang telah ditentukan dengannya.
RAM Data Paparan (DDRAM): Ini adalah memori akses rawak. Setiap kali kita menampilkan watak, coraknya akan diambil dari CGROM dan dipindahkan ke DDRAM dan kemudian akan diletakkan di layar. Sederhananya, DDRAM akan mempunyai corak semua watak yang sedang dipaparkan di Layar LCD. Dengan cara ini untuk setiap kitaran, IC tidak perlu mengambil data dari CGROM, dan membantu mendapatkan frekuensi kemas kini yang pendek
RAM penjana aksara (CGRAM): Ini juga memori akses Rawak, jadi kita dapat menulis dan membaca data darinya. Seperti namanya memori ini akan menjadi memori yang boleh digunakan untuk menghasilkan watak tersuai. Kita harus membentuk corak untuk watak tersebut dan menulisnya dalam CGRAM, corak ini dapat dibaca dan dipaparkan di Layar apabila diperlukan.
Sekarang, kerana kami mendapat pemahaman asas mengenai jenis-jenis Memori yang terdapat dalam IC antara muka HD44780. Mari kita perhatikan lembaran data untuk memahami sedikit lebih banyak.
Seperti, datasheet menyiratkan, HD44780 IC telah menyediakan 8 Lokasi untuk menyimpan corak tersuai kami di CGRAM, juga di sebelah kanan kita dapat melihat bahawa terdapat beberapa watak yang telah ditentukan yang juga dapat dipaparkan di Layar LCD kita. Mari kita lihat bagaimana kita boleh melakukannya.
Memaparkan Karakter Khusus pada LCD 16x2:
Untuk memaparkan watak tersuai, kita mesti terlebih dahulu menghasilkan corak untuknya dan kemudian menyimpannya ke CGRAM. Oleh kerana kita sudah mempunyai fungsi perpustakaan, kita boleh melakukannya dengan mudah dengan beberapa perintah mudah. Berikut adalah fungsi Perpustakaan untuk LCD, tetapi di sini kami telah menyalin semua fungsi Perpustakaan dalam program itu sendiri, jadi tidak perlu memasukkan fail tajuk ini dalam program kami. Lihat juga artikel ini untuk kerja LCD Asas dan Pinoutsnya.
Langkah pertama adalah menghasilkan corak atau watak tersuai. Seperti yang kita ketahui setiap watak adalah gabungan 5 * 8 titik. Kita harus memilih titik (piksel) mana yang harus tinggi dan mana yang harus tetap rendah. Cukup lukis kotak seperti di bawah dan lorekkan kawasan berdasarkan watak anda. Perwatakan saya di sini adalah seorang lelaki tongkat (harap kelihatan seperti itu). Setelah dilorek, tuliskan nilai binari yang setara bagi setiap bait seperti gambar di bawah.
Cukup letakkan '1' pada kawasan berlorek dan '0' pada kawasan yang tidak berlorek untuk setiap bait, dan itulah corak kebiasaan kami sudah siap. Begitu juga saya telah membuat 8 kod corak tersuai untuk 8 ruang memori kami yang menghadirkannya CGROM. Mereka disenaraikan dalam jadual di bawah.
S.NO: |
Perwatakan Tersuai |
Kod Corak |
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.
Pengaturcaraan dan Penjelasan Kerja:
Sekarang kod corak kami sudah siap, kami hanya perlu memuatkannya ke CGRAM LCD dan memaparkannya menggunakan mikrokontroler PIC. Untuk memuatkannya ke CGRAM kita dapat membentuk susunan elemen 5 * 8 dan memuatkan setiap bait dengan menggunakan ' untuk gelung '. Susunan kod corak ditunjukkan di bawah:
const unsigned short Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // Kod untuk ruang memori CGRAM 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b10001,0b01110,0b00 Ruang memori CGRAM 2 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // Kod untuk ruang memori CGRAM 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b11111,0b00000, // Kod untuk memori C Code untuk // ruang 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // Kod untuk ruang memori CGRAM 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00000, // Kod untuk ruang memori CGRAM 6 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // Kod untuk ruang memori CGRAM 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11111 // Kod untuk ruang memori CGRAM 8};
Setiap ruang memori dimuatkan dengan corak watak yang dihormati. Untuk memuatkan corak ini ke dalam HD44780 IC, lembar data HD44780 harus dirujuk, tetapi hanya baris perintah yang dapat digunakan untuk menetapkan alamat CGRAM
// *** Muatkan char khas ke CGROM *** ////// Lcd_Cmd (0x04); // Tetapkan Alamat CGRAM Lcd_Cmd (0x00); //.. tetapkan Alamat CGRAM untuk (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // Kembali ke Rumah Lcd_Cmd (2); //.. kembali ke Rumah // *** Memuatkan char khusus selesai *** //////
Di sini, di dalam ' untuk gelung' setiap nilai binari dimuat ke dalam CGROM. Setelah corak dimuat, watak khusus dapat dibuat untuk ditampilkan dengan hanya memanggil lokasi corak menggunakan fungsi Lcd_Print_Char (data char) yang kosong seperti ditunjukkan di bawah.
Lcd_Print_Char (0); // Paparkan Karakter Tersuai 0 Lcd_Print_Char (1); // Paparkan Karakter Tersuai 1 Lcd_Print_Char (2); // Paparkan Karakter Tersuai 2 Lcd_Print_Char (3); // Paparkan Karakter Tersuai 3 Lcd_Print_Char (4); // Paparkan Karakter Tersuai 4 Lcd_Print_Char (5); // Paparkan Karakter Tersuai 5 Lcd_Print_Char (6); // Paparkan Karakter Tersuai 6 Lcd_Print_Char (7); // Paparkan Karakter Tersuai 7
Cetak Watak Khas yang Ditentukan:
IC HD44780 mempunyai beberapa watak khas yang telah ditentukan yang disimpan di DDROM. Watak-watak ini dapat dicetak secara langsung ke layar dengan merujuk pada nilai binernya dalam lembar data.
Contohnya: Nilai perduaan watak "ALPHA" ialah 0b11100000. Cara mendapatkannya dapat difahami dari gambar di bawah, anda juga dapat memperoleh nilai untuk setiap watak khas yang telah ditentukan sebelumnya dalam IC.
Setelah nilai binari diketahui, watak yang sesuai dapat dicetak ke layar dengan hanya menggunakan fungsi Lcd_Print_Char (data char) yang tidak sah seperti yang ditunjukkan di bawah, Lcd_Print_Char (0b11100000); // nilai binari alpha dari lembaran data
The kod lengkap projek ini adalah seperti berikut dalam seksyen Kod, semak terperinci Video penjelasan pada akhir tutorial ini.
Sambungan dan Ujian Litar:
Projek ini tidak mempunyai keperluan perkakasan tambahan, kami hanya menggunakan sambungan yang sama dari tutorial antara muka LCD sebelumnya dan menggunakan papan yang sama yang telah kami buat dalam Tutorial berkedip LED. Seperti biasa mari kita mensimulasikan program menggunakan Proteus untuk mengesahkan output kita.
Setelah simulasi berjalan seperti yang diharapkan, mari langsung memasukkan kod ke dalam susunan Perkakasan kami. The output program ini harus menjadi sesuatu seperti ini:
Oleh itu, anda boleh Memaparkan Karakter Tersuai pada LCD 16x2 menggunakan PIC Microcontroller dengan MPLABX dan penyusun XC8. Lihat juga Siri Pembelajaran Mikrokontroler PIC kami yang lengkap di sini.