LCD won't work on PCB, works fine on breadboard


I have a circuit that I designed for midi application. I have the LCD and switch portions breadboarded and everything is working fine. I etched a PCB and built the entire circuit and now I can't get the LCD to show anything but boxes on the top row.

I have a feeling that something withing the rest of the circuit is causing this problem. I would be greatly appreciative if someone could look over the circuit and see if anything jumps out at them as wrong. Also, I have not inserted any of the IC's yet, so the only thing hooked up is the LCD and the Arduino

Some of the traces are not shown connecting to the LCD and switches in the schematic, but they do on the PCB. I left them short of connecting because I used headers there instead of having the LCD and buttons directly on the board. I hope that doesn't cause any confusion.

OK, I will revise the name. Thanks for the reply by the way. Yes the breadboard still works and they are exactly the same as far as pinouts and the like. I don't know what else it may be except that the Arduino is being powered from the PCB in the board version and from the USB in the bread board version.

I see +5 scattered around everywhere, but your power supply is confusing to me

its listed as using a 7812, which is a 12v regulator, and if you want 12v coming out of it your going to need more than 12 going into it

then out of nowhere the output of the 7812 goes into a header block and comes back out as +5, how does that work?


… and now I can’t get the LCD to show anything but boxes on the top row …

This is the symptom of an LCD that has power and contrast connected properly but has not been initialized correctly. This would normally lead me to suspect that at least one of the seven other connections (RS, RW, E, D4, D5, D6, D7) to the LCD is not correct.

There is another possibility since the power supply has changed. You haven’t mentioned what LCD software you are using. Most library code prior to the LiquidCrystal library in Arduino v0017 did not use the recommended initialization code. Those libraries might work correctly with one power supply and not with another. Check out the LCD Initialization link at for more information about this problem.


then out of nowhere the output of the 7812 goes into a header block and comes back out as +5, how does that work?

I see what he is doing. He is feeding the 12V into the vin pin on the arduino so that it goes through the on board voltage regulator then back out the 5v pin to power everything else.

First of all, That's putting a lot of draw on the arduino's regulator. Second, as osgeld said, You need to put more than 12v into the 7812 to get 12v out of it. I believe you would need to supply at least 14v to get 12v out.?.? Does that sound right?

One thing I noticed, you have 12v supplying the LED driver, but I don't see where it is being used. :-/

Ok yea i guess going to vin and back out the arduino regulator makes since, but yea you still need more than 12v, 14 sounds about right without looking

Hey guys, thanks for taking time to look this over. yes, I am feeding it with 14-15 volts and getting 11.92 volts after the regulator and then going to the Vin. I will add a 5 volt regulator to power all of the IC's, but right now all it is powering is the LCD backlight and the LCD which is working fine on the breadboard.

I am using the latest 4 bit LCD (LiquidCrystal) library that comes with 0017 for parallel lcd displays. Is it a possibility that it is not initializing because of where the power is coming from then?

Like I said before the ONLY difference is the power supply as far as I can tell.

Thanks J

Interesting problem you have there - it's the same problem I have this morning with a new PCB board. I can take the same m168 chip from an arduino, to a breadboard setup, and to a new PCB board I etched last night. The LCD works just fine in the Arduino, in the breadboard, but in the PCB board it only shows boxes on the top row.

This is with a 16x2 LCD. I wired the breadboard per the PCB board. I have used this same PCB board in a couple other setups with great results - just this time all I'm getting is the square boxes on top row.

I'm going over the PCB tonight to check for cold solder joints - could you problem be cold solder joint?

The arduino is powered from USB port, both breadboard and PCB board are powered from a LM7805 voltage regulator added to each board.

I am using the LCD library in 0017 in all cases.

Good luck!! We all know how electronics work - FM!! (Freaking Magic:)

Ken H>

jman31 and Ken H:

Do you have bypass capacitors on all (any) of your ICs?


Yep, I just got it. Turns out I wasn't getting a good ground connection on pin 5! I can't believe I missed that. I assumed I had a good connection because the solder joint looked good. I'm just glad I got it figured out. Sometimes it's the little things that get you the worst!

Thanks all of you for your time! and sorry for my stupidity!


Yep, I have bypass caps (.01uF) on the PCB, not on the breadboard. breadboard works fine, but PCB doesn't work.

[edit]correction: do NOT have caps on PCB - just checked and only have a ferrite bead to Vcc pin[/edit] I'll be checking solder joints now - just got home.

Isn't this a GREAT site?

Ken H>

Interesting - Remember how the pin 16 on the LCD goes to ground thru a resistor to set the backlight brightness? I had it shorted direct to ground since I was using a LCD with no backlight. Remember, it didn't work - only the top row of squares would light, but no text is displayed.

I changed to a 8X2 LCD that has both rows on the same row making it look like a single row 16X1 LCD - it has a backlight. It works, but with no resistor draws a LOT of current (500mA). I put a 11 ohm resistor and the back light looks ok, AND the display now works displaying the correct text as it should. The 16X2 LCD with no backlight still does not work.

I checked a 20X4 LCD - didn't work either, BUT I think I might have found the problem. I thought I had put caps on the PCB, but did not - it was a ferrite bead I put on the 5vdc power line to Vcc pin. On the scope the 16mhz signal looks clean, until I connect the 20X4 display - then the trace gets fuzzy looking.

My next step is to find some caps to see if that will help clean up the signal. [edit]I just added .01 caps at pin #7 and pin 21. Now all LCD displays work just like they should be working. Interesting the LCDs worked on breadboard without caps, but not on PCB. [/edit] Ken H.