Instructables
Picture of Beginning LCDs
NOTE: I finally got my camera figured out so there should only be 1 or 2 blurry images. On with the Instructable!


LCDs are one of the coolest things to add to any project right now. You can use them to display things from the speed of your bike, to the amount of room being used up on your RAM. This Instructable will give you a general description on how LCDs work, and how to get started using them. The information provided here will give you enough information to even develop control circuits on any Microcontroller. LCDs are a lot simpler than you think!
 
Remove these adsRemove these ads by Signing Up

Step 1: How They Work

Picture of How They Work
Most LCDs have a HD44780 LCD driver in them. The HD44780 is the most common LCD driver and is very easy to connect to. A LCD with this driver typically has 14 or 16 pin, with the first being ground and the second being 5V+. This is the only LCD type I will cover today being it is so common. Very common. LCDs of this type are parallel devices. That means that 8 bits of data are sent side by side (or parallel to each other) instead of in line. This is also the way parallel printer ports work which is why it such a popular decision to connect a LCD to a parallel port. Data is sent to LCD screens in a kind of 8-bit Binary ASCII code. For example: 01000001 translates to a capital a. 01000001=A. There are special symbols too like: 11110100=the Pi sign. In the instance of HD44780 driven LCDs, the first bit of data is the 14th pin and the last bit of data is the 7th pin. Unless you haven't figured it out already, this means that building a test rig, or interfacing to a microcontroller would be very simple.

Step 2: Building a Test Rig

LCDparts1.jpg
LCDcomponents2.jpg
Based on the previous information, I will show you how to make a very simple manual LCD test rig that allows you to enter text and symbols which in turn teaches you exactly how they work. Below is the schematic. The jumpers (switches 1-8) have pull-up resistors so that a missing jumpers gives a logic 1 or high.

Parts:

printed circuit board with individual contacts
10 4.7k resistors
14 wire ribbon cable
any wire to use for wire jumpers
10k potentiometer
pushbutton momentary switch
2x8 jumper assembly (an eight switch DIP switch would be better. I recommend that actually)
8 jumpers
SPST switch
1 wire for power and 1 for ground to your LCD
LM7805 5v DC regulator (or other 5v regulator)
2 small alligator clips
9V battery clip
9V battery

Optional if you have an LCD wired to a male parallel port:

female parallel port

Tools:

Soldering iron
Solder
Electrical tape
Nippers
Wire strippers
Helping hand (optional but very useful)

Step 4: Add the Switches

There are 2 switches in this testing circuit. The first is a SPST switch connected to the Register Select line of the LCD. This switch is used to tell the LCD whether you are sending a command or a character signal. The second is a momentary switch connected to the Enable line. This switch is used tell the LCD to accept the command. Both switches will have pull-up resistors.

Step 5: Resistors

Picture of Resistors
Each jumper and each switch has a 4.7k pull-up resistor. This is so that any closed circuit through a jumper or switch generates a logic 0 (or low). leave a space between each switch/jumper and its resistor. This space is where you will put your ribbon cable connecting the LCD. One side of the line of resistors should be connected together. This will be the positive rail.

Step 6: Contrast and R/W

contrastbottom.jpg
contrastwire.jpg
On my LCD I have already wired it up for parallel connection, so the contrast adjustment is on the screen. If your LCD is not hooked up to anything, this potentiometer is here to adjust the contrast. I have no completely wired it as I have no use for it as of yet, but here is how it goes together. The slider pin should be connected to the wire that will go to pin 3 of the LCD. The other two ends should be connected to 5V+ and Ground. OH yeah, the potentiometer is 10k. The only reason I used a slide potentiometer is because I liked it. You can use a rotational one. Lastly, the R/W connection will be connected to ground, so ad a jumper wire from the ground rail for the pin 5 R/W line on the LCD.

Step 7: Power

