Jump to content

Newbie with 20X4 LCD Screen & LaunchPad

Recommended Posts

Hey everyone,


I yet again require your friendly and expert advice  :smile:


I have a 20x4 LCD screen that I want to 'READ' values from. The LCD Screen is from the famous, Kill-A-Watt and I want to read values out from the LCD screen (picture attached) and display them via my Launchpad on the serial port.


I am trying to look for tutorials which I can use to connect such a LCD screen to a launchpad, sadly I have not gotten anything solid. 


I hope I can get some aid tonight on this forum, thanks guys! :smile:


Link to post
Share on other sites

If it's a standard HD44780 lcd screen, data is read by the LCD MCU on low on the enable pin, you'll have to read the other pins when enable goes low and interpret that data.

You'll have to find if it's working in 4 or 8 bits mode.

Then recognize the cursor moves/clear/write to memory.


That's the first time I see this sort of project but it's quite interesting, this could work with 7 segment displays too to add some serial output to appliances.

Link to post
Share on other sites

Sadly, it's not something as simple as reading a few DIO lines and decoding them.


I happen to have a Kill-A-Watt that's already in pieces, and it's easy to see that it's a highly cost optimized device (it even has a single sided PCB).  There are three pieces of silicon on the board, a four channel opamp, a small EEPROM, and a chip on board MCU (one of those dreaded epoxy glob jobs).  This means that all the measurement and display logic is done by a proprietary device.  It essentially takes in analog signals, and outputs the results straight to the LCD.


Now, the LCD in this isn't the normal serial LCD that most of us are familiar with getting off of SparkFun.  Those are nice and take simple UART commands, and control the actual driving of the segments for you.  On many embedded devices, the LCD segment driver is built into the MCU itself, with no UART lines to probe for reverse engineering.  The MSP430 has these embedded LCD drivers in some of the larger devices.  The low cost driver less LCDs also don't just take a DIO line, they need charge pumps.  I'm not an expert on this topic (I just connect the thing and it works) but the LCD driver will output an AC voltage that then polarizes the segments in the LCD to turn them dark. More info on how the 430 does it can be gleaned from here: http://www.ti.com/lit/an/slaa272/slaa272.pdf


In addition to this, these drive lines are also usually muxed.  So you would have to work out which ones are the COMM lines, and which ones are the segment drive lines.  Then you could potentially convert them to DC with a filter, and then into an MCU to decode. It's tough, but doable.


Your other alternative is to build your own version rather than hack onto the Kill A Watt.  This lets you develop a more extensible platform, as well as use more TI devices :)

Quick warning and disclaimer: working with mains voltage is super dangerous, and probably shouldn't' be done by anyone.


TI already has a bunch of application notes on this, but a good place to start if you might be thinking about doing this on a launchpad is this one: http://www.ti.com/lit/an/slaa391/slaa391.pdf

And the energy watchdog (the TI version of the Kill-A-Watt that sadly isn't available anymore) has schematics in the users guide that can be a great starting point: http://www.ti.com/lit/ug/slau362/slau362.pdf


Hope your project goes well!

Link to post
Share on other sites

First, I'm not sure wha you mean by reading values from an LCD, as an LCD is an output device. You'd normally only write values to it.


Second. If you say it's a 20x4 LCD, you means it is 20 7-segment charcters per line, 4 lines high? Because as far as I can see it's a 4 7-segment digit display with an additional 12 indicators (W, KWH, Volt, Amp, Clock, Meter, etc)

It could just be that this is a "bare" LCD; no controller in the display at all. LCD elements are basically capacitors, you charge them to set a segment to black and discharge them to set them back to white/gray. Just like a multi digit LED display, a LCD display can be multiplexed. Say the numbers are 8 segments (7 + digit point), then there are 4 * 8 + 12 segments, split those 12 into two groups of <8 segments and you get 6 * 8 segments. You'd need 6 + 8 drive lines to control all LCD segments, which is 14. Since there are 20 lines there are enough I/O available for such a solution. But since there are 20 lines the arrangement is probably a bit different.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...