HD44780-based LCDs can display the ASCII character set, i.e. Latin characters, Arabic numerals, some symbols and, depending on the particular model, some Japanese katakana or more accented Latin letters.
Additionally, the chipset found in most alphanumeric LCDs supports up to eight custom characters that can be displayed alongside regular symbols. I will abuse these to display some Chinese/Japanese characters to display the time.
The characters I will need:
- The numerals from zero to ten:
零一二三四五六七八九十
Thankfully, there is a much simpler character for zero, which I will use: 〇
Why to ten, you ask? In Chinese/Japanese, numbers ≤20 are displayed in the format:
tens * ten + ones, e.g.
23 = 20 * 10 + 3 = 二十三
- The symbols for "hour" and "minute":
時 and 分
China uses the simplified version for "hour", 时, which should be easier to display. The full time (23:59 in this example) is thus rendered as follows:
二十三时五十九分 2*10+3<hr>5*10+9<min>
Most of these characters can be represented in just 5x5 pixels and can be read just fine. Some, however, have too many strokes, which makes it more challenging:
- 四 (four) has four parallel vertical strokes, with three spaces inbetween, which needs at least seven pixels horizontally to display properly. It's sort of possible to display it in 5x5, but it's just ugly.
- 时 has the same problem.
- 分 might just fit, but I haven't found a nice way of doing this.
Now, the displays offers me 5x7 pixels for each character. The solution: rotate the display by 90º and BOOM! Now you have 7x5 pixels, wide enough for all our characters.
Bonus: Chinese/Japanese can also be read from top to bottom, so my displayed time becomes this:
二 十 三 时 五 十 九 分
Here is the font I developed, together with an example:
Now, on to find a nice 1x8 LCD to build this thing!