3

I am trying to write to Sharp memory LCD "LS027B7DH01" which isn't going well for me. I didn't find any useful information for beginners. I just want to display any character on the LCD. Here's my code:

#include<SPI.h>

int SCS=10;
int SI=11;
int SCLK=13;
int EXTCOMIN=4;

 void setup()
 {
   pinMode(SCS,OUTPUT);
   pinMode(EXTCOMIN,OUTPUT);
   pinMode(SCLK,OUTPUT);
   pinMode(SI,OUTPUT);
   digitalWrite(SCS,HIGH);
   tone(EXTCOMIN,40);
   SPI.setClockDivider(SPI_CLOCK_DIV16);
   SPI.setBitOrder(MSBFIRST);
   SPI.setDataMode(SPI_MODE0);
   SPI.begin();
   SPI.transfer(0×20);
   delay(3000);
}

void loop()
 {
   SPI.transfer(0×80);
   delay(3000);
   for (byte i=0; i<30;i++)
    {
       SPI.transfer(i+1);
       delay(3000);
      for(int j=0; j<50;j++)
       {
         SPI.transfer(0x0F);
         delay(3000);
       }
       delay(3000);
       SPI.transfer(0×00);
    }
    delay(3000);
    SPI.transfer(0×00);
  }
2
  • What adapter-board are you using?
    – Gerben
    Mar 23, 2015 at 12:31
  • @Gerben: I am not using any adapter board, directly connected arduino with the sharp lcd
    – Naresh
    Mar 23, 2015 at 16:52

2 Answers 2

1

As the page Sharp Memory LCD Breakout A2 shows, it seems that you need some additional circuitry to drive the display, such as capacitors and resistors. This is why breakout boards are usually employed. Quoting the page:

This is a simple breakout board for Sharp’s new Memory LCD displays ( LS013B4DN02 and LS013B4DN04). It brings all pins to a 0.1″ header and provides necessary caps and resistors. The new revision A2 also adds an optional boost converter for those wanting to run 5V display from sub 3.3V supply.The footprints are there, but parts are not populated to save cost. I’ve also added silk labels to the header pins on the back. This is an open design under CC BY SA license.

Of course, you can always make your own breakout circuit. For example, you could reproduce the breakout board using a breadboard and some resistors and capacitors. The schematics are provided on that page for A1

Sharp LCD Breakout A1

and A2

Sharp LCD Breakout A2

So, in short, either purchase a breakout board, or make one. Once you have done that , you can use the CraftyCoders Arduino Library

Hope that helps.

2
  • 1
    I am a beginner in coding but I don't want to use libraries written by someone. I want to learn how to code the Sharp Memory LCD maybe starting with writing a character to the LCD. I am trying hard for the past two days but it isn't going well. I am able to turn on the display and the clear command is working but the write command is not working. I have added the code above, which I am working on. As far as hardware is concerned, I have followed the above connections in my breakout board.
    – Naresh
    Mar 24, 2015 at 19:27
  • @Naresh, You should use the library to validatie that your connections and the display itself are working. After that your can create your own library/driver code.
    – aaa
    Aug 19, 2016 at 8:07
0

I looked at this question as I too plan to drive a Sharp Memory LCD manually with my own code at some point. From your question and comments I think you are going about it the wrong way, even if you are already very proficient with the electronics side of the task.

As mentioned, the breakout board is the easiest way to connect the screen and the library is the easiest way to program it. I suggest you use both initially and then replace them one by one. I did this when driving a 32x32 LED matrix.

Once you have a little bit of code running that displays what you want on the screen, try removing the breakout board and wiring the display yourself without changing the code at all. If the display is not what you expect, you know the problem is in the wiring so you don't waste time looking into your code.

Once the wiring is sorted, start on the driver code. Leave the wiring and your code that makes the display show what you want untouched so that you know any problems are in your driver code. The other advantage of this is that you have the working library as reference for how the screen works and what signals to send with what sort of timing.

As a pointer to why your code is not doing what you expect, I think you may be misunderstanding how the screen works. Your question and code suggest you may be trying to display ASCII characters on the screen which I believe can be done easily with some LCD displays but I'm fairly sure that these LCDs are not character based - you have to manually set or clear each individual dot. I think the minimum number of dots you can set at a time is a full single line of the display.

In your code you have a delay of 3000ms after every byte send. At that rate it would take 2mins 30secs just to transfer the data for a single line of the screen so maybe you are sending the correct data, but are not waiting long enough to see the results. I've also read that you have to do something (sorry, not quite sure what) at least once per second to prevent problems with the screen - this suggests that taking over 2mins to send a line of data could not work as you expect.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.