Implementing an OLED display

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
JoLo_284096
Level 4
Level 4
First like received

Hello all:

   

I have an application that actually has a LCD and working without problem. My customer wants to replace the LCD by an OLED display. I attach the datasheet and the application note for the new OLED display.

   

For the normal LCD (I mean,  Hitachi 44780 compatible, 4 bit-interface)  I placed on the schematic a Character LCD component and I followed Cypress Application Notes for this type of displays, but for the new OLED I havent found any information or application. As you can read in the documentation, the display use a RS0010 driver instead of Hitachi 44780, and are not fully equivalent

   

I have several questions:

   

(1) What component should I use for the OLED display?

   

(2) is there any Application Note for OLED displays?

   

(3)  what approach should I follow to implement this display on a PSOC5?

   

Thanks in advance,

   

Joaquin.

0 Likes
18 Replies
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

Link to datasheet of the OLED is not attached, please update. There are OLED modules on the market using other interfaces like I2C or SPI which could help you in getting a result faster with lesser PSoC pins. Depends mostly on the assumed count of sold devices.

   

When interfacing to a completely different display-driver you will have to re-write that piece of code. What kind of development board(s) have you got?

   

 

   

Bob

0 Likes
lock attach
Attachments are accessible only for community members.
JoLo_284096
Level 4
Level 4
First like received

Sorry...now with the documents.

   

Joaquin

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

There are many examples in the application notes. You will have to write your own driver, but that's not too much work with all the code snippets. You will have to select your Interface, 8 bit, 4 bit or serial SPI.

   

 

   

Bob

0 Likes
JoLo_284096
Level 4
Level 4
First like received

Ok, thank you.

   

Could you tell one or two aplication notes examples? I was looking for them using the  word "OLED" and I didnt find any usefull.

   

Regards,

   

Joaquin.

0 Likes
Anonymous
Not applicable

You don't need to change do anything if you are using OLED module with drivers included. 

   

Most modules are designed to be drop in replacement for HD44780 LCD module. 

   

The module you use seems to be HD44780 compatiable,  from software point of view, that should be little change -unless you SPI interface. 

   

For LCD modules, some needs to adjust the bias to get the correct contrast, but OLED doesn't need this.

0 Likes
JoLo_284096
Level 4
Level 4
First like received

Hi all,

   

H L, No, they are not compatible. OLED uses a driver which is light different to 44780.  I have an application running with the LCD module, so the first thing I did was to replace the LCD by  the OLED module, and I saw that they are not compatible, they dont have the same behaviuor.

   

Bob, please, could you tell me an Aplication Note using and OLED? It is just to see how they focus the issue.

   

Thanks in advance,

   

Joaquín.

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

When you type "OLED" into the "Keyword Search"-field on top of this page which will give you some results, but I think that this will not help you too much.

   

The best source for your driver are the examples in the .pdf you attached. All possible configurations are handled there, including the 4-bit and SPI versions.

   

When you start programming and get stuck, post your complete project and we will have a look at. To do so, use
Creator->File->Create Workspace Bundle (minimal)
and attach the resulting file.



Bob
 

0 Likes
ETRO_SSN583
Level 9
Level 9
250 likes received 100 sign-ins 5 likes given

A discussion here that might help -

   

 

   

www.cypress.com/

   

 

   

Regards, Dana.

0 Likes
Anonymous
Not applicable
        What kinds of issues did you find?   
0 Likes
JoLo_284096
Level 4
Level 4
First like received

Hi,

   

H L, if I use the same firmware for the OLED that I was using for the LCD (it is a 16x2) , the texts are not shown correctly, they appear shifted, nothing in the second file, etc...it is not readable anymore. The clear command does not work....

   

Sorry but still I am relatively new to PSOC, so,  to use the OLED, I understand that you recommend me:

   

* Do not use the component LCD_Char on the schematic

   

* Place individual output ports pins in the schematic and asigned them an appropiate pin of the cypress chip.

   

* Create a header with the pins definition according to the documentation on the Raystar Oled Application note, for example,

   

pin 3_5=RD

   

pin 3_6=R/W

   

...

   

and then, in a .c file, create functions to manage of the OLED as for example, Initial_IC(), WriteIns(), WriteData()....

   

Do you agree?

   

Thanks in adavance,

   

Joaquin.

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

This is principially the correct way.

   

You wrote

   

* Create a header with the pins definition according to the documentation on the Raystar Oled Application note, for example,

   

pin 3_5=RD

   

pin 3_6=R/W

   

This is handled a little bit easier: you may use symbolic pin-names which you reference in your C-file. At a different place in the IDE you assign real pins to your symbolic names. Very helpful when you are in need of changing pins due to layout constrains.

   

The functions you need to access your pins or group of pins are

   

PinName_Write(BitPattern);

   

 

   

Bob

0 Likes
JoLo_284096
Level 4
Level 4
First like received

Thank you for your fast reply...do you sleep sometime? je,je..

   

Once I finish (maybe next year) I will try to upload the files in case some can help.

   

Happy new year!!!

   

Joaquin

0 Likes
Anonymous
Not applicable

If you search the web, you may find existing C and h files to drive HD44780 type LED. copy those files and modify to your need.

0 Likes
JoLo_285951
Level 2
Level 2
First like received Welcome!

Dear All,

   

With some delay, I finish this job.

   

To work with and OLED you must have an schematic similar to that I have upload (OLED_schematic.png) and then assign the pins in your device as in figure Pin_Assigment.png, for example.

   

Then you can add to the project the following myLCD_Char.c/.h files and "include" in your main. These files come from  the original files that PSOC Creator creates whe you place a LCD_CHAR component , that is, files LCD_Char.c/.h. I copy this original files to myLCD_Char files and add a new function called "void OLED_Char_Init(void)". This function is the only different function to use with an OLED instead a LCD.

   

So, when yo want use an OLED just initialize the OLED with "OLED_Char_Init()". If you want to work in the same project with an classical LCD use "LCD_Char_Init()". The rest of functions and functionality remain the same. All the LCD C examples of Cypress should work with this in mind.

   

 If you need further details do not hesitate to post here or mail me (joaquin@cerroelectronic.com). Take this at it is, I am not an expert in PSOC Creator neither in LCD/OLED.

   

Hope this can help you.

   

Regars,

   

Joaquin.

0 Likes
Anonymous
Not applicable

 Can you post your initialization code from OLED_Char_Init(void)?  

   

I'm also trying to get one of these OLED's working on PSOC, and I'm having the same problems.  I've copied the sample initialization from the datasheet, with no luck.

   

 

   

Thanks!

0 Likes
lock attach
Attachments are accessible only for community members.
JoLo_285951
Level 2
Level 2
First like received Welcome!

Yes, no problem.

   

Please find attached a .zip file with all the data needed, it seems, I forgot last time to upload this file.

   

The code for OLED_Char_init() can be found in myChar_LCD.c file.

   

Hope it is usefull for you. If you see any mistake do not hesitate to post it.

   

Regads,

   

Joaquin.

0 Likes
Anonymous
Not applicable

 Thanks!

   

Yeah, that's almost exactly what I've been trying.  I do have it nearly working now.  Still some strange issues, but I'll figure them out.

   

One odd thing that's happening now, is that row 0 and row 1 will reverse.  Meaning that setting position(0,0) text will end up in line 2 and position(1,0) text will go to line 1.  This seems to happen based on seemingly meaningless differences in the initialization (like changing a delay from 10ms to 100ms in between two write(0x0) calls).  It's still better than before, when I couldn't get the row to change at all.

   

Another problem I'm still having, is I can't get the cursor to appear (solid or blinking).  Everything else looks good, that's the only big issue I've noticed.

0 Likes
JoLo_285951
Level 2
Level 2
First like received Welcome!

Hi,

   

Yes I had more or less the same problems as you describe. I was playing also with delays between commands but I didnt get any conclusion.

   

One important thing I learnt making test with OLED/LCD is to switch off/on th LCD (power off/on) to test new commands, because bad or malformed previous commands can disturb your actual test.

   

Regards,

   

Joaquin.

0 Likes