Screen Play: Lots of other screens for microcontrollers.

If you enjoy LCDs and microcontrollers chances are that you have tinkered with the ubiquitous Nokia 6100 screen. I love the fact that a youtube search for “Nokia 6100” produces may more AVR and PIC hacks than phones. In a bit of a departure from my normal projects this is the first in a series of posts on lots of other little known display choices that are better, cheaper and just more fun.

Despite its popularity the Nokia 6100 display has a few problems:

  1. Small (132×132)
  2. It is a CSTN (passive matrix) display leading to ghosting if things move quicky. Koopas are especially lethal if nearly invisible.
  3. Limited color depth of 12 bits (4096 colors + dithering on some displays).
  4. It comes with 2 incompatible driver ics (Philips or Epson).
  5. Not cheap: $15 from sparkfun or (gasp) $35-$42 for breakout boards.
  6. A fiddly, relatively uncommon 0.5mm connector that tends to tear off expensive breakout boards rendering them useless.
  7. Needs 6V for the backlight (2 leds in series).

The Nokia 6100 first shipped in 2002. Of the hundreds of models of phones from nokia (yes, hundreds) surely there are other screens of interest? A quick check in my junk phone archive of hundres of phones (yes, hundreds) turned up a few interesting candidates.

A quick check of the schematics turned up a series of SPI driven displays connected to 10, 22 and 24 sockets.

Nokia 1600: Although the 1600 screen uses the same 10 pin connector (Hirose DF23-10DS) as the Nokia 6100 the pinout is very different – so different in fact that if you plug a 1600 screen into a 6100 phone blue smoke will be emmitted and your phone will become a purely decorative item. The screen is speced as 96×65 CSTN.

Nokia 6101: Two displays here. A 96×65 CSTN caller id screen with backlight leds on the phone pcb (fail/win) and nice big one with a 22 pin 0.5mm connector (Hirose DF23-22DS) that is a 132×162 TFT (acvtive matrix) display.

Nokia 2760: Two displays again: an oh-so-cute teeny 96×65 blue monochrome display with the 10 pin connector and a 132×162 TFT with a 24 pin 0.4mm connector. These are not the Hirose DF30 series; I am still looking for a definitive source.

We know they are SPI, so lets get them wired up to a logic analyser and see if we can identify what controller they use. Once wired up we record the traffic going two and from the LCD as the phone boots. Looking at the traces it is clear that all these phone used a fairly uncommon 3 wire mode of SPI to determine what display is attached.

After an initial 0x11 (Sleep Out) 9 bit SPI command the 0xDA,0xDB and 0xDC (Read Device ID) commands are followed by 8 extra clocks during which the MOSI line is driven by the LCD. In this 3-wire SPI mode the MISO is really SISO (slave in slave out) and is usually not supported by hardware so we will need to bitbang during this discovery phase. This is the way Nokia 6100 phones can tell the difference between the Epson controller (that does not respond to RDDID) and the Philips controller (that does).

Rddid

Looking at SPI recordings reveal that the controller on the large screen looks an awful lot like the Philips PCF8833 controller in the 6100. Searching by RDDID manufacturer id 38H turns up the Orise SPFD54124B for the 6101 screen. It has a lovely 262k frame buffer and supports a 12,16 or 18 bit color format. Ironically googling this controller led to a great site that details this and other earlier phone displays. The caller id screen seems to be a SED1565 or similar, the 1600 seems similar to the Philips.

The 22 and 24 pin displays support SPI or an 8 bit paralell interface selected by a p/s pin. SPI is usually fast enough for smaller screens unless you are really perf sensitive. SPI means fewer pins on the mcu, fewer lines you need to convert from 5v to 3.3v etc.

Now the really good news. The 6101 displays are really cheap on ebay. <$3 with free shipping much of the time. They address problems 1) thru 5) listed above. The 1600 screens are also cheap if you need something small – dealextreme has them for <$5. 1200 displays are pin and code compatible with the caller id screen an very low power if you don’t use a backlight.

All these and more in action:

The breakout board above supports both 10pin pinouts as well as 22 0.5mm and 24 0.4mm pinouts. It has a built-in boost converter for generating various led supply voltages controlled by pwm from the mcu. It has a sense pin to allow you to measure the backlight current and adjust it accordingly by varying pwm duty cycle.

nokiaSuperBreakout.pdf
Download this file

The software in the demo detects when a display is attached, selects the right driver and runs an appropriate graphics app: Wireframe 3D for mono screens, the reference Rossum icosohedron and a raycast lattice for color. As always code and schematics/pcbs will be posted on Sourceforge.

In the next post, I will look at displays from several non-Nokia phones, the worlds cheapest TFT and the Ipod Nano 2G.

Until then

 

 

UPDATE: PCB, schematics and code for AVR and NXP posted at https://sourceforge.net/projects/nokiasuperbreak/.

 

 

 

Advertisements

28 thoughts on “Screen Play: Lots of other screens for microcontrollers.

  1. Anonymous

    This is rad! Did you just post this when we were at University Cafe? I like the board, but adore the reverse-engineering. Nice!

    Reply
  2. Anonymous

    Eagerly awaiting further information on the 6101 display: connector source, pinout, driver-chip configuration (8-bit or 9-bit SPI, parallel mode viable?, etc). I have a project for which it’s an even better fit than the classic 6100.

    Thanks for the work!

    Reply
  3. swiftmobile

    Wow…. impressing… I was looking for this kind of project to make a secondary display through a Nokia LCD… will give a try….

    Reply
  4. Anonymous

    Hi there, very impressive works you have got here! I would love to use those small phone screens on my art works. But I’m an absolute beginner in electronic and no experience in C programming. I would love to learn to work on the great devices. Can you please give me some advise on ultilising these screens? Where should I begin? Any book you will recommend me reading? Would love to hear from you!
    Your helps are absolutely appreciated! Thanks so for the help! (please email me at hodyhong [AT] h-shirt.net

    Hody

    Reply
  5. Anonymous

    Great stuff! I bought one of the 6060 displays off ebay for a song! What’s a good source for those 22 pin connectors? Also, what code are you using to drive this?

    Reply
  6. garrapato

    Good work , and can be improved.
    Did you trash the cmos cams of the dead phones ?
    Would you dare to try revesing ALSO any of Nokia cams ?
    You could implement an interface between the Nokia extracted cam module, your Cortex M0 IC, and ?a microSD card? -> AND REALTIME FRAME CAPTURE AND SAVE.
    If someone can do this YOU ARE THE ONE.
    Jose.

    Reply
  7. Anonymous

    @rossum, Any idea if this board will drive the N96 screen? It is 240×320, 2.8″ screen. That would be an AWSOME display for a project.

    Reply
  8. Anonymous

    For the 1600 lcd what voltage can the screen run on(3.3v, 3v, 2.8v)? What voltage does the backlight need.

    Reply
  9. riscking

    What is the value to output to the boost converter to power up the backlight? can be 6v as 6100, I have fear of burning
    can What is the value of L1, and what is the mosfet that you have used?? I’m trying to use a scheme for a 6103.
    thank you very much.

    Reply
  10. Anonymous

    I think you are the great blogger.What a great article have you written.I really enjoyed reading your post.This info is really very useful to all.
    Thanks…. Keep Posting!!

    Cheap Generic Viagra

    Reply
  11. ogdento

    i read something on dorkbot about a group buy for the pcb you created but i can’t find any other information… are those – or a complete breakout board – available for purchase?

    also, what do you use to spy on spi?

    Reply
  12. mimi

    Hi,
    Thank you for this very interesting article. I am trying to control a LCD display with my Raspberry Pi. The screen is a Nokia 1208 (I read it was it could also be used for Nokia 1600 and 2310).
    Since you mention in your article that the pinout for 1600 was very different from 6100, can you share what each pin is? I spent quite some time looking for this information, but I did not find it.
    Thanks !

    Reply
  13. Pingback: Touring the available Nokia LCD screens | Hackaday

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s