Now for the power. LCDs of almost every kind run off five volts DC. for convenience, we will use a 9 volt battery. Solder the ground wire of the 9V battery clip to the ground rail by the jumpers, solder the positive wire a little distance away. Solder the left pin of the 5V regulator (input pin) to the positive wire from the battery clip. This should be the only connection to the positive battery clip wire. Solder a jumper wire from the middle pin of the regulator (ground) to the ground rail. Next solder a jumper wire from the right pin of the regulator (output) to the positive rail. Now it is time to build the alligator clips. solder one clip to the wire for positive and the other to the wire for ground. I mentioned these wires in the parts list. They have nothing to do with the battery clip. solder the positive wire to the positive rail and the ground wire to the ground rail. You will use these alligator clips to power the LCD screen. If you like you could send the power over the ribbon cable to the LCD. Pin 1 on the LCD is ground and pin 2 is Positive. Some LCDs have a 2x7 or 2x8 connection (depending on whether you have a 14 or 16 pin model). You can identify pin one simply since it its ground. It will generally have a thicker PCB trace and connect to the metalwork at some point.

Step 8: The Connector

Picture of The Connector
connectorbottom.jpg
Since my LCD is wired to a male parallel port connector, I had to connect my ribbon cable to a female parallel port connector. If you are wiring directly to the LCD, pin 14 will be connected to the first jumper and pin 3 to the contrast. Pin 1&2 will be connected to power. look at the schematic for details. The reason we made the whole thing backwards (if you look at the location of pin on on you LCD which is generally the left pin) was so that when we send signals, we are making them the right way around. Pin 7-14 on the LCD are actually what is backwards. If you want to connect your LCD to a parallel port, you will have to follow the below schematic for this. The schematic is a back view of a male parallel port connector. The connections from the tester to the female parallel port is a mirror image. Either way you connect your LCD, this part is necessary. That space between the resistors and the jumpers/switches is where you will connect the ribbon cable. Pin 14-7 connects to the jumper spaces, Pin 6 to the momentary switch space, and pin 4 to the SPST switch space. Pin 5 is connected to ground, and pin 3 is connected to the slider pin of the potentiometer. IMPORTANT: Those space must be filled in! the jumpers/switches and according ribbon cable wires and resistors should all be connected as one.

Step 9: Finished Test Rig

That's it! You got it built. Go on to the next step to learn how to use it.

Update 06/13/2008: I added some pictures of a miniature LCD tester that fits in an Altoids tin. This tester has no contrast control. I will simply solder contrast to ground during tests.

Step 10: Using the Test Rig

As I mentioned in step one, LCDs use a 8-bit ASCII code. To use this tester, first connect the LCD and then the power. Oh no it's broken! There's a bunch of black squares! Don't panic. Those square are supposed to be there, that means it's on. Those squares (technically rectangles but oh well) mean the LCD is on but not yet activated. To activate it we must send a signal that tells the LCD to turn on, give a cursor, and blink for good measure. How do we do that? Easy. First set the Register Select switch to Command mode (the switch is on/logic 1). This is so the LCD knows we are sending a command and not a letter(character mode). Now on the line of jumpers, any removed jumper represents a 1, and any connected jumper represents a 0. The code for what I described earlier is 00001111 (A full list of commands is below). So the first 4 jumpers should be connected. and the last 4 removed. Nothing happened. Nothing should have happened. You should still have black squares. Now you have to tell the LCD to accept the command. Sooo.... HIT THE BIG RED BUTTON!!! Okay, not really, but you can imagine. push the momentary switch. Hey, there's a cursor, now I want some letters. Alright, that's easy. switch the Register Select switch to character mode (the switch is off). Now will send the letter A in capital. The code for capital a (A) is 01000001. Move the jumpers accordingly and hit the button. Hey, Now there's a letter a. A full chart of letters and symbols is below. Play around a bit. The Upper bits are the left 4 jumpers and the lower bits are the right 4. When you fill up you screen, you will need to clear it. To do this, switch the tester to command mode and enter 00000001. This is the clear command. don't forget to hit the button! So now you have a simple controller for LCDs and abroader knowledge of LCDs. In the future, I may ad an update on making custom characters, but that's all for now. Hope this helped!
Attached are some videos of initializing, entering text, and clearing.

