Electronic – Custom LCD glass with ST7066: Can it display 8×8 characters

character-lcdlcd

I'm redesigning a product that has a custom LCD glass with a rather strange organization. It uses 22 segments with 14 commons. It's a little bit like the display in the picture below:

enter image description here

Since this is a cost critical product, I'm looking at the extremely common ST7066 LCD controller, which is used to drive alpanumeric LCD displays.

My approach would be to run the ST7066 in two-line mode (16 commons, 1/16 bias) and configure the first four characters of each line to be custom characters. I would use the 64 x 8-bit character generator RAM to define the patterns for those characters thus allowing me to lit up the segments individually as I please.

Now here comes the tricky part: I need 22 segments to control individually. And we're temptingly close with the 8 programmable characters. I need 14 commons, so I must set up the controller into 2-line mode. So I have 4 characters per line. If the characters are 5 pixels wide, that gives 5 x 4 = 20 segments, just short of 22. However, the CGRAM has 8×8 bits per character.

So the question is can the ST7066 / KS0066 / SED1278 be configured to actually display 8×8 characters? Or are the "extra" bits in the CGRAM just don't cares in any configuration? With 8 pixel wide characters, I would have 32 freely controllable segments and I would be home free.

Finally, do you think this approach is viable at all? The segments in the display have hugely different sizes. Does it affect the drive capability of the controller; would larger icons have worse contrast than the small ones? Also, the ST7066 drives 40 segments; since I only use 22, does that play a role in the contrast or the required panel bias voltage?

Best Answer

In your proposed scheme you would need to be aware that each position of the DDRAM represents 8 x 5 pixels for a normal display. When you program a pattern into the CGRAM only 5 bits in each byte are used. Look at the Table 5 of the data sheet and you can see this - CGRAM Data b7, b6 and b5 are not used.

If you program the DDRAM with a constant pattern of 00 - 01 - 02 and 03 in the first row of the display and 04 - 05 - 06 and 07 in the second row then you can control a total of 8 x 5 x 8 = 320 total pixels on the screen. You'll get support for the 2 rows x 8 = 16 commons. In addition since only the first four character positions of the DDRAM are used by this scheme you get a total of 4 x 5 = 20 segments. This does not match up with the requirements of your display.

So if your display really does look similar to the one pictured I would venture to guess that you have another option to be able use more of the segments of the St7066 than the first 20. You may very well find that the various 7 segment displays are arranged in the panels scan matrix in a way that you you can use additional segments of the display controller to select various of the 7-segment sites. With a bit luck you may find bit patterns in one of the normal CGROM fonts that can be used select the patterns of the seven segment sections. By selecting the codes that you would write to the DDRAM you could maybe get the 0->9 + blank of each site to give the needed display combinations. This would take some work to see what the possibilities are.

If the scheme I outlined above does not work out then your choice would be to look instead at a graphics display controller chip. These offer a RAM bit for every intersection of the COMMONs and SEGMENTs matrix.