Hi everybody,

I was looking for some hardware for one of my projects and I have ordered some super cheap mp3 players from ebay.
This is one of them:

So what do we got inside? pop 2 screws and ta-da !!

IMG_20150107_092107

IMG_20150107_092145IMG_20150107_092217IMG_20150107_092027

 

 

 

 

Neat screen you have there!

IMG_20150107_092306

But what is this monster? There is absolutely nothing marked in the screen except “JL 1405” on the flat ribbon.
And the fact that it mass manufactured in china doesn’t help, it only has 13 pins, and two of them appears to be not used.

After a long search I fount this screen, and some info with it, that was very helpful.

2015-01-07 14_09_01-CompatWindow128x64_Graphic_lcm_1_2_mini_lcd

Well this is not the exact screen but it very similar,
It has 12 pins, when mine has 11, the CS pin is first (or last :)) in both, grabbed my multimeter and started tracing the lines, GND and VCC were in the same place, so I gave it a try.

This is a 11 pin (13, but 2 of then are NC), and here is the pinout:

LCD PINOUT

For some reason the call these LCM, not LCD, and its not OLED like it looks, its just have two colored background resulting the 2 color OLED look, and it has a single LED backlight.

The display driver is UC1701
3.3V operation (logic as well),
I can confirm that there are 1uF capacitors between CB1+/- pins and CB0+/- pins on the PCB – probably something to do with power supply (If you were to detach it from the PCB, its a good idea to connect the proper capacitors to the screen)
SPI Interface, using 5 pins.

The size: (estimated)

Full: Width – 23mm | Height – 20mm
Display: Width – 23mm | Height – 15mm
Actually Pixels – ~2.5mm crop on all sides

Using the u8glib library (Awesome stuff, Oliver), with the right constructor I have managed to make it work.

Hook Up:

MOSI – Arduino pin 11
SCLK – Arduino pin 13
A0 – Arduino pin 9
RST – Arduino pin 8
CS – Arduino pin 10

LED-/+ to GND and 3.3V with 15 Ohm resistor

I have de-soldered the battery because it was powering the Arduino without USB connected and I didn’t like it.

It is very important to use an Arduino with 3.3v operation voltage, or to use a 5V to 3.3V logic converter, or even voltage dividers, so you won’t burn the display.
I have a handy 5V/3.3V switch on my hardcore Uno, so Im safe.

Hello World:

Most handy are the constructors :


U8GLIB_MINI12864 u8g(10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RESET = 8
//U8GLIB_MINI12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RESET = 8
//U8GLIB_MINI12864_2X u8g(10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RESET = 8
//U8GLIB_MINI12864_2X u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RESET = 8

And this line: this sets the contrast of the screen (at first the screen was very dim but setting the contrast value to 190 gave the best results):


u8g.setContrast(190);

Full code:


#include "U8glib.h"
U8GLIB_MINI12864 u8g(10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RESET = 8
//U8GLIB_MINI12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RESET = 8
//U8GLIB_MINI12864_2X u8g(10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RESET = 8
//U8GLIB_MINI12864_2X u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RESET = 8
void draw(void) {
 // graphic commands to redraw the complete screen should be placed here 
 u8g.setFont(u8g_font_unifont);
 //u8g.setFont(u8g_font_osb21);
 u8g.drawStr( 0, 22, "Hello World!");
}
void setup(void) {
 u8g.setContrast(190);
}
void loop(void) {
 // picture loop
 u8g.firstPage(); 
 do {
 draw();
 } while( u8g.nextPage() );
 
 // rebuild the picture after some delay
 delay(50);
}

IMG_20150107_111013   IMG_20150107_105355

This is a low quality but pretty decent and VERY cheap mini display, so I liked it.

Ebay link

Happy hacking!