LCD Display bug

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
Anonymous
Not applicable

Hi,

   

Sorry for again post but i think image zip file was not uploaded so i will explain via text.

   

   

   

I was wrote simple below code in main function.

   

    LCD_Start();
    LCD_ClearDisplay();
    LCD_Position(0,0);
    LCD_PrintString("ABCDEFGHIJKLMNPQRS");

   

and output in LCD is ABCDEFGHIJKLNPQRS

   

but when I wrote code in main function with adding 'O' character means

   

    LCD_Start();
    LCD_ClearDisplay();
    LCD_Position(0,0);
    LCD_PrintString("ABCDEFGHIJKLMNOPQRS");

   

then output was ABCDEFGHIJKLMNO . and my controller does not work any more

   

I don't know why O character enemy with me

   

Please any one can give a solution for that.

0 Likes
1 Solution
EvPa_264126
Level 7
Level 7
500 replies posted 250 replies posted 100 likes received

It seems this problem has already been discussed:
Character LCD not work!

View solution in original post

0 Likes
16 Replies
EvPa_264126
Level 7
Level 7
500 replies posted 250 replies posted 100 likes received

It seems this problem has already been discussed:
Character LCD not work!

0 Likes
HeLi_263931
Level 8
Level 8
100 solutions authored 50 solutions authored 25 solutions authored

The CharLCD component does not wrap at the endge of the display. Internally each line consists of more than just the 16 bytes needed for one line. The write function just writes one character after the other, but after the 16th they just will not be displayed. Only when you reach the limit of where the first line ends in memory, the characters are displayed again (in the second line then).

   

You need to handle that wrapping in your code.

Anonymous
Not applicable

But i am using 20x4 Lcd not a 16x2 and Lcd part no is JHD 204A

0 Likes
Anonymous
Not applicable

Even I wrote "Config. Mode", Output is "Config. Mo".

   

In that condition only 11 character but facing same problem and if I remove 'O'  character and string is long not any issues.

0 Likes
ETRO_SSN583
Level 9
Level 9
250 likes received 100 sign-ins 5 likes given

Try using a for loop and write it character at a time with

   

LCD_PutChar() and LCD_Char_Position(). Terminate loop

   

when you detect NULL character, string termination.

   

 

   

Regards, Dana.

lock attach
Attachments are accessible only for community members.
Anonymous
Not applicable

I was already test it but same issue.

   

                    I was identify more hint about this issue. Whenever I was write ‘o’ or ‘O’ character at & after 8 position of first LCD line this problem is create and next c code is not execute.

   

1) Input ->  LCD_PrintString("ABCODEFGHIJKLMNPQRST");

   

   Output-> ABCODEFGHIJKLMNPQRST

   

2) Input ->  LCD_PrintString("ABCDEFOGHIJKLMNPQRST");
   Output-> ABCDEFOGHIJKLMNPQRST

   

3) Input ->  LCD_PrintString("ABCDEFGOHIJKLMNPQRST");
   Output-> ABCDEFGO

   

4) Input ->  LCD_PrintString("ABCDEFGHIJKLMNOPQRST");
   Output-> ABCDEFGHIJKLMNO

   

I am changing just position of character 'O'

   

You can also check attached files. I was check this LCD with AT89C52 microcontroller and it's working fine. so i thing it's problem with PSoC LCD component.

0 Likes
Anonymous
Not applicable

 How about print multiple short strings. ie print "ABCDEF", then print "GHIJKL" then print "MNOPQ". add a little bit of delay between each print string.

Anonymous
Not applicable

same problem.

   

I was write code without LCD component just directly place Digital Output pin and it working ok. but the problem is how i can check busy flag from LCD beacuse i was use Digital Output pin.

0 Likes
Anonymous
Not applicable

 Yes you can, but you need to copy the source file and modify it yourself, you may also need to modify the I/O mode with software  I did that for PSoC3 and Psoc5 but do not have the file on hand. Should be able to dig it out next week.

Anonymous
Not applicable

Sorry my mistake, the modifiction is to read the RAM content back from the LCD memeory which is not supplied by Cypress. 

   

For checking the status of the LCD, you can use LCD_IsReady(). you can check the source code from the generated file

ETRO_SSN583
Level 9
Level 9
250 likes received 100 sign-ins 5 likes given

For what its worth I fired a 2 x 16 up on the -030 board and it works

   

fine. The "O" does not affect any writes.

   

 

   

    LCD_Start( );
    LCD_Position( 0, 0 );
    LCD_PrintString( " ABCDEFGHIJKLMOPQRST" );

   

 

   

Look in memory at your string. see if the ordinal value of "O" is

   

correct.

   

 

   

Regards, Dana.

HeLi_263931
Level 8
Level 8
100 solutions authored 50 solutions authored 25 solutions authored

This looks like a hardware problem. Can you try the display with another controller (e.g. an Arduino)? Do the same with the connectors you use to connect it to the PSoC DevKit.

   

If you look at the discussion pavloven linked in, the behavior was the same, and the culprit was that the unused opins of the LCD were not connected to ground.

   

The LCD component is one of the most used ones I think, and so its probably nearly bug-free 🙂

Anonymous
Not applicable

Thank to all

   

It's my hardware connection problem so sorry for that

   

It's work correctly.

0 Likes
Anonymous
Not applicable

 Glad you solve the problem, but you mentioned that it works if you drive it ditectly without using the LCD component, So what is the issue, so other people would check for that if they comes with the same problem as yours.

Anonymous
Not applicable

I was simply place Digital Bidirection port for data(D7-D4)  with resistive pullup & RS,R/W,E Digital Output with resistive pullup. I wrote the code using delay and it's wroking correctly. But  when i was use BusyFlag of LCD Command register means not use delay function, LCD are not showing any thing in screen.

   

I was debug the code but every time lcd send BusyFlag=0. I know , I have set wrong port configuration but how to change dynamically port configuration.

0 Likes
Anonymous
Not applicable

Do you still have the issue? 

0 Likes