UPDATE 06/15/2008:
You might notice that several characters will pop up instead of one when the switch is pressed, to fix this, you need a Debounce circuit. This prevents this from happening by use of 2 NAND gates in a 74LS00 quad NAND gate and a SPDT switch. Below is the schematic.

As for the parallel port, try LCD Smartie. It is a great open source program with a lot of support and great forums. There is an attached video of me using it. The video opens with windows media player.




1-40 of 85Next »
mgingerich2 years ago
No need for a debounce circuit. A transistor and 100 ohm resistor did the trick for me. I connected the output pin of a microcontroller to the base, wired one gate to the LCD's enable pin, and put a 100 ohm resistor between the last pin and ground.
Oh, and by the way, nice instructable. You really helped me figure out my LCD
mazoo2 years ago
Hi could you please advise using the following on how to connect the lcd as per pics.?
thanks
this is a v5 shield which is supposed to handle this.

http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=150632164582&ssPageName=ADME:L:OC:US:1123

just not 100 percent sure on how to proceed!
Are you able to advise
thanks

100_0614.jpg100_0615.jpg
gimmelotsarobots (author)  mazoo2 years ago
There's an example picture of the hookup on that ebay page you posted,and example code on the manufacturer's website. The manufacturer's website says it uses I2C protocol (that's actually pronounced I squared C), which means addressing it should be pretty simple. There are plenty of tutorials across the internet in regards to I2C on the arduino.  Try starting off on adafruit's forum.
Thanks for your prompt input!

I had already tried the sketch from the mnfrs. site but get errors. The unit is connected correctly onto the board and I get a "blue lit' screen so that works. when you mention "addressing" should the original code registers ? this is the original code error.

I am fighting with this and have checked out all the I2C tuts...
much appreciated in advance any further input will be appreciated !
code error.bmp
(removed by author or community request)
Did that come out of a PSP? If it did, you can find some information about those at Sparkfun.com. PSP screens are odd, they have a 24-bit interface.
rahimkv4 years ago
how can i add bigger lcd to a mp3 modulators used in cars lighter socket? anybody has some idea?
KentaGrace4 years ago
My LCD has a backlight, but only 14 pins.  The model number isRT0802B, its got 8 characters per line, and 2 lines.
This is what the unit looks like on the bottom.  I'm not quite surehow the wiring is different on this one?  Can you help me out?

