Here is my font for 20x4 LCD displays. Far better than posted in the link above.
![]()
Here is my font for 20x4 LCD displays. Far better than posted in the link above.
![]()
Really nice job on the big numbers.
What is the difference between parallel - serial LCD? Other than electrical connections and some specific commands? Have not used serial so far but I guess behind the serial driver everything else is the same.
Ioannis
Thanks. I have experience of making pseudographics (so called ASCII art) since early 80s. That set of characters also can be used to display most latin alphabet letters, except some. Regarding the LCD, I have no idea, but above example uses serial LCD and I don't see any PBP manual entries for serial LCD.
I counted 8 custom characters and a full block(possibly from the existing character set). Is that correct?
Enumerating,
Full rounded top left corner,
Full rounded top right corner
Full rounded bot left corner
Full rounded bot right corner
bottom line
top line
half rounded top left corner
half rounded top right corner
and
the full block
Yes, there are 8 custom characters and char #255 - Full block is used.
Here's 2x2 font for 1602 OLED (Here you can write bytes directly, not limited by 8 custom chars).
![]()
Wanted to store above font in EEPROM. each character takes 2x13 bytes. so 260 byte of memory are needed, but most chips have only 256 bytes of eeprom available.
I come up with run length encoding compression idea. Since there are only 5 bits used, can use remaining 3 as a counter, showing how many times current pattern should be repeated. This gives ability to repeat up to 8 positions
Say for character 4 (top left part), in "normal" mode, bit pattern looks like this: %11000. But if we add %110 to end of it, so it now looks like %11000110, decoder software will know that it have to repeat that pattern 6 times.
So code for reading and decoding char to appropriate DDRAM or whatever it is called, should work like this:
1. Set pointer address from which the bitmap should be read.
2. Read it, if 3 last bits<>0 then separate it, and do the loop, writing the code of first 5 bits, repeating them times specified in these 3 bits.
3. Continue reading of bitmap as needed.
But I have issue with statement for dividing bit variable into two. Say I have %10101010. How should I divide it into two variables, one which has 5 bits from left, and another having 3 bits from right?
Just did a rough estimation - the above idea should save 30-40% of EEPROM space. Not bad.
Bookmarks