I have been experimenting with various sensors recently, and one common functionality I have needed with all of them is the ability to see the data being measured.

Thus, I am considering attaching a very inexpensive, compact LCD to each of my projects permanently from now on.

I have decided to use a basic, very compact display like the one pictured below (but no special custom symbols or backlight or anything; just a basic glass display with 4X1 digits or so).


My question is:

What are my most direct options to interface one of these LCDs/glass-panels to a microcontroller, in my case an Arduino/Atmega328? By "direct", I mean inexpensive and compact.

For example, should I:

  • use an in-between IC that can control the LCD's pins? If so, what is such an IC called, so that I can search for it?

  • use shift-registers so that I can directly connect my microcontroller pins to all the segments that the display has?

  • use some other, more direct method?

I am asking for some perspective because I am guessing there is just one or two standard/popular ways of interfacing with them, since these LCDs are found nearly everywhere, in lots of very cheap electronics, and have obviously been around for a very long time.


1 Answer 1


Your low-cost option at hobby quantities would be a serially interfaced numeric LCD part such as the ModuleHouse KTM-S1201 12-digit display, available for under $1 in single quantities.

This particular device is popular especially among RC DIY hobbyists. It consists of the actual LCD panel (datasheet) driven by an integrated NEC µPD7225 programmable LCD controller (datasheet) (updated application note).

There are some handy notes on how to interface with the device here.

Libraries to control this device have been posted, including one written in C here.

Besides displaying the hexadecimal digit set (0-9 a-f), 7-segment displays can be used to display, albeit crudely, several other letters and symbols. This particular device can be set to an individual segment addressing mode if you want to display characters additional to the hexadecimal digit set. For instance, look at the left half of the image below:

Character set available on 7-segment and 14-segment displays

There are also 7-segment based serially controlled LED displays such as this one on SparkFun, if you prefer.

To address the bullet points in your question:

  • Driving an LCD display involves multiplexing, contrast management and character set translation, hence, yes, typically an LCD display driver IC is used for this purpose. The µPD7225 is one such IC.
  • Shift registers are an acceptable method for driving 7-segment LED displays, but not so advisable for LCDs
  • The more direct method of using a serially controlled display product, as described above, works out most cost and effort effective, compared to fudging around with various ICs and passive parts to get to a simple solution.
  • There are several microcontrollers which are designed to drive LCD panels directly. For instance, the Texas Instruments MSP430x4xx family. Cost and effort are higher than for the ModuleHouse part, but if you are keen to experiment, that may be an avenue to follow.

I hope this addresses your question sufficiently.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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