Nokia 6100 Display driver (PCF8833 controller)

XCore Project reviews, ideas, videos and proposals.
Post Reply
User avatar
Bianco
XCore Expert
Posts: 754
Joined: Thu Dec 10, 2009 6:56 pm
Contact:

Nokia 6100 Display driver (PCF8833 controller)

Post by Bianco »

Version: 1
Status: Complete
License: Custom Licence
Download: /files/project_builds/nokia6100_lcd_driver.zip

Introduction

This is a driver for the Nokia 6100 (knockoff) Display with NXP PCF8833 controller.

This display has 130x130 pixels with 12bpp (4096 colors) and uses a 9 bit SPI interface.

This driver supports only 12bpp (the controller supports also 8bpp and 16bpp).
Controller compatibility

The Nokia 6100 (knockoff) display comes with two different controller which are not fully compatible with each other: NXP PCF8833 and Epson S1D15G10. A possible way to distinguish them is that displays with the NXP controller likely have a brown flexible PCB and Epson a green flexible PCB.
Where to get this display?

Sparkfun (also sells breakout boards)

Ebay (usually better pricing)
Driver functionality

Draw pixel
Draw line
Draw and fill rectangle
Draw circle (no filling!)
Draw character
Draw string
Draw image using a raw image buffer

Acknowledgement

Large part of the driver is based on the driver written by James P Lynch.
bmpdump

bmpdump is a utility written by me to convert a 24 bit uncompressed BMP image to other formats. It can be used for this driver to convert an image into a bitmap C array (12bpp) for the image drawing function.
License

Do whatever you want with the code.
Video:

Images:


User avatar
jason
XCore Expert
Posts: 577
Joined: Tue Sep 08, 2009 5:15 pm
Contact:

Post by jason »

Super video! Out of interest how long did it take you to develop?
User avatar
Bianco
XCore Expert
Posts: 754
Joined: Thu Dec 10, 2009 6:56 pm
Contact:

Post by Bianco »

Getting the first stuff on the display took me 1 or two evenings because there was a bug in the initialisation routine of the display. Most of the time i spend to format the source code, adding comments, writing the bmpdump tool and making things nice. Also most of the driver routines are not written by me, that saves a lot of time.
The 3D cube demo i copied from someone else, that is why it is not included in the source package ;).

An interesting detail:
The LCD controller is specified to run at maximum 6MHz SPI, i got it running at 33.33MHz pushing out 53FPS at 12 bit. That makes it possible to do some decent video playback :).
User avatar
russf
XCore Addict
Posts: 146
Joined: Thu Dec 10, 2009 10:17 pm
Contact:

Post by russf »

It would be helpful to know what resources are needed for the basic driver code.

And it would be great if there were a link to your project in the list of Examples on the Sparkfun page.
User avatar
jason
XCore Expert
Posts: 577
Joined: Tue Sep 08, 2009 5:15 pm
Contact:

Post by jason »

I must say that made me laugh out loud. I love how we have adopted the lolcats into our community. Great photos btw.
User avatar
Bianco
XCore Expert
Posts: 754
Joined: Thu Dec 10, 2009 6:56 pm
Contact:

Post by Bianco »

As you can see in the upper picture the only parts are actually an XMOS processor (in this case an XC-1 board) and the display. The tiny PCB is just a converter print to convert the tiny SMD connector to dual inline. The wires to the XC-1 are for SPI and resetting the display. The backlight needs about 7V, so i hooked up my lab PSU to it (you can see the probes).

For more detailed information see the lcd.h header file or Jamie P Lynch's document (it's included).
User avatar
Bianco
XCore Expert
Posts: 754
Joined: Thu Dec 10, 2009 6:56 pm
Contact:

Post by Bianco »

Correction: lcd.h should be nokia6100.h.
User avatar
TonyD
XCore Addict
Posts: 234
Joined: Thu Dec 10, 2009 11:11 pm
Location: Newcastle, UK
Contact:

Post by TonyD »

Great project
User avatar
CaptainObvious
Member
Posts: 14
Joined: Wed Dec 30, 2009 12:24 pm

Post by CaptainObvious »

Hey, this is nifty! You did a really good job! I'm still trying to.. uh.. get used to XMOS :D I've used the Arduino previous to getting a XK1.

This gives me hope! I've got the 6610 LCD, but it's the Epson controller.. dun dun dun! :) lol I think I may have to take a look at your code and hopefully implement the Epson code set instead.. hope you don't mind! And *if* I can accomplish this, I'll post it here as well! I'm sure I'll have quite a few questions. :)
I do have code on the Arduino that does work, but it implements software SPI and well doesn't include circles, images or anything that uber! That should give me a starting point!

But good job again, I'm really glad to see that you got it running at that speed, let alone at 12 bit color, we only had it running 9bit on the Arduino.

I purchased a VDIP2 a few weeks back.. and was only able to print some text files to it, using the TTL connection.. but seeing video played from it.. I'm jealous, lol, time to really get into the XMOS!

You sir, are a champ! Keep up the good work, and now it's time for a few all-nighters to try figure out some code!:D
EDIT:
(and I noticed you updated this on my birthday, this is a whole 'nother present in itself! :) I've started to try at some code, but already confused:D, got to love learning)

EDIT #2:
I've implemented the Epson commands, and changed some of the statements for initializing the LCD. (I haven't got anything to work yet, no pixels to show up or anything, still not able to initialize right, I'm sure it's newb errors, but any insight you could offer would be awesome!:))
http://www.xcore.com/forum/viewtopic.php?f=10&t=108
Post Reply