Noise or garbage on the LCD display is a very common problem to us who works with electronics. Almost everyone experienced this problem in their work-life at least once, & I? maybe over 1000 times. There are multiple reasons for this garbage problem and also there is a solution to this too. In this article, we are going the find the solution to this issue. So let’s remove noise/garbage from the HD44780 LCD display.
Disclaimer:
Handling electricity carries inherent risks. It’s essential to have the appropriate skills to manage it safely. Proceed at your own risk, as the author disclaims responsibility for any misuse, harm, or errors. All content on this website is unique and copyrighted; please avoid unauthorized copying. While most articles are open-source for your benefit, feel free to use the knowledge provided. If you find our resources helpful, consider purchasing available materials to support our work.
For assistance or guidance, leave a comment below; the author is committed to helping. Some articles may contain affiliate links that support the author with a commission at no additional cost to you. Thank you for your understanding and support.
Table of Contents
About LCD display:
In the electronics arena, the most common component is the LCD display in the image below.
These LCDs are pretty common in working principles for different character sizes. Most LCDs use a common display driver IC and it is known as HD44780. There are 16 pins in total, among these pins we usually use the D4~D7 for data and E (En) & RS for Enable and Reset/Set of the display. This is a 4bit mode of operation. In some cases, we use 8bit data operation mode which needs extra 4pins and is not quite popular.
We are familiar with the 4bit mode and we frequently use these displays with Arduino, PIC, dsPIC, STM microcontrollers. But we all have experienced a common problem with these displays. That is noise or garbage on the LCD. So what is noise or Garbage on LCD?
Noise on LCD:
You may find that your project or product is working nice in normal operation. But suddenly there are some unknown characters appear on the LCD. Something like these:
Why does this happen? There are several reasons for this. Whenever there is noise on LCD, we should inspect all possible causes. Then solve them one by one. Here are some reasons that create noise on LCD and we’ll see the solution as well.
You may find this useful too: How to make a Single Phase AC voltmeter using PIC16F76 & Capacitor power supply
Reason#1 : Timing:
Timing issue can be divided in the following ways:
▶ Slow response:
The first reason is timing. LCDs are slower than our microcontrollers. It takes around 40 uS per character to write. If the MCU is running at 8MHz, then it will take around 320 cycles. Too much slow comparing to MCU. That is why, in some MCUs if the LCD library is not written properly, it creates noise.
✔ Solution:
Most of the compiler is capable of controlling this time delay. Only if you write your custom LCD library, you should take care of this issue. Besides, if you keep a time delay of 0.2 seconds after each writes on LCD, this problem will be solved.
▶ Use of timer interrupts:
Sometimes, we use timer interrupts in the code. If the interrupt is too fast compared with the MCU clock and MCU speed, then the LCD program gets very little time to complete the writing process. In this case, noise arrives on display.
Let’s explain it: We know that the LCD need at least 40uS to complete a write cycle. Now if you are using an interrupt of 2uS or fast, the LCD program will get a small time to complete this 40uS. It may extend to 400uS or even more depending on the codes & calculations on the normal code area. So?
✔ Solution:
We do not need to write on LCD in each cycle of the general code. We can write it periodically. And if possible to stop interrupting, we can stop the interrupt just before writing on LCD. Say, we need to print 2 lines of information, we can gather all data in the general code area. But on the scope of the timer, we can stop the timer for a while and write those 2 lines on the LCD, then resume the timer.
Note: Most of the low-level MCUs can’t handle this type of operation. Using the upper level of MCUs can handle this issue easily. Especially in those MCUs which have Data Latch Register or LAT Register can handle this timing issue better than these have not.
Another way to solve this problem is to combining timer interrupts. Sometimes, multiple timer interrupts are called for different timing purposes. But using so many timers will create a great timing issue. If it is possible to combine two-timing works inside one then we should utilize that. Let’s explain it:
Timer1 Interrupt() // for 10ms timer { job1 done here; } Timer2 Interrupt() // for 120ms timer { job2 done here; } . . . void main() { the main job is done here; }
This type of use of multiple timers can be avoided like the code below:
int timer1_counter=0; Timer1 Interrupt() // 10ms { job1 is done here; timer1_counter++; if(timer1_counter>=120) // find if it is 120ms { job2 is done here; timer1_counter = 0;//reset counter for next use } } . . . void main() { the main job is done here; }
This way, we can eliminate the use of multiple timers. It will minimize timer interaction and give us some extra time for general work. And inside general work, we can do the LCD prints.
Reason # 2: EMI:
EMI means Electro-Magnetic Interference. The EMI issue can be divided into the following steps:
▶ EMI due to power supply:
It seems funny, but it happens in real. Even with linear voltage regulators. But why & how? If the power supply is formed from a transformer and it is not properly rectified & filtered with proper capacitor values, it may keep some AC signal with the regulated output even after a linear voltage regulator.
Switching regulators are fast and smart for this but linear ones are not. And after the regulator, if sufficient values of the bypass capacitor are not used, it will create EMI. Again, if the linear regulator is supplying a good amount of current and it is heating up but you did not use any heat sink, the EMI generation will be increased. So? Now you know why and how it happens. It can be a list like this here:
- Poor rectification
- Poor capacitive filtration
- Insufficient bypass capacitors
- No heat sink
- Over-heating of regulator
- Bad PCB design
- Wrong position
You can find that some regular products or control circuits that are popular and are running for a long time without any failure are using several bypass capacitors (like 100nF) near different parts. These significantly reduce EMI in most of the circuits. Besides PCB traces and placement of power components are very important.
✔ Solution:
Don’t damn care about the power supply part of your circuit. But keep in mind that, it is the main part of a circuit. Design your power supply in the right way. First, calculate the right amount of current you need from your regulator. Then select diodes & capacitors. Take some extra capacitance. Then use a sufficient heat sink for the voltage regulator.
Use proper bypass/decoupling capacitors. Use bypass capacitors just after the regulator and also just beside other components traveling a way in the PCB traces. Keep proper PCB trace width for the current and finally, good positioning of component placement comes into mind which should be done from the beginning of your PCB design.
After calculating the maximum current from your voltage regulator, select a suitable heat sink. Keep in mind that, the GND panel from the regulator to MCU should not dram much current. As GND is common with other parts of the circuit and usually carry lots of currents, this creates a voltage difference in different position of the PCB which creates several problems to sensitive components including MCU. If possible draw a common Ground Panel all over the PCB like this:
Here are some points you can follow:
- Place the regulators as near as possible to the bridge diode and filter capacitor.
- Place the regulator on a corner of the PCB where other heat-sensitive components are not close
- Try to keep the output PCB trace as short as possible, spreading the traces can reduce trace impedance.
- If required, an L-C filter after the regulator.
- Rather than using one large capacitor, use some small ones. This will reduce capacitor ESR (Equivalent Series Resistance).
You can read this article here to learn more about linear voltage regulator circuit design.
Using a decoupling capacitor improves EMI filtration. Here is Another approach is adding a decoupling capacitor near LCD’s VDD & VSS pin. And a small ceramic capacitor of 47pF on Enable line (E/EN) significantly reduces the power supply EMI issue.
▶ EMI due to inductive switching:
Inductive loads like relays, motors, solenoids can be used in the circuit. These are very common EMI generating loads. The relays generate EMI for its coils themselves and also from the contacts. When relays are switched on/off the relay coil generates back EMI. Besides, the contact plates spark. These two are highly EMI-producing activities.
Another source of EMI is motors. DC motors or commutator-based motors are extremely EMI generative. Due to frequent sparks between the commutator brush and commutator plates, high EMI is generated. This effect increase if the load to the motor increases.
The EMI generated from inductive loads must be eliminated. Otherwise, these definitely affect the micro-controller and other sensitive components.
✔ Solution:
For relays and solenoid coils or inductors, a diode in reverse connection reduces the EMI significantly. But depending on current capacity the diode should be selected. Even sometimes, a resistor in series with these Diodes is used to reduce excessive current flow through the diode itself.
Another method of reducing EMI is using an R-C snubber circuit. A resistor of low resistance & high watt series with a high voltage capacitor is used to form an R-C snubber like this:
Selecting the right values needs some guide & Practice. But It’s not so complex if you step forward once.
Using common choke coils and ceramic capacitors with the motors significantly reduces motor EMI. Here is an article on this that you should read.
You can read this to know more about the use of choke coils with motors.
Here are some tools to calculate the inductor coil turns and so many others.
Besides these another very useful technique is to use a Schottky diode reverse just after the voltage regulator can be used like this:
All these EMI reduction techniques are used in circuits depending on the operation. You should select properly the suitable one for you. I’ve explained all the above, now it’s your choice.
▶ EMI due to high current switching (high dv/dt and di/dt):
When working with power electronics, high current switching is very common. SCRs, TRIACs, IGBTs, MOSFETs, BJTs are used for different purposes. Whatever is used, when a high current is flowing through a path, it creates a magnetic field near its lines. That effectively creates disturbances to sensitive components like MCUs, sensors, displays, etc. When a high current is switched, the switching device itself radiates some form of EMI which affects the surrounded circuits.
✔ Solution:
For high current switching, the power lines and control circuits must be isolated from each other. For this purpose, optocouplers or transformers can be used. An optoisolator or gate driver IC is very common for this purpose. Besides using Opto-couplers, you should keep in mind that the power supply for the control circuit should be isolated from the switching line. In that case, isolated power supplies like these can be used:
▶ EMI due to high frequency switching:
SMPS or Switch Mode Power Supplies are very common in electronics circuits. For high power density & high Efficiency, SMPS are very popular. A high-frequency switching is done in each SMPS which creates EMI to nearby circuitry. Besides SMPS, audio/video or other signal transmitters also use high-frequency switching. These all generate EMI.
✔ Solution:
Metal shielding to sensitive components can be used to reduce the high-frequency EMI. But there are some other balancing techniques to reduce EMI.
Here is an article that explains a lot.
▶ EMI due to transient
EMI can be generated also from a transient. Electrical transients are momentary bursts of energy induced upon power, data, or communication lines. They are characterized by extremely high voltages that drive tremendous amounts of current into an electrical circuit for a few millionths, up to a few thousandths, of a second. You can read this for more information.
✔ Solution:
The use of a transient suppressor is the solution to this. Various transient suppressor circuits and components are used to suppress the effect. Like TVS diodes, MOVs, etc.
Reason # 3: Cables & Placement:
▶ Cables:
In some cases, LCD can catch garbage through its connecting cables. Most of the time, the LCDs are placed to the out/front panel, and a cable is used to connect the display with the control circuit. If the cable is long, thin, and in the wrong position in placement, it catches noises from different sources.
✔ Solution:
Use these connecting cables as short as possible and keep away from any EMI generating or power switching component of the PCB. A metal shielding or ferrites-shielding can be used if required.
▶ Placement:
Guess what? You know which components generate EMI and what the EMI can do, right? Yes, I think you found the point that I’m going to tell you now. Placement is an important point for displays in the control circuit. Placing near a switching device increases the chances to catch noises.
✔ Solution:
Place it away! Just keep it away.
Conclusion:
Now you know almost every possible reason and solution as well. Besides all these circuit design guides, you should write the code in a fresh and sequential way to keep each step of work clean. If you follow the above-mentioned techniques, I think soon you’ll get your noise-free LCD display circuit.
Tips: Sometimes, a pull-down resistor (10K~22K) significantly reduces noises from a signal.
I think this article will help you in your work. Don’t forget to subscribe for the next article. Thanks.
For Professional Designs or Help:
Check this: 6V Lead-Acid battery charger circuits.
6 Comments
Joy · 03/07/2021 at 12:47 pm
Thank you very much for learning so many beautiful unknown things.I wish you long life.
Asimiyu · 03/07/2021 at 4:19 pm
Good day sir. Thank you for this new write-ups about problems encountered when using LCDs. To be franked, I have face numerous charlenges such as “Display of Garbages” on LCD or sometimes, the wholeText display on the LCD would be blinking continuously or sometimes, some refused to display on the screen, untill may by trying by error, by reducing some programs may then cause it to display. And from this tutorial you posted newly, I have grabbed the solutions anytime I encounter such issues. Thank you God bless 🙏 you . More blessings to you sir.
MKDas · 03/07/2021 at 5:00 pm
Thanks. Kindly comment your other question on the relevant article.
Prabhu PT · 07/07/2023 at 3:54 pm
Thank you so much for the detailed explanation to possible errors on lcd. After I’ve spending lot of time finally, I got the right answer.
shashikant more · 22/06/2024 at 3:38 pm
hi sir,
i want to know that you said
Tips: Sometimes, a pull-down resistor (10K~22K) significantly reduces noises from a signal.
biut where to place this pull down resistor.
MKDas · 23/06/2024 at 1:21 pm
with the data and command pins to GND.