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
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
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
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
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 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
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.
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.
@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 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
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.
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,
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...
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)
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
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:> #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: