Hallo ,ws gibt zwar schon einen Beitrag über diese Displays aber nicht explizit für die PIC Controller . Zunächst einmal heiße ich Tino und bin Elektroniker . Leider hab ich von Programmierung noch so garkeine Ahnung und suche Leute die mit helfen da hinein zu kommen . Ich habe mir oben besagtes Display bei Reichelt gekauft und in Hardware gegossen :-) Es ist das 1" Color hab das jetzt zusammen mit nem PIC16F877 auf meinem Experimentrieboard aufgebaut . Ich habe hier den CCS Compiler und wollte die GLCD Routine so umschreiben dass man damit auch das OLED ansteuern kann . Jetzt weiß ich dank meiner Programmierkenntnisse garnicht wo ich da was ändern muss . Habe bisher nur Sachen mit 2 Zeiligen Textdisplays gemacht , da gabs (fast) immer was fertiges . Kann mir von euch vielleicht jemand helfen wi eich am besten anfange oder kann mir vielleicht jemand das so umschreiben dass ich es verstehe? Hab das Display im 6800 paralelmodus angeschlossen . D0-D7 liegen auf Port D , Enable liegt auf B5 , R/W auf B4 , DC auf B2 , CS auf B0 und Reset auf C0 .Der Rest ist so wie im Schaltungsbeispiel auf Seite 46 des SSD1332 angeschlossen Vcc ist an 12V VSS auf GND und VDD an 3,3v , den Pic betreibe ich auch mit 3,3V . Hoffe ich habe nicht zu viel Mist geschrieben... Mfg Tino aus dem wunderschönen Halle an der Saale
Hi, die GLCD routinen basieren alle auf der Funktion setpixel(x,y,color). wenn du diese auf dem pic einsetzen willst, musst du den glcd routinen diese funktion zur verfügung stellen. im datenblatt des displays sind die timings für die bedienung der von dir oben aufgezählten leitungen. jetzt musst du nur( am einfachsten mit einer wait schleife und den befhlen zum setzen der portpins) die signale aus dem datenblatt "nachbauen". es gibt mehrere konzepte des zugriffes. meisten wird byteweise geschrieben. du musst also eine lösung finden wie du ein pixel setzt oder rücksetzt ohne die restlichen 7 eines bytes aus dem display zu verändern. als erstes würde ich jedoch versuchen ein geziehltes byte im display zu beschreiben, mit einem beliebigen wert.... dazu ist schon die adressierung dieses bytes und der zugriff notwendig... ist dies geschafft, sollte ein geziehltes byte gelesen werden...read write timings wie gesagt im datenblatt... anschließend kannst du dirkonzepte überlegen wie man am besten nur einen pixel verändert, da sonst eventuell displaybereiche überschrieben werden, beim schreiben eines neuen wertes... ich hoffe das hilft ein wenig.... Martin ps.: ach ja, solltes du die möglichkeit haben assemblertext einzubinden erleichtert das die sache eventuell....
Mit dem Controller könnte es noch ein anderes Problem geben: Die 16F Typen sind erst ab 4V spezifiziert, darunter sollte man tunlichst 16LF nehmen. Aber aufpassen wegen der maximal zulässigen Taktfrequenz, die geht auch oft mit der Spannung runter.
Also ich habe einen PIC16F877 genommen der läuft ab 2Volt und ich betreibe ihn mit 3,3V . Habe ein 4Mhz Quarz für den Takt genommen . Ich habe mir eine Platine geätzt auf der der 3,3V Wandler das Display und eben die einzelnen Pins drauf sind . @Martin vielen Dank für deine Beschreibung doch leider kann ich damit so garnichts anfangen . Wie schon gesagt ich habe mit der ganzen Programmiererei bisher nicht wirklich viel gearbeitet . Bisher hat mich immer unser Programmierer unterstützt wenn ich mal was privates programmiert haben wollt , der ist aber leider nicht mehr da . Jetzt steh ich halt auf dem Schlauch was die speziellen Sachen angeht. Kann zwar die fertigen Module die es ja im CCS gibt in meine Programme gut einbinden ,steige aber leider bei allem anderen nicht durch . Mal ne Init zu ändern ist sicher nicht das Problem aber wenns dann schon wieder mit auslesen geht hörts schon auf . Vielleicht kann sich das ja einer von euch mal anschauen bei Gelegenheit . Danke Tino
hmmm komisch, du schriebst: -Ich habe hier den CCS Compiler und wollte die GLCD Routine so -umschreiben dass man damit auch das OLED ansteuern kann . -Jetzt weiß ich dank meiner Programmierkenntnisse garnicht wo ich da -was -ändern muss . und jetzt das du garnicht programmieren kannst/willst!?, verstehe ich nicht, dann hätte ich mir das ja auch sparen können. Martin
Dann lies dir mal den ersten Satz durch den ich oben geschrieben habe . Ist ja kein Vorwurf aber habe immer betont dass ich es nicht so kann dass ich es selber änder könnte . Dann hätte ich ja auch nicht gefragt .
hmm ok, ruhig bleiben: es hörte sich so an, als hättest du schonmal programmiert, wenig ahnung davon, und weißt nicht wo du eingreifen sollst. Also du hast den compiler, kannst den pic mit einem pc programmieren, hast die nötige hardware und das display, programmierst in c... wo liegt denn jetzt dein problem??? das programm in den pic zu bekommen, oder den compiler richtig zu nutzen, oder kannst du kein c programmieren - c hat ja nichts direkt mit dem pic zu tun?? verstehst du jetzt das Problem! das wiederspricht sich alles etwas! Martin
Das Problem liegt darin dass ich von Programmierung nicht viel verstehe . Hab so einige Sachen schon gemacht mit C und Pic Controllern nur immer sehr leichte Sachen . Jetzt wollte ich halt mal was schwereres machen ,nur sehe ich dass mir da einfach die nötigen Kenntnisse fehlen . Bevor ich die Lust bzw Geduld verlier dachte ich mir kann das mal jemand erklären bzw umschreiben . Ich würde mir das dann anschauen und anhand des gehende Codes andere Sachen lernen und ausprobieren . Mfg Tino
In vielen Fällen ist Umschreiben meiner Erfahrung nach komplizierter als neu schreiben. Da es insbesondere in C viele Wege gibt, das gleiche Problem zu lösen, variieren Programme unterschiedlicher Programmierer im Stil sehr stark, was es nicht unbedingt vereinfacht, fremden Code zu verstehen, zumindest, wenn man Anfänger ist. Ich würde empfehlen, lieber die besagte setpixel() Funktion komplett nachzubilden, d.h. eine eigene Funktion zu schreiben, die die gleichen Parameter benutzt, anstatt die vorhandene zu ändern. Dazu sind die Displays doch zu unterschiedlich. Falls es eine Funktion zur Display-Initislisierung gibt, muß diese natürlich auch ersetzt werden. Sollte ich mal das Kleingeld übrig haben, mir ein Musterexemplar eines solchen Displays zu kaufen (reizvoll ist es ja schon, läuft für mich aber trotzdem nicht unter "wichtige Anschaffungen", sorry) und damit auch noch etwas sinnvolles programmieren, stelle ich die Routinen gern zur Verfügung. Aber so wie ich mich kenne, ist da unter 2 Monaten nichts zu erwarten.
Also , wenn mir jemand wenigstens sagen könnte in welcher Reihenfolge ich die Init senden muss würde mir das schon weiter helfen . ich finfe mich in der Fülle an Informationen im Datenblatt nicht durch .
Ja das hab ich gesehen dass es da was gab nur leider immer für ihr beklopptes Development Kit was 200 Euro kostet und mit ner Windowssoftware anzusteuern ist . Ich find mich da nicht raus . Naja wenn mir da niemand helfen kann werd ich es wohl besser selber kaputt machen .... Mfg Tino
ohne viel Worte #define COLADR 0x15 // Spaltenadresse 0-95 #define ROWADR 0x75 // Reihenadresse 0-63 #define COSETA 0x81 // Kontrast für Farbe A Standart 0x80 #define COSETB 0x82 // Kontrast für Farbe B Standart 0x80 #define COSETC 0x83 // Kontrast für Farbe C Standart 0x80 #define MACUCO 0x87 // Master Current Control Standart 0x0F #define DISSET 0xA0 // Displaysettings für PICTIVIA 0x40 für 65K Farben #define DISTLI 0xA1 // Display Start Linie 0-63 Standart 0x00 #define DIOSET 0xA2 // Startreihe zum scannen Standart 0x00 #define DISMOD 0xA4 // Normal Display (0xA7 Inverse Display) #define MULRAT 0xA8 // Multiplexratio Standart 0x3F #define MASCON 0xAD // Mastercontrol für PICTIVIA 0x06 #define DISPON 0xAF // Display an #define DISOFF 0xAE // Display aus #define POWSAV 0xB0 // Powersave 0x00 = Standart 0x0C = Powersavemodus #define PHAADJ 0xB1 // Phase Justierung 0x74 #define CLKDIV 0xB3 // Clockteiler Standart 0xD0 #define GRAYSC 0xB8 // Graustufeneinstellung #define BINGRA 0xB9 // Interne Graustufentabelle verwenden #define VPAREF 0xBB // VPA Referenz 0x80 #define VPBREF 0xBC // VPB Referenz 0x80 #define VPCREF 0xBD // VPC Referenz 0x80 #define SETVCO 0xBE // VCOMH einstellen 0x3F #define DISNOP 0xE3 // Nop befehl void init_oled() { output_bit(RST,FALSE); delay_ms(10); output_bit(RST,TRUE); delay_ms(1); send_command(MACUCO) ; send_command(0x08) ; send_command(COSETA) ; send_command(0x80) ; send_command(COSETB) ; send_command(0x80) ; send_command(COSETC) ; send_command(0x80) ; send_command(DISSET) ; send_command(0x70) ; send_command(DISTLI) ; send_command(0x00) ; send_command(DIOSET) ; send_command(0x00) ; send_command(DISMOD) ; send_command(MULRAT) ; send_command(0x3F) ; send_command(CLKDIV) ; send_command(0xD0) ; send_command(PHAADJ) ; send_command(0x74) ; send_command(MASCON) ; send_command(0x8E) ; send_command(DISNOP) ; send_command(DISPON) ; send_command(COLADR) ; send_command(0x00) ; send_command(0x5F) ; send_command(ROWADR) ; send_command(0x00) ; send_command(0x3F) ; } void clear_oled(int x1, int y1, int x2, int y2) { send_command(CLEARWIN); send_command(x1) ; send_command(y1) ; send_command(x2) ; send_command(y2) ; delay_ms(1); } void set_pixel(int x, int y, int16 color) { send_command(COLADR) ; send_command(x) ; send_command(oled_width) ; send_command(ROWADR) ; send_command(y) ; send_command(oled_height) ; send_data(color >> 8 ) ; send_data(color ) ; } void main() { // PIC EINSTELLUNG init_oled(); send_command(DISNOP); clear_oled(0,0,95,63); while(1) { set_pixel(10,10,0xF8C2); } }
So es läuft ... bin ich froh . Kann es sein dass die Zeichenfunktion einen Fehler hat ? Im Datenblatt ist angegeben dass man das Rechteck auch ausfüllen kann . Leider zeichnet mit das Teil immer nur die Umrandung in der gewünschten Farbe und nicht die Füllung . Hat da vielleicht jemand ne Idee ? Mfg Tino
Hallo, habe mir auch solch ein einfarbiges 128*64 OLED Teil von Reichelt kommen lassen und versucht Kabel an die kleinen Zungen anzulöten. Leider ist es nun Schrott. Woher kann man passende Anschlussleisten bekommen? Gruß Jens
Hi guys I saw the nice sample code of Thorsten, unfortunately I'm working with other controller (SSD0323, the gray scale version), so that code doesn't work. I have checked all register in the code of Thorsten and there are only little differences. I have corrected these differences and the inizializzation commands, but the OLED remains however out. Perhaps the problem is the gray scale rather than the color. Unfortunately I have a very simple manual of my controller and I have not the manual of SSD1303. (In my manual, for example, there are not the commands related to the lines or rectangles, or also as to turn on a single pixel.) There and someone that has experience with SSD0323 controller? I'm working with PIC16F4550 and CCS PICC compiler. Thank to all and I'm sorry if I speak English. M.
Dear Sir, i am working on the SSD0323 based Pictiva OLED, can you please guide me through the code. Thank YOu
ich habe auch ein Pictiva OLED 128x64 mit SSD0323 Driver IC und möchte gern mit ein PIC teueren (analoge Signal graphisch anzeigen). Gibt es lib in C dazu?
Hallo! Timo bist du noch aktiv? Ist das Projekt abgeschlossen? kannst du mir evtl. Infos zukommmen lassen? Gruß evtl. auch die Applikation? (nur mal zum ansehen, habe noch nie was mit PICs gemacht) all-finder at gmx dot net, danke
Hallo, letzte Woche hat Osram die Einstellung der Produktion der Pictiva OLED Displays mitgeteilt ! Last Time Buy ist der 01.10.07. Gruß
...soll aber nicht heißen, dass nicht noch welche zu bekommen sind... auch nach dem 01.01.07... Rudi
Hallo , ist denn noch jemand an Projekten mit dem OLED dran ? Ich werde mich demnächst mal wieder damit beschäftigen . Mfg Tino
Hab meine Entwicklungen eingestellt, da ja leider die 1" nicht mehr zu bekommen sind :(
Das ist nicht ganz richtig . Es gibt immernoch Restbestände . Z.B. RS hat noch welche zu recht günstigen Preisen . Bei Farnell gibt es welche die auch recht günstig sind und vor allem größer als 1" in RGB . Vielleicht bestell ich mir davon mal eins und schaue was das taugt . Lg Tino
Bei RS gibt's die ja tatsächlich noch... Hatte in erinnerung das sich da auch geschaut hatte als es bei Reichelt vorbei war. Seltsam...
Es gibt also auch nach Anfrage bei RS noch Restbestände zu bestellen .Leider nicht in der Auswahl wie es sie bei Reicht mal gab . Ich werd dann doch gleich mal 2-3 Stück bestellen . Hab mir parallel auch bei Farnell mal ein OLED einer anderen Firma bestellt . Bin mal gespannt ob die mur das 128x160 Pixel RGB OLED wirklich liefern können. INteressant sind diese Dinger aber allemal . Zumal der Preis von nur 23 Euro für ein 1,5" RGB recht gerung ist . Es gibt von Densitron auch OLED`s bis glaub ich 3,1" in RGB . Wenn der Preis da ähnlich niedrig liegt werd ich mich auf jeden Fall mal damit beschäftigen . Die 1" die ich hier habe sind recht wenig und man erkennt da ja fast nichts drauf .
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.