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:
Nokia 6100 Display driver (PCF8833 controller)
-
- XCore Expert
- Posts: 754
- Joined: Thu Dec 10, 2009 6:56 pm
-
- XCore Expert
- Posts: 577
- Joined: Tue Sep 08, 2009 5:15 pm
Super video! Out of interest how long did it take you to develop?
-
- XCore Expert
- Posts: 754
- Joined: Thu Dec 10, 2009 6:56 pm
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 :).
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 :).
-
- XCore Addict
- Posts: 146
- Joined: Thu Dec 10, 2009 10:17 pm
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.
And it would be great if there were a link to your project in the list of Examples on the Sparkfun page.
-
- XCore Expert
- Posts: 577
- Joined: Tue Sep 08, 2009 5:15 pm
I must say that made me laugh out loud. I love how we have adopted the lolcats into our community. Great photos btw.
-
- XCore Expert
- Posts: 754
- Joined: Thu Dec 10, 2009 6:56 pm
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).
For more detailed information see the lcd.h header file or Jamie P Lynch's document (it's included).
-
- XCore Expert
- Posts: 754
- Joined: Thu Dec 10, 2009 6:56 pm
Correction: lcd.h should be nokia6100.h.
-
- XCore Addict
- Posts: 234
- Joined: Thu Dec 10, 2009 11:11 pm
- Location: Newcastle, UK
-
- Member
- Posts: 14
- Joined: Wed Dec 30, 2009 12:24 pm
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
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