Which one of these modes is the best for get noise immunity when driving a LCD Display 16x02? (or 16x04 etc.)

-I2C module using PCF8574 I/O expansion.

-8 bit Parallel

-4 bit Parallel

I had a PCB which drives an LCD Display 16x02 and drives 4 dc motors (80mA each - no load). When a used to use this pcb I got some problems with noise from the motors and sometimes I got strange characters printed by LCD. I used to use Parallel 4 bit mode. But now I'm designing a new PCB which will drive 4 motors with H-Bridge and 1 LCD Display 16x02 and will have 2 UART and 1 I2C communications using a PIC16F1947 MCU.

I'm going to be sure for have a great ground plane on my PCB (4 layers) and I'm going to increase noise protection too.

Should I still using 4 bit Parallel mode and do something to decrease the noise? Should I change for 8 bit Parallel mode? or Doesn't it make sense? Should I change to use I2C module? I know I2C is for communications between ICs in the same PCB but I think Could be better because 2 wires is less than 8 wires so Could be more difficult to get noise using i2c mode.

The distance between the pcb and the LCD Display is like 20 cm. Should I do somethings on the cables? Like Twist the cables?

I think could be good for all of us know the safest way to drive an LCD Display.

Sorry for my bad English.

  • \$\begingroup\$ "The distance between the pcb and the LCD Display is like 20 cm" ... and at which end of that cable is the noise being seen? If it's on the PCB (maybe due to bad grounding design between motors and digital), twisting the cables will not help, nor will choosing a different LCD mode. \$\endgroup\$ – Roger Rowland Oct 26 '16 at 8:26
  • \$\begingroup\$ I don't know this because I don't have that PCB more. But the chance of the PCB has a bad grounding is big. However now I'm designing a new pcb and Im going to have a good grounding but I would like to know which one these modes could be better to get immunity. Which one is more easier to get noise? Parallel because use more wires or i2c because it is for short distances? \$\endgroup\$ – Matheus Soares Oct 26 '16 at 11:47

Personally I would avoid I2C, it idles in a fairly high impedance state with passive pull up which is never good for immunity.

I would probably go parallel (either 4 or 8 bit it matters not) with interleaved grounds on the ribbon cable, but fact is if you get you grounding right anything should work, this is a slow interface, it is not anything high performance, some simple RC filtering might not hurt at the LCD end just to help the RF immunity, but I would expect to get away without it.

Your real issue is probably the grounding and wiring around the motor and motor driver, fix that and the problem with the LCD will probably go away, don't fix it and you will be fighting weird glitches for ever.


None of these are great for extended lengths. If you are constrained by the length you should consider a different physical layer of communications such as balanced pair. If you are constrained by your current hardware then you should shorten the length of your cable.

It is almost always easier to control your noise at the source rather than take measures to mitigate it around sensitive equipment. Consider this approach if neither of the above solutions are applicable.

General approaches to mitigate noise include running all grounds back to a single point. Distributing decoupling-capacitors across the power rails. Using ferrite bead to stop high frequency noise. This is a broad subject and there are many other ways to mitigate noise at the source.

  • \$\begingroup\$ If you are determined to use 1 of these 3 cables I might try the I2C because with only 2 wires it would be the easiest to shield. I would use the smallest pull ups allowed and split them so there are pull ups at both ends of the connection. The shield of course must be grounded. And use the slowest I2C clock allowed. You will be really pushing the physical layer of I2C as I do not believe there is any active pull up with this protocol. And a long cable is going to add a lot of capacitance. This is defiantly one of those times you are making the best of a bad situation. \$\endgroup\$ – st2000 Oct 26 '16 at 13:29
  • \$\begingroup\$ "This is defiantly one of those times you are making the best of a bad situation". But which solutions could be better to drive a LCD display? \$\endgroup\$ – Matheus Soares Oct 27 '16 at 0:49
  • \$\begingroup\$ I said what I would try in my comment and how I would go about it. However your situation is akin to asking, given a bike, skateboard and snowmobile, which would be better to cross a lake in July in the norther hemisphere. I might try the snowmobile since I think it's actually a sport of sorts. However I doubt I will be successful. Although some, I assume, have succeeded. \$\endgroup\$ – st2000 Oct 27 '16 at 3:45
  • \$\begingroup\$ Yes I understood you. But you said that none of these would be good but the best of these would be I2C. Do you know some others ways that could be better than I2C(with pcf8574 module) to drive a common LCD Display 16x02 on this distance? \$\endgroup\$ – Matheus Soares Oct 27 '16 at 5:52
  • \$\begingroup\$ Yes, but I do not think you liked my answer. I said that if you used a balanced pair (aka balanced line) it is more immune to noise. Common examples: Telephone lines and 10-BaseT-Ethernet cables. But this means you need to have hardware at each end to convert the signal from single ended to double ended. Lots of extra work. ... \$\endgroup\$ – st2000 Oct 27 '16 at 15:04

Make sure the noise isn't coming in on the backlight line (if your display uses one). A high-voltage backlight can easily transfer inverter noise to the display. A set of ferrite beads may help.


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.