Cara non-standar untuk mengontrol tampilan pada pengontrol HD44780 untuk rendering font Rusia dengan tabel kode tampilan sendiri.
Ide kontrol semacam itu lahir dari tugas Russification sebuah perangkat dengan tampilan khusus berdasarkan pengontrol HD44780. Setelah mempertimbangkan opsi untuk mengganti karakter Rusia dengan karakter Latin yang serupa, saya memutuskan untuk tidak mengacaukannya, karena terlihat tidak dapat dipasarkan, dan perangkat ini bersifat komersial.
Tidak seperti tampilan OLED yang didasarkan pada driver Winstar WS0010, tampilan pada driver HD44780 atau yang setara tidak memiliki mode operasi grafis. Tetapi mereka memiliki apa yang disebut memori CGRAM, di mana Anda dapat menulis hingga 8 karakter dalam representasi grafis.
Algoritme itu sendiri cukup sederhana:
- Kami memulai rendering timer pada frekuensi interupsi yang dapat diterima untuk beban prosesor.
- Dalam interupsi waktu:
- hapus (isi dengan spasi) semua yang ada di layar;
- memuat informasi grafis yang diperlukan ke dalam 8 keakraban pertama dari memori CGRAM controller;
- kami menampilkan karakter ini pada tampilan pada offset yang diberikan dan keluar dari interupsi.
Kode tersebut terlihat seperti ini: Dalam hal ini, sangat penting untuk mengonfigurasi kontrol layar dengan benar, dan menggunakan waktu pertukaran dekat dengan minimum, serta, jika mungkin, antarmuka 8-bit ke tampilan (meskipun menurut tes, 4-bit tidak terlalu banyak memuat pengontrol). Juga perlu menggunakan pembacaan sinyal SIBUK pada garis D7 dari layar untuk mengurangi waktu tunggu untuk tanggapannya.
Tampilannya pada tampilan nyata dapat dilihat dalam video di bawah ini:
Baris teratas dikendalikan oleh metode redraw cepat dan menampilkan informasi dari CGRAM. Baris berisi karakter yang diambil secara grafis dari tabel kode CP866 dengan kode 0x80-0xFF, pseudografi digantikan oleh belah ketupat catur. Pada intinya adalah simbol generator karakter built-in dari tampilan dan di samping kode mereka.
Kerugian dari metode ini:
Pada kecepatan refresh di bawah 25Hz, kedipan terlihat di layar saat dilihat dari sudut tertentu, dan ketika melihat langsung, itu tidak terlihat secara vertikal.
Juga, kontras gambar dari tampilan turun sedikit, tetapi ini hampir tidak terlihat.