Low-cost graphic Nokia 3310 LCD shield & Joystick

The LCD uses the Philips PCD8544 chip, it is compatible with the 3310 LCD. Here is a link of the PCD8544 datasheet - http://www.nxp.com/acrobat/datasheets/PCD8544_1.pdf. Accessing individual pixel on the LCD is a bit tricky, because the LCD control chip is organized in 84 x 6 bytes (= 84 x 48 pixels). Therefore a local buffer is needed for pixel read/write, and updating the LCD. I am in a process of developing the graphic library (most of the code is working). Will publish the code as soon as I can ;D

Thanks that would be of great help for a noob like me! Standing by.

very good

There has a MP3 programmer run on SAM3U-EK which could play .wav and .mp3 audio file. The programmer base on a free OS called Coos,it is similarity to RTX and UCOS.

You can get the source file of MP3 programmer from http://www.coocox.org/EXAMPLE/SAM3U_MP3_CoOS.htm

I´m also an owner of this display. I made some teste and it´s work fine. But i´ve a porblem how can I display som "int"value like the one i get from analog read. The Libary said there ist only CHar or byte to display. In my tests i con only display singele dots wich blink´s like an binary code.

Thx for help

I just ported a routine to plot ellipses (the ks0108 library didn’t have one) - maybe you could use, just changing the function Plot4EllipsePoints

void PlotEllipse(long CX, long  CY, long XRadius,long YRadius, int color) {
// portted the algorithm found at
// http://homepage.smc.edu/kennedy_john/belipse.pdf
// by John Kennedy

  long X, Y;
  long XChange, YChange;
  long EllipseError;
  long TwoASquare,TwoBSquare;
  long StoppingX, StoppingY;
  TwoASquare = 2*XRadius*XRadius;
  TwoBSquare = 2*YRadius*YRadius;
  X = XRadius;
  Y = 0;
  XChange = YRadius*YRadius*(1-2*XRadius);
  YChange = XRadius*XRadius;
  EllipseError = 0;
  StoppingX = TwoBSquare*XRadius;
  StoppingY = 0;
  while ( StoppingX >=StoppingY ) //first set of points,y'>-1
    StoppingY=StoppingY+ TwoASquare;
    EllipseError = EllipseError+ YChange;
    if ((2*EllipseError + XChange) > 0 ) {
      StoppingX=StoppingX- TwoBSquare;
      EllipseError=EllipseError+ XChange;
  //{ first point set is done; start the 2nd set of points }

  Y = YRadius;
  X = 0;
  YChange = XRadius*XRadius*(1-2*YRadius);
  XChange = YRadius*YRadius;
  EllipseError = 0;
  StoppingY = TwoASquare*YRadius;
  StoppingX = 0;
  while ( StoppingY >=StoppingX ) //{2nd set of points, y'< -1}
    StoppingX=StoppingX + TwoBSquare;
    EllipseError=EllipseError+ XChange;
    if ((2*EllipseError + YChange) > 0 ) {
      StoppingY=StoppingY- TwoASquare;
      EllipseError=EllipseError+ YChange;
}; //{procedure PlotEllipse}

void Plot4EllipsePoints(long CX,long  CY, long X, long Y, int color){
  GLCD.SetDot(CX+X, CY+Y, color); //{point in quadrant 1}
  GLCD.SetDot(CX-X, CY+Y, color); //{point in quadrant 2}
  GLCD.SetDot(CX-X, CY-Y, color); //{point in quadrant 3}
  GLCD.SetDot(CX+X, CY-Y, color); //{point in quadrant 4}

Hi, can i have free pins with 3310 shield?

I mean, witch pins are free? how can I connect them to other devices?


Is there a U.S. distributor of this product by chance?

I think Sparkfun has that…
If not, at least the LCD module you can get there, I’m sure

Looks like they have the LCD module, but not the one with the integrated joystick. :(

Thanks your post, maybe there's something else here I can use instead!

@Slewfoot303 what do you plan to do? And what are your electronic skills? I'm planning to interface some of those displays, but I'll grab them from the old phones. Maybe with a proto shield and a joystick like this:


you could get it going...

I was just introduced to the Arduino by this thread:


My electronics skill is nil, but my father-in-law is an electronics guru (30+ years in AT&T's hardware R&D department) and has agreed to help out, I'm just trying to locate parts at the moment. :)

And, obviously I'm in this to learn and to pick his brain while I can...

Thanks for the help!

Oh, and not to sound like a complete leech, if we're able to get this project going I'll be developing the software - that's my contribution to the project. :)

Hi nuelectronics,

nice product, and very reasonable pricing.

I got this from the UK to Texas in just a few days so no worries about overseas shipping for those of you weary about it.

I am having a problem getting it to work with the arduino mega board though. Does anyone have know what mods need to be made to get it working on the mega?

I ordered one too and it was shipped and arrived in Colorado in good order in a reasonable time (roughly a week). Was very pleased with the service from Nuelectronics, thank you.


Shield uses the SPI, Duemilanove SPI pins are 10,11,12,13 but Mega SPI pins are 50,51,52,53. You may solve with this solution. http://mcukits.com/2009/04/06/arduino-ethernet-shield-mega-hack/

I was hoping I could do it all in software like this: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1253831901 but I'm not seeing how to directly translate the mods in that thread to the n3310_lcd.h and n3310_lcd.c files.


ist there any nokia3310.h with a smaller font than 7x8? need 5x6 for eg.