Ansteuerung über hw SPI des Grafik LCD vom Nokia 3310. Features: Textausgabe, Pixel, Bilder zeichnen. Displayram wird im AVR zwischengespeichert. Der Code wird noch erweitert(vorerst Linien zeichnen und Textscroll). Updates gibt es demnächst bei http://www.deramon.de
Hallo Deramon, habe deinen Code mal gerade auf einem 3.3V ATMega16 laufen lassen, funktioniert (nach Änderung der PINS natürlich) super! Danke dafür! Gruß Matthias
auf meiner Homepage gibt es jetzt auch ein kleines Tool zum umwandeln von 1bit Bitmaps 84x48pixel in eine header Datei für mein Script bzw. in eine binäre Datei.
@Matthias: Kannst du evtl. die Datei von dir Posten, oder einen Auszug, welche Pinne du beim Mega 16 verwendet hast? Habe es nämlich mit einem Mega 16 versucht und nicht am laufen bekommen, einen Mega 128 habe ich nicht, und wollte es halt auf einem 16 versuchen... Gruss Sascha
hallo Deramon! Wir machen in der Schule als Projekt einen GPS-Empfänger und wollen die Daten über ein 3310-Display ausgeben. Meine Frage: Ist es möglich das Display mit einem AT89C2051 anzusteuern? Wird dein Bsp. von jedem µC-Compiler unterstützt und wieviel Speicher benötigt die Ansteuerung?? mfg 2 überforderte HTL-Schüler
@ Andreas: Das Bsp. ist für AVR MCs. Mit 8051ger MCs hab ich nicht allzuviel bisher gemacht, aber ich vermute das mit einer Anpassung der Ports und des HW SPI es funktionieren sollte. Zum Speicherverbrauch. Da man das Displayram nicht auslesen kann cached der MC die 504 bytes. Für eine reine Textausgabe kann man sich das cachen und somit 504 bytes SRAM sparen(ist eigentlich nur für Grafikfunktionen interessant, da man immer 1 byte also 8 Pixel an das LCD senden muss und ohne Cache beim setzen eines Pixel die restlichen 7 überschrieben werden) Im Programmflash werden mit PROGMEM die Bilder abgelegt, pro Bild 504 bytes. Ob es so eine funktion bei den 8051ger MCs gibt weis ich leider nicht, zur not muss man die Bilder dann im SRAM ablegen. Hier ein Auszug des gesamten Speicherverbrauchs: Size after: drm3310test.elf : section size addr .data 70 8388864 .text 2632 0 .bss 588 8388934 .noinit 0 8389522 .eeprom 0 8454144 .stab 3444 0 .stabstr 2947 0 Total 9681 Ich habe mir das eben mal in der Anleitung zu AVR-GCC angeschaut und wenn ich das richtig verstanden habe benötigt das Programm + 1 Bild 2632 bytes Programmflash, SRAM wären dann 588+70 = 658 bytes. .stab und .stabstr müssten dann die Debuginfos sein die aber nicht auf den MC geflasht werden.
Die Berechnung Flash/SRAM ist nicht ganz korrekt: .text + .data = ROM (Flash) Usage .data + .bss + (.noinit) + (stack) + (heap) = RAM Usage .text is your code .data is your variables with initialized values .bss is your variables without initialized values Also Flash = 2632 + 70 = 2702 Bytes RAM = 70 + 588 = 658 Bytes + (stack) + (heap) Für einen '51er kann der Speicherverbrauch (zumindest Flash) aber ganz anders aussehen. Volkmar
@Roman: Der macht die Pegelwandelung zwischen dem mit 5V laufenden AVR und dem mit 3,3V laufenden Display. KMT
Da der 2051er mit 3,3V lauft kann ich das somit weg lassen.. perfekt.. danke
Hallo Leute! Ich hab auch so ein Nokia 3310 display bei mir rumliegen. Ich hab schon versucht es anzusteuern, aber irgendwie funktioniert es noch nicht. Braucht man wirklich 3,3V Pegel oder reichen auch 3V? Gruss Daniel
Es sollte eigentlich ab 2.7V funktionieren (bis 3.3V). Thorsten
Hallo, Habe das 3310 Display am Mega8 angeschlossen, Pins in die Header file angepasst, und klappt (toll), aber nur für 50%. Mit Wiederstände die Logiknivo's angepasst, und mit eine LED die Versorgungsspannung vom Display auf 3,2V bekommen. Habe aber die Zeichen auf das Display in Spiegelbild ....?????..... Und nein, habe das Display richting montiert....... Jemand der weiß was hier das Problem ist??? MfG, Robert
Softwarefehler. Schau mal hier in der Codesammlung, da gibts fertige Routinen. Auf www.microsyl.com gibts auch was. Thorsten
Ich weis nicht wo da der Fehler ist. Ich habe das Display eben nochmal angeschlossen und 2 Bilder von der Ausgabe gemacht und da wird es richtig angezeigt: http://www.deramon.de/avr/nokia01.jpg http://www.deramon.de/avr/nokia02.jpg
Hallo, Anbei was ich sehe, aber dann viel scharfer..... Leider ist mir das Foto nicht so gelungen. Benützte avr-gcc (GCC) 3.3.2, Pins umdefiniert nach Mega8.... Die zwei Grafiken auf das Schrim werden auch falsch wiedergegeben... Veilleicht das das Display selbst das Problem ist..... MfG, Robert
Hallo, kann jemand sagen wo man diese Displays AUSSER BEI EBAY kaufen kann? Ich meine da größere Stückzahlen. Wo kauft die Nokia ein? Am liebsten direkt vom Hersteller. Armin
Probiersmal mit Sammelbestellungen aus China. Kostet Dich dann 3 inkl. Steuern und Versand. Aber!!! ab 1000 Stück! Ebay Tipp: Kauft bloss nicht bei Chipgigant!, Xullu! (EBAY) Das sieht auf den ersten Blick günstig aus, verlangt aber unkosten von 2 extra pro Display. Bei grösseren Mengen kann es auch passieren das über 40% defekt sind und der Typ Sie nicht zurück nimmt. Also meidet diesen Typen!
>Probiersmal mit Sammelbestellungen aus China. Kostet Dich dann 3 inkl. >Steuern und Versand. Aber!!! ab 1000 Stück! Gibts da einen Namen des Herstellers bzw. dieser Firma? Wäre toll. Armin
Hallo zusammen, habe einen Mega8L mit 3.68 Mhz an das Display angeschlossen, und das Programm von Deramon geladen. Leider kann ich weder x noch y Addr setzen. Das Display zeigt zwar den Text, aber dann fogen ein Punkt in der untersten Zeile danach ein Punkt eine Zeile höher.(0x80 und 0x40) D.h. Setxy wird nicht als Command sondern als Daten zum Display gesendet. Writecommand geht aber ansonsten, da das DSisplay ja initialisiert wird. Weiß jemand einen Rat ? Harald
Hallo Harald, ich hatte anfangs auch Probleme mit der Displayansteuerung. Auch bei mir wurde der Text nicht wirklich richtig dargestellt. Das Problem bei mir war, dass ich die MISO Leitung des ATmega als Steuerleitung für das Display verwendet habe. Nun habe ich einen anderen Portpin für dies Steuerleitung verwendet, MISO ist nun nicht mehr am Display angeschlossen, und der Text/Bild wird richtig angezeigt. Andi
Hallo Andi, danke für die schnelle Antwort. Ich habe jetzt PB4 auf PB2 geändert und jetzt geht es einwandfrei. Gruß Harald
Hallo, jetzt habe ich da mal die frage ob die ansteuerung was mit dem hardware spi macht oder es auf allen ports laufen würde. mfg tomafa
Hallo tomafa, die Ansteuerung wird mit dem Hardware SPI gemacht. Deshalb kann nicht jeder beliebige Port verwendet werden. mfg Andi
Hallo tomafa, ja, die Ansteuerung findet über Hardware SPI gemacht, aber im Internet gibt es aber Libraries, die auch Software gesteuerte SPI machen. Wenn ich zufälliger weise was finde, poste ich es. Aber schau mal mit google. Gruß Harald
Hi Deramon, ich habe vor ebenfalls eni Nokia-display an einem AVR zu betreiben. Habe auch aufmerksam deine Seite durchforstet und mir beide bibo's runtergeladen für 3310 und 6100. Weist du zufällig, ob das Display vom 3330 baugleich mit dem vom 3310 ist und ich deine Funktionen vom 3310 fürs 3330 verwenden kann?! Oder vielleicht hat es sogar schon jemand gemacht, und kann mir was dazu sagen. Danke im Voraus LittleCB
Hallo, hab mir gerade ein 3310 Display ins Auto eingebaut. Momentan werden noch keine richtigen Daten empfangen, daher "no data", aber in Zukunft (spätestens nächste Woche) werde ich dort Aussentemperatur, Batteriespannung, Seehöhe, Speed, Richtung in Grad,.... (GPS-Daten) anzeigen. Momentan habe ich die Anzeige in den Rückspiegel eingebaut, ist aber nur eine 7-Segment. Also freue ich mich schon auf die neue Anzeige. Ansteuern und Programmieren kann ich den Controller, ein ATmega8, über die serielle Schnittstelle mit Bootloader. Weiters werde ich mir noch ein Protokoll überlegen, mit CS usw. um Daten gezielt auszugeben. Unterstützt wird zur Zeit große Schrift (12x16), kleine Schrift (5x7), Display löschen, Text rechts, oder zentriert schreiben,.... mfg Andi
@ andreas: sieht täuschend echt aus, wie ein richtiger boardcomputer, bravo! wie hast du es mit der hintergrundbeleuchtung gemacht, el folie? oder leds-dann hast du aber vielleicht das plastikteil darunter abgeschnitten und als lichtleiter benutzt, oder wie? also, nochmals, sieht gut aus, ich wurde aber doch ein nokia 6100 color lcd nehmen und min. mega32, besser direkt mega128, kostet ja nur noch 10 eur; du wirst bestimmt mit float rechnen wollen und dann war mein mega16 mit 14 float-gleichungen 1.ordnung gleich voll :-(
@emil du scheinst dich ja ein wenig auszukennen. Wiest du vielleicht ob des Display eines Nokia 3330 dem Protokoll der Funktionsbibliothek eines Nokia 3310 gehorcht?! Möchte auch demnächst unbedingt loslegen. Applikationen gibt es ja sichtlich mehr als genug. LittleCB
@emil das mit der Hintergrundbeleuchtung war gar nicht so einfach. Anfangs wollte ich SMD LEDs verwenden, doch ich habe noch einige 5mm LEDs im Kasten gehabt. 4 davon genügen vollkommen. Den Lichtleiter, der über das Display hinausragt habe ich abgezwickt, da ich nicht von unten, sondern von der Seite hineinleuchten wollte. Doch die Leds haben einen so starken Leuchtkegel, dass das nicht sehr schon ausgesehen hat. Deshalb habe ich die LED Linse abgezwickt. Damit streut das Licht viel mehr und ich habe eine relativ gute Ausleuchtung ohne direkte Leuchtkegel. Ist zwar brutal, aber es funktioniert.... Das Problem bei der blauen Beleuchtung ist, dass diese relativ dunkel ist, hellblaue LEDs wären vielleicht besser, oder auch die weiße HG einen 6610 Displays... Ich hatte auch überlegt, ein Graphikdisplay zu verwenden, aber das wäre mir zu teuer gewesen. Ausserdem habe ich noch einige ATmega8 zuhause, die ich verwenden wollte. Das Display mit Controller wertet nur die seriellen Daten aus und zeigt diese an. Somit brauche ich dort keine große Rechenoperationen durchführen. Das erledigt die "Zentrale". Dort habe ich einen uralten 89S8252 verbaut, der die GPS Daten auswertet, Temperatur und Bordspannung mißt, und seriell an das Display sendet. Freut mich wenn es dir gefällt, war auch ziemlich viel Arbeit, das Display dort hineinzubringen. @LittleCB meiner Meinung nach ist das Display vom 3310 das selbe wie im 3310. mfg Andi
@LittleCB meine natürlich: meiner Meinung nach ist das Display vom 3330 das selbe wie im 3310
Hallo! Ich habe gerade einige Zeit damit verschwendet nach dem 74LVC245DW zu suchen, aber ausser Datasheets nicht wirklich was gefunden... Wo kann man den wohl beziehen? Gibt es auch Alternativen im DIL-Gehäuse? Danke für Antworten!
Habe mir jetzt ein anderes Display genommen, und klappt. Kein Spiegelbild oder anderes Fremdes verhalten. habe nur den Reset extern gemacht mit Wiederstand und Capacität. Tolle Sache das es so klappt. Zu die ganze 74LVC245 Geschichte, habe einfach die Wiederstände genommen als SpannungsTeiler. Dies ist schon hier irgendwo gemeldet. 3 Wiederstande von je 10K in Serie vom Atmel Pin nach Masse, und zwischen den ersten und zweiten gezählt ab die Atmel Pins die Nokia Pins angeschlossen. Klappt auch wunderbar, gemessen so etwa 3,1 - 3,2 Volt. Zu Spannungsversorgung ein LED in die Versorgungsleitung vom 3310 Display, und das klappt auch wunderbar. Gemessen so etwa 3,3 Volt. Dies alles nur im Fall der Mega nicht auf 3,3, Volt lauft.... MfG, Robert
Hi@all, ich such schon ewig lange nach einer möglichkeit texte auf einem handy LCD anzeigen zu lassen. Am besten über den Computer. Braucht man dafür noch was bestimmtes, oder geht das nur mit den Teilen von dem Handy? Ich hab noch n Nokia 3310 übrig und würde das auch gern machen...kann mir da jmd helfen? THX! MfG Sebastian O.
Google, http://forum.lcdinfo.com/viewtopic.php?p=2453 Nur das Display, andere Sachen vom Handy sind nicht nötig. Falls Sie Holländsich lesen könne, hier gibt es eine Lange Diskussion http://gathering.tweakers.net/forum/list_message/22326725 MfG, Robert
Danke für die schnelle Antwort. Ich hab bei google mehrmals gesucht, aber ich komm damit einfach nicht zurecht - ich hab keine Ahnung von den Controllern und so ein zeug. Ich hab vor ein paar Wochen mit dem LTP rumgespielt und ne LED steuerung gebastelt um die schaltung mit einem selbstgemachten Programm zu steuern. Mit dem ersten Link kann ich auch nicht so arg viel anfangen, weil jetzt die ganzen Abkürzungen usw. auch noch in Englisch sind :-) nicht dass ich kein Englisch kann, aber sowas in englisch...mhhh....naja. Was muss ich denn wo anschliessen? Ich hab 8Pins an dem Display. MfG Sebastian O.
noch was: hab mal das Bild angehängt. Das ist doch die Schaltung von Display zu LTP. Was ist das in der Mitte? Das Ding, wo alle leitungen durchgehen??? Und was brauch ich dazu alles? Sind die Teile "C1 2.2µF" und "C2 1µF" ELKOS? Ich raff da nicht durch. Bitte helft mir! Danke. MfG Sebastian O.
Das Ding in der Mitte ist ein IC (Integrierter Schaltkreis). Er heißt 7445. Da gibt es verschiebene Arten 74LS45, 74HC45,.... die aber alle die gleiche Funktion haben sollten. C1 und C2 sind zwar nicht als Elkos gezeichnet, aber du könntest welche verwenden. Gruß Elektrikser
Danke für deine Antwort, aber mir ist vorher was dummes passiert. Ich wollte einfach mal n paar Kabel dranlöten, dann is mit das Display gerissen! :-( Frage2: Kann ich das LCD vom Siemens C25 auch nehmen? Ich hab da vor kurzem mal was im I-Net gelesen, dass das irgendwie geht!?! :-/ MfG Sebastian O. UND FROHE WEIHNACHTEN AN ALLE! ;-)
dafuer musst du dir eine Libary bauen dann gehts ja oder auf dem Siemand Display ist auch der PCD8544 Controller dann kannst du auch diese Libary nutzen Gruss Jens
was ist eine Libary? :-/ Ich kenn mich da nicht so aus. Kann mir vielleicht jemand so ein Display zusammen bauen (wenn jmd noch eins übrig hat) und mir dann per post schicken? Ich zahl auch dafür ;-) MfG Sebastian O.
Hm wenn du ein Display am LPT betreiben willst würd ich dir nicht das Nokia display empfehlen, der aufwand ist zu gross und du scheinst schon am anschlag zu sein. Nimm stattdessen ein Handelsübliches Display mit 5 Volt pegel und Standart HD44780U Kontroller. Dazu erhälst du auf Wunsch eine zusäzliche serielle schnittstelle. In der Schweiz ist das bei www.vtec.ch erhältlich, müsste aber in deutschland auch zu bekommen sein.
So nach langem basteln läuft nun auch mein 3310 auf nen Atmega16. Tolles erstes Projekt g
@Sebastian: (und alle anderen, die ähnliches versuchen) Das Display des Siemens C25 ist kein Graphikdisplay, sondern ähnlich wie die Displays mit HD44780-Controller eines, das nur Zeichen an bestimmten Positionen darstellen kann. Daher kann dieses Display nicht anstelle der üblichen Nokia-Displays verwendet werden. Graphikdisplays sind von Siemens erst in der 35er-Serie verbaut worden, ein kleineres im C35 und M35 und ein etwas größeres im S35. Weiß wer, wie die Dinger anzusteuern sind?
@Rufus T. Firefly Danke für deine Antwort. Ich bekomm jetzt bald ein Display von einem Nokia 3210 und hab auch schon so eine Anleitung zum Löten von Display zu LTP. Ich hoffe ich bekomme da hin, sonst werde ich euch nochmal nach Hilfe beten ;-) MfG Sebastian O.
Hallo BITTE UM HILFE Ich spiele mich jetzt schon seit Stunden,... Auf einm Mega128 läuft die Library hervorragend, auf dem Mega8 nach umdefinieren der Pins, nichts,... Ich verwende folgende Pins für den Mega8: #define GLCD_SER_PORT PORTB #define GLCD_SER_DDR DDRB #define GLCD_SCLK PINB5 #define GLCD_MOSI PINB3 #define GLCD_SS PINB2 #define GLCD_CTRL_PORT PORTB #define GLCD_CTRL_DDR DDRB #define GLCD_DC PINB0 #define GLCD_CE_ PINB1 #define GLCD_RES_ PINB4 Was ist an der Belegung falsch ? Muß man sonst noch was ändern ? LG Michael
der fehler liegt in ->> #define GLCD_RES_ PINB4 pb4 ist miso der pin steht dir nicht mehr zur verfügung da der spi aktiv ist. du musst nen anderen port nehmen z.b.--> #define GLCD_CTRL_PORT PORTC #define GLCD_CTRL_DDR DDRC oder du schliesst die reset leitung mit an die des uC an
Hallo Habe jetzt folgendes probiert, hat aber auch nichts geändert,... #define GLCD_SER_PORT PORTB #define GLCD_SER_DDR DDRB #define GLCD_SCLK PINB5 #define GLCD_MOSI PINB3 #define GLCD_SS PINB2 #define GLCD_CTRL_PORT PORTC #define GLCD_CTRL_DDR DDRC #define GLCD_DC PINC0 #define GLCD_CE_ PINC1 #define GLCD_RES_ PINC2 LG Michael
Hallo John Nein AVCC habe ich nicht angeschlossen. Wo gehört der hin ? VCC bekomme ich vom STK500, welches ich auf 3,3 V gesetzt habe. Wie gesagt, mit der orig Pinbelegung und STK 501 funktioniert es wunderbar. Mit nur dem STK500 und dem Mega 8 ist das display wie tot. LG Michael
HI Also mit dem AtMega8 gebe ich jetzt auf. Hat jemand von euch es mit einem Atmega16 probiert ? Welche Pins habt ihr für das Display verwendet? LG Michael
Hallo Michael, am Anfang hat's auch nicht mit einem Atmega8 geklappt, aber nachdem ich die pins (speziell PB4) geändert hatte und ein neues Display genommen hatte gings. Leider war mein Lötkolben beim ersten Display zu heiß gewesen.AVCC ist übrigens Analog Spannung für den internen Analog Digitalwandler. Muß an Spannungsversorgung. Bei mir 3.3V, denn ich habe einen Mega8L8 genommen, damit fällt die Pegelwandlung zum Display weg. Allerdings wundert es mich, daß noch keiner eine Platine gemacht hat, die einfach hinten auf das Display aufgeklebt wird, damit würde man viele Fehler beim löten vermeiden.Wäre sicherlich ein Hit. Man könnte darauf auch LED's für die Hintergrundbeleuchtung vorsehen.Leider hab ich bis jetzt noch nicht selber geätzt, aber daß soll sich mal ändern. Gruß Harald
Hallo Harald Mein Dispplay ist auch defekt. WEIN,WEIN,... Noch dazu war es ein blaues. Habe noch ein 2es und damit genau das gleiche, am 128er funktionier es am 8er nicht. Wärst Du so nett und mailst mir dein "Port Mapping" für den Atmega8. Platine ist kein Problem. Spiele derzeit noch mit dem STK, sobald das aber beendet ist, mache ich eine. LG Michael
Hallo Michael, Ja, das kenn ich. Ich habe auch fast geheult, als ich mein erstes Display zerschossen habe. Die Herstellung der Platine dürfte eigentlich nicht so schwierig sein.Sie sollte nach unten ein wenig länger sein, damit man einen Stecker dranlöten kann. Damit ist diese sogar einseitig machbar. Sobald ich Zeit finde mach ich mich mal ans Eagle und male was. mein Portmapping ist folgendermasen: // Lcd Port Settings #define GLCD_SER_PORT PORTB #define GLCD_SER_DDR DDRB #define GLCD_SCLK PINB5 #define GLCD_MOSI PINB3 #define GLCD_SS PINB2 #define GLCD_CTRL_PORT PORTB #define GLCD_CTRL_DDR DDRB #define GLCD_DC PINB2 #define GLCD_CE_ PINB1 #define GLCD_RES_ PINB0 damit funktioniert es wunderbar. Mit welcher Taktfrequenz arbeitest Du ? Spiel mal ein wenig mit dem Contrast ! Also es funktioniert definitiv. Meinen Mega8 takte ich momentan mit 3.6864 Mhz. Kontrolliere mal deine Fuses. Gruß Harald
Hallo, ich habe ein Problem bei Einstellen des Kontrast. Wenn ich das versuche, dann sehe ich am Display keine Veränderung. Auch eine Veränderung des Temperaturkoeffizienten bewirkt keine sichtbare Veränderung am Display. Vielleicht hat jemand Rat, Danke mfg Andi
Hallo @Harald DANKE!!! Werde es Heute nach der Arbeit gleich probieren. Ich verwende den internen Takt von 4 Mhz, damit der MC auch noch mit 3,3V funzt. Meinen DS18S20 kann ich auch bei beiden Prozessoren auslesen. @Andreas http://free-vz.t-com.hr/Ivica-Novakovic/Nokia%20Lcd%20Termometar.htm Der arbeitet zwar mit einem Pic, aber kann das Display auch invertieren. Das dürfte automatisch mehr Kontrast bringen. @All Mittlerweile habe ich mit beiden blauen 3110er LCDs ein Problem, gerade das "normale" graue funzt noch zuverlässig. Aus "bitterster" Erfahrung kann ich nun mitteilen, sobald man das Lcd angeschlossen hat und es funktioniert, Heißkleber drüber was nur geht. So habe ich das mit meinem grauen 3110 gemacht und dann verhält es sich auch zuverlässig. Bei meinen beiden blauen, wollte ich das nicht, da für diese eine Platine vorgesehen waren. HEUL,.... Na ja, wenn man sich mit den Dräthen spielt, reagiert es wenigstens noch manchmal. Die Kontaktierung zum IC ist wirklich superempfindlich auf Stress (mehr noch als ich,...). Dabei sind die blauen LCDs noch die geklebten. Die meißten die man Heutztage auf Ebay bekommt sind solche wo die Kontakte einfach runterfallen, sobald man das Glasdisplay in der Hnd hält. Daher bin ich davon ausgegangen, das die etwas mehr Stress aushalten. Vielleicht hilft ja auch etwas Kontaktspry auf die Pins zu sprühen. Hat von Euch jemand eine Idee wie man die noch retten könnte ? LG Michael
Hallo Harald, danke für deine schnelle Antwort. Ich habe mir die Library selbst erstellt. Die Initialisierung siehr folgendermaßen aus: //********************************************************************** ******* // Init the display //********************************************************************** ******* void LCD_Init(void) { // D/C und Reset as output DC_OUTPUT; RESET_OUTPUT; // reset LCD RESET_LOW; Delay_ms(1); RESET_HIGH; // enter extended Functionset LCD_WriteCommand(LCD_FUNCTIONSETEXT); LCD_WriteCommand(LCD_SETBIAS | 0x03); LCD_WriteCommand(LCD_SETVOP | 0x10); LCD_WriteCommand(LCD_SETTEMPCOEFF | 0x01); // enter normal Functionset LCD_WriteCommand(LCD_FUNCTIONSET); LCD_WriteCommand(LCD_SETDISPLAYNORM); // reset whole display RAM LCD_Clear(); } Danke für deine Hilfe mfg Andi
Hallo Andreas, bitte probiers mal mit folgenden Werten: BIAS 0x13 // Bias 1:48 TEMPCOEF 0x06 // TF = 2 SETVOP 0x80 Gruß Harald
Hallo Harald, danke für deine Hilfe. Ich kann die Werte erst am Abend testen. Aber dann melde ich mich wieder! mfg Andi
Nochmal an alle die Probleme haben: evtl. müsst Ihr das Register SPCR ändern. Dort wird der Teiler für die Frequenz festgelegt. Wenn Ihr mit 16 Mhz arbeitet, solltet Ihr nicht den kleinsten Teiler nehmen. Die Auswahl der Taktrate erfolgt wie folgt: SPI2X SPR1 SPR0 SCK Frequenz 0 0 0 fosz/4 0 0 1 fosz/16 0 1 0 fosz/64 0 1 1 fosz/128 1 0 0 fosz/2 1 0 1 fosz/8 1 1 0 fosz/32 1 1 1 fosz/64 SPR1 und SPR0 sind in SPCR zu finden, SPI2X (Double SPI Speed Bit) liegt in SPSR (SPI Status Register). Bei 3.6864 Mhz sollte es in etwa so aussehen: SPCR = (1<<MSTR)|(1<<SPE)|(1<<SPR0); Gruß Harald
Hallo Harald, ich habe die Routinen jetzt mit deinen Werten probiert, hat aber nichts gebracht. Der Kontrast verändert sich nicht. Auch mit dem Programm von Thomas ändert sich nichts. Es scheint, als ob das Display den erweiterten Befehlssatz nicht unterstützt. mfg Andi
Hallo Harald Mit deiner Belegung funktioniert es auch mit dem Atmega8! DANKE!!! Habe auch eines von den blau/weißen LCDs retten können. Das zweite scheint leider über dem Jordan gegangen zu sein. Schaut so aus als könnte ich jetzt mit meinem eigentlichen Projekt beginnen. Danke für die Hilfe. LG Michael.
moin! kurze bitte an euch: könnte mir jemand vielleicht nen binfile mit dem democode von deramon (compiliert für mega128) schicken/posten, habe bisher nur in asm gecoded und mit dem winavr c package bekomm ich den mist irgendwie noch nicht compiliert(sollte doch eigentlich klappen?). so könnte ich schoneinmal sicherstellen, das meine hardware funzt, (hab mir sogar nen stk501 spendiert) mein dank an euch! j.
Moin Moin, ist die obige Pin Belegung von Harald richtig, weil dort sind ja GLCD_SS und GLCD_DC beide auf PB2 gelegt ? Grüße, Ralf
Hallo Ralf, ich habe wirklich einen Port doppelt definiert, aber der zweite hat keine funktion und wird nicht angesprochen. Daher kein Problem. Es geht auf jedenfall. Gruß Harald
Hallo Ralf, man sollte erst mal überlegen, bevor man mit dem schreiben anfängt (:-(( Natürlich werden beide Deklarationen im Programm benutzt, sind aber nur zur Unterscheidung ihrer Funktion anders benannt. Sonst bräuchte man auch PORTB nicht doppelt definieren (SER und CRTL). Gruß Harald
@Harald In der glcdn_spiInit wird einmal ein sbi(GLCD_SER_DDR, GLCD_SS); gemacht und unter anderem in der glcdn_InitDisplay wird ein sbi(GLCD_CTRL_DDR, GLCD_DC); gemacht. Das würde ich nun nicht nicht angesprochen nennen, gebe aber trotzdem zu, ich hätte noch tiefer in der Code einsteigen müssen, um dann erst zu fragen. Wann Du sagst, es funktioniert so, glaube ich es und warte nun auf meine Nokia Displays. Grüße Ralf
Hallo Ralf, das mit dem überlegen war nicht auf dich gemünzt, sonder auf meine erste Antwort. Gruß Harald
Hallo, ich habe gerade die Schaltung nachgebaut und sie hat auf anhieb funktioniert. Nur stimmt irgendwie der Kontrast nicht. Ich verwende einen ATMEGA32, @16MHZ, alles bei 3,3V . // Lcd Port Settings #define GLCD_SER_PORT PORTB #define GLCD_SER_DDR DDRB #define GLCD_SCLK PINB7 #define GLCD_MOSI PINB5 #define GLCD_SS PINB4 #define GLCD_CTRL_PORT PORTB #define GLCD_CTRL_DDR DDRB #define GLCD_DC PINB4 #define GLCD_CE_ PINB1 #define GLCD_RES_ PINB0 zwischen Vout und GND habe ich einen 4,7uF Elko angebracht. + an Vout! Ich sehe zwar "Nokia 3310", Bild und TestLCD, allerdings habe ich immer noch horizontale, schwarze Querstreifen auf dem Display. Wenn ich mit meinem Finger die beiden Pins des Elkos brückte, dann kann ich über den Druck den Kontrast so abschwächen, dass die schwaren Streifen verwinden und die Anzeige perfekt ist. Leider habe ich im Moment keinen 1uF Elko da, sonst würde ich es damit auch noch probieren. Liegt es wirklich am Elko? Bekommt ihr die Streifen auch, wenn Ihr den Elko z.B. ausbaut oder vergrößert? Danke Cu Trucki
Durch SerienSchaltung von zwei Elko's wird die gesammte Capazität kleiner.... Gleiche Berechnung wie zwei Wiederstände Parallel...... Zwei 4,7uF Elco ergibt dan so etwa 2uF.... Weiter, In die Routine glcdn_InitDisplay() den KontrastWert anpassen // Set Contrast glcdn_Contrast(0x20); Bischen 'RumpSpielen' mit den Wert, hat bei mir Prima Funktioniert... Robert
Hallo Robert, danke für deine Hilfe! Jetzt ist die Anzeige Glasklar! Hätte ich ja eigentlich auch selber drauf kommen können! Danke noch mal! Cu Trucki
Hallo ich kann den COde nicht Kompilieren. Fehler: 8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=drm3310test.o -std=gnu99 drm3310test.o drm3310.o --output drm3310test.elf -Wl,-Map=drm3310test.map,--cref -lm drm3310.o(.text+0x8): In function `glcdn_spiInit': D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:24: undefined reference to `sbi' drm3310.o(.text+0x14):D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:25: undefined reference to `sbi' drm3310.o(.text+0x20):D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:26: undefined reference to `sbi' drm3310.o(.text+0x2c):D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:27: undefined reference to `sbi' drm3310.o(.text+0x38):D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:31: undefined reference to `inp' drm3310.o(.text+0x4a): In function `glcdn_spiSendByte': D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:37: undefined reference to `cbi' drm3310.o(.text+0x5c):D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:43: undefined reference to `sbi' drm3310.o(.text+0x92): In function `glcdn_WriteCommand': D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:86: undefined reference to `cbi' drm3310.o(.text+0xc8): In function `glcdn_WriteData': D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:78: undefined reference to `sbi' drm3310.o(.text+0x17e): In function `glcdn_InitDisplay': D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:49: undefined reference to `sbi' drm3310.o(.text+0x18a):D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:50: undefined reference to `sbi' drm3310.o(.text+0x196):D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:51: undefined reference to `sbi' drm3310.o(.text+0x1a2):D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:54: undefined reference to `cbi' drm3310.o(.text+0x1ba):D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:56: undefined reference to `sbi' drm3310.o(.text+0x280): In function `glcdn_PutStrXLine': D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:144: undefined reference to `PRG_RDB' drm3310.o(.text+0x320): In function `glcdn_ShowImage': D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:166: undefined reference to `PRG_RDB' make.exe: *** [drm3310test.elf] Error 1 Ich benutze WINAVR 2.0.5.48 Programmers Notepad 2 Kann mir jemand helfen??
sbi,cbi gibts nicht mehr => ändern oder old_macros.h nehmen :-) wahrscheinlich meistd du diese stelle: GLCD_SER_PORT |= (1<<GLCD_SCLK); GLCD_SER_DDR |= (1<<GLCD_SCLK); GLCD_SER_DDR |= (1<<GLCD_MOSI); GLCD_SER_DDR |= (1<<GLCD_SS); prg_rdb ist nun pgm_read_byte dann läufts!
Hallo Leider ist es nicht nur sbi und cbi, die haben auch noch andere macros entfernt. Seit ich umgestiegen bin, verwende ich ein compatibility.h header file um meinen code abwärtskompatibel zu halten. Etwa so #ifndef cbi #include "compatibility.h" #endif Dadurch kann ich mit der "alten" Libc auf meinem laptop und der neuen auf den desktop compilieren ohne was ändern zu müssen. LG Rubi
Hallo, in der Header Datei steht auch etwas von einem SS anschluß?! Leider finde ich diesen aber nicht am Display. Kann ich den Portpin der auf SS geht auskommentieren? Danke
naja, lass es einfach stehen, falls den spi port für was anderes auch nochmal verwenden willst, ich hatte mir den quelltext damals so kommentiert: #define GLCD_SS PINB0 //slave port select input, wenn ss ausgang ist, dann keinen einfluss aufs spi(avr151,p4) hasts denn jetzt compilieren können?
Vielen Dank, kompiliern konnte ich es mit eurer hilfe. Ich werd es aber erst am Wochenende Flashen, und dann bin ich ja mal gespannt. Ach ja, ich MUSS aber die richtigen Pins vom Controller nehmen, oder? (Mosi, SCK, etc. da ja nur diese Zugriff auf das Interface des Controllers haben?!?) Viele grüße
Hallo, ich versuche verzweifelt den Code aus dem Eingangsposting zu compilieren, aber es will auch nach stundenlangem rumprobieren einfach nicht gelingen (weder mit WinAVR unter wine noch mit cdk-avr-gcc). Hat jemand zufällig ne fertige .hex für den mega8, die er hochladen kann (und dann das Pinout verraten für das sie compiliert ist...) Bisher habe ich nur mit Assembler programmiert, deswegen bin ich bei der Fehlersuche total aufgeschmissen... Gruß Tobias PS: Ja ich habe bemerkt wie alt dieses Thema schon ist...
We aske about Working mobile just the internal mobile 3310 without the battry , charger, box, caver. Can we have the price of that
Deramon wrote: > Ich weis nicht wo da der Fehler ist. Ich habe das Display eben nochmal > angeschlossen und 2 Bilder von der Ausgabe gemacht und da wird es > richtig angezeigt: > http://www.deramon.de/avr/nokia01.jpg > http://www.deramon.de/avr/nokia02.jpg Hi, sieht ja toll aus. Wie wird es am Atmega angeschlossen? Danke im Voraus.
Ich habe ein 3310 und ein 3510 Display bei mir am Laufen. Übrigens spare ich mir die Umwandlung auf 3,3 Volt und betreibe das Display direkt mit den 5V vom PIC. Bislang ohne Probleme. Tip: Wenn ein Display mal nicht will, so kann das am defekten dc/dc Schaltkreis im Displaycontroller liegen. So habe ich auch eins.-> Über einen 8,2k Ohm Widerstand den Vout an 12 Volt anschliesen und staunen. Das Display läuft wieder! Gruß Meik (Hab meine Login Daten gerade nicht parat, deshalb Gast) @frank B. lies mal etwas weiter oben, falls es noch aktuell ist(01.10.2007)
Danke für den Tipp, bei mir sind es aber ca 25K,bis der Kontrast stimmt...
Scheint mit der Art des defektes zu tun zu haben. Einfach mal verschiedene Werte testen. Wenns ansonsten eh defekt ist kann man nichts mehr kaputt machen.
Hallo, ich hab eben mal probiert das 3310 display anzusteuern allerdings bleibt es einfach schwarz hab nen spannungsteiler aufgelötet und die pins an einem atmega portC angeschlossen ( im programm geändert) sollte es nicht schon schwarz anzeigen wenn ich da den reset sowie v+ und gnd an mein netzteil anschließe ? gruß martin
nach langem suchen hab ich grad was tolles gefunden... wer eine gute Lib benötigt, die findet man hier: http://bluematrixi.bl.funpic.de/html/meinwebzeugs/index.php/elektronik-avr/lcd-display-nokia3310
anscheinend war die Lib gestern off... aber jetzt wieder da
Abend, hab grad gesehn, dass meine Version der Bibliothek schon hier verlinkt ist. Vielen Dank Paule da sich in nächste Zeit noch einiges auf der Seite ändert, ist es besser, man nutzt den allgemeinen Link auf die Startseite und dann einfach auf "Display Nokia 3310" http://bluematrixi.bl.funpic.de/ Über das Display kann ich sagen, dass es super ist. - Es ist einfach anzusteuern - man kann viel realisieren - für normale Projekte ist die Größe ausreichend - ein kleiner Prozessor reicht aus danke an all die, die damals das ganze Projekt begonnen haben. Grüße martin
Hier die neuste Version von der Bibliothek Nokia3310, diesmal sind alle möglichen Funktionen enthalten für kreise, Linien, Texte, Bilder und und und... einfach mal testen. ich würd mich freuen, wenn jemand die bibliothek nochmal etwas überarbeiten könnte... also nochmal nachsehen was man noch verbessern könnte. ansonsten findet man immer die aktuellste Version hier: http://www.jtronics.de/elektronik-avr.html Unter der Rubrik Boards gibt es auch noch ein speziell für das Display entwickletes Board. Dieses ist für kleinere Mess-, Steuer- oder Reglungsaufgaben in Verbindung mit dem Display gedacht. Funktioniert super! Habe damit selber mehrere Geräte in Betrieb. wer interesse hat einfach melden... Viel Spass damit martin
Hi! Ich hoffe mal der Thread ist nicht zu alt, möchte ja nicht zum Leichenfledderer werden. Hat aber trotzdem noch was mit dem Ursprungsthema zu tun. Erstmal danke an Martin für die Library! Ich habe da aber noch ein paar Probleme die zum Laufen zu bekommen. Zu meinem "System": Atmega328P an 3310 LCD aus Ebay Stromversorgung 3,3V aus dem Arduino Programmierung über AVR Studio 6 und AVR ISP MkII Zu meinem Problem: Ich habe die Library heruntergeladen und dann in meinen Projektordner entpackt. Den Inhalt der main.c in mein Hauptprogramm kopiert. In der Nokia_3310.c musste ich folgende Zeile einfügen: #include "Nokia_3310.h". Dann findet er zumindest schonmal alle Dateien. Dann noch das "static" vor den Variablen, z.B. für das logo in "const" umwandeln. Dann kommen aber lauter Warnungen in der "DateinameDesProjekts.o". Fehler ist "first defined here". Irgendeine Lösung? Ich bin da echt am Verzweifeln... Danke schonmal für eure Hilfe!
schau mal, ob das first defined sich auf die gleiche codezeile/datei bezieht. dann musst du durch eine #if-klammer sicherstellen, dass das #include nur einmal abgearbeitet wird
manni schrieb: > wo ist denn die Funktion sbi definiert? sbi ist ein Assembler Befehl, wie kommst du auf Funktion? hast du konkretere Fragen aktuell? ich steuere lieber per Arduino LIB die Nokia LCD 5110 5V tolerabel (rote Platinen)
Ja ich hab mir so diese Nokia 5110 / Phillips Display gekauft. Hat ja 8 Pins RST CE DC Din Clk Vcc HL Gnd. Ich habe den Code aus der drm3310test.c in eine neues AVR Studio 6 Projekt kopiert. Neuer Dateiname Display.c Dort ist Mainfunktion drin. Um nicht auch noch die die drm3310.c ins AVR Studio zu importieren, habe ich den Code aus dieser Datei auch kopiert und ebenfalls in die neue Datei Display.c kopiert. Dann habe ich die Header Datei in AVR Studio 6 bei dem Projekt Display hinzugefügt. Offensichtlich muss man laut dem Debugger einige Variablen in der Header-Datei auf static setzten, das ich auch gemacht habe. Würdet ihr mir bitte bestätigen, dass das bisher so richtig ist? Nun ist mein Problem, dass der Debugger mir die Meldung ausgibt: "undefinded referece to 'cbi'". Was ist die Ursache für diese Fehlereintrag? Kann man diese Displays auch mit 5V betreiben? (Sowohl Spannungsversorgung als auch Datenleitungspegel?)Ich habe bisher überall gelesen, dass 3,3V das Max. ist, auch im Datenballt vor allem bei den logischen Eingängen! Manni
manni schrieb: > Würdet ihr mir bitte bestätigen, dass das bisher so richtig ist? wie denn ohne DEINEN Code?
manni schrieb: > Hier der Code > > Danke wo kommt der her?
1 | void glcdn_spiInit(void) |
2 | {
|
3 | // Init Serial Ports
|
4 | sbi(GLCD_SER_PORT, GLCD_SCLK); |
da fehlt die Funktion sbi() oder das #define dazu: Beitrag "sbi und cbi in C" https://www.mikrocontroller.net/articles/AVR-GCC "np(), outp(), sbi() und cbi() werden in der aktuellen Bibliotheksversion nicht offiziell unterstützt (man muss eine spezielle Header-Datei einbinden(deprecated.h)." http://www.atmel.com/webdoc/AVRLibcReferenceManual/group__deprecated__items_1ga014ef751e83f97569c06f3cdd888f3f7.html
Reicht es auch wenn ich das #define sbi... einfach in meine Display.c Datei reinschreibe. Steht im dem Head-File noch mehr als das #define?
oder das in die drm3310.h
1 | #define sbi(port,bit) \
|
2 | (port) |= (1 << (bit))
|
in der drm3310.h hinzufügen? Geht das?
manni schrieb: > #define sbi... einfach in meine Display.c > Datei reinschreibe. wenn du magst oder musst (um nicht zuviel zu ändern): #define sbi(port,bit) (port)|=(1<<(bit)) ehrlich ich habe es mir angewöhnt es in pur C zuschreiben:
1 | // in PINS_H
|
2 | #if defined(__AVR_ATmega328P__)
|
3 | #define LED_ARDUINO 5
|
4 | #define LED_ARDUINO_DDR DDRB
|
5 | #define LED_ARDUINO_PORT PORTB
|
6 | #define LED_ARDUINO_ON LED_ARDUINO_PORT|=(1<<LED_ARDUINO)
|
7 | #define LED_ARDUINO_OFF LED_ARDUINO_PORT&=~(1<<LED_ARDUINO)
|
8 | #endif
|
9 | |
10 | // in prg.c oder prg.ino
|
11 | #ifdef LED_ARDUINO
|
12 | LED_ARDUINO_DDR |= (1<<LED_ARDUINO); |
13 | #endif
|
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.