Hi,
I have written a driver API for SSD1308 based I2C OLEDs (can be used with SSD1306 too with no/only minor changes in the initialization routine) which I will use for my C3ii INS Stellaris Booster Pack (http://e2e.ti.com/group/microcontrollerprojects/m/msp430microcontrollerprojects/664688.aspx).
The driver is comparable to the 'Simple Display' example from the EVALBOT.
The API relies on my Stellaris I2C driver which you can find here: http://e2e.ti.com/support/microcontrollers/stellaris_arm_cortex-m3_microcontroller/f/473/t/235926.aspx.
The API allows displaying:
1.) Images (black&white)
The image needs to be a black&white .BMP-Image file which must be converted into a data array for use with the API. A little programm called 'LCDAssistent' is included in the attached .zip file which can be used for this task.
2.) Centered Text
3.) Strings
4.) It makes use of an undocumented SSD1306/1308 command called 'Double-Size-Font' (0xD6).
After receiving this command, the SSD1308 OLED controller displays each scan line of the first 4 text lines twice. This is resulting in a font which is 2 pages tall.
Using the 0xD6 command will not affect/alter the content of the SSD1308 GDDRAM! When in 'Double-Size-Font'-Mode, the 'Set Display Start Line' command is used to display the pages PAGE4 to PAGE7.
Double-Size-font Mode swirtched ON
display Start Line set to 0x32 (start of PAGE4)
Double-Size-Font Mode switched OFF and Display Start Line set back to 0x40 (beginning of the PAGE1)
EDIT (01/18/2012):
Added a new version of my I2C OLED API! The r03-release includes some new functions:
// Clears a partial row on the OLED display.
void Display128x64x1ClearArea(unsigned long ulI2CBase, unsigned long ulXStart, unsigned long ulXEnd, unsigned long ulY)
// Displays a length-restricted string on the OLED display at the current cursor position.
void Display128x64x1StringCurrentPos(unsigned long ulI2CBase, const char *pcStr, unsigned long ulLen)
// Set the Cursor to the specified position on the OLED display (GDDRAM address).
void Display128x64x1SetCursor(unsigned long ulI2CBase, unsigned long ulX, unsigned long ulY)
// A simple I2C based printf function supporting \%c, \%d, \%p, \%s, \%u, \%x, and \%X for use with OLED displays.
void I2COLEDprintf(const char *pcString, ...)
Here is the latest revison of the driver API:
0724.I2C OLED 128x64 - API_r03.zip
Please report any issues or improvements! Have fun with your OLED.
Kind regards
aBUGSworstnightmare