3tb_090911093920n0tc198818.jpg
gimmelotsarobots (author)  KentaGrace4 years ago
I have something similar.IF YOU ARE SURE that there is a backlight, try to find the power pins. I have some LCDs with seperate wires for the baclight. You will need a driver if it is the flourescent kind.
akatsuki6664 years ago
i <3 u!!!!!!!!!!!!!!i <3 u!!!!!!!!!!!!!!i <3 u!!!!!!!!!!!!!!i<3 u!!!!!!!!!!!!!!
Colonel884 years ago
That is so complicated O.o
gimmelotsarobots (author)  Colonel884 years ago
Wait until I publish my followup with graphic LCDs. Then eventually, color serial graphic LCDs. LCDs are a fundamental part of any electronic hobby.
macattackct4 years ago
How can i use a computer keyboard to type on an LCD display?
if you program it right
Yes, but how? what code, serial inputs...?
that i'm not sure ask
klee27x, he is an experienced PIC programmer
robot+more5 years ago
mine is off a couculater and hase 28
gimmelotsarobots (author)  robot+more5 years ago
Then it is just the LCD w/ no driver. Calculators have the LCD driver built into the main MCU.
Chewy19935 years ago
Anyone know how to connect the LCD that's in a kodak easyshare c330? I've had this piece of crap camera for years, and it's been sitting in a drawer for half that (new camera!) It's a color AU a015an03 screen. I was trying to convert the camera to only see near IR/ IR. I put in the wrong filter (don't use floppies, they turn out very red, and it's quality isn't great.). I went in again, to take it out/wait for later, and broke a ribbon cable -.- so i salvaged parts (capacitors, etc) and the screen was one of the parts i took. :D
a_d7775 years ago
Hey nice instructable... well, i am having some problem out here with my projects... i just entered into the world of LCD and discovered there are 2 types of 'em...i.e. Common cathode and common anode. which LCD is better and most widely used?? also ,i want to make a temp/humidity sensor using pic16f628a and a sensirion sensor that shows the data on an LCD...which LCD do i use(common cathode or anode??) ... if anyone has the compiled code+schematic for this project, plzzzz mail it to me! Thanks
gimmelotsarobots (author)  a_d7775 years ago
I think you're thinkin of LED displays, easy to mistype. If that is the case, common cathode is probably the easiest route. LED displays don't have much of a standard so determining the code would be tricky. VFDs also come in common anode or cathode. Those are a little easier and are sometimes similar in use to LCDs, just at a hight voltage (about 12-14 volts).
bman22 a_d7775 years ago
I'm sorry, but that didn't make much sense. common cathode and common anode sound like LED's to me. There are different kinds of lcd's (different controllers and interface types), but neither of those are them. Also, this has no code. It is for directly controlling the LCD. If you want code for controlling the lcd via a microcontroller, well, it depends on the kind of controller you are using.
Mario15 years ago
So pin 4 of the lcd display puts it in write mode right?
geoper25 years ago
when u r soldering in this board wats the best way to solder them together cause i tried like that and i saw that it needs much solder
l96470fps5 years ago
please could could you give me any tips or information on changing lcd's, eg. take green lcd from sky/ virgin media box and change it with the screen on a calculator?
gimmelotsarobots (author)  l96470fps5 years ago
Typically devices have their LCD drivers built in to the main board. The driver may or may not be the HD44780 or similar. In a calculator the LCD driver is always part of the main chip and I don't know how I could hack it unless it didn't have the black glob over it. The TI graphing calculator I took apart had a LCD with a HD44780 resembling chip in it but I accidenatly broke the chip off (ther is no board underneath the chip so when I touched it it fell through). Too bad though, it was a big LCD
bman225 years ago
i have a 3.3 volt lcd. do i still use the 4.7k resistors, or should i use something else.
gimmelotsarobots (author)  bman225 years ago
The 4.7k resistors are pull up resitors. That is, they keep the pins in a positive voltage. You should probably use a lower resistor value as 4.7k may be to high and not allow enough voltage through to pull up the pins.
can you recommend a value to try. I don't really have any resistors lying around, so I have to buy them. It would be nice to only have to buy what I need
8bit5 years ago
This will help a lot! Thanks!
median5 years ago
can someone please tell me where to buy a LCD screen? one that is used in this project
gimmelotsarobots (author)  median5 years ago
Any LCD with a HD44780 drive will work. Try HERE. That's where I go for cheap, high quantity surplus. They're my favorite supplier.
yeah i couldnt find that driver
gimmelotsarobots (author)  turtleshane5 years ago
pretty mush any LCD with 14-16 pins will have the HD44780 chipset. Or at least be compatible.
cool thanx then i know exactly which one to buy
turtleshane5 years ago
sooo i was thinkin bout making this thing like a texting device, the general idea would be to send the binary code to another rigs lcd (rig being this lcd project)
would these work http://parallax.com/Store/Accessories/Communication/tabid/161/CategoryID/36/List/0/Level/a/ProductID/111/Default.aspx?SortField=ProductName%2cProductName yeah the link long but i think it could work but im a little confused how

gimmelotsarobots (author)  turtleshane5 years ago
Well, it may work if you have a couple of serial LCDs and some MCUs to encode and translate keystrokes.
ok i was just thinkin the other day that it would be cool to have a texting system in school in my locker and some of my friends but then i thought bout putting the texting system in an altoids tin to make a portable texting walkie talkie type them just im not 100% sure on how to do it. i think it will be a experiment until u succeed type of deal
ilias5 years ago
R U using a 4 pin momentary button? And something off topic... can someone explain me how can i use a photocell in a 9v circuit? please help.
1-40 of 85Next »