4
\$\begingroup\$

The Hitachi HD44780 LCD controller is an extremely common character-mode LCD controller. Though I believe it is now discontinued, compatible controllers are used in many hobbyist and commercial grade LCD displays that are very widely and cheaply available. Interfacing instructions are also widely available.

I would like to know what an equivalent controller might be for graphical LCD displays, such as a 128x64 pixel display. Something widely and cheaply available to the hobbyist, that is reasonable to interface with from a MCU, either parallel or serial.

Possibilities include the KS0108 (parallel) and ST7565 (serial), but neither seem to be as popular as the HD44780.

\$\endgroup\$
1
  • \$\begingroup\$ For small displays like this, crystalfontz.com is a great resource. \$\endgroup\$ Commented Jun 28, 2011 at 19:58

6 Answers 6

2
\$\begingroup\$

The SED controllers and the KS controllers are the most common graphical LCD controllers. For smaller LCD sizes they often include the drivers, memory, and controller, so a single chip can do everything. They are popular enough that they are being cloned by other manufacturers, so the command sets for some chips very closely relate to one of these two.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ By "KS controller" do you mean the KS0108? What do you mean by the "SED controller"? \$\endgroup\$
    – Mark
    Commented Jun 28, 2011 at 19:22
  • \$\begingroup\$ @Mark Seiko Epson used to produce controllers that started with SED, such as the SED1520. It appears they are now producing controllers with the S1D prefix and the SED controllers are falling out of favor. Samsung produced the various KS series of display controllers, but they too have moved on to another prefix - S6D. Many LCDs, however, still use the older SED series and KS series or equivalent controllers. \$\endgroup\$
    – Adam Davis
    Commented Jun 28, 2011 at 19:39
4
\$\begingroup\$

The wonderful thing about standards is that there are so many of them.

The closest thing to a standard is, unfortunately, for LCD panels that have controllers but no drivers. IIRC, a typical interface will have signals for phase polarity, frame clock, line clock, data clock and 4 data bits. Every line of pixels one should clock in enough groups of four pixels to fill the width of the display (extra bits will be ignored), driving the data clock high and low for each group. The drive the line clock high and low to strobe the line. The first line of each frame should have the frame clock high, and the phase polarity signal should toggle every frame.

The line clock signals, and those derived from them, must be sent at a uniform rate. The precise timing of the data clock signals, however, doesn't matter provided that all the clocks happen for a line happen within the proper window. If you don't have DMA, it may be possible to keep a small display happy and still have time to do something else, but refreshing the display will be a pain. If you do have DMA, however, and can manage a small CPLD to handle a few aspects of the timing, implementing the display that way may be very rewarding. I've done a display panel like that and achieved display-update performance superior to anything I could have done with a conventional display controller. I even achieved 4-level gray-scale by running the display at 100 frames/second and, every three frames, driving the display twice using one buffer and once with another.

\$\endgroup\$
3
\$\begingroup\$

For character LCDs the HD44780 (or one of its equivalents) is everywhere.

For graphic LCDs there are lots of chips. For small screens (older cell phones) there are a lot of Philips/NXP chips with I2C interface. They are often used as SOG (silicon on glass) integrated with the LCD. The interface is often a flex cable or a zebra strip. Not very hobbyist friendly, but very cheap in mass production.

For 128x64 displays the KS0108 is common. Slighly larger displays can have for instance a SED or a T6963 controller. There must be many others I don't know.

Recent microcontrollers can have an integrated GLCD controller, so they can use controller-less LCD. Those are cheaper, and the screen updates can be faster.

=============================

(added 2016-06-24)

For a small and simple BW display the Nokia 5510 (or is it 5110?) style 84*48 pixel displays are very cheap, but the quality is often bad, and there seem to be at least 2 versions of the controller.

\$\endgroup\$
2
\$\begingroup\$

A common upgrade to the HD44780 I've seen is the ST7920. This display controller will drive a 128x64 monochrome LCD. (It's frequently sold as a "12864 LCD" module, with a pinout compatible with typical HD44780 displays.)

By default, it uses a built-in 16x8 ASCII font -- yielding a 16x4 text display with extremely large, clear letters -- and can be controlled using a HD44780-compatible command set. In this mode, it is largely a drop-in replacement for a HD44780 display. However, it adds a number of new features:

  1. It can be driven using a SPI-compatible mode, as well as the standard 8-bit and 4-bit parallel modes. The command set is identical in all modes.

  2. Along with the aforementioned 16x8 ASCII font, it also contains a sizable 16x16 Chinese font, which can be accessed by writing high-ASCII pairs to the display (compatible with either GB or Big5 encoding, depending on the model). While most of these characters are only useful to Chinese users, there are a number of general-purpose characters and symbols available.

  3. It contains a number of "extended" commands which can be accessed using encodings that are unused by the HD44780. Among these is a command to place the display into a graphical mode, at which point you can write a bitmap directly to the display.

\$\endgroup\$
1
\$\begingroup\$

I found this BV4512 controller via Google. It looks to be reasonably easy to control via I2C.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ The BV4512 is an I2C adapter for KS0108 LCDs. In this case, it's the KS0108 that I'm interested in. It is indeed available, but nowhere near as ubiquitous as the HD44780. \$\endgroup\$
    – Mark
    Commented Apr 8, 2011 at 19:08
1
\$\begingroup\$

If you're interested in using an HD44780 display, I have a short PIC18 hd44780 tutorial here.

As for a graphic LCD, check out this Graphic 128x64 LCD at SparkFun: http://www.sparkfun.com/products/710. It seems to be pretty popular and uses the KS0108B parallel interface.

\$\endgroup\$
1
  • \$\begingroup\$ Yeah, it looks like the KS0108 is the common one. \$\endgroup\$
    – Mark
    Commented Apr 18, 2011 at 17:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.