Pages: [1]   Go Down
Author Topic: hd44780 based 16x2 LCD repeats after 8 characters  (Read 69 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello,

I am using this LCD: http://www.amazon.com/Amerlight-TM-Module-Arduino-MEGA2560/dp/B00E5YJCBA/ref=cm_cr_pr_product_top

and this should be based on HD44780.  I have it wired to my Arduino Uno per the comments section in the Arduino IDE Liquid Crystal example sketch, "HelloWorld".  The problem I am having is that after 8 characters, the characters start to repeat as shown in my attachment.  I haven't been able to find anyone with a similar issue.  I've tried shortening my jumper wires to see if it was just a signaling issue, but this didn't work.  Any other thoughts on a fix would help.

 


* 20140915_204428.jpg (1945.06 KB, 4128x2322 - viewed 4 times.)
Logged

Offline Offline
Faraday Member
**
Karma: 68
Posts: 2787
The last thing you did is where you should start looking.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

We need to see your wiring (show us an image of) and your code.
Logged

The way you have it in your schematic isn't the same as how you have it wired up! That goes for me too.

Western New York, USA
Offline Offline
Faraday Member
**
Karma: 39
Posts: 4382
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I don't think that there is anything that you could do with your wiring to get this, and it would take some pretty tricky code as well.

Try running the following sketch and see what the sequence of events is.  Specifically, does the problem occur (I think it will) and if so do the duplicate letters appear on the display at the same time.  Increase the intercharacter delay if necessary.


Code:
#include <LiquidCrystal.h>

//LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
  LiquidCrystal lcd(12, 11, 5, 4, 3, 2);       // put your pin numbers here

void setup()
  {
    lcd.begin(20, 4);                          // put your LCD parameters here
    for (char i=47; i<127; i++)                // send 80 consecutive displayable characters to the LCD
      {
        lcd.print(i);
        delay(100);                            // this delay allows you to observe the addressing sequence
      }
  }


void loop()
  { 
  }
Don
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Here is the code:

Code:
/*
  LiquidCrystal Library - Hello World
 
 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.
 
 This sketch prints "Hello World!" to the LCD
 and shows the time.
 
  The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)
 
 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom Igoe
 
 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis()/1000);
}

Wiring follows attached scheme.
I don't think that there is anything that you could do with your wiring to get this, and it would take some pretty tricky code as well.

Try running the following sketch and see what the sequence of events is.  Specifically, does the problem occur (I think it will) and if so do the duplicate letters appear on the display at the same time.  Increase the intercharacter delay if necessary.


Code:
#include <LiquidCrystal.h>

//LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
  LiquidCrystal lcd(12, 11, 5, 4, 3, 2);       // put your pin numbers here

void setup()
  {
    lcd.begin(20, 4);                          // put your LCD parameters here
    for (char i=47; i<127; i++)                // send 80 consecutive displayable characters to the LCD
      {
        lcd.print(i);
        delay(100);                            // this delay allows you to observe the addressing sequence
      }
  }


void loop()
  { 
  }
Don

Yes, the duplicate characters  appear and at the same exact time.


* LCD_schem.png (20.47 KB, 1241x942 - viewed 3 times.)
Logged

Western New York, USA
Offline Offline
Faraday Member
**
Karma: 39
Posts: 4382
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I would say that your module is defective.  

One of the blobs on the back is the main controller which contains all of the memory along with the circuitry to display the 16 characters on the left half of the display.  The other blob is an auxiliary controller which contains the circuitry to display the 16 characters on the right half of the display.

One possibility is that there is some miscommunication going on between the two controllers that is most likely due to a damaged controller or a damaged trace (or traces) on the pc board.

Another possibility is that there is a problem with the memory addressing within the main controller whereby the information for one screen location is being stored in multiple memory locations.  In either case you need a new display.


Don
« Last Edit: September 15, 2014, 10:56:17 pm by floresta » Logged

Pages: [1]   Go Up
Jump to: