Forum: Projekte & Code The Siemens S65 132x176, 65536 color display with AVR


von Christian K. (christiank)


Angehängte Dateien:

Lesenswert?

Hallo,

hier ein einfaches Demo Program für Atmel AVR zur BitMap Ausgabe auf
das Display des Siemens S65/M65/CX65/SK65 Mobiltelefon. Dieses Display
gibt es bei diversen Quellen recht günstig als Ersatzteil zu kaufen.
Preis derzeit z.B. 10EUR beim Internet Versteigerer zum sofort kaufen.

Die weitergehende der Software und Hardware findet sich hier:
http://www.superkranz.de/christian/S65_Display/DisplayIndex.html

Dort gibt es auch die Quelltexte für die angepasste glcd die
ursprünglich für das Nokia 6100 Display entwickelt wurde.
http://www.mikrocontroller.net/forum/read-4-74872.html#new


Have Fun
  Christian

von Fabian T. (ape)


Lesenswert?

Ich hab mir auch mal eins bei ebay für 10EUR geordert, hab leider zu
spät gemerkt das bei diesen Displays der Artikelzustand als gebraucht
beschrieben ist... Naja ich bin gespannt für den Preis kann man ja
nicht sehr viel falsch machen :)

von Joachim B. (joachimb)


Lesenswert?

Hallo Christian,

Du hast in Deiner Webseite
http://www.superkranz.de/christian/S65_Display/DisplayIndex.html
die Tag-Klammern zu den verlinkten Seiten etwas unglücklich gesetzt.
Der IE6 verweigert deshalb die Links.

Ansonsten sehr gute Arbeit!

Gruß
Joachim

von Christian K. (christiank)


Lesenswert?

oh ja, habe die schliessende Klammer(n) vergessen...
Ich hab's repariert.

Leider habe ich zuhause keinen IE und kann das nicht testen... Mozilla
hat das nicht gestört.

Grüße
  Christian

von Andy (Gast)


Lesenswert?

Und ich dachte die ganze Zeit, dass die Seite noch nicht
fertig ist.
Der hier gepostete Source-Code ist für mich nur schwer
zu verstehen (C mit ASM kann ich noch nicht so gut)
Durch deine Homepage ist mir der Ablauf der Display-Ansteuerung
endlich klar geworden.

Andy

von MartinK (Gast)


Lesenswert?

Hallo Christian,

in den Startsequenzen Init1 und Init2 sind pro Reihe eine
unterschiedliche Anzahl Kommandos enthalten.
Hat dies etwas zu bedeuten, muss ich außer den 7 ms zwischen
Init1 und Init2 noch andere Zeitintervalle einhalten?
Wie hoch kann die minimale bzw. maximale Taktfrequenz der
seriellen Ansteuerung sein?

MartinK

von Christian K. (christiank)


Lesenswert?

Hallo,

die Aufteilung in verschiedene Reihen habe ich gemacht, weil ich
vermute dass jede Zeile ein Command ist.

Die Software (lcd.asm) schickt die Sequenzen einfach byte für byte als
grosses Packet.

Ich benutze 8MHz SPI clock, dürfte kein Problem sein, da das Display im
Original mit 13MHz benutzt wird. Es funktioniert aber auch ohne double
clock bit und mit 1/16 Teiler.

Grüße
  Christian

von Kay (Gast)


Lesenswert?

Hi,

ist es auch möglich mit bascom dieses LCD anzusteuern ? Besser gefragt,
hat dies schon jemand gemacht ?
( Wird schon gehen, nur wie ? )

mfg Kay

von Hubertus (Gast)


Lesenswert?

Naja, die Ansteuerung hat im wesentlichen ja nichts mit der Ansteuerung
zu tun. Bascom wird nur um einiges mehr Code produzieren, sollte aber
trotzdem funktionieren.

von Hubertus (Gast)


Lesenswert?

So, ehe unser Oberguru Jens Dinspel wieder aus der Bahn geworfen wird*,
hier eine korrigierte Fassung meines obigen Postings:


Naja, die Ansteuerung hat im wesentlichen ja nichts mit der
Programmiersprache zu tun. Bascom wird nur um einiges mehr Code
produzieren, sollte aber trotzdem funktionieren.



*) http://www.mikrocontroller.net/forum/read-5-244046.html#244746

von Lightning (Gast)


Angehängte Dateien:

Lesenswert?

Hy Leute,

Hab mir vorhin mal die zeit genommen
und das Zeug was auf der HP von Christian Kranz (ChristianK)
war in ein PDF gepackt.

Sollten irgendwelche Fehler oder Sonstiges
sein, bitte sofort mir sagen.

Gruß Lightning

von Tobias S. (tobias)


Lesenswert?

Hat jezt nix mitm Disp zu tun,
aber ich wllte euch nur mal drauf hinweisen, dass "actually" im
Englischen icht aktuell sondern tasachlich bedeutet.

Ihr wollt in dem Satz "Actually there are known three different types
of the display." wohl eher "Currently" nehmen :)

Gruss Tobias

von Hagen (Gast)


Lesenswert?

@Christian:

bei der Addressierung des DisplayRAMs gibt es wirklich nur diese 2
Modis ?
Das bedeutet das dieses LCD mit meinen Font Routinen der GLCD nur Sinn
macht wenn es senkrecht benutzt wird, mit Koordinate (0,0) Links Oben.
Das ist Schade da es gerade waagerecht eingebaut interessant wäre.

Hast du bei den Commandbytes mal alle Bits durchgetestet ? Ich könnte
mir vorstellen das es ein Bit gibt das die Ansteuerung der Koordinaten
spiegelt. In diesem Moment wären alle 4 Richtungen wieder möglich.

Das Problem mit meinen Font Routinen ist, das sie durch die
Komprimierung und dementsprechende Live-Dekomprimierung während der
Anzeige eines Zeichens, nur in Richtung der Y Koordinate bottomup und
der X Koordinate bottomup gezeichnet werden können.
Eine einfache Art&Weise dieses Verhalten umzuprogrammiern wird es
leider nicht möglich sein.
Die Fonts müssten in ihrer Pixelreihenfolge schon während der
Komprimierung umprogrammiert werden. Was natürlich zu einer
Inkompatibilität der verschiedenen Fonts untereinander führt.

Funktionieren denn meine Linien Routinen ? Ich erinnere mich dunkel
daran das auch die Linienfunktionen von der spez. Memory
Addressierungen Gebrauch machen.

Kann man den DisplayRAM des LCDs auch wieder auslesen ?

Ansonsten super Arbeit.

Gruß Hagen

von Lightning (Gast)


Lesenswert?

@ Tobias Schneider

Hallo,

Gut das du das mit demActually bemerkt hast.
Ih habe bereits ein neues PDF gemacht wo der
Fehler korrigiert ist. Ich warte aber noch
mit dem Upload, vieleicht tauchen noch mehr
solche Fehler auf.

Gruß Lightning

von Christian K. (christiank)


Lesenswert?

@Hagen,

ich habe einige (allerdings wohl nicht alle) Bit-Kombinationen nach dem
0x05xx Command getestet. Zumindest alle Einzelbits und FF. Ausser bei
der 04 hat sich nichts getan... (habe natürlich auch 0x04xx und 0x03xx
getestet ohne Wirkung) Ich habe mir da aber nicht sehr viel Zeit
genommen, vielleicht ist noch was versteckt....

Die Linien habe ich in alle 4-Richtungen diagonal getestet, waren o.k.

Leider kann man das Display Memory nicht zurücklesen. Macht im Mobile
Phone Betrieb auch keinen Sinn, da der RAM-Inhalt regelmässig (etwa
jede Sekunde) vom µC aufgefrischt wird um Pixelfehler zu vermeiden.

Wie man mit der GLCD weitermacht weiss ich auch noch nicht. Mir reicht
im Moment erst mal der 90-Grad Betrieb. Vermutlich könnte man sie schon
einfach anpassen, wenn man etwas Performance und RAM opfert....

Grüße
  Christian

von Fabian T. (ape)


Lesenswert?

Im Notfall könnte man die zu zeichnenden Zeichen ins RAM des uC
dekomprimieren und von dort aus entsprechend gedreht ans Display
senden.  Bei einer 2 Farb Font bräuchte man für ein 32x32 Pixel großes
Zeichen gerade einmal 128 Byte.

von Jens D. (jens) Benutzerseite


Lesenswert?

@Hubertus

du bist sowas von armsehlig...
schade, dass solche, wie du meinen sie muessen leuter persoehnlich
angreifen und somit solche foren, wie hier in den dreck ziehen
nunja du bist der beste mach weiter so..

von Kay (Gast)


Lesenswert?

hi, nochmal zu bascom ...

hat jemand vor, das ganze auch auf bascom zu portieren, oder bleibt ihr
lieber bei C ?

mfg Kay

von Lightning (Gast)


Lesenswert?

In Bascom nicht aber in Assembler.

Gruß Lightning

von Hagen (Gast)


Lesenswert?

@Christian:

>> Die Linien habe ich in alle 4-Richtungen diagonal getestet,
>> waren o.k.

Schlechter Test ;) versuche mal 4 Linien mit den Koordinaten

40,0 -> 60,176
60,0 -> 40,176
60,176 -> 40,0
40,176 -> 60,0

Deren Steigung ist < 1 in Y Richtung

Dann noch

0,78->128,98
0,98->128,78
128,98->0,78
128,78->0,98

Deren Steigung ist ebenfalls < 1 in X Richtung

Bei den Fonts gäbe es noch die Möglichkeit ohne Komprimierung zu
arbeiten. Man kann dann die Speicherzugruiffe auf die Fontdaten
entsprechend umbauen. Allerdigs hats eben mehrere Nachteile

1.) monochrome große Fonts werden normalerweise auf 1/4'tel oder sogar
1/8'tel der Größe komprimiert. Bei 16Kb also nur 2-4Kb an real
benötigtem Speicher, das ist ne Menge Holz.

2.) Der Code muß 4 Orientierungen separat umsetzen, für jede
Orientierung eine eigene Schleife, ergo mehr Programcode

3.) Man kann nun nicht mehr linear sequientiell die Fontdaten aus dem
Speicher laden. Das ist im ersten Moment für einen Laien kein größeres
Problem. Aber ich habe exakt auf dieses spezielle Feature Acht gegeben
damit man nämlich die Fontdaten in externen seriellen
Speicherbausteinen, oder SD/MMC Karten ablegen kann.
Bisher gibt man den Startadresse an dem ein Font beginnt vor. Beim
zeichnen eines Zeichens wird immer linear sequientiell ab dieser
Addresse die Daten aus dem Speicher gelesen.
Darauf müsste man dann verzichten.

4.) die bisherige innerste Loop der Fontroutinen ist so ausgelegt das
sie während 1 Byte übers HW-SPI im Hintergrund gesendet werden mit
maximal 16 Takten die nächsten Koordinaten berechnet und die Daten
dekomprimieren kann. Es entsteht also eine enorm hohe Performance der
Font-Routinen im Vergleich zum Datendurchsatz. Wie Ape schon oben
vorgerechnet hat: ein String mit 32 zeichen a 16x16 Pixeln und 16Bit
Farben muß an das Display 16Kb übertragen. Nur 32 Zeichen !!
Bei komprimierten Fonts ist aber die innerste Schleife samt Clipping
meistens schneller fertig mit den neuen Daten als das das HW-SPI seine
8 Bits rausschicken kann. Man erreicht also theoretisch Clock/2 MBit
Durchsatz.



Gruß Hagen

von Kay (Gast)


Lesenswert?

wäre es denn möglich, einen avr zu nehmen, der in Assembler oder C das
display ansteuert und die "daten" über die serielle bekommt ?

mein problem ist, das ich kein C und kein assembler kann. würde halt
gern mit bascom programmieren.

von Christian K. (christiank)


Lesenswert?

Hallo Kay,

ich werde mich nicht mit BASCOM beschäftigen. Allerdings dürfte - wenn
du dich ein wenig mit BASCOM auskennst - die Display Ansteuerung nicht
so schwer sein.

nach der Homepage kann Bascom:
a) SPI Interface ansprechen
b) externe C/Assembler Routinen aufrufen

D.h. für eigene Grafik-Routinen reicht a), wenn du die glcd benutzen
willst musst du dich mit b) beschäftigen...

Grüße
  Christian

von Kay (Gast)


Lesenswert?

alles klar danke

von Kay (Gast)


Lesenswert?

hab im oberen post den halben text vergessen. ich habe mir jetzt so ein
display bestellt. ich warte bis das display hier ist und werde dann mal
schauen wie weit ich komme. Will einfache Texte an einer bestimmten
position platzieren. und grafiken anzeigen lassen. vielleicht bekomme
ich das mit bascom ja hin. wenn nicht, dann halt nicht. probieren kann
man es ja mal.

mfg Kay

von MartinK (Gast)


Lesenswert?

Ich habe Vorgestern mein Display (blaue Platine) erhalten. Doch
leider gelingt mir die Ansteuerung nicht.
Zuerst habe ich es mit Bascom versucht, da ich mit Basic schon
die Ansteuerungsroutinen für die Nokia-Displays 3510i und 6100
geschrieben habe.

Prinzipieller Ablauf (verkürzt wiedergegeben):
Mega128, 2.8 Volt, 4 MHz-Resonator, Port C
Reset (low), dann Pegel auf high
CS auf low, RS high (Commands)
Datenpin high/low setzen, mit CLK auf high wird Zustand eingelesen
die Wartezeiten zwischen Init1 und Init2 habe ich variiert (0-40 ms)
RS low für Daten

Leider tat sich nichts

Dann habe ich das Beispielprogramm simple_display3 genommen, das
Display an Port B angeschlossen, und im ASM-File Xtal auf 4 MHz
gesetzt, und make all vom AVR-GCC gestartet.
Dann das Gleiche nochmal mit dem internen kallibrierten 1 MHz
Oszillator ausprobiert.
Leider zeigte das Display keine Reaktion.

Jetzt bleiben noch 3 Möglichkeiten übrig:
Display ist defekt
Display is inkompatibel
ich habe irgendwas falsch gemacht (nur was?)
Vielleicht weiss einer Rat.

MartinK

von Christian K. (christiank)


Lesenswert?

Hallo Martin,

grundsätzlich hört sich das o.k. an. Läuft der atmega mit 2.8V
zuverlässig?

Drei Dinge:

a) mit so langsamen Takt habe ich das noch nicht probiert, der
langsamste waren 8MHz mit einem ATmega32

b) Für dein BASCOM: Ich glaube, das zwischen den Commands das CS
toggeln muss.

c) Blaue Platine? Bisher kenne ich nur die grüne und zwei verschiedene
braune....

Vorschläge:
-> Überprüfe die Verdrahtung mit den #defines in simple_display3
-> kannst du dir die Port Signale anschauen und überprüfen? Wenn ja
check die Verzögerung zwischen INIT1 und INIT2 mit dem Osci. sowie die
Daten
-> Überprüfe deinen Display Anschluss. Ich kann ESD Schutzdioden
zwischen den Steuersignalen und Supply/GND messen (ca. 1V mit meinem
Diodentester). Damit kannst du testen ob der Kontakt da ist.
-> Nehme Spannungsteiler, 5V und 16MHz

von Lightning (Gast)


Lesenswert?

@MartinK

Kannst du bitte mal n Foto von dem Display
mit der blauen Platine Posten ??
(Vorder + Rückseite)

Mfg. Lightning

von MartinK (Gast)


Lesenswert?

@Lightning

Tut mir Leid, aber momentan habe ich keine Digitalkamera.
Das Display habe ich bei Ebay ersteigert (Cellow),
sieht fast genauso aus wie das linke Display auf Christians
Homepage.

@Christian
Ich habe den Mega128L, kann max 8 MHz, läuft aber bei 2.8 Volt
zuverlässig.
Die Schutzdioden habe ich auch messen können mit Ausnahme von Pin 1
(RS), bei dem ich absolut nichts messen kann, vielleicht liegt
hier der Fehler.

MartinK

von Christian K. (christiank)


Lesenswert?

Das ist zumindest ein Fehler. Ich kann auch bei RS die Dioden messen.

von MartinK (Gast)


Lesenswert?

@Christian

Die Signalleitung von Pin 1 (RS) ist definitiv irgendwo unterbrochen.
Im Übrigen gleicht mein Display deinem Grünen fast 100%ig, nur der
Lötstopplack meiner Platine ist blau. Sogar die Platinenaufdrucke
sind gleich.
Ich habe bei meinem Display den weissen unteren Platikrahmen
abmontiert. Dann habe ich kurz vor der Bending-Area, also dort, wo
die Leiterfolie auf die Platine geklebt ist, mit einem scharfen Cutter
den Lötstopplack von der Platine gekratzt. Da die Leiterbahnen
an dieser Stelle sehr klein und eng beianander liegen (etwa 60 auf 2,2
cm), habe ich mit einem akustischen Durchgangsprüfer die Signale
zwischen Leiterbahnen und Anschlusspins geprüft. Alle Pins mit
Ausnahme von RS gaben einen Signalton.
Der einzige Punkt, an dem ich noch ein Signal erhalte, ist der rechte
Lötpunkt von R4 (oder A4). Von da an verliere ich das Signal. Und bei
einer 4-Layer (oder noch mehr) Platine kann ich nichts mehr machen.
Vielleicht könntest du mir helfen. Von Reset und CS weiss ich, dass
das Signal bei einem Kondensator oder Widerstand wieder auftaucht.
(CLK taucht erst an der Bending-Area wieder auf). Vielleicht gibt es
eine direkte Verbindung zwischen RS und irgendeinem Baustein oder
Lötpunkt. Dann könnte ich einfach ein Kabel daran löten.
Unter dem weissen Abdeckrahmen sind keine Bausteine.

MartinK

von Flo K. (Gast)


Lesenswert?

abo

von ChristianK (Gast)


Lesenswert?

Martin,

habe gerade mein grünes Display untersucht:
a) ich kann RS nirgends, ausser an R4 finden

b) ich messe bei RS auch keine Schutzdiode!!!! Das ist ein Unterschied
zwischen den grünen/blauen Display und den braunen...

Grüße
  Christian

von André Kronfeldt (Gast)


Lesenswert?

@ChristianK:

> Das ist ein Unterschied
> zwischen den grünen/blauen Display und den braunen...
Das heißt jetzt was genau? Ich werde wohl morgen auch
ein blaues erhalten (Cellow, ebay). Laut dem PDF sollte
es 3 Versionen geben (wohl blau, braun und grün). Sind jetzt
alle gleich oder nicht?

@MartinK:
Wenn meins morgen ankommt werde ich mich mal am WE dran begeben. Ich
meld mich dann mit den Ergebnissen.

Grüße,
André

von André Kronfeldt (Gast)


Lesenswert?

Ach noch was. In der Artikelbeschreibung von Cellow ist aber ein ROTES
mit brauner(?) Folie abgebildet.

Laut PDF: Grün=Braun
Laut ChristianK: Grün=Blau!=Braun

Hilfe! Farbenwahn!

Grüße,
André

von MartinK (Gast)


Lesenswert?

@Christian

Hast du das grüne Display mal ausprobiert?


@André

Ja, ich habe bei meiner Bestellung bei Cellow auch ein Display
mit einer rötlichen Platine gesehen.
Streng genommen ist meine Platine nicht rein blau, sondern hat einen
kleinen Grünstich, also dunkel-Türkis

MartinK

von André Kronfeldt (Gast)


Lesenswert?

Hm.

Wenn meins morgen da ist, up ich mal 'nen Scan. Vielleicht sollte das
PDF dann um Eigenarten der verschiedenen Displaytypen ergänzt werden.

AK

von ChristianK (Gast)


Lesenswert?

Zum Aufklären des Farbwirrwars:

Also ich besitze:
a) ein braunes wie auf Web-Page abgebildet
b) ein braunes mit anderer Platine  (kein Foto, da eingebaut )
c) ein grünes wie auf Web-Page abgebildet

Diese drei verhalten sich gleich.

Martin hat jetzt noch ein türkis-farbenes das aber wie mein grünes
aussieht... und offensichtlich die gleiche Eigenschaft hat dass keine
Schutzstruktur am RS pin zu messen ist.

von Christian K. (christiank)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe die Software (WEB und hier) nocheinmal upgedated. Grund ist,
dass das Display nicht immer zuverlässig gestartet ist. Es konnte
passieren, dass mehere Reset's nötig waren um das Display zu starten.
Wenn es dann einmal lief, lief es ohne Probleme.

Zuerst habe ich das auf meine unvollkommene Reset-Beschaltung
geschoben, konnte heute aber nachweisen, dass es nicht der µC ist der
die Probleme macht.

Also habe ich die init1 sequence in zwei Sequenzen aufgeteilt (wie beim
S65 gemessen) und eine Wartezeit von 68ms dazwischen eingebaut.

Bisher hat damit das Display problemlos funktioniert.

Grüße
  Christian

P.S: Diesmal habe ich die HEX-Files im Zip gelassen. Diese HEX Files
habe ich bei mir getestet und sie funktionieren.

von Lightning (Gast)


Lesenswert?

Hy Leute,

Wenn ihr alle Arten von Displays untersucht habt,
schickt mir bitte Infos zu (oder hier Posten).
Dann werd ich in mein PDF da noch ne extra Rubrik
für die verschiedenen Displays und
deren Tücken, Farben,... etc. reinbasteln.

Gruß Lightning

von Michael (Gast)


Lesenswert?

Da stehen doch auch Typbezeichnungen auf der Rückseite drauf, z.B.
LPH8836 oder LS020...
Gibt es denn innerhalb eines Typs verschiedene Leiterplattenfarben?

Gruß
Roland

von Kay (Gast)


Lesenswert?

hi,

das display braucht ja eine Versorgungsspannung von 2,9V. macht es dem
display was aus, wenn es 3,3 V sind ? habe nämlich noch einen LM3574
den ich gerne benutzen würde. nur will ich auch nicht mein Display
schrotten.

mfg Kay

von Christian K. (christiank)


Lesenswert?

Ob 3.3V funktionieren weiss ich nicht, ich würde da aber erstmal keine
Experimente eingehen. Letztendlich hängt die ganze Spannungserzeugung
für das Glas daran.

von Kay (Gast)


Lesenswert?

dann muss ich wohl das ganze von 3,3 auf 2,9 V bringen. müsste doch mit
nem widerstand machbar sein oder ?

von Michael (Gast)


Lesenswert?

@Christian,

auf den Fotos auf Deiner Homepage ist ja auch ein LPH8836 zu erkennen.
Hast Du Deine Software auch mit dem LPH8836 getestet oder nur mit dem
anderen LS020-Typ?

Bei meinem LPH8836-3 funktioniert außer der LED-Beleuchtung leider noch
nichts. Verdrahtung habe ich schon mehrfach kontrolliert, am
Power-Up-Timing habe ich auch schon herumprobiert, leider ohne Erfolg.

Was mich etwas wundert: weshalb geht bei Dir das Power-Up-Timing
schief, wenn die Wartezeit zu groß ist? Eine Mindestzeit hätte ich
erwartet, aber eine Maximalzeit...?

Michael

von André Kronfeldt (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

mein Cellow-LCD ist da. Grün (also kein Türkis wie bei MartinK).
Allerdings auch keine Typenbezeichnung drauf ;-(
Hoffe es ist ein LPH8836 (DAS sollte ja gehen). Layout
paßt schonmal.

Grüße,
AK

von Kay (Gast)


Lesenswert?

Meins ist auch da, ein braunes mit LS020..... über eb**

müsste auch passen

von MartinK (Gast)


Lesenswert?

@André

Cellow scheint verschiedene Chargen zu verkaufen.
Meins sieht zwar genauso aus (außer der Farbe)
Als Herstelldatum auf dem weißen Kunststoff steht bei mir 4 04,
also 3 Monate jünger als deines.
Die Nummer auf dem weißem Aufklebr ist: 3738.1
Nummer auf der Platine (neben den Anschlüssen): 3320 010 2051.2

Mein Display läuft leider immer noch nicht.
Es wäre schön, wenn du bei erfolgreicher Ansteuerung dein Ergebnis
mal posten würdest.

MartinK

von André Kronfeldt (Gast)


Lesenswert?

@MartinK

Ergebnisse kommen (wohl frühestens am WE).

Wenn Deins jünger ist, geh ich mal davon aus daß nur
der Lack-Hersteller gewechselt wurde. Deine Chancen (und meine)
stehen wohl gut ;-)

Grüße,
AK

von The Daz (Gast)


Lesenswert?

Kann mir jemand die exakten Einbau-Masse des Displays nennen ? Danke im
Voraus an alle Hilfsbereiten.

   Daz

von Christian K. (christiank)


Lesenswert?

Hallo,

ich benutze derzeit ausschliesslich das Display, das auf der Web-Seite
rechts neben dem grünen zu sehen ist. (braun LSxxx)

Das grüne hatte ich nur einmal ganz kurz vor einiger Zeit im Betrieb.
Nur um zu testen ob es funktioniert. (damals hatte ich die Displays
übrigens parallel geschaltet, - beide zeigen dann das gleiche Bild...)

Die Ansteuersoftware hat sich danach noch geändert. Im wesentlichen
"Weg-Optimierungen" von "überflüssigen" CS toggeln, Änderungen im
Timing etc.

Es besteht daher eine gewisse Wahrscheinlichkeit, dass das grüne
Display mit der derzeitigen Ansteuerung nicht (mehr) funktioniert. Nach
dem Motto was nicht getestet ist funktioniert meist auch nicht.

Ich werde - frühestens am Wochenende - das grüne mal wieder
anschliessen. Dann kann ich näheres sagen.

Zu den Kodes:
LSxxxxxx Hersteller vmtl. Epson?
L2F50126 Hersteller vmtl. Epson
LPHxxxxx Hersteller vmtl. Philips?

Ihr könnt aber auch selber experimentieren. Die Timing's der
Original-Ansteuerung sind ja verfügbar. Im worst case muss man die
einfach exakt nachbauen...

von Kay (Gast)


Lesenswert?

ich habe jetzt über einen Spannungsteiler mit 2 Widerständen eine
Spannung von 3,034 V. Das müsste doch gehen für die Spannungsversorgung
vom Display oder ?

Noch ne Frage: Wieviel mA zieht das Display denn ?

mfg Kay

von Fabian T. (ape)


Lesenswert?

So hab jetzt mein Display auch endlich mal bekommen, braune Leiterplatte
LSxxx. 2,9V Versorgung über Spannungsregler, Level-Shifting über
Widerstände. Die Lib hat auf Anhieb funktioniert. Vielen Dank nochma
:)

Kleine Frage am Rande: Warum ist der zweite Versorgungspin des Display
1V8 benannt, obwohl er auch an den 2,9V hängt?

@Kay: Mit Spannungsteiler-Konstruktionen für die Versorgungsspannung
wär ich vorsichtig, da eine solche Versorgung per Definition einen sehr
hohen Innenwiderstand hat und daher die Spannung bei Lastwechseln stark
schwankt (Es sei denn du willst mit dem Spannungsteiler auch gleich
heizen). Hab noch nich gemessen wieviel das Display so aufnimmt und ob
sich die Stromaufnahme stark ändert, aber ein Spannungsregler ist doch
die bessere Wahl.

von Kay (Gast)


Lesenswert?

hi ape,

welchen Spannungsteiler benutzt du denn für das display ?
hast du das display schon ans laufen gebracht ?

mfg Kay

von Kay (Gast)


Lesenswert?

mhh ich meine natürlich Spannungsregler ...

von MartinK (Gast)


Lesenswert?

@ape

Woher hast du das Display?
Hast du 16 MHz, oder funktioniert die Ansteuerung auch bei
niedrigeren Taktfrequenzen?

MartinK

von Fabian T. (ape)


Lesenswert?

Ich hab das ganze im Moment auf dem Steckbrett laufen und benutze einen
LM314 (einstellbarer Spg.regler), der is zwar etwas überdimensioniert,
aber das macht ja nichts :)

Ich hatte zunächst die Lib für 8MHz übersetzt und den Mega128 mit
internen 8MHz laufen, das hat wunderbar funktioniert. Als nächstes habe
ich die Lib für 16MHz kompiliert und einen 16MHz Quarz verwendet, damit
geht das Display aber nicht an. Wenn ich aber erstmal mit einem
langsamen Takt starte und dann auf 16MHz umstelle (Jumper auf dem
STk500 von Board-Takt auf Quarz-Takt umstecke) läuft das Display auch
problemlos.
Erscheint mir merkwürdig, ich muss das nochmal genauer untersuchen.

von MartinK (Gast)


Lesenswert?

@ape

Mit Lib meinst du simple_display3 ?
Gut, dass das bei dir läuft.
Mit meinem 8 MHz Atmega128L hat das nicht funktioniert.
Vielleicht habe ich beim Compilieren etwas falsch gemacht.
Kannst du mir das fertige Hex-File für 8 MHz an meine E-Mail-Adresse
martin-k@x-mail.net schicken oder hier posten?
Wenn mein Display dann immer noch nicht funktioniert, dann ist es
entweder kaputt oder inkompatibel.
Mein Mega128L funktioniert einwandfrei, das habe ich überprüft.

MartinK

von Christian K. (christiank)


Lesenswert?

@Fabian
Super, endlich mal ein Erfolg :-)
Die 1V8 Spannung heisst so, weil im Original hier 1.8V anliegen. Das
ist die von Siemens benutzte Interface-Spannung. Bei allen mir
bekannten Display Controllern ist diese allerdings sehr weit
spezifiziert üblicherweise immer bis hin zur Display-Spannung. Darum
habe ich sie auch an die 2.8V gehangen.

16MHz Problem: Hast du die neue Version mit den 3-Init Sequenzen
benutzt? (die die aktuell unter download steht) Die läuft bei mir mit
16-MHz wirklich völlig problemlos. Allerdings ist das Timing am SPI-Bus
mit den passiven Level-Shiftern bei 8MHz SPI-Clock schon nicht mehr
optimal. Ich überlege schon, ob ich für das spätere Gerät nicht aktive
Level-Shifter verwenden soll.

Grüße
  Christian

von Fabian T. (ape)


Angehängte Dateien:

Lesenswert?

Hallo ich hab jetzt nochmal die neueste Lib von deienr Seite
runtergeladen aber das hat keine Änderung gebracht. Vielleicht kannst
du in einer nächsten Version den SPI Clock fürs Init etwas runtersetzen
und  erst danach voll aufdrehen.

Ich denke spätestens wenn ich ein Gerät mit dem Display baue, werde ich
aktive Level-Shifter einsetzen, aber so fürs steckbrett wars erstmal die
einfachste und schnellste Lösung :)

Im Anhang mal nochn Bild, kommt auf dem Foto nicht gut rüber, aber ich
bin positiv überrascht von der Bildqualität des LCDs, ist wirklich um
Längen besser als das Nokia 6100...

@Martin: Nein das simple_display hab ich nicht ausprobiert sondern
gleich die portierte glcd Library verwendet. Ich hab dir mal das Hex
File per Mail geschickt.

von MartinK (Gast)


Lesenswert?

@ape

Danke für das File.
Leider funktioniert das Display immer noch nicht.
Ich habe extra noch mal alle Kabel neu angelötet.
Ich schätze, ich werde mir ein braunes Display bestellen.

MartinK

von MartinK (Gast)


Lesenswert?

Schaut euch mal dieses Angebot bei Ebay an:
http://cgi.ebay.de/Original-Siemens-M65-M-65-Farb-LCD-DISPLAY-NEU_W0QQitemZ6444305427QQcategoryZ40578QQcmdZViewItem
Laut Anbieter ist ein M65-Display nicht mit S65 kompatibel,
während andere Händler keinen Unterschied machen.
Vielleicht ist mein Display nur M65 kompatibel.

MartinK

von Kay (Gast)


Lesenswert?

Für was genötigt man diese Levelshifter ? ich dachte, es reicht, eine
2,9V Spannung und die 10,4 V für die Hintergrundbeleuchtung ?

mfg Kay

von Fabian T. (ape)


Lesenswert?

@Kay: Nix für ungut, aber du weißt schon was du tust? Die Level-Shifter
brauch man um die Pegel auf der Schnittstelle zwischen Controller und
Display anzupassen. Schließlich läuft der AVR bei 2,9V nicht mehr mit
voller Taktrate (wenn man Glück hat schon, aber man ist dann schon sher
weit außerhlab der Specs...). Die einfach-Lösung besteht darin mit
Spannungsteilern die Signal-pegel runterzuteilen. Steht glaub ich auch
irgendwo weiter oben im Thread. Jedenfalls sind aber durch die relativ
hohen Widerstände die Signale bei hohen Frequenzen nicht mehr sehr
schön. Ein aktiver Level-Shifter schafft da Abhilfe.

@all: Für einen Einsatz im Querformat ist das Display übrigens nicht
sehr gut geeignet, da der Blickwinkel für den Einsatz im Handy
optimiert zu sein scheint. Der beste Kontrast ergibt sich, wenn man von
unten leicht schräg auf das Display schaut. Bei senkrechtem Blickwinkel
oder gar von der Seite leidet der Kontrast doch recht massiv.

von Fabian T. (ape)


Lesenswert?

So hab nun auch das Init Problem bei 16MHz behoben. Und zwar hab ich die
init Routine so geändert das das Double Speed Bit erst nach der
eigentlichen Initialisierung gesetzt wird. Also hier (glcd_init.asm):
1
;   write initial screen command (i think not necessary...)
2
    cbi LCD_PORT,LCD_CS ;select Display
3
4
    ldi T1,0xEF
5
    rcall   glcdDispCommand
6
    ldi T1,0x90
7
    rcall   glcdDispCommand
8
    ldi T1,0x00
9
    rcall   glcdDispCommand
10
    ldi T1,0x00
11
    rcall   glcdDispCommand
12
13
    ldi     r24,1               ; double speed bit
14
    out     LCD_SPSR,r24
15
16
        rcall   lcd_clrscr
17
18
    pop     r31
19
    pop     r30
20
    ret

von Hagen (Gast)


Lesenswert?

Hatten wir das gleiche Problem nicht auch schon beim Nokia Display ?

Gruß Hagen

von Fabian T. (ape)


Lesenswert?

Naja zumindest ist der Blickwinkel beim Nokia auch nicht sehr groß. Das
Problem beim Siemens Display lag aber zum Teil auch an mir :) Der
Spannunsgregler war nich ganz richtig beschaltet das Display hatte nur
2V Versorgungsspannung... Jetzt kann man auch senkrecht aufs Display
gucken, aber sonderlich groß is der Sichtbereich trotzdem nich.
Ich denke mal mein Problem mit den 16MHz lag auch dadran, aber ein
etwas langsameres Init kann denk ich trotzdem nich schaden :)

von Christian K. (christiank)


Lesenswert?

Hallo,

schlechte Nachrichten für alle grünen und blauen...

Ich habe gerade das grüne Display LPHxxx angeschlossen. Mit der
aktuellen Software läuft es nicht! Ich habe auch bereits ein wenig am
Timing gespielt, es aber nicht zum laufen gebracht.

Vorher hatte ich es zum Test in das S65 eingesetzt und dort hat es
funktioniert. (Daher glaube ich die Theorie mit dem M65 nicht)

-> Vorerst als nur das LSxxx Display kaufen! (braun, rechts auf dem
Bild)

von Michael (Gast)


Lesenswert?

@Christian:

Wenn es im S65 funktioniert hat, aber mit Deiner eigenen Ansteuerung
nicht, dann wird beim LPHxx vermutlich doch ein anderes Protokoll
gefahren als beim LSxxx, d.h. in der Handysoftware wird erkannt, um
welches Display es sich handelt, ähnlich wie beim Nokia 6100 Philips /
Epson, z.B. durch Abfrage eines Identifikationsregisters.

Wenn Du das Protokoll des Handys mit eingesetztem LPHxx nochmal
aufzeichnen könntest, wäre das natürlich super. Ich weiss, ist viel
Arbeit. Ich würde es auch selber machen, habe aber leider kein S65 und
nur dafür eines kaufen ist mir dann dann doch etwws zu teuer... ;-)

Gruß
Michael

von Fabian T. (ape)


Lesenswert?

Von weiter oben:

"Das grüne hatte ich nur einmal ganz kurz vor einiger Zeit im
Betrieb.
Nur um zu testen ob es funktioniert. (damals hatte ich die Displays
übrigens parallel geschaltet, - beide zeigen dann das gleiche
Bild...)"

Die Ansteuersoftware hat sich danach noch geändert. Im wesentlichen
"Weg-Optimierungen" von "überflüssigen" CS toggeln, Änderungen im
Timing etc.

Es besteht daher eine gewisse Wahrscheinlichkeit, dass das grüne
Display mit der derzeitigen Ansteuerung nicht (mehr) funktioniert.
Nach
dem Motto was nicht getestet ist funktioniert meist auch nicht."

Wenn ich das richtig verstehe hat es ja schonmal funktioniert :)

von ChristianK (Gast)


Lesenswert?

Ja, ich bin mir ziemlich sicher (ich werde schon vorsichtiger...), dass
ich das grüne und das braune parallel in Betrieb hatte. Ich wollte ja
wissen ob sie kompatibel sind... Darum sollten sie - wenigstens für
init - einen ähnlichen Befehlssatz haben.

Ich vermute, dass es eine blöde Kleinigkeit ist, die hier das grüne
Display blockiert. Z.B. falsche Pegel auf RS/CS/CLK/DAT lines wärend
der RESET Flanke...

Ich habe jetzt schon einiges probiert, leider immer noch ohne Erfolg...

von André Kronfeldt (Gast)


Lesenswert?

@ChristianK:

auf Deiner Homepage steht 10,4V/20mA für die HB. Müßte die
Gesamtspannung in "Schematic" dann nicht 14V sein (steht 15V drin)?
10,4+180Ohm*20mA = 14V. Wie ist das denn bei der HB, wenn die 5mA mehr
Strom (immerhin 25%) bekommt?

Grüße,
AK

von Christian K. (christiank)


Lesenswert?

@Andre,

ich kenne die Spezifikation der LED's nicht und habe mir den Aufbau
der Hintergrundbeleuchtung auch noch nicht genau angeschaut.

Im Moment gehe ich von drei in Reihe geschalteten LED's aus. D.h. bis
zu max. 30mA Dauerstrom (je nach gewünschter
Helligkeit/Batterie-Lebensdauer) sollte erlaubt sein. (sollten es 2x3
in Reihe geschaltete LED's sein müsste der Strom höher eingestellt
werden...)

Deine Rechnung stimmt. Aber der Messwert 10.4V@20mA gilt natürlich nur
für dieses eine Display bei der damaligen Temperatur.

von André Kronfeldt (Gast)


Lesenswert?

Hi,

danke. Dann mach ich mich mal dran. Hab Deinen Code für einen
ATmega8515 kompiliert (wegen DIP-Gehäuse und ein anderer war gerade
nicht da). Werde einen 74HC573 als LevelShifter nötigen. Mal sehen ob
mein LCD damit funzt ...

von Sven (Gast)


Lesenswert?

@Fabian Thiele

könntest du eventuell mal deinen Code posten mit dem du die Bitmap
ausgibst? Wo hast du die gespeichert ? Wenn ich richtig rechne hat das
Display eine Auflösung von 132x176 Pixel also 23232 Bildpunkte bei 16
bit Farbtiefe sind das etwa 45kb?

von Fabian T. (ape)


Lesenswert?

Ich sende die Bilder über die serielle Schnittstelle vom PC. War nur nen
einfaches Test-Programm ohne jegliches Protokoll oder so. Das ganze
"Programm" sieht so aus:
1
void recvPicture(void) {
2
  uint8_t x=0, y=175;
3
  glcdColor_t pix;
4
  
5
  for(uint16_t i=0; i<23232; i++) {
6
    pix = get()<<8;
7
    pix |= get();
8
    glcdSetPixel(x, y--, pix);
9
    if(y == 255) {
10
      y=175;
11
      x++;
12
    }
13
  }
14
}

get() empfängt ein Byte übers UART, die Üebrtragung erfolgt mit
460kBaud, das Bild zu übertragen dauert ca. 1 Sekunde. Ich weiß auch
das die Funktion glcdSetPixel() für diesen Zweck nicht optimal ist, da
ja jedes Mal auch wieder die Position auf dem Display neu egsetzt wird,
was jede Menge Overhead bedeutet, aber zum Testen reichts :)

von Sven (Gast)


Lesenswert?

Danke für die schnelle Antwort. Hast du ein speiziellen Programm mit dem
du die Daten an den UART schickst oder verwedest du einfach das
Hyperterminal und benutzt du die Funktion Datei schicken?

von Fabian T. (ape)


Angehängte Dateien:

Lesenswert?

Ich hab mir ein kleines Java-Programm geschrieben, was die Bilder öffnet
in die richtige Größe konvertiert, nach 16-Bit umrechnet und dann
einfach die nackten Pixeldaten an den AVR sendet. Hyper-Terminal oder
sowas funktioniert nicht, da das ja ein Protokoll zur Dateiübertragung
verwenden würde, außerdem haben ja auch Bitmaps nen Header und auch
nicht die passende Farbtiefe.

Hab mein Programm mal angehangen, vielleicht kannst du ja was mit
anfangen. Mit run.bat starten, Bild öffnen (gif, jpg oder png) Com-Port
auswählen und senden. Baudrate ist fest auf 460kBaud, wenn das zu Viel
ist musst dus im Quelltext anpassen udn neu kompilieren :). Wenn man
ein Verzeichnis öffnet, werden alle enthaltenen Bilder im 15 Sekunden
Takt als Slideshow angezeigt.
Achja und du brauchst natürlich eine aktuelle Java Runtime Environment.

von Sven (Gast)


Lesenswert?

Das Programm scheint schon mal super zu sein. Leider hackt es auf dem
Atmel noch etwas. Die Zeile "pix = get()<<8;" erzeugt beim
Kompilieren den Fehler: undefined reference to `get'.

von Fabian T. (ape)


Angehängte Dateien:

Lesenswert?

Ja klar, das is ja keine Library Funktion. Die Funktion empfängt einfach
ein Byte übers UART. Hatte sie jetzt oben nicht mit gepostet weil ich
das eigentlich für Trivial gehalten habe :)

Im Anhang mal der Komplette Code für den AVR (mega128). Takt ist
18,432MHz. Wenn du einen anderen Takt verwendest, musst du den Wert für
UBRR0L anpassen um die passende Baudrate zu behalten.

von Christian K. (christiank)


Lesenswert?

Schlechte Nachrichten für alle Besitzer von grünen Displays (LPH) und
Epson (L2F) Displays. Ich habe - nachdem ich alle Variationen der
Ansteuerung mit dem grünen Display erfolglos durchgefahren habe - den
Parallel-Test wiederholt. D.h. ich habe ein Epson Display (L2F)
(eingebaut) jeweils mit einem grünen (LPH) und dem braunen (LS0)
ausserhalb und parallel am S65 betrieben.

Leider ohne Erfolg. Es hat immer das externe Display gewonnen und den
Inhalt angezeigt, wobei das interne L2F leer blieb. Ohne externes hat
das interne funktioniert.

-> Das S65 hat wohl eine Funktion um das Display zu erkennen

-> Beim letzten mal muss ich wohl doch zwei gleiche Displays parallel
geschaltet haben

-> jedes Display wird seinen eigenen Befehlssatz haben

Immerhin lässt das hoffen, dass das Epson kompatibel zu einem Epson
Befehlssatz ist (d.h. mehr Addressierungsmodies, 0-Grad Betrieb mit
glcd...)

von MartinK (Gast)


Lesenswert?

Es gibt definitiv 2 verschiedene Controller:
www.siediyer.com/Doc/x65SRD.pdf
Seite 30

von Christian K. (christiank)


Lesenswert?

Hallo MarinK,

toller Link - danke. Ich habe lange versucht das S65 repair manual zu
finden, aber keiner der Links und Quellen hat funktioniert...

Jetzt kennen wir zumindest schon die LED-Spec (15mA). Ich denke aber es
gibt drei Hersteller (ich habe die drei Bilder auf meiner Web-Page).
Eins kommt definitiv von EPSON (steht drauf).

Wenn sie über die Widerstandswerte identifiziert werden kann man ja mal
nachmessen...

von André Kronfeldt (Gast)


Lesenswert?

Hi,

> For the display two different sources are used, which
> will be distinguished by the software via different
> code resistor values.
Bin ich noch zu müde? Hat jemand gefunden WIE man die LCDs erkennt?
'Resistor' scheint klar, aber welcher?

von André Kronfeldt (Gast)


Lesenswert?

@ChristianK:

> ich habe ein Epson Display (L2F) (eingebaut) jeweils mit einem grünen
> (LPH) und dem braunen (LS0) ausserhalb und parallel am S65 betrieben.

> Leider ohne Erfolg. Es hat immer das externe Display gewonnen und
den
> Inhalt angezeigt, wobei das interne L2F leer blieb. Ohne externes
hat
> das interne funktioniert.
Ok. Heißt also L2F!=LPH und L2F!=LS0.

Laut Datenblatt gibt es 2(!) verschiedene Typen.
Wenn L2F!=LPH ist und L2F!=LS0, MUß LS0=LPH sein => Deine Routinen
sollten auch mit dem LPH funktionieren.

Allerdings befürchte ich noch eine andere Fehlerquelle:
Die Widerstandskodierung dürfte nicht funktionieren bei 2 parallelen
LCDs.

von Mark D. (mark_de_jong)


Lesenswert?

Hallo,

Christian, du hast ja alle drei sorten displays, kannst du mal
nachmessen:

Widerstand zwischen masse und RESET:
- L2F50xxx -> 52,46Kohm
- LPH88xxx -> 20,1Mohm
- LS020xxx ->  ??

Widerstand zwischen masse und CS:
- L2F50xxx -> 27,6Mohm
- LPH88xxx -> 25,2Mohm
- LS020xxx ->  ??

Ich habe mit eine philips PM2525 (multimeter) gemessen und die com vom
messgerät auch an die masse vom display gehalten.

Nur der RESET und CS gehen zum ARM9 (SGold-Lite PM8875) controller,
also können das meiner meinung nach die einzige pin zur display
erkennung sein.

Die andere pins (CLK, DAT, RS) gehen zum S1D13732, also keine
möglichkeit zur erkennung.

Grüße Mark,

von André Kronfeldt (Gast)


Lesenswert?

Hi,

das deckt sich ja mit meiner Theorie. Wenn das LS 20,1MOhm hat zwischen
GND und RESET besauf ich mich heute abend ;-)
Ich denke nicht, daß die 2MOhm Unterschied am CS relevant sind.
Ich meß mal mein Display gleich nach.

von Michael (Gast)


Lesenswert?

@Christian:

Hättest Du denn Zeit und Lust, das Protokoll des ans S65
angeschlossenen LPHxx nochmal mitzuloggen?

Hab leider kein S65, sonst würde ich es selbst versuchen, aber falls
mich jemand mit einem S65 sponsern möchte, jederzeit gerne... ;-)

Gruß
Michael

von Mark D. (mark_de_jong)


Lesenswert?

Hallo Alle,

Kennt jemand das Siemens CXT65 ?

Grüße Mark,

von Michael (Gast)


Lesenswert?


von Mark D. (mark_de_jong)


Lesenswert?

Hat sich erledigd, das CXT65 hat das gleiche display.

Grüße Mark,

von Christian K. (christiank)


Angehängte Dateien:

Lesenswert?

Hallo Freunde der grünen und blauen Display's,

jetzt wartet Arbeit auf euch....

Hier ein C-Programm zur Ansteuerung des Displays. FillScreen()
funktioniert tadellos aber ihr werdet sehen, dass die Textausgabe noch
nicht ganz korrekt ist. Die Position und die Breite stimmt schon - aber
die Höhe noch nicht...  Die Zeichen sind ein wenig verschoben und nur
halb ausgegeben.

Also macht euch an die Arbeit und unterstützt beim Suchen der richtigen
Ansteuerung....

Grüße
  Christian

von Mark D. (mark_de_jong)


Angehängte Dateien:

Lesenswert?

Hallo Christian,

Das sieht danach aus das der HD66766 Controller drauf ist.

Grüße Mark,

von Christian K. (christiank)


Angehängte Dateien:

Lesenswert?

Das wäre natürlich super wenn es der HD66766 oder ein kompatibler
wäre...

Hier noch ein Bild zum obigen Program. Ich werde die nächsten Tage
nicht unterstützen können also viel Erfolg.

Grüße
  Christian

von André Kronfeldt (Gast)


Lesenswert?

Hi,

ich weiß nicht ob das mitten in diesen Thread gehört, aber:

!!! EIN FETTES DANKE UND MERCI AN CHRISTIAN KRANZ FÜR SEINE MÜHEN
UND UNTERSTÜTZUNG !!!

von MartinK (Gast)


Angehängte Dateien:

Lesenswert?

@André
Dem kann ich nur zustimmen!

@Christian
Die Ansteuerung hat geklappt, bis auf die Textausgabe. Zur
Weiterentwicklung der Ansteuerung bin ich noch nicht gekommen,
weil ich heute ein LS020-Display bekommen habe (Ebay, PID-Handy),
das ich auf Anhieb auch zum Laufen bekommen habe.
Mir ist aber aufgefallen, dass das LS020-Display wesentlich
heller ist. Im Dateianhang ist ein Bild von beiden Displays, deren
Hintergrundbeleuchtung mit je 12 mA betrieben wird
(links LS020, rechts LPH88)
Außerdem scheint das LS020-Display gleichmäßiger beleuchtet zu sein.

MartinK

von Christian K. (christiank)


Angehängte Dateien:

Lesenswert?

and the winner is

von Mark D. (mark_de_jong)


Lesenswert?

Hallo Alle,

Ich arbeite gerade an eine platine für das Display.

Ich will ein Platine machen mit:
- +3.3volt oder +5 volt eingang.
- Spannungs regler für 2.8 volt.
- Spannungs regler für hintergrundbeleuchtung, PWM geregelt.
- Level wandler für signale.
- 10 polige stifleiste mit 2,54mm abstand.
- etwas größer als das display.
- größe 38.8mm x 60mm

Soll noch etwas mit drauf?

Grüße Mark,

von Christian K. (christiank)


Angehängte Dateien:

Lesenswert?

O.k. nachdem das Datenblatt verfügbar ist (es handelt sich tatsächlich
um einen HD66766 kompatiblen Controller :-) war es ja nur noch eine
Sache von Minuten...

Das LPH hat auch seine Vorteile:
a) einfacher zu löten, da keine Folie
b) Datenblatt verfügbar! D.h. mehr Möglichkeiten

Jetzt muss ich mich aber um etwas anderes kümmern.

von MartinK (Gast)


Lesenswert?

@Christian
Hat das L2F50xxx-Display vielleicht auch einen HD66766?
Wie hell ist dieses Display im Vergleich zu den anderen?

MartinK

von Christian K. (christiank)


Lesenswert?

Hallo,

mir ist kein gravierender Unterschied zwischen den Displays
aufgefallen.

Beim LPH ändern sich die Farben etwas, wenn man schräg draufschaut,
dafür finde ich die Farben etwas satter.

Ich habe auch keinen grossen Helligkeitsunterschied festgestellt. Die
LPH LED forward-voltage ist ca. 0.5V höher (bei mir) als beim LS020.
Ich betreibe die Displays aber auch mit etwas mehr als 20mA.

@André:
Danke, mache ich auch nur weil ich am Anfang irrtümlich versprochen
habe die Displays sind kompatibel :-)

@MartinK:
Das L2F50 hat einen EPSON Controller. Die Ansteuerung liegt hier schon,
brauche nur noch einmal 1-2h Zeit...

von Mark D. (mark_de_jong)


Lesenswert?

@Christian:
Weisst Du welche EPSON controller drauf ist?

Ich glaube es nicht der HD66766 sondern der HD66773, ich habe die
register nochmal gecheckt.

Grüße Mark,

von Mario (Gast)


Lesenswert?

Hallo,

hab gerade eben diesen Thread entdeckt. Super sache!
Ich hab mit die Seite von Christian angesehen, dabei ist mir folgende
Frage eingefallen:
Kann ich die 10,4V für die Hintergrundbeleuchtung aus dem Power-Booster
des LCD-Controllers abziehen?
Meint, hat der Booster reseven, sodaß er auch diesen Strom noch
abzapfen läßt?
Würd die Ansteuerplatine erheblich vereinfachen.

abo

Mario

von MartinK (Gast)


Lesenswert?

@Mario
Die Spannung vom Booster beträgt etwa 12,5 Volt (LPH Display).
Wenn ich die LEDs daran anschließe, liefert dieser nur einen
sehr geringen Strom von etwa 0.4 mA, also viel zu wenig.

MartinK

von Ralf Kirmis (Gast)


Lesenswert?

@Mark

Ich  bin an einer solchen Platine interessiert und
bitte um Info, sobald es Neuigkeiten in Bezug auf Preis
und Lieferzeit gibt.
Vielen Dank.

Gruss,
Ralf

von Dirk (Gast)


Lesenswert?

Ist es nur die Platine oder mit Display? Ja und der Preis wäre gut.

von Nullblicker (Gast)


Lesenswert?

Hallo Mark,

--> Soll noch etwas mit drauf?

- Joystick, siehe Butterfly Board
- PS2-Tastatur Eingang
- SD-Card Steckplatz

von Dirk (Gast)


Lesenswert?

Vielleicht 7 Tasten zur Steuerung, es soll ja bezahlbar bleiben,
verschiede Versionen mit Joystick und SD-Slot, gibts den auch als
Bausatz?

Vielleicht noch  Version mit einen ATMEGA µC und SD-KArte.

von Mario (Gast)


Lesenswert?

@Mark,

ich glaube an so einer Platine gibt's viele interessierte. Mit einer
SD-Karte und der Java nanoVM hätte man dann ein richtig tolles und
günstiges Kleincomputersystem, vorallem mit Farb-Display :))
Zudem gibt's dann sicher genügend freiwillige die fleißig daran
herumbasteln.

Ich habe mir jedenfalls soeben von Cellow ein so ein Display geordert.
Mal sehen wann es da ist.

Gruß
Mario

von jemand (Gast)


Lesenswert?

Ich will ne Kaffeemaschine mit drauf haben!

von Kay (Gast)


Lesenswert?

@Mark

ich wäre schon ganz zufrieden damit, wenn auf der Platine die
Levelshifter und der Spannungsconverter für die 2,9V drauf wären.

kannst dann mal bescheid sagen, was die platine kosten würde.

mfg Kay

von André Kronfeldt (Gast)


Lesenswert?

@Mark

Denke auch, daß die nötigsten Komponenten reichen (2,9V-Regler,
Levelshifter) vielleicht noch der Konverter für die HB.

@ChristianK

Mein LCD leuchtet zwar grün, aber kein Text ist zu sehen. Nur bunte
Balken in der ersten Pixelreihe. Wird wohl noch ein Timing-Problem bei
mir sein.

Dein Quellcode definert kein F_CPU (wird für delay_ms() benötigt). Der
Compiler setzt zwar als default 1000000UL, aber das klappt nicht
immer.
Wenn ich die Optimierung ausschalte (OPT=0), funktioniert das LCD nicht
(kein Init). Auch ein wenig seltsam.

Aber ich arbeite dran.

Grüße,
AK

von MartinK (Gast)


Lesenswert?

@André

Bei mir läuft die Ansteuerung (grünes Display) einwandfrei sowohl
bei 1 Mhz als auch 8 MHz, obwohl ich Christians originale
Hex-Datei (16 MHz) zum flashen genommen habe, ohne sie neu
zu compilieren.

MartinK

von Mark D. (mark_de_jong)


Angehängte Dateien:

Lesenswert?

Hallo,

Hat jemand schon das EPSON (L2F50126) display getestet?

Das LS020B8UD06 hat glaube ich denn LR38826 controller drauf.
Wenn mann sich seite 14 vom Datenblatt vom LQ022B8UD04 display ansieht,
erkennt mann die kommandos wieder.

Ich habe das Datenblatt vom LR38826 noch nicht gefunde, nur einen
übersicht.

Grüße Mark,

von Kay (Gast)


Lesenswert?

kurze frage:

wo finde ich bei reichelt einen 2,9V regulator ?


mfg Kay

von Christian K. (christiank)


Lesenswert?

Hallo Mark,

einige Kommandos scheinen gleich zu sein -> Also ist Sharp der
Hersteller :-)

Nur die wichtigen Kommandos wie wie VRAM writing stimmen nicht.

Aber: Du bist nahe dran, hast du noch mehr von Sharp?

von Mark D. (mark_de_jong)


Lesenswert?

Hallo Christian,

Leider (noch) nicht, hast Du denn Epson schon getestet?
Anfrage bei sharp hat noch nichts gebracht, anfrage bei epson lauft.

Grüße Mark,

von Dirk (Gast)


Lesenswert?

@Kay: versuchst mal mit LM317 kann man die Spannung mit 2 Widerständen
einstellen. Datenblatt gibt bei reichlet

von Kay (Gast)


Lesenswert?

danke, schau ich mir gleich mal an

von André Kronfeldt (Gast)


Lesenswert?

Hi,

so. Mein LCD geht mit dem Code jetzt auch. Der Fehler war nicht in der
Ansteuerung selbst, sondern mir scheint der AVR-GCC noch nicht
ausgereift genug zu sein.

Erklärung:
- Sobald der Code mit 'OPT=0' kompiliert wird läuft er bei mir
nicht.
- Bei 'OPT=3' werden Warteschleifen wegoptimiert.
  Sind zwar simple for-schleifen ohne Inhalt, aber kein Grund es
  zu übertreiben.
- Nur einige Zeichen gehen (wohl Zugriffsprobleme bei großen Arrays)

Ich habe für die Änderung an den ATmega8515 nur die Portpins
(funktioniert, da Ansteuerung geht) und das Compiler-Ziel (MCU)
angepaßt. Zusätzlich hab ich noch ein F_CPU gesetzt, was aber wohl
nicht unbedingt nötig ist (Wartezeiten sind da wohl nicht so
kritisch).

Entweder mach ich was falsch, oder das Teil ist für den ATmega8515
nicht zu gebrauchen.

Grüße,
André

von Christian K. (christiank)


Lesenswert?

Hallo Andre,

der Code war nur als einfaches, sofort zu verstehendes Beispiel
gedacht, daher liegen alle Daten (ASCII sowie Display) im RAM! (Denn
dar AVR braucht spezifische (non ANSI) Befehle für den Zugriff auf den
Program-Speicher.

Ich kenne den ATmega8515 nicht, aber ich vermute, du hast zu wenig RAM.
Daher solltest du die ganzen Arrays in den Program-Space verschieben.
Wie das geht steht sehr gut hier im AVR-GCC Tutorial beschrieben.

Vielleicht sollte ich den Beispielcode dementsprechend ändern....

von André Kronfeldt (Gast)


Lesenswert?

Hi,

danke aber nicht nötig. Denke Du hast Recht mit dem Problem. Das sollte
aber vom AVR-GCC erkannt werden und - entweder Abbruch mit Fehler - oder
die Daten ins .cseg und mit LPM zugreifen. Naja. Vielleicht lese ich
erstmal ein wenig und übe, bevor ich den Thread mit Sachen zumülle die
nichts mit der LCD-Ansteuerung zu tun haben ;-)

Grüße,
André

von MartinK (Gast)


Lesenswert?

@Christian

Betrifft LS020-Display
Ich habe eine einfache Ansteuerung in Bascom geschrieben.
Dabei habe ich festgestellt, dass ohne die beiden Befehle
EF90 0000 nach der Initialisierungssequenz auf dem Bildschirm
nichts erscheint. (in deinem Asm-File steht dazu: I think not
necessary...)

MartinK

von MartinK (Gast)


Lesenswert?

@Christian

Außerdem habe ich festgestellt, dass die Zeit zwischen Init2 und
Init3 zwar eine Mindestzeit von etwa 7 ms haben muss, doch die
Maximalzeit ist unbegrenzt (1 Sekunde funktioniert bei mir noch)

MartinK

von Christian K. (christiank)


Lesenswert?

Hallo MartinK,

zur Mindestzeit:
ich könnte mir vorstellen, dass es daran liegt, das es jetzt 3-Init
Sequenzen gibt (am Anfang hatte ich nur 2). Der Display reset 0xFDFD
war vorher wohl noch nicht sauber gelaufen. Jetzt kannst du das ja mal
ausprobieren :-)

von Lightning (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
hab das PDF ein bisschen erweitert. Falls irgendwo Fehler
drinn sind bitte mir sagen.

Gruss Lightning

von Mark D. (mark_de_jong)


Lesenswert?

Hallo Lightning,

Der Controller ist der HD66773 und nicht der HD66766.

Kannst du nocht die init für das LPH88 display hinzufügen?

Grüße Mark,

von Dirk (Gast)


Lesenswert?

Kann das sein das das LS020 am meisten  bei Ebay verkauft wird (
gelbliche Platine ) und der LPH88 ein auslauf Modell ist das L2S50
sieht man auch ab und zu.

Frage: Aber ich es jetzt richtig verstanden das , nur der LPH88 im
Moment läuft? Wie weit seit Ihr mit den anderen?

Ich ohne bedenken LS020 kaufen oder erstmal abwarten?

Für welche Displays kann man verwenden.

Bitte - gebt bei den Posts an welches Display ihr meint , sonst kommt
man ja durcheinander.

Gute Arbeits Jungs!!!!

von Lightning (Gast)


Lesenswert?

@Mark de Jong

Ist die INIT für das LPH88 Display die mit den
3 einzelnen Inits ??

~ Lightning

von Christian K. (christiank)


Lesenswert?

@ Dirk:
Den mehr oder weniger aktuellen Stand findest du hier:

http://www.superkranz.de/christian/S65_Display/DisplayIndex.html

Grüße
  Christian

Im Moment ist das LPH88 und LS020 supported. Das L2F50 hoffentlich
bald.

Die GLCD gibt es derzeit nur für das LS020, ein gleichwertiger Port für
das LPH88 ist einfach möglich. Für das L2F50 könnte es schwieriger
werden, da es anscheinend keine Addressierungs-Modi unterstützt.

von Christian K. (christiank)


Lesenswert?

@Mark de Jong:

>HD66773 und nicht der HD66766

Wieso denkst du es ist das HD66773? Hast du die Specification davon?
Wenn ja würden mich die Grafik-Befehle interessieren bzw. ob sie sich
vom HD66766 unterscheiden.

Die Grafik-Befehle die ich benutze sind zum HD66766 kompatibel.

Grüße
  Christian

von Mark D. (mark_de_jong)


Angehängte Dateien:

Lesenswert?

Hallo Christian,

Wenn mann die init anschaut schreib er auch zu register 0x0D und 0x0E
beim init.
Die gibt beim HD66766 nicht, aber beim HD66773 schon.

Deshalb glaube ich das es der HD66773 ist.

Grüße Mark,

von Lightning (Gast)


Lesenswert?

@Mark de Jong

Wenn ich die INIT für den LPH88 auch ins PDF
reinschreiben soll muss ich wissen welche
Init das ist.

Jetzt sind auf der Homepage vom
Christian Kranz da auf einmal 3 einzelne
Inits. Warum ?? Hab ich was verpasst ??

Gruß Lightning

von Mark D. (mark_de_jong)


Lesenswert?

@Lightning:
Am besten wartest du, bis alles 100% deutlich ist.

Grüße Mark,

von Lightning (Gast)


Lesenswert?

@Mark de Jong
Ja ist wohl das beste. Wenns soweit ist poste
ich dann das neue PDF.

Gruß Lightning

von Mark D. (mark_de_jong)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich schreibe gerade an meine software library die ich auch frei
verfügbar machen werde (pre-beta, längst nicht alles ist drin).

Ich schreibe sie für denn MSP430 (IAR Embedded Workbench), er soll aber
auch für denn Atmel werden (brauche jemand der dabei hilft).

Ich werde das font-tool von Ape benutzen.

Der low-level treiber ist für pin toggle und SPI-hardware ausgelegd.

Grüße Mark,

von Mark D. (mark_de_jong)


Lesenswert?

Hallo,

Ich plane zwei Platinen:

1. Minimal platine (fertig für produktion):
- mit oder ohne display lieferbar.
- +3.3volt oder +5 volt eingang.
- Spannungs regler für 2.8 volt.
- Spannungs regler für hintergrundbeleuchtung, PWM geregelt.
- Level wandler für signale.
- 10 polige stifleiste mit 2,54mm abstand.
- etwas größer als das display.
- größe 40mm x 60mm

2. MMI platine (in arbeit)
- nur mit display lieferbar.
- 5 volt eingang.
- MSP430F15x/MSP430F16x/MSP430F161x microcontroller.
- JTAG anschluss.
- I2C anschluss mit pegel anpassung.
- RS232 V24 anschluss.
- bis zu 64Kbytes EEPROM (smd)
- Spannungs regler für 3.3 volt und 2.8 volt.
- Spannungs regler für hintergrundbeleuchtung, PWM geregelt.
- 2x 4 taster neben display.
- 5 tasten unterhalb display (in kreuz).
- größe 60mm x 90mm.

Sobald ich preise und lieferzeiten weiss melde ich das auch hier, und
auf meine homepage (www.mdejong.de)

Die software library und alle iinformationen für die displays wird auch
auf meine homepage zum download verfügbar sein.

Grüße Mark,

von Dirk (Gast)


Lesenswert?

Könnt Ihr in eure Programm Dateien auch reinschreiben für welchen
Display damit man bescheidweis wenn man mal die Lib tauschen will.

Ich bin mal gespannt auf die Preise :-/

von Mario (Gast)


Lesenswert?

Kurze Frage zur Spannungsversorgung:

Weiter oben im Thread steht, dass der 1V8 Eingang auch 2V9 verträgt. Im
Datenblatt zum HD-Controller hab ich gesehen, dass der alles im Bereich
von 2.2 bis 3.3V verträgt.
Ich vermute mal dass das für alle Controller die hier im Einsatz sind
gilt.
Ist der Level-Shifter + Spannungswandler überhaupt nötig, oder spielt
da das LCD-Panel auch eine Rolle?

Mario

von Andi (Gast)


Lesenswert?

@Mark:
"Sobald ich preise und lieferzeiten weiss melde ich das auch hier,
und
auf meine homepage (www.mdejong.de)"


Nicht, daß das so hängenbleibt wie andere unvollendete Projekte von
Dir.
Auf die LCD-Platine zum 640er warten wir bis heute trotz vollmundiger
Ankündigung...

von Mark D. (mark_de_jong)


Lesenswert?

Hallo Andi,

Wie du auf meine homepage sehen kannst ist der platine jetzt
lieferbar.

Ich mache das alles alleine und neben meine eigentliche arbeit deshalb
dauert es manchmal länger.

Die hardware entwicklung ansich ist nicht das Problem.
Die testfase kostest viel zeit (Platinen machen lassen, bauteile
besorgen, aufbauen, testen....)
, ich biete keine ungetestet hardware an.
Auch das schreiben von der doku nimmt viel zeit in anspruch.

Ich möchte das meine Produkte für jeder zu benutzten sind, also keine
"bastellösungen".

Ich bin auch jederzeit bereit fragen zu beantworten (per email oder
telefonisch).

z.b. Das suchen welche controller auf die displays benutzt werden hat
viele stunden gekostet, ich habe viele stunden verbracht im internet zu
suchen und datenblätter zu lesen.

Dies soll keine entschuldigung sein, sondern nur eine erklärung :-)
Ich beschwere mich auch nicht, es ist eine hobby für mich.

@Mario,
Du hast recht das steht im datenblatt vom controller, aber wir haben
kein datenblatt vom LCD-Panel, deshalb gehen wir auf nummer sicher und
benutzten nur 2,9 volt.
Der level-shifter is "notwendig" um die signale zum controller
richtig zu haben (die flankensteilheit, etc.)

Grüße Mark,

von Holger (Gast)


Lesenswert?

Hallo André Kronfeldt und den rest der Leser.

Ich hab mal eine Frage an gerichtet André, du sagtest oben das du dein
Display mit einem Levelshifter 74HC573 ansteuern wills, meine frage
dazu hat dies Funktioniert und wie hast du diesen angeschlossen.

Vielen Dank Holger

von Fabian T. (ape)


Lesenswert?

Ist es eigentlich möglich die Lib noch um eine Funktion zu erweitern um
Dreiecke zu füllen? Damit könnte man dann beliebige Polygone zeichnen da
sich ja jede Form in Dreiecke zerlgen lässt.

von André Kronfeldt (Gast)


Lesenswert?

@Holger:

Ich hab dann doch lieber 10 Widerstände genommen. Der 74HC573 hat
entgegen seinem Dateblatt die Ausgänge auf 3,3V gelegt (angeblich
maximal VCC+0,5V). Wurde extra mit 2,4V versorgt. Ging aber nicht.
Ich hab das bislang aber nicht weiter verfolgt, werde mich aber mal bei
Gelegenheit dran machen.

Grüße,
AK

von Mario (Gast)


Lesenswert?

@Andi,

ich muss mich Mark anschließen. Es ist das Forum für Hobbyasten und
Bastler, das ist weit weg vom Komerziellen. Da gibts andere Seiten,
beipielsweise www.display300.com.
Ich denke aber mal, dass Dir das sowieso klar ist und du Mark nur
motivieren wolltest damit die hier interessierten daran auch zu der
Platine kommen. ICh denke er tut in seinem Rahmen des möglichen das
beste ...

@Mark: Ich werde mich mal bzgl. LCD-Panels schlau machen. Ich denke die
werden sowieso über den internen Booster angesteuert, der wiederum die
Spannung über die interne Referenz erzeugt. Aber der "auf Nummer
sicher" Ansatz klingt überzeugend :)


Mario

von Fabian T. (ape)


Lesenswert?

@André
ein normaler HC573 hat an seinen Eingängen ESD Schutz-Dioden, die dafür
Sorgen das Überspannungen an den Eingängen auf die Versorgungsspannung
abgeleitet werden. Wenn du nun an den Eingängen höhere Pegel hast als
die Versorgungsspannung des ICs, wird die Versorgung über die Eingänge
hoch gezogen. Da der AVR recht kräftige IOs hat stellt sich dann eine
entsprechend höhere Spannung ein. Deshalb steht ja auch in den Absolute
Maximum Ratings als Maximum Input Voltage VCC...
Ein Level Shifter wie z.B. ein HC4050 ist dafür ausgelegt an den
Eingängen höhere Pegel als die Versorgungsspannung zu haben.

von André Kronfeldt (Gast)


Lesenswert?

@Fabian

Danke. Das kommt davon, wenn man nur die Hälfte liest. Einen HC4050 hab
ich wohl noch hier. Ich teste das mal.

Grüße,
André

von André Kronfeldt (Gast)


Lesenswert?

@Fabian

bei mir im Datenblatt ist für den HC4050 aber auch
VI DC Input Voltage -0.5 to VCC + 0.5 V (Maximum)
VI Input Voltage 0 to VCC V (RECOMMENDED)
angegeben und in der CIRCUIT SCHEMATIC auch zwei
Schutzdioden (allerdings gestrichelt).

von Fabian T. (ape)


Lesenswert?

Also bei TI steht im Datenblatt:

"The ’HC4049 and ’HC4050 are fabricated with high-speed
silicon gate technology. They have a modified input
protection structure that enables these parts to be used as
logic level translators which convert high-level logic to a lowlevel
logic while operating off the low-level logic supply. For
example, 15-V input pulse levels can be down-converted to
0-V to 5-V logic levels."

Ausprobiert hab ich die aber auhc noch nie.

von Mark D. (mark_de_jong)


Angehängte Dateien:

Lesenswert?

Hallo,

Wegen die pegelwandler hier ist mein schaltplan für die Platine.
Ich benutzte denn 74LVC1T45 und 74LVC2T45 von TI.

Grüße Mark,

von Andi (Gast)


Lesenswert?

"Dies soll keine entschuldigung sein, sondern nur eine erklärung :-)
Ich beschwere mich auch nicht, es ist eine hobby für mich."


Wenn das ein Hobby ist, wieso dann eine Umsatzsteueridentnummer?

Im Übrigen ist der Bestellvorgang nicht gesetzeskonform. Wenn man
nämlich die AGB bei der Bestellung anklickt (Der Link hinter dem
Haken), dann führt der ins Leere. Die AGB werden also nicht Bestandteil
des Kaufvertrages.

Wenn man die AGB links anklickt, so kommen hier nicht gesetzeskonforme
AGB zu Tage. Portkosten sind nämlich ab einem Bestellwert von 40 Euro
in jedem Fall vom Verkäufer zu erstatten.

Auf jeden Fall solltest Du an der Webseite arbeiten, sonst kann das
schnell teuer werden.

von André Kronfeldt (Gast)


Lesenswert?

@Mark:

> Wenn mann die init anschaut schreib er auch zu register 0x0D und
0x0E
> beim init. Die gibt beim HD66766 nicht, aber beim HD66773 schon.
Ich find die beim HD66773 aber auch nicht.
R0Bh (Seite 35) ...
R0Fh (Seite 37) ...

von Mark D. (mark_de_jong)


Lesenswert?

@Andre,

Aber auf seite 27 :-)

@Andi,
Mann braucht einen Steuernummer zum verkaufen, Auch wenn es ein hobby
ist.

Auch ein gewerbe kann ein hobby sein, ich meine nur das ich nicht davon
lebe (kann).

Grüße Mark,

von André Kronfeldt (Gast)


Lesenswert?

@Mark:
Japanische Reihenfolge ist schon seltsam.
BTW: Natürlich hab ich nach 'R0Ch' gesucht, ging aber nicht.

von MartinK (Gast)


Lesenswert?

@Christian

Habe gerade gesehen, dass du die Ansteuerung für das
L2F50-Display fertig gestellt hast.
Hast du vielleicht ein Datenblatt des Controllers gefunden,
weil du so detailiert die Befehle beschrieben hast.
Besonders interessant finde ich, dass es eine 18-Bit-Farbdarstellung
gibt. Bedeutet das, dass dieses Display das Beste von allen Dreien
ist? Oder welches Display würdest du empfehlen? (in Bezug auf
Bildqualität, Helligkeit, Ansteuerbarkeit)


MartinK

von Mark D. (mark_de_jong)



Lesenswert?

Hallo,

Das ist ein Controller von EPSON, wie der S1D15G10 (132x132pixel).

Jetzt brauchen wir nur noch das richtige datenblatt.

Grüße Mark,

von André Kronfeldt (Gast)


Lesenswert?

Hi,

ich hab mal eine Frage zu der generellen SPI-Kommuniktation. Laut
Datenblatt (S55) wird CS* auf low gezogen um das LCD zu selektieren.
Dann werden die Daten (Kommando, Parameter) übertragen. Danach CS*
wieder auf high.

Laut dem Code von ChristianK ist CS* die ganze Zeit low und wird nur
nach der Übertragung kurz auf high gezogen.

Woran liegt das?

Grüße,
AK

von Jochen (Gast)


Lesenswert?

"Mann braucht einen Steuernummer zum verkaufen, Auch wenn es ein hobby
ist."

Das ist falsch. Entscheidend ist die Gewinnerzielungsabsicht.


"Auch ein gewerbe kann ein hobby sein, ich meine nur das ich nicht
davon
lebe (kann)."

Das ist etwas anderes, wenn die Umsätze zu gering dafür sind.
Entscheidend ist, wie gesagt, daß Du damit Gewinne erzielen möchtest.

von André Kronfeldt (Gast)


Lesenswert?

@Jochen & Andi

abgesehen davon, daß einem in diesem Land bestimmt sofort
'Gewinnerzielungsabsicht' vom Finanzamt unterstellt wird sobald man
versucht einen alten Kaugummi loszuwerden, halte ich die Diskussion
über den Shop in diesem Thread für unangebracht.

Nicht bös sein, aber ich denke es geht hier um das S65-LCD und um die
Ansteuerung (von mir aus auch um Bauteilbeschaffung).

Grüße,
André

von Mark D. (mark_de_jong)


Lesenswert?

@Andre:
Da hast Du völlig recht, also ENDE.

Grüße Mark,

von Christian K. (christiank)


Lesenswert?

Hallo Andre,

>Laut dem Code von ChristianK ist CS* die ganze Zeit low und wird nur
>nach der Übertragung kurz auf high gezogen.

Das stimmt so nicht. Schau dir den Code nochmal genau an. Im übrigen
unterscheidet sich die CS Steuerung bei jedem Display Typ. Es gibt aber
auch bestimmt andere CS Steuerungen die zum Ziel führen, als die aus
meinem Code.

Allen Display's gemein ist (hoffentlich, noch nicht getestet) dass sie
den SPI Bus ignorieren wenn CS=high ist.

Grüsse
  Christian

von Mark D. (mark_de_jong)


Lesenswert?

@Christian,

Hast Du das richtige datenblatt vom EPSON controller?
Wenn Ja, kannst Du das Posten?

Grüße Mark,

von André Kronfeldt (Gast)


Lesenswert?

@Christian:

Es geht hier um das LPH.

Nach einem port_init() ist CS* low.
Im lcd_init_c() wird erst ein Reset (CS*=1) durchgeführt
und dann das LCD selektiert (CS*=0). Soweit okay. Dann
kommen die Daten per comtype() oder comdat(). Nach dem
Senden wird CS* auf high gezogen. Da komm ich noch mit.
Aber warum geht es danach wieder auf low?
Vor allem, weil Du es am Ende von lcd_init_c() wieder setzt.
Das Setzen ist okay (LCD nicht selektiert), aber der zusätzlich
Impuls scheint mir unnötig, oder?
Kann aber auch sein, daß Du versuchst das LCD default-mäßig zu
selektieren um mehrere Befehle hintereinander zu senden.
Dann ist natürlich klar, daß du am Ende von put_char() und lcd_init_c()
das LCD wieder abwählen mußt. Trickser ;-)

Ich denke aber auch, daß der BUs ignoriert wird, wenn CS*=1 ist.

Gruß,
AK

von Christian K. (christiank)


Lesenswert?

@Mark:
Nein, ich habe kein passendes Datenblatt zum Epson Controller. Wäre
schön wenn du das irgendwie besorgen könntest ;-)

Die Commands sind aber ähnlich zu anderen Controllern (z.B. der
132x132) und die die benutzt werden passen auch soweit. Andere, die bei
mir noch in der #define Liste stehen, aber nicht benutzt werden, z.B.
DISPINV, scheinen nicht zu funktionieren.

Ich habe aber noch nicht alles (viel) ausprobiert. Hoffe das die SLEEP
Commands funktionieren.

Grüße
  Christian

von Christian K. (christiank)


Lesenswert?

@Andre,

schau mal in das HITACHI Datenblatt. Da steht etwas zu den CS Flanken.
Z.B. muss es zu Begin und Abschluss der commands gewisse Flanken
geben.

Grüße
  Christian

von MartinK (Gast)


Lesenswert?

@Christian

Hast die 18-Bit-Farbenzahl beim L2F50-Display schon ausprobiert?
(bezieht sich auf deinen Kommentar im C-File)

MartinK

von Thomas Voss (Gast)


Lesenswert?

Hallo,

auch ich hab mal eine Frage in wie fern ist es möglich zwei Displays
über einen Mikrocontroller zu steuern, muss man dazu im Code viel
verändern?

Mfg Thomas

von André Kronfeldt (Gast)


Lesenswert?

@Thomas

Wenn ich mich nicht täusch, sollte es reichen wenn man getrennte CS*
Signale auf jedes Display legt.
Der Code ist dann fast derselbe (bis auf die Anstuerung des CS*).

von Kay (Gast)


Lesenswert?

@MartinK

könntest du mir bitte dein Beispiel in Bascom mal zukommen lassen ?


mfg Kay

von Christian K. (christiank)


Lesenswert?

@MartinK:
> Oder welches Display würdest du empfehlen? (in Bezug auf
> Bildqualität, Helligkeit, Ansteuerbarkeit)

Weiter oben im Thread findet man:

>Mir ist aber aufgefallen, dass das LS020-Display wesentlich
>heller ist.... Außerdem scheint das LS020-Display gleichmäßiger
>beleuchtet zu sein.

Aha, aber trotzdem würde ich die LPHxx Display (die grünen/blauen)
aufkaufen wenn ihr sie los werden wollt....

Grüße
  Christian

P.S:
Die LPH's lassen sich nämlich laut Datenblatt (noch nicht probiert)
erheblich flexiber programmieren. Es gibt praktisch alle
Addressierungsarten, so dass z.B. ein Port der glcd in allen Rotationen
einfach möglich sein wird. D.h. das LPH Display eignet sich dann sehr
gut zum Quereinbau (längs). Bei den anderen beiden Displays ist dazu
mehr Portierungsaufwand erforderlich.

Die Bildqualität ist bei allen recht ähnlich, die Qualität der
Beleuchtung wohl beim LPH am schlechtesten, L2FS und LS020 sind
ähnlich. Meiner Meinung nach macht das L2FS Bildmässig overall den
besten Eindruck, auch was die mechanische Qualität angeht - ist aber
derzeit von der Programmierung her am wenigsten flexibel.

Beim LPH kann man sich sogar noch ein Interface-Signal (RS) sparen.

Also zusammengefasst derzeit meine private Rangliste:
a) LPH
b) LS020
c) L2FS

von The Daz (Gast)


Lesenswert?

Christian,
reagiert deine step-up 10V Quelle empfindlich auf die groesse der
Induktivitaet ? Ich habe eigentlich KEINE Ahnung von dem analogen
Gebimsel und habe hier noch ne 1mH Festinduktivitaet rumliegen und
hoffe, man kann das mit einer Anpassung des PWM Signals ausgleichen.
Ich gehe mal davon aus, dass der Transistor- und Dioden-Typ eher
nebensaechlich sind, oder ? (dachte an BC546 + 1N4148).

  Daz

von André Kronfeldt (Gast)


Lesenswert?

@The Daz

Ich würde lieber bei einer Schottky-Diode bleiben.

von Mario (Gast)


Lesenswert?

Hallo,

ich habe im eBay ein bischen herumgesucht und bin auf das SX1 gestoßen.
Ich weiß, dass dass hier nicht so richtig passt.
Aber ich vermute, dass dieses Display (ist etwas größer) ähnlich in der
Ansteuerung ist wie dieses hier.
Hat dazu schon jemand eine Idee.

Hier die "Daten" vom Display:
Display (genutzte Fläche) 35 x 44 mm (176 x 220 Pixel, 65.536 Farben)

Das Teil gibts für ca. 15.- bei eBay.

Zu meiner Level-shifter Frage von vorhin. Nachdem ich mich versucht
habe so gut wie möglich schlau zu machen, bin ich auf folgende
Versuchsanordnung gestoßen: Das Display anhängen und langsam die
Spannung schrittweise von 2.9V bis 2.2V verringern. Ändert sich nichts
(Kontrast etc.), so sollte dasselbe auch für höhere Spannungen gelten,
d.h. das Display kann innerhalb der Controller-Spezifikation betrieben
werden.

Von der Theorie her (Flüssigkristalle etc.) sollte das auch für das
Panel nicht kritisch sein. Desweiteren scheint der Controller seine
LCD-Treiberspannungen von der (internen) Referenz zu erzeugen wie es
das Blockschaltbild darstellt.

Welche internen Spannungen hat das S65?


Mario

von Mark D. (mark_de_jong)


Lesenswert?

Hallo Mario,

Das SX1-display habe ich ach schon gesehen, aber das hat glaube ich
einen 40 polige connector.

Grüße Mark,

von Fabian T. (ape)


Lesenswert?

Soweit ich das auf den eBay Bildern erkennen konnte scheint der
Connector 18 Pins zu haben... Das spricht jedenfalls für ne paralelle
Schnittstelle. Macht auch Sinn, bei 176*220 Pixeln und 16 Bit ist ein
Bild stolze 77440 Byte groß. Bei einer SPI Schnittstelle mit 8MBit
würde man für ein Bild im Idealfall 74ms brauchen bzw. 13,5fps
schaffen. In der Praxis wäre das ganze noch wesentlich langsamer, da
die Daten ja erstmal generiert werden müssen.
Überhaupt sind AVRs für diese Auflösungen meiner Meinung nach nicht
mehr wirklich geeignet, und die hohe Auflösung ist denke ich auch
einfach überflüssig. Zu JPEG- oder Video-Anzeige sind AVRs glaube ich
selbst bei noch so effizienter Programmierung nicht mehr in der Lage :)
und sonst wüsste ich nich wofür man die vielen Pixel noch gebrauchen
kann.
Für die größeren ARMs könnte so ein Display schon eher handhabbar sein,
aber die Anwendung fehlt immernoch. Vielleicht ein selbstbau Video
Player mit TI DaVinci :D

von André Kronfeldt (Gast)


Lesenswert?

@Fabian Thiele

Also mein Anwendungsfall wird ganz klar GinaSisters oder Tetris ;-)

Mittlerweile kann mein LPH Hardware-Scrolling und am Wochenende werde
ich die guten alten 'Sprites' oder 'Blobs' realisieren. Meine Frau
fragt mich zwar nach dem Sinn, aber ich hoffe ich werde nicht entmutigt
;-)
Der Code von ChristianK ist mittlerweile auch nach Assembler übersetzt
und ein wenig optimiert. Die Datenaufbereitung fällt fast nicht mehr
ins Gewicht.
Ich hoffe nur, daß bald die bestellten ATmega128 kommen, der ATmega8515
wird langsam eng (SRAM-mäßig). Das momentan angebundene Dataflash ist zu
langsam.

Grüße,
AK

von MartinK (Gast)


Lesenswert?

Bascom-Ansteuerung für ein LS020...-Display

http://www.xmail.net/martin-k/display.htm

Benötigt wird eine neuere Bascom-Demo-Version,
die auf 4 kB Codegröße limitiert ist.

MartinK

von Christian K. (christiank)


Lesenswert?

@The Daz:

Der Supply Boost ist nicht sehr empfindlich. Kannst also ruhig mit der
1mH Spule starten. Empfehlung ist erstmal mit einer kleinen pulse-weite
anzufangen und dann langsam hochdrehen...

Weiterhin empfehle ich für's Lab/Bastellkeller einen
Überspannungsschutz vorzusehen. Wenn z.B. mal das Display - bei
anliegendem PWM Signal - nicht angeschlossen ist, wird sich der
Spulenstrom einen anderen Weg suchen. Der ist sonst vmtl. tödlich für
irgend ein anderes Bauteil. Ich habe zwei 5.6V Z-Dioden in Reihe
geschaltet.

Hier die Initialisierung des Timers 2 für die PWM Erzeugung (16MHz ->
62.5kHz PWM Frequenz). (Achtung, die die den PB7 for LCD_RS genutzt
haben - wie ich in meinen Code-Beispielen - müssen den verlegen z.B.
auf PB5) Puls-Weite ist OCR2/256. PWM Ausgangssignal ist OC2 (PB7)

    // backlight PWM generation
    // use timer 2 in fast PWM mode for this
    PORTB &= ~_BV(PB7);  // clear port before enable
    DDRB |= _BV(PB7);  // will be used for OC2, must be output
    TCCR2 = _BV(WGM21) | _BV(WGM20) | _BV(COM21) | _BV(CS20);
    TCNT2=0x00;
    OCR2=120;

Zur Hardware:
Schottky Diode ist wegen besseren Wirkungsgrad (normale geht aber
auch).

Beim bipolaren Schalttransistor den Basis-Vorwiderstand nicht vergessen
;-)

Grüße
  Christian

von Lightning (Gast)


Angehängte Dateien:

Lesenswert?

Hy Leute,

Hab das PDF wiedermal auf den neusten Stand
der Dinge gebracht.

Falls Fehler auftauchen oder sonst was ist
wie immer bitte melden.


Gruß Lightning

von The Daz (Gast)


Lesenswert?

@Christian,
merci fuer die Info. Hab mir ein LS020 bestellt und werde demnaechst
anfangen.

@Lightning,
daaaanke fuer den update. Endlich kenne ich die genauen Einbaumasse und
es sieht so aus, als ob das Display in ein 1HE 19" Gehaeuse passen
wuerde.

von Christian K. (christiank)


Lesenswert?

@Lightning:
Denn Update beim PWM backlight hast du noch nicht mit aufgenommen. Wie
erzeugst du das PDF? Von Hand?

Grüße
  Christian

von Jens D. (Gast)


Lesenswert?

Such mal im netz nach PDF Drucker ;)
evtl auch nach Ghostprint oder script hiess das tool meine ich

Gruss

von Kay (Gast)


Lesenswert?

hi Lightning,

wieso gibts das pdf nur in englisch. ich kann zwar englisch, aber in
Deutsch würde ich es besser verstehen. gibt es dafür einen besonderen
grund ?

mfg Kay

von Lightning (Gast)


Lesenswert?

Hy Leute,

@ Christian Kranz
Hab das PWM Update jetzt eingefügt. Zuerst schreibe ich das Zeug
im Word und dann nehm ich den Acrobat 7.0 her und mache aus dem Word
Dokument ein PDF.

@ Kay
Bin seit 2 Tagen drann das PDF nach Deutsch zu Übersetzen
jedoch hab ich eher wenig zeit daher dauert das n bisschen.
Wenn ich die Deutsche version fertig habe, poste ich sie
natürlich auch hier im Forum.

Danke nochmal an alle.


Gruß Lightning

von Kay (Gast)


Lesenswert?

@Lightning
vielen Dank

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Leicht OT, aber dennoch passend:

Verwendet man anstelle von Microsoft Word den OpenOffice Writer, dann
hat man den PDF-Export gleich mit dabei.
OpenOffice 2.0 (gibt es seit einigen Tagen) ist kostenlos und
weitestgehend kompatibel zu den aktuellen Microsoft-Formaten.
Von politischen oder religiösen Überzeugungen abgesehen kann ich wenig
Gründe erkennen, die gegen eine Migration sprächen.

von Lightning (Gast)


Lesenswert?

@Rufus T. Firefly

Da ich mich mit Word schon sehr gut
auskenne, geht es schneller wenn ich
das ganze ein bisschen umständlicher
mache, als wenn ich mich jetzt in
OpenOffice einlerne.

Gruß Lightning

von The Daz (Gast)


Lesenswert?

Ich hab mir die Schaltung jetzt mal mit nem ATMega16 @ 16MHz und nem
LS020 Display auf nem Steckbrett zusammengestrickt. Fuer die LED
Voltage steht bei diesem uC ja nur 62,5kHz (anstatt 200kHz wie im PDF
beschrieben) zur Verfuegung. Auf die benoetigten 10,4V komme ich bei
mir erst mit ca. 5mH Spuleninduktivitaet und einem
Puls/Pause-Verhaeltnis von 52%/48% (OCR2 = 134).

Das kleine Demo-Programm (Hello World) scheint auch nicht zu
funktionieren, der Hintergrund wird zwar eingefaerbt, aber es ist kein
Text zu sehen. Aus diesem Grund habe ich erstmal nur versucht kleine
Rechtecke aufs Display zu zaubern. Dabei hat sich herausgestellt, dass
die X und Y Koordinaten vertauscht zu sein scheinen. Egal welchen
Rotations-Wert ich einsetze, ich muss X und Y vertauschen. Sehr
seltsam, werde das nochmal genauer untersuchen.

Ansonsten bin ich bisher ganz zufrieden mit dem Ergebnis. Vielen Dank
an Christian und Mark. Good job !

   Daz

von Christian K. (christiank)


Lesenswert?

@Daz:
Backlight:
Ich benutze 820µH mit 62.5kHz mit n-channel FET und schottky diode.
-> funktioniert tadellos, Helligkeit lässt sich über pulse weite sehr
gut einstellen, auch extrem hell (und vmtl. weit ausserhalb der LED
Spec.) Kann sein dass das an deinen nicht optimalen Bauteilen (bipolar
Tr. 1n4148 liegt)

Hello World:
Schiebe mal die komplette ASCII Tabelle in den Flash Speicher. Ich
vermute du hast ein SRAM Problem... (Als Beispiel kannst du dir den
Code vom EPSON Display ansehen oder GCC tutorial oder du weisst das
sowieso)

Gruesse
  Christian

von The Daz (Gast)


Lesenswert?

Christian,
dachte ich zuerst auch. Habe deshalb auf FET und Shottky-Diode
umgestellt und damit ueberhaupt erst ein braucgbares Ergebnis erziehlt.
Die angegebenen Werte beziehen sich daher auf die FET/Shottky
Kombination. Ich will nicht ausschliessen, dass der Aufbau auf dem
Steckbrett seinen Teil dazu beitraegt.

Die ASCII-Tabelle ins Flash zu schieben werde ich heute abend mal
ausprobieren. Danke fuer den Tip.

  Daz

von The Daz (Gast)


Lesenswert?

Jo, den Font ins Flash zu verlegen hat das Problem mit der Anzeige des
'Hello World' Strings gefixt. Bleibt nur noch die Sache mit den
vertauschten Koordinaten. Aber da scheint es, als ob das
Beispiel-Programm mehr weis als das PDF Dokument. Bei 0° Rotation
vertauscht die put_char Routine nämlich auch die Koordinaten und schon
stimmts wieder.

  Daz

von Kay P. (kay)


Angehängte Dateien:

Lesenswert?

@MartinK

hi,

hab das display jetzt am laufen. hat sogar auf anhieb geklappt. wenn
ich den AVR und das display mit Strom versorge, dann dauert es ca. 20
Sekunden bis das Display voll beschrieben ist. Ist das normal ? liegt
es daran, das es keine SPI Ansteuerung ist ?

mfg Kay

von Martin (Gast)


Lesenswert?

@Kay

Bei mir dauert der Bildaufbau maximal 3 Sekunden bei einer
Taktfrequenz von 8 MHz.
Natürlich wäre eine Ansteuerung über SPI wesentlich!!! schneller.
(Bascom unterstützt SPI-Befehle)
Selbst ohne SPI läßt sich mein Code noch optimieren. Ich werde mal
sehen, was ich da noch ändern kann.
Der Vorteil einer Ansteuerung ohne SPI ist, dass sich jeder
Portpin eignet.

MartinK

von Kay P. (kay)


Lesenswert?

@MartinK

ok, habe meinen Fehler gefunden. war ja ein neuer mega8. Da ich mit den
megas noch nicht so viel gemacht habe, habe ich vergessen, die FuseBits
so umzustellen, das er auf externem Quarz läuft. jetzt dauert der
Bildaufbau ca 1-2 Sekunden mit 16 Mhz.

ja bascom kann SPI. man könnte ja auch SoftSPI benutzen, dann würde man
auch jeden Port benutzen können. Müsste nur in Bascom die Ports für den
SoftSPI Port definieren.

mfg Kay

von Kay P. (kay)


Lesenswert?

@MartinK

ich habe mal ein wenig am programm rumgespielt, aber ich blicke nicht
durch. ich möchte einfach nur den ganzen Screen Blau malen. Könntest Du
mir bitte sagen, wie ich das anstelle ?
( Ich habe versucht, aus dem PDF schlau zu werde, nur dieses Englisch
.... :-) )

mfg Kay

von Martin (Gast)


Lesenswert?

@Kay

Auf meiner Seite http://www.xmail.net/martin-k/display.htm
habe ich das Beispielprogramm aktualisiert.
Ich benutze jetzt die Shiftout Funktion, die Ansteuerung läuft
etwas schneller.

Wenn du nur Blau malen willst, so gehst du folgendermaßen vor:
(Code aus LS202-RGB.bas)

'Blau malen
A = &HEF90
Gosub 16
A = &H0500       ' 00 => Bild wird von oben nach unten gemalt
Gosub 16
A = &H0800       'x1
Gosub 16
A = &H092B       'x2
Gosub 16
A = &H0A00       'y1
Gosub 16
A = &H0B7F       'y2
Gosub 16

EF90, 0500, 08..  09..  0A.. 0B..  sind die Grafikbefehle zum Malen
eines Punktes oder Ausschnittes. Du musst nur noch die Koordinaten
einsetzen. In meinem Beispielprogramm beginnt der Ausschnitt bei
x1,y1 = 0,0 und endet bei x2,y2 = 2B,7F (Hexadezimal) = 43,127
Diese Werte kannst du beliebig variieren, jedoch darf x nicht größer
als 131 und y nicht größer als 175 sein (0 wird mitgerechnet)
Als nächstes folgen dann die Farbwerte für die einzelnen Bildpunkte
im 16-Bit-Format RRRRRGGGGGGBBBBB
Wenn du also nur Blau malen willst, so hat jeder Punkt den Binärwert
0000000000011111 = 31
Für einen kompletten Bildschirm musst du 132*176 = 23232 mal den Wert
31 senden.

Alternativ gibt es die folgende Befehlssequenz:
EF90, 0500, 06x1, 07y1
Hier definierst du nur den Startpunkt, der Endpunkt liegt automatisch
bei 131,175

MartinK

von Kay P. (kay)


Lesenswert?

@MartinK

also ich habe das neue Beispiel von Dir ausprobiert. Das Bild baut sich
wesentlich schneller auf.

Wenn ich das ganzen Screen Blau malen will, dann mache ich es, wie du
geschrieben hast:



'Blau malen
 A = &HEF90
Gosub 16
A = &H0500                                                  ' 00 =>
Bild wird von oben nach unten gemalt
Gosub 16
A = &H0800                                                  'Start 00
Gosub 16
A = &H0983                                                  'Ende 131
Gosub 16
A = &H0A00                                                  'Start 00
Gosub 16
A = &H0BAE                                                  'Ende 174
Gosub 16

Das Display zeigt dann auf der ganzen Breite das Blaue, nur zeichnet es
nur 1/4 von oben nach unten. ist an meinem code was falsch ?

mfg Kay

von Martin (Gast)


Lesenswert?

@Kay

Das letzte Kommando müßte korrekt A = &H0BAF (175) lauten, sonst hast
du eine Leerzeile.
Dein Problem mit dem 1/4 Bildschirm entsteht bestimmt durch eine
falsche Schleife. Versuch mal folgende Schleife:

Portc.0 = 0   ' RS auf low setzen für Bilddaten
F = 31   'binär 0000000000011111 für Blau
For R = 1 To 23232
A = F
Gosub 16
Next R
Portc.0 = 1   'RS high

MartinK

von Kay P. (kay)


Lesenswert?

@MartinK

also mit der schleife gehts auch nicht. da kommt die Fehlermeldung :

Value doesn´t fit into byte ---> bei For R = 1 to 23232

wenn ich keinen farbverlauf will, dann kann ich doch normalerweise nur
die schleife nehmen, die du im obern Post geschrieben hast oder ?

mfg Kay

von Kay P. (kay)


Lesenswert?

@MartinK

habs hinbekommen. musste R als Word definieren. jetzt habe ich einen
wunderschönen blauen screen. sehr gut. denkst du es wäre auch machbar,
Bilder auf dem Display mit Bascom darzustellen ?

mfg Kay

von Kay P. (kay)


Lesenswert?

@MartinK

hast du vor, das display mit Bascom per SPI anzusteuern ? ich denke mir
die geschwindigkeit des SoftSPI kann zwar nicht mit dem des Hardware SPI
des AVR mithalten, sollte aber dennoch schnell genug sein, um einen
kompletten Screen in sehr kurzer Zeit zu beschreiben. Und das gute an
SoftSPI ist ja, das man jeden beliebigen PIN als SPI Interface
konfigurieren kann.

mfg Kay

von -- Outstanding --- (Gast)


Lesenswert?

@Kay:

Schreibst Du unter 2 Nicks, oder wieso kenn ich Deinen letzten Post
schon: http://www.mikrocontroller.net/forum/read-4-243641.html#257716
???

Zu Deiner letzten Frage:
> denkst du es wäre auch machbar, Bilder auf dem Display mit
> Bascom darzustellen ?
Was sollte dagegen sprechen? Das ist fast schon wie: Denkst Du ich kann
mit dem Messer ein Brot schneiden? Meinst Du Luft ist zum atmen da? War
die Frage ernst gemeint, oder rhetorisch?
Meinst Du, ob es für DICH machbar wäre? Verlier den Mut nicht, aber
ließ bitte ein wenig im Datenblatt.

Grüße,
-- Outstanding ---

von Martin (Gast)


Lesenswert?

@Kay

SoftSPI dürfte das gleiche wie Shiftout sein.
Mit Bascom werde ich mich sehr wahrscheinlich nicht weiter
beschäftigen, weil ich momentan einen M32C (Renesas) programmiere, und
da ist nur C angesagt (obwohl ich Basic eigentlich ganz gut finde)
Bilder auf dem Display darzustellen ist kein Problem, schau dir mal in
diesem Thread die Artikel von Fabian Thiele (ape) an.
Bascom unterstützt ja auch die serielle Schnittstelle.

MartinK

von Kay P. (kay)


Lesenswert?

@MartinK

ich werde mal sehen, ob ich das display mittels C ans laufen bekomme.
danke für Deine Hilfe

@all

habe das Display an einen Mega16 mit 16Mhz folgendermaßen
angeschlossen:

LCD --------- AVR

DAT           MOSI PB5
CLK           SCK  PB7
CS            SS   PB4
RESET         OC1B PD4
RS            OC2  PD7

da ich mit C noch nicht viel gemacht habe, würde ich gerne wissen, ob
es reicht in der lcd.h die Definierung der Ports zu ändern und in der
makefile den mega16 zu konfigurieren ?


mfg Kay

von Simone Durchholz (Gast)


Lesenswert?

@ Kay:
Nein das reicht nicht. Die Sourcen gehen davon aus, dass alle LCD
Signale an den gleichen Port angeschlossen sind. Also warum nutzt du
nicht auch Port B für RESET und RS? Ansonsten musst du die
Port-Zugriffe umschreiben

von Kay P. (kay)


Lesenswert?

@Simone:

habe jetzt den PortB für das Display genommen.

DAT = PB5
CLK = PB7
CS  = PB4
RESET = PB3
RS  = PB2

hab dann in der lcd.h die Pins so konfiguriert und den mega16 im
makefile eingetragen. nur leider geht garnichts. ich denke, ich werde
den mega16 mal tauschen.

mfg Kay

von Kay P. (kay)


Lesenswert?

@The Daz:

könntest Du mir bitte deinen Mega16 Code für das display zukommen
lassen ?

mfg Kay

von The Daz (Gast)


Angehängte Dateien:

Lesenswert?

@Kay,
klar doch (siehe Anhang).

  Daz

von The Daz (Gast)


Lesenswert?

@Kay,
Obacht ! Beim Mega16 liegt der PWM (OC2) Ausgang auf PortD Pin 7.

  Daz

von Kay P. (kay)


Lesenswert?

@The Daz,

danke für den code. hab meinen mega16 nun genauso beschaltet, wie in
der lcd.h beschrieben ( bis auf PWM ). Hab alle Leitungen überprüft.
Aber auf dem Display erscheint nichts. Das Display muss aber in Ordnung
sein, denn wenn ich das Display mit Bascom programmiere, funktioniert es
( bei Bascom benutz ich nur keinen SPI Port ).


mfg Kay

von Kay P. (kay)


Lesenswert?

@all

wieso wird in der lcd.h MISO definiert ? ich dachte, man benötigt nur
MOSI für die Dat Leitung.

mfg Kay

von The Daz (Gast)


Lesenswert?

MISO ist nur der Vollstaendigkeit halber da, wird aber tatsaechlich
nicht gebraucht (Zumindest nicht in diesem Fall). Ich hab selbst hin
und wieder Probleme, weil die LCD-Initialisierung nicht hinhaut. Vor
allem, nachdem ich den assembler code aus Christians Beispiel noch ein
bischen auf performance getrimmt hatte. Das scheint eine enorm
Empfindliche Sache zu sein. Vielleicht reichen ein paar zusaetzliche
NOPs um das Display bei dir ans Laufen zu kriegen. Nimm vielleicht mal
Christians Original-Code, verschiebe den Font ins Flash (PROGMEM) und
probiers nochmal.

von Kay P. (kay)


Lesenswert?

@The Daz

danke für die hilfe. aber ich glaube, ich muss mich jetzt erstmal
intensiv mit C beschäftigen, weil ich davon nämlich so gut wie
garnichts verstehe. Hab zwar im Tutorial was zu Progmem gefunden, weiß
aber immer noch nicht, wie ich den Font ins Flash schieben soll. Sollte
es dann doch irgendwann klappen, melde ich mich.

mfg Kay

von The Daz (Gast)


Lesenswert?

So, wenn ich den SPI double speed mode waehrend der LCD Initialisierung
abschalte und hinterher wieder ein, klappt die Sache wunderbar. Der
Testaufbau auf nem Steckbrett scheint nicht das Gelbe vom Ei zu sein.

von Mario (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe nun endlich auch mein Display (LS020) bekommen. Nachdem ich
aber mehr bei den PIC zuhause bin, habe ich Christians *.asm Code
versucht zu portieren.
Leider hakt es an irgend einer Stelle und ich bin an der Fehlersuche.
Dabei bin ich auf ein paar offene Fragen gestoßen. Zum einen erlaubt es
der PIC die Clock-Polarität einzustellen (Idle = Low/High), d.h.
Invertierung. Zum anderen muss ich angeben, wann die Daten an SDO
angelegt werden (Fallende/Steigende Flanke). Desweiteren habe ich
nirgendwo gefunden, ob MSB first oder LSB-first gesendet werden muss
(vielleicht bin ich auch blind :)).
Beides konnte ich aus dem Code und ermangels an AVR-Kenntnissen nicht
herausfinden.
Auch Martins BASCOM-code hält sich zurück. Sein Shiftout sieht so aus:

Shiftout portx.x, porty.y, A, A

Dabei sollte lt. Dokumentation gerade der vierte Parameter festlegen
wie gesendet werden sollte, der Dritte die Daten, also ??

Ich habe meinen PIC-code (Auszug aus einem größeren Projekt) als
Attachment angehängt. Kann mir jemand von Euch helfen?

Gruß
Mario

von SuperUser (Gast)


Lesenswert?

Hallo Mario,

das SPI musst du beim AVR auch entsprechend konfigurieren -> Datenblatt
könnte dir helfen.

Aber am besten schaust du dir die Screen-Shots auf der Reengineering
Seite an. Da kannst du folgendes sehen:
a) MSB first
b) Daten anlegen mit der fallenden Clock Flanke (übernahme im Display
mit der steigenden)

Achte auf die CS Ansteuerung. Die ist kriegsentscheidend.

Ist ganz schön blöd vor so einem leeren Display zu sitzen....

von Mario (Gast)


Lesenswert?

Hallo Superuser,

danke für die Antwort, damit sind schopn mal einige meiner Fragen
geklärt. Das langwierige Durchstöbern der AVR Datenblätter wollte ich
mir sparen, das Wissen sollte wohl da sein.
Ich habe mich auch an dem Screenshot vom Reengineering orientiert,
demach ist die clock-polarity auch festgelegt, nur leider wusste ich
nicht ob da eine Invertierung zwischengeschalten ist, bzw. was welcher
Leitung entspricht ... (RS/RESET/CS)

Der Sarkasmuss am Ende motiviert mich leider nicht, aber stimmt,
Fehlersuche ist so ziemlich das nervigste ....

Aber eigentlich bin ich auf der Suche nach jemandem der mal schnell
einen Blick auf den Source-wirft. Vier Augen sehen mehr als zwei, etc.
Und vielleicht gibts auch noch einen anderen, der ausser am AVR auch an
einem PIC-code interessiert ist.

Mario

von HscH (Gast)


Lesenswert?

Hallo,

wie steure ich dieses S65 Siemens Display an?
Geht dies über I2C Bus oder SPI Bus?

Woher bekomme ich ein Beispiel wie man so was ansteuert?

Brauche ich da noch andere Spannungen?

von Jens D. (Gast)


Lesenswert?

HscH
fang am besten mal oben an zu lesen, all deine fragen wurden schon zich
mal beantwortet

von smartie (Gast)


Lesenswert?

um zu sehen wie man sowas ansteuert kann man sich die alte glcd library
für das Nokia 6100 Display anschauen die war noch in C. Die hatte ich
auch mal nach Codevision portiert, aber dann doch mit Winavr angefangen
wegen der besseren neuen Library.

Ich hab auch mal 3 Displays bestellt und werd mich wohl dran machen die
glcd Library in Codevision bzw. ANSI-C kompatiblen C-Code umzuwandeln.
Sowas in Assembler programmieren macht kaum noch Sinn, da die Compiler
heutzutage doch recht Codeeffizient sind.
Die Ansteuerung selbst gibts sowieso keine Geschwindigkeitsprobleme,
wenn man icht grade 3D-Ballerspiele programmieren will.
Problematischer ist eher der hohe Speicherbedarf für die Fonts.

Allein zum Testen reicht normalerweise glcdinit da sollte das Display
schon die Farbe wechseln, wenn es erfolgreich war, so zumindest beim
Nokia Display

von André K. (freakazoid)


Lesenswert?

Hi,

> Sowas in Assembler programmieren macht kaum noch Sinn,
> da die Compiler heutzutage doch recht Codeeffizient sind.
Täusch Dich mal nicht. Da der GCC ein Allrounder ist und nicht für den
AVR optimiert, produziert er manchmal Code, der ein erblassen läßt.
Ein PORTD|=0xFF generiert bei O3 z.B.:

in R24, PORTD
ldi R24, 0xff
out PORTD, 0xff

Da haut's einen schon um. Zudem ist gerade sowas wie Scrolling und
schneller Bildwechsel sehr empfindlich (Ruckler). Wieso sollte man die
GLCD wieder nach C übersetzten? Ich denke die läßt sich problemlos
gegen ein C-Programm linken?

Grüße,
André

von Hagen (Gast)


Lesenswert?

Es gab 3 wichtige Gründe warum ich die GCLD in Assembler portiert habe:

1.) ich wollte eine echte Link Library bauen. Das wäre auch in C
gegangen, aber wenn man es eh einmal macht dann möchte man ja auch
gleich mehrere Vorteile haben, und so kommen wir zu den 2 anderen
Vorteilen

2.) die ASM GLCD benötigt für mehr Funktionalität ca. nur 50% an Flash
! Es zeigte sich also sehr wohl das der Mensch bei weitem besser
optimiert als der Compiler. Und gerade beim WinAVR GCC sind einige
Stellen die er bei weitem besser hätte optimieren können. Ich habe in
den letzten 20 Jahren einiges an Compiler benutzt und muß sagen das der
GCC bei weitem einer derjenigen ist die nicht so gut optimieren. Diese
Aussage soll den WinAVR GCC nicht diskretitieren, denn als eine freie
Alternative entwickelt von Enthustiasten ist der GCC eine sehr stabile
Entwicklungsumgebung.

Die letzendlichen Resultate sind:
4500 Bytes an Code für die alte C Version
2800 Bytes an Code für die neue ASM Version, wobei diese aber auch mehr
Funktionalität besitzt.

4500 Byte an Code in der C Version, egal welche Funktionen man
benutzt.
600 Bytes an Code in ASM Version wenn man nur die nötigsten Funktionen
braucht.

3.) die Performance der ASM Version ist ebenfalls bis zu 5 mal besser.
Dies hat 3 Gründe: a) die ASM Version geht mit den Registern und
Paramatern wesentlich optimaler um. In C sind defakto alle Parameter
immer 16 Bit breit auch wenn man nur uint8_t benutzt. Die Asm Version
benutzt nun die unbenutzten Register die durch die Aufrufkonventionen
vorgeschrieben sind als lokale Variablen. b) die ASM Version ist so
konstruiert das die meisten Aufrufenden Funktionen wissen welche
Register in den aufgerufenen Funktionen benutzt werden. Ich habe die
Register also so verteilt das zb. sehr wichtige Funktionen immer die
gleichen Register benutzen und die übergeodneten Funktionen diese
Register nicht benutzen. Ergo: es werden wesentlich weniger PUSH/POPs
benötigt. c) viele grafik Funktionen wie Linien/Kreise/Ellipsen und
Fonts können in Assembler ganz bestimmte Möglichkeiten der CPU benutzen
die so in C garnicht verfügbar sind. So zum Beispiel rechnet die
Linienfunktion mit 24Bit Integer statt mit 32 Bit Integern in C.

Es macht also aus Sicht der Performance und Resourcenverbrauch sehr
wohl einen gewaltigen Unterschied aus.

Es gibt aber auch Nachteile:
1.) C ist portabler, und gerade die GCLD wurde nun schon auf den PIC,
MSP etc. portiert.
2.) Assembler ist wesentlich schlechter wartbar
3.) Erweiterungen von neueren Displays sind in der C Version viel
schneller umzusetzen.
4.) die Trennung von HAL und TopLevel Schnittstellen ist in C
einfacher.

Gruß Hagen

von André K. (freakazoid)


Lesenswert?

@Hagen

genau ähnliche Argumente sehe ich auch. Der AVR-GCC wird von mir nur
für das eigentliche Programm benutzt. Die Libraries (MMC, LCD, ...)
sind meistens in ASM und werden gegen den C-Hauptteil gelinkt. So kann
man den Vorteil beider Welten nutzen.

- Höhere Geschwindigkeit.
- Minimaler Code (gerade für kleine AVRs).
- Dank des Linkers nur Code, der auch benötigt wird.
- Schnelle Entwicklung und einfache Wartbarkeit des C-Hauptteils.

Ebenso wie Hagen versuche ich PUSH und POP zu vermeiden, indem die
Register optimal ausgenutzt werden. Sind ja genug da ;-)

Einer der großen Nachteile ist allerdings die schlechte Portierbarkeit.
Da ich mich aber nur bei den AVRs wohlfühle (und selbst die mit ihrem
IO-Zugriff etwas konfus sind - Historie?) trifft mich das nicht so. Ein
anderes LCD? Einfach eine andere (sowas ist relativ schnell portiert)
LCD-Lib linken und gut ist - vorrausgesetzt die Funktionen sind
gleich.

Zudem frag ich mich, warum der AVR-GCC mit O0 fehlerhaften Code
(bezogen auf IO-Funktionen) erzeugt. Aber das steht wohl auf einem
anderen Blatt. Er ist jedenfalls für Entwickler der beste
Freeware-Compiler (wohl auch der Einzigste, oder?). Wenn man erstmal
gechecked hat, daß O2(?) mindestens Pflicht ist, geht der Rest relativ
locker von der Hand.

Grüße,
André

von Hagen (Gast)


Lesenswert?

>> Ein anderes LCD? Einfach eine andere (sowas ist relativ schnell
>> portiert) LCD-Lib linken und gut ist - vorrausgesetzt die
>> Funktionen sind gleich.

Tja, wenn man die Libs komplett austauschen kann dann ist das noch ok.
Aber im Falle der GLCD entsteht ein spezielles Problem. Die sagen wir
mal HighLevel Funktionen wie Fonts, Linien, Kreise etc.pp. graifen
optimiert auf spezielle HAL-Funktionen zu. Leider stelen diese eben
auch eine Funktionalität extra zugeschnitten auf den Display Controller
zu Verfügung und sind in der ASM Version eben nicht strikt von den
HighLevel Funktionen getrennt. Das wieder auseinanderzuklabüsern ist
doch recht schwierig.

Ansonsten ist der WinAVR GCC eine recht passable Alternative zu purem
ASM oder eben teueren Compilern.

Gruß Hagen

von smartie (Gast)


Lesenswert?

Naja, ich hab auch eigentlich einen richtigen Compiler gemeint. :-)
Was da rauskommt ist oft nicht mehr viel zu optimieren.
Der Assembler Code ist halt immer schwierig zu portieren.

von MartinK (Gast)


Lesenswert?

@Hagen

> C ist portabler, und gerade die GCLD wurde nun schon auf den PIC,
> MSP etc. portiert.

Hast du für den MSP430 einen Link?

MartinK

von Hagen (Gast)


Lesenswert?

@MartinK:

Nein habe ich nicht, ich weis halt durch EMails das einer es portiert
hat und wegen par Problemen bei mir nachfragte.

Gruß Hagen

von Mario (Gast)


Lesenswert?

Hallo,

ich habe gesehen, dass mein Hilferuf bzgl. des PIC-codes zwar noch
keinen Hinweis auf einen Fehler gebracht hat, aber vielleicht hat ja
einer der den Code heruntergeladen hat das Display zum laufen gebracht
damit. Würde heissen, meins ist kaputt, bzw. eine Leitung ist nicht
durchkontaktiert (Habs zwar schon geprüft, aber ...).
Also Erfolgsmeldungen auch hier posten - schließt für mich eine
Fehlerquelle aus - Danke!

@Martin:
Warum schaut Dein BACOM Shiftout so aus?

Shiftout portx.x, porty.y, A, A

Vierter Parameter sollte aus {0,1,2,3} sein. A sind aber die Daten?

Gruß
Mario

von Mario (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Nachtrag zu meinem vorangegangenen Post. Ich habe nun die Sourcen nach
einer Woche nochmals durchgesehen und entsprechend dem Kommentar von
SuperUser angepasst.
Die Leitungen (CS, RESET, RS) sollten nun auch soweit alle richtig
sein- vorausgesetzt ich kann die *.asm Befehler für den AVR richtig
deuten. Auch das SPI-Timing sollte passen. Ein paar andere dumme Fehler
sollten nun auch draussen sein. Leider funzts nachwievor nicht.

Anbei die neuen Sourcen. Vielleicht funktionieren sie bei jemandem
anderen, dann wirds eng für mein Display - also vielleicht doch
"tot"?

Gruß
Mario

von Mario (Gast)


Lesenswert?

Hallo zusammen!

Super, endlich hat es geklappt! CKE-war falsch gesetzt.
Zusätzlich hab ich noch ein sauberes RESET nach Martin's BASCOM-source
eingebaut.
Manchmal hilft es einfach zu schreiben das es hakt, dann bekommt man
die Idee wo's noch haken könnte.
So jetzt überflute ich das Forum nicht mehr mit meinen Problemchen.

Gruß
Mario

von Mikro A. (mikroavr)


Lesenswert?

Poste doch mal dein Programm, dann haben alle was davon

von Hsch (Gast)


Lesenswert?

Hi, verkauft jemand so ein Grafikdisplay von SIEMENS S65?

von André K. (freakazoid)


Lesenswert?


von HELLEN PAGANI (Gast)


Lesenswert?

DEAR SALES,

I WOULD LIKE TO REQUEST YOUR BEST PRICE AND LEAD TIME TO ORDER

4100PCS
LS020 COLOR DISPLAY
SIEMENS

PLEASE ANSWER ME BACK AS SOON AS YOU CAN.

THANK YOU SO MCUH

HELLEN PAGANI
hellen@netcondigy.com.br
55 11 4996-7205
5511 4996-7203
www.netcondigy.com.br

von Hsch (Gast)


Lesenswert?

Das ist mir schon klar, dass ich bei Ebay diese Displays erwerben kann.
Aber dort erhalte ich nur Displays ohne Anschlusskabel oder Stecker die
zur Platine führen. Ich weiss halt nicht wie ich an dem flachen Kabel
was anlöten kann. Deshalb frage ich hier in diesem Forum ob jemand ein
Display verkauft, mit dem ich gleich loslegen kann.

von DerMax (Gast)


Lesenswert?

An den Displays sind Kontakte im 1,27mm Raster ist ja wohl kein Problem
da nen paar Drähte dran zu löten...

von Jens D. (Gast)


Lesenswert?

@DerMax
Doch...
es soll ja Leute geben, die SMD per Dachrinnenloeter versuchen zu
loeten ;)

Gruss

von Mark de Jong (Gast)


Lesenswert?

@DerMax,

Der abstand ist 1,5mm, nicht 1,27mm

@Hsch:
Eine Platine(oder Fertiges Modul) wird ab übernächste verfügbar sein.

Grüße Mark,

von Hsch (Gast)


Lesenswert?

Hi Mark,

ja was soll denn dieses Modul kosten? Ist es ein Modul ohne
Coontroller?

von Jens D. (jens) Benutzerseite


Lesenswert?

Hallo, ich habe heute ein LS20xx Display bekommen, wie sieht das mit der
Spannungsversorgung aus?
Sind 3,3V zuviel oder noch gerade so in ordnung?

von ThJoedi (Gast)


Lesenswert?

Hallo Freaks,

Ich habe mal ein bischen recharchiert und da ein Datenblatt von einem
TFT Display gefunden was bestimmt den gleichen controller
(LR38825+LH169C) drauf hat wie das LS020. Für Cellular Phones werden
diese oder aber der LR38826 eingesetzt, die zu dem LS020 passen würden.
Nu aber zum Eigentlichen...
Versucht mal folgende shut down sequence:

0xEF00,0x1B04,0xFEFE,0xFEFE,0x7E04,0xE304,0xE404,0xE201,0x8000,0xE001,0x 
7F01

5µS (MIN)

0xE000,0x7F01

5µs (MIN)

0x0101

Nach der Sequence werden bei meinem Display alle Pixel weiß, und nach
Abschalten der Spannungsversorgung bleibt es unverändert (Kein
Verschwimmen der Pixel oder so zu erkennn). Scheint also zu
funktionieren. Ihr könnt ja mal die Pegel etc. checken ob die
Abschaltung auch elektrisch am Interface ok ist. Ich hab dazu jetzt
keine Nerven.
Ich habe nen Kumpel der bei Sharp arbeitet, vielleicht bekomm ich noch
mehr raus.
Viel Spaß beim probieren :D

Gruß
Joedi

von Mario (Gast)


Lesenswert?

@Jens,

ich hab mein LS020 gemiiensamt mit dem PIC an eine Lithium-Knopfzelle
gelegt - direkt ohne Pegelwandler etc.. Lt. Multimeter (ist nicht sehr
genau) ist die Spannung 3,3V. Funktioniert prima.

Es gibt da aber ohnehin zwei Spannungen. Der Logik-Pegel wird auch in
Christians Schaltung von 1V8 auf 2V9 gelegt. Die meisten Controller
Vertragen aber bis 3.3/3.6V. Den 2V9 sollte man nicht über 3.3V anheben
(lt. Kommentar in Martin's BASOM Source). Warum, wieso??

@ThJoedi,

danke. Werde mal ausprobieren ob es funktioniert. Kannst Du die
Datenblätter zu den Controllern ins Forum stellen?

Gruß
Mario

von Mario (Gast)


Lesenswert?

sollte natuürlich "gemeinsam" heissen und nicht ... ja was auch immer.

von KennyOswald (Gast)


Lesenswert?

Hallo!
Kennt einer einen Seriösen eBay oder normalen Shop?
Suche schon seit zwei Wochen nach einer guten Quelle. Habe aber nur
abzocker gefunden.

Brauche 8x Stück für mein Mischpult.
www.ucapps.de

mfg
KennyOswald

von Rainer Stamm (Gast)


Lesenswert?

MartinK

>>EF90 0000 nach der Initialisierungssequenz auf dem Bildschirm
>>nichts erscheint. (in deinem Asm-File steht dazu: I think not
>>necessary...)

Genau dieser Fehler hat mich auch ein paar Stunden Fehlersuche
gebracht!!!

Mein Display ist ein LS020B8UD05 (braun) und hat ohne EF90 0000 am ende
der Init auch nichts angezeigt.

#####################################
Könnt man im PDF mal drauf hinweisen.
#####################################

Nebenbei nutze ich das Display an einem MSP430 bei 3V, noch per
Soft-SPI.

Vielen Dank allen die es mir ermöglicht haben dieses Display zu nutzen,
besonders Christian!

von SuperUser (Gast)


Lesenswert?

@Rainer
Verstehe ich nicht. Meinst du den original Code? Da steht zwar der
Kommentar, aber die Sequenz wird trotzdem zum Display gesendet. Wie
kommt es zu diesem Fehler?

von Rainer Stamm (Gast)


Lesenswert?

@Superuser

ich habe meinen eigenen Code für den MSP430 geschrieben und zwar nach
dieser Seite:

http://www.superkranz.de/christian/S65_Display/DisplayProgramming.html

Dort fehlt hinter INIT3 das "EF90 0000", ebenso in dem PDF das ich
hier mal runtergeladen habe.

von MartinK (Gast)


Lesenswert?

@ThJoedi

Die shut down sequence funktioniert bei mir.
Allerdings liegt danach der Stromverbrauch noch bei etwa 50 uA.

MartinK

von Lightning (Gast)


Angehängte Dateien:

Lesenswert?

Hy Leute,

Hab das PDF Upgedatet also es ist jetzt wieder auf dem
neusten Stand. Auch das mit dem "EF90 0000" am Ende
der INIT3 wurde korrigiert.

Mfg. Lightning

von Stefan Kleinwort (Gast)


Lesenswert?

Hallo,

kann mal einer die Dicke des Displays ausmessen? (inkl.
Kunststoff-Teil).
Die Gesamtmaße habe ich aus dem Bild auf Christians Seite
rausgemessen:

Über alles:        39 * 56mm
Aktives LCD-Feld:  31 * 42mm

Vielen Dank, Stefan

von Lightning (Gast)


Lesenswert?

@Stefan Kleinwort

Die genauen Maße stehen ja im PDF.
Die Dicke ist 3,60 mm

Mfg. Lightning

von Stefan Kleinwort (Gast)


Lesenswert?

@Lightning:

Vielen Dank!

Ich hatte natürlich nur im alten pdf geschaut ... oh mann ...

Gruß, Stefan

von ThJoedi (Gast)


Lesenswert?

@MartinK:
Mit der Power down sequence wird ja bestimmt nicht der ganze controller
abgeschaltet sondern nur die LCD glass driver.

@All:
Der Controller des LS020 ist ein Sharp LR38826. Die power off sequence
ist vom LR38825+LH169C. Es könnte sein dass einige register miteinander
komatibel sind. Ich bleibe dran.....

von Smartie (Gast)


Lesenswert?

Hab mal angefangen mit der Initialisierung mit dem AT91SAM7 aus dem Oszi


Ist das korrekt, daß RS während der ganzen Initialisierung high ist?
Welcher SPI-Mode ist der beste 0,1,2 oder 3?
Verändert sich das Display während/nach der Initialisierung wie auch
das Nokia Display, so daß man sieht, ob man erfolgreich war?
Liefert das Display auch igendwelche Daten zurück?

von Smartie (Gast)


Lesenswert?

irgendwie fehlt was.
wollt schreiben auf dem Oszi siehts schonmal ganz gut aus aber Display
tut nichts

von SuperUser (Gast)


Lesenswert?

Nach der Initialisierung zeigt es beim ersten mal normalerweise bunte
Zufallsmuster. Am besten du machst noch einen clear-screen mit einer
nicht weissen Farbe, dann siehst sicher du ob es geht.

von Mario (Gast)


Lesenswert?

Hallo Smartie,

hatte zunächst auch Probleme, da ich den Code auf den PIC portiert habe
(Code siehe weiter oben im Thread). Schau am besten in Martin's
BASCOM-Basic Source. Der ist weitgehendst selbsterklärend.

Aber Achtung beim Nachbau. Das CS-Signal ist entscheidendend, also
vorerst nicht "optimieren" !! Das hat mich einiges an Zeit gekostet
:(

Gruß
Mario

von smartie (Gast)


Lesenswert?

das CS macht der ARM ja alleine. Das Nokia Display ändert die Farbe nach
der Initialisierung da kann man gleich sehen daß man erfolgreich war,
deswegen meine Frage, ob das Siemens das auch macht.
Wann genau zeigt das Display die Zufallsmuster, erst nach allen drei
Init-Sequenzen oder schon vorher?

von Lupin (Gast)


Lesenswert?

Für die controller gibt es doch datasheets zum runter laden, oder? Kann
man die restlichen Funktionen nicht aus den datasheets entnehmen?
(z.B. power down)

von smartie (Gast)


Lesenswert?

dann gib doch mal an wo

von Lupin (Gast)


Lesenswert?

Ich hab nur für das grüne gesucht:
http://www.tianma.com/spec_sheets/HD66773.pdf

von smartie (Gast)


Lesenswert?

Von Sharp hab ich was gefunden steht aber nicht viel drin:
http://sharp-world.com/products/device/ic/pdf/lr38826_e.pdf

Epson hab ich nur einen TFT Controller gefunden das ist der S1D19105
http://www.epson-electronics.de/upload/PresidioIndustries/product/Semiconductors/LCDController-Driver/SingleChipTFTLCDDriver/S1D19105_TM_rev1_1.pdf
der S1D15G10 hat nur 132x132 und ist kein TFT
http://www.epson-electronics.de/upload/PresidioIndustries/product/Semiconductors/LCDController-Driver/SingleChipPassiveLCDDriver/S1D15G10D08BE_TM_MF1493_03.pdf
aber komplettes Service Manual vom S6 hab ich gefunden:
http://www.siediyer.com/Doc/x65SRD.pdf
Da steht drin daß die verschiedenen Displays Hardwarecodiert sind also
irgendwo wohl Brücken gesetzt und die Software demensprechend das
Display nimmt. Dann dürften die aber auch im Handy nicht untereinander
tauschbar sein.

von SuperUser (Gast)


Lesenswert?

Natürlich kann man nicht mehr verlangen, dass man sich den ganzen Thread
hier durchliest... Aber neues habt ihr bis jetzt leider noch nicht
ausgegraben :-(

Die verschiedenen Display's werden an Pull's in den Display's
unterschieden. Die SW findet so heraus welches Display angeschlossen
ist und benutzt dann den entsprechenden Treiber. D.h. ein Phone
unterstützt jedes der Displays.

von Smartie (Gast)


Lesenswert?

Naja wird halt auch schnell unübersichtlichg so ein Thread.
Hab mal in das Datenblatt von dem Hitachi-Chip reingeschaut,
das scheint eine komplett andere Kommunikation zu sein. Kommt immer
erst ein Startbyte, wo auch das RS mit drinsteckt und dann Daten und
alles 8-Bit-Weise.

von SuperUser (Gast)


Lesenswert?

Den Treiber Code kannst du ja runterladen und dir anschauen. In diesem
Fall reiner C-Code

von Lupin (Gast)


Lesenswert?

Nochmal eine frage, Kay Pohl hat geschrieben das der Bildaufbau 2-3
sekunden dauert bei 16 mhz - ist das normal oder ist das nur bei basic
so? :P

Das ist ja für eine echte Anwendung unzumutbar, was für "framerates"
haben die anderen denn so hin bekommen? Ich hab mir überlegt das
Display in verbindung mit einem ARM für flüssige Animationen zu
verwenden, der ARM wäre ja schnell genug - könnte das gehen oder soll
ich das lieber sein lassen?

Ansonten ist mir noch das display von http://www.shop.display3000.com/
aufgefallen, ich hab zwar erst gedacht das wäre ein nokia 6100 display
aber das scheint ja 16 bit anstatt 12 bit farbe zu haben... hmm

von Mikro A. (mikroavr)


Lesenswert?

@Lupin: bei display3000 sind doch Nokia 6100 Displays - Mit Epson
Chipset.

von peter (Gast)


Lesenswert?

Hi,
ich will ein scrollbares menü machen deshalb interessiert mich die
benötigten Bit/s vom µC auch.


16 bit  132 rows  176 cols = 371712 bit pro frame.
Wenn der maximale SPI Takt des Displays 13 MHz ist ist die max.
Bildfrequenz 13e6/371712= 34,97 Frames/s

Mit nem schnellen Controller kein Problem mit nem ATMEGA wirds
schwierig da SPI max 10 MHz

von SuperUser (Gast)


Lesenswert?

mit einem 16MHz AVR (8 MHz SPI) kann man den kompletten Bildschirm in
ca. 50ms schreiben

von peter (Gast)


Lesenswert?

"mit einem 16MHz AVR (8 MHz SPI) kann man den kompletten Bildschirm in
ca. 50ms schreiben"

schon aber du hast ja auch noch andere Aktivitäten des µC. Ausser du
hast schon die ganzen Bildinhalte in einem externen Speicher und
schaufelst sie nur noch ins Display.

von smartie (Gast)


Lesenswert?

Controller mit mindestens 371712/8=46464 Byte RAM gibts von Atmel nur
als ARM. Ob das Sinn macht, den spärlichen RAM-Speicher so zu
mißbrauchen, da kann man sich drüber streiten.
Scroll-Menüs kann man auch textbasiert realisieren, hab ich bei dem
Nokia-Display auch gemacht mit nem 16-MHz-AVR. Oder alles aus einzelnen
Bitmaps zusammenbauen, die man im Flash ablegen kann. Außerdem kann man
sich bei der Grafikausgabe auf einen Frame beschränken, der kleiner ist
als das eigentliche Display.

von Lupin (Gast)


Lesenswert?

Am besten ist es wenn man sich auf klassische Konsolen-methoden wie
Hintergründe, die aus einzelnen Blöcken zusammen gesetzt sind,
beschränkt und nur in Ausnahmefällen sprites zeichnet, das könnte man
dann doch alles direkt ins display zeichnen und die grafiken vom flash
laden, oder? Wenn man es dann dynamischer braucht muss man sich halt
Speicher reservieren.

Nun frag ich mich aber wie die 2-3 sekunden für den Bildaufbau zustande
gekommen sind.

von peter (Gast)


Lesenswert?

So, habe mein Display bekommen und es hat sofort funktioniert.
Also vielen Dank an Christian für die tolle Arbeit die du geleistet
hast!!!

von Rainer Stamm (Gast)


Lesenswert?

Hat jemand funktionierenden Quelltext für Hardware-SPI, MSP430 und
LS020?
Bis jetzt klappt es bei mir immer noch nur per Software-SPI, habe alles
ausprobiert und stehe auf dem Schlauch...

von Mark H. (haemi)


Lesenswert?

Salve,

zuerst mal herzlichen Dank an Christian. Wirklich tolle Arbeit! Hab
gestern von Cellow mein Display bekommen (LPH88, steht direkt drauf).
Ich glaube aber, es hat durch den Versand was wegbekommen. Eine Ecke
ist angeknickt (war auch nur in Luftpolsterfolie verpackt, ohne
Knickschutz). Dummerweise hab ich das erst gemerkt, nachdem ich es
angelötet und getestet hatte.
Folgender Defekt tritt auf: In der unteren Displayhälfte ist jede
Zweite Zeile weiß, egal welche Daten ich dort in den GRAM schreibe. Mir
fiel auch auf, daß die erst noch etwas bunt sind, und erst dann richtig
weiß werden (nach 1-2 Sekunden Betrieb). Ich vermute ganz stark, daß
durch den Knick die Treiberleitungen beschädigt wurden. Die
init-Routinen hab ich von Christian übernommen, und auch schon
verändert. Die defekten Zeilen sehen so aus wie wenn ein Teil des
Displays nicht gescannt wird (kann man in der Init ja festlegen).
Falls jemand schonmal etwas ähnliches erlebt hat, wäre eine kurze
Nachricht sehr nett. Ansonsten muß ich sehen, ob Cellow das Display mit
Lötzinn dran zurücknimmt. ;(

Danke schonmal für Tips,
Mark

von peter (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
im Anhang ein kleines Tool zum erstellen von 16 bit Farb defines aus
der Windows Farbpalette. Man kann nur die Grundfarben oder die erste
custom color zur Liste hinzufügen.

von Smartie (Gast)


Lesenswert?

Zum Thema Hardware-SPI hatte ich auch mein Problem.
Die Lösung:
ich hatte nur gesendet und nicht gewartet bzw. abgefragt ob fertig.
Hab dann nach jedem Word 15µs gewartet und dann hats auf Anhieb
funktioniert.

von Smartie (Gast)


Angehängte Dateien:

Lesenswert?

Hab eine Platine gemacht, auf die genau das Sharp-Display passt, zwei
Spannungsregler für 2,9V und LED-Spannung damit das Display mit 12-15V
betrieben werden kann und Spannungsteiler für 5V Ansteuerung und
Schalttransistor zum Ein- und Ausschalten der LEDs. Die Bauteile sitzen
alle direkt in den Aussparungen des Displays, so daß die Rückseite plan
ist.
Anbei die Eagle-Dateien, Fotos (leider nur mit Webcam) und meine Demo
auf dem Arm7 von Atmel AT91SAM7S256

von peter (Gast)


Lesenswert?

Ich steuere das Display mit dem R8C an. Ich habe folgendes festgestellt:
Wenn ich einen Bereich mit 0xef90 0x0504 auswähle, dann muss ich nun
y1,y2,x1,x2 angeben und nicht x1,x2,y1,y2 wie im PDF steht. Ich gebe
auch die Pixeldaten von links oben an zeilenweise nach unten an, im PDF
ist es von links unten zeilenweise nach oben angegeben. Hat das auch
schon jemand bemerkt ?

von DerMax (Gast)


Lesenswert?

@smartie:
Hi, welchen Compiler verwendest du für den ARM?

von smartie (Gast)


Lesenswert?

hab jetzt noch ein bischen das Timing optimiert und festgestellt, daß
man bei der Initialisierung nach bestimmten Sequenzen dem Display ein
paar µs Zeit geben muß sonst klappts nicht.
Die Wartezeit nach SPI send hab ich jetzt bis auf 2 µs
runtergeschraubt.
Bin jetzt noch am überlegen, wie man die SPI noch optimieren könnte,
weil ja immer 2µs gewartet werden muß. Ginge eigentlich nur über einen
Software FIFO und ein Interrupt, der die SPI bedient, der müßte dann
aber auch mit 1-2µs laufen.

Hab noch schnell zwei kleine Routinen fillrect und rect geschrieben,
kann ich mal posten falls es jemanden interessiert, ist aber nichts
dolles.
Verwende die embedded Workbench von IAR, war bei dem Bundle von MSC mit
dabei für 149 Euro, ist aber auf 32KB Code beschränkt. Finde die zwar
lange nicht so gut wie Codevision für den AVR aber man kann mit
arbeiten.

von Stefan Kleinwort (Gast)


Lesenswert?

@Smartie:

schau mal im Datenblatt unter 29.6.3.4, Figure 29.7: die
SPI_Schnittstelle des SAM kann selbstständig Delays erzeugen.

Viele Grüße, Stefan

von smartie (Gast)


Lesenswert?

ich will ja grad keine delays. Ein Fillscreen hat fast 45 KBytes. Bei
2µs sind das bei 16 Bit SPI fast 100ms, die die CPU nur wartet.

von Stefan Kleinwort (Gast)


Lesenswert?

ahhh ... ich hatte verstanden, dass das Display die 2us braucht, um
korrekt die Daten annehmen zu können.

Warum schreibst Du die Daten nicht in einen Out-Puffer und startest
dann den DMA des SPI? Die Daten werden dann völlig selbstständig
ausgegeben. Währenddessen kannst Du die nächsten Daten vorbereiten, in
einem anderen Datenblock.

Viele Grüße, Stefan

von Smartie (Gast)


Lesenswert?

werd mir das mit dem DMA mal anschauen, bin halt noch ganz am Anfang mit
dem Arm.
Die 2µs braucht es nur bei der Initialisierung, beim Daten schreiben
nicht.

Hab auch grad nochwas rausgefunden:
nach
  lcd_wrcmd(0xEF90);
  lcd_wrcmd(0x0504);
  lcd_wrcmd(0x0800+y1);
  lcd_wrcmd(0x0A00+x1);
  lcd_wrcmd(0x0900+y2);
  lcd_wrcmd(0x0B00+x2);

funktioniert
  lcd_wrcmd(0x0504);
  lcd_wrcmd(0x0600+y1);
  lcd_wrcmd(0x0700+x1);

nicht mehr richtig, es wird durch den Frame von vorher begrenzt, läuft
also über.
d.h mit der ersten Befehlsfolge wird definitif ein Clipping-Fenster
gesetzt, was für alle weiteren Schreibbefehle gilt.

von Christian K. (christiank)


Angehängte Dateien:

Lesenswert?

Hallo Freunde des LS020 Displays...

Nachdem ich nun mehrere Display's in Betrieb genommen habe, musste ich
noch einmal die INIT-Sequence ändern. Sonst scheinen einige Displays
nicht stabil zu starten. Ich hatte erst Wackelkontakt vermutet bzw.
Display beim Löten beschädigt. Allerdings hat sich mal wieder die
Software als nicht perfekt erwiesen.

Ich habe die Web-Page und die glcd upgedated. For den letzten Command
(bedeutet vmtl. Display On) muss noch eine Wartezeit eingehalten
werden.

Tschüss und guten Rutsch
  Christian

von Uwe (Gast)


Lesenswert?

Hallo täusch ich mich oder muss in LCD.asm in der
send window write start sequence: nicht r24 stehen?
Im orginal ist dort r30 angegeben.

von Christian K. (christiank)


Lesenswert?

da hast du wohl recht...

Fällt hier aber nicht auf, da die Funktion nur einmal benutzt wird und
beim init das window schon richtig gesetzt wird.

von Christian K. (christiank)


Angehängte Dateien:

Lesenswert?

korrigiert

von Rainer Stamm (Gast)


Lesenswert?

das LS020 ist wirklich ganz schön zickig...
Im Prinzip läuft jetzt zwar alles bei mir, auch Hardware-SPI am MSP430,
aber wenn ich was ändere dann klappt meistens nichts mehr.
Software-SPI geht, Hardware-SPI mit 4Mhz geht auch, Hardware mit 2Mhz
aber NICHT.
Kann ja auch sein das ich irgendwo einen blöden Bug in meiner Software
habe, aber so komisch hat sich bis jetzt noch kein Display angestellt.
Trotzdem, wenn es klappt, dann ist es klasse. Nur eine Anwendung habe
ich immer noch nicht gefunden :)

von Christian K. (christiank)


Angehängte Dateien:

Lesenswert?

Hallo Rainer,

als Anregung (und 300'te Post in diesem Thread) hier mal ein Beispiel
was ich gerade mit dem Display mache.

Im grunde handelt es sich um eine mobiles universelles Gerät, z.B. zur
Datenerfassung. Es unterstützt verschiedene Möglichkeiten zum
Datenaustausch. Als User-Interface gibt es einen Drehgeber mit
push-Taste, sowie zwei Tasten und/oder einem Ziffernblock (z.B. als
Folientastatur)

Visuell hat es das S65-Display sowie zwei LED's und einen kleinen
Lautsprecher oder pieco.

Das Gerät wird mit Akkus (LiIon/NiMh) betrieben, mit kompletter
Ladeelektronik (für software gesteuertes Laden). Das Gerät lässt sich
über eine Taste ein- und ausschalten. Im ausgeschalteten Zustand hat es
einen sehr geringen Stromverbrauch, über eine externe RTC (mit
Batteriespannung) läuft Zeit&Datum weiter.

Das aufwändigste ist (wie immer) die Software Entwicklung. Insbesondere
das User-Interface verschlingt sehr viel Zeit (und ich habe noch fast
alles vor mir....)

Daher ein Vorschlag: Ein grafisch-gesteuertes User-Interface wird wohl
jeder brauchen, der mit höher auflösenden grafischen Displays arbeitet.
Könnte man das nicht gemeinsam entwickelnt?

Grüße und frohes neues Jahr 2006
  Christian

von Mark de Jong (Gast)


Lesenswert?

Hallo Christian,

Güte Idee, bin dafür ein standart library zu machen.

Ich schreibe gerade mein grafik libraries, für alle displays.
alles in standard C, also portierbar.

nur die low-level routinen sind naturlich abhängig von der hardware.

Meine HW targets sind:
-Keil C167
-Keil C51
-Keil ARM
-IAR MSP430

Hast Du einen vorschlag für ein algmeines interface?

Grüße Mark de Jong,

von Christian K. (christiank)


Lesenswert?

Vielleicht etwas in der Art:

Steuerung über Drehgeber (drehen hoch/runter bzw. links/rechts
Auswahl push-Taste)

- Eine Display-Text Zeile als Menu (obere oder untere)
  -> 1-4 Auswahlmöglichkeiten (li/re) (aktuelles invers dargestellt)
  -> push-Taste wählt das Menu
- Ein Frame des Displays wird als Menue-Fläche definiert
  -> Die Applikation muss diesen Frame immer neuzeichnen können, da
     Display Inhalt ja mangels Speicher nicht gesichert werden kann
- In diesem Frame kann man ein Menu-Window (single select) öffnen
  -> Anfangs rein textbasiertes Menu (hoch/runter)
  -> natürlich sind sub-menues möglich
- oder in diesem Frame kann man ein Eingabe-Window öffnen
  -> Zahleneingabe (mit Drehgeber support) Texteingabe?

.....

von Rainer Stamm (Gast)


Lesenswert?

Moin Christian,

eigentlich arbeite ich an etwas ähnlichem. Zur Zeit befasse ich mich
hauptsächlich mit Grafik-Dateiformaten um Icons usw darstellen zu
können. Habe mir ein Tool geschrieben das aus einer BMP-Datei ein
Headerfile mit Farbtabelle für das LS020 und Bilddaten macht. Dadurch
habe ich zwar nur 256 Farben pro Icon, brauche aber auch nur 1 Byte pro
Pixel. Je nach Grafik bringt RLE-Codierung auch noch Platz. Dieses kann
man dann leicht in seinen Quelltext einbinden.
Für Zeichensätze benutze ich das XBM-Format da dieses eh C-Quelltext
ist und sich leicht mit Gimp oder Editor bearbeiten lässt.

Würde mich interessieren welche Wege ihr da geht.

von Rainer Stamm (Gast)


Lesenswert?

Christian, habe mit gerade nochmal dein Board angesehen. Ist eigentlich
genau das was ich auch brauche, nur mit einem MSP430 drauf :)
Als nächstes wollte ich mich mit der SD-Karte usw beschäftigen.
Eine Anwendung hätte ich auch dafür, nennt sich "Tagesgradzähler" und
muß über mehrere Monate eine Wassertemperatur aufzeichnen und einen
Tagesdurchschnittswert addieren. Ist eigentlich kein Problem, aber
irgendwie bisher immer am Gehäuse und der Stromversorgung gescheitert.
Mit einem AVR hatte ich es mal so gut wie fertig, aber dann wollte ich
doch lieber ein Grafikdisplay anstelle von Text, bin   auf MSP430
umgestiegen usw. Jetzt will ich Farbe und wahrscheinlich kommt dann
doch noch etwas anderes...

von Lupin (Gast)


Lesenswert?

Ich hab mir auch ein S65 display bestellt, ich habe vorgehabt JPEGs zu
laden... das soll später mal teil eines kleinen Projektes werden. Die
JPEGs liegen dann auf einer MMC karte. Den code zur Dekomprimierung hab
ich schonmal auf einem GBA laufen gesehen, sollte also mit einen ARM
mikrocontroller nicht so schwer sein.

von dirk (Gast)


Angehängte Dateien:

Lesenswert?

Ich Experimentiere gerade am Ls020... mit dem TEST.C rum:

#include <inttypes.h>
#include "../glcd/glcd.h"
#include "../glcd/lfsr.h"
#include "../font/nums.h"
#include "../font/f9x14.h"
#include "../font/f15x22.h"
#include "../font/f8x11.h"
#include "../font/f8x8.h"

void demoScreen(void){
glcdSetOrientation(0);

      glcdSetColor(0, SCREEN_COLOR);
      glcdSetColor(1, BLACK);
      glcdSetColor(2, GOLD);
      glcdSetColor(3, RED);
    glcdClearScreen(BLACK);
     glcdSetFgColor(BLACK);
     glcdSetBkColor(WHITE);

    glcdFrame(0,0,130,175);
    glcdFillRect(110,110,130,130,SCREEN_COLOR);
glcdMoveTo(10,10);
 glcdSelectFont(f9x14, 0);           // font is stored in FLASH,
demontrate read callback
   glcdPrint("Siemens S65 LS020... \n geb 13.04.1966\n", 0);
   glcdSelectFont(f9x14, 0);
    glcdSetFgColor(BLUE);
  glcdMoveTo(11,100);
   glcdPrint("12345678901234567890",0);
   glcdSetBkColor(RED);
   glcdCircle( 80,80,10);
   glcdLine(90,80,100,100);

 }


   int main(void) {
#define cnt  1

#ifndef USE_AUTOINIT
    glcdDisplayInit();
#endif

    glcdClearScreen(1);
//    glcdDisplayOn();

    uint8_t o = 0;

    demoScreen();

    while (1) {




    }
}

Jetzt habe ich in der GLCD.inc

define ORIENTATION_DEFAULT         ORIENTATION_270 or _90

#ifndef SCREEN_WIDTH
#define SCREEN_WIDTH                175   // Siemens S65
#endif
#ifndef SCREEN_HEIGHT
#define SCREEN_HEIGHT               131   // to (0,0,131,175) to
support hardware scrolling and splitting of display
#endif
#ifndef SCREEN_LEFT
#define SCREEN_LEFT                 0
#endif
#ifndef SCREEN_TOP
#define SCREEN_TOP                  0
#endif
#ifndef SCREEN_RIGHT
#define SCREEN_RIGHT                (SCREEN_WIDTH -1)
#endif
#ifndef SCREEN_BOTTOM
#define SCREEN_BOTTOM               (SCREEN_HEIGHT -1)
#endif

eingestellt und bekomme siehe Anhang , alles Spiegelverkehrt angezeigt.
Habe ich was vergessen ?

Und bei glcdSetOrientation(0); kann ich 1, 2,3 etc einstellen und
passiert. Ich wollte die Anzeige Quer verwenden.

Und was ich nicht verstehe -> glcdPrint("12345678901234567890",0);
wenn anstatt eine 0 -> eine 1 reimache wird das Bild immer wieder
aufgebaut. Warum?

Da ich nur wenig mit C - Gemacht habe, habe mit Bascom gearbeitet.
Sind Tips immer gut. Ein gutes Projekt!!

von ChristianK (Gast)


Lesenswert?

Hallo Rainer,

dann könnte dieser Link für dich interessant sein...
http://focus.ti.com/lit/an/slaa281/slaa281.pdf

Heute würde ich den Atmega 128 auch nicht mehr nehmen, sondern einen
ARM7. Mittlerweile ist aber zuviel Zeit in das Projekt geflossen um
noch den µC zu wechseln. Ausserdem reicht er.

Vorteile vom ARM sind:
- mehr Performance
- mehr Speicher
- weniger Stromverbrauch
- niedrigere Versorgungsspannung
- nahezu gleicher Preis

Den AVR habe ich genommen, weil es dafür soviel Software im Netz gibt.
Und das ist immer noch ein gutes Argument für den AVR.

Hallo Dirk,

die glcd unterstützt derzeit nur eine Orientierung. Das liegt daran,
dass der Display Controller lange nicht so flexible Addressierungs modi
des Display-RAM's unterstützt wie der Philips Controller für die die
GLCD ursprünglich geschrieben wurde. Zumindest sind mir bis heute nur
die dokumentierten Modi bekannt. Also wenn du Lust hast, kannst du ja
mal versuchen eine andere Orientierung einzubauen.

Wenn ich mich richtig erinnere, gibt der letzte Parameter von glcdPrint
an, ob die Daten aus dem Program-Flash oder dem RAM gelesen werden. Wenn
du aus dem Flash lesen möchtest, musst du die Daten auch dort speichern,
sonst ist nicht definiert was passiert...

von Smartie (Gast)


Lesenswert?

ich finde das Board auch interessant,hab auch schon was ähnliches im
Eagle angefangen. Würde es aber auch mit einem Arm7 machen, das Ding
hat massig Speicher, RAM, USB und gibts auch mit Ethernet. Die
Programmierung ist auch nicht so kompliziert.
Da aber irgendwie jeder seinen Lieblingsprozessor hat, ist es
vielleicht besser, entweder verschiedene Boards entwickeln oder ein
Universal-Board mit aufsteckbaren Prozessoren machen, dann wäre jedem
geholfen.
Bei der Softwareentwicklung sollte alles modular sein, und möglichst
universell für alle CPUs verwendbar.

Mit nem ATMEGA und dem Nokia-Display hab ich mal nen
Tempomat/Bordcomputer gebaut, der nur über einen Drehencoder mit Button
programmiert und eingestellt wird. Da hatte ich zum Beispiel kurz
Drücken für on/off, länger Drücken Geschwindigkeit übernehmen, ganz
lang Drücken Menü.

von Tamas (Gast)


Lesenswert?

Hello!

Ich suche seit Lange ein gutes LCD-Display für mein GPS-Project, aber
die S65-LCD wäre für mich die beste Lösung. In Ungarn kostet es etwa 30
EUR, aber es ist noch immer billig und leicht einholbar.
Ich habe die Archive dieses Forums durchgelesen, aber ich hätte noch
ein paar Frage, und ich bitte euere Hilfe bei diesen.
1. Wenn ich es gut verstanden hatte, Siemens herstellt S65 handys mit
drei verschiedene LCD-Kontroller: das LS020xxx hat einen nicht gut
bekannten Sharp-Kontroller, das LPH88xxxx hat den gut dokumentiert
Hitachi HD66773
Kontroller, und L2F50xxx enthaltet einen Epson Kontroller, dieser
letzter hat kein Datenblatt publiziert im Internet, aber Christian hat
diesen an besten analysiert und dokumentiert.
Wenn ich alle diese Type einholen könnte, sollte ich den Hitachi oder
den Epson kaufen? Und wenn ich durch z.B. eBay kaufen möchte, und ich
weiss nicht, welche ankriege, ist es 100%, dass ich es unabhängig von
Kontroller benutzen kann? (Anders gefragt: Werden die Dokumentationen
im Internet (forum, Christian's doc) genug z.B den Sharp-Kontroller zu
Arbeit zu vermögen?)

2. Ich habe in Christian's doc gesehen, dass er 2,9V zum 1,8 und 2,9V
pins bindet. Ist es gesund die 1,8V pin mit 2,9V zuliefern? In meinem
Project gibt es ein 1,8V und ein 3,3V Spannungsquelle (TI TMS470R1B1M
ARM7TDMI core prozessor). Wäre es tödlich, das Display mit 1,8V und
3,3V zu quellen?

3. Wenn ich gut denke, ich soll 15V zum Pin LED+ nur dann binden, wenn
ich Background-Light möchte. Ist es so richtig? Wenn ja, hat schon
jemand die Spannung-Storm Charakteristik dieser LED ausgemessen? Es
wäre wichtig, wenn man einen Helligkeitregler aufbauen will.

Danke für eure Hilfe vornüber und ich möchte vorwigend Christian und
natürlich allen Lesern dieses Forums für die Forschung gratulieren die
er und euch für die Erkenntnis der Functionalitäten dieses Displays
gemacht haben.

Grüsse
 Tamas aus Ungarn

von Michael R. (rubi)


Lesenswert?

abo

von Michael R. (rubi)


Lesenswert?

Hallo

Es wurde öfter in diesem Thread darüber gesprochen eine
Platine für das Display zu entwerfen.
Wollte mich erkundigen, ob daraus was geworden ist.

LG
Michael

von Mark de Jong (Gast)


Lesenswert?

Hallo Michael,

Ich erwarte die Platinen Morgen.

Sobald ich Sie getestet haben werde ich mich melden.

Grüße Mark,

von Lupin (Gast)


Angehängte Dateien:

Lesenswert?

ich hab mir jetzt auch mal das display besorgt, ist ein LPH.

die 2.9v sind bei mir 2.94 und die 1.8v sind 1.86 - also noch im grünen
bereich oder? Beide spannungen werden aus 3.3v geteilt (einmal mit
R1=10k und R2=7.5k und einmal mit R1=10k und R2=1k)

Das ganze funktioniert natürlich nicht... ich benutze einen LPC2106 und
bin mit dem SPI takt schon auf einen halben mhz runter gegangen aber das
display zeigt rein gar nix an.

In den Kommentaren bei der init sequenz steht zb sowas wie
// start at 240ms
Aber ich kann da nirgends einen delay aufruf über 240 ms finden - woher
kommt diese zeit?

Hab nochmal meine abgeänderte disp.c angehangen, ist fast genau so wie
im Beispiel.

Mein SPI ist übrigens als Master eingestellt, kein CPOL oder sonstige
Einstellungen.

von The Daz (Gast)


Lesenswert?

Im Beispiel sind der 2,9V und der 1,8V Anschluss beide an 2,9V gehaengt
worden.

von Lupin (Gast)


Lesenswert?

ja das ist aber bestimmt nicht so gut... werds trotzdem mal probieren

von Lupin (Gast)


Lesenswert?

Hat nicht funktioniert, ich hab mal mein messgerät dazwischen gehangen
(zwischen 2.9v und den versorgungs-anschluss am display) und der zeigt
0mA an - ist das teil kaputt?

Ich war auch so schlau und hab mit meinem (billig)-multimeter gemessen
ob es zwischen den pads am display einen Kontakt gibt... war vielleicht
keine gute Idee :(

von The Daz (Gast)


Lesenswert?

Noe, das ist kein Problem. Aber 0mA ist nicht gut. Ich finde deinen
Spannungsteiler im kOhm Bereich aber ziemlich verdaechtig. Versuch doch
mal das gleiche mit einem Teiler im wenigen 100 Ohm Bereich.

von The Daz (Gast)


Lesenswert?

Mit welcher Spannung laeuft der uC ? Die Signale von dort sollten den
2,9V Level auch nicht uebersteigen. Hatte das zuerst bei meine LS
Display vergessen, hat aber keine Schaeden hinterlassen.

von Lupin (Gast)


Lesenswert?

hab nun einen mit 270 und 33 ohm gemacht - hat sich nix verändert

von Lupin (Gast)


Lesenswert?

meine IO spannung ist 3.3v da habe ich keine Teiler... in der
beispielschaltung wird auf 1.8v geteilt aber das sollte ja auch so
gehen weil der IC ja mit 2.9v betrieben wird... oder?

von The Daz (Gast)


Lesenswert?

Im Beispiel reduziert der Spannungsteiler die 5V Ausgaenge des AVR auf
2,9V. Wie gesagt, ich wuerde mal Spannungsteiler in die uC-Signale
einhaegen. Probieren schadet ja nicht.

von Superuser (Gast)


Lesenswert?

Hallo Lupin,

das Display verträgt auch problemlos 3.3V denke ich. Ich hatte mal -
versehentlich - es einige Tage mit 4.2V laufen ohne Probleme.

Die Kommentare zu den delays in der Init-Sequence kannst du
ignorieren.

Also mein Vorschlag: Schliess es an die 3.3V ohne irgendwelche Teiler
an und bringe die Software in Ordnung. Wenn es dann läuft kannst du
dich um die Versorgungsspannung kümmern.

von Mario (Gast)


Lesenswert?

Hallo Lupin,

kann das von Superuser nur bestätigen. Hatte es auch weiter oben im
Thread schonmal geschrieben. Hab das Display am PIC direkt
angeschlossen (LF-Typ). Betrieben wird alles mit einer Lithium
Knopfzelle - die eigentlich 3.0Volt haben sollte. Mit meinem
billigheimer Multimeter nachgemessen ergab 3.3V. Funktioniert
wunderbar. Ich denke Du hast ein SW-Problem - war bei mir auch so.

Du hast ähnlich wie ich Wahrscheinlich das Problem mit dem CS-Signal.
Programmier das mal exakt nach der Vorlage nach!
CS=SELECT, SPI_send, CS=DESELECT.

von Lupin (Gast)


Lesenswert?

ich hab es sogar 1:1 übernommen, nur ein paar wenige Änderungen
durchgeführt.

zB hab ich das hier:

lcd_comdat(cd1[j++],cd1[j++]);

... nach ...

lcd_comdat(cd1[j],cd1[j+1]);
j+=2;

...geändert weil die erste schreibweise undeutlich ist und compiler
warnungen generiert. Das dumme ist ja, dass das Display überhaupt keine
Antwort geben kann und man somit keine debug informationen haben kann.
Ich hatte gehofft das man bei dem display den speicher irgendwie noch
auslesen könnte oder so...

von Lupin (Gast)


Lesenswert?

alles direkt an 3.3v - lief sofort :D

Jetzt muss ich mir nur noch die Stromversorgung für LED beleuchtung
basteln ;(

von KennyOswald (Gast)


Lesenswert?

Hallo mario!
Kannst Du Dein programm veröffentlichen?
Wäre echt nett.

Ich bastell noch an meiner Platine mit pic18f4550, es würde mir einiges
an Arbeit sparen.

mfg
KennyOswald

von SuperUser (Gast)


Lesenswert?

Hi Lupin,

wenn dein Controller PWM generieren kann empfehle ich die Schaltung von
der web-page. Funktioniert super, Helligkeit kann per Software
eingestellt werden etc..

Spule sollte natürlich etwas Strom können bzw. nicht zu grossen
Widerstand haben.

von Mario (Gast)


Angehängte Dateien:

Lesenswert?

Kenny,

anbei der PIC-Port zum 16LF876. Hatte ich schon vorher in dem Thread
gepostet, allerdings noch nicht die komplett fehlerfreie Version (siehe
oben). Jetzt ist auch der Code für die Zeichenausgabe dabei.
Ich hab den Code aus einem größeren Projekt herausgenommen, kann sein
dass sich noch wo ein Fehler eingeschlichen hat. MPLAB simulierts
jedenfalls anstandslos.
Init, CLRSCR, shut_down sollten aber funzen (musste nichts verändern).

Gruß
Mario

von Lupin (Gast)


Lesenswert?

Ja die Teile für die 15V habe ich mir schon bei reichelt bestellt, hab
mir als Spule "09P 1,0M" geholt, ich hoffe die passt dafür... Ich
weiss das conrad so blaue hat die gut zum strom erzeugen sind.

von KennyOswald (Gast)


Lesenswert?

Danke Mario!

von Lupin (Gast)


Lesenswert?

Hab gerade gemerkt, dass das LPH display auch ohne Versorgungs-spannung
auskommt... ist mir aufgefallen als ich doch noch 2.9v spannung
einbauen wollte - das display lief weiter und das bild sah sogar besser
aus (bei 3.3v gab es schlieren...)

Ich kann mir das nicht so ganz erklären, wird vielleicht durch RS
eingespeißt, vielleicht hat der pin eine andere funktion? wenn ich
meinen controller resete und den bootloader starte geht das display
ausserdem aus, deswegen wird wohl irgendein port pin strom liefern.

von Lupin (Gast)


Lesenswert?

Lieber nicht nach machen, eben wurde der controller warm und das display
ist ausgefallen und wollte auch eine weile nicht mehr... :(

von Lupin (Gast)


Lesenswert?

folgende Beobachtungen hab ich jetzt beim LPH display gemacht:

- Display läuft auch ohne das die 2.9v und 1.8v pins verbunden sind und
liefert ein gutes Bild - allerdings wird der controller irgendwie warm
wenn man zu schnell reset-ed oder so

- Bei 3.3v läuft das Display zwar gut aber wenn man einen harten reset
durchführt sieht das Bild dann wieder schlecht aus. Erst wenn man die
Spannung wieder weg nimmt ist das Bild wieder ok.

- Bei 2.9v läuft alles optimal, die spannung für den 1.8v pin kann auch
3.3v sein

von SuperUser (Gast)


Lesenswert?

Das hört sich komisch an. Hat vmtl. mit deiner Schaltung und nicht mit
dem Display zu tun...  Könnte es sein, dass du das Display über die
Interface-Leitungen versorgst (z.B. der RESET pin)? Den RS pin brauchst
du bei diesem Display übrigens nicht anschliessen...

von Lupin (Gast)


Lesenswert?

Ich bin gerade dabei die Hintergrundbeleuchtung zu versorgen... in der
Schaltung ist die Diode BAT54 als ganz normale diode abgebildet, die
hat aber 3 pins... wo genau muss ich die pins anschließen? bin zu doof
dafür... Im datenblatt steht 2x Cathode und 1x Anode

von SuperUser (Gast)


Lesenswert?

Welche Ausführung hast du? Wenn du dir nicht sicher bist am besten
nachmessen.

BAT54 z.B. 1 Anode, 3 Cathode (eine Diode)
BAT54A 1 Cathode, 3 gemeinsame Andode, 2 Cathode 2'te Diode
(doppel-Diode=
BAT54C wie BAT54A aber Dioden gedreht
BAT54S jetzt sind Cathode und Andode zusammen an Pin3

-> Nachmessen!!!!

von Lupin (Gast)


Lesenswert?

BAT54A glaub ich.

von Spider84 (Gast)


Lesenswert?

Can anyone help me? I try start LCD (L2F50) from ATMega16 but can't :(
I don't understand German language :( May be exist work example?

von The Daz (Gast)


Lesenswert?

@Spider84

Just follow Christian's link :

http://www.superkranz.de/christian/S65_Display/DisplaySoftware.html

When trying to use the code examples be aware the ATMega16 doesn't
have enough RAM to hold the complete character set so you'll have to
move it into the flash memory (PROGMEM).

von The Daz (Gast)


Lesenswert?

This is the complete guide including schematics as PDF document.

http://www.mikrocontroller.net/attachment.php/271299/Using+the+Siemens+S65+Display.pdf

It's written in english so there shouldn't be a problem for you
getting it done.

von Spider84 (Gast)


Lesenswert?

I already use this and tried to build.
I tried to remove ASCII table and text output from code, leave only
init functions and fill_screen();
I tried to use HelloWorldMega16 ASM code from this forum...
DON'T WORK :(

L2F50xxx has same pins name as
"http://www.superkranz.de/christian/S65_Display/pics/Display_connect_small.jpg";?

von The Daz (Gast)


Lesenswert?

Can't help without knowing a thing about your code. Please append and
let's have a look. Did you check all voltage levels and connections
allready ?

von Spider84 (Gast)


Angehängte Dateien:

Lesenswert?

At last I tried to use
http://www.mikrocontroller.net/attachment.php/259277/HelloWorldMega16.zip
code.
0 = 0.00..+0.01 V
1 = +2.77..+2.80 V

connected as:

#define LCD_CS     PB2
#define LCD_RESET  PB3
#define LCD_RS     PB4
#define LCD_MOSI   PB5
#define LCD_MISO   PB6 //Not Connected
#define LCD_SCK    PB7

von Spider84 (Gast)


Lesenswert?

I up level voltage and power of LCD to +2.85..+2.95 by changing
resistors and for 1-2 sec LCD show diferent colour lines, pixels and
other noise.

von The Daz (Gast)


Lesenswert?

Hmm, you're not using the latest code release (still got an lcd.asm),
right ? I recommend to download the latest version (no assembler code
anymore) and change the makefile to compile the stuff for your ATMega16
first to make sure you're not missing any late updates. The pictures
you've taken don't help debugging either. In case you didn't follow
the reference design (is your uC truely running with 16MHz or is it
using the internal oscillator ? please check your fuse settings),
please try to draw a schematic and append it to your answer. Thanks.

von SuperUser (Gast)


Lesenswert?

Hi Spider84,

i looked at your photos: Using such long wires it might be an option to
reduce the clock speed on the spi interface.

If you have seen something on the screen already (also if only for a
few seconds), than you are very close to success.

The diplay shows only something if the intitalisation was o.k. Try to
reduce the speed/wire length. Also you can increase the supply voltage
because the display is proven to run with 3.3V

Regards
  SU

von SuperUser (Gast)


Lesenswert?

excuse me, my first sentence in the previous post is a little bit
confused... to make it more clear:

Your wires to the display are very long. That might yield to timing
problems. Therefore i recommend to
a) either reduce the SPI clock speed
b) reduce the wire length

In addition i agree with The Daz, use the latest code. The
init-sequence has recently been changed to be more robust with
different displays. It's o.k. if you exchange the lcd.asm file only.

Regards
 SU

von Spider84 (Gast)


Angehängte Dateien:

Lesenswert?

TD>I recommend to download the latest version (no assembler code
TD>anymore) and change the makefile to compile the stuff for your
TD>ATMega16 first to make sure you're not missing any late updates.
Can you give URL or file name? I already download and many files and
diferent versions.

fuses = SUT=11 (No checks on PonyProg), CSEL=1111 (No checks on
PonyProg), CKOPT = 1, JTAGEN = 1

SU>a) either reduce the SPI clock speed
How?
SU>b) reduce the wire length
how long? 1 cm, 5 cm, 10 cm?

thx. for help!

(I got new Siemens S65 phone, phone stil work :) I'll extract LCD from
him for tests )

von SuperUser (Gast)


Lesenswert?

@Spider84
a) i would not build the power supply out of a resistive voltage
divider. Your supply voltage depends very much on the load current. For
current peaks your voltage will drop. -> either use a LDO or at least a
big buffer - Cap at the 2.9V

b) your connecter looks different compared to the display connector

should be
LED_GND
LED+
1V8
GND
2V9
DAT
CLK
CS
RESET
RS

von Spider84 (Gast)


Lesenswert?

a) I can't find LDO in our shops :( I get +5V power from PC "AT"
power (my old computer).
Alsow I have LM317.
b) my LCD have same connector, just so showed.

Did you see?
http://www.mobile-files.ru/forum/attachment.php?attachmentid=27771&d=1138024678

von SuperUser (Gast)


Lesenswert?

Hi Spider84,

than add a buffer-cap 100µF or something like this in parallel to the
display supply.

Your link needs somehow a login... I did not understand the following
:-)

&#1042;&#1099; &#1074;&#1074;&#1077;&#1083;&#1080;
&#1085;&#1077;&#1087;&#1088;&#1072;&#1074;&#1080;&#1083;&#1100;&#1085;&# 
1086;&#1077;
&#1080;&#1084;&#1103; &#1080;&#1083;&#1080;
&#1087;&#1072;&#1088;&#1086;&#1083;&#1100;.
&#1055;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072;,
&#1074;&#1077;&#1088;&#1085;&#1080;&#1090;&#1077;&#1089;&#1100;
&#1085;&#1072;&#1079;&#1072;&#1076;,
&#1074;&#1074;&#1077;&#1076;&#1080;&#1090;&#1077;
&#1087;&#1088;&#1072;&#1074;&#1080;&#1083;&#1100;&#1085;&#1099;&#1077;
&#1076;&#1072;&#1085;&#1085;&#1099;&#1077; &#1080;
&#1087;&#1086;&#1087;&#1088;&#1086;&#1073;&#1091;&#1081;&#1090;&#1077;
&#1077;&#1097;&#1077; &#1088;&#1072;&#1079;. &#1053;&#1077;
&#1079;&#1072;&#1073;&#1091;&#1076;&#1100;&#1090;&#1077;,
&#1095;&#1090;&#1086; &#1087;&#1072;&#1088;&#1086;&#1083;&#1100;
&#1095;&#1091;&#1074;&#1089;&#1090;&#1074;&#1080;&#1090;&#1077;&#1083;&# 
1077;&#1085;
&#1082; &#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1091;.
&#1047;&#1072;&#1073;&#1099;&#1083;&#1080;
&#1087;&#1072;&#1088;&#1086;&#1083;&#1100;?
&#1053;&#1072;&#1078;&#1084;&#1080;&#1090;&#1077;
&#1079;&#1076;&#1077;&#1089;&#1100;!

von Spider84 (Gast)


Angehängte Dateien:

Lesenswert?

Heh. Learn Russian :) (look like UNICODE, but this cp1251) look attach.
Why I see all other codepages correctly? :)
cap 100uF betwen 6 and 7 pins. Right?

von The Daz (Gast)


Lesenswert?

Spider, add the capacitors to the voltage supply lines only. Otherwise
you'll put in low-pass filters further degrading your data signals.

von Spider84 (Gast)


Angehängte Dateien:

Lesenswert?

Levels (AT LCD connector):
0 = 0,00..+0,10V
1 = 2,95..+3,10V

LCD VCC = +3,12V
ATMega VCC = +5,26V
+12V = +12,46V

NOT WORK! :(
HELP!!!
I setup this LCD to work phone - LCD is work. (Phone is Siemens S65)
I tried connect my LCD wires to phone - work. (wires ~10cm)

von Spider84 (Gast)


Lesenswert?

I tried diferent software:
a)
http://www.superkranz.de/christian/S65_Display/data/L2F50_display4_V01.zip
b)
http://www.mikrocontroller.net/attachment.php/259277/HelloWorldMega16.zip
tried diferent Mhz:
a) 16Mhz (#define F_CPU 16000000)
b) 8Mhz (#define F_CPU 8000000)

Not work :(

von Spider84 (Gast)


Lesenswert?

:(((((

von SuperUser (Gast)


Lesenswert?

Hi Spider84,

are you sure having the L2F50 display? Because software a) is for this
type of display, software b) for the LS020.

If you have the L2F50 display, this software is already using the ASCII
table from Flash and should work without any modification (beside Port
changes).

Summary:
If you now have a clean supply at coreect level, correct I/O level and
correct timing i have no idea what is going wrong :-(

Can you check the interface signals with Osci, logic analyzer?

von Spider84 (Gast)


Angehängte Dateien:

Lesenswert?

Is this L2F50? (see attach)
at last I use L2F50_display4_V01.zip, just change defines of pins.

Ths is good levels?

Levels (AT LCD connector):
0 = 0,00..+0,10V
1 = 2,95..+3,10V

LCD VCC = +3,12V
ATMega VCC = +5,26V
+12V = +12,46V

Some times after power ON I see on LCD many horisontal colour lines...

I have Osci but I don't know how to use them. Manual to Osci on
Italian :) What kindof signal I must view by Osci?

von Ssss S. (sssssss)


Lesenswert?

Hi!

Zuersteinmal: Danke Christian fürs zur Verfügung stellen der Infos !

So, nun zu meiner Frage:
Ich wollte das Display an einem 3.3V DSP betreiben.
Spricht etwas dagegen das Display direkt an 3.3V zu hängen
(2V9 und 1V8 an 3,3Volt) ?
Hat das jemand schon länger so in Betrieb ?

Dann könnte ich nämlich auf die Levelshifter verzichten und das direkt
an den SPI port hängen.

Btw lässt sich aus der Platine aus diesem Thread:
http://www.mikrocontroller.net/forum/read-3-271856.html#new
sehr einfach ein kleiner 17,6Volt stepup regler zusammenbauen
wenn man nicht die portpin,fet+spule lösung zurückgreifen will (R vor
LED anpassen!)

Gruss, Simon

von SuperUser (Gast)


Lesenswert?

Ich hatte das L2F50 schon tagelang - aus versehen - mit 4.2V in Betrieb.
 Lief ohne Probleme.

Ich vermute, dass der Display-Controller für die üblichen 2.7V ... 3.6V
ausgelegt ist. Im Mobile Phone nimmt man gerne die 2.8V, damit man mit
LiIon Batterien + LDO arbeiten kann.

Die 1.8V ist im S65 eine der Interface Spannungen (u.a. für Memory).
Bei den mir bekannten Display-Controllern ist die Interface Spannung
auch bis 3.6V spezifiziert.

-> ich glaube (halt one Spec.), dass das 3.3V ohne Einschränkung der
Lebensdauer gehen sollte.

von Ssss S. (sssssss)


Lesenswert?

Sehr schön :)

Danke ;)

von The Daz (Gast)


Lesenswert?

Spider,
please try to reduce the SPI speed by not setting the double-sped bit.
Just changing the F_CPU define to 8Mhz ends in reducing the programms
wait loops to half which is just the opposite of what you wanted to
achieve if this action is not accompanied by exchanging the crystal
oscillator with the corresponding value as well. Disabling the SPI
double speed mode can be done by commenting out line 146 in disp.c of
the LF package. This helped me getting my LS020 display working when
using a prototyping board like you do.

von Spider84 (Gast)


Lesenswert?

With changing the F_CPU define I have change fuses bits to 8Mhz internal
oscillator (SUT=10, CKSEL=0100).

von Spider84 (Gast)


Lesenswert?

Removing of
SPSR = 1;  // double speed bit
don't help. Not work :( Strange...

von SuperUser (Gast)


Lesenswert?

@Spider:
if you see horizontal color lines sometimes, that means in that cases
your display is initialized and running and the final display on
command was sent by your software.

-> basically your hardware is running, perhaps not stable or the SW
timing is not correct for your display.

I propose that you play a little bit with the delays in the code. E.g.
increase the reset time from 10ms to >50ms etc.

Or remove comments from this line:
//  _delay_ms(7);

As far as i know you are the second one using the L2F50 display. The
inital timing was only tested one time. Maybe it is not perfect...

von Spider84 (Gast)


Lesenswert?

Ok. Thx, I'll try this.
I tried find other models of LCD, but all phones that I diassemble has
L2F50xxxx display :(
I can't bay LCD (can't find in shops), but I can get many x65 phones
- I work in GSM Service.

von Spider84 (Gast)


Lesenswert?

Line 215: _delay_ms(10);
tried _delay_ms(50); or  _delay_ms(60);
Line 258: _delay_ms(7);
not work.

von Spider84 (Gast)


Lesenswert?

AAAAAAAAAAAAAAAAAAAAAA
It is work!!!

I has down SPI speed to CPU/128 on 16Mhz and all work.

von Ssss S. (sssssss)


Lesenswert?

Hi!

Sagt mal, sehe ich das richtig dass beim LS020 Display
1V8 überhaupt keine Verbindung hat ?
Fällt mir nur gerade mal so beim verkabeln auf 8)

von The Daz (Gast)


Lesenswert?

Spider,
glad to here that. It probably means you can watch the individual
pixels being drawn :P

von Spider84 (Gast)


Lesenswert?

yes :) it is look like XP on i386 PC :)
Trying to speed up :)

von Ssss S. (sssssss)


Angehängte Dateien:

Lesenswert?

Hi!

Super, der Code funktionierte nach ein paar kleinen Änderungen auch auf
einem mega8.
Habe die Zeichentabelle zum testen rausgeworfen und schreibe nur "#"
statt Buchstaben.
Morgen wird der code auf nen dsp portiert! Danke !!
Btw lief mein Display auch wenn ich 4 mhz Quarz eingestellt hatte in
der lcd.asm und 8mhz dranhatte ...

Nun aber leider die schlechte Nachricht:
Mein Display ist defekt grrr
Siehe Anhang.
Jedenfalls zeigt er im obersten Teil nichts an und unten sind deutlich
glassplitter zu sehen....
Erkennt man nicht so gut aufm Foto, ist nur mit Digicam geknipst.

Direkt mal dem Ebayer schreiben ;(

Gruss, Simon

von Michael R. (rubi)


Lesenswert?

Hallo Simon

Ich würde das Display auch gerne auf einem Dsp verwenden.
Für welchen DSP portierst Du denn?
Ich plane es an einem Freescale DSP 56309 zu verwenden.

LG
Michael

von Ssss S. (sssssss)


Lesenswert?

(leider) für einen Ti TMS320f2812...
leider wegen dem dollen compiler den man verwenden muss :-X

von Spider84 (Gast)


Angehängte Dateien:

Lesenswert?

Cool!

von SuperUser (Gast)


Lesenswert?

Hi Spider, now you have to implement unicode driver (for russian) ...

von Spider84 (Gast)


Lesenswert?

:-\
I don't want UNICODE it is to hard. cp1251 or cp866 best way.
I'll make graphic api for this lcd based on "glcd".
Did you know how to put "transparent" pixel, ho to step for 1 pixel
with out drawing?

von Ssss S. (sssssss)


Lesenswert?

Hi!

Nach einigen Stunden Debuggen und Fehlersuche habe ich es nun auch auf
dem DSP
ans laufen bekommen (stellte sich als einen saublöden copy n paste
fehler heraus)

Jedenfalls läuft das Display nun stabil bei mir:
- 1V8 und 2V9 hängen direkt an 3.3V
- alle IOs sind direkt mit dem DSP verbunden (3.3V)
- Display hängt an gut 15-20cm SMT Flachbandkabel (0.8mm Abstand)
- Taktrate war auch relativ hoch, gab kaum Probleme (auch wenn die
Taktflanken aufm Oszi grausam aussehen nach 20cm Kabel und etlichen mhz
g)
- Framerate muss ich nochmal messen, liegt aber deutlich über 2fps.

Montag werde ich das nochmal überarbeiten und dann den C-Code der
Displayansteuerung hier posten.
Ist dann einfach portierbar, man muss bei Prozessorwechsel nur die
spi_tx16() routine austauschen 8)

Nochmal Danke ;)
Wenn ich dran denke mach ich Montag auch mal Fotos oder nen
Video im Betrieb. Funktioniert echt super :)

Gruss,
Simon

von SuperUser (Gast)


Lesenswert?

2fps??

von KennyOswald (Gast)


Angehängte Dateien:

Lesenswert?

Hi!
Habt Ihr zufällig einen passenden LDO 5V nach 3V mit 200mA, den ich
irgendwo um die Ecke (z.B. Reichelt) bekommen kann.
Will meine Platine fertigstellen und viel fehlt nicht mehr.

Als Pegelwandler will ich den 74LVX4245 verwenden, den habe ich aber
auch noch nirgendwo gefunden.

KennyOswald

von SuperUser (Gast)


Lesenswert?


von KennyOswald (Gast)


Lesenswert?

Danke für die Antwort!
Auf Conrad wäre ich nie gekommen. (Das letzte mal vor 5 Jahren.)

@Pegelwandler
Möchte beim 74LVX4245 bleiben, habe damit gute Erfahrungen gemacht. Nur
möchte ich nicht jedesmal Samples bestellen, um an die Teile
ranzukommen.

von Sawitar (Gast)


Lesenswert?

I don't speak Germat at all. Could you tell mi whitch controlles does
ls020xx uses?

von Ssss S. (sssssss)


Lesenswert?

Hi!

Heute habe ich rausgefunden dass man die CE=0/CE=1 nicht unbedingt
jedesmal setzen/löschen muss.

Beim schreiben der gesamten Bilddaten kann man das Signal konstant auf
low lassen.
Dadurch spart man eine Menge Zeit wenn man einen SPI FIFO (DPS) hat.
Lediglich vorm setzen des Zeichenfensters muss man das CE einmal
toggeln. (und ich lasse es bei jedem write_cmd toggeln, evtl auch
optional)

(bezieht sich auf das LS050)

Gruss, Simon

von Ssss S. (sssssss)


Lesenswert?

Hi!

Meinte natürlich das LS020 ;)

Habe heute auch die die Textausgabe portiert. Hat wunderbar geklappt
;)
Bin echt begeistert von dem Display :)

Hier noch ein kleines Testvideo 8)
http://avr.auctionant.de/misc/p2013538.mov.small.divx.avi
(die Streifenmuster kommen nur vom filmen mit der Digicam ;) )

Gruss,
Simon

von SuperUser (Gast)


Lesenswert?

Hallo Simon,

was ist das für eine Textausgabe? Ähnlich wie bei der glcd mit
verschiedenen Fonts etc?

Grüße
  SU

von Ssss S. (sssssss)


Lesenswert?

Da hab ich nur Christians Ascii Ausgabe umgeschrieben und auch seine
8x14font benutzt.
Hab eigentlich nur immer 2 Byte zu einem 16Bit wert zugeordnet und die
Ausgabe umgeschrieben.

Benutzt wird es wie folgt:

sprintf(txt, "%02.2f fps", fps);
display_puts(x,y,txt,length(txt));

Also nichts dolles ;)

von Lupin (Gast)


Lesenswert?

nice, wo kommt denn das video her? von ner kamera? Echt schick!

von Ssss S. (sssssss)


Lesenswert?

Hi!

Danke ;)
Jepp, kommt direkt von nem VGA Kameramodul
(naja nicht direkt, das video geht erst über nen fpga in ein sram,
dann wieder über den fpga zum dsp und von dort dann zum display g)
Das display ist aber nur zum debuggen, Bildverarbeitung ohne direkt zu
sehen
was passiert ist irgendwie ätzend. Vorallem die Bugsuche 8)

Gruss, Simon

von computaholic (Gast)


Lesenswert?

Das mit dem Video ist ja genial, kannst du vielleicht genauer sagen wie
du das gemacht hast? oder was wo mans nachlesen kann?

ich hab mir jetzt fast den ganzen thread durchgelesen. bei den ganzen
fehlern und bugs, ist die hompeage denn jetzt auf den aktuellen stand?
Oder lieber die pdf nehmen?

mfg
computaholic

von Lupin (Gast)


Lesenswert?

wenn du das grüne display hast holst du dir am besten das datenblatt und
versuchst die Ansteuerung anhand des Datenblattes zu verstehen und zu
"debuggen" bzw ergänzen. Das ist was ich machen werde, sobald ich
genug geld habe um mir was zusammenbasteln zu können ;(

Simon welches Modul hast du denn benutzt? Ich bin echt begeistert, da
hast du schon fast ne ganze digitalkamera (nur noch MMC karte dran).

von computaholic (Gast)


Lesenswert?

Wo gibt es denn das Datenblatt?
Also auf der Hompage gibt es ja C-Graphicroutinen für die drei
Displaytypen LS020xxx  LPH88xxxx  L2F50xxx.
Funktionieren die Funktionen da drin soweit, das man darauf aufbauen
kann?
GLCD gibts ja im moment nur fürs LS020xxx, oder hat sich da schon wa
getan?
Welches Display ist eiurer Meinung nach das beste in bezug auf
a)ansteuerbarkeit und b)bildqualität?
Ich hab mir den C-code jetzt nicht genau angeschaut, aber gibt es da ne
möglichkeit "bitmap-code" an display weiterzugeben?

Viele Fragen, ein noob, trotzdem danke an die, die antworten;)

mfg
computaholic

von Ssss S. (sssssss)


Lesenswert?

Hi!

wegen dem Video:
Das ganze ist für meine Diplomarbeit, wird ein Bildverarbeitungssytem
für unsere Fussballroboter an der Uni.
Dementsprechend klein muss das ganze werden (Platinen max 7.1x7.1cm).
Als Kameras benutze ich Agilent adcm2700 VGA Kameramodule.
Sind leider sehr Bastlerungeeignet, als normalsterblicher kommt man
nciht an die Datenblätter ;)
Wir haben sie an der Uni, wir mussten aber ein NDA unterschhreiben.
Normalerweise sind die Kameramodule in Motorola Handys drin.
Aber vorsicht, motorola verbaut 3 verschiedene: Phillips, Micron und
Agilent (zu den ersten beiden bekommt  man aber die Datenblätter im
Netz).

Nachlesen kann man das (noch) nirgends ;)

Gruss, Simon

von SuperUser (Gast)


Lesenswert?

@computaholic

Die Web-Page ist up-to date (und so viele Bug's waren das doch gar
nicht...)

Bitmap's kannst du auf allen Displays ohne Probleme mit 65k Farben
ausgeben.

Für das grüne Display LPH88 gibt es ein kompatibeles Datenblatt (hier
im Thread gepostet) Es hat auch die flexibelsten Addressierungsmodies
für das Grafik-RAM.

Für das LS020 gibt es den GLCD port, dass heisst schöne Grafik- und
Textausgabe mit allen möglichen Font's

Das Epson Display L2F50 kann bisher nur die Bitmap-Ausgabe.

Grüsse
  SU

von computaholic (Gast)


Lesenswert?

Kann man die displays eigentlich auch am pc am parallel-port betreiben?
mit lcdhype oder ja lcd oder mit einem eigenen Programm? In wiefern
müsste der programmcode geändert werden?
mfg
computaholic

von Spider84 (Gast)


Angehängte Dateien:

Lesenswert?

Just for tests :)

von M. Iller (Gast)


Lesenswert?

Hab mir jetzt auch mal ein LCD besorgt.
Ist ein LS020
Mit SimpleDisplay3 funktioniert es probremlos!
Mit der Lib bringt mir das LCD aber rein gar nichts :-(

Zur Hardware
Ich hab nen Mega32 mit 16MHz und einen 74HC4050 als Level-Shifter
das Display wird mit 3.04V versorgt

In der glcd.inc hab ich die pins auch geändert so das sie passen.

Hat jemand ne Idee warum es nicht will?

von M. Iller (Gast)


Lesenswert?

Hat sich erledigt :-)
Ich habe in der glcd.inc die ganzen defines für die anderen mcu´s
rausgeworfen
und schon funktioniert es damit :-)

von Svetoslav (Gast)


Lesenswert?

hallo, tolle sache dass mit dem display.
Ich habe einige fragen, da ich gerade (vor 30min meine erste blinkende
led) mit AVR anfange ist mir etwas naebelig, wie das gance mit dem
compiliren von den beispiele die hier gepostet sind. Also...

Frage 1: Welcher compiler bzw. welche ide benutzt ihr fuer das project
(habe bis jetzt ccs fuer PIC's benutzt)
Frage 2: Hat jemand ein fertiges project fuer ein atmega16 und 16mhz
ext quartz, wenn ja, kan es der jenige hier posten und mir zagen mit
welcher ide das gemach wurde...

von Svetoslav (Gast)


Lesenswert?

hmmmm, es gibt einige tipp und sprachfehler bei mein post, aber da ich
kein deutscher bin, hoofe dass ihr verstanden habt was meine...

von M. Iller (Gast)


Lesenswert?

Der Compiler ist Winavr eine IDE gibt es da keine (soweit ich weiß)

Für den Mega16 war hier schon mal was im Thread

von Lupin (Gast)


Lesenswert?

winavr hat programmers notepad mit drin, ich glaube eclipse ist aber
etwas weiter entwickelt.

von André K. (freakazoid)


Lesenswert?

AVRStudio arbeitet auch mit WinAVR zusammen (mal mehr und mal weniger.
Siehe: http://www.mikrocontroller.net/forum/read-2-306070.html#new)

von Ralf (Gast)


Lesenswert?

@Mark:

Gibt es schon Neuigkeiten bezgl. der Platine ?

Gruss,
Ralf

von Mike (Gast)


Lesenswert?

Hallo,

ich habe das LPH-Display an einem AVR mit 3V Spannungsversorgung
angeschlossen, hat problemlos funktioniert.

Jetzt wollte ich das LCD an einen ST10-Controller anschließen, der mit
5V Versorgt, also auch 5V-Pegel an den I/O-Pins liefert. Ich habe
Spannungsteiler mit 3k3 und 2k2 versucht, allerdings bekomme ich das
LCD nicht ans laufen. Auf dem Oszi sehen die Pegel allerdings recht
vernünftig aus. Sind die Widerstände evtl. zu hochohmig? Hat schon
jemand Probleme mit zu hochohmigen Spannungsteilern gehabt? Welche
Werte verwendet ihr? Die Werte, die im PDF angegeben sind, sind relativ
niederohmig, das können die Portpins des ST10 evtl. schon gar nicht mehr
treiben.

Gruß
Mike

von Lupin (Gast)


Lesenswert?

wenn sie zu hochohmig sein sollten könnte es helfen den Takt runter zu
setzen.

von SuperUser (Gast)


Lesenswert?

Die Widerstandswerte hängen von der SPI Geschwindigkeit ab. Die
ursprünglich vorgeschlagenen Werte gehen von 8MHz aus, da braucht man
schon niederohmige Werte. Das ist mit den 3k3/2k2 sicher nicht mehr
vernünftig machbar. Hängt natürlich auch von der Kabellänge ab...

Hast du mit dem Osci am Display gemessen?

von Mike (Gast)


Lesenswert?

Den Takt habe ich schon runtergenommen, liegt bei ca. 500 kHz.
Die Leitungen zum LCD sind ca. 10cm lang.
Mit dem Oszi habe ich direkt am Spannungsteiler gemessen.

Gruß
Mike

von Christian F. (fasti)


Lesenswert?

Hi!

Wollte mal fragen ob irgendjemand schon die Graphiklibrary auch für die
LPH und L2F Displays umgeschrieben hat. Leider reichen meine Kenntnisse
dafür nicht aus....

mfg

Fasti

von SuperUser (Gast)


Lesenswert?

@Mike:
mit 500kHz sollte das mit 3k3/2k2 wohl noch klappen. Wirst wohl noch
ein anderes Problem haben.

Vergleich doch mal die Phase von Clock und Daten...

von SuperUser (Gast)


Lesenswert?

Hallo L2F50 user,

es gibt ein update für das L2F50 Display auf der Web Seite. Ein byte in
der init-sequence war falsch....

von wolf4124 (Gast)


Lesenswert?

abo

von SuperUser (Gast)


Lesenswert?

Hallo Mark de Jong,

was machen eigentlich deine Platinen?

Deine Homepage http://www.mdejong.de/ ist für mich leider nicht mehr
nutzbar dar man einen flash-plugin benötigt :-(

von KennyOswald (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!
Habe meine Platine ist auch schon fertig!
Wenn Ihr wollt veröffentliche ich das brd file.

Bild gibt im anhang.

KennyOswald

von Michael R. (rubi)


Lesenswert?

Hallo KennyOswald

Schaut ja super toll aus.
Wirst Du die professionell anfertigen lassen?
Wenn möglich würde ich gerne 1 bis 2 Stück mitbestellen.

LG
Michael

von KennyOswald (Gast)


Lesenswert?

Hallo Michael!
Zur Zeit noch nicht, aber ist geplannt. Vorerst werde ich mir eine
Platine zum testen fertigen lassen. Man weiss nie, ob ich nicht
irgendwo noch einen fehler habe.

Sammelbestellungen mach ich sehr ungern, da tauchen immer probleme
auf.
Die kosten nur für die Platine betragen nur 5€ (www.olimex.com).
Der Rest ca. 10€.


KennyOswald

von Michael R. (rubi)


Lesenswert?

Hallo KennyOswald

Ich würde mir gerne 2 mitbestellen.
Wenn Du möchtest überweise ich Dir den Betrag gerne vor der Bestellung
bei Olimex.


LG
Michael
rubitschka at hotmail dot com

von KennyOswald (Gast)


Lesenswert?

Hallo Michael!
Meinen Auftrag habe ich schon letzte Woche losgeschickt. Das einzige
was ich Dir schicken kann, sind die brd files.

mfg
KennyOswald

von Mario (Gast)


Lesenswert?

Hallo Kenny,

super! Das ist ja toll :). Die 3D-Ansicht gibt schon war her, und der
PIC sowieso :).
Soweit ich weiß bietet Olimex Nachbestellungen an. Dazu ist dann nicht
mal das File zu schicken, die brauchen nur die original Auftragnummer
oder Layout-nummer - und ich denke mit Einverständnis des Urhebers -
kann dann jeder der will dort bestellen und direkt mit OLIMEX das
abwickeln.
Ich würde beispielsweise gleich das LPC2148 Board dazunehmen :).

Und ja, bitte kannst Du die Files online stellen, danke!

Mario

von KennyOswald (Gast)


Angehängte Dateien:

Lesenswert?

Sorry für die Verspätung!
War im Urlaub.

mfg
KennyOswald

von SuperUser (Gast)


Lesenswert?

Hallo Kenny,

die 5V Block-Kondensatoren (10µF/2.2µF) scheinen mir ein wenig schwach
zu sein. Da brauchst du eine niederohmige 5V Versorgung. Ausserdem ist
der ESR üblicher ALU-Kaps (die hast du zumindest eingezeichntet im 3D)
grottenschlecht. Können bei 10µF locker 3 Ohm sein.

Beim LED Backlight können immerhin Ströme deutlich grösser als 100mA
getacktet mit 60kHz fliessen. (z.B. 3 Ohm ESR, 150mA -> 450mV
Störspannung auf der Versorgung)

Ich würde den Praxis-Test abwarten, und mir die Versorgung genau
angucken. Für grössere Stückzahlen bzw. nachbausicher würde ich das
ändern und/oder Kap's mit niedrigeren ESR wählen.

von KennyOswald (Gast)


Lesenswert?

Hallo SuperUser!

Quote:
Ich würde den Praxis-Test abwarten, und mir die Versorgung genau
angucken.

Gut werde ich machen.
Bei dem IRU1205-30 habe ich mich erst mal am Referenz Design vom
Datenblatt gehalten. Später wenn ich die Boards von Olimex bekomme,
werde ich das noch mal überprüfen.

In meiner Schaltung ist noch noch eine +5V Spannungsregler drin.

~9V || 2200µF || 330nF < 7805 > 10µF || 100nF || +5V


Für die Verbesserungsvorschläge bin ich dankbar!

Hint:
Mein Design basiert auf einem CoreBoard (www.ucapps.de) und 8 Companion
Boards, für jeweils ein S65. Die Kommunication zwischen den Boards
erfolgt 400kHz Soft IIC Bus, später mit 1Mhz.

USB wird später für Standalone am PC benutzt.

mfg
KennyOswald

von Peter (Gast)


Lesenswert?

Hallo ThJoedi,

wie schauts aus mit den PDFs hast du schon etwas rausgefunden, welcher
Controller es ist?

von Peter (Gast)


Lesenswert?

oops es geht natuerlich um das Sharp Display

von Ben (lightning)


Angehängte Dateien:

Lesenswert?

Hab das PDF wiedermal auf den neusten Stand gebracht.

Gruß Lightning

von Mario (Gast)


Lesenswert?

Danke Kenny!

Gruß
Mario

von Nico (Gast)


Lesenswert?

Ich bin grad nicht auf den neusten Stand:

Was genau kann man denn mit dieser tollen platine machen? Bzw, was
vereinfacht die?

von Christian F. (fasti)


Lesenswert?

Hi Leute!

Tolle Arbeit!
Bin gerade dabei mich auch mit dem Display zu beschäftigen. Habe ein
L2F50 und es funktioniert super.

@Spider84: Could you please post your code? I would like to see how you
did get the text to be displayed in 90° orientation. I also use the
L2F50 but I didn't get this to work. How'S your library doing? Are
you making any progress?

@all:
Ich frage jetzt nach einem Monat nochmal nach ob schon irgendwer die
Library für L2F50 umgeschrieben hat? Wenn ich in Assembler mehr
Durchblick hätte würde ich es selbst versuchen.

mfg

Fasti

von Spider84 (Gast)


Lesenswert?

@Christian: At first thx for English :) I'll find and release all my
code.

void put_char_90(uint8_t x, uint8_t y, char c)
{
  uint8_t h,ch,p,mask,he;

  LCD_Enable();  // select display

  lcd_cmd(SD_CSET);
  lcd_dat0(0x08+y);  // start is 8, not 0
  lcd_dat0(0x01);
  lcd_dat0(0x08+y+CHAR_H-1);  // end is 00x8B = 0x83+8
  lcd_dat0(0x01);

  lcd_cmd(SD_PSET);
  lcd_dat0(x);
  if (x < DISP_H-CHAR_W)
  {
    he=CHAR_W;
    lcd_dat0(x+CHAR_W-1);
  }
  else
  {
        he=DISP_H-x;
        lcd_dat0(DISP_H-1);
  }

  lcd_cmd(RAMWR);
  mask=0x80;
  for (h=0; h<he; h++){
    for (p=0; p<CHAR_H; p++){
      ch=pgm_read_byte(&ascii_tab[ c-32 ][p]);
      if (ch&mask){
        lcd_dat16(textcolor);
      } else {
        lcd_dat16(backcolor);
      }
    }
    mask=mask>>1;
  }
  LCD_Disable();
}

Now I work on Siemens x70 displays. This LCD look like c65's display.

von quba54 (Gast)


Lesenswert?

Did anybody tried to connect LS020 display to 3.3V instead of 2.9V?

von Peter (Gast)


Lesenswert?

Yes, it runs on 3.3V without Problems
have anyone find the datasheet of the LS020 display??

von Spider84 (Gast)


Lesenswert?

Some body know how to cncrement LCD contrast? I tried to use Sharp LCD,
but picture very light. :(

von Fasti (Gast)


Lesenswert?

Hi!

Sorry I can't help you with your contrast problem but I have another
question for you.
Are the displays from the newer x75 series the same displays as the old
ones or are they compatible? If the x65 Displays get outdated and its
then hard to get them, the x75 displays should be still available.
When there isn't a great difference, could you post how to communicate
with them?

Does anybody try to get the library working for the other Displaytypes?
I tried but till now with no success.

greetings

Fasti

von SuperUser (Gast)


Lesenswert?

Hi Spider84,

it think that the displays have an automatic contrast control. I had
once a light contrast also, but found that the supply voltage was much
too high. After correcting the voltage to the nominal level contrast
was o.k. again....

I've no other idea how to control the contrast

von Spider84 (Gast)


Lesenswert?

My friend works in the GSM warranty center. And he has many various
phones. I have taken from it devices with different displays and make
diferent combinations of pone+lcd. ALL WORK! ALL Displays has ONE cmd
line!
I'll say more. All Siemes x65 phones can control display contrast (by
service tool) from 0 to 255.

I make LCD Emulator based on PIC18F252 and connect it to phone. I has
tried to record commands prom phone to LCD. And I make it!
Now it look like all commands to LCD has 16bit.
For Eample:
CS = 0;
RS = 1;
PutWord(CMD);
RS = 0;
PutData(....);
CS = 1;

Phone work with LCD on 10Mhz and I can't monitor all data from phone
:( My PIC has only 1500 bytes of RAM and it is to small. I tried to put
out data to PC by UART on 115200 (my PC can't more) but it is to slow
VS 10Mhz on SPI. And now i monitor only COMMANDS (when RS = 1). And
10Mhz to high speed and PIC make many errors when recive data (3
measurmen and 3 diferent data packet :) )

Now I get IDA and FullFlash from cx65 phone and disassm it. I try to
find code work with display. Some body know ARM?

Sorry fo my English. (I native lang is Russian)

von Ale (Gast)


Lesenswert?

@Spider84:

The good news are not shadowed by language mistakes ! don't worry.
All no native speakers make more or less some mistakes with english or
with german (me !).

Have you tried to connect an external SRAM to that PIC so you have more
space ?

Which phones and LCD combinations have you tried ? (Model and/or Part
numbers)

The commands to turn-off the display or to put them in stand-by and not
known, that method is excellent to get them, may be you can capture
them.

What you refer to when you say that the PIC make errors ? in the SPI
communication ? or via RS-232 with the PC ?

(Sorry but my russian is even worst than my german :-((( )

By the way, very good work !
Ale

von Spider84 (Gast)


Lesenswert?

I have't external SRAM :( But I'll think about this...

I tried "play" with cx65, m65, s65 and with LCD from Sharp and Epson
(orange back). In all combinations. All work fine. (but different
contrast).

I think that errors makes in SPI bus. But wires length beetwen PIC and
phone not more then 3 cm.

von Ale (Gast)


Lesenswert?

@Spider84:

The errors seem to come from the "low" frequency at which the PIC SPI
can work. I read that the phones communicate at 13 MHz with the display.
Have you measured 10 MHz on that bus ?, that part you are using
(PIC18F252) when clocked at 40 MHz, allows a maximum reception
frequency (SPI SLAVE) of 10 MHz, may be can be overclocked !? (At
50/55MHz for instance ?).

Can you post some of the commands you found ?

Have you checked this page (is in english)

http://www.superkranz.de/christian/S65_Display/DisplayProgramming.html

von Spider84 (Gast)


Lesenswert?

I measured 10MHz by "oscilograph" (I don't know how this device
called on English) on CKL wire. ALL Phones work with LCD on 10Mhz. I
don't know where author get info about 13 MHz, but it is wrong.

I will try to owerclock. any way I have ATMega8/16 and I can try to
make LCD Emulator on this MCs.

All of my research on work. I'll post all codes when come to work, no
I'am at home.

Yes. A I read this page many times. All information on this pages are
diferent with my research.

von SuperUser (Gast)


Lesenswert?

Hi Spider,

perhaps you should calibrate your oscilloscope.

13MHz is for sure the clock frequency in the S65 phone.

von Ale (Gast)


Lesenswert?

@Spider84:

The clock frequency can be easily measured. You can use the PIC to
generate a 10MHz  signal to use as a reference to check the clock
freq.

Can you try to reproduce the commands you capture,

I mean you turn on the phone and some commands are sent.
You turn off the phone
you turn on the phone again and the some commands should be sent.

If that match, quite probably the commands are right.

I will get this week per post my own display, so I'll test them all !

Regards,

Ale

von Christian F. (fasti)


Lesenswert?

Hi!

Habe versucht das Programm von Fabian Thiele zu compilieren (AVR-GCC
3.4.5) bekomme jedoch immer die Fehlermeldung:
s65LcdTest.c:47: warning: passing arg 1 of `fdevopen' from
incompatible pointer type

Weiss einer Rat? Woran liegt das.

Vielen Dank im Voraus

ciao

Fasti

von Ale (Gast)


Lesenswert?

Du kannst es ignorieren.
Es ist kein Fehler, es ist nur ein Warnung. Das proto von put und get
sind nicht gleich wie fdevopen erwartet. Wenn die beide Pointer haben
die gleiche Lange (z.B. 2 byte), du kannst es ignorieren. Aber das gute
es was ich habe gesagt.

von ronaldo (Gast)


Lesenswert?

Hello LUPIN,
Sorry but I don´t speak german :-(
I have the PCB ARM LPC2106 and I´ll try work my LCD Hitachi HD66766. I
can use the 3V3 in VCC?
In your rotine DISP.C have #include "disp.h" can you send it?

I used MSP430F1232 and 8051 with nokia 6110 and 3110
http://tuta.sites.uol.com.br

Sorry my English,
Regards.

von Christian F. (fasti)


Lesenswert?

Hallo!


Ich wollte mich auf diesem Wege nochmals bei Christian Kranz bedanken
für die großartige Arbeit. Ein L2F50 verziert zur Zeit gerade ein
Projekt von mir und das Display hat vieles erleichtert. Werde demnächst
mal ein LS020 probieren wegen der Library :-)
Also nochmal besten Dank

ciao
Fasi


PS: In English: Is there a big difference between the S65 and S75
Display in means of programming? spider84 did you succeed in
controlling a x75 Display?

von SuperUser (Gast)


Lesenswert?

wegen der library:

Wie Hagen schon (ganz) weit oben angemerkt hat, funktioniert das
Linien-Zeichnen nicht mit allen Winkeln. Denn dafür wurden im Original
Addressierungsmodi genutzt, die das LS020 nicht bietet.

Im Moment habe ich keine Zeit/Lust das zu reparieren (in meiner
Anwendung stört es nämlich auch nicht).

Vielleicht hat ja jemand Zeit/Lust sich das mal vorzunehmen...

von MartinS (Gast)


Lesenswert?

Moin moin,

ich spiele gerade mal ein bissl mit dem LS020 rum. Dabei ist mir
aufgefallen, dass die Beschreibung von Superkranz nicht ganz korrekt
bzw. unvollständig ist. Ich würde die Komandos anders beschreiben.
Wie es aussieht dient das Komando 0xef90 immer zum einleiten einer
Parameterübergabe (funtioniert aber auch ohne).
Darauf folgt die Parameternummer (oberen 8Bit) und der Parameterwert
(unteren 8Bit).
Parameternr.
 0x05 - Orientierung
 0x06 - Pixel Schreibposition X
 0x07 - Pixel Schreibposition Y
 0x08 - Arbeitsbereich Start X
 0x09 - Arbeitsbereich End X
 0x0a - Arbeitsbereich Start Y
 0x0b - Arbeitsbereich End Y

- Dabei setzt der Parameter 0x08 auch den Parameter 0x06 und der
Parameter 0x09 den Parameter 0x07. Diese Parameter müssen nicht alle
zusammen gesetzt werden, z.B. brauch der Parameter 0x05 nicht immer
gesetzt werden.
- Ich ändere den Status der CS-Leitung nicht vor bzw. nach jedem zu
sendenden Byte. Dabei Komandos bzw. Parameter können nicht abwechselnd
mit Daten gesendet werden. Komandos können nur nach der H->L Flanke der
CS Leitung gesendet werden. Wird dananch RS auf Daten gesetzt werden vom
Display anschließend keine Komandos mehr angenommen.

Daraus folgt, das die "clrscr" Routine (im Semplecode für das LS020
Display) von Christian nicht ohne Einschränkungen funktioniert. Es
sollten in dieser Routine auch die Parameter 0x08 bis 0x0b gesetzt
werden, da sonst unter Umständen nur ein Teil des Displays gelöscht
wird.

Kann dieses jemand bestätigen oder widerlegen?
Hat schon jemand herausgefunden, wie man die Kontrast einstellt?

von Stefan Lieven (Gast)


Lesenswert?

Hallo,

hab mir vor kurzem bei pid handy fit ebay ein ls020 besorgt und über
spi an einen mega8 mit 8mhz takt rangehängt. Ich habe das display mit
der auf christian k's page (großes lob für das tolle
reverse-engineering) beschriebenen init zum laufen gebracht, habe aber
folgende probleme:

Display lässt sich wie angegeben schreiben, nimmt die pixeldaten jedoch
statt im rgb 5,6,5 nur im rgb 2,4,2 format.

der kontrast ist sehr schlecht, je mehr aktive pixel, desto schlechter.
d.h. ein drittel schwarz und der rest weiß sieht gut aus, füllt man das
ganze display mit schwarz entsteht hellgrau.
(muss wohl am voltage-generator fürs lcd oder dessen einstellung
liegen)

vielleicht hat jemand eine ähnliche erfahrung gemacht oder weiß wie man
die init modifizieren muss um vor allem den kontrast in den griff zu
bekommen.

von SuperUser (Gast)


Lesenswert?

@Stefan:
Wenn du den Example-Code für den Atmega8 nutzt, musst du beachten, dass
dort die ASCII-Tabelle nicht ins RAM passt. D.h. du musst sie ins
PROGMEM auslagern.

Ansonsten hatte ich solche Probleme noch nicht mit dem LS020 (habe fünf
Stück im Betrieb, alle mit sehr gutem Kontrast). Überprüf auch mal die
Versorgungsspannung. Ich hatte mal versehentlich >4V angeschlossen, da
wurde der Kontrast auch schlecht.

von Stefan Lieven (Gast)


Lesenswert?

@superuser

hab die betriebsspannung leicht nach oben und unten variiert (ca 0,3V)
hat aber keinen erfolg gebracht.

Vielleicht liegts auch am display obwohl ich mir das nicht vorstellen
kann.

Wo hast du deine displays bestellt un wieviel hast du gezahlt ?

von SuperUser (Gast)


Lesenswert?

Hallo Stefan,

alle über ebay bei verschiedenen Anbietern. Ist aber schon etwas länger
her, habe mal kurz in alten emails gegraben und die folgenden drei
gefunden...

auktion.speedy
pid-handy-fit
akku-power

Keine Ahnung ob es die heute noch gibt...

von Stefan Lieven (Gast)


Lesenswert?

@superuser

Hab meins auch von pid handy fit. Verwendest du die init-sequenzen von
christian k's page oder vielleicht andere ?

das größte problem ist immer noch das falsche farbformat.

von MartinS (Gast)


Lesenswert?

Ich habe meine auch von PHF. Die Displays gibt es Heute noch, habe zwei
letzte Woche dort gekauft.

Das mit dem Init von  Christian funktioniert bei mir 100%ig.

von SuperUser (Gast)


Lesenswert?

100% die Init von der page (glcd).

von Stefan Lieven (Gast)


Lesenswert?

@superuser

Habs endlich rausgefunden: als ich die init-tables beim portieren in
den assembler kopiert hab hatte ich sie aus dem simple display example
code genommen, da fehlen ein paar bytes. Danke für den tipp dass du die
glcd verwendest. Dort stehts richtig. ;)

von SuperUser (Gast)


Lesenswert?

Hi

@Stefan,
eigentlich machen beide init's das gleiche (simple und glcd). Zwar
gibt es bei der glcd zusätzlich zur 40-byte INIT2-Table eine weitere
INIT3 table, die wird aber gar nicht benutzt.

@Martin S.
ja, die clearscr Funktion funktioniert nur richtig, wenn man die
Arbeitsbereiche nach der init nicht geändert hat bzw. wieder zurück
gesetzt hat. Auch das 0x05 muss man nicht immer wiederholen. Ein
Performance Gewinn wird sich wohl nur bemerkbar machen, wenn man
dauernd sehr kleine Daten schickt.

von Ronaldo (Gast)


Lesenswert?

Hello Cristian Kranz,
I need your help, I will try to work the LCD HD66773 with arm LPC2106,
and I got here the file "lcd.c". Inside the "lcd.c", I don´t find
the functions InitSPI() and SPI_WRITE().
Where I find this functions or the "lcd.h", can you send me it?

von SuperUser (Gast)


Lesenswert?

Hi Ronaldo,

i think you are wrong here.
a) the provided code is not for ARM-7
b) the display is not a HD66773

BR
  SU

von SuperUser (Gast)


Lesenswert?

O.k. i was wrong, there is a HD66773 display :-)

This is the code on the net for init the SPI and write to the SPI on
Atmega AVR (copied from the code at
http://www.superkranz.de/christian/S65_Display/DisplayIndex.html)

void port_init()
{
  uint8_t tmp;

  PORTB &= ~_BV(LCD_RESET);
  DDRB |= _BV(LCD_RESET);

  PORTB |= _BV(LCD_MOSI);
  DDRB |= _BV(LCD_MOSI);

  PORTB &= ~_BV(LCD_CS);
  DDRB |= _BV(LCD_CS);

  PORTB &= ~_BV(LCD_SCK);
  DDRB |= _BV(LCD_SCK);

  PORTB |= _BV(LCD_MISO);

  PORTB |= _BV(LCD_RS);  // not used from LPH display
  DDRB |= _BV(LCD_RS);

  // setup SPI Interface
  SPCR = _BV(MSTR) | _BV(SPE) | _BV(SPR0);
  SPSR = 1;  // double speed bit

  tmp=SPSR;
}

void lcd_write(uint8_t dat)
{
  SPDR= dat;
  while (!(SPSR & _BV(SPIF)));
}

von Ronaldo (Gast)


Lesenswert?

Super user,
Thanks for answer and help.
The correct name the file is "disp.c" posted here by lupin.
I need only the SPI_WRITE().

I finished the function to nokia_6100 64K to ARM LPC2106

von Eugene (Gast)


Lesenswert?

Hello! I have some questions about LCD S65!

1. On your circuit two different power supplies (2,9 V  and 1,8 V)
connected to 2,9 V. Is it realy safely?
2. Your library for AVR is for WinAvr. Have you library for
CodeVision?
3. Can I replace IRU1205CLTR  by lm317?
4. Can I replace resistors 610 Om by 560 Om?
Thanks.
Eugeny.

von Lupin (Gast)


Lesenswert?

yes
no
dont know
yes

von Eugene (Gast)


Lesenswert?

So, why on display two different power supplies?

von Eugene (Gast)


Lesenswert?

For led power supply used PWM output of AVR. I can't find BAT54 and
BSS123, placed on circuit. Please tell me analog of these parts, or
another circuit for PWM 10V-generator.

Sorry for my bad English )))

von ronaldo (Gast)


Lesenswert?

Eugene,
If you user the LM317, use the equation the datasheet:
V=1.25*(1+R2/R1)
V=2,91
R1=120r
R2=160r

von SuperUser (Gast)


Lesenswert?

Use a approx. 1A Shottky Diode (1A because of the lower forward voltage,
LED current should not be higher than 30mA)

Usa a n-channel (small power) FET with a threshold voltage compatible
to the output voltage of your uC I/O. A low Rdson of the FET reduces
the losses. Switched Current is approx. 100mA. but i propose at least a
1A type.

von Eugene (Gast)


Lesenswert?

You wrote : 1A because of the lower forward voltage...

Sorry, my English is bad... tell about this simply

von SuperUser (Gast)


Lesenswert?

I meant:
Use a shottky diode with at least 1A current capability because such
diodes have usually a lower forward voltage, compared to schottky
diodes with less current capability. Nevertheless the current through
the display backlight LED's itself - and therefore the true current
through the schottky diode - is only max. 30mA. A smaller diode would
do the job but because of efficiency use a stronger.

Same for the FET.

von Eugene (Gast)


Lesenswert?

Ok. Thanks. But on circuit I see BAT54, his current is 0,1 A and it's
works. Why?

von Eugene (Gast)


Lesenswert?

I look for proteus model for S65 display. Please, give me a link or send
to asta-la-vista@mail.ru

von Eugene (Gast)


Lesenswert?

I want to use ATMega32. Is it enougth flash memory on it?

von Eugene (Gast)


Lesenswert?

Is anybody alive here?

von Eugene (Gast)


Lesenswert?

&#1077;&#1073;&#1072;&#1085;&#1099;&#1081; &#1074;
&#1088;&#1086;&#1090;....

von Lupin (Gast)


Lesenswert?

you ask weird questions, that is why no one responses (besides everyone
is german here)

The mega32 is okay, just do the math yourself... you can interface it
with virtually every microcontroller, but with less memory you can only
store low resolution images. I guess no one has a proteus model of the
display.

For the LED step up i would just try to build the circuit of the
schematic on the site. It will work with other diodes too, but maybe
not at such a high efficiency.

von SuperUser (Gast)


Lesenswert?

full ack. to Lupin.

By the way, no idea what is ment with "proteus model" of the display

von Eugene (Gast)


Lesenswert?

You wrote "I guess no one has a proteus model of the
display.", "no idea what is ment with "proteus model" of the
display"...


So, looking this page press CTRL+F - and type proteus in search field.
You shell find link to proteus.jpg - screenshot of project with s65
display.

Lupin. May be I not understand you because of my bad english... But
tell me, if I shall use ATMega32 with library only, without long body
of main program? only library functions - how much kbytes it will be?


Oh... I have to rebuild this code for CodeVision... It will be
difficult?

von Eugene (Gast)


Lesenswert?

Hello!

I have download
http://www.superkranz.de/christian/S65_Display/data/s65_glcd_V01.zip

In install.txt I found string:
"- open \lib\makefile. and change MCU_TARGET and -DXTAL=16000000 to
your Device
- open \lib\glcd.inc and change the PORT definitions to your hardware
connection of the GLCD
- run \lib\compile.bat
"

But There is no folder "lib" in s65_glcd_V01.zip . Why?

von SuperUser (Gast)


Lesenswert?

the lib folder is renamed to glcd. You find all files in the glcd
folder.

For compilation use make instead of compile.bat

von Eugene (Gast)


Lesenswert?

Hello!

Look at code:

#elif defined (_AVR_ATmega32_)
  #define   LCD_PORT                _SFR_IO_ADDR(PORTB)
  #define   LCD_PIN                 _SFR_IO_ADDR(PINB)
  #define   LCD_DDR                 _SFR_IO_ADDR(DDRB)
  #define   LCD_CS      PB0
  #define   LCD_RESET   PB6
  #define   LCD_RS      PB7
  #define   LCD_MOSI    PB2
  #define   LCD_MISO    PB3
  #define   LCD_SCK     PB1


You can see PB2 with MOSI and PB3 with MISO. But on scheme - only
"DAT" with PB2. How to connect.

It's not all troubles.

Compiler WinAVR put warnings:
test.c:10: warning no previous prototype for 'testLines'

and same warnings for other functions on test.c

I change XTAL in two places in library. May be I do error while edit
make file?

Please, compile for me test.c for ATMega32  with 8Mhz internal RC
Oscillator.
I want to know - is the program error, or LCD error.

I connect AVR outputs with LCD inputs without resistors.
Do LCD will not work whithout resistor? or LCD will be work, but with
instability?
Do this damage LCD?

von Eugene (Gast)


Lesenswert?

Is anybody alive here?

von Fasti (Gast)


Lesenswert?

Hi!

You don't have to connect the PB3 Pin to anything on the Display,
because communication is only in one direction, MCU -> LCD. So you
connect DAT on the LCD to MOSI on the MCU.
You didn't say at which voltage your MCU runs. If its 3,3V your ok but
if it's 5V you may have ruined your display if you didn't use a
voltage divider. Use the resistor combination proposed from Mister
Kranz and it will work fine. If Powerconsumption is an important
concern for you you might use an active Levelshifter (e.g: Max3002)
instead of the resistors. This will reduce current-consumption.
I can't say anything about the warnings from the compiler by now
because I'm not at home where I can try and compile the lib.

greetings

Fasti

von Eugene (Gast)


Lesenswert?

Thanks, Fasti!

You wrote: "You don't have to connect the PB3 Pin to anything on the
Display". Ok, but my debug board has leds on each pin of each port.
When MCU is start's - PB3 led is lighting. Why? And if PB3 is not
used, why PB3 defined in library?

You wrote: "5V you may have ruined your display if you didn't use a
voltage divider".

Hmm.. MCU voltage - 5 V, LCD - 3 V. SPI without resistors voltage is
4.5 V. LCD not works, but I think, that LCD still not damaged, because
combination of lighting leds with connected LCD, and without connected
LCD is different.

You wrote: "I can't say anything about the warnings from the compiler
"

Why "can't say"? Look my previous messages...

von Eugene (Gast)


Lesenswert?

Hm... I have display LPH8836. On Mr.Kranz's site I have read "LCD
Grafic Library (GLCD) for ATMEL AVR processor (currently LS020 only)"

Where I can get library, or how can I edit library for using with
LPH8836?

von Christian F. (fasti)


Lesenswert?

Hi!

It depends on how the LEDs on your port are connected. If the Leds are
connected from Vcc to the Pin, the LED will light when the Pin is low.
If it is connected from the Pin to Ground, the LED will light when the
Pin is high. I don't know if the Port is set high or low by the
software but anyhow it's not relevant for the display. It will work
without this Pin simply because there is no Pin left on the Display to
be connected. I also don't know what the LEDs on your Board tell you
about the functionality of the display. I don' think you can say
anything from a few LEDs or I didn't get what you wanted to say. If
you don't get the Voltage from the Digital lines to 3V your display
will surely be damaged.

I've read all your messages so I don't know what you want..... I
said: I can't say anything about the warnings because I simply don't
have the library here to try out and compile it with your settings.
Another point is that the library won't work with the LPH88.... and I
don't know anybody who modified the library for the LPH Display.
Maybay you want to do it and you're capable of doing it. It would be
nice if you would Post it here when you're finished. For a start you
must analyse the code from the existing Files for the LPH88. As far as
I know, the LPH Display is the one which is the least known display of
all three types. Christian has done a lot of work to get this
information reengineered from a working handy and I understand him that
he can't do all the work to get every kind of Display working for
everyone. I appreciate his efforts of getting the library ready for the
LS020. My coding skills aren't good enough to write a library for the
LPH or in my case the L2F50 so I hope you will be doing it :-)

greets

Fasti

von Eugene (Gast)


Lesenswert?

Hm... If I make MCU power 3.3V, LCD power - 3,3 V, connection between
LCD and MCU without resistors. It's more simply, isn't it?
Are somebody tryed this method?

von Christian F. (fasti)


Lesenswert?

When you've got the possibility to drive your MCU with 3,3V do it, it
will work fine without resistors then.

von Eugene (Gast)


Lesenswert?

You wrote: "When you've got the possibility to drive your MCU with
3,3V do it"

Hm.. Strange words.. It is not difficultly.

von Christian F. (fasti)


Lesenswert?

Hi!

Definitly not strange words: for example: In my application the MCU
can't be driven with 3,3V because the other peripherals need 5V and
only the Display needs 3V so I haven't got the possibility to drive my
MCU with 3V with a reasonable effort concerning the rest of the circuit.
For me the easiest way is to get the signals for the Display to 3V and
not converting 15 other Signals to 5V.

von Eugene (Gast)


Lesenswert?

Ok, Christian, thanks.
All my peripherals can work with 3.3V.

P.S. Have you a library for LPHxxx display?

von Ronaldo (Gast)


Lesenswert?

Eugene,
Search in the google by "HD66773".
I have the HD66773 and HD66766.

von Eugene (Gast)


Lesenswert?

I understand. I have HD66773 PDF file. But I want finished library for
avr. My  programming skill not so good to write library from HD66773
datashit.

von Eugene (Gast)


Lesenswert?

What the fuck???
I can't understand!!!

On this topic I found string: "Im Moment ist das LPH88 und LS020
supported. Das L2F50 hoffentlich bald."

On http://www.superkranz.de/christian/S65_Display/DisplayIndex.html

I found "LS02"  only...
Whereis the true?  Is the LPH88 supported by mr Kranz's library?

von Christian F. (fasti)


Lesenswert?

Hi!

The stated sentence says nothing about the library only that the two
Display types work with the code posted at www.superkranz.de
At the time of the posting Mister Kranz didn't hav a working code for
the L2F display. In the sentence beneath the stated, he says, that the
library only support the LS020 display by now. So in the same posting
you get the answer about the truth.

von Eugene (Gast)


Lesenswert?

I asked about LPH. Why all people write, that LPH is not supported, but
I found this link
http://www.mikrocontroller.net/attachment.php/252187/LPH_display4_V02.zip,
there written, that LPH is supported... There is the truth?

von SuperUser (Gast)


Lesenswert?

Hi Eugene,

the provided LPH display code can be used for:
-> initialising the display
-> writing bitmaps to the display
-> writing text with the given ASCII bitmap table to the display
-> switching off the display (not sure)

The GLCD library (drawing lines/circles/different fonts/frames etc) is
only available for the LS display. You are invited to make the port for
the LPH display.

von Eugene (Gast)


Lesenswert?

Heh..

I use Atmega16  Internal oscillator 8MHz
VCC - 3.2 V ( on both - 2,9V and 1,8 V)

0 = 0.00 V
1 = +3.1 V

connected as:

#define LCD_CS     PB2
#define LCD_RESET  PB3
#define LCD_RS     PB4
#define LCD_MOSI   PB5
#define LCD_MISO   PB6 //Not Connected
#define LCD_SCK    PB7

I use HelloWorldMega16.zip

Data wires length 9 cm.

I tried to on|off double speed bit, tried to set SPI speed to CPU/128

I have two displays LS020 - DON'T WORKS!!!

Help!

von Eugene (Gast)


Lesenswert?

Yes!!!!!


It Works!!!!

I use 16 MHz with 3,3V (!!! MCU works stable), double_bit=0, CPU/16

My mistake was - I tried to set CPU/128 as Spider84 wrote.

Now I try to use full library mr Kranz's. Heh - dont work.

I have leds on each pin of PORTB - while working - only PB6 (MOSI) is
lighting. It is wrong, isn't it?

There is the string in library : #elif defined (_AVR_ATmega16_)

But I cant find string #define _AVR_ATmega16_  in code.
Where it have to be placed?

von Eugene (Gast)


Lesenswert?

upp!

von Ronaldo (Gast)


Lesenswert?

Eugene,
You used 3V3 in 2,9V and 1,8V?
What full library was used?
thanks

von Eugene (Gast)


Lesenswert?


von Eugene (Gast)


Lesenswert?

YYYYYAAAAAHOOOOOOOO!!!!!!!!!!!!!!!!!!!!!11



ALLL WORKS!!!

Full library WORKS!!!!


Thanks to all!!!

von Ronaldo (Gast)


Lesenswert?

Eugene,
Haved you used the 3V3 in 2,9V and 1,8V or not?

von Eugene (Gast)


Lesenswert?

Yes. I used equal voltage on both supplies - 2.9 V and 1.8 V - I put 3,3
V. And I think, that it is not dangerous, because LCD controller chip
temperature not grow.

Now, I trying to make CodeVision library for this display.

von Ronaldo (Gast)


Lesenswert?

Eugene,
If you used the 3V3 to 2,8V and 1,8V, don´t used resistor, right!.
When you finished the Codevision library, please post here, because I
use the codevision and now I´ll try test the Hitachi HD66773
controller.

von SuperUser (Gast)


Lesenswert?

Für alle die des Löten's und Programmieren nicht so mächtig sind, hier
gibt es jetzt eine fertige Lösung zu kaufen:

www.display3000.com/d073x.pdf

Sieht auf dem ersten Blick ganz ordentlich aus.

Das einzige was mich stört, ist der fehlende Hinweis auf die
Quellen...

Grüße
  SU

P.S: Ich habe mit Peter Küsters und seinem Shop nichts zu tun

von Lupin (Gast)


Lesenswert?

Der typ bereichert sich an anderer Leute Nachforschungsarbeit die zur
freien Nutzung bereit gestellt wurde - finde ich nicht so gut: nix von
dem kaufen!

von Jens D. (jens) Benutzerseite


Lesenswert?

Seh ich auch so

von The Daz (Gast)


Lesenswert?

Mal ganz abgesehen vom offensichtlichen Klau, finde ich die Idee, ein
ready-to-use Modul anzubieten, gut. Dieses Gefrickel mit dem
Folienstecker ist ja noch ok fuer nen Prototyp, aber wenn jamand fuer
wenig Geld sowas als fertiges Paket anboete, waehre ich einer der
ersten Kunden. Das display3000 Teil ist aber zu teuer fuer meinen
Geschmack.

von Jens D. (jens) Benutzerseite


Lesenswert?

Er verkauft ja auch die Software..

von The Daz (Gast)


Lesenswert?

Ich kann nur fuer mich sprechen, aber wegen der software wuerde ich
dieses Modul nicht kaufen, sondern wegen der hardware. Wenn dann der
Preis stimmt, ist mir egal, ob da irgendwelche CDs beiliegen. Bei
PC-Hardware ist das genauso.

von Martin (Gast)


Lesenswert?

Weiß einer, um welches Display es sich handelt?
Auf seiner Homepage ist noch nichts von dem Angebot zu sehen.

von Mark D. (mdj_electronics)


Lesenswert?

Das wird er wahrscheinlich nicht sagen, ich hatte ihn mal gefragt wegen
das kleine Display, da wollte er nichts rausgeben ohne das ich einen
display mit µC kaufen würde.

Ein Datenblatt von Controller hatte er nicht.

@Christian:
Kannst Du mir bitte deine Postadresse schicken, damit ich dir denn
ersten Bausatz von meine Adapterplatine für das S65 Display schicken
kann?
Ich würde mich freuen wenn Du denn Bausatz testen könntest.

Grüße Mark,

von Eugene (Gast)


Lesenswert?

Oh... all it is slowly.. It is better to draw picture in memory on first
stage, and one-moment outputing picture to screen on second stage. How
to do it?

P.S. Have anybody functions to work with images?

von Klaus L. (keyel80)


Lesenswert?

Hallo Forum,

ich interessiere mich dafür, das S65 in einem Projekt für meine Uni zu
verwenden.

Die Displays von ebay kann man doch in jedem S65 einsetzen und das
Handy selbst kann nicht herausfinden, welches Display eingebaut ist
(lt. Aussage von Christian Kranz findet keine Rückkommunikation
statt).

Folglich müssten alle verbauten Controller doch initialisierungs- und
Befehlskompatibel sein, oder?

Ich hab ein Datenblatt für den HD66773R vorliegen. Ich habe das Gefühl,
dass bis jetzt noch keiner in ein Datenblatt geschaut hat und die
Entwicklung nur auf Reverse-Engineering basierte. Mit dem Datenblatt
müsste es doch möglich sein, eine spezifikationskonforme Software zu
implementieren, die für alle Displays passt.

Das Datasheet habe ich ganz einfach über Google gefunden - so einfach
kann das doch nicht sein, oder????


Gruß Klaus

von SuperUser (Gast)


Lesenswert?

> so einfach kann das doch nicht sein, oder????

Genau,

die Displays werden anhand interner Pull-Up's/Pull-Down's
identifiziert.

Du kannst dir ja mal die drei Ansteuer-Codes herunterladen und
vergleichen. Sofort sollte dir klar werden, dass die Displays
unterschiedliche Controller haben und unterschiedlich angesteuert
werden müssen.

Woher weisst du das ein HD66773R benutzt wird? Das einzige was bekannt
ist ist, dass die Befehlssequenzen eines Displays den des HD667xx
ziemlich ähnlich sind.

von Klaus L. (keyel80)


Lesenswert?

Danke SuperUser,

der Thread ist mittlerweile so umfangreich, dass man nicht mehr alles
lesen kann, sorry.
Ich habe die Typenbezeichnung des Controllers von Christian Kranz'
Seite, aber das scheint dann wohl nicht 100%ig sicher zu sein

Gruß Klaus

von Simon K. (simon) Benutzerseite


Lesenswert?

Hallo Leute,

Ich habe mir jetzt auch mal ein S65 Display geholt und wollte es
ansteuern.

Dafür habe ich mir eine kleine Platine gebaut mit einem Atmel ATMega16
und 470Ohm/470Ohm Spannungsteiler. Die Spannung am AVR beträgt etwa
5,2Volt, sodass ich auf etwa 2,6V Highlevel komme hinterm
Spannungsteiler. Die Flanken sehen auf meinem Oszi absolut in Ordnung
aus.

Zum Display: Die 5 Datenleitungen habe ich an die Spannungsteiler
angeschlossen. LED GND und GND habe ich miteinander verbunden und auf
meine gemeinsame Masse hier gelegt (Labornetzteil).
Nun das Problem:
Sobald ich auv den 1V8 pin auch 2,9V drauf gebe, zieht der Pin mal
locker 150mA und der Controller an der Oberkante des Display wird ganz
gut heiß.
Das Display ist des Typs L2F50. Dazu habe ich den Code von Christian
Kranz auf der Homepage verwendet, der ja von den ATM128-Registernamen
her zu den ATM16 Registernamen kompatibel sein sollte. Der Code
kompiliert auch ohne Fehler.

Wenn ich nun den 1V8 Pin unbeschaltet lasse, gibts manchmal nur bunte
Streifen nach dem Einschalten zusehen. Manchmal gibts aber auch einen
komplett schwarzen Hintergrundd mit einem weißen Streifen zu sehen, der
aber nach ein paar Sekunden sich zu bunten Streifen verwandelt.

Ich könnte mir vorstellen, dass das daran liegt, dass ich die 1V8 nicht
beschaltet habe. Wenn ich aber hier 1,8V mal anlege, zieht er auch
immernoch 30mA.. Das kanns ja nicht sein, oder?

Hat das L2F50 ne andere Belegung als die auf Christians toller Seite?
:-(

Ich bedanke mich für jeden Tipp!

von Simon K. (simon) Benutzerseite


Lesenswert?

Hatte keiner das Problem? Oder soll ich lieber noch auf ne Antwort
warten? ;)

von Jens (Gast)


Lesenswert?

Also 150mA ist definitiv zuviel...

soviel zieht das Display nicht mit der Hintergrundbeleuchtung

von Simon K. (simon) Benutzerseite


Lesenswert?

Allerdings, aber mich wundert sowieso, warum der Pin 1V8 dauernd genannt
wird, wenn man doch 2,9V draufhaut..

von Jens D. (jens) Benutzerseite


Lesenswert?

Es kann sein, dass dieser PIN eine Art IO Spannung darstellt k/a

von Simon K. (simon) Benutzerseite


Lesenswert?

Dann kann man ihn doch auch Vcc nennen oder sowas..

von Jens D. (jens) Benutzerseite


Lesenswert?

Koennte man.

Denke mal, Christian hat die Spannung gemessen, und dann so benannt.

Einige Controller (zB. der SAM7 laeuft mit einer Core Spannung von 1,8V
hat aber noch fuer die IOs 3,3V.

Denke bei dem Display ist das ähmlich, nur dass die IO Spannung kleiner
ist, als die VCC weil der Handy Controller evtl eine 1,9V IO Spannung
hat

von Eugene (Gast)


Lesenswert?

I want to suppose to put in this topic your projects with LCD s65.

Anybody know, how increase speed of working? Simple rectangle
0,0,132,176 library of mr Krans drawing during 0,5 seconds.
How to write to LCD memory, and then - output to LCD?

von The Daz (Gast)


Lesenswert?

Eugene,
0.5 seconds seems to be a bit long to me to fill the display. Even
without setting the double speed bit you should be able to achive about
10 fps (= 100msec). I don't know the details of the library you're
using but you should check your SPI speed setting. Depending on the
display type (I'm using an LS020) there are ways to improve the
performance of the code. I wrote my own optimized fill function in
assembler and got close to the max. speed of about 20 fps with an
ATMega16 running at 16MHz. So far nobody said the LCD is working with a
background buffer allowing you to write to that buffer and let it
display with a single command.

von The Daz (Gast)


Lesenswert?

@Eugene
I just read your posting dated 1.7.2006. You're using the AVR @ 8Mhz
and SPI setup at CLK/16, correct ? Well, that explains why you think
the LCD is so damn slow. It's your lame setup. First of all I would
try to use the AVR at its max. clock frequency (which is 16MHz), then
I'd setup the SPI to work at CLK/2. These two modifications would
speed up your setup by a factor of 16. Remember, to fill the LCD it
requires to send about 46k of data via the SPI to the LCD. Your setup
is capable of x-fering about 62.500 bytes / second. Using the suggested
setup you could achieve about 1.000.000 bytes / second. Of course this
requires short cable lengths and a good signal quality.

von san (Gast)


Lesenswert?

Hello,

is anybody had implemented the communication between x65 display and
PIC 18fxx5x?
I'm very interested in correct schematic, because currently I still
having problems connecting ones.

2Mario: can You, please, send me the Your schematic (with pic16)?

Thank You.

(sorry my English, my native languages are Ukrainian and Russian, and I
very little bit understand Deutsche and little bit better speak
English).

von Eugene (Gast)


Lesenswert?

Daz

No! It was first step settings.

Now my settings is 16 MHz SPI speed is CPU/2.
I use Mr Kranz's library function glcdFillRect (0,0,132,176).
I'm not sure, that screen fills in 0,5 seconds, but I sure, that is
not 10 fps.

Please send me you sample code to try on my project.

von Eugene (Gast)


Lesenswert?

Oh.. Sorry, Daz? you are right!
I setup SPI with CPU/2 and it work faster.

But if I want quickly change background from black to white - I see bad
visual effect of filling display from up to down screen border.

Ok... On s65 phone this display controlled by fast ARM processor. But
LCD clock is maximum 13 MHZ. How video clips are showing on this
display?

von Eugene (Gast)


Lesenswert?

2 San

Zdoroven'ki buly, hohol!!!

von Lupin (Gast)


Lesenswert?

Uhm yes...

simple, the ARM has a buffer in memory and then sends the memory to the
display with max. clock....

Or the display has enough internal memory to hold 2 screens and it is
possible to set one active screen and one as a backbuffer. But I think
that's not possible... I am not sure.

Having two screen buffers is the only way to reduce shearing. You could
also try to just update portions of the screen... most times you won't
need to redraw the screen as a whole.

Another method is to update even lines first, then update all uneven
lines in the next frame - this way you get twice the framerate
(theoretically, but at such a low FPS it will be visible to the user).

von Dirk Schlage (Gast)


Lesenswert?

@Simon Küppers:
Ich habe wohl das gleich Problem, und ich habe schon in einem anderen
Thread meinen LM317 beschuldigt an dem Display eine zu hohe Spannung
erzeugt zu haben.
Ich weiß aber momentan auch nichts.
Ich denke ich werde erstmal in ein oder zwei Wochen zwei neue Displays
von einer anderen Sorte ersteigern.
Und wenn sich in der Sache L2F50 wieder was tut hoffnungsfroh meine
beiden Displays nochmal testen, und hoffen, dass sie bei dieser Aktion
nicht durchgebrannt sind.

ciao
    Dirk

von Simon K. (simon) Benutzerseite


Lesenswert?

@Dirk Schlage: Hmmm, vielleicht hat das L2F50 ja eine andere Belegung?

von Fasti (Gast)


Lesenswert?

Hi!

Also bei mir läuft das L2F50 Problemlos auch mit einer LM317 Schaltung
für die 3V. Habe die Schaltung aus dem Datenblatt genommen und hat auf
anhieb funktioniert. Der LM 317 braucht mindestens 3mA - 10 mA (worst
case) Belastung um gut zu regeln und die Eingangsspannungsdifferenz
sollte mindestens 2V betragen. Auf Grund dieser Tatsache sollte der
Widerstand von VOut zu Adj zwischen 120 und 240 Ohm betragen und die
Spannung auf etwa 3V eingestellt werden bei 5 V Eingang. Wichtig sind
noch am Ein- und Ausgang einen Kondensator zu platzieren und dann
sollte das problemlos funktionieren. Ich habe noch bei meinem Display
eine Diode vor den 1,8V Eingang gehängt, sodaß dort eine etwas kleiner
Spannung als die 3V anliegen. Funktioniert tadellos und das Display
wird auch nicht heiß.

ciao

Fasti

von Dirk Schlage (Gast)


Lesenswert?

Hallo Fasti,
Die Diode doch einfach in Durchlassrichtung in Serie vor den Eingang,
oder?
Der Spannunsabfall sind dann diese 0,7V, oder?

Kann ich da auch eine Feldwaldundwiesenschaltdiode nehmen, wie eine
1N4148, oder eine die einfach nur so auschaut, ist eh wurst?
(mit der begründung, dass weniger als 20mA Strom fliessen werden?)

Oder muss es eine 1N4001 sein, die zur Stromgleichrichtung gedacht
ist?
Ich kenn mich mit Dioden überhaupt nicht aus (mit dem Rest eigentlich
auch nicht). Ich habe zwar hunderte (34 verschiedene) hier rumliegen,
aber vieleicht bis jetzt nur 3 verbaut.

Ich habe das Warmwerden zwar bei mir nicht beobachtet, aber wenn Logik
heutzutage warm wird, ausser es ist Leistungselektronik, heisst das
dann nicht, dass sie schon tot ist?

Dirk

von Fasti (Gast)


Lesenswert?

Hi!

Also eine stinknormale Kleinleistungsdiode sollte genügen, ich glaube
nicht, dass in den Pin mächtig große Ströme fließen. Es sollte halt
eine normale Siliziumdiode und keine Shottkydiode sein, wegen dem
Spannungsabfall.

Nicht unbedingt, wenn Logik heiß wird kann es auch einfach nur sein,
dass der Lastwiderstand einfach zu klein ist. Wenn die Ausgänge nicht
grad kurzgeschlossen werden und das ganze nicht zu lange dauert sollte
es der Chip überleben.

Fasti

von Dirk Schlage (Gast)


Lesenswert?

Hallo,
Auch mit Diode, kein Bild, kein Ton.



Der Spannungsabfall an der Diode beträgt etwa 0,4 V.
Da bräuchte ich jetzt etwas mehr Erfahrung.
Ich werde mir auf jeden Fall nochmal andere Displays besorgen.

Gibt es schon Erfahrungsberichte, von Leuten, die andere AVRs als den
Mega128 benutzen?

Dirk

von Fasti (Gast)


Lesenswert?

Jap, benutze Mega32!

von Mike (Gast)


Lesenswert?

Habs auch mit nem Mega32 am laufen, funktioniert problemlos

von Dirk Schlage (Gast)


Lesenswert?

Laufen eure mit 16MHz?
Sollte es auch 3.6864MHz, bzw. mit internem 8MHz-Oszillator gehen?
Ich glaube ich löte heute abend mal einen 16MHz-Quartz ein.


ciao
    Dirk

von AVRNIX (Gast)


Lesenswert?

Hatte mein LS020 - am ATMega 16 hängen mit 8MHz internen Takt, hat auch
funktioniert.

von Mike (Gast)


Lesenswert?

Meiner läuft mit 16MHz ja

von san (Gast)


Lesenswert?

2 Eugene:

I Vy, katsap, zdravstvuyte.

von Ronaldo (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
Thanks all, special to Christian Kranz , my LCD LPH8836 works...
I finished to codevision_avr and used the other interface to ATMEGA323L
5V.
I need to know the command lines the function below.
Sorry my english..
Regards,

      lcd_comtype(0x05);         // what this command
      lcd_comdat(0x00,0x38);     // what this command
      lcd_comtype(0x17);         // what this command
      lcd_comdat(x+CHAR_W-1, x); // what this command
      lcd_comtype(0x16);         // what this command
      lcd_comdat(y+CHAR_H-1, y); // what this command
      lcd_comtype(0x21);         // what this command
      lcd_comdat(x,y);           // what this command
      lcd_comtype(0x22);         // what this command

von Hauke Radtki (Gast)


Lesenswert?

Soo ich hab jetzt auch mein S65 Display bekommen ... erst mal
angeschlossen (hab das ganze am STK500 auf 2,9V laufen ... der
controller funktioniert auch noch bei der Spannung.
Ich hab das ding mit der grünen Platine.

Und wie soll es auch anders sein? Das ding läuft nicht ^^
Jetzt steht aber hinten drauf: LP-8836-B Denkt ihr das macht einen
Unterschied?

von Hauke Radtki (Gast)


Lesenswert?

Ach und wenn ich das Ganze Simuliere bleigt er bei
 PORTB &= ~_BV(LCD_CS);  // select display
hängen. Das ist in Zeile 221 der disp.c
Ich hab eigentlich mit C sehr wenig am Hut und versteh jetzt auch nicht
genau was die Operatoren jetzt genau machen aber laut kommentar wird das
Display ausgewählt ... an sich keine große aktion nen portpin zu
toggeln.
Testweise habe ich mal noch weitere
PORTB &= ~_BV(LCD_CS);  // select display
hintereinander an der stelle eingefügt und er bleibt immer beim letzten
davon hängen ... sehr merkwürdig.
Ich wollte das Display nur erst mal zum laufen bringen um es dann in
Assembler neu zu schreiben, wollte nur erst mal testen obs überhaupt
geht.

Achja: Ich benutze dem Mega16.

von Mike (Gast)


Lesenswert?

Was für eine Softwaer verwendest du?
Die Lib oder SimpleDisplay?
Denn die Lib läuft soweit ich das bisher gelesen hab nur bei den LCD´s
mit brauner Folie

von Hauke Radtki (Gast)


Lesenswert?

Nene ich benutz nur Simple Display (LPH_display4_V02.zip)
Ich kenn mich halt mit C sehr wenig aus aber ich hab in den Optionen
als controller den Mega16 ausgewählt und die frequenz auf 16 MHz
gestellt (ja mein Mega läuft auch bei 2,9V  und 16 MHz noch korrekt)

von Hauke Radtki (Gast)


Lesenswert?

Naja n bisschen blöd bin ich auch ... hab vergessen die Pin
konfiguration an den mega16 anzupassen ... hatte mich auch ab dem
zeitpunkt gewundert, als ich mit dem oszi gesehen habe, dass auf der RS
leitung das clock signal lag ...
Das blöde nur ist, dass es immer noch nicht geht -.-

von Hauke Radtki (Gast)


Lesenswert?

Soooo ... jetzt sollte man noch die wirklich sehr sehr schwierig zu
erlernende Fähigkeit besitzen von 0 bis 7 zu zählen ...
Wenn man alle Kabel da ansteckt wo sie hingehören funktioniert das
ganze natürlich auch ... :>

von Iller (Gast)


Lesenswert?

Ich versuche ein Bild anzeigen zu lassen aber irgendwie will es nicht
wie ich will :-(
Hab das Bild in RAW hab es dann mit WinBin umgewandelt
Soweit so gut jetzt sag ich
r=bild[x];
g=bild[x++];
b=bild[x++];
x++;
glcdSetPixel(i,j,RGB(r,g,b));

das ganze ist in zwei schleifen um i und j hochzuzählen und wieder auf
0
zurückzusetzten wenn das ende der zeile erreicht ist

Das Bild das dabei rauskommt ist nur wirres Bildrauschen :-(
Die gewandelte grafik hat 132x176px also das würde schon passen

Hoffe mir kann jemand helfen

von Lupin (Gast)


Lesenswert?

benutzt du einen AVR? Ist das bild im ROM? benutzt du PROGMEM? Benutzt
du auch die entsprechende read funktion? Ist das Bild wirklich mit 24
Bit Farbtiefe gespeichert? Oder sogar 32 bit? Dann müsstest du ein byte
weg lassen.

von AVRNIX (Gast)


Lesenswert?

Was ist das für ein Type?
http://cgi.ebay.de/LCD-DISPLAY-SIEMENS-S65-M65-CX65-SK65-100-ORIGINAL_W0QQitemZ290014937613QQihZ019QQcategoryZ40579QQrdZ1QQcmdZViewItem

Hat es einer schon ausprobiert mit welchen Quellen das läuft?

von Mike (Gast)


Lesenswert?

Das ist das L2F50xxx das läuft mit dem Simple Display Source also nicht
die Lib Hier ist alles beschrieben:
http://www.superkranz.de/christian/S65_Display/DisplaySoftware.html

von Simon K. (simon) Benutzerseite


Lesenswert?

Bin mal gespannt, ob du es zum laufen bringst. Mein L2F50 hat irgndwo
einen kurzen drin.

von Hauke Radtki (Gast)


Lesenswert?

Ich hab das gleiche bestellt war aber ein LPH display ... aber meins
läuft xD ich werde dafür jetzt erst mal ne assembler ansteuerung
basteln weil ich kein c kann ^^

von Hauke Radtki (Gast)


Lesenswert?

Ich hab mal n bisschen rumgetestet ... je höher die Spannung umso
schlechter das Bild (besonders im dunkleren bereich gibt es keine
Abstufung mehr). Bei mir hat das Display bei 2,8V das beste bild.

von wolf4144 (Gast)


Lesenswert?

Hallo

wo kauft ihr eure IRU1205CLTR.
Habe sie bei RS und Farnell gefunden. Farnell +20 pro Auftrag ;-((
RS brauche ich sonst nichts.

Gruß

von wolf4144 (Gast)


Lesenswert?

Hallo

OK. Ich habe sie auch noch beim Großen C gefunden.

Gruß

von Martin (Gast)


Lesenswert?

Hi,

ich habe auch L2F50 zuhause liegen, und mir den passenden Softwarestand
von:

http://www.superkranz.de/christian/S65_Display/DisplaySoftware.html

herunter geladen.

Leider werde ich keinen atmel controller verwenden können. Ich habe mir
mal die Initsequenz durchgesehen, und ihr wisst ja wie das ist,
quellcode von anderen ist immer ein hartes brot.

ich suche timing diagramme der displaybedienung und
registerbeschreibungen... hat da jemand etwas ausgearbeitet, sodas man
es einigermaßen gut portieren kann!?

danke euch,
Maddin

von Martin (Gast)


Lesenswert?

...ich habe natürlich auch das 13 seitige pdf hier, aber so 100%ig hilft
mir das bei der implementierung auh nicht weiter.

wie sind z.B die basiseinstellungen der einzelnen Leitungen!?

so wie ich das erkennen konnte wir der spi bereich des controllers
genutzt um ich schäte mal, ein byte zu übermitteln,oder!?

g.h. es muss nirgens ein takt per software erzeugt werden oder so!?

ich brauche nur ein wenig überganghilfe, von hard zur software, so das
ich vielleicht einen teil der routinen usw.. dann doch nutzen kann..

wäre klasse wenns was gibt,

maddin

von Martin (Gast)


Lesenswert?

die funktionen

dat
cmd
write

machen für mich schon sinn!

bei dat frage ich mich zwar warum da noch eine 0x00 hinterher gesendet
wird, obwohl diese funktion scheinbar dazu dient 8bits zu senden, aber
dat16 macht sinn.

in write sieht es so aus als würde etwas über die spi schnittstelle
gesendet, und anschließend auf absendung gewartet....

PORTB |= _BV(LCD_CS);

diese art einen portpin zu setzten oder zu toggeln kenne ich zwar noch
nicht, aber gut, wenn es denn das ist, soll es mir recht sein.
ich hätte zumindest hinter dem LCD_CS ein hex define erwartet, aber
ichdenke das versteckt sich dann wiederum hinter PB6 - macht sinn...

trotzdem wäre ein wenig unterstützung in dem bereich wirklich gut:-)

maddin

von Simon K. (simon) Benutzerseite


Lesenswert?

>>PORTB |= _BV(LCD_CS);

diese art einen portpin zu setzten oder zu toggeln kenne ich zwar noch
nicht, aber gut, wenn es denn das ist, soll es mir recht sein.
ich hätte zumindest hinter dem LCD_CS ein hex define erwartet, aber
ichdenke das versteckt sich dann wiederum hinter PB6 - macht sinn...


Nunja, diese Methode soll eigentlich auch nicht mehr verwendet werden,
habe ich mal gelesen.

Mach es lieber mit einer Schiebeoperation (PORTB |= (1<<LCD_CS);)

Und ja, LCD_CS ist ein define, dass auf PB6 (Oder was auch immer
definiert ist). PB6 wiederum ist auch ein define dass in der
controllerspezifischen IO-Definitionsdatei festgelegt ist.

von Martin (Gast)


Lesenswert?

@Simon Küppers, danke, soweit war ich jetzt auch:-)

warum sollte ich da schieben!? oder ist das jetzt ein scherz!?

wird denn jetzt der eine art spi hardware zur emulation des clk und
data signals genutzt!? kenne die atmels nicht!

gibt es timing und init sequenzen auch in nicht atmel spezifischen
c-quellcode!?

maddin

von Martin (Gast)


Lesenswert?

...welcher controller ist auf dem L2F50xxx display, habe ja alle dbs
hier...

oder verhalte ich mich jetzt nicht forum konform!? ich will doch nur
versuchen möglichst schnell dieses display an den controller zu
bringen...

würde mich über fachliche unterstützung sehr freuen,
maddin

von Martin (Gast)


Lesenswert?

ohh bei dem port pin:

wofür steht denn das _BV?? ist das eine Funktion!?

maddin

von Simon K. (simon) Benutzerseite


Lesenswert?

_BV ist ein Makro.

Es ist definiert als
1
#define _BV(x) (1<<x)

Das mit dem Schieben ist hier schon völlig korrekt. Denn hinter der
Angabe "LCD_CS" verbirgt sich (nach "vielen" verschachtelten
defines) eine 6 (oder jenachdem).

Sprich, der Ausdruck wird zu folgenden Ausdruck aufgelöst.

PORTB |= (1<<6);

Wörtlich gesprochen macht der Compiler hier folgendes:

Schiebe eine dezimale 1 um 6 stellen nach links. Dieser Wert soll PORTB
zugewiesen werden.

Nun ist der Compiler schon schlau und sieht, dass er das schon während
der Compilezeit ausrechnen kann.

Aus (1<<6) würde also 0b01000000 sprich 64 dezimal werden.

von Martin (Gast)


Lesenswert?

hei die witzga....au man, bei c sind so viele schweinerein möglich...

aber trotzdem hilft mir das noch nicht viel weiter... vielleicht gibt
es ja noch antworten auf die fragen meines letzten posts :-)

maddin

ps.:

ich löse das immer folglich:

#define PORTX      LCD_PORT

#define PORTX_XX   LCD_RS
#define LCD_RS=1   LCD_SET_RS
#define LCD_RS=0   LCD_RES_RS

#define PORTX_XY   LCD_RW
#define LCD_RW=1   LCD_SET_RW
#define LCD_RW=0   LCD_RES_RW

usw...

von SuperUser (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Martin,

im Anhang ein paar Bilder wie die Datenübertragung zum Display
aussieht:

Ch0: RS
Ch1: CS
Ch2: Clock (13MHz)
Ch3: Data

> ...welcher controller ist auf dem L2F50xxx display, habe ja alle dbs
> hier...

Leider ist der Controller nicht bekannt. Wenn du alle Datenblätter
hast, vergleich doch mal bei passenden Controllern (132x176, so viele
dürfte es nicht geben) die Befehlssequenzen. An dem Datenblatt bin ich
sehr interessiert. (cnkz - at - yahoo.com)

von Martin (Gast)


Lesenswert?

@ SuperUser

das ist schon so wie ich mir das vorgestellt habe. mit den
informationen aus diesem thread und den datenblättern und diesen bilder
fehlen nicht mehr viele infos um es portierbar zu machen...

also deinen bildern entnehme ich folgendes:

-clock ist standardmäßig High
-die daten werden bei steigender clock flanke übernommen
-Cs = low -> chip is selected..!

du hast leider etwas vergessen, das sind jetzt 53bilder, aber auf
welchem ist was dargestellt.beinhalten sie die gesamte initsequenz in
folge, oder sind es einfach mitschnitte aus neugier!?

mein ziel ist als allererstes die write timing diagramme für command
data und raw data (RS) zu erstellen, anschließend eine beschreibung wie
die init seqenz auszusehen hat, wie in einem datenblatt der bekannten
lcds..

Maddin

von Martin (Gast)


Lesenswert?

..ach ja:

es sind eine ganze menge 16bit anweisungen in allen unterlagen hier zu
finden, auch bei www.superkranz.de usw...

es ist nicht leicht da durch zu steigen - ich meine es ist klar, das
solls auch nicht sein, aber trotzdem... vor allem, warum immer 16
bit???

folgend mal die beispiele die hier überall zu finden sind, es stehen
befehle untereinander und nebeneinander !?...und der sinn!?

Sequence 1: (time 0ms)
0xFDFD, 0xFDFD

Sequence 2: (time 68ms after start)
0xEF00, 0xEE04, 0x1B04, 0xFEFE, 0xFEFE
0xEF90, 0x4A04, 0x7F3F, 0xEE04, 0x4306

Sequence 3: (time 75ms after start)
0xEF90, 0x0983, 0x0800, 0x0BAF, 0x0A00, 0x0500, 0x0600, 0x0700
0xEF00
0xEE0C
0xEF90, 0x0080,
0xEFB0, 0x4902
0xEF00
0x7F01, 0xE181

Sequence 4: (time 182ms after start)
0xE202

Sequence 5: (time 297ms after start)
0xE276

Sequence 6: (time 401ms after start)
0xE183

Sequence 7: (time 460ms after start)
0x8001


maddin

von SuperUser (Gast)


Lesenswert?

Bitte nicht die verschiedenen Display's durcheinander werfen. Die
Init-Sequence die du gerade gepostet hast, ist nicht vom L2F50..
sondern vom Sharp Display.

Wenn du dir die L2F0 Init-Sequence ansiehst, da steht dann:

  static const uint8_t disctl[9] PROGMEM = {0x4C, 0x01, 0x53, 0x00,
0x02, 0xB4, 0xB0, 0x02, 0x00};

Das ist ein Daten-Array in C, gespeichert im Flash des AVR.

Während des init wird dann die Sequence in einer for-schleife an das
Display geschickt:

  lcd_cmd(DISCTL);
  for (i=0; i<9; i++)
  {
    lcd_dat0(pgm_read_byte(&disctl[i]));
  }

das pgm_read_byte heisst einfach lese aus dem Flash Speicher, die
lcd_dat0 funktion schickt ein Byte zum display und hängt ein 0-Byte an.
An die 16-bit musst du dich einfach gewöhnen, 8-bit controller gibt es
in Mobiltelefonen nun mal nicht.


---------

Die genaue Bedeutung der Bilder weiss ich gerade nicht. Ich glaube es
ist die erste Init-Sequence. Mir ging es darum, dass du die Polaritäten
bzw. Flankenzugehörigkeit siehst.

von Martin (Gast)


Lesenswert?

Hallo,

dank sir, ich habe nochmal ein wenig auf der site www.superkranz.de
gestöbert und die sequenzen zufällig gefunden, allerdings sind es nur
49 mit zugehöriger txt datei in der sie erklärt sind.. :-)schaue sie
mir mal an...

13Mhz ist für einen seriellen bus ja eine ganz ordentliche rate, und
wenn ichs recht verstanden habe, dann muss das gesamte diplay immer neu
beschrieben werden, es lässt sich also kein bereich auswählen, oder 2
geziehlte bytes schreiben.

16bit zu akzeptieren ist kein problem, der controller mit dem ich
arbeite ist auch ein 16 bitter.

deinen c quellcode ist leicht nach zu vollziehen, dennoch sieht diese
init sequenz sehr kurz aus, im gegensatz zu den anderen...

hinter dem label disctrl verbirgt sich ja sicher auch wieder ein
spezieller wert...

das ganze ist sicher eine never ending story, nicht um sonst gibts
bibliotheken, aber trotzdem muss sich das ganze doch allegemein für die
3 displays in form einer art datenblatt eines lcds zusammen fassen
lassen...

und ich verstehe immer noch nicht die struktur der 16bit sequenzen,
warum sind manche nebeneinander angebeben und andere wiederum
untereinandenr??

maddin

von Lupin (Gast)


Lesenswert?

> 13Mhz ist für einen seriellen bus ja eine ganz ordentliche rate

Reicht gerade so aus um den Bildschirminhalt mit einer einigermaßen
hohen Framerate zu übertragen...

Du kannst auch einzelne Bereiche zeichnen... musst nur überlegen ob es
sich für 2 pixel lohnt überhaupt die Command-sequence zu übertragen

von Hauke Radtki (Gast)


Lesenswert?

Das hat nur was damit zu tun das (wahrscheinlich) die Hintereinander
geschriebenen Sequenzen nur zusammen einen Sinn ergeben (befehl und
daten z.b.)
Und die Anderen Befehle die einzeln stehen keine weiteren daten oder
weitere befehle benötigen.

Das ganze ist also nur der "Übersicht" halber. Du kannst die befehle
jeder Sequenz direkt hintereinander senden.

von SuperUser (Gast)


Lesenswert?

Martin,

dein erster Post:
> ich habe auch L2F50 zuhause liegen, und mir den passenden
> Softwarestand ... runtergeladen

Der C-Code ist ein Ausschnitt aus der L2F0 init die du dir
runtergeladen hast. Wenn du die verstehst - und mit den Timing-Bildern,
sollte es doch jetzt nicht mehr so schwer sein, dass auf einem anderen
Controller zum laufen zu kriegen. Du musst doch einfach nur die Daten
rüberschicken. Wie man Teile des Display-Speichers beschreibt ist in
der Textausgabe leicht zu sehen. Der Font wird dort als bitmap ins
Display-RAM geschrieben.

Wie sieht es mit dem Datenblatt aus? Hast du ein passendes?

von Hauke Radtki (Gast)


Lesenswert?

Ich wollte mal fragen ob dir das gleiche wie ich beobachtet:
Je höher die Spannung desdo schlechter sind die farben im dunklen
berech. D.h. bei 3.3V sind bei einem farbverlauf die untersten ich sag
mal 5 abstufungen gleich (und auch nicht ganz schwarz sondern bei jeder
Farbe etwas anders)
Erst bei 2.8V ist das Bild meiner meinung nach erst richtig (es wird
erst am unteren ende des farbverlaufs schwarz)

Damit ihr wisst was ich meine hier noch ein Bild vom display (an 2,8V)
http://lcdhype.de/uploads/post-8-11546958430.jpg

Ich mach auch noch mal eins bei 3.3V damit man den unterschied besser
sehen kann.

von SuperUser (Gast)


Lesenswert?

Hauke, das sieht aber auch bei 2.8V nicht so gut aus...

Dem Bild nach zu urteilen ist das ein L2F0 oder? (Wegen Anschluss in
der Mitte) Dort habe ich vor ein paar Wochen noch einen Fehler in der
Init-Sequenz beseitigt.

Hast du den neusten Code von

http://www.superkranz.de/christian/S65_Display/DisplaySoftware.html

?

Bzgl. Spannung, optimale Spannung ist meiner Meinung nach 2.9V.

von Hauke Radtki (Gast)


Lesenswert?

Auf dem Foto ist das etwas schlecht dargestellt ... wenn man draufguckt
ist es eine richtige gute abstufung.
Und: nein es ist ein LP(H) Display

von Simon K. (simon) Benutzerseite


Lesenswert?

Ich frag emich, warum bei jeder Farbe oben nen ganz dicker Balken weiß
ist.... Idealerweise sollte der doch nciht so dick sein, oder?

von Hauke Radtki (Gast)


Lesenswert?

Ähm ja das liegt daran, dass der farbverlauf nicht übers ganze display
gestreckt ist ... (weil ich zu faul war das so zu programmieren)
sondern schon ein ganzes stück vorher aufhört. Normalerweise würde der
Farbverlauf dann wieder von neuem beginnen nur fand ich dass das blöd
aussah und hab einfach den überlauf verhindert.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Hat jemand schon damit ein Projekt verwirklicht?
Was macht es und wie siehts den aus und wie wurde das gebaut( Schaltung
)? Programmiert?

von noXe (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
habe folgendes Problem:
Versuche gerade diesen LCD an einen mega8 anzuschließen. Nach langen
hin und her habe ich leichte fortschritte gemacht. Wie aussieht habe
ich den LS020 Display. Die ansteuerung klappt auch mehr oder weniger.
Hintergrund färbt sich rot, aber es ist am anfang keine Schrift
erschienen. Dann habe ich die Zeile in simple.c einfach so verändert

char txt[]= {'H','e','l','l','o',0};

dann kamen auch Zeichen, nur komische :) siehe anhang.

Woran kann das liegen. Bitte um weitere hilfe.

von The Daz (Gast)


Lesenswert?

Ich würde sagen in Zeile 25 steckt ein Fehler.

von noXe (Gast)


Lesenswert?

:) also ich konnte immer noch nicht eins finden

von Simon K. (simon) Benutzerseite


Lesenswert?

Du sollst deinen Code anhängen..

von noXe (Gast)


Lesenswert?

also ich verwende eigentlich den original code vom Christian Kranz,
kann man sich unter:
http://www.superkranz.de/christian/S65_Display/data/simple_display3.zip
runter laden. Hab dann nur die ports für den mega8 angepasst, in lcd.h.

also folgender massen:

LCD_CS     PB2
LCD_RESET  PB1
LCD_RS     PB0
LCD_MOSI   PB3
LCD_MISO   PB4
LCD_SCK    PB5

Danach habe ich in simple.c die original Zeile
char txt[]= {'H','e','l','l','o','
','W','o','r','l','d',0};

so verändert:

char txt[]= {'H','e','l','l','o',0};

somit habe ich wenigstens schon erstmal erste zeichen auf den display
gekriegt. mehr hab ich nicht verändert....

von The Daz (Gast)


Lesenswert?

Verschieb den Zeichensatz mal ins Flash (PROGMEM). Hatte aehnliche
Probleme mit nem Mega16.

von SuperUser (Gast)


Lesenswert?

noXe,

der ATmega 8 hat zu wenig RAM für die ASCII Tabelle. Entweder ins Flash
damit, oder nur einige wenige Zeichen nutzen und den Rest löschen!

von noXe (Gast)


Lesenswert?

ich befürchte das Flash reich auch nicht aus. Wie kann ich den die ASCII
Tabelle deuten? Also welche hex-code, welches zeichen darstellt und wie
ist sie überhaupt aufgebaut....

von SuperUser (Gast)


Lesenswert?

Die ASCII Tabelle steht im file disp.c, und passt sicherlich ins Flash
des Atmega8.

uint8_t ascii_tab[96][14]={
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00}, // space (32)

Das Zeichenformat ist 8x14, d.h. ein Zeichen ist 14-pixel hoch und
8-pixel breit. Die Tabelle beginnt mit Space (ASCII-Wert 32)

Die put_char funktion kopiert jetzt einfach die Daten aus der Matrix
and die entsprechende Stelle im Display-RAM. Dort wo ein Pixel gesetzt
werden muss, wird das Pixel auf textcolor gesetzt, dort wo es nicht
gesetzt werden soll wird es auf backcolor gesetzt.

Vom ASCII Wert der ausgegeben werden soll, wird 32 subtrahiert um an
den Tabellenindex zu kommen...

  for (h=0; h<CHAR_H; h++) // every column of the character

  ch=ascii_tab[ c-32 ][h];


-------------------------
So kriegt man sie ins Flash:
#include <avr/pgmspace.h>  // AVR specific functions to access the
program memory


// ascii table, starting with character blank (32)
// size is 8x14
const uint8_t ascii_tab[96][14] PROGMEM = {
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00}, // space (32)

Und so liest man sie dann aus:
   ch=pgm_read_byte(&ascii_tab[ c-32 ][h]);

von noXe (Gast)


Lesenswert?

@Super User:

danke, habe es genau nach deiner Anweißung gemacht. Funktioniert alles
wunderbar. heul

von quba54 (Gast)


Lesenswert?

Did anybody use display LQ020...? It looks like LS020... but I don't
know if it will work with LS020 software.

von Hauke Radtki (Gast)


Lesenswert?

My display is a LP-8836. It works with the LPH dispay code. So just try
the LS020 code.

von SuperUser (Gast)


Lesenswert?

Can you send pictures from the displays (LP-8836, LQ020)? Just for
interest...

von michael (Gast)


Lesenswert?

Hallo zusammen,
habe ein L2F50 an einem Mega32 (16MHz) angeschlossen. Der AVR wird mit
5V versorgt, das Display über 3,3V. Die Pegelwandlung (da erst zu
Testzwecken) über Spannungsteiler.
Jetzt habe ich das Problem, dass das Display zwar was anzeigt, jedoch
die Schrift nur sehr schwach zu sehen ist. Wenn man senkrecht aufs
Display schaut, erkennt man gar nichts.
Habt ihr ne Vermutung, woran das liegen könnte?

MfG, Michael

P.S.: Ich verwende die Testsoftware von Christian.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Versuche es mal mit 2,8-2,9 V an den Eingängen zum Display , vielleicht
ist die Spannung zu hoch.

von michael (Gast)


Lesenswert?

Wenn du die Datenleitungen meinst, die sind bei 2,9V. Aber es wurde doch
weiter oben irgentwo geschrieben, dass die auch zuverlässig unter 3,3V
laufen, oder?

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Also wenn du die gleichen Spannungsteiler wie Schaltplan hast , sollte
es klappen. Ich habe es nur mit dem LS020.... ausprobiert.

von michael (Gast)


Lesenswert?

Nicht exakt die gleichen. Die Werte hatte ich nicht da. Habe 2,3k und
3,3k genommen, sollte aber doch auch gehen, oder?

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Da du ja Zeichen auf dein Display hast, liegt die vermudung nahe das
vielleicht die Widerstände ein zu geringer Strom fliessen tut.

von SuperUser (Gast)


Lesenswert?

Hallo Michael,

mess doch mal die Display Versorgungsspannung. Ich vermute das die
höher als 3.3V ist - weil irgendwo doch ein Fehler in der Verdrahtung
mit den Spannungsteilern.

Ein sehr schwacher Kontrast ist ein typ. Zeichen für zu hohe
Versorgungsspannung.

von michael (Gast)


Lesenswert?

Hallo SuperUser,
obwohl ich zur Spannungsversorgung nen Festspannungsregler verwende,
habe ich nochmal nachgemessen. Die Versorgungsspannung lieg bei exakt
3,3V. Die Datenleitungen haben 2,9V bei High-Pegel.

von Hauke Radtki (Gast)


Lesenswert?

Ich hab ein Display am STK500 laufen. So konnte ich natürlich bequem die
 ganzen Spannungseinstellungen machen und bin zu dem schluss gekommen,
dass das display bei 3.3V zwar läuft aber das Bild schlecht wird. D.h.
schlechte Kontraste und Farben. Wenn du die möglichkeit hast: probier
es mit 2.8V da hatte ich das beste Erbegnis. Das Display läuft aber
auch bis runter auf 2,1V, danach wollte mein Mega16 nich mehr. Zwar ist
hier der Kontrast auch wieder schlecht aber es läuft.

von michael (Gast)


Lesenswert?

Ok, danke für die Antworten.
Werde gleich mal einen einstellbaren Spannungsregeler einlöten und das
versuchen.

von michael (Gast)


Lesenswert?

So, ich versorge das Display jetzt mit 2,9V. Doch es gab den den
gleichen Effekt. Dann ist mir aufgefallen, dass ich vergessen hatte,
den Pufferelko anzulöten. Nachdem ich dies getan habe, zeigt das
Display erst alles (ich würd sagen) normal an, dimmt dann aber quasi
innerhalb einer bis 1,5 Sekunden runter, bis man nichts mehr sehen
kann. Wie ist das zu erklären. Die Spannung am Regler bricht auf jeden
Fall nicht zusammen.
Habt ihr ne Idee?

von SuperUser (Gast)


Lesenswert?

Kann es sein, dass du das Display resetest? Das das Bild langsam
wegdimmt ist der typische Effekt wenn man es ausschaltet...

von michael (Gast)


Lesenswert?

Ich hoffe nicht, aber ich habe nur ein Multimeter, das zu träge ist um
kurze Impulse zu messen.
Ein Phänomen, das damit wahrscheinlich zu tun hat, was ich mir aber im
Moment nicht erklären kann, ist, dass das Diplay nur bei einem von fünf
Versuchen was anzeigt, wenn ich Spannung an die Schaltung anlege. Dann
zeigt es einige Sekunden was an, wobei die Schriftfarbe zwischen Blau
und Schwarz wechselt. Dann dimmt es innerhalb von ca. 2 Sekunden runter
und ist dann abrupt weg.

von MC-Bernd (Gast)


Lesenswert?

abo

von Bernd X. (mc-bernd)


Lesenswert?

abo

Jetzt aber...

von Matthias Dehof (Gast)


Lesenswert?

Hallo auch,

erst mal "vielen Dank" an Christian für seine Arbeit.

Ich habe mir ein S65-Display besorgt (habe eines mit dem EPSON L2F50
Controller erwischt) und habe den L2F50_display4_V02 Code auf meinen
Arm7 (UNC20) portiert. Mein Code ist soweit identisch, ausser dass ich
nach dem fill_screen() nur "hello world" anzeige.

Ich beobachte ein seltsames Verhalten: das Display initialisiert
korrekt, der Hintergrund wechselt auf grün und der Text (Schwarze
Schrift vor weissem Hintergrund) wird angezeigt, dann nach geschätzten
200-400 ms scheint der grüner Hintergrund von oben nach unten über den
Text zu laufen und kurz darauf wird wieder alles weiß

Nachdem der Text kurz angezeigt wird, scheine ich ja das meiste richtig
zu machen. Ich habe schon alles mögliche probiert, aber mir gehen die
Ideen aus. Hat noch jemand einen Vorschlag ?

Anmerkung: der UNC20 hat keinen SPI, ich takte jeweils 8 Datenbits mit
einem Clock ins Display - und, wie gesagt, nachdem der Text kurz
erscheint, scheint das ja auch zu passen.

Wie ist das: muss man das Display ständig refreshen, oder sollte nicht
einfach der letzte Text stehen bleiben ?

Nochwas, wenn ich mein Programm starte und "TEST" anzeige, dann kommt
auch "TEST" im Display, wenn ich nun den Text auf "HALLO" ändere,
kommt beim nächsten Start nochmal "TEST" und erst beim wiederum
nächsten Start kommt "HALLO"

danke für eure Hilfe,
Matthias

von Matthias Dehof (Gast)


Lesenswert?

...habs gefunden: ich hatte eine Diode verwendet um die 2.9V
zusammenzubasteln, damit brach offenbar die Versorgungsspannung immer
wieder kurz ein - seit ich alle Signale einfach komplett aus 3.3V
versorge läuft das Display.

Dann hatte ich noch am Ende meiner Routine ein "Select Display CS=1"
- damit kann man auch prima Unsinn machen. CS=0 und das Bild ist stabil
und bleibt stehen,

Matthias

von Bernd X. (mc-bernd)


Angehängte Dateien:

Lesenswert?

Hallo,
da ich die Programmiersprache C  nicht beherrsche, habe ich mit Hilfe
der Beschreibung von Christian Kranz ein Bascom- Programm für das
LS020XXX  geschrieben und damit das Display zum laufen gebracht. (Siehe
Bild)
Hier ein paar Punkte die mir beim Arbeiten aufgefallen sind:
1. Init: die 7 ms nach Init2 dürfen auch länger sein !
   (100 ms funktionieren bei mir auch !!!)
2 .Zwischen Init3 und Init4 darf ich kein delay einfügen !?
3. Locate(X,Y)  =  0x6YS, 0x7XS
4. PMEMWRX: (X-direction)  =  X mit Y vertauscht!
                            Arbeitet bei mir so richtig;
                            0xEF90,  0x0504,  0x08Y1,  0x09Y2,
                            0x0AX1,  0x0BX2

5. Pin 1V8 hat bei mir den Anschein als ob es NC ist !!!  (not
connected) (bin aber nicht absolut sicher !) Kann auch keinen Strom
messen.

Seltsames:
- Wenn ich eine blaue Linie oder Box zeichne werden die anderen
  Farben merklich blasser, nachdem das Zeichnen beendet ist.
  Zeichne ich danach z.B.  eine schwarze Linie  sind die Farben
  wieder kräftiger.

- Der Kontrast ist bei senkrechter Betrachtung schlechter als wenn
  ich etwas von Rechts auf das Display schaue !
  (Direction: Lange Seite Unten)
  Ist dies bei euren Displays auch so ?

Frage:
- Ich habe gelesen, dass das L2F50.... bei einigen auch
  funktioniert.
  Kann aber keine Beschreibung der Steuerparameter finden.
  Könnte jemand die bekannten Steuer Befehle für das L2F50...
  senden ?

von SuperUser (Gast)


Lesenswert?

Hallo Bernd,

sieht ja sehr gut aus.

* Das mit den nicht-konstanten Farben habe ich nicht beobachtet. Bei
mir sind die Farben konstant.

* Beim LS020 ist der 1.8V tatsächlich not connected

* Wegen X/Y Vertauschung: Beziehst du dich auf das Bild auf der
Web-Seite?

* Für das L2F50 kannst du dir die Init-Sequenzen ebenfalls von
superkranz runterladen (in C). Allerdings gibt es keine so detailierte
Beschreibung wie für das LS020...

von Bernd X. (mc-bernd)


Lesenswert?

Hallo SuperUser,

* Wegen X/Y Vertauschung: Beziehst du dich auf das Bild auf der
Web-Seite? ...
-> Ja Direction Lange Seite unten. (0x0504)

* Für das L2F50 kannst du dir die Init-Sequenzen ebenfalls von
superkranz runterladen (in C). Allerdings gibt es keine so detailierte
Beschreibung wie für das LS020...
-> Problem ist nur, dass  mir C sehr suspect ist!!!
(Programiere in Turbo-Pascal, Nili-Pascal, Delphi, etwas Assembler und
Basic, aber C liegt mir absolut nicht!)
Bräuchte die Befehle und das Init hald extrahiert!
Für jemand der C versteht sollte dies doch mit wenig Aufwand möglich
sein...

Gruß Bernd

von Mike Bird (Gast)


Lesenswert?

Hallo Bernd,

magst Du eventuell Deinen Bascom Code auch mal mit anhaengen?
Es waere schon sehr interessant, wie Du dies geloest hast.
Und vor allem, nutzt Du die SPI Unterstuetzung vom Bascom selbst?

Gruss Mike

von Bernd X. (mc-bernd)


Lesenswert?

@Mike

Hallo Mike,
nein SPI bei Bascom hab ich mal kurz versucht funktionierte bei mir
aber nicht.
Ich verwende den ShiftOut Befehl.

Hier ein Beispiel:
*********************************************************
Rs Alias PortD.3          'Register Select (Command/Data)
Cs Alias PortD.2
Sclk Alias PortD.1
Sdata Alias PortD.0
LCDReset Alias PortD.5

Const Kommando = 1
Const Parameter = 0

Dim Ausgabe As Word

'---------------------------------------------------
'--- LCD_Send = Send Data to Display        --------
'---------------------------------------------------
LCD_Send:
  CS = 0
  Shiftout Sdata , Sclk , Ausgabe , 0                       'Msbl
  CS = 1
Return
'--------------------------------------------------------

'--------------------------------------------------------
'-- PSet = Set Pixel(X,Y,Color)                  --------
'--------------------------------------------------------
Sub PSet(byval Lx1 As Byte , Ly1 As Byte , Color As Word)
   Rs = Kommando
   '------- Locate ------
   Ausgabe = &H0600 + LY1                                   'Y
   Gosub Lcd_send
   Ausgabe = &H0700 + LX1                                   'X
   Gosub Lcd_send
   '---------------------
   Rs = Parameter
   CS = 0
   Shiftout Sdata , Sclk , Color , 0                        'Msbl
   CS = 1
End Sub
'-----------------------------------------------------------

'ENDE ENDE ENDE
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


Nun noch eine Frage an alle die C- können.....
Ich versuche gerade ASM-Routinen in Bascom mit einzubinden und dann
noch mal den SPI-Anschluß zu testen.
Probleme machen mir aber die C-Teile im ASM Code !!!

    ; setup serial data interface
    ; select clock phase positive going in middle of data
    ; master mode
    ; enable SPI
    ; speed is CPUclock/2

    ldi     r24,(1<<MSTR) | (1<<SPE); | (1<<SPR0);  ; Master Mode,

*** Welcher Wert wird hier in R24 geladen ?


    Enable SPI, fCPU/16 clock

*** Wie wird das in ASM umgesetzt ?

Vielleicht kann das ja jemand beantworten......

Gruß
Bernd

von Kay (Gast)


Lesenswert?

Hallo Bernd,

ich habe auch schon versucht, dieses Display mit Bascom anzusteuern.
hat aber leider nie geklappt. dein beispiel funktioniert. Haste vor,
das ganze noch zu erweitern, also z.B. Text darstellen, bilder anzeigen
usw. ?

mfg Kay

von Kay (Gast)


Lesenswert?

hi ich nochmal,

also nicht dein Beispiel ( Bernd ) funktioniert, sondern das von
MartinK. Wäre es möglich, mal deinen funktionsfähigen Beispielcode per
email zu erhalten ?

mfg Kay

von Daniel L. (bucho)


Lesenswert?

Hallo!

Im PDF und hier im Thread steht, daß als Spannungsregler ein
IRU1205CLTR in Frage kommt. Hat ihr einen justierbaren genommen und auf
2,9V eingestellt, oder die Fetsspannungsversion mit 2,8V gewählt?

Gruß
         Daniel

von MC-Bernd (Gast)


Lesenswert?

Hallo,

ich habe einen LM317 L genommen.
Mit R2= 330 Ohm und R1= 240 Ohm kommt man auf 2,9 Volt.

Gruß
Bernd

von André K. (andre-)


Angehängte Dateien:

Lesenswert?

Die Shiftout Funktion von Bascom ist fuer dieses Display leider nicht
wirklich geeignet. Man hat mit einem AVR so schon zu knabbern, eine
brauchbare Geschwindigkeit hinzubekommen und macht sich mit dieser
Funktion alles kaputt (am besten einfach mal den Disassemler
drueberjagen, dann sieht man, was ich meine).


Ich hatte eine Erstatzfunktion geschrieben, die nur das noetigste
enthielt, aber die scheint mir beim Umstieg auf HW-SPI leider verloren
gegangen zu sein. Also hier noch einige Schnipsel fuer Bascom bei
Benutzung des HW-SPI und eines LS020 Controllers (mehr moechte ich
ungern veroeffentlichen).

Es handelt sich um Schnipsel, nicht um kompletten Code. Wer etwas damit
anzufangen weiss, sollte aber dennoch klarkommen ;).

Die 3 Init-Sequenzen wurden in eine Einzige verpackt, die Aufteilung
erfolgt durch das Programm selbst (platzsparender).

Besten Dank uebrigens noch an alle, die die Benutzung dieser Displays
ueberhaupt ermoeglicht haben :).

Beste Gruesse,
André

von André K. (andre-)


Lesenswert?

den DisassemBler meinte ich natuerlich :)

von Avr N. (avrnix) Benutzerseite


Lesenswert?

@Andre K:
Ich probiere gerade aus was deine Routinen bringen. habe bei der
Compilierung folegenden unklaren Fehler gefunden:


Getinitbytes:
   !nextbyte3:
   lpm r26, z+
   lpm r27, z+

   sts {a+1}, r27
   Sts {a} , R26
Shout
   subi r20,1
   sbis sreg,sreg_z   <-- ? Was für ein Wert?
   rjmp nextbyte3
ret


bei sreg_z bekomme ich ne Fehlermeldung, was muss da eigentlich
stehen.

Error :illigal Character - wie ist sreg_z declariert?
Ich bin mal gespannt wie deine Routine Funktionieren werden :-)

Grüsse

von André K. (andre-)


Lesenswert?

Sreg_Z ist in m168.def als 1 definiert und bezeichnet das Zero-Flag in
Sreg. Bei anderen, aelteren regfiles steht das nicht drin, hast recht.
Sofern Z also Bit1 ist (wenn ich mich nicht irre, bei allen AVRs), dann
einfach 1 hinschreiben.

Beste Gruesse

von edisen (Gast)


Lesenswert?

Hallo Leute,

Ich hab eine kleine Zwischenfrage.
Ich bin auf der Suche nach einem Datenblatt für das S55 Display
(LM15SGFNZ07 mit den Controller DJ360055). Da Ich beim Suchen schon
verzweifle (und da Ihr ja scheinbar alle das Datenblatt für das S65
gefunden habt), bitte Ich euch mir weiter zu helfen oder mich in ein
passendes Forum zu lotsen.
Ich habe 4 Stück dieser Displays bei mir und möchte Sie schnellst
möglich in ein Projekt integrieren. Falls mir jemand hilfreichen C-Code
zur Verfügung stellt bin ich auch sehr dankbar.

Mit der Bitte um hilfe, der Entschuldigung für den Themafremden Eintrag
und mit freundlichen Grüssen, edisen

von Avr N. (avrnix) Benutzerseite


Angehängte Dateien:

Lesenswert?

@Andre K:

So habe deine Routinen mal ausprobiert , allerdings ohne erfolg :-(
Könntest du mal das Listing anschauen ob da noch was fehlt.

Das Display macht nichts, es sollte blau werden (CBlue)

ich arbeite mit einen ATMEGA16L mit 8MHz das Display LS020... wird
direkt angeschlossen.

von Avr N. (avrnix) Benutzerseite


Angehängte Dateien:

Lesenswert?

Habe mit den Codeschnipsel von Martin K und Bernd_XXX
paar Routinen geschrieben, allerdings habe ich folgende Probleme:

1)
Buchstabe wird nicht an die Position gezeichnet und die
Hintergrundfarbe ist schwarz, obwohl eine andere angegeben wurde.

2)
Buchstaben werden mit grossen versatz geschrieben bzw garnicht.

3)
Und es wird nicht immer die Farbe ausgegeben die angegeben wurde.

Vielleicht habe ich da was übersehen?
Könntet Ihr mal schauen wo ein  fehler vorliegt,
bzw besser gemacht werden kann?

Hardware Mega16L Display L020.. direkt am A Port dran bei 2,9V.

thx.
AVRNix

von rotfuchs (Gast)


Lesenswert?

Hallo! Bin Anfänger in Sachen Display-Ansteuerung. Was hat es mit den
Hexwerten auf sich, z.B. 0xEF00, muss dann die Bitfolge
1110111100000000 an einem Pin ausgegeben werden, oder wie?

Gruß, der Rotfuchs

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Welche HEXwerte meinst du ? Die können Speicherstellen sein ( Display )
oder 16 Bit Farbwerte in RGB 5-6-5 format.
Die werden dann über SPI zum S65 übergeben.

von André K. (andre-)


Lesenswert?

Hallo AVRNix,

ich kann keinen Fehler finden, das sollte so eigentlich funktionieren
(tuts zumindest auf meinem atmega168).

Schaltest du die Hintergrundbeleuchtung zeitig genug ein? Ich habe die
Erfahrung gemacht, dass sich das Display ohne diese Spannung manchmal
nicht initialisieren laesst.

Beste Gruesse

von rotfuchs (Gast)


Lesenswert?


von Avr N. (avrnix) Benutzerseite


Lesenswert?

keine Ahung sind von Christian K. analysiert worden.
Da es kein datenblatt gab.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

@Andre:

Wozu dienen die Routinen Defpartxyxyh und Defpartxyxy und welche
Parameter werden dort eingetragen?

Kann das sein das es ein Ausgabebereich def. wird?

von André K. (andre-)


Lesenswert?

Hi,

genau. (x1;y1) =  linke untere ecke. (x2;y2) = obere ecke.

Mit defpartxyxy kannst du logischerweise beide eckpunkte des Rechtecks
angeben. Bei Defpartxwyh hingegen gibst du nur einen Eckpunkt, sowie
Hoehe und Breite des Rechtecks an. Man kann eigentlich einfach eines
ins andere umrechnen, aber ich habs eben getrennt gemacht. Hast du das
nun inzwischen ans Laufen bekommen?

Beste Gruesse,
André

von Avr N. (avrnix) Benutzerseite


Lesenswert?

nein - mache ich morgen, ich habe das Backlight direkt an einer anderen
Stromversorgung dran. Nur komisch das, das Display nicht anspringt :-(

Hast du mal mein Programm auf dem M168 laufen gelassen ?

bis dann

von rotfuchs (Gast)


Lesenswert?

@AVRnix ist schon klar, dass er sie selber hinausgefunden hat. aber sind
das daten die über den Bus laufen, oder speicheradressen wo ich was
reinschreiben muss oder...? Weil da steht ja nicht was man mit diesen
Init-Daten machen muss die er "mitgeloggt" hat.

von SuperUser (Gast)


Lesenswert?

rotfuchs: Die musst du über SPI an das Display schicken...

von Avr N. (avrnix) Benutzerseite


Lesenswert?

@Andre:

So habe es ausprobiert, nichts zu sehen auf dem Display.
Das Display bleibt mit Bunten Pixel und wird nicht Blau eingefärbt.

Hat es schon einer zum laufen gebracht und auf welchen Mega?

Habe es mit M16L und M32 probiert, nicht zusehen von der Blauen Farbe
schneit mit Hard-SPI nicht zu klappen :-(

von Kay (Gast)


Lesenswert?

Hi AVR nix,

habe es auch mit Hardware SPI probiert. funktioniert bei mir auch
nicht.

mfg Kay

von André K. (andre-)


Lesenswert?

Merkwuerdig, sollte bei den AtmegaX8ern irgendetwas anders sein, das ich
uebersehen habe? Bei mir laeuft es zumindest einwandfrei, getestet mit
12 LS020 Displays.

Beste Gruesse,
André

von Kay (Gast)


Lesenswert?

also ich benutze nen mega16 mit 16Mhz. Mit Shiftout gehts, nur mit
hardware SPI nicht.

mfg Kay

von Avr N. (avrnix) Benutzerseite


Lesenswert?

@Kay: hast du die Hard SPI gegen Shiftout getauscht(Programm aus "S65
mit SPI" )?
kannst du dann mal das Programm posten?

von Kay (Gast)


Lesenswert?

hi,

ich habe das Programm von MartinK benutzt. Es zeichnet bunte streifen
aufs display. Das programm gibts in diesem Thread ( in einem Link ).

mfg Kay

von MC-Bernd (Gast)


Lesenswert?

@ Andre K.:
Hi Andre,
hast Du einen guten Lieferanten für die Displays ?
Habe gelesen, Du hast 12 Stück gtestet....
Ich habe bei Dreamcover ein neues Display bestellt und gebrauchte Ware
bekommen ! Diese Firma ist also nicht zu empfehlen.
Gruß Bernd

von Henning Sommerkamp (Gast)


Lesenswert?

Hab mir auch eins bei dreamcover bestellt, vor 2,5 Wochen sofort
überwiesen. Heute erst angekommen. :( Und es ist auch gebraucht. Aber
bei dem Preis werd ichs wohl verschmerzen.

von André K. (andre-)


Lesenswert?

Koennte bei Interesse evtl. neue anbieten. Bei Interesse Mail (27780 ätt
newdsl punkt de).

Warum mein Code nicht funktioniert, kann ich euch leider immer noch
nicht sagen. Ich kann keinen Fehler entdecken.

Beste Gruesse,
André

von Avr N. (avrnix) Benutzerseite


Lesenswert?

@Andre: wie hoch ist der (unter Option/Enviroment/Compilier) HWSTACK
SoftStack unf Framesize ?

Und hast du den Code mal auf einen M16 ausprobiert?

von André K. (andre-)


Lesenswert?

AvrNix:
Stell einfach alles mal auf 60 (reicht dicke fuer so ziemlich alles
aus). Ich hab dort meist ueberall 40 drin.

Ich hab momentan leider nur Atmega88s und 168s hier, weil ich in
letzter Zeit nichts anderes verwendet hab.

Beste Gruesse,
André

von Avr N. (avrnix) Benutzerseite


Lesenswert?

@Klappt auch nicht :-(

Hat jemand mal das
http://www.mikrocontroller.net/attachment.php/420053/S65+mit+SPI.txt

ausprobiert?

Und was ist das ergebnis?

von André K. (andre-)


Lesenswert?

Merkwuerdig. der einzige Unterschied zu meinem Aufbau duerfte darin
liegen, dass ich auch die LED-Spannung vom µC erzeugen lasse
(PWM+100µH+Transi), die ich eben vor der Init noch einschalte.
Ansonsten kann ich mir wirklich nur noch vorstellen, dass bei diesen
Atmegas beim HW-SPI irgendetwas anders laeuft (es wurden bei den *8 ja
einige Register umbenannt, evtl. greift der ASM-Teil nun auf die
falschen Register zu?! Muesste man mal ueberpruefen.

Beste Gruesse

von Daniel L. (bucho)


Angehängte Dateien:

Lesenswert?

Hallo alle zusammen!

Ich hab mal ne kleine Interfaceschaltung entwickelt, die ich demnächst
bauen werde. Die LED-Hintergrundbeleuchtung soll durch einen
LED-Treiber (gtaktete Stromquelle angesteuert werden). Nun die Frage:

Leuchten die LEDs sofort bei angeschlossener Spannung an den Pins, oder
muß man intern nochwas einschalten?

Wenns das der Fall ist, habe ich Bedenken, daß die Stromquelle bei
ausgeschalteter Hintergrundbeleuchtung eine zu hohe Spannung auf das
Display drückt und es dadurch einen Schaden geben könnte.

Gruß

von Daniel L. (bucho)


Angehängte Dateien:

Lesenswert?

Hehe und schon einen Fehler im Schaltplan entdeckt...

von Frank N. (z80)


Lesenswert?

Hallo avr / lcd - freaks !

Habe die Diskussion schon längere Zeit verfolgt - interessant.
Da ich selbst "stolzer" Besitzer eines D062x-Moduls (132*132) von
Display3000 bin, mich aber von Anfang an die Benutzung von "BASCOM"
gestört hat, habe ich nach Alternativen gesucht.

Also erst mal WinAVR - kostenlos, praktisch -> gut !
Dann hat mich der Code von Hagen R. (glcd11) (www dot apetech dot de)
zum Nachdenken angeregt...

Was dabei rausgekommen ist, ist eine neue (C-) Bibliothek, die alle
Funktionen der GLCD11 enthält. Ich hoffe Hagen R. hat nichts dagegen
:-)

Was ich aber nicht weiss, ist, wie sich Hr. Küsters zu einer
Veröffentlichung dieser Bibliothek verhält; in seinen FAQs kann man
folgendes lesen:

F: Muss ich auf die Software Lizenzgebühren zahlen, wenn ich sie selber
in kommerzielle Produkte einbauen möchte?
A: Wir haben das Copyright auf unsere Software und die Dokumentation.
Sie dürfen die Software jedoch in Ihre eigenen Projekte nach Belieben
integrieren und verkaufen - ohne jegliche weitere Zahlung an uns. Die
einzige Einschränkung: Ihre Applikation muss kompiliert sein. Es ist
nicht gestattet, einen lesbaren Source-Code weiterzugeben. Die
Dokumentation über die Ansteuerung des Displays dürfen Sie nicht
weitergeben (auch nicht auszugsweise).

Is ja'n Ding...

Wenn ich also eine Bibliothek - wohlgemerkt OHNE seinen Basic-Code -
weitergebe, dann habe ich also ein Problem ? Oder wie ??

Aber vielleicht hat ja jemand Interesse ...

von Frank N. (z80)


Lesenswert?

Nachtrag:

Als ich mir die Beschreibung des "Neuen" Moduls D073 laden wollte
(den link hat mir Display3000 als Kunden geschickt) lese ich
(sinngemäß)folgendes:

Ein böser, böser Mensch (ts, ts, ts) hat den Link zum Datenblatt
veröffentlicht. Deshalb bekommt das Datenblatt nur, wer ein eMail an
Hr. Küsters schickt.

(sicherlich muss er vorher eine Geheimhaltungserklärung abgeben ...)


Ich habe nichts dagegen, wenn man mit seiner Arbeit Geld verdienen will
bzw. muss. Ich habe ja auch für das Modul bezahlt. Aber als
(potentieller) Kunde habe ich doch wohl das Recht, mir die Datenblätter
- NICHT DIE KONSTRUKTIONSUNTERLAGEN - an- bzw. einzusehen.

Meinungen  ??

von SuperUser (Gast)


Lesenswert?

Hallo Frank,

ich denke du kannst ohne Probleme deinen C-Source Code freigeben,
allerdings nicht den Teil der das Display ansteuert (also initialisiert
usw.) wenn du den aus den BASCOM Sourcen übernommen hast.

Das mit dem Datenblatt verstehe ich nicht, und kann ich auch nicht
nachvollziehen. Schliesslich ist das eine kostenlose Werbung für sein
Produkt. Wenn man duch diesen Thread durchblättert, gibt es einige, die
Probleme mit dem Thema haben und denen eine fertige plug&play Lösung
willkommen ist -> potentielle Kunden.

Ich habe nichts dagegen, wenn jemand wie Herr Küsters sich die Arbeit
macht und so etwas zusammenstellt, dann damit auch Geld verdient.

Schön wäre nur, wenn er auch der "Community" etwas zurück geben
würde. Vielleicht sollte man den Code für zukünftige Displays doch
unter sowas wie der GPL veröffentlichen.

von Frank N. (z80)


Lesenswert?

Danke für die Antwort.

Ich sehe das genauso.

Werde also versuchen, aus meiner "Bibliothek" eine echte "Lib" zu
machen, dann handelt es sich um binar-Code und dem Willen von Herrn
Küsters ist genüge getan ...

von antiterrorist1967 (Gast)


Lesenswert?

ñîáñòâåííî, ñàáæ. àìåðû çàðûëè ãîëîâû â ïåñîê, âûñòàâèëè æîïû, êàê
ñòðàóñû è æäóò ïîêà èõ òåððîðèñòû ïîèìåþò.
íó, â ïðîìåæóòêàõ åùå ìîãóò ñúåçäèòü ïîáîìáèòü Èðàê èëè âðîäå òîãî.
áëîã ïðàâäà èçðàèëüñêèé, ñî ñâîèìè óðîäñòâàìè, íî è ñî çäðàâûìè ìûñëÿìè
òîæå, http://www.samsonblinded.com/ruindex.html
ãóãë åãî ñ ïåðâîé ñòðàíèöû â îäèí äåíü ñáðîñèë íà äåñÿòóþ è çàîäíî
çàðïåòèë ðåêëàìó. à ÿ åãî ïî÷èòûâàë èíîãäà, áëèí.
òàê ÷òî, íàðîä, òåïåðü ðóñè-àðàáè áõàé-áõàé? íàäîåëî äî ÷åðòèêîâ,
èçáàâèòüñÿ áû îò ýòèõ òåððîðèñòîâ, à òî â ñàìîëåò ñåñòü íàïðÿãàåò.

von bwd (Gast)


Lesenswert?


von Hagen R. (hagen)


Lesenswert?

"Also erst mal WinAVR - kostenlos, praktisch -> gut !
Dann hat mich der Code von Hagen R. (glcd11) (www dot apetech dot de)
zum Nachdenken angeregt...

Was dabei rausgekommen ist, ist eine neue (C-) Bibliothek, die alle
Funktionen der GLCD11 enthält. Ich hoffe Hagen R. hat nichts dagegen
:-)

Was ich aber nicht weiss, ist, wie sich Hr. Küsters zu einer
Veröffentlichung dieser Bibliothek verhält; in seinen FAQs kann man
folgendes lesen:"

Ich muß mich nun doch dazu äußern.

1.) wir stellen mal die Frage wie eigentlich eine solche GLCD fürs
Nokia  entstehen konnte. Die Antwort ist sehr einfach, einige Leute
haben das Nokia reverse engineered und dann herausgefunden welche
Kontroller benutzt wurden, dann aufwendig deren Datenblätter gesucht
und anschließend eine GLCD dafür programmiert. Ich persönlich bin zb.
erst zu einem Zeitpunkt dazu gestoßen als Ape schon längst eine Lib
programiert hatte. Entscheidend ist aber der Fakt das die Leute hier im
Forum hauptsächlich diese Informationen + Ansteuerung erarbeitet haben,
und allen interessieten Lesern auch frei zur Verfügung gestellt haben,
ohne Profit damit machen zu wollen.

Wichtig bei diesen Erläuterung ist aber der Punkt das erst viel später
die Angebote von Display3000 erschienen. Ich möchte hier keine
Unterstellungen machen aber Display3000 hat defakto die Ansteuerungen
die hier im Forum entwickelt wurden zu Geld gemacht. Das Recht dazu hat
jeder der clever genug ist, das ist meine Meinung.

Sehr interesant ist der Fakt das zb. einige der ScreenShots auf
Display3000 definitiv von Software stammt die mit meiner GLCD
entstanden sein müssen !! Denn soweit wie ich es weis unterstützt nur
meine Lib für das Nokia auch proportionale und mehrfarbige Fonts.

2.) wenn du eine neue Software Ansteuerung für eine Hardware
entwickelst was interressieren dich dann irgendwelche Lizensansprüche
des Hardware Herstellers ? Ich meine Display3000 hat keinerlei
juristische Möglichkeiten dir zu verbieten deinen Source zu
veröffentlichen. Display3000 hat keinerlei Rechte an deiner Software
und kann auch nicht irgendwelche Rechte nur auf Grund der gekauften
Hardware an deiner Software implizieren.

3.) da deine Lib auf einem OpenSource und freien Source basiert,
nämlich meiner Library, sieht es eher so aus das allerhöchsten Ape oder
ich, irgenwelche Urheberrechte haben könnten.

4.) ich kann einige EMails vorweisen in denen Käufer bei Display3000
mich fragten was sie denn an meiner GCLD anpassen müssten damit sie auf
deren Boards läuft. Ich fragte natürlich nach woher sie denn meine
Addresse hätten und sie von der GLCD wüsste. Die Antworten sind
ziemlich interessant verwiesen sie doch auf Display3000.

5.) Ich für meinen Teil bestehe darauf das du deine Software
veröffentlichst (ist aber deine Entscheidung ;) Denn du kannst damit
der Community auch was zurückgeben, die ja erst diese GLCD ermöglicht
hat. Gerade dieser Community Gedanke, der Gedanke nicht immer aus allem
Profit machen zu wollen, womöglich noch Ideen klauen, ist es gewesen
warum ich zb. meine GLCD sofort als OpenSource veröffentlicht habe.

Davon mal abgesehen gibts noch einige andere Portierungen der GLCD, zb.
eben auch fürs S65 Display.

Eines weis ich aber mit Gewissheit: sollte ich jemals nochmal so eine
GLCD coden dann wird sie wieder OpenSource sein aber dieses mal mit dem
Lizensvermerk das kommerzielle Wiederverkäufer einen Obolus an zb.
dieses Forum entrichten müssen ;)

Gruß Hagen

PS: ich habe eigentlich nichts dagegen das man Profit machen möchte und
als Nebeneffekt so auch ungeübte Bastler an preiswerte Boards rankommen.
Aber man sollte doch wenigstens auch die Urheber, die das nötige
Knownledge erarbeitet haben, erwähnen.
Suche einfach hier in der Codelib und du wirst sehr lange Threads
finden die diesen "Engineering-Prozess" der Leute hier wiedergeben.

von Hagen R. (hagen)


Lesenswert?

Um das also mal klarer auszudrücken:

Die Ansteuerung des LCDs, das Knowhow wurde zuerst, nämlich mindestens
2 Jahre vor Display3000, hier in diesem Forum entwickelt !

Aber! da gibts ein klitzekleines Problem, denn im Grunde fällt die
Ansteuerungslogik der Nokia/Siemens Displays in den Rechtsbereich der
Hersteller dieser Displays, denn die zugehörigen Datenblätter zb vom
Display oder auch Handy (aus den Service-Datenblättern wurden nämlich
wichtige Informationen ermittelt) stehen nur unter NDA beim Hersteller
zur Verfügung. Wenn also irgendjemand Rechte daran hat dann die
Hersteller wie Nokia, Siemens usw.

Gruß Hagen

von Tobias S. (tobias)


Lesenswert?

Also wenn man auf Wikipedia unter
http://de.wikipedia.org/wiki/Reverse_Engineering schaut findet man
folgendes:

Viele Firmen untersagen das Reverse Engineering ihrer Produkte durch
entsprechende Lizenzbedingungen. Die Analyse von Protokollen ist davon
rechtlich nicht betroffen, weil dabei die Software selbst gar nicht
Gegenstand der Untersuchung ist.

und

Benutzt man das Ergebnis des Reverse Engineerings zum gewerblichen
Nachbau, so wird man sich mit der großen Menge der gewerblichen
Schutzrechte (z. B. Plagiat) in ähnlicher Weise konfrontiert sehen, so
wie es auch bei Ergebnissen der ganz normalen eigenständigen Forschung
und Entwicklung der Fall sein kann (z. B. Patent).

Da hier im Prinzip auch nur ein Protokoll duch abhoeren und testen
untersucht wurde duerfte das(zumindest fuer nicht kommerzielle Zwecke)
legal sein.(Soweit der Wikipedia-Artikel korrekt ist)

Gruss Tobias

von Daniel L. (bucho)


Lesenswert?

Um nochmal auf meine Frage (weiter oben) zurückzukommen. 49 Downloads
und keiner weis eine Antwort??

von bwd (Gast)


Lesenswert?

Und auf meine auch nicht, wo bezieht ihr eure siemens-displays her, die
eindeutig identifizierbar sind?

von bwd (Gast)


Lesenswert?

Oder ich kaufe hier, da gibts alle 3 typen, welches ist denn das Display
bei dem die meiste Erfahrung vorliegt, bzw. am "einfachsten"
anzusteuern ist? Ich will aus lerngründen mir die soft nämlich
selberschreiben.

http://cgi.ebay.de/original-Siemens-CX65-M65-S65-SK65-LCD-Display_W0QQitemZ200033316973QQihZ010QQcategoryZ40579QQssPageNameZWDVWQQrdZ1QQcmdZViewItem

von SuperUser (Gast)


Lesenswert?

Hallo Daniel,

- wie schaltest du die Backlight LED's ein- und aus?
- möchtest du die Beleuchtung nicht auch dimmen können?

Hallo bwd,

Je nachdem was du machen willst, empfehle das LS0. Ansteuern lassen
sich  alle drei gleich gut. Aber bis jetzt gibt es nur für das LS0 in
einer Orientierung die glcd.
Für das LPH sollte die Portierung der glcd aber eigentlich viel
einfacher möglich sein, da ein nahezu kompatibles Datenblatt existiert.
Nur hat sich noch keiner die Arbeit gemacht. Mit dem LPH sollten alle
Orientierungen einfach realisierbar sein.

von bwd (Gast)


Lesenswert?

Danke, dann gönne ich mir doch mal so ein lph :)

von Peter (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

habe mir das S65 LPH Display besorgt und versuche es mit einem MSP430
anzusteuern.  -Leider bislang ohne Erfolg- :-(

FnLcdS65PortInit();

FnLcdS65InitC();

FnFillScreen(0x0780);

An dieser Stelle sollte das Display doch grün hinterlegt sein.
Ist es bei mir aber nicht. Es zeigt keinerlei Reaktion.

Im Anhang habe ich mal die FnLcdS65InitC() angehängt.
Vielleicht kann mir ja jemand sagen ob die Komando- und Daten- Werte
überhaupt richtig sind, die ich dem HD66773 über die DAT Leitung
reintakte.

Danke

von grüner (Gast)


Lesenswert?

Hallo! Ich habe auch ein grünes, und habe mir die Init-Sequenz mit
delayms mal eben selbst zusammengebastelt, läuft aber noch nicht so
recht. Stimmen die auf Christians Seite angegebenen Befehle (die er
logic analyzed hat) für alle Displays?

von SuperUser (Gast)


Lesenswert?

Hallo Peter,

du hast die 10ms Reset-Zeit "wegoptimiert". Kann durchaus sein, dass
das Display eine längere reset-Zeit benötigt. Ist zumindest nicht
unüblich.

Hast du dir mal die Timings auf deiner SPI Schnittstelle angeschaut?
(Flanken- zu Signal...)

von Daniel L. (bucho)


Lesenswert?

@SuperUser:
Also, das Problem an der ganzen Sache ist, daß ich bei meinem Interface
keine Spannungs-, sonder eine STROMQUELLE an die Hintergrundbelechtung
anschließe. Ich weis jetzt nicht genau ob die Hintergrundbeleuchtung
sofort leuchtet, wenn man da was anschließt, oder ob sie noch per
Software eingeschaltet werden muß. Wenn der zweite Fall vorliegt, habe
ich die Sorge, daß die Stromquelle eine unzulässig hohe Spannung am
Sisplay erzeugt, wenn intern der Trompfad der Hintergrundbeleuchtung
nicht durchgeschaltet ist.

Gruß

von SuperUser (Gast)


Lesenswert?

Hallo Daniel,

die LED's sind einfach durchverbunden - ohne irgendwelche Schalter auf
dem Display. D.h. Stromquelle ist schon i.O.

Darum fehlt mir bei deinem Schematic auch noch der Ein-/Aus-Schalter,
es sei denn du willst die Hintergrundbeleuchtung immer eingeschaltet
lassen.

von Bernd (Gast)


Lesenswert?

Hallo,
hatt denn jemand das Dattenblatt des HD66773 Controllers ?( für Display
LPH88...) Es währe super wenn jemand sagen könnte wo es zu finden ist,
oder mir per E-Mail zusenden könnte.

Danke
Bernd

E-Mail: Bernd888@gmx.net

von Daniel L. (bucho)


Lesenswert?

Danke; für den ersten Test will ich die Hintergrundbeleuchtung einfach
anlassen. Die Schaltung ist nur dafür gedacht, das Display
auszuprobieren.


Gruß

von Peter (Gast)


Lesenswert?

Bernd
ich glaube, da suchen hier sehr viele nach

von Bernd (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
habe das Datenblatt für den HD66773 gefunden.(Ist Beigefügt)
Hier wird aber auch eine RS (Register select Leitung) benützt um
zwischen Daten und Kommando zu unterscheiden !
Beim LPH88.... bei dem der HD66773 drin sein soll, sagt Christian aber,
dass hier keine RS-Leitung benützt wird !?
Ist dann da etwas durcheinander gekommen ? Gehört sich evtl. der
HD66773 doch nicht zum LPH88.... ???

Gruß Bernd

von MartinK (Gast)


Lesenswert?

@Bernd

> habe das Datenblatt für den HD66773 gefunden

Das ist doch schon alles vor einem Jahr ausdiskutiert worden.

von Bernd (Gast)


Lesenswert?

@ MartinK
würdest Du ganz kurz das Resultat der Diskussion nochmal schreiben, da
ich vor einem Jahr noch nicht dabei war!!!
Ich hab die Beiträge zwar durchgeschaut, aber keine eindeutige Aussage
hierzu gefunden.

Gruß
Bernd

von MartinK (Gast)


Lesenswert?

Datenblatt Seite 7
RS: "When using SPI, fix it to Vcc or GND level"

von Bernd (Gast)


Lesenswert?

Ok. Danke.
Dann sollte das Datenblatt des HD66773 ja für das LPH88... passen!
Hast Du dieses Display am laufen ?
Evtl. zusätzliche Funktionen implementiert ?

Gruß Bernd

von MartinK (Gast)


Lesenswert?

Leider nicht. Vor etwa 1 Jahr hatte ich dieses Display am laufen,
doch ich bin auf das LS020xxx-Display umgestiegen, weil dieses
eine wesentlich hellere Hintergrundbeleuchtung hat.

von Ronaldo (Gast)


Lesenswert?

Hi, I finded this link and it´s very interesting, have information about
 all controler HD66XXX.

von Ronaldo (Gast)


Lesenswert?


von Peter (Gast)


Lesenswert?

Hallo,

den HD66773 auf dem Siemens S65 kann man scheinbar auch mit 3,6V
betreiben.
Kann das jemand bestätigen?

Gruß

von Hauke Radtki (Gast)


Lesenswert?

Der controller schon, das Display selbst nicht.

Wenn man das Display mit mehr als 2,9V betreibt werden die Farben
extrem unschön.

von Peter (Gast)


Lesenswert?

Hallo,

zwischen keine Anzeige und eine unschöne Anzeige, liegt ein kleines
Erfolgserlebnis.

Mit 3,6V .... ist da das Display noch am Leben oder hat es sich da
schon längst verabschiedet.

Wenn ich das Display angesteuert habe, kann ich an die schöneren Farben
denken.

Gruß

von Hauke Radtki (Gast)


Lesenswert?

Wenn möglich würde ich 3.3V probieren, da ging meins auch über nen
größeren Zeitraum.

Unschöne farben hin oder her, ich weis nich ob das gut für das LCD
selbst ist (bzw für die kristalle oder was weis ich)

wo liegt denn dein Problem?

von Peter (Gast)


Lesenswert?

Hallo,

also ich verwende den MSP430f149 um das S65 LPH88.. anzusteuern.
Der MSP wird mit dem internen DCO (8.388.608Hz) getaktet. Das Display
hängt am Hardware SPI des Mikrocontrollers.

Mit dem Oszi sehe ich, dass über den SPI Bus die Commandos und Daten
für das Display getaktet werden. Nur zeigt dieses eben das .."grüne
Display".. nicht an.

Nun bin ich eben dabei, die Zeiten zu überprüfen.

Gruß

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Mir ist bei 3,6V ein LS020.. in Popo gegangen, als ich es ein zweites
mal anschiessen wollte. Ob jetzt an der Spannung gelegen hat oder weil
die Folie kaputt gegangen ist. Kann ich nicht sagen.

von Hauke Radtki (Gast)


Lesenswert?

macht der MSP keine 3,3V mit? ich dachte schon oder?

sonst ein einfacher Spannungsteiler funktioniert bei kurzen leitungen
als pegelwandler sehr gut :>

von Peter (Gast)


Lesenswert?

Hallo,

Der MSP macht die 3,3V schon aber da hat der keine 8MHz.
Ich denke ich muß den uC mit 8MHz takten.

Gruß

von Hauke Radtki (Gast)


Lesenswert?

Achso, dann würd ichs mit Widerständen probieren, wenn deine Kabel nicht
allzu lang sind ist das kein Problem.

von MC-Bernd (Gast)


Lesenswert?

Thema: Pegelwandler (5V->3V)
Hinweis an alle die Probleme mit den Farben haben, "unschöne" und
blasse Farben. Ich hatte das Problem auch. Nachdem ich die
Pegelwandelung mit Spannungsteiler durch eine Wandelung mit dem
74HC4050 ersetzt habe, ist dieses Problem absolut beseitigt und die
Farben sind jetzt richtig schön und kräftig! Durch die Pegelreduzierung
mit den Widerständen werden anscheinend die Flanken der Signale zu sehr
"verrundet" so dass bei der Initialisierung nicht alle Spannungen
korrekt gesetzt werden. So ist auch zu erklären, warumm bei einigen die
Farben so spannungsabhängig sind!

Gruß
MC-Bernd

von Avr N. (avrnix) Benutzerseite


Lesenswert?

@MC_bernd: gehts auch bei 3,3V mit deinen GLCD ?

von MC-Bernd (Gast)


Lesenswert?

@ AVRNix
Hallo,
habe 3,3V nicht ausprobiert, da es für mich keinen Grund gibt, das
Display mit Überspannung zu betreiben!
Gruß
Bernd

von Hauke Radtki (Gast)


Lesenswert?

Ich "betreibe" das Display direkt am STK500 und lasse mir vom STK500
die 2.9V bereitstellen. So sind auch die IO-Spannungen auf 2.9V und ich
hab das "problem" mit den spannungsabhängigen farben trotzdem.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Kann das sein ( hier beim LS020.. ) wenn die Hintergrundspannung für die
 LEDs so hoch ist das der Effekt der Spannungsabhänigen Verfärbung
auftritt? So sind die Spannungen bei mir im Bereich 2,9V für I/O bei
10V-11V Hintergrundspannung.

von MC-Bernd (Gast)


Lesenswert?

Hallo AVRNix,
ich denke nicht, dass die LED-Spannung einen Einfluß darauf hat.
Ist meiner Meinung nach total separat!
Ich glaube das Problem hat mit der Initialisierung zu tun.
Bei mir änderten sich die Farben auch wenn ich zum Schluß eine helle
oder dunkle Farbe gezeichnet habe und die Farben waren nur kräftig bei
Betrachtung von (leicht) rechts!(schlechter Blickwinkel)
(Ich benütze auch LS020)
Ist jetzt alles weg.
Gruß
MC-Bernd

von Andi (Gast)


Lesenswert?

hi @ all,

hat es nun jemand mit 18f4550 geschaft?

ich habs versucht, aber das Display springt nicht an, wahrscheinlich 
habe ich noch Fehler was die SPI Schnittstelle angeht.

gruss andi

von bwd (Gast)


Lesenswert?

So, mein Display ist nun da und wollte es auf Funktionsfähigkeit testen, 
habe es an atmega8 anpassen wollen (makefile und portpins geändert), 
jedoch:

illegal opcode call for mcu atmega8 in
[asm]call    port_init_io    ;init SPI[/asm]

Ich kann leider kein Assembler, also was ist da los?

Portpins:

#define LCD_CS     PB2
#define LCD_RESET  PB0
#define LCD_RS     PB1
#define LCD_MOSI   PB3
#define LCD_MISO   PB4
#define LCD_SCK    PB5

von bwd (Gast)


Lesenswert?

Hm, mal das pn2 neugestartet, nun gehts?!

von bwd (Gast)


Lesenswert?

Mal ne Frage: Wie generiere ich aus 16 MHz Haupttakt die 13 MHz SCK? 
Laut datenblatt gehts bei F_CPU/2 los...

von Christian K. (christiank)


Lesenswert?

zu 13MHz: gar nicht, das SPI läuft dann mit 8MHz.

Was ist ein pn2? (neugestartet und es geht??)

von bwd (Gast)


Lesenswert?

Hm, okay danke, ist da so ne große Toleranz drin bezüglich des Taktes, 
oder ist da noch nen Trick bei? Naja ich werds nachher mal ausprobieren.

pn2 ist das Programmers Notepad (mitgelieferter editor von winavr mit 
integriertemr gcc- und avrdude-unterstützung), das benutze ich lieber 
als das Studio, da man schneller kompilieren und programmieren kann (via 
Hotkey), und die debug- und Simulationsfunktionen brauche ich aktuell 
sowieso nicht.

von bwd (Gast)


Lesenswert?

Hi, nochmal ne Frage, du schriebtest auf deiner Homepage:

    *  setting pixel
    * draw lines
    * draw rectangles, filled and with border
    * draw ellipses and circles
    * proportional and fixed fonts with different colors
    * clipping rectangle for all outputs
    * all routines support transparent drawing

Aber ich habe die im quelltext nirgendswo gefunden?

von bwd (Gast)


Lesenswert?

hm...kein wunder, hab ja auch nur die abgespeckte lib oben auf deiner 
seite gefunden, und die unten übersehen....

von Jens D. (jens) Benutzerseite


Lesenswert?

lol
ich denke unten die ist auch recht schwer zu verstehen..

Der Takt ist nach untenhin sehr offen, bei SPI zumindest, bei einem 
RS232 Signal, hast du ja keine Taktleitung, und darum muss ein sehr 
genauer Takt eingehalten werden.

Bei SPI hast du eine eigene CLOCK Leitung, welche sagt, wann Daten 
geschrieben werden können bzw gelesen

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Der Takt is bei dem Display uberhaupt kein Problem nach unten hin ^^ Ich 
hatte den  Takt vom STK500 ma auf 32kHz ... ist schon lustig zu sehen, 
wie sich die Pixel aufbauen :>

von bwd (Gast)


Lesenswert?

Okay, thx :). Habe nun ein Problem: Die kompilierte komplette Lib ist 
über 32kB groß. Gibt es in der "kleinen" die Möglichkeit einzelne Pixel 
zu zeichnen?

von Christian K. (christiank)


Lesenswert?

Hallo bwd,

du meinst vmtl. die Grösse des glcdlib.a files? Das ist noch lange nicht 
die Grösse des fertig gelinkten Codes. Compilier doch einfach mal das 
beiliegende test Program.

Weil die glcd in Assembler geschrieben ist, ist sie nämlich ziemlich 
klein....

von Hagen R. (hagen)


Lesenswert?

@bwd:

werden nur Basisfunktionen der GLCD benutzt so benötigt sie maximal 800 
Bytes FLASH. Werden alle Funktionen benutzt, besonders Clipping etc. 
dann sind es 2800 Bytes Flash. Das gleiche in reinem WinAVR GCC C würde 
dann 4800 Bytes verbrauchen. Bedenkt man was die GLCD schon mit 800 
Bytes leistest -> Transparenz, Linien, Rechtecke, Füllungen, Mehrfarben 
und eben proportionale komprimierte Fonts, dann sind 800 Bytes wirklich 
nicht viel.

Wenn du weist das eine Bibliothek wie die GLCD eine echte 
Link-Bibliothek ist so wüsstest du auch das dadurch die binäre Größe der 
Linklib. stärker anwachsen muß als bei einer normalen Library. Das liegt 
eben daran das in diesem File noch viele zusätzliche Informationen 
gespeichert sein müssen damit später der Linker überhaupt in der Lage 
ist nicht benutzte Funktionen aus der Lib weg zu optimieren. Dh. der 
Linker linkt nur diejenigen Funktonen aus der GLCD in dein fertiges HEX 
die du in deinem Source benutzt hast. Das ist keineswegs eine Normalität 
wenn du 3'rd party Libraries benutzt.

Gruß Hagen

von bwd (Gast)


Lesenswert?

Danke, ich schau heute abend mal, wenn ich daheim bin.


PS: die .hex ist übrigens so groß geworden, nicht die lib selber, habe 
mich da etwas falsch ausgedrückt.

von bwd (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
d.h. bei den .a libs handelt es sich um "Intelligente" libs, die auch 
nur die Funktionen importieren, die benutzt werden? Weil von .c /.h 
kennt man es ja, dass der Compiler die Datei nur "stumpf" in die 
haupt-c-datei reinkopiert.

weil dann finde ich das etwas komisch, hab jetzt die test.c nochmal 
abgespeckt (siehe Anhang), aber komme immer noch nicht auf Deine <8kB 
mit meiner Hexdatei. Mit der original test.c wie sie "mitgeliefert" wird 
lande ich bei besagten 34kB hexdateigröße.

Entschuldigung für die Fragen, aber mit libs habe ich mich noch nicht so 
eingehend beschäftigt ;-).

von Christian (Gast)


Lesenswert?

> aber mit libs habe ich mich noch nicht so eingehend beschäftigt

Mit hex-files aber wohl auch noch nicht...

Im Hex-File ist dein binary file - das Ergebniss des Linkers - mehr oder 
weniger im Textformat gespeichert. Öffne das doch einfach mal... Du 
wirst viele Zeilen mit HEX Zeichen im ASCII Format finden. Darum ist das 
hex-file sehr viel groesser als das eigentliche binary.

Mit avr-size kannst du dir die Größe der einzelnen Bereiche anzeigen 
lassen.

von Delta4.elektronik (Gast)


Lesenswert?

Guten tag. Ich habe problem mit AVR CODE in CodeVision AVR. --- 
http://www.delta4.info/delta4/files_2/AVR_L2F50_display.zip danke aus 
help! Czech Republic :o)

von Mike Bird (Gast)


Lesenswert?

Hallo,

kann mir vielleicht jemand ein Proggy nennen, mit dessen Hilfe ich eine 
Bilddatei (BMP-24Bit zum Beispiel) in eine Rohdatendatei im RGB 5:6:5 
Format konvertieren kann ?
Irfan View kann leider nur in das 24Bit RGB Format konvertieren.
Habe nun unter Bascom einen kompletten Unterroutinensatz fuer das LF02 
geschrieben (Plot, Line, Circle, Rectangle, Filled Circle, Filled 
Rectangle, Text, Clear, uvm.) Nun moechte ich fuer meine Anwendung zum 
Beispiel Icons verwenden, und da waere das Konvertieren aus Bilddateien, 
etc. natuerlich einfacher, als komplett neu zu Pinseln.

Fuer Eure Hilfe waere ich sehr dankbar.

Liebe Gruesse
Mike

von Mike Bird (Gast)


Lesenswert?

abo

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Mike Bird - läuft es bei dir mit BASCOM über Hard SPI ?
Wenn ja wie hast du das angestellt?

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

@  Mike Bird.

Ich bin gerade dabei sowas zu basteln, bin aber noch nicht ganz fertig. 
Jetzt fahr ich erst mal in den Urlaub. In 10 Tagen bin ich wieder da, 
dann werd ich weiter machen.

von Mike Bird (Gast)


Lesenswert?

@AVR Nix:
nein, leider habe ich es auch nicht zuverlaessig ueber Hard-SPI zum 
laufen bekommen, die waits haben letztendlich mehr Zeit gefressen, als 
wenn ich es gleich ueber Soft-SPI laufen lasse (Shiftout).
Ich werde mir aber am Wochenende wohl nochmal das Thema Hard-SPI 
vornehmen, waere doch gelacht, wenn man das Ganze nicht doch damit zum 
Laufen bekommt.

@Hauke:
Na, dass hoert sich doch sehr gut an, vor allem, dass Du nun Urlaub hast 
:o)  Waere aber nett, wenn Du uns danach mal auf dem Laufenden haelst. 
Denn ein Kaffee-Vollautomat, mit TFT-Menue, schreit einfach nach netten 
Kaffeetassen-Symbolen, fuer die einzelnen Produkte und auch im 
Systemmenue.) Sowie natuerlich auch das Firmenlogo, beim Einschalten.

Bin jetzt erstmal mit den Hauptroutinen beschaeftigt 
(Temperatursteuerung, Antriebseinheit, Mahlwerk, Pumpe und 
Magnetventile, sowie der Sicherheitsueberwachungen, etc.)
Sprich, es gilt noch viele Bugs zu Programmieren :o)

Gruss Mike

von Andreas L. (andimaniac)


Lesenswert?

@ KennyOswald

könntest Du die Firmware für 18F4550 posten, ich bekomme das Display 
nicht initialisiert?

MfG Andi

von Patrick (Gast)


Lesenswert?

Hallo Hauke

an dem Programm zur BMP Konverierung währe ich auch interessiert.

@Peter vielleicht kannst du ja die Quellen zu deinem Tool 16pbbColors 
posten?

Gruss Patrick

von Avr N. (avrnix) Benutzerseite


Lesenswert?

@ Mike Bird: Gibts Fortschritte mit der Hard-SPI ?

von Mike B. (mikebird)


Lesenswert?

@ Avr Nix:
Nein, leider noch nicht, da ich momentan viel auf Achse bin, komme ich 
zur Zeit doch nicht dazu.
Da bei mir das Display-Timing in dem Projekt nicht so extrem wichtig 
ist, sind natuerlich auch erstmal andere Prioritaeten gesetzt. 
(Ablaufsteuerung)
Trotzdem reizt es mich natuerlich auch fuer zukuenftige Projekte, das 
Timing zu optimieren, um Ressourcen fuer andere Dinge freizuhalten.
Also denke ich mal, dass ich in meinem Urlaub, in 3 Wochen, spaetestens 
dazu kommen werde, mich weiter dem Teilchen zu widmen.
Denn momentan laeuft es nur als Farbige Analoguhr, und schaut zumindest 
schonmal gut aus (wenn auch voellig Sinnlos...lol).
Halt ein Abfallprodukt der Routinenschreiberei :o)

Gruss Mike

von Mike B. (mikebird)


Angehängte Dateien:

Lesenswert?

Hallo,

mich liess momentan das Problem der Konvertierung keine Ruhe, auch wenn 
ich heut wieder Frueh raus muss....*grummel*
Bin dann erst am Freitag (Nachts) wieder da.
Habe also kurz mal nen BMP 24Bit zu RGB565 Exporter geschrieben,
moechte ihn aber noch nicht veroeffentlichen....kommt am Wochenende !
Nun habe ich nur das Problem, dass Bascom es wohl irgendwie nicht auf 
die Reihe bekommt, groessere Datenmengen per Restore / Read, 
nacheinander zu lesen. Irgendwie ueberschlaegt sich da wohl ein Pointer.

Das angehaengte File ist ein Testfile, welches ich mit dem Exporter 
erstellt habe. Die ersten beiden Daten sind die Bildgroesse (x,y),
dann folgen die Farbdaten, sequentiell.

Habe versucht das Bild mit folgender Routine darzustellen, aber nach ci 
20% kommt nur noch Muell an. Vielleicht kann sich da ja jemand die Tage 
dran versuchen?

Folgende Routine nutzte ich als Darstellungsroutine:

Restore Bildname
Read X
Read Y
X = X - 1
Y = Y - 1
For Y1 = 0 To Y
For X1 = 0 To X
Read Z
Gosub Lcd_pset '(Subroutine setzt einen Pixel an X1,Y1 mit der Farbe Z)
Next X1
Next Y1

Gruss Mike

von Patrick (Gast)


Lesenswert?

Hallo Forum,

mal noch eine Frage zur Array Deklaration in der das BMP drin sein muss.
ich hab zum Testen mal folgende Funktion erstellt:

void testBitmaps_2(void) {
  uint8_t x=0, y=175;


  glcdColor_t Bitmap[23232];

  for(uint16_t i=0; i<23232; i++) {


    glcdSetPixel(x, y--, Bitmap[i]);

  }
}

Später soll dann in "Bitmap" mal das gewandelte BMP drin sein. Das 
Problem ist das der compiler eine Fehlermeldung test.c:417: error: size 
of variable 'Bitmap' is too large bringt.

Was mach ich falsch?

Gruss patrick

von SuperUser (Gast)


Lesenswert?

Hallo Patrick,

du hast wahrscheinlich keinen µC mit 46kByte RAM oder? Darum meckert der 
Compiler...

Grüße
  SU

von Patrick (Gast)


Lesenswert?

Hallo SU,

nein, hab einen ATMega128, der genug Flash hat. Wie bekomme ich das 
Array in
das Flash bzw. kann es von dort wieder laden?

Gruss Patrick

von Ralf K. (123ralle)


Lesenswert?

@Mike

Einige Bascom Versionen haben wohl einen Bug, was große Bereiche mit
DATA Zeilen angeht.
Es hilft, wenn man ca. alle 3 KB eine leere Sprungmarke einfügt

DATA xx,xx,xx,xx
marke1:
DATA xx,xx,xx,xx

Ich kann aber im Moment nicht testen obs hilft.

Gruss,
Ralf

von SuperUser (Gast)


Lesenswert?


von Keine Ahnung (Gast)


Lesenswert?

@MIkeBird: kannst du mal dein "AbfallProdukt" zeigen?
zum lernen wäre doch mal ein Anfang! Wurde mich interresierren wie du 
die Uhr gemacht hast , da ich so ein teil gern Nach bauen möchte!

wäre ganz toll!

von Mike B. (mikebird)


Lesenswert?

Sodele..

@Keine Ahnung:
Mail mir einfach! Oder registriere hier im Forum.

@Ralf: Vielen lieben Dank, der Tipp von Dir mit den Einsprungmarken hat 
funktioniert. Habe es auch gleich letzte Nacht in mein BMP2DATA 
converter mit eingebaut. (setzt alle 3kb eine blinde Einsprungsmarke mit 
einem aus Uhrzeit, Datum und einem Zaehler, gewonnenen Namen. Somit 
schliesse ich irgendwelche doppelten Marken nahezu aus)

Und nun an alle, die Interesse an dem Konverter Tool haben:
Ich haette dies ja gerne hier mit angehaengt, nur irgendwie funktioniert 
es nicht. Daher mailt mir bitte, wenn Ihr dies Tool haben wollt,
ich maile es dann so schnell es geht zu.

Momentan kann es nur .BMP Dateien mit 24Bit konvertieren, da ich noch 
keine Palettenbehandlung implementiert habe. Es sollte aber kein Problem 
darstellen, ein 8Bit .BMP zuvor mit z.Bsp. Paint, als 24Bit umzuwandeln, 
und dann mit dem Tool umrechnen zu lassen.

Das Tool kann ueberall hinkopiert werden, es benoetigt keine 
Registrierung, oder Installation.
Nach dem Start waehlt man das File, welches man konvertieren moechte, 
mit den Cursortasten aus und mit Enter wird dann die Konvertierung in 
ein Textfile mit dem Namen des Quellfiles +.txt Endung im selben 
Verzeichnis der Quelle, durchgefuehrt.

Man braucht dann nur noch den Inhalt des Textfiles ins Bascom File zu 
kopieren, die Einsprungsmarke am Anfang auf den gewuenschten Namen 
umzuaendern, und das wars.

Bitte Mailt mir, wenn Ihr noch Aenderungsvorschlaege habt, oder Fehler 
findet. (ist eh noch nicht ganz fertig)

Viel Spass beim Experimentieren!

Gruss Mike

von Mike B. (mikebird)


Angehängte Dateien:

Lesenswert?

Hier noch mal ein kleines Bildchen von meinem "Abfallprodukt" in 
Funktion.
Nun auch mit "Kaffee" als Hintergrund :o)

von Andre (Gast)


Lesenswert?

Hallo,

versuche nun schon seit Tagen das S65 LPH88.... Display zum Laufen zu 
bringen. Leider ohne Erfolg.

Kann vielleicht jemand seinen Initialisierungscode hier posten?

Funktioniert das Display auch mit 4MHz  und
wie wichtig sind eigentlich die Pausen zwischen den Sequenzen.

Danke und Gruß

von Patrick (Gast)


Angehängte Dateien:

Lesenswert?

Hallo S65 User,

anbei mal ein kleine Testroutine um ein BMP aufs Display
zu zeichnen. Dabei ist auch ein kleinen VB Tool um die BMP C Quellen
zu erzeugen. Läuft gut hab’s mit 4,5 und 16Mhz ausprobiert.

Eine Sache ist mir aber nach wie vor unklar. Ich muss z.Z zwei Array mit
je einer Bildhälfte erzeugen. Lege ich die beiden Arrays zusammen gibt’s
einen Fehler beim compilieren. ?? Wo ist die Grenze des Array Index?

Noch was: im Code welches das VB Tool erzeugt gibt es eine Textmarke
"Trennzeichen" um die beiden Array auseinander zuhalten. Einfach ein 
24Bit
BMP mit 132x176 Pixel laden und Code erzeugen. Dann den Code bis zum 
Trenn
zeichnen in das erste Array einfügen, ab dem Trennzeichen bis zu Ende 
den
den Code in das zweite Array einfügen.

Gruss Patrick

von André K. (andre-)


Lesenswert?

Auszug aus Language fundamentals:

The index must be a numeric constant, a byte, an integer, word or long.
The maximum number of elements is 65535.
The first element of an array is always one. This means that elements 
are 1-based.

von André K. (andre-)


Lesenswert?

Oh, ich dachte du nutzt immer noch (?) Bascom. Sorry.

Beste Gruesse

von Mike B. (mikebird)


Angehängte Dateien:

Lesenswert?

Hier nochmal etwas zu meinem Bitmap Converter (ehemals BMP2DATA).

Dieser kann nun dank AVRNix auf seinem Board heruntergeladen werden 
(falls der Anhang hier mal wieder nicht klappen sollte).
http://www.comwebnet.de/zip-dateien/Bascom_Picture_Converter11a.rar

Momentan ist er so optimiert, dass auch mit aelteren Bascom-Versionen,
die Bilder nahezu problemlos dargestellt werden koennen.
Daher befinden sich in den Ausgabe-Dateien, alle 3kb eine 
Ghost-Einsprungsmarke, da sonst die aelteren Bascom-Versionen nicht in 
der Lage sind, solch Datenmengen per Read, am Stueck zu lesen.

Bei Fragen und Verbesserungsvorschlaegen zu dem Tool, mailt mir bitte!!

Gruss Mike

von Patrick (Gast)


Lesenswert?

@ André K  Der Index des Array ist aber nur 23232 sollte also reichen?

Gruss Patrick

von Daniel L. (bucho)


Lesenswert?

Hallo allerseits!

Ich habe nochmal eine Frage zum Beispielprogramm. Wenn ich das Programm 
mit dem mitgeliefertem Makefile compiliere, dann wird noch ein 
EEpromfile erzeugt. Wenn ich dieses File mit AVR-Studio programmieren 
möchte, dann bekomme ich eine Fehlermeldung. Allerdings funktioniert das 
Programm auch ohne das EEpromfile. Irgendwie habe ich sowieso 
festgestellt, daß bei meinem AVR-Studio das EEprom nur mit Hex-files 
gefüttert werden kann; Eep-Files haben eine Fehlermeldung zur Folge. Ich 
hoffe, daß mir jemand weiterhelfen kann.

Gruß

von Stefan B. (beckst)


Angehängte Dateien:

Lesenswert?

Hallo miteinander,

ich habe mir einen kleinen Bitmapkonverter programmiert.
er wandelt ein 24bit Bitmap in ein 16bit Bitmap (5-6-5) passend fürs
Display um. Bei mir funktionierts bestens wobei ich Fehler nicht
ausschließen will.
als Zieldatei wird die Datei S65.h erzeugt welche für die Einbindung in
Assembler-Quellcode formatiert ist.
viel Spaß damit

Mfg Steff

von Patrick (Gast)


Lesenswert?

Hallo Steff,

hab die bmp Datei ins gleichen Verzeichnis kopiert.
geht aber nicht. Programm meldet Datei nicht gefunden?

Gruss Patrick

von Stefan B. (beckst)


Lesenswert?

Hallo Patrick,

hast du den kompletten Dateinamen also inclusive der Endung .bmp 
eingegeben?

MfG Steff

von Mike B. (mikebird)


Lesenswert?

Hallo Steff,

ich habe mir kurz mal ein Resultat von Deinem Konverter angesehen.
In welcher Reihenfolge sind die Werte ?
ist der erste Wert das High-Byte oder Low-Byte?
Wuerde sonst die Ausgabemoeglichkeit auch in meinen Konverter mit 
einbauen, somit waere es dann fuer Bascom und Assembler nuetzlich.
Und welche Direction hast Du ? Erster Wert oben links ?
Ich weiss, ich koennte auch ein paar Testbilder durchlaufen lassen und 
vergleichen, aber momentan fehlt ein wenig die Zeit dazu.
Nur die Aenderung des Ausgabeformates ist kein Beinbruch in meinem 
Proggy.
Wollte eh noch ein Down-Scale, sowie BMP Konvertierung mit 
Farbpalettenauswertung einbinden (dann muessen es keine 24Bit BMP mehr 
sein)

Gruss Mike

von Stefan B. (beckst)


Lesenswert?

Hallo Mike,

also erster Wert ist der oben links
und es wird wie du schon vermutet hast zuerst das High-Byte geschrieben.
es wär natürlich eine klasse Sache wenn du so ein all in one Programm 
bereitstellen würdest also mach dich ran.

MfG Steff

von diego (Gast)


Lesenswert?

OT an Matthias Dehof

hallo matthias
ich habe hier auch einen unc20 und wollte dich mal fragen ob du es 
jemals versucht hast auf die seriellen schnittstellen zuzugreifen (nicht 
fürs debugging/terminal) irgendwie scheint mir da nämlich das LxNetes 
etwas schräg... ich kann da nämlich die baudraten usw. nicht setzen, da 
keine termios struktur vorhanden scheint.
Falls du irgendetwas dazu weisst wäre ich dir dankbar wenn du mir hier 
oder per mail antworten könntest.

gruss diego

von Diego .. (diego)


Lesenswert?

hmmm email ohne adresse super idee :P naja pn tuts ja auch ;)

von Ivoi (Gast)


Lesenswert?

To  Smartie.
Dont work AT91SAM7.zip! Can you send me all project?

Thank you.
Best regards

von Christian K. (christiank)


Lesenswert?

Hallo,

etwas neues zur Adressierung des LS020 Display RAMs:

http://www.superkranz.de/christian/S65_Display/DisplayRamAccess.html

von Ben (lightning)


Angehängte Dateien:

Lesenswert?

@Christian K.
Danke für die neuen infos.

@ALL
Das PDF-Update ist natürlich auch schon fertig.


~ gruß Lightning

von Goga (Gast)


Lesenswert?

good job... someone, give me the link to a new projects about these 
topic...

von Lötnix (Gast)


Lesenswert?

Ist der Konverter weiter entwickelt worden?
Und wo bekomme ich den aktuellen Konverter?

mfg

Lötnix

von Stefan B. (beckst)


Lesenswert?

Hallo,
welche Funktionalität bräuchtest du denn?
evtl. kann ich dir ja weiterhelfen.
MfG Steff

von Lötnix (Gast)


Lesenswert?

Der sollte ein Bild x x Y x Farbtiefe umwandeln können egal was für eine 
Farbtiefe ich habe. Es ging doch nur mit dem 24 Bit  BMP Bild.

Es gibt ja auch naoch andere Formate. bzw. eine Kompression des Bildes 
um im AVR nicht soviel Arbeitsspeicher zu verschwenden.

War doch hier im Gespräch?

mfg
Lötnix

von Mike B. (mikebird)


Lesenswert?

Hallo Lötnix,

momentan kannst Du Dir ja damit weiterhelfen, indem Du mit sonstigen
Gfx-Proggys vorweg Dein Bild in ein 24Bit Bitmap umwandelst.
Da ich in den letzten Wochen leider noch nicht weiter dazu gekommen bin, 
an meinem Converter herumzubasteln, ist noch keine neue Version mit 
Assembler konformen Ausgaben verfuegbar.
Ich hatte allerdings in einer nicht veroeffentlichen Version schon 
einmal ein wenig mit RLE Kompressionen herumprobiert, da ich aber 
hauptsaechlich die Ausgaben fuer Bascom Programme verwende, ist die 
Decompression dabei doch sehr zeitraubend. Werde dies aber dann doch 
nochmal mit implementieren.
Die Einbindung der Konvertierung von "nicht 24-Bit bmp" ist schon etwas 
Umfangreicher, da hierbei mit Farbpaletten gearbeitet wird und nicht mit 
direkten Farbanteilen fuer jedes Pixel.
Daher war die Funktionalitaet erstmal nur auf das Minimum begrenzt,
also die Konvertierung verschieden grosser (max. 176x132) 24Bit Bitmaps 
in ein Data-Format, welches sich ohne Probleme im Bascom verarbeiten 
liess.

Also sobald ich wieder ein wenig Zeit habe, werden Stueck fuer Stueck 
folgende Funktionen mit eingebaut: (nach Prioritaet absteigend)
-Assembler-Quellcode konforme Ausgabe waehlbar
-bmp Konvertierung von nicht 24Bit Dateien
-RLE Kompression waehlbar
-Up/Downscale der Bildgroesse

Die Versionen werden dann wieder hier, sowie auf den Seiten von AVRNix 
zur Verfuegung stehen.

Ein vorweihnachtlicher Gruss aus dem hohen Norden
Mike

von Hagen R. (hagen)


Angehängte Dateien:

Lesenswert?

Anbei eine Beta meines Konverters.

Vorerst müsste das Exportieren in das RAW Format ausreichend sein. Dazu 
einfach die Checkbox "RAM Data" anhacken und es wird eine C Header Datei 
gespeichert in der die Pixel mit 16Bit Farbwerten codiert sind.

Für die anderen 3 Datenformate die ich verwende kann ich noch 
Erklärungen und Beispielcode in C nachliefern, wenn gewünscht. Vorerst 
nur mal par Stichpunkte was drinnen ist:

- 1 Farb Bitmaps, das sind nichts anderes als mit einer Farbe 
ausgefüllte Rechtecke, quasi leere Bitmaps mit einer Hintergrundfarbe

- 16 Bit Bitmaps, das sind unkomprimierte Bitmaps in voller Farbe, 
meistens weil eine Komprimierung nichts bringt

- Monochrome Bitmaps (2 Farben) mit Komprimierung. Die Daten sind per 
RLE komprimiert und man erreicht ca. 2000-3000% Packungsrate im 
Vergleich zu RAW

- 2 Bit bis 15 Bit Farbbitmaps, also von 3 Farben bis 32765 Farben. Die 
Daten sind komprimiert und benutzen eine Farbtabelle. Die 
Komprimierungsrate ist fast immer besser als bei PNG Bildern. Wichtig 
ist das man nur durchschnittlich 16 AVR Takte pro Datenbyte in den 
Zeichenroutinen benötigt für diese Dekomprimierung. Man erreicht also 
defakto den maximalen Datendurchsatz bei 8Mhz SPI auf einem 16Mhz AVR, 
direkt aus dem FLASH ohne zusätzlichen SRAM zu verbrauchen.


Die Software selber kann
- PNG, BMP, WMF, EMF, ICO, JPEG laden
- in beliebigem Farbformat
- in beliebiger Größe
- das Bild wird runter skaliert auf maximal 176x132 Pixeln wenn nötig, 
Seitenverhältnis wird beibehalten
- die Farbpalette/-anzahl kann reduziert werden
- das Bild kann in 90 Gradschritte rotiert, und gespiegelt werden


Gruß Hagen

Ausschnitt meines bisherigen Codes für meine S65-GLCD des LPH88xxx 
Display (Philips HD66773R Controller).
1
#include "glcd.h"
2
3
uint16_t colormasks[14] PROGMEM = {0x0006, 0x000E, 0x001E, 0x003E, 0x007E, 0x00FE, 0x01FE, 0x03FE, 0x07FE, 0x0FFE, 0x1FFE, 0x3FFE, 0x7FFE, 0xFFFE};
4
5
void glcdDrawBitmap(glcdCoord_t x, glcdCoord_t y, const prog_char* bitmap, uint8_t flags) {
6
7
8
#define GLCD_LOAD_BITS(data0, data2, databits, addr, bitsmul) \
9
   asm volatile(                            \
10
    "cpi   %2, lo8(16)"         "\n\t"  \
11
        "brsh  .%=2"                "\n\t"  \
12
        "movw  r30, %A3"            "\n\t"  \
13
        "lpm   r0, Z+"              "\n\t"  \
14
        "mul   r0, %4"              "\n\t"  \
15
        "cpi   %2, lo8(8)"          "\n\t"  \
16
        "brsh  .%=1"                "\n\t"  \
17
        "or    %A0, r0"             "\n\t"  \
18
        "or    %B0, r1"             "\n\t"  \
19
        "subi  %2, lo8(-(8))"       "\n\t"  \
20
        "lpm   r0, Z+"              "\n\t"  \
21
        "mul   r0, %4"              "\n\t"  \
22
".%=1:"                             "\n\t"  \
23
        "or    %B0, r0"             "\n\t"  \
24
        "or    %1, r1"              "\n\t"  \
25
        "subi  %2, lo8(-(8))"       "\n\t"  \
26
        "movw  %A3, r30"            "\n\t"  \
27
".%=2:"                             "\n\t"  \
28
        "clr   r1"                  "\n\t"  \
29
      : "=r" (data0),                     \
30
        "=r" (data2),                     \
31
        "=a" (databits),                  \
32
        "=r" (addr),                      \
33
        "=r" (bitsmul)                    \
34
      : "r" (data0),                      \
35
        "r" (data2),                      \
36
        "a" (databits),                   \
37
        "r" (addr),                       \
38
        "r" (bitsmul)                     \
39
        : "r0", "r1", "r30", "r31"          \
40
     );
41
42
#define GLCD_LOAD_COLOR(data0, data2, databits, colortable, colormask, bpp, bitsmul, bkcolor) \
43
   asm volatile(                            \
44
        "movw  r30, %A0"            "\n\t"  \
45
        "lsr   %1"                  "\n\t"  \
46
        "ror   %B0"                 "\n\t"  \
47
        "ror   %A0"                 "\n\t"  \
48
        "brcs  .%=0"                "\n\t"  \
49
        "dec   %2"                  "\n\t"  \
50
        "lsr   %6"                  "\n\t"  \
51
        "brne  .%=3"                "\n\t"  \
52
        "ori   %6, lo8(0x80)"       "\n\t"  \
53
        "rjmp  .%=3"                "\n\t"  \
54
".%=0:"                             "\n\t"  \
55
        "and   r30, %A4"            "\n\t"  \
56
        "and   r31, %B4"            "\n\t"  \
57
        "add   r30, %A3"            "\n\t"  \
58
        "adc   r31, %B3"            "\n\t"  \
59
        "lpm   %A7, Z+"             "\n\t"  \
60
        "lpm   %B7, Z"              "\n\t"  \
61
        "mov   r30, %5"             "\n\t"  \
62
        "cpi   r30, lo8(8)"         "\n\t"  \
63
        "brlo  .%=1"                "\n\t"  \
64
        "mov   %A0, %B0"            "\n\t"  \
65
        "mov   %B0, %1"             "\n\t"  \
66
        "clr   %1"                  "\n\t"  \
67
        "andi  r30, lo8(0x07)"      "\n\t"  \
68
        "breq  .%=2"                "\n\t"  \
69
".%=1:"                             "\n\t"  \
70
        "lsr   %1"                  "\n\t"  \
71
        "ror   %B0"                 "\n\t"  \
72
        "ror   %A0"                 "\n\t"  \
73
        "dec   r30"                 "\n\t"  \
74
        "brne  .%=1"                "\n\t"  \
75
".%=2:"                             "\n\t"  \
76
        "sub   %2, %5"              "\n\t"  \
77
        "dec   %2"                  "\n\t"  \
78
        "mov   r30, %2"             "\n\t"  \
79
        "andi  r30, lo8(0x07)"      "\n\t"  \
80
        "clr   r31"                 "\n\t"  \
81
        "subi  r30, lo8(-(powerof2))"   "\n\t"  \
82
        "sbci  r31, hi8(-(powerof2))"   "\n\t"  \
83
        "lpm   %6, Z"               "\n\t"  \
84
".%=3:"                             "\n\t"  \
85
      : "=r" (data0),                     \
86
        "=r" (data2),                     \
87
        "=a" (databits),                  \
88
        "=r" (colortable),                \
89
        "=r" (colormask),                 \
90
        "=r" (bpp),                       \
91
        "=r" (bitsmul),                   \
92
        "=r" (bkcolor)                    \
93
      : "r" (data0),                      \
94
        "r" (data2),                      \
95
        "a" (databits),                   \
96
        "r" (colortable),                 \
97
        "r" (colormask),                  \
98
        "r" (bpp),                        \
99
        "r" (bitsmul),                    \
100
        "r" (bkcolor)                     \
101
        : "r30", "r31"                      \
102
     );
103
104
105
    if (!(bitmap)) return;
106
    uint8_t w = pgm_read_byte_inc(bitmap);
107
    if (!(w)) return;
108
    uint8_t h = pgm_read_byte_inc(bitmap);
109
    if (!(h)) return;
110
    uint8_t bpp = pgm_read_byte_inc(bitmap);
111
    uint16_t bkcolor = pgm_read_word_inc(bitmap);
112
    if (flags & GLCD_BMP_USECOLORS) bkcolor = glcd.Colors[0];
113
    if (bpp == 0) {
114
      glcdFillRect(x, y, x + w -1, y + h -1, bkcolor);
115
      return;
116
    }
117
    GLCD_CS_ON();
118
    GLCD_SETADDR(x, y);
119
    GLCD_WINDOW(x, y, x + w -1, y + h -1);
120
    if (flags & GLCD_BMP_TRANSPARENT) {
121
      GLCD_SETMODE(0x38 | GLCD_ROP_WNE);
122
      GLCD_SETCOMPARE(bkcolor);
123
    } else {
124
      GLCD_SETMODE(0x38);
125
    }
126
    GLCD_STARTDATA();
127
    if (bpp == 1) {// monochrome
128
      uint16_t pixelcount = w * h;
129
      uint16_t fgcolor = pgm_read_word_inc(bitmap);
130
      if (flags & GLCD_BMP_USECOLORS) fgcolor = glcd.Colors[1];
131
      uint16_t color = bkcolor;
132
      if (flags & GLCD_BMP_SWAPCOLORS) {
133
        bkcolor = fgcolor;
134
        fgcolor = color;
135
        color   = bkcolor;
136
      }
137
      uint8_t data = pgm_read_byte_inc(bitmap);
138
      uint8_t pixelbits = ((data >> 4) +1) << 2;
139
      data &= 0x0F;
140
      uint8_t temp = data << 4;
141
      data |= temp;
142
      do {
143
        GLCD_WAIT();
144
        GLCD_OUT(H8(color));
145
        if (!(--pixelbits)) {
146
          data = pgm_read_byte_inc(bitmap);
147
          pixelbits = ((data >> 4) +1) << 2;
148
          data &= 0x0F;
149
          uint8_t temp = data << 4;
150
          data |= temp;
151
        }
152
        GLCD_WAIT();
153
        GLCD_OUT(L8(color));
154
        ROL(data);                                // rotate data, data = (data << 1) | (data >> 7);
155
        color = bkcolor;
156
        if (data & 0x01) color = fgcolor;
157
      } while (--pixelcount);
158
    } else if (bpp == 16) { // full color
159
      uint16_t pixelcount = w * h;
160
      while (pixelcount) {
161
        GLCD_WAIT();
162
        GLCD_OUT(H8(bkcolor));
163
        pixelcount--;
164
        GLCD_WAIT();
165
        GLCD_OUT(L8(bkcolor));
166
        bkcolor = pgm_read_word_inc(bitmap);
167
      }
168
    } else {// color, 2 upto 15 BPP
169
      uint16_t colortablesize = pgm_read_word_inc(bitmap);
170
      uint8_t* colortable = (uint8_t*)bitmap;
171
      bitmap += colortablesize;
172
      uint16_t colormask = pgm_read_word(&colormasks[bpp -2]);
173
      uint8_t databits = 0, data2 = 0, bitsmul = 1;
174
      uint16_t data0 = 0;
175
//      uint32_t data = 0;
176
      uint16_t pixelcount = w * h;
177
      do {
178
        GLCD_WAIT();
179
        GLCD_OUT(H8(bkcolor));
180
        pixelcount--;
181
        GLCD_LOAD_BITS(data0, data2, databits, bitmap, bitsmul);
182
183
//        while (databits < 16) {
184
//          uint16_t t = pgm_read_byte_inc(bitmap) * bitsmul;
185
//          if (databits >= 8) data |= (uint32_t)t << 8;
186
//            else data |= t;
187
//          databits += 8;
188
//        }
189
190
        GLCD_WAIT();
191
        GLCD_OUT(L8(bkcolor));
192
193
        GLCD_LOAD_COLOR(data0, data2, databits, colortable, colormask, bpp, bitsmul, bkcolor);
194
195
//        if (LL8(data) & 0x01) {
196
//          bkcolor = pgm_read_word(colortable + (L16(data) & colormask));
197
//          data >>= bpp;
198
//          databits -= bpp;
199
//          bitsmul = pgm_read_byte(&powerof2[databits & 0x07]);
200
//        }
201
//        bitsmul >>= 1;
202
//        if (!(bitsmul)) bitsmul |= 0x80;
203
//        data >>= 1;
204
//        databits--;
205
      } while (pixelcount);
206
    }
207
    GLCD_WAIT();
208
    GLCD_CS_PULSE();
209
    GLCD_SETMODE(0x30);
210
    GLCD_CS_OFF();
211
}

  

von Micha (Gast)


Lesenswert?

hi
hat einer vielleicht ein datenblatt zu dem L2F50 zu hand und mag es mal 
posten? habe bis jetzt keins gefunden..

mfg
micha

von Martin B. (mborman)


Lesenswert?

Hello,

i've tried to connect my l2f50...  to PIC 18f2550(18f4550) from 
Microchip (using sources from Mark de Jong), but my display is silent.
Can somebody consult me about connection and sources?

I uses 3.0 power supply for both (cpu and display) units, without 
resistors and diodes (direct connection)


PS: to power the backlight I uses the MAX232 chip, powered by 5 volt - 
the output to rsr232 line lets 9.4 volts. It is enought to switch on the 
led.

von Mike B. (mikebird)


Angehängte Dateien:

Lesenswert?

Hallo,

nun doch noch in diesem Jahr bin ich dazu gekommen,
mich ein wenig weiter mit meinem Konverter zu beschaeftigen.
Sprich, ich hab mal wieder die letzte Nacht zum Tag gemacht.

Folgende Aenderungen sind nun im Tool vorgenommen worden:
- Etliche Bugs im Filebrowser behoben
- Dabei auch ein wenig an der Optik und Struktur gefeilt
- als Ausgabeformat fuer Bascom unterstuetzt er nun:
  1. Bascom 16Bit Raw Data (wie zuvor auch)
  2. Bascom 8Bit Raw Data (direkte Ausgabe HiByte/LoByte)
  3. Bascom 8Bit RLE Data (wie oben, nur mit einfacher RLE Compression)
  Alle 3 Formate erhalten einen anderen Ausgabenamen,
  daher auch ist es auch Problemlos moeglich, nacheinander
  alle 3 Codierungen durchlaufen zu lassen, und zu vergleichen.
  (Eben halt ob die RLE Kompression in dem jeweiligen Fall etwas bringt)
  Zudem wird auch nach der Konvertierung die Anzahl der benoetigten
  Data Bytes angezeigt.

Die Assembler Source Ausgabe ist gerade in Arbeit, und wird vielleicht
schon morgen als Version 1.6 hier zu finden sein.

Wer Verbesserungsvorschlaege hat, bitte mailt mir (PN) oder einfach hier 
ins Board schreiben.

Bis dahin erstmal liebe Gruesse aus dem hohen Norden
Mike

von Mike B. (mikebird)


Angehängte Dateien:

Lesenswert?

Tja, manchmal gehts schneller als man denkt.....
Schiebe hier nochmal schnell die Version 1.6 nach.
Hab kurz die Assembler Hex Sourcecode Ausgabe mit eingebunden.

Achja, der Name des Tools hat sich noch geringfuegig geaendert,
da es ja nun nicht mehr fuer Bascom alleine da ist.

Viel Spass damit

Gruss Mike

von Mark de Jong (Gast)


Angehängte Dateien:

Lesenswert?

Hello Martin,

Here is the latest library, perhaps there where some errors in the other 
library.
This one is test and work with my target (C164, C165 and C167)

Regards Mark,

von Martin B. (mborman)


Lesenswert?

Hello, Mark,

> Here is the latest library, perhaps there where some errors in the other
> library.
> This one is test and work with my target (C164, C165 and C167)

Thank You, very much.

But I've still having problem - nothing appears on screen.

When I tries to remove cpu from slot, the "garbage" is appears on the 
display or, (offtenly) display becomes black; but when I drops CPU back 
and switch on the device - screen keeps white. After InitDisplay the 
FillScreen (with RED color) calls, but nothing happens.

Can You, please, help me to understand the problem?
May be, i have not L2F50? (but it seems like L2F50 from Kranz site).

von Mark de Jong (Gast)


Lesenswert?

Hello Martin,

Ok, then it is normal my SW doesn't work, I wrote it for the LS020.
As soon as I get a L2F50 display I will adapt the SW.

Regards Mark,

von Kay (Gast)


Lesenswert?

@Mike Bird,

wie binde ich denn die DATA in Bascom ein ? Restore Bildname ..... ?
ich bekomms nicht hin.

kannst Du mir helfen ?

mfg Kay

von Kay (Gast)


Lesenswert?

@Mike Bird,

habs hinbekommen. danke. Kann ich denn irgendwie bestimmen, an welcher 
position das Bild angezeigt werden soll ?

mfg Kay

von Mike B. (mikebird)


Lesenswert?

@Kay,

das sollte doch eigentlich einleuchtend sein.
Nochmals anhand der alten Routine, wenn Dein Bild Beispielsweise 96x32 
gross ist:
------------------------------------------------------------------------ 
--
X2= 40            <- Hier kannst Du Deine horizontale Verschiebung 
angeben
Y2= 30            <- Hier kannst Du Deine vertikale Verschiebung angeben

Restore Bildname
Read X            <- liest hierbei 96, als Bildbreite
Read Y            <- liest hierbei 32, als Bildhoehe
X = X - 1         <- korrigiert X um -1 da 0-95 = 96 Bildpunkte ergibt
Y = Y - 1         <- korrigiert Y um -1 da 0-31 = 32 Bildpunkte ergibt

For Y1 = Y2 To Y+Y2   <- wuerde dann bedeuten Y1 zaehlt von 30 bis 61
For X1 = X2 To X+X2   <- wuerde dann bedeuten X1 zaehlt von 40 bis 135
Read Z

Gosub Lcd_pset '(Subroutine setzt einen Pixel an X1,Y1 mit der Farbe Z)

Next X1
Next Y1
------------------------------------------------------------------------ 
--
Nun setzt er Dir Deine Bildpixel an zwischen 40,30 (x,y) und 135,61.

Du solltest Dich vielleicht erstmal ein wenig mit Basic vertraut machen, 
und Dich fragen, was wohl in den jeweiligen Zeilen passiert.
Probiere es einfach aus, veraendere Variablen oder schaue in die Hilfe 
vom Bascom.
Nur so kann man als Anfaenger verstehen, was man eigentlich macht.
Auch wenn fuer Dich dann zu Anfang die Programme mehr einer "Was 
Passiert Dann ?" Maschine gleicht.
Anders habe ich damals (1981) mit meinem ZX81 auch nicht dessen Basic 
gelernt.

Liebe Gruesse
Mike

P.S.: wenn Du Dich hier anmeldest, kannst Du mich auch gerne per PM 
kontaktieren.

von Kay (Gast)


Lesenswert?

@mike Bird,

danke für den Code. habs ausprobiert. klappt fast. die "Startposition" 
ist die Richtige. Nur verschiebt sich das Bild. Wir quasi umgeklappt. 
Aber wie ich versuch das selbst hinzubekommen.Hat mit HardSPI geklappt, 
werd das auch noch hinbekommen. Hast ja recht :-)

mfg Kay

von Mike B. (mikebird)


Lesenswert?

@Kay
Meld Dich doch kurz hier an, dann brauchen wir nicht das Forum 
dichtzuschreiben (PN / E-Mail)

Gruss Mike

von Martin B. (mborman)


Angehängte Dateien:

Lesenswert?

Hello everybody,

in attachment You can see the datasheet for mysterious L2F50.

I hope, it can be helpful.

PS: unfortunately, this is draft, but man who hat sent me this file says 
that all commands are correct.

von Joghurt3000 (Gast)


Lesenswert?

Hallo,

ich habe hier ein LPH8836 an einem ATMega16 mit 16MHz Quarz. Das Display 
bekommt von einem LM317 2,92V auf den Eingängen 2v9 und 1v8 und die 
anderen Leitungen Clock, Data, etc. sind über einen 74hc4050 mit dem AVR 
verbunden (GND hängt auch am LM317). Ich habe mal die Ports einzeln über 
Software aktiviert und gemessen ob dort eine Spannung zu messen ist wo 
eine zu messen sein sollte und demnach ist alles korrekt verdrahtet. Das 
Display bleibt allerdings "schwarz". Ich habe die V01 & V02 ausprobiert, 
gleiches Resultat. Hat jmd. vllt. eine Idee woran es liegen könnte? Ist 
der Level-Shifter schuld? LowFuse ist auf 0x3f programmiert womit der 
externe Oszi verwendet werden sollte und mit F_CPU=16000000 sollte es 
dann auch alles rictig getimed sein, oder? (hfuse=0x99)


Beste Grüße J3k

von Joghurt3000 (Gast)


Lesenswert?

Hallo,

ich habe hier ein LPH8836 an einem ATMega16 mit 16MHz Quarz. Das Display 
bekommt von einem LM317 2,92V auf den Eingängen 2v9 und 1v8 und die 
anderen Leitungen Clock, Data, etc. sind über einen 74hc4050 mit dem AVR 
verbunden (GND hängt auch am LM317). Ich habe mal die Ports einzeln über 
Software aktiviert und gemessen ob dort eine Spannung zu messen ist wo 
eine zu messen sein sollte und demnach ist alles korrekt verdrahtet. Das 
Display bleibt allerdings "schwarz". Ich habe die V01 & V02 ausprobiert, 
gleiches Resultat. Hat jmd. vllt. eine Idee woran es liegen könnte? Ist 
der Level-Shifter schuld? LowFuse ist auf 0x3f programmiert womit der 
externe Oszi verwendet werden sollte und mit F_CPU=16000000 sollte es 
dann auch alles rictig getimed sein, oder? (hfuse=0x99)

Achja, MOSI->DAT, oder?

Beste Grüße J3k

von Joghurt3000 (Gast)


Lesenswert?

Hallo,

ich habe hier ein LPH8836 an einem ATMega16 mit 16MHz Quarz. Das Display 
bekommt von einem LM317 2,92V auf den Eingängen 2v9 und 1v8 und die 
anderen Leitungen Clock, Data, etc. sind über einen 74hc4050 mit dem AVR 
verbunden (GND hängt auch am LM317). Ich habe mal die Ports einzeln über 
Software aktiviert und gemessen ob dort eine Spannung zu messen ist wo 
eine zu messen sein sollte und demnach ist alles korrekt verdrahtet. Das 
Display bleibt allerdings "schwarz". Ich habe die V01 & V02 ausprobiert, 
gleiches Resultat. Hat jmd. vllt. eine Idee woran es liegen könnte? Ist 
der Level-Shifter schuld? LowFuse ist auf 0x3f programmiert womit der 
externe Oszi verwendet werden sollte und mit F_CPU=16000000 sollte es 
dann auch alles rictig getimed sein, oder? (hfuse=0x99)

Achja, MOSI->DAT, oder (da sollte er ja rausshiften als master)?

Beste Grüße J3k

von Michael I. (iller101)


Lesenswert?

Also der HC4050 funktioniert auf alle Fölle den hab ich bei mir auch 
verbaut.

von Roland B. (micfan)


Lesenswert?

Hallo,
ich bin mir nicht sicher ob das angegebene Code Beispiel "simple_display 
LPH_display4_V02" für das LPHxxx Display so funktioniert. Dort sind 
Zeitmarken "start at 355ms" angegeben, die für meine Begriffe ohne 
zugehörigen wait Aufrufe nicht eingehalten werden. Habe die Hardware 
genau so aufgebaut, wie dies auf der Seite von Christian angegeben 
wurde. Bei meinem Display sehe ich nur die Hintergrundbeleuchtung. Habe 
also auch genau das gleiche Problem wie Joghurt3000. Ich stehe jedoch 
noch komplett am Anfang und muss mir die Initialisierung noch genau 
anschauen.

Grüße Roland

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Ich hab das bei mir mal getestet (auch LPH display) und es ging, ich 
hatte aber keine pegelwandlerbauteile dazwischen hab den Mega16 direkt 
mit 2,9V befeuert.

von Roland B. (micfan)


Lesenswert?

Hallo Hauke,
verstehe ich dich richtig, Du verwendest das Beispielprogramm "LPH 
simple.." ohne Änderung mit einem ATmega16 und mit 16 Mhz Takt ? Ich 
frage wegen dem Timing..

Gruß
Roland

von Hauke R. (lafkaschar) Benutzerseite


Angehängte Dateien:

Lesenswert?

Jo mega 16 16MHz ..

von Roland B. (micfan)


Lesenswert?

Vielen Dank Hauke,
dann kann ich meine Fehlersuche einschränken. Mein ATmega128 läuft mit 
5V und ich verwende die angegebenen Spannungsteiler. Bin leicht 
verwundert dass Dein ATmega16 mit 16 MHZ bei 2.9V läuft. Das würde bei 
mir einiges vereinfachen.

Gruß
Roland

von Roland B. (micfan)


Lesenswert?

Hallo,
mein LPH Display läuft jetzt!

Ich musste jedoch das Beispielprogramm ändern...

Das folgende Konstrukt wurde von gcc beim compilieren mit einer Warnung 
versehen, dass die Verarbeitungsfolge der Variablen j nicht garantiert 
ist.
Ich hatte die Fehlermeldung zuerst ignoriert, da es ja ein erprobtes 
Beispielprogramm ist... ??

hier der Abschnitt:
// starts at 125ms
  j=0;
  for (i=0; i<6; i++)
  {
    lcd_comtype(ct1[i]);
    lcd_comdat(cd1[j++],cd1[j++]); <-- hier ist nicht garantiert,
        welchen j-Wert param1 und param2 von lcd_comdat erhält.
  }

wenn die Reihenfolge des inkrement definiert ist, dann funktioniert's
// starts at 125ms
  j=0;
  for (i=0; i<6; i++)
  {
    lcd_comtype(ct1[i]);
    lcd_comdat(cd1[j],cd1[j+1]); <- keine Compilerwarnung
    j+=2;
  }

Das Ganze wiederholt sich noch 3 mal im Programm für cd2, cd3 und cd4

Hier die Frage an die Experts... kann es an der Compilerversion liegen?
Ich arbeite mit winXP und AVRStudio und verwende WinAVR 20060421 mit 
libc 1.4.5

Gruß
Roland




von Hagen R. (hagen)


Lesenswert?

das kann schon am Makefile liegen, sprich den Compilerswitches. Ist halt 
C wo solche "Ungereimtheiten" möglich sind ;)

Gruß Hagen

von C. Kranz (Gast)


Lesenswert?

Das wird wirklich am Compiler liegen. Die Beispiele wurden mit einer 
gcc-Compiler Version 3.x aus 2005 kompiliert. Ich glaube nicht, dass es 
damals überhaupt Warnungen gegeben hat. Normalerweise versuche ich immer 
alle Warnungen zu beseitigen.

Die Zeiten in den Kommentaren beziehen sich auf die gemessenen Zeiten am 
Handy. Die Initialisierung im Beispielcode läuft viel schneller ab als 
im Original und funktioniert auch so. Man muss keine waits einbauen.

Grüße
  Christian

von Dennis (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe mir jetzt auch zwei Displays unterschiedlicher Anbieter 
besorgt.

Leider werde ich das ganze auf einem Fujitsu Controller implementieren. 
Ich habe diesen Thread fast komplett durch geackert, und bin momentan 
noch ein wenig überfordert.

das linke müsste der letzten Versio des allround pdfs das Lso20 sein, 
und das rechte das L2f50....

Anschlussbelegungen habe ich auch gefunden.. also werde ich erstmal den 
Testaufbau rein harwaremässig vornehmen.

mit den Initsequenzen kann ich noch nicht zu 100% etwas anfangen, da 
fehlen mir noch ein paar timing angaben, von denen ich hier auch schon 
einige gesehen habe.

wenn dort etwas in 16bit hex aufgeführt ist, dann fehlt mir eigentlich 
nur:

wann muss welche leitung auf high-bzw low, Msb first oder last....

und bei den bmp toolz, die ich übrigens sehr sehr nett finde, fehlt mir 
vielleicht noch die angabe, wieviel bit in welcher reihenfolge für 
welche farbe vorgesehen ist. es war da mal was von RGB 5/5/6 im gespräch 
meine ich...

ich verfolge diesen thread schon recht lang, und intensiv gelsen habe 
ich vor ca 2 monaten, dann kamen mit einiger verzögerung die displays, 
und jetzt so langsam ist mal wieder etwas luft...

vielleicht kann mich ja noch jemand mit der nase in eine fehlenden info 
drücken....

dank euch,
Dennis

von Dennis (Gast)


Lesenswert?

..ach ja, ich vergaß,

ich bin kein atmel nutzer, toggelt ihr die pins mit entsprechenden 
befehlen, oder setzt eure kommunikation grundsätzlich auf einem bereits 
vorhandenen uart auf!?

dennis

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Das ganze läuft per Hardware SPI oder?

von C. Kranz (Gast)


Lesenswert?

Die ganzen Beispiele laufen auf dem Hardware SPI Interface des ATmega, 
grundsätzlich ist auch SW Port-Toggling möglich.

Für die Polarität und Flanken der Signale gehst du am besten auf die 
Reenginieering Seite der web-page. Dort kannst du ein paar gemessene 
Screen-Shots runterladen. Die zeigen Phase- und die Polarität der 
Signale. Die sind bei allen Displays für Clock- und Daten gleich. MSB 
first transmission.

Alternative ist Atmel-Data Sheet und Hardware SPI Initialisierung 
vergleichen....

Grüße
  Christian

von Dennis (Gast)


Lesenswert?

Hallo,

dank dir,

damit vervollständigt sich mein Bild zunehmend schnell!!!

Dennis

ps.: eine kleingkeit noch, hälst du das bild im speicher zwischen, oder 
liest du auch daten zurück um einen pixel einzumaskieren..? aber 
warscheinlich ist eh für jeden pixel eine farbkombi vorgesehen...werde 
ich dann ja im quelltext auch finden...

vielleicht kann ich ja einiges wiederverwenden... wenn der quelltext auf 
einer art "write data, write inst" und "read date, falls nötig" besteht, 
und darauf aufsetzten eine init() und einer write befehl, 
write(x,y,color) ansetzt, sollte man das ja recht schnell auf unterster 
ebene angeflickt bekommen...

von James (Gast)


Lesenswert?

Hallo,

Ich wollt mal vorsichtig fragen ob sich jemand mit der glcd für L2F 
Display beschäftigt hat. Und weitergekommen ist.
Ich hab ein lauffähiges Display mit einem Mega32 aufgebaut.
Da ich erst Anfänger bin war es für mich schon ein Erlebnis, eine 
Temperatur auf dem Display anzeigen zu lassen.
(Großer Dank geht an Christian Kranz.)
Aber ich würde gerne die Schriftart verändern und ein bischen 
Hintergrund hinzaubern.
Hat jemand vielleicht ein TIP für mich.
Ich dachte zuerst an GLCD. Aber es funzt ja noch nicht oder?

von Thomas R. (thomas-r)


Lesenswert?

Hallo,

ich möchte das LS020... mit eurer Lib in WinAVR zum Laufen bewegen.

Leider bisher ohne Erfolg. Mit einem angepaßten BASCOM-Programm (sorry!) 
funktioniert die Ansteuerung...

Meine Hardware ist ein Butterfly mit direkt angeschlossenem Display.

Ich verwende WinAVR (20060421) mit Programmers Notepad 2.

Den Takt und die CPU habe ich angepaßt. Entsprechend der Anleitung. Die 
Pinbelegung ist analog meinem Bascom Programm. Es erscheint nichts auf 
dem Display.

Die Programmierung mit WinAVR funktioniert ebenfalls, da meine 
ASURO-Programme  laufen.

Hat jemand eine Idee, wo ich den Fehler noch suchen könnte? Hat jemand 
für meine Hardware schon einmal ein Programm compiliert?

Wer kann helfen?

Gruß Thomas!

von aethr (Gast)


Lesenswert?

@lupin

am trying to get a LPH display to run on an LPC2148 and am not having 
success. The code you posted looks similar to my port of disp.c. Looking 
at my scope, all signals look fine; cs is asserted low as is reset and 
sck and miso data are all there.

I connected rs to +, have you tried using software command/data or are 
you using rs?

What SPI settings do you have? Can you post your code including SPI? 
Have brought SPI speed down to 500k.

Any ideas what might be wrong?

Thanks,

aethr

von Lupin (Gast)


Lesenswert?

Sorry, i have no idea. because i don't have the code/hardware any more. 
I think RS is not connected on the LPH display.

von aethr (Gast)


Lesenswert?

@lupin

ok, thanks, digging further ;)

aethr

von aethr (Gast)


Lesenswert?

OK, have it working now. It needed a delay of about 2 us in the SPI 
write function. Digging through this extremely large thread I found 
Lupin needed to do this as well with his LPC setup.

For the record, can run SPI now at clk/8, the fastest possible for the 
LPC2148.

aethr

von Christian K. (christiank)


Lesenswert?

Hi aethr,

may i ask you for posting the source code for the LPC4148 here? That 
would save me and others the trouble of porting the code...

BR
  Christian

von aethr (Gast)


Lesenswert?

Hi Christian,

yes, I will. I do have to factor out the code from my project, so needs 
a little time.

While cleaning up the code, ran into a problem that I didn't have 
before. After I reset the LPC, the screen becomes faintly green colored 
instead of bright, a power cycle fixes the problem till the next reset.

Now I remember reading on this thread about it, but the thread has 
become so large, it's very hard to find back.. I do think the problem 
relates to timing reset and/or init sequences.

Anyone with a hint?

Thanks,

aethr

von aethr (Gast)


Lesenswert?

Quick note: indeed was a timing issue with reset. When the delays around 
reset become too large, screen doesn't initialize properly.

aethr

von aethr (Gast)


Lesenswert?

Spoke too soon.. after it worked for a while, the bad 'bleeched' colors 
came back. It's strange, when I power up the board+display, 
initialization is fine; nice vibrant colors.

When I give the board a reset, the display gets the init sequence as 
before, but the colors look very faint, with a shadowy appearance..

Anyone seen this?

Looking at the datasheet and the init sequence, I wonder about this:

LCD_RESET;    // reset display, low (pseudo code)
LCD_CS;      // CS is high during reset release

delay_ms(1);    // must be held low for at least 1 ms, page 48
LCD_RESET;    // release reset, high
delay_ms(10);
LCD_CS;      // select display, low

// starts at 58.8ms
lcd_comtype(0x00);
lcd_comdat(0x00,0x01);  // this actually starts the oscillator, so now 
wait at least 10 ms?


So after the reset goes high, a 10ms delay is given. Then a command type 
0x00 is given which starts the oscillator. As per datasheet, a 10ms 
delay should be issued, but this is not done in the original sequence.. 
why?

Also when I do use a delay after the osc. command, I don't see any 
change. I was hoping the osc. didn't have time enough to stabilize, 
hence the bad display quality.

Any ideas?

aethr

von aethr (Gast)


Lesenswert?

ACHTUNG, WARNING, don't drive the LPH display directly with 3.3V on 
logic and supply! After a day of operation, the display started to 
behave erratically; starting with faint colors after reset (but not 
after power up) and later displaying erroneous data before dying 
completely.

Also the logic lines were not able to go high anymore and kept a level 
of ~2V instead of 3.3V. Apparently logic was pulling considerable 
current as the LPC2148 got confused and couldn't finish initialization.

Ok, one dead LPH display.

Hooked up a new one with a 470/68 voltage divider on logic lines and 
2.9V supply; one happy display with nice colors and speed.

So whenever faint colors are seen on the display, power down immediately 
and fix voltage levels!

BTW, just before it died, had enabled vertical scrolling with just two 
commands, only too bad it wraps the screen around and doesn't do 
horizontal(?). The chip also supports interlaced drawing for animated 
graphics, logic operations and boundary drawing.. some more stuff to 
hack into ;)

aethr
ps: pulling the LPH apart revealed three white LEDs connected in series; 
this was of course expected.

von Hagen R. (hagen)


Lesenswert?

>> logic operations

only two of the six logic modes are present into serial communication. 
The important and most usefull modes don't work. The only useable modes 
are

LG0-2 = 000 Replace, normal mode
LG0-2 = 110 Write Data correspondend
LG0-2 = 111 Write Data not corresponend

The last two can be used to support transparency on fonts or bitmaps 
without filtering in software of the transparent color. On some 
circumstances this can speedup data transmission, eg. on small 
pixelparts that need less pixeldata compared to a rewrite of the address 
window and cursor.

All other modes seems to requiere a parallel data interface because they 
use the data-read-latch for the boolean operations. It seems this is not 
correctly read in SPI serial mode.

If it instead should work in your tests then inform me please. But i 
think i do it all right.

Scrolling is solved badly by the controller and splitscreens are not 
very usefull.

Remarkable are the very flexible memory adressing.


Greatings Hagen

von Hagen R. (hagen)


Lesenswert?

i forgot to say, my GLCD are ready for the LPH. Its based and most times 
compatible to my Nokia GLCD.

Best reagrds, hagen

von aethr (Gast)


Lesenswert?

Thanks Hagen for the response. A drawback of using display specific 
functionality is portability, I'll have a look at the thing and see what 
comes out.

This also raises a question about your glcd lib, I've seen two versions, 
one written in C and the other in AVR assembly. What version are you 
referring to? If it's in C I can use it on my ARM LPC2148 chip, which is 
much faster than the AVR and therefore doesn't need assembly. (and is 
portable as well)

aethr

von Hagen R. (hagen)


Lesenswert?

Its a fully rewrite in C. The mcu depended stuff are implented as 
macros. Thus should be easily portable.

Best Regards, Hagen

von Andreas B. (ofenandreas)


Lesenswert?

Hallo miteinander,
zuerst einmal ein ganz großes Kompliment an alle die hier so viel Arbeit 
reingesteckt haben! SUPER!!!

Ich habe folgendes Problem mit der GLCD - bis zum m128 alles o.k., aber 
nun möchte ich einen m2561 einsetzen, in der GLCD.INI neue Sektion 
eingefügt, Headerfiles besorgt. Dann versucht zu builden.

Jetzt haben aber die m***1 das  LCD_SPCR auf $2C und LCD_SPSR auf $2D. 
SBI und SBIS können aber nicht auf Add > 32 zugreifen - wird in 
GLCD_INIT.ASM Zeile 91 und 94 benutzt.
Man könnte in Register kopieren, bearbeiten und zurückschreiben - Meine 
Frage - welches Register benutzen (möglichts ohne 
Sicherungsnotwendigkeit).

Bis jetzt die einzige (gemeldete) Inkompatibilität - sind noch mehr 
Probleme zu erwarten?

Für Hilfe wäre ich dankbar.
Gruß Andreas

von Fabian B. (fabs)


Lesenswert?

@Hagen:
mag komisch klingen die Frage: wo finde ich deine GLCD-Lib? Ich hab 
gestern hier im Thread um im Forum gesucht, wurde aber nicht fündig...
Isses so offensichtlich dass ichs nicht sehe?

Gruß
Fabian

von Hagen R. (hagen)


Angehängte Dateien:

Lesenswert?

Die Nokia GLCD gibts in verschiedenen Versionen hier im Forum oder bei 
www.apetech.de. Allerdings sind die neusten Versionen hier im Forum -> 
Thread mit "Nokia 6100 Lib die zweite" oä.

Die GLCD fürs LPHxxxx kann bei mir per EMail angefragt werden -> 
hareddmann bei t bindestrich online punkt de. Frei veröffentlichen werde 
ich sie diesesmal nicht.

In kurz die Feature:

- Pixel, Linien, Rechtecke, abgerundete Rechtecke, Ellipsen, Kreise
- Fonts aufbauend auf Nokia GLCD 2.2, sprich mehrfarbig, komprimiert
- FontEditor für den Windows PC mit Import und Konvertierung von 
TrueType-Fonts
- Bitmaps in Unichron, Monochrom komprimiert per RLE, 3-15 Bit Farbtiefe 
komprimiert per Farbtabelle und quasi Huffman, 16 Bit Vollfarben 
unkomprimiert
- Bitmaps unterstützen Transparenz
- Dekomprimierung der Bitmaps läuft auf dem AVR mit 16Mhz und 8Mhz 
HW-SPI fast ohne Waitstates, dh. wir erreichen annährend vollen SPI 
Datendurchsatz beim Darstellen der Bitmaps obwohl noch Dekomprimiert 
wird.
- für die Bitmaps gibts vergleichbar zum FontEditor eine PC Software, 
sie kann JPEG,BMP,WMF,ICO,PNG importieren, skaliert die Bilder 
nötigenfalls auf Displaygröße runter, rotieren, spiegeln und ganz 
wichtig Farbreduzierung. Die druchschnittliche Kompressionsrate beträgt 
200% und ist damit effizienter als PNG. Export in C Header Dateien.
- Bitmaproutinen sind die einzigsten die Inline ASM Makros benutzen und 
somit inportabel sind. Der dazugehörige funktionale C Source ist aber 
noch enthalten, kann als wieder aktiviert werden.

Nicht drinnen ist das Clipping wie bei der Nokia GLCD. Es kosten viel 
Rechenpower, gerade wenn man nur in reinem C codet. In den meisten 
Fällen wird man eh Pixelexakt seine Grafiken zeichnen.
Ebenfalls nicht vorhanden ist die Rotation in 90 Grad bei den 
Fontzeichenroutinen. Man kann hardcoded die Orientation des Display 
einstellen in 90 Grad Schritten + Spiegelung, aber eben nicht dynamisch 
zur Laufzeit die Rotation der Fonts. Auch das ist ein Feature das 
nachimplementierbar ist aber meistens nicht benötigt wird.

Zusätzlich drinnen ist aber ein komplettes Menusystem.
- alle Daten im FLASH
- Event/Ereignisorientiert
- benutzt vollständig nur die Fontzeichenroutinen und glcdFillRect(), 
keine andere Grafikfunktion
- Anzeige von Icons pro Menu
- einstellbare Farben pro Menu
- komplette Bedienung funktioniert mit Rotary-Encoder, aber eigene 
Bedienungslogiken sind einfach durch ändern einer einzigsten Event 
Routine möglich
- Menus sind scrollbar
- die Menuitems zeigen ihre Caption an und gleichzeitg auch den Wert den 
man damit editieren kann, dh. im Menu selber kann man die einstellbaren 
Paramater anzeigen und editieren
 unterstütze Editoren sind -> Zahlen im Bereich von bis, Enums mit 
auswählbarer textanzeige pro Wert, Texte/Strings mit 
Löschen/Einrückungen/Cursor/Groß-Klein-Sonder Buchstaben/Ziffern

Die ganze Lib gibts als Source der
- komplett alles in einem enthält
- aufgesplittet nach jeder Funktion und somit kompilierbar als echte 
Lib-Library bei der der GCC-Linker nur die benötigten Funktionen 
einlinken kann

Insgesamt 65Kb an Sourcen. Im Aanhang das Menusytem+Bitmaps in Aktion.

Gruß Hagen




von Hagen R. (hagen)


Lesenswert?

Achso:

die Lib ist momentan nur füs LPHxxxx Display, da wir dort das offizielle 
Datenblatt des Controllers haben und dieser eben die nötigen DisplayRAM 
Addressierungen unterstützt damit wir das Display in jeder möglichen 
Ausrichtung/Einbauweise ansprechen können.

Nur 2 Funktionen -> Fonts/Bitmaps machen zusätzlich von speziellen 
Boolschen Operationen des Display gebrauch (Tranzparente Farbe 
ausblenden). Das lässt sich aber in beiden Funktionen auch in Software 
machen und sollte leicht abzuändern sein.

Die Ansteuerung der Hardware ist komplett mit Makros gemacht und richtet 
sich immer nach der gleichen Logik -> LCD selektieren -> 
Daten/Kommandomodus auswählen -> Pixeldaten senden -> Warten auf SPI -> 
LCD deselektieren. Es müsste also einfach sein die Lib an andere 
Displays anzupassen.

Eines muß man aber bedenken: Wenn man schon mit verschiedenen Pixelfonts 
und aufwendigen 16Bit Bitmaps/Icons und komfortablen Menus arbeiten 
möchte so ist klar das nur ein großer ATMega mit 16/20Mhz Takt und >= 
32Kb sinnvoll ist. Bei meinem Drumprojekt verbrauche ich fast die ganzen 
oberen 64Kb an FLASH eines ATMega128 für diese Daten. Der SPI Takt 
sollte 8Mhz sein da ansonsten die Ansteuerung des Displays zu langsam 
und damit flickerig wird. In meinem Projekt kann man die Menus absolut 
flüssig und verzögerungsfrei bedienen, auch beim Scrolling des Menus. 
Das ganze Drumprojekt benötigt zur Bedienung nur einen Rotaryencoder, 
wobei man dazu bedenken muß das man im Menu mit diesem Encoder auch sehr 
schnell zb. Namen als Strings eingeben kann.

Und wie immer -> Dokumentation ist keine ;)

Gruß Hagen

von Michael R. (rubi)


Lesenswert?

Hallo Hagen

Toll!
Gratuliere!

von Ralf (Gast)


Lesenswert?

Hallo,
ich finde das sehr interessant was Ihr hier geleistet habt. Respekt.

Ich habe ein Display mit dem Controller NT3911 hier vor mir liegen und 
habe festgestellt, dass der dem HD66773 bis auf 2 bit im Befehlssatz 
ansonsten genau gleicht.

Ich möchte das gerne ansteuern und hab auch schon eniges versucht nur 
klappt das irgendwie nicht. Ich glaube das initialisiert sich nicht 
richtig.
Meint Ihr Eure Routine funktioniert auch bei diesem Kontroller?

Falls ja, könntet Ihr die bitte mal posten oder an meine Email schicken?
ich arbeite mit einem MSP430 deswegen kann ich das wohl eher nicht so 
übernehmen.

Danke und liebe Grüße
Ralf

von Hagen R. (hagen)


Lesenswert?

Welche 2 Bits wären das ?

DU möchtest Hilfe also sendest DU eine EMail die man dann beantworten 
kann. Da du keine EMail angegeben hast kann man DIR keine EMail senden, 
ergo meinst du das man hier den Source posten sollte. Und wenn man das 
nicht möchte ?

Gruß Hagen

von Ralf W. (schumbi)


Lesenswert?

Hallo,
uieh sorry hatte eher so das Gefühl dass es sich hier um ein Forum 
handelt, wo man rein schreibt was man für Sorgen hat.
Und ich bin leider so neu hier, dass ich noch davon ausgegangen bin 
lieber niemanden gleich persönlich anzuschreiben.

Das Datenblatt für den NT3911 
(http://newsletter.spezial.de/pdfdata/NT3911_V05.zip)

Also die Unterschiede zwischen dem NT3911 ( Datenblatt im Anhang oben) 
sind dass der NT3911 im Gegensatz zum HD66773R ein paar veränderte und 
noch ein paar zusätzliche Register kennt.

1. der Device code für R00h ist 3911

2. R05h (Entry mode) hat ein benutztes Bit (DIT) mehr

3. 5 Register mehr:
  - R23h, R24h für Write data Mask
  - R25h, R26h als Compare register
  - R50h OP-Amp Control

Die Instruction Set Initialisierung ist die gleiche bis 7.(HD6673 ist 
das g Compare Register)

Ich betreibe den NT3911 mit einem MSP430 und zwar über das 16bit 
Interface.

Die Probleme mit denen ich kämpfe:

1. Was kommt zuerst?

Es gibt in den Datenblättern einmal die Instruction Set Initialisierung 
und dann noch den Instruction Setting Flow.  Mit welchem der beiden 
beginne ich den, wenn ich meinen Controller und das Display einschalte?
Oder ist die Instructionset Initialisierung automatisch vollzogen wenn 
der POR gemacht wird?

2. Die Befehle übermitteln

Muss ich, wenn ich einen neuen Befehl übermitteln will den NT3911 bzw 
HD66773 das irgendwie anzeigen? also muss ich das Schreibe-Signal 
toggeln?
Ich weiß Ihr macht das mit SPI und da wird eh ein für den Controller 
externer Takt verwendet aber vielleicht hat damit ja schon mal jemand 
Erfahrungen gemacht.


lG Ralf

von TeraByte (Gast)


Lesenswert?

Hallo S65-AVR Progger!

Vielleicht könnt ihr mir weiterhelfen!

Habe ebenfallt ein Atmega128 + S65 Display (scheinbar SPI-Mode, by 
Superkranz)

Nun habe ich folgendes Problem: Möchte gerne PowerBooster für die 
Hintergrundbeleuchtung einrichten und muss Pin PB7 auf ein anderen 
legen.
Nun, ich ändere im "define" den PB7 auf z.B. PB5 und nix passiert.

Display läuft immernoch auf PB7, woran kann das liegen.

Bin schon am verzweifeln, da ich definieren kann, was ich will, aber es 
ändert sicht nicht. Bitte nun um hilfe.

Viele grüße an euch, genialer Thread
Martin

von Hagen R. (hagen)


Lesenswert?

@Ralf:

wie gesagt steht oben meine EMail Adresse, ich kann dir meinen Source 
mailen.
Du benutzt 8Bit SPI und vor jeder "Aktion" mit dem Display sendet man

1.) Identifikations Byte mit Addresse des Displays + Kommando Bits die 
beschreiben ob man ein Daten/Command Register lesen/schreiben möchte.
2.) der Index des Registers das man ansprechen möchte
3.) die entsprechenden Daten die man schreiben möchte, beim Lesen sind 
es nur Dummybytes aber das ist eh überflüssig da beim SPI keine MOSI 
Leistung nach aussen geführt ist.

Das steht aber so auch im Datenblatt drinnen.

Gruß Hagen

von SuperUser (Gast)


Lesenswert?

Hallo Martin,

wenn du die libraray benutzt, musst du die auch neu kompilieren. 
Ansonsten durchsuch doch mal den Quellcode, ob irgendwo noch direkt PB7 
steht...

von TeraByte (Gast)


Lesenswert?

@SuperUser

Danke für deine Antwort, aber das versteht sich von selbst, dass man 
Änderungen neu kompiliert!

Das einzigste was mir aufgefallen ist, die .hex hat sich nicht erneuert, 
wenn ich in der .inc was ändere. Habe es schon versucht, die .hex zu 
löschen - kompilieren, aber änderungen trotzdem nicht drin.

Werd das problem beim Compiler noch erforschen: Denke irgenwo dort liegt 
das Prob.

von Michael R. (rubi)


Lesenswert?

Hallo Hagen

Hab mir 3 von diesen Displays bei Ebay gekauft.
Wärst Du bitte so nett und mailst mir den Quellcode?

LG
Michael

von Hagen R. (hagen)


Lesenswert?

@Michael:

ja wäre ich, nur kann ich nicht verstehen warum nun schon 10 Leute ohne 
Probleme an meine obige Addresse eine EMail schicken konnten, und du 
nicht in der Lage bist das gleiche zu tuen oder zumindestens deine EMail 
Adresse kund zu tuen. Wie soll ich dir das mailen ? Also, schreib an 
obige Adresse eine Mail und ich antworte mit einem Attachment. Ich meine 
das ist nicht zu viel verlangt von mir.

Gruß Hagen

von SuperUser (Gast)


Lesenswert?

@Martin
ich wollte nur darauf hinweisen, dass die library ein eigenes makefile 
hat. Ein make im programm folder kompiliert die nicht automatisch mit... 
Aber ich denke das war auch klar oder?

von TeraByte (Gast)


Lesenswert?

Hey Proggers,

mal ne Umfrage!

Hab ihr auch das problem, dass ihr das Display (PB1/CLK reicht auch) 
abnehmen müsst um euer Atmega per ISP zu programmieren?
Falls nicht, was ist bei euch anders?

Habe Das ET-BASE AVR Board mit Atmega128 und Display wie Superkranz 
beschrieben hat angeschlossen.

von dudu (Gast)


Lesenswert?

hallo aethr,

can post your c-source for LPC2148?

von MichiB (Gast)


Lesenswert?

Hallo zusammen,

habe interessiert diesen Thread gelesen!

Dickes Lob an alle!

Habe das Display gerade bestellt und möchte es mit
nem MSP benutzten.

Deshalb die Frage:

Gibt es schon eine Lib für den MSP?

Danke

von aethr (Gast)


Lesenswert?

@dudu

currently the ARM LPC code is tied into my project. I was planning to 
factor it out and post it here, but am working with Hagen to port his 
GLCD lib to the LPC.

Have basic graphic primitives working, but needs more work on the bitmap 
and menu functions.

Have you tried to compile the LPC version posted by Lupin on this 
thread?

Encountered any problems?

aethr

von dudu (Gast)


Lesenswert?

hallo aethr,

thanks for your reply. the only code what lupin has posted was display.c 
for an avr-controller and a lph-display.
maybe i have overlooked but nothing found.
i am looking for any easy routines for ARM7TDMI-LPC2148 and SHARP-LS020 
display like simple_display3.zip. but the include file inside is 
assembler for AVR. has anyone converted that into C ?
so my first try will be to convert that files into gnu-c for LPC21
48.

dudu

von aethr (Gast)


Angehängte Dateien:

Lesenswert?

Hi dudu,

please find attached my display routines adapted from different sources. 
No cleanup has been made, so bear any rough edges ;)

You need to provide your own SPI initialization and send byte functions; 
nothing special, all pretty standard. If you need info, mail me 
privately.

BTW, initialization is for the LPH variant, but you should have no 
problem changing this.

Have fun.

aethr

von Vladimir R. (sonycman)


Lesenswert?

Hi to all!
Anybody knows where to find datasheet for the most popular LS020 display 
or its LR38826 controller?
It seems that all the displays (LPH and L2F50) is pretty documented now, 
except for LS020... :((

von Vladimir R. (sonycman)


Lesenswert?

Dear H. Reddmann!
I`ve found your FontEditor (from the library package) very useful for 
me. It is simple and powerful enough.
Can you, please, help me to understand how to work with the .font files 
generated by the editor? Especially - how to decompress them?

von Hagen R. (hagen)


Lesenswert?

Yes i can help you ;)

First use the newest version i've attached. It contains a checkbox to 
explicitely tell the program not to compress the data. In older versions 
this descision was made automaticaly by the program, now with user 
invention.

There exist two possible formats of the font data:

1.) not compressed fonts
1
    struct _FONT_ {
2
       uint16_t   font_Size_in_Bytes_over_all_included_Size_it_self;
3
       uint8_t    font_Width_in_Pixel_for_fixed_drawing;
4
       uint8_t    font_Height_in_Pixel_for_all_Characters;
5
       uint8_t    font_Bits_per_Pixels;
6
       uint8_t    font_First_Char;
7
       uint8_t    font_Last_Char;
8
       uint8_t    font_Char_Widths[font_Last_Char - font_First_Char +1];
9
       uint8_t    font_data[];
10
    }

now the members

1.) the size in bytes of this structure, you can sequientially store 
more fonts in memory. If you known the address of the first Font you can 
use this member to iterate over all Fonts, from first over the next upto 
last.

2.) the maximal Width of each Character in Font. Its used if we want to 
draw the chars as fixed Fonts. The Fonts supports like true types two 
font styles -> fixed pitch and proportional pitch

3.) Height of each character in font. Contrary to the Width in my fonts 
we use allways for each char the same height declared in the struct.

4.) Bits per Pixel means the Color Depth of this font. Fonts are 
multicolor if needed and thus need more as one bit per Pixel as in 
monochrome. This member contains the power of two of colors used, or in 
other words the Bits per Pixel used. If it contains as example 2 then we 
use 2^2=4 colors and require 2 bits per Pixel. The most significant bit 
have special purposes, because we do'nt need all 8 Bits of this member 
(my fonts can only use maximal 256 colors, thus 8 would be the highest 
value for bits per pixel). Thus we have some bits free in this member to 
use for other purposes. The highest bits show use iff the font use 
compressed data or not.

5.) the font stores only charachters in a certain range, we save memory 
this way. The member font_First_char contains the character ASCII code 
of the first declared char in the font.

6.) this member stores the last used ASCII code

Thus in your drawing function you have to be checked if your ASCII code 
to draw is in range of this two members.

7.) this array contains for each charachter in range font_First_char 
upto font_Last_char they width in pixels. If a array entry contains zero 
then there is no character defined.

Thus in a second check you read the width of your ASCII code from this 
array. Iff it is zero there is no character defined, exit your function.

With this array it is easy to calculate the width in pixels of a given 
string.

Please remember, this width is the real used width of each character 
without right space for characters in ASCII range #0 upto #127. This one 
Pixel space (normaly) is virtualy painted first in my GLCD lib. All 
ASCII above #127 are block characters and have no such a virtual right 
spacing. This logic save us again memory space, because now we dont have 
to store this right most empty pixel column.

8.) font_Data[] member is an array of our characters. A characters is 
seqiuentially encoded from left outer column to right column, from top 
to bottom pixel line in each column. This is done without any padding 
bits or bytes, means full sequiential. This save again memory space and 
we have to see our font data as simple bit stream, eg. bit chunks of 
font_Bits_Per_Pixel bits large pixels.

As example a 9*11 pixel (9 pixel width, 12 pixel height) font with 4 
colors:

- font_Height is 11
- font_Width is 9 pixel maximal
- font_Bits_Per_Pixel would be 2

we have stored a character in this font wich is 7 pixel large, eg. need 
7*11*2 Bits = 154 bits are sequientaly needed in memory

Now, font_Data[] contains this stream of characters. How you seek to the 
beginning of a certain character ?

Iterate from first entry in font_Char_Widths[] upto current ASCII code 
-1. Accumulate all the widths into a local variable, multiply this with 
font_Bits_Per_Pixel and font_Height and you get the Bit-Offset into the 
Data where the beginnung of our character data is.

That seems at first a little bit confusing but is not. In this way we 
avoid the use of padding bits/bytes and use the requiered memory space 
without compression maximal. The needed overhead in computation is not 
big compared.

After you have examined the Bit-Offset you can easily divide it by 8 to 
get the byte offset eg. index into font_Data[] array. The modular 
remainder of Bit-Offset contains the bit start position of our 
datastream of our first data byte.

Now you read sequientialy chunks of as example 2 bits for a 4 color 
font. The two bits are a index into a global initialised glcd_Colors[] 
Color Table. Read out from this Table the real color an paint your one 
pixel. Begin drawing on left top most Pixel, column by column each with 
font_Height pixels until you have painted char_Widths[ASCII_code] 
columns.

In proportional painting we paint one or myabe two columns at right more 
if our character is <= #128.
In fixed font drawing we center our character to font_Width and paint 
the half pixel columns left, the char_Widths[ASCII_code] count columns 
of character and the ramaining right space columns to get a font_Width 
large char.

Next post explains the compressed font.

Best Regards, Hagen

von Hagen R. (hagen)


Angehängte Dateien:

Lesenswert?

Compressed Fonts use
1
    struct _FONT_ {
2
       uint16_t   font_Size_in_Bytes_over_all_included_Size_it_self;
3
       uint8_t    font_Width_in_Pixel_for_fixed_drawing;
4
       uint8_t    font_Height_in_Pixel_for_all_Characters;
5
       uint8_t    font_Bits_per_Pixels;
6
       uint8_t    font_First_Char;
7
       uint8_t    font_Last_Char;
8
       uint8_t    font_Char_Widths[font_Last_Char - font_First_Char +1];
9
       uint8_t    font_Byte_Padding;
10
       uint8_t    font_RLE_Table[3];
11
       uint8_t    font_Char_Size_in_Bytes[font_Last_Char - font_First_Char +1];
12
       uint8_t    font_data[];
13
    }

1.) font_Bits_Per_Pixel must have set the MSB to true to identify a 
compressed font.

2.) font_Byte_Padding is a multiply of Bytes wich we have used to pad 
our character data in font_Data[], explanation follows.

3.) font_RLE_Table[] contains 3 entries, but in realty there a 4. The 
first one, not saved entry is always 1.

4.) font_Char_Sizes[] contains the count of bytes used for each 
character in font_Data[]. We need this array to find the right 
beginning.
Because this array[] can only save a byte for one character, eg. the 
maximal data bytes of one characters can 256 bytes we have a problem on 
large fonts. To solve this we use font_Byte_Padding. If as example 
Font_Byte_Padding is 2 the all charcaters in our font use data chunks of 
a multiply of 2 bytes in length. Now our font_Char_Sizes[] entry stores 
the real bytecount divided by 2. A character in this font that need 127 
real data bytes would be thus consume 128 bytes and the entry in 
font_Char_Sizes[] would be 64. Thus we can now save characters with upto 
512 bytes each instead of only 256 bytes.

Thus in the computation of our start index into font_Data[] we iterate 
now over font_Char_Sizes[] from font_First_Char upto ASCII_code -1 and 
accumulate all sizes. After we mulptiply it with font_Byte_Padding and 
we have our index computed.

5.) the font_Data[].

Load the font_RLE[] Table into an array with 4 entries, the first entry 
must be initialized with 1.

This Table contains now a Run Length of Pixels to be painted in one 
Color.

As example a 4 color Font. We need 2 Bits to indentify the color in our 
Datastream. After this 2 bits we store 2 Bits of RLE Code, that is a 
index into our RLE Table. Load from the color index the real color from 
glcd_Colors[]. Load from RLE Code from RLE_Table[] the count of pixels 
to be painted in this color. Paint again from left outer Columns to 
right outer from top line to bottom.


In our example one pixel need in worst case 4 Bits in our stream. 2 bits 
color index and 2 bits RLE Table index. In best case, depended on RLE 
Table[1..3] we need 2 Bits color index and 2 bits RLE index, but we 
paint as example 13 Pixels in this color sequientialy, because in RLE 
Table[2] was saved 13.

If our RLE Table would be {1,2,5,13} and we have sequientialy to paint 
20 pixels in same color then our stream contains exactly 12 Bits. 2 Bits 
color + 2 bits RLE index = 3 -> 13 Pixel, then 2 bits again same color 
index, 2 Bits RLE Index = 2 -> 5 Pixel, then 2 bits same colorindex and 
2 bits RLE Table Index = 1 -> 2 Pixel.

The compression function in my Font Editor tries out now all possible 
combinations of this 4 entray RLE Table compared to the existing font 
datas to find the one solution wich would be need the smallest count of 
these chunks.

It was a conceptionaly descision of me to use smalles memory 
requierements as possible wit compact design and not to many expensive 
computation overhead on small MCUs.

Best Regards, Hagen

von Hagen R. (hagen)


Lesenswert?

sorry some errors ;)

On compressed font a chunk contains

2 Bits RLE Index
x Bits Color Index, where X == font_Bits_Per_Pixel.

The order is reversed to my last post ;)
1
      bitsmul = pgm_read_byte(&powerof2[bitscount & 0x07]);
2
      if (bitscount < 8) {
3
        bitscount += 8;
4
        bits |= pgm_read_byte_inc(data) * bitsmul;    // faster as shifting
5
      }
6
      pixelcount = 1;
7
      do {
8
        i = FontHeight;
9
        do {
10
          if (!(--pixelcount)) {
11
            pixelcount++;
12
            if (flags & 0x80) { // compresed Font ??
13
              pixelcount = rle[bits & 0x03];
14
              bits >>= 2;
15
              bitscount -= 2;
16
            }
17
            bitscount -= bitspixel;
18
            bitsmul = pgm_read_byte(&powerof2[bitscount & 0x07]);
19
            color = colors[bits & bitsmask];
20
            bits >>= bitspixel;
21
          }
22
          GLCD_WAIT();
23
          GLCD_OUT(H8(color));
24
          if (bitscount < 8) { // read in advance while we wait for SPI
25
            bitscount += 8;
26
            bits |= pgm_read_byte_inc(data) * bitsmul;   // faster as shifting
27
          }
28
          GLCD_WAIT();
29
          GLCD_OUT(L8(color));
30
        } while (--i);
31
      } while (--charwidth);

Here the inner most source cut of my S65 lib font routine (you can mail 
me iff you want to get the source).

Bits is our databuffer that is repeately filled from font_Data[]. We 
append these new datas read on most significant side and then right 
shift out these bits such as needed.

First we eaxtract on compressed fonts the lower most to bits to get the 
index in our Run Length Table. From this we load our PixelCount 
variable. On uncompressed fonts we do this not, instead set PixelCount 
to 1.

After this we shift right the Bits variable 2 bits. BitCount Variable 
stores the count of valid bits in Bits this we have to decrement it by 
2.

Then we load our color index into glcd_Colors[] array. Dependend on 
font_Bits_Per_Pixel we have to and mask Bits to get the index. After we 
shift right again variable Bits.

Now we have Color and the PixelCount to be set in this color examined, 
we paint it.

Variable BitsMul is a special thing for MCU that supports fast 
multiplication. On ATMega MCU as example we can shift left (one byte 
shifted into a word) faster by a multiplication as with ordinary shift
opcodes.

Logical, above source can be only used on compressed fonts with maximal 
2^6 colors, otherwise our 16bit Bits databuffer can be underflow. It can 
be easily rewritten when we expand variable Bits to 24 or 32 Bits width 
and if we check that always more as 2 + font_Bits_per_Pixel Bits are 
valid. One 256 colors fonts that are 2 + 8 + 8 = 18 bits maximal width 
for variable Bits.

Best Regards, Hagen

von Vladimir R. (sonycman)


Lesenswert?

Hagen Re wrote:

> Yes i can help you ;)

Thank you very much for an explanation!
I`ve got it :)

I`am just interesting, is there is a way to stop LCD controller from 
screen refreshing while data write is in progress?
It is better to see the whole picture at once, than observe appearance 
of each pixel...
There must be some synchronization between the data transfer and actual 
picture change, because the screen updates momentarily when LCD is in 
the phone.
Any ideas?

von Hagen R. (hagen)


Lesenswert?

Not to my knownledge. You cant stop the refreshing of the LCD, thats 
transparently done in background without affecting our communication 
trough SPI with it. Thus phone MCU done only one thing better as our 
lame small MCU,  they SPI works most realy faster.

On my S65 Library i worked with 8 Mhz SPI and my bitmap drawing 
functions get mostly the full troughput on decoding/decompression while 
SPI sends data. I get about 16 frames per second. But as example the S65 
LCD could be driven with 27 Mhz SPI instead of lame 8 Mhz. Of course 
with hardware SPI and not with some bit banging soft SPI ;) Thus i 
have'nt any problems to see "apperance of each pixel", even'nt with 
slower functions as with my font drawing functions (they are even more 
complex stuff in software, you known;). Currently i have the feeling 
that my lame 16 Mhz ATMega128 is on drawing a complex menu system faster 
as some commercial phones.

And we must strongly differentiate between the phone displays. Newer one 
use far more faster communications.

Best Regards Hagen

von Christian K. (christiank)


Lesenswert?

The mobile phone uses a copy of the display ram (shadow). The phone-µC 
itself writes only (very fast) to the shadow that is connected the µC 
bus. The shadow is copied after µC request (or automatically for video 
and camera) to the display by hardware. Therefor you can not see the 
display content build up pixel by pixel. The SPI clock frequency is 
13MHz -> 29ms is the shortest  screen refresh period (>30 frames/sec).

The copy-hardware and shadow function is part of the grafik controller 
chip in the phone. The grafik controller chip also takes care about 
camera functions.

If you think about the 46kByte you need for display shadow that is not 
suitable for small µC systems....



von Vladimir R. (sonycman)


Lesenswert?

Thanks for the answers :)

I did not mean really that I see how each pixel is changing during data 
write.
I`am talking about Vertical Synchronization.

I communicate with the display (LS020) through 12 MHz SPI of my AT91SAM7 
ARM controller. The whole screen transfer takes about 31,6 ms. Almost as 
in the phone.

>The SPI clock frequency is 13MHz -> 29ms is the shortest  screen refresh period 
(>30 frames/sec).
Yes, but the screen refresh (most likely) is twice as high. And display 
contents will be scanned and updated twice while data is fully 
transferred.
And this is the cause of so called "tearings" (I do`nt know how to name 
it exactly in english...).

>Therefor you can not see the display content build up pixel by pixel.
But, without vertical sync, its easy to see (during full screen data 
write - 31,6 ms) that the screen updates not at once.

In order to avoid this "tearings", the only high speed SPI is not 
enough.
There must be such a synchronization, and the phone does it somehow. But 
how?

At least, 12 MHz did not helps. I can try higher - up to 24 MHz with my 
controller. If the LCD can operate at that frequency, of course...

von Hagen R. (hagen)


Lesenswert?

Ok i understand now.

First on LCD there exists no Vertical Synchronization, there exists no 
vertical retrace like in CRT monitors ;)

But the LPHxxxx Display as Example supports a interlaced frame cycle 
control -> interlaced drive and high speed Burst RAM Write.

1.) HWM mode: we send 4 pixel and first after this the display put it 
into GRAM. This avoid jitter.

2.) interlaced drive: prevent flicker and is what you want. Read the 
HD66733R Datensheet on page 103.

On my experiments with my S65 library on LPHxxx displays i played around 
this interlaced drive control. Yes it avoid flicker but reduce 
remarkable the display quality if we display as example a large gray 
background and in the middle a sharp square. Then we see shaddow effects 
on the remaining gray area. Thats why i don't use it. I think it's only 
usefull when we display fast animations but never usefull for static 
displaying on menu sytems, graphics etc.pp.

Best Regards Hagen

von Vladimir R. (sonycman)


Lesenswert?

>First on LCD there exists no Vertical Synchronization, there exists no
>vertical retrace like in CRT monitors ;)

Maybe, but image building mechanisms are the same: 60 frames per second, 
"beam" goes from topmost row down to bottom. 176 rows each of 132 
pixels.

I`ve attached the image with explanations of these "tearings" (or 
flicker) I`am trying to avoid: 
http://www.sonycman.newmail.ru/LCD_Image_building.zip
LCD display refresh frequency is 60 Hz and the SPI speed is 12 MHz (30 
frames per second).

Does my LS020 (LR38826) is in any way compatible with HD66733 
controller?

Best regards,
Vladimir

von Hagen R. (hagen)


Lesenswert?

not compatible but very probable supports the controller same mechanism 
as the HD66733. But we don't know because we have'nt the original 
datasheet. Thats why i choose only the LPHxxxx displays.

I will try on my LPHxxxx display your example.

>Maybe, but image building mechanisms are the same: 60 frames per second,
>"beam" goes from topmost row down to bottom. 176 rows each of 132
>pixels.

Even not. Dependend on the LCD and the mounting the AC Drive of the 
scanlines can be any order. Mybe topdown or bottomup, mybe first top 
half in topdown and second half bottomup or even interlaced, lines by 
lines interleaved with upto 4 frames needed to display the full image 
one times or even pixel chunks interleaved. There exists many different 
drive controls compared to a common CRT monitor wich have a vertical 
retrace cycle, very long time to put in  hidden the next image.

Best regards, Hagen

von Thomas (Gast)


Lesenswert?

Hallo Hagen,

habe auch interesse an dem Quellcode. Könntest Du mir diesen bitte 
mailen ?

danke
Gruß
Thomas

von Thomas (Gast)


Lesenswert?

oops, E-Mailadresse: toastin ätt gmx punkt de

von MichiB (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

habe ein LS020 bei Ebay ersteigert.
Der Controller (MSP) läuft auf 2.9V.

Ich habe das Simple-Beispiel vom Superkranz umgesetzt.

Leider bekomme ich das Display nicht initialisiert,
scheint so, das Display bleibt weiss.

Aufruf:
  - LCD_Init
  - LCD_Test

Bin ein wengig verwirrt, da die Initialisierung im
Simple-Beispiel nicht dem PDF entspricht.

Bin für jeden Tipp dankvar.

von Vladimir R. (sonycman)


Angehängte Dateien:

Lesenswert?

Found some datasheet for LS020 LCD module.
It seems (see attachment) that two its interface pins - CS and RS - are 
bidirectional (input/output).
Interesting, what kind of data they can provide?

von Vladimir R. (sonycman)


Lesenswert?

Hello, Hagen Reddmann.
I`ve just finished writing basic routines for the text printing...
Thanks again :)
My next step will be into displaying the images converted by your 
S65-bitmap converter.
Would you be so kind to reveal to me structure of its output files?
RLE compression is used, I presume?

PS: What do you think about using GIF or PNG compressors? 256 colors 
will be enough for most cases...

von Hagen R. (hagen)


Lesenswert?

Yes i give you ;)

Last thing as first:

My compression is better as PNG !? ;) Yes, i thought it can't never so 
good as PNG or GIF but i compared the resulting filesizes, and get this 
result. Maybe, my assumption is that we use relatively small images 
compared to common use in GIF and/or PNG. The overhead for such small 
files in headers are bigger in ratio to the complete image in these 
formats. My headers are very small and my compression is realy primitve 
and straightforward.
And thats the more important thing, then we need a easy dataformat, 
instead of a complex LZW/LZH compressed GIF or much more complex PNG 
dataformat. PNG especialy supports much more different encoding 
schematas with larger need on memory or processor resources. Both are 
good for big PCs or fast ARMs but for my tiny ATMega i'am faster to my 
goal with a own format. I considered it at first but i was much faster 
with my own solution. As Example the Delphi program to convert, mirror, 
scale down, import and compress the images was done in about five hours. 
One hour later i finished my glcdDrawBitmap() (without optimization). I 
think in this shirt time i could'nt understand the PNG dataformat alone. 
That i get as side effect a better compression had me let wonder.

The argument "we need most times only 256 color images" was a "no no" 
for me. No, i need most times even images with far more colors, 
otherwise i could pay a lame monochrome LCD with fixed 2 lines in one 
font charset. Instead i payed for a 2^16 smart color display and even 
want to display colorfull images ;)


Ok the file format:

There exists 4 different formats:

1.) unichrome images, thats nothing others as a rectangle filled in one 
color. The header looks like
1
struct bitmap {
2
  uint8_t Width;
3
  uint8_t Height;
4
  uint8_t Bits_Per_Pixel;
5
  uint16_t BkColor; 
6
}

- Width in Pixels
- Height in Pixels
- Bits per Pixel, color depth == 0
- backgroundcolor

Paint a rectangle in given Width and Height relative to the coordinates 
X,Y filled with BkColor.

2.) full color images, each pixel is 16 Bit
1
struct bitmap {
2
  uint8_t Width;
3
  uint8_t Height;
4
  uint8_t Bits_Per_Pixel;
5
  uint16_t BkColor;
6
  uint16_t Pixels[Width*Height -1];
7
}

- width, height see above
- Bits per Pixel == 16
- Color, first left top Pixel color, most used as transparency color. If 
my glcdDrawBitmap() routine should paint this bitmap transparent then 
this color, eg. the top left pixel, marks this transparent color. In the 
LPHxxxx Display we can setup a special graphics raster operation that 
filter out all data sends with this color. Thus would'nt paint this 
pixels.
- Pixels[] the remaining pixel

Ah, i forgot, the Pixel data is line by line from left to right, eg. the 
natural order.

Calculate PixelCount = Width * Height, setup the first Pixel in BkColor 
the remaining  PixelCount -1 Pixel read as 16Bit from Data[].

3.) monochrome image, eg. 2 colors. This image format use real RLE 
compression but in a litte differnt format, especialy optimized for AVR 
processors.
1
struct bitmap {
2
  uint8_t Width;
3
  uint8_t Height;
4
  unit8_t Bits_Per_Pixel;
5
  uint16_t BkColor;
6
  uint16_t FgColor; 
7
  uint8_t Data[];
8
}

- Width, Height hm se above ;)
- Bits per Pixel == 1
- BkColor left top most pixel
- FgColor the second color used in monochrome images

Because BkColor contains the first top left Pixel our compressed Data[] 
have already one information that we do'nt need to encode at first.

Read 1 Byte from Data[] ->

Buffer = *Data++;
PixelBits = ((Buffer >> 4) +1) << 2;
Buffer &= 0x0F;
Buffer |= Buffer << 4;

We have read one RLE Code Byte. In the Low Nibble we have encoded a 4 
Bit Pixel Mask. As Example 0011b means: set 2 Pixel in BkColor and set 2 
Pixel in FgColor. In the High Nibble we have encoded the repeat count of 
such a 4 Pixel sequence. Iff we have 0000b in High Nibble then we must 
repeat one times the 4 Bit encoded sequence. Because my loop decrement 
the PixelBits on every pixel we have thus to compute PixelBits = 
((Buffer >> 4) +1) * 4; to get the real pixel count to setup. Now we 
fillup Buffer in the high nibble with its context form low nibble, eg. 
we ecpand our sequence from 4 Bit to 8 bit. Thats easy on AVR because 
they have a SWAP Instruction for nibbles. In our inner loop we set now 
Width*Height pixels, rotate Buffer one Bit left -> ROL(), check if 
lowest Bit is TRUE and select FgColor as Pixelcolor otehrwise FgColor. 
After we have setup PixelBits Pixel we must read the next RLE Code Byte. 
Decode it such as above and repeat.

4.) 3 upto 2^15 Color Bitmaps. Thats the most complex format, not realy 
;)
1
struct bitmap {
2
   uint8_t  Width;
3
   uint8_t  Height;
4
   uint8_t  Bits_Per_Pixel;
5
   uint16_t BkColor;
6
   uint16_t Color_Table_Size;
7
   uint16_t Color_Table[Color_Table_Size / 2];
8
   uint8_t  Data[];
9
}

- Bits_Per_Pixel between 2 upto 15
- BkColor see above
- Color_Table_Size, size in BYTES of following Color Table, with this 
member we could easy skip to member Data[] (our pointers).
- Color Table, contains sorted all used colors in the image, the next 
higher power of 2 of they count defines Bits_Per_Pixel.

Now Data[] contains a Bit Stream. So far as we read a 0 Bit we paint a 
Pixel in the current active Color. That is on startup logical BkColor. 
When we read a 1 Bit we get a new color. Then read Bits_Per_Pixel Bits 
from Data[] as Index into our Color_Table[]. Load the new Color from it, 
and paint one Pixel in this new color. Then again read from Data[] all 0 
Bits and set a pixel in this color until we have Width*Height Pixels set 
or we read a 1 Bit from Data[], the next color index into Color Table.

The Bits in Data[] are right justified, thus you load one Byte from 
Data[] and right shift out Bit by Bit.

Best Regards, Hagen
1
uint16_t colormasks[14] PROGMEM = {0x0006, 0x000E, 0x001E, 0x003E, 0x007E, 0x00FE, 0x01FE, 0x03FE, 0x07FE, 0x0FFE, 0x1FFE, 0x3FFE, 0x7FFE, 0xFFFE};
2
3
void glcdDrawBitmap(glcdCoord_t x, glcdCoord_t y, const prog_char* bitmap, uint8_t flags) {
4
5
6
#define GLCD_LOAD_BITS(data0, data2, databits, addr, bitsmul) \
7
   asm volatile(                            \
8
    "cpi   %2, lo8(16)"         "\n\t"  \
9
        "brsh  .%=2"                "\n\t"  \
10
        "movw  r30, %A3"            "\n\t"  \
11
        "lpm   r0, Z+"              "\n\t"  \
12
        "mul   r0, %4"              "\n\t"  \
13
        "cpi   %2, lo8(8)"          "\n\t"  \
14
        "brsh  .%=1"                "\n\t"  \
15
        "or    %A0, r0"             "\n\t"  \
16
        "or    %B0, r1"             "\n\t"  \
17
        "subi  %2, lo8(-(8))"       "\n\t"  \
18
        "lpm   r0, Z+"              "\n\t"  \
19
        "mul   r0, %4"              "\n\t"  \
20
".%=1:"                             "\n\t"  \
21
        "or    %B0, r0"             "\n\t"  \
22
        "or    %1, r1"              "\n\t"  \
23
        "subi  %2, lo8(-(8))"       "\n\t"  \
24
        "movw  %A3, r30"            "\n\t"  \
25
        "clr   r1"                  "\n\t"  \
26
".%=2:"                             "\n\t"  \
27
      : "=r" (data0),                     \
28
        "=r" (data2),                     \
29
        "=a" (databits),                  \
30
        "=r" (addr),                      \
31
        "=r" (bitsmul)                    \
32
      : "r" (data0),                      \
33
        "r" (data2),                      \
34
        "a" (databits),                   \
35
        "r" (addr),                       \
36
        "r" (bitsmul)                     \
37
        : "r0", "r1", "r30", "r31"          \
38
     );
39
40
#define GLCD_LOAD_COLOR(data0, data2, databits, colortable, colormask, bpp, bitsmul, bkcolor) \
41
   asm volatile(                            \
42
        "movw  r30, %A0"            "\n\t"  \
43
        "lsr   %1"                  "\n\t"  \
44
        "ror   %B0"                 "\n\t"  \
45
        "ror   %A0"                 "\n\t"  \
46
        "brcs  .%=0"                "\n\t"  \
47
        "dec   %2"                  "\n\t"  \
48
        "lsr   %6"                  "\n\t"  \
49
        "brne  .%=3"                "\n\t"  \
50
        "ori   %6, lo8(0x80)"       "\n\t"  \
51
        "rjmp  .%=3"                "\n\t"  \
52
".%=0:"                             "\n\t"  \
53
        "and   r30, %A4"            "\n\t"  \
54
        "and   r31, %B4"            "\n\t"  \
55
        "add   r30, %A3"            "\n\t"  \
56
        "adc   r31, %B3"            "\n\t"  \
57
        "lpm   %A7, Z+"             "\n\t"  \
58
        "lpm   %B7, Z"              "\n\t"  \
59
        "mov   r30, %5"             "\n\t"  \
60
        "cpi   r30, lo8(8)"         "\n\t"  \
61
        "brlo  .%=1"                "\n\t"  \
62
        "mov   %A0, %B0"            "\n\t"  \
63
        "mov   %B0, %1"             "\n\t"  \
64
        "clr   %1"                  "\n\t"  \
65
        "andi  r30, lo8(0x07)"      "\n\t"  \
66
        "breq  .%=2"                "\n\t"  \
67
".%=1:"                             "\n\t"  \
68
        "lsr   %1"                  "\n\t"  \
69
        "ror   %B0"                 "\n\t"  \
70
        "ror   %A0"                 "\n\t"  \
71
        "dec   r30"                 "\n\t"  \
72
        "brne  .%=1"                "\n\t"  \
73
".%=2:"                             "\n\t"  \
74
        "sub   %2, %5"              "\n\t"  \
75
        "dec   %2"                  "\n\t"  \
76
        "mov   r30, %2"             "\n\t"  \
77
        "andi  r30, lo8(0x07)"      "\n\t"  \
78
        "clr   r31"                 "\n\t"  \
79
        "subi  r30, lo8(-(powerof2))"   "\n\t"  \
80
        "sbci  r31, hi8(-(powerof2))"   "\n\t"  \
81
        "lpm   %6, Z"               "\n\t"  \
82
".%=3:"                             "\n\t"  \
83
      : "=r" (data0),                     \
84
        "=r" (data2),                     \
85
        "=a" (databits),                  \
86
        "=r" (colortable),                \
87
        "=r" (colormask),                 \
88
        "=r" (bpp),                       \
89
        "=r" (bitsmul),                   \
90
        "=r" (bkcolor)                    \
91
      : "r" (data0),                      \
92
        "r" (data2),                      \
93
        "a" (databits),                   \
94
        "r" (colortable),                 \
95
        "r" (colormask),                  \
96
        "r" (bpp),                        \
97
        "r" (bitsmul),                    \
98
        "r" (bkcolor)                     \
99
        : "r30", "r31"                      \
100
     );
101
102
103
    if (!(bitmap)) return;
104
    uint8_t w = pgm_read_byte_inc(bitmap);
105
    if (!(w)) return;
106
    uint8_t h = pgm_read_byte_inc(bitmap);
107
    if (!(h)) return;
108
    uint8_t bpp = pgm_read_byte_inc(bitmap);
109
    uint16_t bkcolor = pgm_read_word_inc(bitmap);
110
    if (flags & GLCD_BMP_USECOLORS) bkcolor = glcd.Colors[0];
111
    if (bpp == 0) {
112
      glcdFillRect(x, y, x + w -1, y + h -1, bkcolor);
113
      return;
114
    }
115
    GLCD_CS_ON();
116
    GLCD_SETADDR(x, y);
117
    GLCD_WINDOW(x, y, x + w -1, y + h -1);
118
    if (flags & GLCD_BMP_TRANSPARENT) {
119
      GLCD_SETMODE(0x38 | GLCD_ROP_WNE);
120
      GLCD_SETCOMPARE(bkcolor);
121
    } else {
122
      GLCD_SETMODE(0x38);
123
    }
124
    GLCD_STARTDATA();
125
    if (bpp == 1) {// monochrome
126
      uint16_t pixelcount = w * h;
127
      uint16_t fgcolor = pgm_read_word_inc(bitmap);
128
      if (flags & GLCD_BMP_USECOLORS) fgcolor = glcd.Colors[1];
129
      uint16_t color = bkcolor;
130
      if (flags & GLCD_BMP_SWAPCOLORS) {
131
        bkcolor = fgcolor;
132
        fgcolor = color;
133
        color   = bkcolor;
134
      }
135
      uint8_t data = pgm_read_byte_inc(bitmap);
136
      uint8_t pixelbits = ((data >> 4) +1) << 2;
137
      data &= 0x0F;
138
      uint8_t temp = data << 4;
139
      data |= temp;
140
      do {
141
        GLCD_WAIT();
142
        GLCD_OUT(H8(color));
143
        if (!(--pixelbits)) {
144
          data = pgm_read_byte_inc(bitmap);
145
          pixelbits = ((data >> 4) +1) << 2;
146
          data &= 0x0F;
147
          uint8_t temp = data << 4;
148
          data |= temp;
149
        }
150
        GLCD_WAIT();
151
        GLCD_OUT(L8(color));
152
        ROL(data);                                // rotate data, data = (data << 1) | (data >> 7);
153
        color = bkcolor;
154
        if (data & 0x01) color = fgcolor;
155
      } while (--pixelcount);
156
    } else if (bpp == 16) { // full color
157
      uint16_t pixelcount = w * h;
158
      while (pixelcount) {
159
        GLCD_WAIT();
160
        GLCD_OUT(H8(bkcolor));
161
        pixelcount--;
162
        GLCD_WAIT();
163
        GLCD_OUT(L8(bkcolor));
164
        bkcolor = pgm_read_word_inc(bitmap);
165
      }
166
    } else {// color, 2 upto 15 BPP
167
      uint16_t colortablesize = pgm_read_word_inc(bitmap);
168
      uint8_t* colortable = (uint8_t*)bitmap;
169
      bitmap += colortablesize;
170
      uint16_t colormask = pgm_read_word(&colormasks[bpp -2]);
171
      uint8_t databits = 0, data2 = 0, bitsmul = 1;
172
      uint16_t data0 = 0;
173
//      uint32_t data = 0;
174
      uint16_t pixelcount = w * h;
175
      do {
176
        GLCD_WAIT();
177
        GLCD_OUT(H8(bkcolor));
178
        pixelcount--;
179
        GLCD_LOAD_BITS(data0, data2, databits, bitmap, bitsmul);
180
181
//        while (databits < 16) {
182
//          uint16_t t = pgm_read_byte_inc(bitmap) * bitsmul;
183
//          if (databits >= 8) data |= (uint32_t)t << 8;
184
//            else data |= t;
185
//          databits += 8;
186
//        }
187
188
        GLCD_WAIT();
189
        GLCD_OUT(L8(bkcolor));
190
191
        GLCD_LOAD_COLOR(data0, data2, databits, colortable, colormask, bpp, bitsmul, bkcolor);
192
193
//        if (LL8(data) & 0x01) {
194
//          bkcolor = pgm_read_word(colortable + (L16(data) & colormask));
195
//          data >>= bpp;
196
//          databits -= bpp;
197
//          bitsmul = pgm_read_byte(&powerof2[databits & 0x07]);
198
//        }
199
//        bitsmul >>= 1;
200
//        if (!(bitsmul)) bitsmul |= 0x80;
201
//        data >>= 1;
202
//        databits--;
203
      } while (pixelcount);
204
    }
205
    GLCD_WAIT();
206
    GLCD_CS_PULSE();
207
    GLCD_SETMODE(0x30);
208
    GLCD_CS_OFF();
209
}

  

von Ippolit V. (ellar)


Lesenswert?

Aber warum muss man nur "pure" LCD-Module nehmen, Schnitstelle basteln 
und Driver schreben? Ist nich einfacher S65 "As is" nehmen, und mit die 
ganze J2ME power bequem und einfach über RS232 oder USB arbeiteiten? Und 
dazu Handy Tastatur für Eingabe benutzen?

von Hagen R. (hagen)


Lesenswert?

Weil ich kein Telefon an einem Schlagzeug brauche ?

Gruß Hagen

von Holger H. (holger-h-hennef) Benutzerseite


Lesenswert?

abbo

von MichiB (Gast)


Lesenswert?

Hallo zusammen,

versuche seit Tagen ein LS020 zu initialisieren.

Controller: MSP430F169
SPI: 4MHz

Habe viel mit den Timings und co. herumgespielt.

Es hat sich nie auch nur ein Pixel verändert.

Ist das Display defekt?

Ich sollte doch eigentlich nach dem Reset schon bunte Pixel sehen oder?

Besten Dank

von Ippolit V. (ellar)


Angehängte Dateien:

Lesenswert?

Hagen Re wrote:
> Weil ich kein Telefon an einem Schlagzeug brauche ?
>
> Gruß Hagen

ja, aber:
- für Lösung mit raw Display braucht man viel mehr Arbeit investieren, 
als mit Java Handy
- S65 sind letzte Handys mit serieller Schnittstelle zwischen Display 
und main Prozessor, folgende Generation kommt mit 8 Bit parallel.
- muss man für jede Displaytype eigene Driver schreiben
und mit Java kann man attached screenshot sofort kriegen

von Vladimir R. (sonycman)


Lesenswert?

Hagen Re wrote:
> Yes i give you ;)

Thanks!
You`re the best :)

Best regards
Vladimir

von james (Gast)


Lesenswert?

Hallo

Ich habe ein Problem mit der ausgabe von Bitmaps und TEXT auf dem 
Display. Die Ausgabe von Rechtecken Kreisen und s.w. funktioniert aber 
wenn ich ein bitmap augeben will kommt nur ein schwarzes rechteck 
genauso wenn ich ein TEXT ausgeben will.
Folgenden Code habe ich z.B. benutzt:

    glcdFillRect(110,110,130,130,WHITE);     // ! funzt
    glcdSelectFont(menufont);
    glcdDrawText("TEST", 12, 0);             // ! funzt nicht
    glcdDrawBitmap(20, 20, logo_bmp, 0);     // ! funzt nicht

Mus ich vorher noch irgendetwas beachten?
 #include "menufnt.h" und #include "logo.h" ist vorhanden.

Noch etwas wenn ich ein bitmap mit swarz weiß sende dann klappt es!

Danke für die Hilfe!

von Hagen R. (hagen)


Lesenswert?

ist das Bitmap als PROGMEM_UPPER deklariert und hast du die Section im 
MakeFile ? Schau dir mal mein Drum Projekt Source + MakeFile an.

Falls du die Bitmaps nicht in einer eigenen FLASH Section speichern 
möchtest, dann gehe in glcdDrawBitmap() und entferne das Makro 
SET_RAMZ(1) oder setze es auf 0.

Ich habe das gemacht weil ich in meinem ATMega128-Drum-Projekt mit den 
großen Bitmaps auf Probleme mit dem Compiler stieß, er wollte es nicht 
mehr kompilieren. Zudem spare ich mir so die ständige Berechnung einer 
24 Bit Adresse ins FLASH -> RAMPZ:ZH:ZL -> bei jedem Zugriff um nur 1 
Byte aus dem FLASH zu laden. Also: Section textupper ins Makefile die 
zb. an Addresse 0x11000 beginnt. Alle Bitmaps als PROGMEM_UPPER -> 
textupper -> deklarieren, und fertig. Vorteil: andere FLASH Konstanten, 
wie aufwändiges Menusystem, Fonts usw. liegen gemeinsam mit dem Code am 
Anfang des FLASHs. Am Ende liegen nur die großen Bitmaps.

Gruß Hagen

von Hagen R. (hagen)


Lesenswert?

beim Text hast du vorher

1.) einen Font eingebunden ?
2.) glcdSelectFont(dein_font) aufgerufen ?
3.) in glcd.Colors[0..3] die Farben gesetzt ?

Gruß Hagen

von james (Gast)


Lesenswert?

@ Hagen

Vielen Dank!

Ich arbeite mit dem Atmega32 und da hat das SET_RAMZ(0)geholfen.

Gruß Ewert

von ratatatata (Gast)


Lesenswert?

Hallo Leute.

Hab auch gerade das Display aus meinem alten S65 ausgebaut, nach nen 
paar mal probieren und dem richtigen timing hab ich ihn auch prima 
initialisieren können.

jetz hab ich aber ein problem.. er scheint mir keine cmds 
entgegenzunehmen! ich kann ihm schön daten schicken, er inkrementiert 
den pointer und zeigt alles perfekt an aber ich kann den pointer eben 
nicht verändern :/

das ist meine init sequenz:
1
    WORD init1[] = {0xFDFD, 0xFDFD};
2
    lcd_sendCmd(init1, arraysize(init1));
3
    _delay_ms(50);      
4
    WORD init2[] = {0xEF00, 0xEE04, 0x1B04, 0xFEFE, 0xFEFE, 0xEF90, 0x4A04, 0x7F3F, 0xEE04, 0x4306};
5
    lcd_sendCmd(init2, arraysize(init2));
6
    _delay_ms(7);      
7
    WORD init3[] = {0xEF90, 0x0983, 0x0800, 0x0BAF, 0x0A00, 0x0500, 0x0600, 0x0700, 0xEF00, 0xEE0C, 0xEF90, 0x0080, 0xEFB0, 0x4902, 0xEF00, 0x7F01, 0xE181, 0xE202, 0xE276, 0xE183};
8
    lcd_sendCmd(init3, arraysize(init3));    
9
    _delay_ms(50);      
10
    WORD init4[] = {0x8001};//, 0xEF90, 0x0000};
11
    lcd_sendCmd(init4, arraysize(init4));
(habe es mit und ohne dem abschließenden 0xEF900000 probiert)

und hier mein versuch den pixel bei 50|50 zu weissen:
1
    WORD cmd[] = {0xEF80, 0x1800, (0x1200+50), (0x1500+50), (0x1300+50), (0x1600+50)};
2
    lcd_sendCmd(cmd, arraysize(cmd));
3
    cbi(PORTLCD, PLCD_RS);
4
    spi_send((WORD)0xFFFF);

hat jemand vlt ein tip für mich? es ist egal welches cmd ich zum 
verändern des pointers nehme, es funktioniert keins :/

von Jens D. (jens) Benutzerseite


Lesenswert?

Hallo,

ich versuche nun seit 5 Stunden das LCD ans Laufen zu brinngen, leider 
vergebens.

Wie wichtig sind die Timings?
Zu viel warten kein Thema oder doch ein Thema?

Wie sieht es mit den SPI Settings aus?
Ich nutze inen SAM7..

Hier das CS Register
  s_pSpi->SPI_CSR[0] = AT91C_SPI_NCPHA         // (SPI) Display
                        //AT91C_SPI_CSAAT
                       | AT91C_SPI_BITS_16
                       | 55<< 8 //AT91C_SPI_SCB  // (SPI) Serial Clock 
Baud Rate
                       | 55<<16   //AT91C_SPI_DLYBS
                       | 55<<24;   //AT91C_SPI_DLYBCT;  // (SPI) Delay 
Between Consecutive Transfers
Da habe ich schon unterschiedliche Werte ausgetestet leider ohne Erfolg.

Jens

von ratatatata (Gast)


Lesenswert?

ok habs grad mal für dich getestet, die zeit nach init1 is seehr 
unkritisch, funktioniert alles zw. 1 und 200 ms (mehr habe ich nicht 
versucht ;))
nach der zweiten sequenz solltest du dir aber nicht zuviel zeit lassen, 
von 1-7ms klappts perfekt, darüber hats bei mir nicht mehr funktioniert.
zw. sequenz 3 und 4 ists wieder dasselbe wie nach 1

also nochmal zusammengefasst:
  --------
   init1
      1-200ms (ich nehme 50)
   init2
      1-7ms   (ich nehme 7)
   init3
      1-200ms (ich nehme 50)
   init4
  --------

von Jens D. (jens) Benutzerseite


Lesenswert?

Danke,
könnte sein, dass es das bei mir ist.

Die Befehle kann ich die in 16Bit rueber schieben, oder ist das 
Interface nur 8Bit Breit?

von ratatatata (Gast)


Lesenswert?

die befehle an sichn solln 16bit sein, wies mit deinem µc aussieht weis 
ich aber nich.
falls du aber 2 byte auf einma rüberkriegen solltest pass auf dass das 
msb(yte) zuerst übertragen wird.

und kannst du mal kuggn ob die graphic-memory-zeiger-veränderten cmds 
bei dir gehn wenn alles klappt?

von Jens D. (jens) Benutzerseite


Lesenswert?

Die funktionieren (LS020) auf dem AVR ohne Probleme ;)

von ratatatata (Gast)


Lesenswert?

verdammt.. kannst mir mal dein code geben?

der nimmt meine befehle irgendwie nciht entgegen ://
aber er unterscheidet zwischen daten und befehls-byte des hab ich 
festgestellt.

ich kann den grafik speicher nur inkrementel beschreiben, nix verändern 
und das neeeervt :D

von Jens D. (jens) Benutzerseite


Lesenswert?

Hallo,

ich habe heute mal mich etwas mehr mit dem LCD auseinander gesetzt, und 
mus sagen WOW.
Ich habs hinbekommen mit knapp 50MHz SPI Clock anzusprechen.

Controller ist der SAM7.
Nun setz ich mich ersteinmal an das Thema FONTs etc mal sehn, was raus 
kommt.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Das Programm von Mike Bird befindet sich hier und heisst 
BMPConvert16.zip
da der Link oben tot ist findet man es hier:

http://home.arcor.de/dirk.milewski/seite72.html

für unsere BASCOM und Assembler Freunde.







von Alex (Gast)


Lesenswert?

Hallo, wie befestigt bzw. kontaktiert Ihr eigentlich das Display auf 
einer Platine. Heissklebepistole und freiverdrahtes ist sicherlicher 
moeglich. Gibt es da noch bessere Varianten ?? Das momentan meist 
verfügbare LS020.. hat ja scheinbar keine richtigen Lötpunkte oder ?


Zweite Frage: Hagen verweist auf eine GLCD fuer das LS020..., Christian 
hat mal eine angepasste GLCD lib fuer das LPH gepostet. Welches Display 
ist hinsichtlich der Nutzung der GLCD lib besser geeignet. Lohnt es sich 
nach der doch mittlerweile schlecht zu bekommenen LPH Version zu suchen. 
Soweit ich gelesen habe unterstuetz das LS020 "More advanced RAM 
addressing modes".


Achso zum Hintergrund, bin auf der Suche nach einer mittelgrossen 
Anzeige fuer eine Steuerung, soll nix professionelles werden allerdings 
auch nicht gleich nach einem halben Jahr alles auseinanderfallen. 
Momentan nehme ich noch ein Standart 2x16 per SPI.

Danke und Gruss Alex


von Fasti (Gast)


Lesenswert?

Hi!

Also die Lib von Christian ist für das LS020. Von Hagen gibts die fürs 
LPH und fürs L2F50 gibts leider keine Lib. Also LS020 oder LPH kaufen.

ciao

Fasti

von Michele B. (luxx) Benutzerseite


Lesenswert?

ich habe mal eine frage: das datenblatt des controllers ist doch 
inzwischen bekannt oder?
Dann müsste die powerdown sequenz doch auch bekannt sein oder?

Weil ich verwende das LS020xxx Display und zu diesem steht in dem PDF 
bei powerdown nix dabei außer halt de reset methode...

Es wurden ja 2 Datenblatter reingestellt, beide von Hitachi, sind das 
überhaupt die Controller für die LS020xxx Displays oder gilt das nur für 
die anderen Typen?

MFG
luxx

von M. S. (dudu)


Lesenswert?

hallo an alle,

ich schliesse mich mal fragend an luxx beitrag an: wie steht es um das 
LS020- gibt es eine spec dafuer? koennte die mal jemand posten oder per 
mail verteilen?

gruss dudu

von Dirk Schlage (Gast)


Lesenswert?

Hallo,
ich versuche das LS020xxx an einem AT90USB1287 bzw. einem Mega48 mit der 
kleinen Testsoftware bzw. der Lib von Christian Kranz zum Laufen zu 
bringen.
Leider sind da manche Register im Registerfile an Adressen höher 31, was 
sich in der Fehlermeldung
Error: number must be less than 32 winavr
beim Übersetzen von LCD.asm zeigt.

Ich habe daraufhin
1
SPI_SEND:   
2
    sbi SPCR,SPE        ;enable SPI
3
    out SPDR,r24        ;load byte in SPI data register
4
SPI_SEND_0: 
5
    sbis    SPSR,SPIF
zu
1
SPI_SEND:   
2
    push    r30      ;!!! 
3
    in     r30, SPCR
4
    sbr     r30, SPE
5
    out     SPCR, r30
6
  
7
    out SPDR,r24        ;load byte in SPI data register
8
SPI_SEND_0: 
9
    in     r30, SPSR
10
    sbrs     r30,SPIF
11
..
12
    pop r30        ;!!!
13
    ret
geändert.
Leider tut sich auf dem Display momentan noch nichts.

Da es hier ja noch jede Menge andere Unwägbarkeiten gibt.
Spannung, Taktrate, Displayverkabelung...
hier meine Fragen:

Hat jemand schon den Code an einen derartigen Prozessor angepasst?
Gibt es sonst irgendwelche Erfahrungen über Fallstricke?
Gibt es Testcodes für AVR in C, die ohne Assembler, evtl auch ohne 
Hardware-SPI das Display erfolgreich ansteuern?

Gruß
Dirk Schlage

von Jens D. (jens) Benutzerseite


Lesenswert?

Hallo,

diese Register kannst du nur über den SRAM ansprehen, wenn diese zu hoch 
liegen.

Ich mein das war mit ST - Store Indirect From Register to data space 
using Index X

Gruss Jens

von MichiB (Gast)


Lesenswert?

Hallo,

es geht um das LPH.

Ich benötige die Konfiguration der Pixel Position.

Ich lade das Bitmap von einer SD Karten, die sich am
selben SPI-Bus befindet.

Danach muss ich die aktuelle Pixel Position setzen.

Kennt jemand die Befehle?

von Wigbert P. (wigbert) Benutzerseite


Lesenswert?

Hallo,
kaum hat man das LS20.... zum laufen gekriegt,
fangen die Probleme schon an.
Ich will meine Hintergrundfarbe prog.
Leider habe ich vergeblich versucht eine 16 Bit Farbtabelle
zu finden. 24 Bit ist an jeder "Ecke" zu haben.
Oder anders: der Hintergrund soll zum Display meines Yaesu Tranceiver
passen.Wäre Rotbraun oder so.
Mit probieren habe ich es schon stundenlang versucht.
Hat jemand da was parat?
Dank für Eure Hilfe.


Wigbert

von Jens (Gast)


Lesenswert?

Hallo,

wieso Probleme?

#define RGB_16(col) ((col& 0xf80000)>>8) | ((col& 0x00FC00)>>5) | ((col& 
0x0000F8)>>3)


und dann fillscreen(RGB_16(0xff0000)) fuer Rot

Tabellen kannst du nun die 24Bit aus HTML etc nehmen..

von Wigbert P. (wigbert) Benutzerseite


Lesenswert?

Hallo Jens,

kapier ich nicht.

ff für Rot wäre binär 11111111 also 8 Bit.
ich hab doch aber nur 11111 also 5 Bit Rot , 6 Bit grün , 5 Bit blau
oder wandelst Du das mit der #define um?
Bin Bascom Fan und da declariere ich zB. rot
Const Rot = &B1111100000000000
aber das müsste egal sein.


Wigbert

von Jens (Gast)


Lesenswert?

Ja,

Ich wandel das in dem Makro nur um (etwas einfacher zu lesen)
es reicht, wenn du die letzten 2 bzw. 3 stellen wegschneidest und dann 
schiebst.

von James (Gast)


Lesenswert?

Hallo!

Wie schaff ich es mit einem ATmega32 auch zwei Displays unabhängig 
voneinander anzusteuern. Oder ist es grundsätzlich nicht möglich?
Theoretisch brauche ich nur zwei unabhängige CS (Chip Select) welches 
zurzeit an der SPI Schnittstelle am Pin SS hängt. Oder mach ich da ein 
Denkfehler?

Danke für eure Hilfe

von SuperUser (Gast)


Lesenswert?

Kein Denkfehler. Zwei unabhängige Chipselect und den SPI Bus parallel 
anschliessen sollte funktionieren. Ich habe z.B. am SPI Bus auch noch 
die SD-Karte parallel zum Display hängen (mit eigenem Chip Select)

von James (Gast)


Lesenswert?

Danke für die schnelle Antwort. Werde es am WE ausprobieren.

von Mircro=>DIsP_chix (Gast)


Lesenswert?

Hi,

Weis jemand zufällig ob es irgendwie geht ein AV Eingang an das Display 
zu bringen. Also ein Videosignal das über 2 Drähte kommt Irgendwie auf 
dem Display anzeigen zu lassen.

Wenn es jemand weiß, soll er es mir bitte sagen(is sehr extrem wichtig 
für mein nächstes projekt.)Kann auch ein Schaltplan für ne 
Vorschaltplatine oder sowas in der Art sein.

Ich bedanke mich schonmal sehr im vorraus bei dem, der mir sagt ob bzw. 
wie mann es macht.

Grüße von Micro=>DIsP_chix

von Gast (Gast)


Lesenswert?

Wird wohl nicht so einfach gehen. Das Videosignal ist Analog
und das Display möchte Digitale Daten.
Du müsstest das Videosignal Digitalisieren , Zwischenspeichern,
Skalieren und danach an das Display per SPI schicken.
Z.b. mit einem SAA7111 als AD Wandler ,
großes CPLD mit viel SRAM dran , AVR o.ä. um den SAA7111
per I2C zu konfigurieren, etc etc ....
Da ist es einfacher und billiger ein TFT mit AV Eingang in
ähnlicher Größe zu kaufen (Liliput).

von Klaus R. (ruebi)


Lesenswert?

Das Display wird digital mittels entsprechender Display-Befehle 
angesteuert. Du aber möchtest einen analogen AV-Eingang. Der damit 
verbundene Aufwand käme  mit Sicherheit deutlich höher, als wenn Du in 
den nächsten Geiz-ist-Geil-Markt gehst und Dir dort ein LC-Display mit 
analogem AV-Eingang kaufst. Oder schau mal bei iBlöd unter dem Stichwort 
"Auto DVD Player Sonnenblende" nach. Dort bekommst Du ein 7 Zoll Farb 
LC-Display mit AV-Eingang und DVD-Player für ca 80 Teuro.

von Mircro=>DIsP_chix (Gast)


Lesenswert?

Danke für deine Antwort

ABER:
Ich wollte einen AV-Eingang an das Display bringen, weil ich auf dem 
Display Design-Effekte anzeigen wollte.
Also PowerPoint Präsentation über einen Computer=>AV Adapter anschließen

Fals doch noch jemand weiß wie man es macht, BITTE SAGT ES MIR!!!

Yours Micro=>DIsP_chix

von Ben (lightning)


Lesenswert?

Da ist es doch viel einfacher so ein 7" Monitor zu kaufen und dort
die Designeffekte anzuzeigen als auf so einem kleinen Display.
130x130px sind nichts im Vergleich zu 640x480 oder so.
Gib mal in Paint die beiden Pixelmaße ein und vergleiche mal.

von Mircro=>DIsP_chix (Gast)


Lesenswert?

Ja Recht hast du ja aber ich brauche AV auf dem S65 Display weil ich auf 
der Oberfläche, auf der das Dislay hinsoll, nicht genug platz für einen 
7" Monitor
habe.Und ausserdem brauche wie gesagt für einen Designeffekt.Groß 
angemerkt für einen KLEINEN Designeffekt. Darum brauche ich irgendwas 
womit ich ein AV-Signal auf das Handy-Display Kriege.

Wie gesagt wenn jemand weiß wie man es machen kann, bitte sagt ees 
mir!!!!!

von Mircro=>DIsP_chix (Gast)


Lesenswert?

OK
bevor ich die AV Sache mache,probier ich lieber mal diese andre sache 
aus.
Hab aber keinen wirklichen plan wie ichs machen soll,
Ok,also

Ich baue diese Controllerr-Platine vom Schlatplan auf Superkranz.de und 
verbinde sie mit mit dem Display soweit sogut, aber wass dann, wie macht 
man dann weiter?

Grüße,Micro=>DIsP_chix

von Gast (Gast)


Lesenswert?

Dann Programmierst du den Controller auf der Controller Platine , 
versuchst den Sourcecode zu verstehen, versuchst das Display zu 
verstehen und wenn Du das alles durch hast wirst Du erkennen das es 
nicht geht ein AV Signal ohne großen Hard und Software Aufwand an das 
Display zu bringen.
Schau doch mal nach den sog. Lilliput TFTs , sind 1,8 Zoll und haben 
schon eine AV Eingang. Such einfach mal in der Halsabschneider und 
Sofort Abzock Bucht nach "1,8" Lilliput"

von Mircro=>DIsP_chix (Gast)


Lesenswert?

Wie Programmier ich den denn und kann vieleicht jemand den passenden 
code als txt datei im Anhang mitsenden.

von Mircro=>DIsP_chix (Gast)


Lesenswert?

Ok, aslo keinen AV.
Dann mach ich eben die sache, die hier die ganze Zeit beschrieben wird. 
Zumbeispiel dieses Hello World Testprogramm, oder noch besser, ich hab 
gehört das man auch n' Kleines Multimeter auf dem Display anzeigen 
lassen kann, denn der ATmega128 hat ja auch einen Messeingang. Also 
nochmal vonvorne.
Ich baue diese Steuerplatine samt display zusammen...
dann muss ich diese Platine warscheinlich mit dem Coputer programmieren 
schätz ich mal...
warscheinlich muss man einen code auf die Platine überspielen, den der 
ATmega beim Einschalten erkennt und der dann ein Bild auf dem Display 
anzeigen lässt.

Welches Programm muss ich nehmen???
Wie verbinde ich die Platine überhaupt mit meinenm Rechner???
Und wie lautet der Code???

Alles sachen die ich dafür warscheinlich wissen muss aber nicht weiß!
Deshalb bitte ich darum mir die sachen zu erklären und am besten wäre 
noch der Code als txt Datei beigefügt.

Ich bedanke mich schonmal im vorraus für die Person die es mir sagt!

Grüße, Micro=>DIsP_chix

von Mike (Gast)


Lesenswert?

Ich würde dir erstmal raten dich in die Programmierung von µC´s 
einzuarbeiten bevor du dich gleich an sowas traust !

Bring erstmal ein paar LED´s zum leuchten, frag Tasten ab und so 
weiter...

von Ben (lightning)


Lesenswert?

Ein guter Anfang ist das AVR-Tutorial...

Außerdem wäre ein neuer Post auch kein Schaden, denn
dieser hier bezieht sich auf das S65 Display und wird
durch solche Anfängerfragen nur (entschuldigung) zugemüllt.

von Mircro=>DIsP_chix (Gast)


Lesenswert?

sehr sehr nett :-(

Ach ne, weiß ich auch.
Led's hab ich schon zum leuchten gebracht, und wieviele das wahren.
Ich wollte einfach mal einen neuen anfang in andre schaltungen wagen, 
aber es ist ja sehr shcwirig wie es scheint, wenn einem ja sowieso 
keiner helfen möchte :-(

Wers mir trotzdem noch erklären will nur zu.

von Mike (Gast)


Lesenswert?

Also wenn man dein Posting oben ließt kann ich mir nicht vorstellen das 
du
LED´s mit nem µC zum leuchten gebracht hast!
Oder wie soll man diese Aussage

Zitat "Welches Programm muss ich nehmen???
Wie verbinde ich die Platine überhaupt mit meinenm Rechner???
Und wie lautet der Code???"

deuten?

Kann man eigentlich nur so deuten das du noch nicht in diesem Bereich 
gemacht hast.
Acker erst mal das Tutorial durch, denn dort werden dir auch diese 3 
Fragen beantwortet.

Geholfen wird dir in dem Forum hier auf alle Fälle aber sollte auch 
schon etwas Wissen vorhanden sein.

von Mircro=>DIsP_chix (Gast)


Lesenswert?

Ich habe doch schon wissen in Elektronik.

Einige meiner Abgeschossenen Projekte:

30 Sekunden Sprachrekorder basirend auf IC 1416
9 Kanal LED Lauflicht basirend auf Dezimalzähler-IC 4017
Nano Leucht Ei mit Zeitsteuerung
u.v.m.

Ich möchte einfach in eine Andre Richtung Elektronik setzten und 
ungefähr vorstellen wie dass geht kann ichs mir ja auch.

O.k. dann les ich mir das Tutorial mal durch, zum Zweiten mal.

Danach kann ich doch wieder Fragen?

von Wigbert P. (wigbert) Benutzerseite


Lesenswert?

Hallo Mirco,
geh mal zu http://www.comwebnet.de/
Dort haben wir die ersten "Gehversuche" mit s65 in Bascom hinterlegt.
Vielleicht werden dann einige Fragen beantwortet sein.
und wenn du die Grundlagen beherrschst, kannst Du hier ruhig 
weiterfragen.


Wigbert

von Stefan_Z (Gast)


Lesenswert?

Ich hab jetzt auch so ein Display (LS020) und auch die ganze Listings 
für Bascom.
Allerdings würde ich gerne noch mehr über das Display wissen. Die 
Init-Sequenzen erschließen sich mir z.B. nicht wirklich...
Gibt es vielleicht ein Datenblatt zu dem Teil?

von MisterNix (Gast)


Lesenswert?

Stefan_Z

Lies mal den Thread hier, da wirst du es finden //oder auch nicht ;)

Da das LCD von den Japsen kommt wirst du kaum ein Datenblatt bekommen.
Es sei du nimmst mal eben 10k ab.

von Martin Heintze (Gast)


Lesenswert?

hallo erstmal...ich bin zufällig auf diesen thrat gestoßen, da ich die 
möglichkeit hatte besagtes handy auszuschlachten..... nun bin ich also 
im besitz des lsh20xxx displays, eines atmnega16(16mhz) und den avr 
stk500 dev board. die frage ist, ob es eine möglichkeit gibt, 
umrauszubekommen ob das display kaputt ist, da es bis jetzt außer das 
leuchten der hintergrundbeleuchung noch nichts von sich gegeben hat. die 
stromversorgeung wird über ein netzteil mit einstellbaren 2.9V 
realisiert und der ausgagspegel das stk500 habe ich auf auf 3.8V 
eingestellt(ausgäge laufen exakt auf 2,9V). ich habe alles durchgemessen 
und keine fehler festgestellt
wenn ich das richtig verstanden hab müsste das dsp wenigstens rot 
werden, wenn ich den simple_display3 code auf dem mega16 ausführ...hab 
aber auch schon diverse andere versionen dies hier gibt ausprobiert.

hat jemand ne idee?, wär nett wenn sich jeamdn bei mir im forum hier, 
per icq(340245493) oder per mail meldet(martinheintze@msn.com).
bin grad echt etwas frustriert.... viele dank schon mal...und geniale 
arbeit soweit !!

von Der Hubert (Gast)


Lesenswert?

Welches der 3 verfügbaren Displays ist denn nun am geeignetsten ??

von Moien (Gast)


Lesenswert?

Kommt ganz drauf an. Eigentlich gibt es nicht das beste Display für ALLE 
Personen. Es gibt manche die findes das besser, und dann welche die 
finden dieses besser und andre die findes jenes am besten. Ich Jedoch 
würde dir dass mit der Braunen Platine emfehlen. Aber is deine 
entscheidung.
-----------------------------------------
Ein Mini hasser sagte mal:
"Gott schütze uns vor Sturm und Wind, und vor den Autos die aus England 
sind."
Soweit ich weiß is der Mini aber von BMW und somit aus Bayern. Fazit=
SEHR SEHR SEHR DUMMER AUTOSCHRAUBER DER DAZU NOCH AUS MÜNCHEN IST

von Moien (Gast)


Lesenswert?

Meldet sich mal jemand, mein Beitrag is immer hin schon 68 Minuten alt. 
Kleiner Scherz :-)

von Moien (Gast)


Lesenswert?

Als ich abgeschikt hab, stand auf meinem Funkwecker 00:12

von Kevin D. (Firma: none) (thunderbirdje)


Lesenswert?

Hallo everyone

Hopefully you don't mind that this post is in English (can't write 
German just a little understanding because I speak Dutch and English).

I tried the last getting a Siemens S65 display to work... After one 
week, I finally get 'random noise (all pixels light up in a different 
color'.

Can someone help me with that? Or does someone has the correct init 
codes, maybe a simple example program wich turns on some pixel(s) or 
draw a char?

I'm using the Arduino NG Board (http://www.arduino.cc) en the 
environment (Arduino-0008) which is basically AVR-GCC with a bootloader.

I do also have a blog at http://www.arduinoprojects.blogspot.com where 
you can read mij 'experience' ;-)

I hope someone of you can help me or get this project running.

Thanks a lot in advance!

Andy

von M. B. (mbode001)


Lesenswert?

Hallo,
ich hatte schon vor längerer Zeit ein LS020 mit den Routinen von 
Christian zum Laufen gebracht. Als einzige Änderung hatte ich auf 
Soft-SPI umgestellt und alles lief auf Anhieb auf einem mega8 
(mittlerweile: mega168).
Danach hatte ich vom gleichen ebay-Handler zwei L2F50 Displays bekommen,
die ich im Moment versuche, zum Laufen zu bringen. Ich verwende einen 
mega168.

Meine Versuche:
1. simple-code von Christian, Pins angepaßt und mein Soft-SPI (der beim 
LS020 funktionierte)
Ergebnis: nix!

2. simple-code von Christian, Pins angepaßt mit original Hard-SPI
Ergebnis: nix!

3. Version 1. aber RS-Signal gedreht (wie bei LS020)
Ergebnis: Wenn in der init-sequenz lcd_wrcmd(DISON); kommt, dann 
schaltet das Display ein und man sieht Zufallswerte/Rauschen, aber 
danach funktionieren keine weiteren Kommandos, wie DISOFF,DISINVERT etc.
Wenn ich dann ein fill_screen() mit allen möglichen Farben durchtickere, 
dann wird das Display zwischendurch mal ganz oder teilweise weiß.

Hat jemand eine Idee?

Ich werde meinen Test-Code mal entrümpeln und anhängen. Ist im Moment 
für Außenstehende unlesbar (wie üblich bei mir, wenn ich zu lange an 
etwas rumteste...)!

Gruß,

Matthias

von Alex (Gast)


Lesenswert?

Hi,

wo ist eigentlich auf ebay das P30... einzuordnen. Hier wird bisher 
immer nur vom

L2F50..
LPH...
LS020...

geschrieben ? Gibt leider nicht mal allzu viel neu zu kaufen.

Alex

von pay.c (Gast)


Lesenswert?

Also den LS020 findet man immer wieder mal. Kostenpunkt derzeit sogar 
unter 10 Euronen (Versand blöderweise fast 5 Euro). Der LS020 wird 
übrigens bei ein paar Händlern fälschlicherweise als LS02B... 
bezeichnet. Stimmt nicht, schaut man sich das Bild an, ist es immer ein 
LS020B... also beruhigt kaufen. Hier mal ein Verkäufer, der die öfters 
hat (notfalls anschreiben): numan02003 (für 7,90 + 4,90 Versand)

Grüße!

von Jens D. (jens) Benutzerseite


Lesenswert?

Hallo,

ich habe das LS020 mit 48MHz am laufen (AT91SAM7S)
Kann mir jemand sagen, ob und wie ich den Kontrast / helligkeit 
veraendert bekomme? bzw wie ich den Pointer nur eins weiter stellen 
kann?

von Alex (Gast)


Lesenswert?

numan02003 bietet zwar laut Ueberschrift
"Original Siemens LCD DISPLAY S65 M65 CX65 S M CX 65 NEU" das neu an 
aber im Text steht dann:
" - Das Display ist leicht gebraucht. (teils mit Display Schurtfolio)"

Keine Ahnung was man davon halten soll, zumal er auch welche neu mit 
Torx für 20 Euro hat, wo eben der bewusste Satz fehlt. Schutzfolie ist 
mir egal aber Kratzer etc wäre mir nicht egal.

@ pay.c   Wie sah den dein Display aus ??


Danke Alex

von pay.c (Gast)


Lesenswert?

Sorry erstmal für die späte AW. Habe erst vor ein paar Tagen zum ersten 
Mal bei dem Typen bestellt, Display ist aber schon unterwegs (im 
Versand). Sobald er hier ist, lasse ich Dich wissen, wie das Display 
ausschaut und ob alles iO ist. Von den Bewertungen her schaut er ja an 
und für sich ganz gut aus. Wenn er zerkratzte Displays verchecken würde, 
hätte er, denke ich, deutlich schlechtere Meinungen im Profil. Aber mal 
guggen, ich geb Bescheid! :)

von tecdroid (Gast)


Lesenswert?

Hi!

Ich schau mir das ganze gerade an und frage mich, für was das CS-Signal 
gut ist.
RS ist der R/W - Selektor. Data und Clock sind auch klar. Aaaber was 
meint CS?
Der Hintergrund ist, dass ich gern versuchen möchte- ähnlich NDS 2 
Displays anzusteuern..

von Alex (Gast)


Lesenswert?

CS = Chip Select :)

Alex

von µluxx .. (uluxx) Benutzerseite


Lesenswert?

> RS ist der R/W - Selektor. Data und Clock sind auch klar. Aaaber was
> meint CS?
> Der Hintergrund ist, dass ich gern versuchen möchte- ähnlich NDS 2
> Displays anzusteuern..

Wer solche Fragen stellt sollte nochmal bei den Basics anfangen....


CS ist Chipselect wie schon oben gesagt, es dient dazu wenn mehrere 
Teilnehmer am selben Bus hängen, demjenigen für den die Daten bestimmt 
sind zu sagen, pass auf, das hier ist für dich, die die nicht angewählt 
sind ignorieren die Daten.

uLuxx

von pay.c (Gast)


Lesenswert?

@Alex: Also leider IST das Display gebraucht und hat einen kleinen 
Kratzer. Mich störts jetzt nicht weiter, da das Display sowieso mein 
"Auprobierdisplay" wird und keine dermaßene Funktion übernehmen wird. 
Aber man sieh halt, daß der Display gebraucht ist.

von tecdroid (Gast)


Lesenswert?

ich hatt's mir zwar gedacht, aber ich geh lieber auf nummer sicher.. hab 
schon zu viele mehrdeutige Abkürzungen gesehen. sry, wenn ich euch damit 
nerve.
Bin auch eigentlich Programmierer, kein Elektroniker.

von µluxx .. (uluxx) Benutzerseite


Lesenswert?

achso ja dann, nix für ungut...

von Manfred (Gast)


Lesenswert?

Hi, ich habe schon viele der gebrauchten LS020 Displays gekauft 
(mittlerweile nicht mehr - warum: s.u.). Durchgängig, d.h. bei mind. 65% 
ist zu bemerken: Kleine Kratzer und Macken auf der Displayfläche, die 
leider bei eingeschalteter Beleuchtung meist deutlich zu sehen sind 
(sehen dann teilweise wie defekte Pixel aus, also Sch....).
Ausserdem ist die Helligkeit dermaßen unterschiedlich bei den Displays 
(fällt natürlich erst dann auf, wenn man mehrere davon hat), was darauf 
hin deutet, dass beim Großteil der Gebrauchtdisplays die LEDs der 
Hintergrundbeleuchtung bereits am Ende ihrer Lebensdauer angelangt sind. 
Daher wurden sie vermutlich auch ausgemustert - was sollte es sonst für 
einen Grund dafür geben? So jedes 10. bis 20. Display ist auch defekt 
(intern gebrochen). Die werden immer schön als "geprüft" verkauft 
-stimmt im Leben nicht. Dann wären nicht gesplitterte und total 
versiffte dabei gewesen.
Fazit: Finger weg davon! Ich gebe mittlerweile lieber das doppelte aus 
und bekomme ein sauberes, neues ungebrauchtes Display mit Schutzfolie. 
Das hält dann auch entsprechend lange.

Manfred

von pay.c (Gast)


Lesenswert?

Blöde Frage, Manfred: Wo bekommst Du die her? :)

von Alex F. (alexf)


Lesenswert?

Hallo LS020 Nutzer,

Nutzt hier jemand die "More advanced RAM addressing modes" wie auf 
http://www.superkranz.de/christian/S65_Display/DisplayRamAccess.html 
beschrieben ??

Folgendes Problem, ich definiere 3 mal im "mirror image, -90 degree " 
Mode einen schmalen Bildschirmausschnitt, immer mit der selbe Funktion 
bei mir daher eigentlich auch keine x y Vertauschung möglich. Zwei mal 
davon macht er es richtig und erzeugt die Zeichenkette, das 3.Mal 
definiert er einen Block als wäre x y vertauscht was natürlich dann die 
Zeichendarstellung unmöglich macht. Setzte ich vor dem 3.Mal einfach 
mittels 0xEF90, 0x0504 einen Windows resize auf Maximum und danach wie 
üblich die alte Windowdefinition funktioniert das prima. Siehe auch das 
Bild im Anhang fuer den Schlechtfall. Mit Workaround ist das 3.Fenster 
wirklich als neue Zeile unten drunter zu sehen.

Ich habe daher den Verdacht das die advance Modies irgendwelche 
Einschränkungen haben oder mit relativen Adressen arbeiten. Wäre schon 
wenn da jemand seine Erfahrungen mit beitragen kann und etwas Licht ins 
Dunkle bringt.


Danke Alex

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Kann jemand kurz sagen welche Displayversion sich am geeignetesten 
erwiesen hat?

von Avr N. (avrnix) Benutzerseite


Lesenswert?

LS020

von Jens D. (jens) Benutzerseite


Lesenswert?

Nur leider gibt es dazu kaum Befehle, die man nutzen kann.
Oder hat jemand ein paar Möglichkeiten gefunden den Pointer zB. nur eins 
weiter zu setzen OHNE ein pixel zu setzen?

von Alex F. (alexf)


Lesenswert?

Leider nicht, musst halt das Fenster komplett neusetzen und dann dort 
weitermachen.

Alex

von pay.c (Gast)


Lesenswert?

@Jens: Naja, es gäbe die Möglichkeit, den Screen Section passend zu 
setzen. Kommt darauf an, was Du machen willst, für einen einzelnen Pixel 
ist das zwar übelst Aufwand (2 Befehle für Position und dann den Pixel 
schreiben), aber funzen könnte es. Ich bin mir nur nicht sicher, ob man 
die Befehle 0x06YS und 0x07XS verwenden kann, ohne das 0xEF90 und 0x05OR 
davor stehen, einfach mal ausprobieren. Code siehe hier: 
http://www.superkranz.de/christian/S65_Display/DisplayProgramming.html 
(unter Screen Sections)

von Hans-Christian (Gast)


Lesenswert?

Ich habe gestern mein L2F50xx von Ebay bekommen, angeschlossen und es 
funktionierte sofort mit der "Simple Test Software" von Christian Ks 
Homepage. Ich verwende einen ATmega32 bei 16MHz und konnte ihn an meinem 
Labornetzteil bei 2.9V betreiben, womit ich mir dieses Levelgeshifte 
erspare. Vielen 1ooo Dank für diese tolle Arbeit von Christian.

von Marc (Gast)


Lesenswert?

Interessiert mich auch..

von Avr N. (balze)


Lesenswert?

Hallo zusammen,

ist die Seite vom "SUPERKRANZ" down??

Was nun ?

MfG,

balze

P.S.: Jetzt wollte ich mich mal mit dem S65 Display befassen und der 
"God of S65 LCD programing" ist mit seiner Seite vom Netz :(

P.P.S.: Gibt es einen Mirror vonder Seite? Waere ueber jeden Hinweis 
dankbar.

von Martin (Gast)


Lesenswert?


von Ben (lightning)


Angehängte Dateien:

Lesenswert?

In meinem PDF steht alles was man dazu braucht(nur kein code)
...hoffe du kannst was damit anfangen bis die Seite wieder
online ist.

Gruß Lightning

von Avr N. (balze)


Lesenswert?

Danke fuer Eure schnelle Hilfe !!!


MfG,

balze

von Christian K. (Gast)


Lesenswert?

Nach Provider-Umzug (von 1&1 nach strato) ist die Seite jetzt wieder 
online.

von eugen (Gast)


Lesenswert?

Hello!
Have anybody library for LS020 written for CodeVision?

von Dmitry (Gast)


Lesenswert?

Hi !

Does anybody have datasheet for LS020 display (LR38826 controller)?

von Peter B. (payce)


Lesenswert?

Nope, and chances are near to zero to get some as this display is nearly 
not manufactured new anymore. So the companies don´t want to spread 
the datasheet, they wanna sell the new stuff. The LS020 displays will 
anyhow be available for the next years as there are more than enough 
reserves for hobbyists.

von Flo S. (tuxianer)


Lesenswert?

hi,
ich wollt mir auch mal ein paar zulegen. Welche Typ ist denn zu 
empfehlen?

von Avr N. (avrnix) Benutzerseite


Lesenswert?


von gast (Gast)


Lesenswert?

ich hab vor einen mega644 an das LCD zu hängen

habe 2 möglichkeiten :

A: den controller + LCD bei 2,9V betrieben und hoffen das der 644 bei 
2,9V noch die 8MHz packt

b: den controller bei 3,3V laufen lassen
    und spannungsteiler ( geht das net auch mit schnellen dioden ) 
einsetzen ...

irgendwo muss ich ja anpassen

weil der controller ja wieder andere sachen ansteuern soll

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Das GLCD sollte auch 3,3V ab können, hatte das mal diesbezüglich nach 
gefragt.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Wenn du das nur n paar mal privat (also nicht in serie) bauen willst 
kannst du einfach mal deine controller durchtesten, mein mega16 macht 
bei 2,9V noch volle 16MHz. Wenn man in Serie baut, kann man sich dadrauf 
natürlich nicht mehr so verlassen ;)

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

Hallo,

ich habe das S65 vor einigen Tagen mit der einfachen Testsoftware auf 
von CK zum laufen gebracht. Läuft alles prima und problemlos, bisher tut 
es das was ich will. Da das Display nacher einmal mehr ausgeben soll als 
nur ein bisschen Text und nen bunten Hintergrund und ich keine Zeit habe 
eigene Routinen zu entwickeln wollte ich nun die
GLCD-Lib einbinden um auch komplexere Dinge auf den Bildschirm zu 
bringen.

Mit der Installation von Bibliotheken habe ich keine große Erfahrung, 
und so erschließt sich mir auch nach mehrmaligem lesen der 
Installationsanleitung nicht, wie genau ich die Bibliothek installieren 
soll. Vor allem finde ich bei mir keine compile.bat. Ausserdem entstehen 
bei mir beim Entzippen andere Ordner als in der Installation angegeben. 
Könnte mir jemand kurz erlären wie genau ich die Bibliothek einbinde ?

Ich nutze AvrStudio 4.13 SP2 in Verbindung mit Winavr-20070525.

Netten Gruß,

Marc

von SuperUser (Gast)


Lesenswert?

Hi,

ich schreibe das hier aus der Ferne, habe gerade keine Installation bei 
der ich nachschauen kann....

Im Grunde geht das mit der Library so:
- Nachdem du das zip-file ausgepackt hast, gibt es ein Verzeichnis mit 
den entsprechenden sourcen der library.
- Dort gibt es auch ein makefile. Das must du mit make in diesem 
Verzeichnis ausführen. Theoretisch sollte es auch mit deiner neueren AVR 
software version funktionieren. Entwickelt wurde das natürlich mit einer 
älteren Version.
- als Ergebnis gibt es ein lib file. Das lib file musst du später zu 
deinem binary dazulinken. Einfach als Objekt beim linken mit angeben.
- Bei deinem Quelltext musst du die benötigten header files der library 
(im include Verzeichnis) "includieren".
- Mit der library wird aber auch ein testprogram mitgeliefert. Dort 
findest du ein makefile das du als Beispiel für den build process nutzen 
kannst. Das Testprogram muss extra compiliert werden (wieder mit make im 
Directory des Testprogramms. (u.U. musst du deine Hardware anpassen!)
- Das Testprogram kannst du auch als Anleitung benutzen, wie die 
verschiedenen Library Funktionen benutzt werden können.

Es kann sein, dass die Installations-Anweisung auf die du dich beziehst 
noch von der Original-Library stammt und dann nicht exakt passt.

von Dmitry (Gast)


Lesenswert?


von Manuel G. (manuelg)


Lesenswert?

Hallo

Ich hab mir gerade das Display bestellt und werde in den nächsten Tagen 
versuchen das ganze zum laufen zu bringen.

Ich hab noch ein paar Fragen:

Mein Board/AVR läuft mit 3.3 Volt. Kann ich nun damit direkt ins display 
rein oder brauch ich noch einen Spannunsteiler.

Auf dem Board habe ich eben nur 3.3 Volt zu Verfügung. Die 
Hintergrundbeleuchtung benötigt ja laut Schaltplan 15V.
Kann ich mir irgendwie aus den 3.3V die 15V auf "relativ" einfache Art 
erzeugen ?

von Avr N. (avrnix) Benutzerseite


Lesenswert?

http://comwebnet.co.funpic.de/seite47.php
Forum: http://comwebnet.weimars.net/forum/

Bloß musst du noch ein Kondi und Diode vielleicht dazu bauen, ist 
eigentlich für 5 V. das Display sollte auch auf 3,3V laufen

von Jürgen E. (sid)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

seit einiger Zeit spiele ich schon mit dem S65 Display herum. Immer ein
kleiner Dron im Auge war für mich der ASM part. Einen
Geschwindigkeitsvorteil sollte diese Teil nicht sonderlich bringen, da
der Controller in den SPI Funktionen zu 99% warten muss und die C und
ASM Funktionen in dieser Beziehung dann ähnlich lang sind.
Zudem kommt noch hinzu das die ASM Funktionen nicht für einen Atmega644
funktionieren, da dort u.a. das SPCR Register > Adresse 31 ist.

Der Rewrite braucht eigentlich genauso viel Speicher, da ich einige
unnötige Sachen weg gelassen habe. Zudem habe ich die Init-Sequenzen in
das Flash verschoben.

Auch die obere Schichte der Lbr habe ich (im vergleich zum HelloWorld
Programm) erweitert. Nach der klareren Trennung (lcd.h muss nicht mehr
inkludiert werden) wird nun auch die Font nicht mehr in den RAM geladen.
Neben Chars, Strings, Punkten, Linien und gefüllten Rechtecken kann man
nun auch Bilder darstellen. Letztere können verschiedene Farbtiefen und
RAW- oder das bekannte RLE-Format besitzen. Durch den Header werden
automatisch die passenden Funktionen ausgewählt. Ein passender Converter
ist auch mit dabei. Zugegeben er wurde etwas badhack mässig
geschrieben. Mit dem strcut alligment des Headers bin ich mir nicht ganz
sicher ob er für 64bit Maschinen funktionerit. Genauso das 32-bit
alligment der BMP Datei selbst wurde etwas sträflich behandelt. Seht es
euch einfach mal an. Bei mit funktionierts ;)

Vielleicht noch kurz was zur Aufruf weise des Konverters:
1
./convert inputfile picturename 16|15|12|10|8 >> includefile
Auf stderr werden Informationen ausgegeben und auf stdout wird das
umgewandelte Bild ausgegeben, dass in die Code (include file) bepipt
werden kann.


Hier noch ein mini Demoprogramm:
1
#include "s65.h"
2
3
[...]
4
5
    S65_Init();
6
7
    S65_Fillscreen(S65_RGB(0,255,0));
8
    S65_Dawpic(10, 40, (void *) pic, 0);

Vielleicht kann es ja wer gebrauchen...
So Far
Jürgen

von Michi Müller (Gast)


Lesenswert?

>Vielleicht kann es ja wer gebrauchen...

Ja, danke. Ich kann es gebrauchen.

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

Manuel Geishauser wrote:
> Hallo
>
> Ich hab mir gerade das Display bestellt und werde in den nächsten Tagen
> versuchen das ganze zum laufen zu bringen.
>
> Ich hab noch ein paar Fragen:
>
> Mein Board/AVR läuft mit 3.3 Volt. Kann ich nun damit direkt ins display
> rein oder brauch ich noch einen Spannunsteiler.
>
> Auf dem Board habe ich eben nur 3.3 Volt zu Verfügung. Die
> Hintergrundbeleuchtung benötigt ja laut Schaltplan 15V.
> Kann ich mir irgendwie aus den 3.3V die 15V auf "relativ" einfache Art
> erzeugen ?^

das display direkt an 3,3V hängen ist sone sache. Es läuft halt 
ausserhalb der Spezifikationen. Ich arbeite im moment an einem Projekt, 
welches ebenfalls überall mit 3,3V läuft. hab ein LS020 direkt an 3,3V 
schon seit Wochen am laufen. Nur garantieren kann ich dir da nix ^^

ja, kannst du, schau einfach mal in die Anleitung von christian k, dort 
ist alles beschrieben ! Dafür wid einfach ein timer des megas zur 
PWM-erzeugung genutzt. Eigentlich ist es für 5V, aber es geht auch mit 
3,3V, ich benutze dafür einen IRF7103 als mosfet und eine 1mH/0,16A 
Spule von reichelt (in SMD). Musst dann nur die Pulsweite etwas erhöhen 
um auf die benötigte spannung zu kommen. Und mal davon ab brauch die 
HG-Bel keine 15 V, sondern ca 10,4V um 20mA zu produzieren. Du kannst 
den Step-Up direkt dran hängen, brauchst keine angst um die leds zu 
haben, durch die Belastung regelst du eher den Strom als die Spannung! 
(wg. nicht linearer UI-Kennlinie der Leds)



@ SuperUser

Danke für die Anleitung ! habs gerade eben damit zum laufen gebracht :) 
Die Anleitung die bei der Lib dabei war war völlig falsch. Das Dumme an 
der ganzen sache ist, das ich es genau wie du beschrieben hast schonmal 
gemacht habe. Allerdings hatte ich einen Port falsch definiert, und 
deswegen lief es nciht, ich nam an, ich hätte was bei der verwendung der 
lib selber falsch gemacht ^^

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

mir fällt grad auf, das ich in der glcd-lib die Schrift nicht drehen 
kann, sondern immer nur in einer Richtung ausgebe, obwohl die Option 
angegeben ist. Ich nutze ein LS020 Display, das sollte das doch 
eigentlich unterstützen ?

Wenns nicht möglich ist, wie kann ich dann die Fonts um 90° gedreht, 
also so wie im LS020-Beispielprogramm von C.K., ausgeben? Nutzen würde 
ich gerne die 8x8, 8x11, 15x22 Fonts.

Netten Gruß, Marc


P.S.: Ich hab mir mal die c-implementation von Jürgen Eckert angesehen. 
Und ich frage mich ernsthaft, warum man zum Zeichnen einer einfachen 
Linie Float-Variablen benötigt ? Und vor allem ob das in der asm-lib 
auch so ist, da wäre dann noch viel optimierungsspielraum. ich selber 
habe einmal vor ca 2 jahren eine bibliothek für ein GLCD geschrieben und 
im Rahmen dessen eine Routine zum Zeichnen von Linien entwickelt, welche 
nur mit einfachen integer-Zahlen auskommt, und die Genauigkeit einfach 
durch erweitern des Wertebereiches erhällt. Soweit ich weis gibts aber 
Routinen die komplett ohne mul/div auskommen..hab ich mich aber noch 
nicht näher mit beschäftigt...versuche grad Fonts in die richtige 
Richtung zu bringen :D

von SuperUser (Gast)


Lesenswert?

Hallo Marc.

Das drehen der Fonts wird von der GLCD derzeit nicht unterstützt, weil 
zu der Zeit als der Port gemacht wurde die Addressierungs-Modi des 
Display-RAM's nicht bekannt waren.

Das hat sich mittlerweile geändert:
http://www.superkranz.de/christian/S65_Display/DisplayRamAccess.html

Wenn du Lust hast, kannst du ja die Drehung der Font's nachrüsten und 
hoffentlich hier veröffentlichen :-)

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

SuperUser wrote:
> Hallo Marc.
>
> Das drehen der Fonts wird von der GLCD derzeit nicht unterstützt, weil
> zu der Zeit als der Port gemacht wurde die Addressierungs-Modi des
> Display-RAM's nicht bekannt waren.
>
> Das hat sich mittlerweile geändert:
> http://www.superkranz.de/christian/S65_Display/DisplayRamAccess.html
>
> Wenn du Lust hast, kannst du ja die Drehung der Font's nachrüsten und
> hoffentlich hier veröffentlichen :-)

da ich nicht so wirklich viel plan von assembler habe und leider auch 
keine zeit um mich in dne code einzuarbeiten werde ich das ganze in die 
o.g. C-version implementieren. Im endeffekt entsteht dann eine "lib" (es 
ist dann keine echte lib mehr), welche folgendes können wird:

- Punkte (fertig)
- Rechtecke gefüllt (probleme)
- Rechtecke ungefüllt (fertig)
- Linien (nach einem algo von mir, ohne float) (fertig)
- Belibigen Buchstaben aus einer Font ausgeben. Unterstützung erstmal 
nur für einfarbige fonts (bei denen man die Farbe zur laufzeit angeben 
kann) die fonts werden dabei punktgenau gesetzt, es wird also ohne 
hintergrund gearbeitet (ist etwas laufzeitintensiver, dafür kann ich die 
Schrift aber auch z.B. auf ein bild setzen), keine komprimierten Fonts 
(unfertig)
- Beliebigen Text aus Buchstaben ausgeben (unfertig)
- 16-Bit-Bitmaps ausgeben (unfertig)

Das Ganze dann halt für den "quer"-modus des Displays...Kreise und so 
kommen vielleicht noch später, aber erst muss das grundgerüst stehen, 
dann kann ich schonmal an einem Projekt weiterarbeiten.

Hab im moment aber ncoh probleme mit der erweiterten ansteuerung des 
Displays, der definiert mir meine rechtecke nicht so wie ich es gerne 
hätte ^^

von Harry S. (littlegonzo)


Lesenswert?

Hallo Leute,
erstmal ein frohes Neues Jahr Euch allen.

Ich habe inzwischen auch ein S65 Display mit der Library in Verbindung 
mit einem M32 zum laufen bekommen. Nun würde ich gern die Lib mit dem 
M644 umschreiben doch meine Assembler Kenntnisse reiche dafür leider 
nicht.

Wie muß/müßte ich das umschreiben damit es universeler auf beiden Proz. 
Typen läuft?

SPI_SEND:
  sbi  SPCR,SPE    ;enable SPI
  out  SPDR,r24    ;load byte in SPI data register
SPI_SEND_0:
  sbis  SPSR,SPIF
  rjmp  SPI_SEND_0    ;transmitt byte to LCD
  in  r0,SPDR
  sbi  PORTB,LCD_CS    ;deselect Display
  ret

Das Problem mit dem M644 die SPCR, SPDR Register liegen über Adresse 
31...

Könnte mir da jemand bitte helfen?

Liebe Grüße
Harry

ps: Ich weiß das es mehrere Stellen in der Library betrifft...
und es geht um die ASM-Lib von Christian K.

Als Gegenleistung habe ich eine Circle Routine für die C-Lib;-)

void S65_Circle(uint8_t x0, uint8_t y0, uint8_t radius, unsigned int 
color)
 {
   int f = 1 - radius;
   int ddF_x = 0;
   int ddF_y = -2 * radius;
   int x = 0;
   int y = radius;

   S65_Pixel(x0, y0 + radius,color);
   S65_Pixel(x0, y0 - radius,color);
   S65_Pixel(x0 + radius, y0,color);
   S65_Pixel(x0 - radius, y0,color);

   while(x < y)
   {
     if(f >= 0)
     {
       y--;
       ddF_y += 2;
       f += ddF_y;
     }
     x++;
     ddF_x += 2;
     f += ddF_x + 1;

     S65_Pixel(x0 + x, y0 + y,color);
     S65_Pixel(x0 - x, y0 + y,color);
     S65_Pixel(x0 + x, y0 - y,color);
     S65_Pixel(x0 - x, y0 - y,color);
     S65_Pixel(x0 + y, y0 + x,color);
     S65_Pixel(x0 - y, y0 + x,color);
     S65_Pixel(x0 + y, y0 - x,color);
     S65_Pixel(x0 - y, y0 - x,color);
   }
}

Funktioniert Prima, wenn auch sicher nicht optimal...

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

die oberen register können per sts und lds (als ersatz für out und in) 
angesprochen werden

von Harry S. (littlegonzo)


Lesenswert?

Hallo,
habe es eben mal probiert aber es funktioniert leider nicht.
Wollte erstmal nur die simple-display.asm Routine ändern, aber war nix 
:-(

SPI_SEND:
  lds R0, (1<<SPE)
  sts  SPCR,R0
;   sbi  SPCR,SPE    ;enable SPI
  sts SPDR,R24
;  out  SPDR,R24    ;load byte in SPI data register
SPI_SEND_0:
  lds R24,SPSR
  sbrs  R24,SPIF
  rjmp  SPI_SEND_0    ;transmitt byte to LCD
;  in  r0,SPDR
  lds R0,SPDR
  sbi  PORTB,LCD_CS    ;deselect Display
  ret

Also der AVR Assembler ist irgendwie sehr eigenartig mit ihren oberen 31 
Bytes etc. Was war das noch mit 6510 und Z80 einfach ;-)


Grüße
Harry

ps: Frage/Bitte... könnte nicht mal schnell ein ASM-Profi das Ding 
"umbauen" für mich. Wäre echt super

von Harry S. (littlegonzo)


Lesenswert?

Hallo ich schon wieder:

Jetzt habe ich es doch hinbekommen....
Hier für alle die evtl. auch die Probleme haben. Bisher läuft zumindest 
die Simple-ASM Library schon mal mit dem M644 zusammen :-) (ein klein 
wenig stolz bin)

SPI_SEND:
  in R25,SPCR
  ori R25, (1<<SPE)
  out  SPCR,R25        ;enable SPI
  out  SPDR,R24    ;load byte in SPI data register
SPI_SEND_0:
  in R0,SPSR
  sbrs  R0,SPIF
  rjmp  SPI_SEND_0    ;transmitt byte to LCD
  in R0,SPDR
  sbi  PORTB,LCD_CS    ;deselect Display
  ret

Grüße
Harry

von Jürgen E. (sid)


Lesenswert?

Hallo,
ich hatte das selbe Problem wie du mit dem Mega644, deshalb habe ich sie 
nach C portiert. (siehe oben).

Universeller geht es nicht G
Jürgen

von Harry S. (littlegonzo)


Lesenswert?

Guten Morgen Jürgen und auch die anderen natürlich,
ja sicher auch eine Möglichkeit, aber die Lib gefällt mir ja.
Inzwischen laufen alle Libs mit dem Display und dem M644 ;-)

So kann ich einfach auswählen was ich nehmen möchte^^

Grüße und noch einen schönen Tag,
Harry

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

Hallo, Harry!

Die Kreisroutine schaut doch optimal aus, was hast du ^^ Schaut auf den 
ersten blick auch überhaupt nciht rechenintensiv aus o.ä. :)

danke dafür <*direktaufgenommenhat*>

möchtest nicht noch ne Routine für Ellipsen schreiben ? :) ^^
oder teilweise Kreise  halbkreise  viertelkreise .... ^^

ich beschäftige mich grad mit den Fonts, sollte recht bald fertig 
werden, dann stell ich meinen quellcode rein und ihr dürft ihn in der 
Luft zerreissen ;) (aber bitte Stückchen übriglassen die ich in besserer 
Form wieder zusammenfügen kann :D)

von Marc S. (eurofighter) Benutzerseite


Angehängte Dateien:

Lesenswert?

So, hier wie versprochen meine erweiterte und überarbeitete C-Lib.

Die Lib benötigt im moment 3488 byte auf einem M128, ohne Fonts 
natürlich.

Es können beliebige Fonts benutzt werden, allerdings müssen sie 
unkomprimiret und einfarbig sein (Die Textfarbe kann nat. Variiert 
werden)

Ebenfalls habe ich einen 0°/90°-Modus hinzugefügt, welcher auf jedem 
Displaytyp funktionieren sollte (da die Fonts aus Einzelpixeln gesetzt 
werden --> Transparanz). Die Transparenz der Fonts ist noch nicht 
ausschaltbar, wred ich aber in den nächsten Tagen noch hinzufügen.

Was im Moment noch fehlt ist die ausgabe von Bitmaps.

Da ich die Lib nicht nur für mich schreiben möchte, könnt ihr mir gerne 
sagen, welche Module ich noch hinzufügen soll. Wenn sie nicht zu 
aufwendig und abwegig sind nehm ich Sie gern auf :)

Wäre über ein wenig Feedback & Kritik sehr erfreut,

Gruß, Marc

von Harry S. (littlegonzo)


Lesenswert?

Hallo Marc,
sehr schöne Lib, vor allem in C.

Wenn Du dieses Define in die S65.h noch reinsetzt kann man die Farben 
etwas einfacher einstellen...sie ist aus der ASM Lib entnommen.
Übrigens die Circle Routine war leider nicht von mir sondern irgendwann 
mal im Netz gefunden. Leider weiß ich den Herrausgeber nicht mehr, aber 
ich möchte keine Lorbeeren für Dinge die ich nicht gemacht habe....

Liebe Grüße
Harry

Das Define:
#define RGB(r,g,b) (((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) 
>> 3))

von Tobias W. (despeyer)


Lesenswert?

hi!
hätte einer von euch die güte, mal nen funktionierenden Quellcode (und 
optimalerweise noch das hex-file) für das S65-Display und nen 
Atmega8/16/32 zu posten?
Ich hab mehrmals simple_display3 kompiliert und auf meine pin-belegungen 
angepasst, ohne Ergebnis, gleiches Verfahren mit dem Bilderrahmen-Prog 
aus dem anderen Thread, der ja einen Atmega8 als Basis 
benutzt..Verdrahtung mehrmals überprüft, hintergrundbeleuchtung 
funktioniert..

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

vielleicht wäre es gut, wenn du mal einen exacten schaltplan posten 
würdest, klingt eher nach nem fehler der beschaltung als nach nem fehler 
der software !

von Marc S. (eurofighter) Benutzerseite


Angehängte Dateien:

Lesenswert?

hier mal die neueste Version 0.2 der Lib in C.

Neu hinzugekommen ist ein Modul für die HG-Bel nach dem step-up-Schema 
sowie eine Routine für 16-Bit-RAW-Bitmaps, als auch für 16Bit-Bitmaps 
die der Converter von Hagen erzeugt (Hier gefällt mir der Converter 
besser ;) vor allem dank GUI :) ). Die Bitmaps können auch transparent 
gezeichnet werden, indem man eine globale Farbe definiert, welche 
transparent sein soll, und den Transparenzmodus aktiviert. Allerdings 
wird bei Transparenten Bitmaps nur ein Bild pro Sekunde dargestellt, bei 
nonTransparenten sind 7 Bilder Pro sekunde möglich (nat. immer auf 
Vollbilder bezogen !)

Das HG-Bel-modul kann nach Bedarf nat. auch einfach rausgenommen werden, 
spart allerdings nur 18 Byte...die aktuelle größe der Lib im 
Kompilierten zustand beträgt bei mir 4222 Byte.

Bilder mit 2^1-2^15 Farben sind ebenfalls implementiert, allerdings ist 
in der Funktion noch irgendwo ein Bug, den es noch zu finden gilt. 
Vielleicht fällts ja jemandem auf, ich brauche die Funktion im moment 
nicht (Die Bilder werden eh von SD-Karte Gelesen, und auf der ist Platz 
ohne ende) und arbeite deshalb lieber an einem anderen Teil meines 
Projektes weiter (Eben der SD-Einheit)...wenn nat. jemand die 
Grafikfunktionen komplettieren will, immer her mit dem Code, ich baue 
ihn sofort ein.

Gruß, Marc

von Manuel G. (manuelg)


Lesenswert?

Hallo

Ich hab gerade die neue Lib von Eurofighter probiert.Ich will nun einen 
Text ausgeben und hab nocht nicht ganz verstanden wie ich das ganze 
initialisieren muss.
Ich muss ja die Schriftfabe und die Font setzen.
Aber wie bekommen ich eine font in den AVR rein ?

von Gunni (Gast)


Lesenswert?

Hallo.
Hat es mittlerweile jemand geschafft, die GLCD so umzubauen, das man 
Text auch um 90° gedreht ausgeben kann, bzw. es zu Spiegeln, das es 
lesbar ist?

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

@ Manuel

Sry, das ich das nciht erwähnt habe. Du brauchst einfach eine der Fonts 
aus dem Packet der originalen GLCD-Lib, welche du ganz unten auf dieser 
seite downloaden kannst:
http://www.superkranz.de/christian/S65_Display/DisplaySoftware.html
du brauchst auch nur die Header-Dateien, also z.B. f8x8.h. Darin ist die 
komplette Font enthalten.

Dazu empfehle ich noch dieses Packet:
http://www.mikrocontroller.net/attachment/20837/FontEditor_BitmapConverter.zip
Welches 2 Geniale Programme für die Konvertierung enthällt

Beides nat. nicht von mir, aber mit meiner Lib zumindest zum Teil (siehe 
beschriebung) kompatibel

@ Gunni

Die originale Lib habe ich nicht umgebaut, bin nicht wirklich bewandert 
in asembler, aber meine "lib" ist speziell auf den 90°-Betrieb ausgelegt 
(habe sie ja nur geschrieben weil ich genau diesen Betriebsmodi brauche)



Gruß, Marc

von Gunni (Gast)


Lesenswert?

@ Marc Seiffert
Achso.
Leider habe ich das Problem, das ich deine Lib (S65_LibMS-0-2.rar) nicht 
zum laufen bekomme.
Zeichen tut er, aber Text stellt er nicht da.
Ich habe nur Gelbe blöcke mit löchern drin.
Danke.

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

sehr merkwürdig....kannst du mir mal nähere infos zum controller, der 
umgebung, etc geben ?

ajo, und die Schriftart muss UNKOMPRIMIERT sein ! ist ganz wichtig ! 
sowie zweifarbig (also nur Punkt gesetzt/nicht gesetzt) Die 
Komprimierung bringt bei den unterstützten zweifarbigen Schriftarten eh 
nicht viel wenn man nicht gerade Mega-Zeichen verwendet

Wenn du möchtest kann ich dir gerne ein Komplettpaket mit allem schicken 
was du für ein einfaches Testprogramm brauchst, bei ausreichend genauen 
infos auch schon gebuildet ;)



aktuell arbeite ich nimmer an der lib weiter, vielleicht werd ich in den 
nächsten semesterferien mal nen großes update schieben. bis dahin 
arbeite ich an einem projekt und an sonstigen unisache.


Gruß, Marc

von Gunni (Gast)


Angehängte Dateien:

Lesenswert?

@ Marc Seiffert:
Habe einen Atmega32. Programmiere in WinAvr, und schiebe es mit 
AVRStudio rüber.
Die Schriften habe ich auf der Glcd kopiert.
Ich habe auch probiert BMPs anzuzeigen, das haut jedoch auch nicht hin.
Habe das Bild mit Bin2c und mit dem Konverter aus dem Paket 
"FontEditor_BitmapConverter" Konvertiert mit und ohne Komprimierung.
Komischerweise habe ich mit dem Bild das gleiche Problem bei der 
Glcd-lib.
Jedoch wird dort die Schrift richtig angezeigt.
Ich vermute, das ich die Funktion "S65_PutBmp" falsch aufrufe.
Habe auch schon probiert, jeden Pixel einzeln zu lesen aus dem bmp, und 
dann zu setzten (S65_Pixel), aber auch ohne erfolg.
Dabei ist mir jedoch aufgefallen, das die Funktion "S65_Pixel" einen 
16bit Wert erwartet, und die Konverter Programme alle einen 8bit 
erzeugen. Habe also kurzerhand aus der 8 eine 16 gemacht, und unter GLCD 
funktionierte es gerstern mal kurz, kann es aber leider nicht mehr 
reproduzieren.
Wenn ich die Pixel direkt setze, sehe ich sie auf dem Display.
Ich habe mal mein Test Programm angehängt.
Vielleicht findet jemand den Fehler.

Gruß Gunni

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

Mir fällt grad auf, eine ganz wichtge Frage habe ich hier noch 
vergessen:

Wasfür ein Displaytyp nutzt du ?

Ich habe die Lib auf nem L02 entwickelt, da ich hier die "more advanced 
addressing modes" nutzen kann. Wenn du ein anderes Display nutzt ist es 
klar, das es nicht funtzt, weil es diese Modes nicht kennt ! Du müsstest 
hier die funktion allocatearea umschreiben, und könntest dann 
transparente Fonts ohne Probleme direkt ausgeben ! (ebenso Transparente 
bitmaps)

von Gunni (Gast)


Lesenswert?

Ich nutze den Typ LS020.
Ich denke den meintest du auch, oder?
Ist die schrift immer transparent?
Um die Transparenz geht es mir im moment gar nicht so.
Wichtig ist mir die Darstellung von Text (90°) und Bildern.
Mehr brauch ich (noch) nicht.

Gruß
Gunni

von Marc S. (eurofighter) Benutzerseite


Angehängte Dateien:

Lesenswert?

hmm...ok, dannn nutzt du den gleichen typ wie ich, das sollte 100% 
funktionieren, auf den andeen controller kommts meies wissens nach nicht 
an.

ich hab dir mal die Version in den Anhang getan die ich nutze, incl. der 
von mir genutzten fonts.

von Harry S. (littlegonzo)


Angehängte Dateien:

Lesenswert?

Hallo,
habe der C-Lib von Marc mal wieder eine kleine Funktion hinzugefügt.
Gefüllte Kreise....

Vielleicht nützlich für den einen oder anderen...

ps: Bei der Circle Routine können alle ints, als char deklariert 
werden..

void FillCircle(unsigned char x0, unsigned char y0, unsigned char 
radius, unsigned int color)
{
   char f = 1 - radius;
   char ddF_x = 0;
   char ddF_y = -2 * radius;
   char x = 0;
   char y = radius;
     S65_DrawLine(x0,y0 - radius,x0,y0 + radius, color);
     S65_DrawLine(x0 - radius, y0, x0 + radius, y0, color);
   while(x < y)
   {
     if(f >= 0)
     {
       y--;
       ddF_y += 2;
       f += ddF_y;
     }
     x++;
     ddF_x += 2;
     f += ddF_x + 1;
     S65_DrawLine(x0 + x, y0 - y, x0 + x, y0 + y,color);
     S65_DrawLine(x0 + y, y0 - x, x0 + y, y0 +x,color);
     S65_DrawLine(x0 - x, y0 -y, x0 - x, y0 + y,color);
     S65_DrawLine(x0 - y, y0 -x, x0 - y, y0 + x,color);
   }
}

von Marc S. (eurofighter) Benutzerseite


Angehängte Dateien:

Lesenswert?

n'abend

thx für das Modul, Harry,  hab ich mittlerweile aufgenommen. nimmt 
206byte Speicher ein :)

Habe nun mal alle int16 der circle-routine auf uint8_t-Typen geändert, 
hat 130 byte eingebracht :)

Allerdings können nun nur noch Kreise mit einem Radius < 128 gezeichnet 
werden! Bei Kreisen >= Raduis 128 funktioniert es nicht mehr. Solche 
Kreise treten aber nur so selten auf, das ich den Speichervorteil von 
immerhin 5,7% der kleinen Einschränkung vorziehe :) Ich selber arbeite 
hier zwar auf einem Mega128, da hab ich Platz ohne Ende, aber ich denke 
nicht, das jeder soein Monster will und in aktueller Form wären auch 
Applikationen auf einem Mega8 denkbar !

Ansonnsten hab ich noch ein paar Veränderungen vorgenommen, und die 
codesize von 4468 auf 3642 byte gesenkt, sind 18,5% :) Das ganze geschah 
einerseits durch die Änderung von int16 nach int8, andererseits wurden 
einige Funktionen in Schleifen untergebracht (bei der Zahlenausgabe), 
was enorm viel einbrachte.
Ausserdem hab ich die verbuggte Routine zur ausgabe komprimierter fonts 
entfernt. Sie ist in der Anlage in der datei "Outsourcing" zu finden, es 
wäre schön, wenn sich mal jemand ihr annehmen würde, um die Lib etwas zu 
komplettieren!
Ansonsten gab nur ein paar Miniänderungen, ein wenig 
Quellcodeformatierung und so...

Die Ramauslastung hab ich um 10 bytes gesenkt, also von 33 auf 23, ein 
Puffer war etwas zu großzügig dimensioniert...

Wie immer kann die lib nat. auf eigene Bedürfnisse angepasst werden, 
indem man einfach nicht benötigte Funktionen ausklammert (im .c-File, 
das .h-File muss nciht verändert werden, ein Ausklammern hier bringt 
nichts, trägt höchstens der Übersichtlichkeit bei ;) ) (wollts nur mal 
gesagt haben^^)

Gruß, €

von Gunni (Gast)


Lesenswert?

@ Marc Seiffert:
Die Schrift kann ich jetzt darstellen.
Mit der aus deinem Paket funktionier es.
Aber Bilder werden immer noch nicht angezeigt.
Kann es sein, das ich noch irgendwelche regidster umstellen muss, damit 
es auf einem Atmega32 läuft?
Er zeigt mir nur ein Blaues Bild mit vielen Schwarzen Streifen an.
(Gleiches erbebnis bei der S65_LibMS-0-3.rar)

gruß
Gunni

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

@ Gunni

in welchem Format speicherst du die Bilder denn ? Poste bitte mal die .h 
dateien der Bilder die du darstellen willst !

Gruß, Marc

von sadat (rus) (Gast)


Lesenswert?

To Harry Sk. (littlegonzo)

First, i am one time initialize SPI:

; SPI_SS DDR must be ON!
ldi R16, 1<<SPE | 1<<MSTR   ;
OUT SPCR, R16;
ldi R16,  1<<SPI2X; max speed SPI
OUT SPSR, R16;

and to transmit word to SPI next asm:
SPI_OUT_S65_DATA_WORD:
    cbi     S65_CS (PORT)    ;select Display
    cbi     S65_RS (PORT)    ; clear RS line
SPI_OUT_S65_WORD:
  out SPDR, XH; high data byte
  sbis SPSR, SPIF;
    rjmp PC-1;
  out SPDR, XL; low data byte
  sbis SPSR, SPIF;
    rjmp PC-1;
   sbi S65_CS (PORT)        ;deselect Display
RET;

This get maximum speed to AVR microcontroller.

von Harry S. (littlegonzo)


Lesenswert?

Kein Problem,
das Forum sollte ja aus einem nehmen und geben sein ;-)
Zum Anderen war die ableitung aus Circle ja nicht allzu schwer...

Momentan bastel ich eigentlich mehr mit meinem neuen Display (240x128 
T6963) es ist endlich aus Taiwan oder so angekommen ;-)
Die Dinger sind dort einfach zu einem unschlagbaren Preis zu bekommen, 
inkl. Touch für 46,- €.

Grüße
Harry

von Gunni (Gast)


Angehängte Dateien:

Lesenswert?

@ Marc Seiffert
Alles klar.
Ich habe es gestern hinbekommen.
Allerdings nutze ich dazu die Funktione "S65_PutRawBmp16" und speicher 
das Bild auch als "Raw Data".
Du hast geschrieben, das in der Lib noch ein Bug ist, was die 
Komprimierten Bilder angeht.
Ich versuche es mit der "S65_LibMS-0-3.rar".
Im Anhang ein Bild, welches ich mit der Oben beschrieben Funktion 
aufrufe.

Wie sieht es aus mit einem Externen Speicher?
Da ja der Atmega32 doch sehr begrenzt ist, ist bei 16Bit Farbtiefe 
schnell Datenmengen zusammen kommen.
Ich habe da MMC/SD gedacht. Kann ich den an den Gleichen Bus hängen wie 
das Display (Klar CS muss an einen anderen Pin), oder würdet ihr eher 
davon abraten, und nen Software SPI nehmen?
Ich lade nicht jede Sekunde ein Bild aus dem Speicher, aber es sollte 
auch nicht zu lange dauern ein Bild anzuzeigen.

Gruß
Gunni

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

@ Gunni
Jop, ein Bug, der bei mir zu merkwürdigen blau-schwarzen bildern geführt 
hat ;) Aber nun ist der Teil ja eh rausgenommen, daher wreden 
komprimierte bilder einfach gar nciht mehr beachtet ^^

Wenn der converter 16bit-Bitmaps erzeugt sollten die aber auch ohne 
probleme funktinieren, dann aber mit der anderen Routine.

Ich arbeite im Moment daran SD-Karten anzubinden, ich habe ähnliches 
vor. Nutzen werde ich def. Hardware-SPI.

@ Harry
Ich brauchte ein halbwegs kleines display, ist für ein handgerät....wir 
groß ist denn das display mit dem du arbeitest ?

Gruß, Marc

von Gunni (Gast)


Lesenswert?

@ Marc Seiffert:
Wie erzeugt der Konverter denn 16Bit Bitmaps?
Mit dem Haken bei "Raw Data", oder ohne?
Wie sieht den die Komprimierung aus?
Beschreibt diese eine Folge von gleichen Pixeln, oder weniger Farben, 
oder wie muss ich mir das vorstellen?
Gruß Gunni

von Hagen (Gast)


Lesenswert?

Der BitmapConverter wandelt ein Bild erstmal vom ürsprünglichen Format 
in eine Bitmap um, also JPEG,PCX,TIFF usw. in Windows-BMP. Dann auf die 
Größe des Displays verkleinter falls das Bild zu groß ist. Danach kann 
man di Farbanzahl reduzieren falls gewünscht oder man kann es drehen und 
spiegeln.

Speichert/Exportiert man das so angepasste Bild dann können 5 
verschiedene Bildformate entstehen.

1.) RAW Data: wird erzeugt wenn die Checkbox angehackt ist. RAW Data 
bedeutet das pro Pixel 16 Bit Farbinformation gespeichert werden. Ohne 
Header usw.
Dieses Format ist zwar das einfachste, benötigt aber auch am meisten 
Speicherplatz und ist unter Umständen sogar langsammer darzustellen als 
die nachfolgenden Formate.

2.) Komprimierungsmodus, das verwendete Format wird automatisch 
ausgewählt.

2.1.) 1 Farb Modus :) Das wäre ein Bitmap das komplett nur eine Farbe 
enthält. Intern kann die Zeichenroutine also einfach mit 
glcdFillRect(Farbe) arbeiten. Der Header in den Daten besteht aus 
Breite,Höhe,BPP=0,Farbe.

2.2.) Monochrome 2 Farben Bilder. Hier wird eine RLE-artige 
Komprimierung verwendet. Der Header besteht aus 
Breite,Höhe,BPP=1,Hintergrundfarbe = 1. Pixel in der linken oberen Ecke. 
Die linke obere Ecke wird immer als Hintergrundfarbe interpretiert und 
kann in den Zeichenroutinen für das LPHxxxx Display als Transparenzfarbe 
eingestellt werden.
Die RLE Codierung sieht so aus das ein Byte in seine 2 Nibble geteilt 
wird. Das untere Nibble bestimmt ein 4 Pixelmuster aus Vordergrund und 
Hintergrundfarbe. Das obere Nibble bestimmt einen Wiederholungzähler, 
also wie oft dieses 4 Pixelmuster wiederholt werden soll. Dabei geht 
dieser Zähler von 1 bis 16 -> 0..15.

2.3.) Bilder mit 3 bis 2^15 Farben. Dieses Format besteht im Header 
wieder aus Breite,Höhe,BPP=x wobei 2^x die Anzahl der Farben darstellt, 
danach kommt ein Word mit der Größe der nachfolgenden Farbtabelle, 
anschließend die Farbtabelle bestehen aus Word Werten und danach die 
codierten Bilddaten.

Die Bilddaten sehen nun so aus: Wenn ein 1'er Bit gelesen wird dann 
folgt diesem BPP-Anzahl Bits. Zb. bei einer 10 Bit Farbbitmap = 1024 
Farben in der Farbtabelle folgt nach einem 1'er Bit im Datenstrom 10 Bit 
als Integer Zahl der Index in die Farbtabelle. Von dort wird der reale 
16 Bit Farbwert geladen und ein Pixel in dieser Farbe gezeichnet. Danach 
werden aus dem Bitstrom solange alle 0'er Bits entfernt und jedesmal ein 
Pixel in der aktuellen Farbe gezeichnet bis man auf ein 1'er Bit trifft. 
Danach würden wieder 10 Bit Index in die Farbtabelle folgen.

Man zeichnet die Bitmap immer von Links Oben nach Recht unten, 
zeilenweise. Dabei werden Header.Breite Pixel pro Zeile gezeichnet und 
das mal Header.Höhe Zeilen.

Bitmaps mit 2^16 Farben werden in den Komprimeirungsfunktionen nicht 
unterstützt da diese garnicht Sinn machen auf dem S65 Display. Man kann 
nicht mehr als 2^15 Pixel auf dem Display gleichzeitig darstellen ergo 
kann man auch nicht mehr als 2^15 verschiedene Farben gleichzeitig 
darstellen und somit ist ein Format für 2^16 Farbbitmaps im Grunde 
absolut überflüssig. Anderst ausgerückt: Das RAW Format mit 16 Bit 
Farbtiefe pro Pixel lässt sich beweisbar immer komprimieren wenn man nur 
eine einfache Farbtabelle und als Daten die Indizes der Realfarbe 
abspeichern würde. Das RAW Format ist also in jedem Falle 
Speicherineffizient.

Das LPHxxxx Display hat einen wichtigen Operationsmodus den ich in 
meiner S65-GLCD-Library auch intensiv in den Bitmap und Font Routinen 
benutzen. Man kann bei diesem Display eine Farbe als "Transparenzfarbe" 
definieren. Wird unn ein kontinuierlicher Pixelstrom an das Display 
gesendet so werden nur Pixel in das interne RAM gespeichert die NICHT 
dieser Transparenzfarbe entsprechen. Man sendet also ohne irgendwelche 
Sofwtarefilterungen alle Farbpixel ans Display, stellt aber vorher diese 
Transparenzfarbe ein und schwups kann man transparente Fonts und Bitmaps 
zeichnen.

Bei meiner glcdDrawBitmap() Funktion wird der linke-obere, also der 1. 
Pixel in den Daten, als Transparenzfarbe interpretiert, wenn man das 
entsprechnede Flag der glcdrawBitmap() Funktion übergibt.

Gruß Hagen

von Littlegonzo (Gast)


Lesenswert?

Hallo Marc,
ich habe mir 2 bestellt, einmal ein 240x128 und ein 128x64, werde die 
beiden mal ausmessen. Das 240er ist Dir aber sicher zu groß. Als 
Handgerät würde ich das ganz bestimmt nicht bezeichnen wollen ;-)

Das 128x64 ist wohl mit KS108 als Controller, hab ich aber noch nichts 
mit gemacht, wollte erstmal das große testen ^^


Gruß Harry

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

hehe, ok...die sache ist simpel, ich baue im moment ein 
GPS-Empfangsgerät mit enigen funktionen zum Loggen, routen, etc, aber 
auch als "mobile Steuerung" für einige Dinge. Das S65-Display ist mir 
eig. sogar zu klein, ich bräuchte ein display, das ca 30% größer ist (je 
seite). Farbe ist nat. auch schon sehr von Vorteil ^^
Hab mich früher auch mal mit 6963 Displays beschäftigt: 
http://eurofighter.eu.funpic.de/HP/Artikel/GPU1.htm
Aus dem Projekt ist aber nix geworden, wurde zu aufwendig und ich hatte 
Privat viel zu tun.


@ Hagen, thx für die auflistung...so ähnlich hattest du sie ja oben 
schonmal gepostet. Die verbuggte Routine basiert ja auh auf deinen 
komprimierten Fonts. Nur habe ich im moment nciht die zeit mich damit 
auseinanderzusetzen...Aktuell implementiere ich nen USART mit 
Datenauswertung, danach kommt eine einfache GUI, danach SD-Karten....

von Harry S. (littlegonzo)


Lesenswert?

Hallo Marc,
ich war eben mal auf deiner Seite, aber bei den Videos konnte ich leider 
nix sehen, mehr schwarz als irgend etwas erkennbares ;-)

Sag mal hast Du die unterlagen noch dazu (Source, Platinenlayout) zu dem 
Display vielleicht???
Wäre echt klasse weil die Platine gefällt mir echt echt gut ;-)

Hm, die Displays sind beide Blau/Weiss also nix mit bunt(d)...
Soll ich trotzdem mal messen?

Gruß Harry

von Marc S. (eurofighter) Benutzerseite


Angehängte Dateien:

Lesenswert?

n'abend Harry!

Ich hab grad gesucht, und die schlaltpläne/Layouts/Quelltexte zu GPU1.0 
nicht mehr gefunden. Die Quelltexte hätten dir aber auch nciht 
sonderlich viel gebracht, da die alle in Pascal geschrieben waren (AVRco 
Mega8-Version als Compiler). Der Code war dermaßen ineffizient, das ich 
nach kurzer Zeit auf C umgestiegen bin.

Ich habe allerdings das Projekt ein weiteres mal aufgegriffen, auch 
zuende geführt, allerdings einige Funktionen nie getestet und es dann 
ebenfalls zur Seite gelegt ^^ Dazu habe ich noch alle Files, also 
Quellcode, .sch , .brd, und das kannst dir im Anhang runterladen.

Das neue Layout nutzt einen Mega32 als Controller im TQFP Format, hat im 
gegensatz zum alten 64 KB Flash onboard, diesmal gesockelt, und kann 
zudem die HG-Bel in ihrer Helligkeit über PWM mit externem Mosfet 
regeln. Auch wurde das layout selber verbessert. ich habe auf SMD-Elkos 
zugunsten von normalen verzichtet, sodass die bauhöhe um einige 
milimeter gesunken ist (Auf der Rückseite waren nur die SMD-Elkos, und 
daher dort ausschlaggebend für die Bauhöhe).

Wie das alte Layout auch ist dies aber eine rein I²C-Gesteuerte Platine. 
also nix mit GPIO (auch nciht am ISP, das ist am GLCD dran)...gut, 
könnte man alles über I2C realisieren, das ist klar...es ist halt nur 
eigentlich ein Slave-Board ^^)

Schaus dir an, wenn du willst kannst es gerne nachbauen und den code für 
eigene Zwecke nutzen :)

Und messen wäre schön :) es ist immer gut alternativen im Kopf zu haben 
wenn man ein neues Projekt startet.

Gruß, Marc

von Manuel G. (manuelg)


Lesenswert?

Ich hab noch ein Problem mit der RAW- Bildausgabe.
Ich arbeite mit dem AVR und dem ATMega128  - 128k Flash

Bei kleinen Bildern gibts kein Problem.
Jetzt wollt ich mal ein mit Vollbild probieren (132x176).
Allerdings schreit dann AVR Studio ".... to large".
Obwohl ein Vollbild ja nur ca 40 kb hat ... Drum rum hab ich nicht viel 
laufen - nur die Lib eben.
Im AVR Studio - Configuration - Memory Settings steht auch 
seltsamerweise bei Flash size 0x10000 - was ja 65k wären.

Kann mir wer weiterhelfen ?
(Ja BIld wurde mit PROGMEM gespeichert)

von Hagen (Gast)


Lesenswert?

ich bin mir nicht ganz sicher, aber WinAVR GCC kann nur Datenstrukturen 
< 32Kb am Stück verarbeiten. Irgendein Problem gabs da mit dem GCC, ich 
denke hier im GCC Forum sollte man darüber ein Thread finden.

Du kannst aber die daten im *.h File einfach in 2 Arrays aufteilen, so 
das sie im FLASH nacheinander eingelinkt werden. Du übergibst dann der 
glcdDrawbitmap() Funktion einfach das 1. dieser beiden arrays. 
Allerdings soltest du im *.MAP oder *.LST File überprüfen das beide 
teile der Bitmap auch wirklich nacheinander am Stück eingelinkt wurden.

Gruß Hagen

von Manuel G. (manuelg)


Lesenswert?

Da könntest du recht haben .... 32k ist so ca. die magische Grenze
von Map oder List Files hab ich aber noch nie was gehört.
Werd die Foren mal durchstöbern.

Danke erstmal

von Harry S. (littlegonzo)


Lesenswert?

Hallo Marc,
erstmal vielen Dank für die Dateien. Schaue ich mir gleich mal an...

Die Werte der LCDs:

240x128 = 144,3 mm x 104,00 mm
128x64  = 78,0 mm x 70,35 mm

Beide sind mit Blauer Hintergrund Beleuchtung und weißer Schrift.

Momentan spiele ich nur mit dem großen noch rum ;-)

Gruß Harry

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

das aufteilen der arrays wie von hagen beschrieben kann ich bestätigen, 
hat bisher mehrmals bei mir geklappt....hab atm ein anders problem, und 
zwar gibts bei mir massig errors, wenn ich 64kb codegrenze überschreite 
:/




das 128x64 könte glatt passen :) nur isses halt nicht so wirklich 
geeignet ^^

von Gunni (Gast)


Lesenswert?

Wie Teile ich denn das Array?
Ich muss doch dann im vorheriegen Array immer den namen des neuen 
irgendwie mitgeben, oder nicht?
vieleicht könnte jemand mal nen beispiel posten.
gruß
Gunni

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

gsnz einfach, geh irgendwo in die mitte des arrays und deklarier da 
irgendeine variable mit belibigem namen im progmem

die namen werden ja eh nicht mitgespeichert, sodern nur die daten. und 
die halt nun einmal linear hintereinander im flash ^^

nimm einfach die deklaration des hauptgerichets und für ne 0 hinter den 
namen oder so ^^

von Hagen (Gast)


Lesenswert?

@Manuel,
das MAP und LST File wird normalerweise vom Compiler eg. Linker erzeugt 
wenn du neu compilierst. Im MAP File, MAP kommt von Map=Karte, wird dann 
ersichtlich welche Variablen,Konstanten,Funktionen an welcher Adresse im 
FLASH oder SRAM zur Laufzeit liegen. Es ist also eine Karte mit 
Koordinaten=Speicheradressen der wichtigen Teile des fertigen 
Programmes.
Das LST File oder List/Listing-File enthält je nach Konfiguration den 
aus dem C Source erzeugten Assembler Source. Quasi eine lesbare Form des 
HEX Files. Je nach Einstellungen im MakeFile kann dieses LST File sogar 
Teile des C Sources als Remarks enthalten und da drunter den erzeugten 
Assemblercode.
Beide Files sind wichtig für einen erfahrenen C Programmierer, einfach 
um zu verifizieren was der Compiler/Linker aus dem Source erzeugt haben 
oder eben bei der Fehlersuche. Denn auch Compiler machen manchmal dumme 
Fehler ;)

Gruß Hagen

von Hagen (Gast)


Lesenswert?

1
uint8_t logo_bmp[] PROGMEM = {
2
  0xB0, 0x84, 0x0C, 0x00, 0x00, 0x12, 0x1E, 
3
4
  0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 
5
  0x26, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x60, 0x00, 0x61, 0x00, 
6
  0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 
7
  0x6A, 0x00, 0x6B, 0x00, 0x6F, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00};
8
9
uint8_t logo_bmp0[] PROGMEM = {
10
0x84, 0x00, 0x85, 0x00, 
11
  0x86, 0x00, 0x87, 0x00, 0x8E, 0x00, 0xA0, 0x00, 0xA1, 0x00, 0xA2, 0x00, 0xA6, 0x00, 0xA7, 0x00, 
12
  0xA8, 0x00, 0xA9, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xB0, 0x00, 0xB1, 0x00, 0xC0, 0x00, 0xC1, 0x00, 
13
  0xC2, 0x00, 0xC3, 0x00, 0xC7, 0x00, 0xC8, 0x00, 0xC9, 0x00, 0xCA, 0x00, 0xCD, 0x00, 0xD1, 0x00, 
14
  0xE0, 0x00, 0xE1, 0x00, 0xE2, 0x00, 0xE7, 0x00, 0xE8, 0x00, 0xE9, 0x00, 0xEA, 0x00, 0xEB, 0x00, 
15
  0xEC, 0x00, 0x00, 0x01, 0x02, 0x01, 0x03, 0x01, 0x08, 0x01, 0x0A, 0x01, 0x0B, 0x01, 0x0C, 0x01};

So müsste es bei dir aussehen. Das Array logo_bmp[] wurde in der Mitte 
geteilt und logo_bmp0[] als zweites Array gleich hintendran deklariert. 
Im MAP/LST File sollte nun logo_bmp[] und danach ohne Lücke logo_bmp0[] 
drinnen stehen. Achte darauf das das erste Array[] eine durch 2 teilbare 
Bytesgröße besitzt, d.h. die Anzahl der HEX Bytes ist gerade (einfach um 
dumme Fehler zu vermeiden)

Gruß Hagen

von Manuel G. (manuelg)


Lesenswert?

Funktioniert ohne Probleme das mit dem teilen.
Hab gerade das AVR Studio durchstöbert und festgestellt dass die option 
map file generieren nicht aktiviert ist .. daher ist di bei mir auch 
nicht aufgetaucht. Aber danke für den Hinweis !
Ich bin noch auf der Suche nach einer relativ großen Schriftart.
So ca. 32x32 Pixel
Bekomm ich die irgendwo her ? Gehst das ohne Probleme ?

von Hagen (Gast)


Lesenswert?

Also mit meinem FontEditor kannst du eine beliebige Windows-Schriftart 
importieren. Also suche dir einen schönen TTF->True Type Font, öffne 
meinen FontEditor, drücke den Button "Import Font", wähle dort deinen 
Font aus, stelle die Größe des Fonts im Dialog ein und drücke Ok.
Danach wird der Font in einem Bitmapfont umgeandelt und angezeigt. Es 
kann dann je nach Font sein das du diesen Prozess mehrmals machen musst 
und dich an die beste Größe herantasten musst. Auch wirst du ein par der 
importierten Zeichen löschen oder nachbearbeiten müssen. Einfacher gehst 
nicht ;)

Gruß Hagen

von Dominic B. (Gast)


Lesenswert?

Hi zusammen,
ich mus zugeben das ich nicht die ganzen, sind ja über 900, Beiträge 
durchgelesen habe. Ich will mir nun auch ein solches Display kaufen. Es 
soll letzendlich zum mobilen Einsatz kommen. ALs Spannungsversorgung für 
das ganze Gerät steht eine 9V Blockbatterie/Akku zur Verfügung. Jetzt 
benötigt die Hintergrundbeleuchtung des S65 Displays aber so 10-11 V.

Kann bitte mal jemand von euch das Display an 9V hängen und mir 
mitteilen ob es überhaupt geht, oder wieviel die Beleuchtung dunkler 
ist. (Ist rein subjektiv ich weiß)

Oder hat jemand eine Idee für eine Ladungspumpe von 9V auf die 
geforderten 10-11V?

Dann noch ein/zwei letzte Frage. Kauft Ihr zb bei ebay--numan02003 die 
gebrauchten oder neuen Displays? Wie sind da eure Erfahrungen?


Danke schonmal im voraus.
Gruß Dominic

von der mechatroniker (Gast)


Lesenswert?

Bei Zimmertemperatur beträgt die Flußspannung der Backlight-LEDs (die 
sind wohl intern in Reihe geschaltet) mit dem Multimeter gemessene 10,4 
V. Bei 9 wirds wohl net leuchten. Bedenke, daß die LED-Kennlinie 
exponentiell verläuft.

von Dominic B. (Gast)


Lesenswert?

Mir ist gerade noch eingefallen.
Macht eine Ladungspumpe von 9V auf 10-11V Sinn?
Oder ist es in diesem Fall besser die Ladungspumpe nach den 5V 
Spannungsregler zu bauen. Denn wenn die Batteriespannung auf zb 7-8V 
fällt, irgendwann geht die Batterie mal zu neige, reicht das für den 
LowDrop 5V Regler immer noch, jedoch evtl. nicht mehr für die 
"berechnete 9 auf 10-11V" Ladungspumpe.

Ich muss zugeben, ich kenn mich mit so Ladungspumpen-Geschichten nicht 
die Bohne aus, und einen fertigen DC-DC Wandler will ich da nicht 
unbedingt einbauen wenns auch anders geht.

von Fabian B. (fabs)


Lesenswert?

einen 9V Block zu nutzen macht hier schon keinen Sinn... mit 3-4 AA 
Batterien oder besser Akkus mit 2400mAh biste besser beraten... 9V 
Blocks haben eine zu geringe Energiedichte um lange Strom liefern zu 
können (typ. 250mAh).

Gruß
Fabian

von Gunni (Gast)


Lesenswert?

@ Dominic B.:
Ich würde die Ladungspumpe empfehlen, da du damit auch die Möglichekeit 
hast zu dimmer und somit Batterie schonen kannst.

@Hagen:
Super das Geht jetzt.
Nächstes Problem ist jetzt der interne speicher. Er reicht nicht mehr 
aus.
Nen Atmega32 ist halt kein Speicher riese.

Mit ist gerade noch aufgefallen, das ich probleme habe mit dem 
"S65_Init".
Noch arbeite ich mit der Version 2 der Lib.
Ich lasse das Display initialisieren, und sofort etwas ausgeben, aber es 
wird auf dem Display nur die hälte dargestellt.
Also habe ich "vor" und "nach" dem Init eine kurze Pause erzeugt und 
schon läuft es. (Fehler trat nur auf, wenn Stromversorgung unterbrochen 
wurde, nicht bei Reset).

von Hagen (Gast)


Lesenswert?

>@Hagen:
>Super das Geht jetzt.
>Nächstes Problem ist jetzt der interne speicher. Er reicht nicht mehr
>aus.
>Nen Atmega32 ist halt kein Speicher riese.

Oben schrieb ich ja, ATMega mit möglichst viel FLASH, wenn man par Fonts 
und Bitmaps verwenden möchte. Deshalb habe ich ja für die Bitmaps die 
Komprimierungsfunktion geschrieben. Bei monochromen Bitmaps kannst du 
mit 900% Komprimierung rechnen im Vergleich zu RAW. Bewi Mehrfarbbitmaps 
mit anständig Farben (> 1024) kannst du mit 50% Komprimierung minimal 
rechnen im Vergleich zu RAW. Meine Icons wurden durchschnittlich auf 
20-25% der RWA Größe reduziert, und dabei sind diese Icons keine 
großflächigen Bitmaps sondern relativ klein. Mein Fullcolor/Fulldisplay 
Logo wird auf 23% der Originalgröße komprimiert. Grob gesagt bekommt man 
mit der Komprimierung also die 4 fache Menge an Bitmaps in den Speicher 
rein, ergo der Softwareaufwand lohnt sich.

Ansonsten: alle Font/Bitmap Datenstrukturen sind so konstruiert das sie 
sequentiell geladen werden können. Man kann also zb. beim zeichnen 
eines/r Fonts/Bitmap auch mit einem sequientiell arbeitenden externen 
Speicher wie I2C EEProms arbeiten. Dazu müssen nur in der Software alle 
Speicherlesezugriff wie pgm_read_byte() usw. ersetzt werden.

Gruß Hagen

von Gunni (Gast)


Lesenswert?

@Hagen:
Der Grund, weswegen ich auf die andere Lib umgestiegen bin, ist die 
tatsache, das ich die schrift drehen kann.
Ich möchte das Display 90° gedreht (Querformat) einbauen.
Ich denke, ich werde um einen externen speicher nicht herumkommen, 
MMC/SD wäre eine geeignete Option. Aber eins nach dem anderen.

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

hi Gunni,

hast du icq ? wenn ja könntest du mir deine nummer an meine mailaddy 
schicken ? ich glaube wir haben sehr ähnliches vor, und ich würde mich 
über einen etwas direkteren Austausch freuen :)
Wie oben schon beschrieben will ich ebenfalls SD/MMC-Karten anbinden und 
über sie Bilder auf dem S65D anzeigen, sowie logdateien auf sie 
speichern!

zu den Komprimierten bitmaps hatte ich diese Routine geschrieben:
1
  else // Bitmap mit 2 bis 2^15 Farben
2
    {
3
    uint8_t    byte = 0;
4
    uint8_t   bitpointer = 0;
5
    uint16_t   offset = 0;
6
    uint16_t   aktcolor = 0;
7
    uint16_t   colortablesize = 0;
8
    uint16_t   Pixel = (dimx+1) * (dimy+1);
9
    uint16_t   counter = 0;
10
    uint16_t   bytepointer = 0;
11
    uint16_t   colortableindex = 0;
12
13
    aktcolor  =   pgm_read_byte_near(&pic[4]); 
14
    aktcolor  *=   256;
15
    aktcolor  +=   pgm_read_byte_near(&pic[3]); 
16
    colortablesize  =   pgm_read_byte_near(&pic[6]); 
17
    colortablesize  *=   256;
18
    colortablesize  +=   pgm_read_byte_near(&pic[5]);
19
20
    offset = colortablesize + 7;
21
    
22
    S65_allocatearea(y,x,y+dimy, x+dimx);
23
24
    while(counter < Pixel)
25
      {
26
      byte = pgm_read_byte_near(&pic[offset+bytepointer]);
27
      if(bit_is_set(byte, bitpointer))
28
        {
29
        colortableindex = 0;
30
        for(uint8_t ccounter = 0; ccounter < BpP; ccounter++)
31
          {
32
          colortableindex *=2;
33
          bitpointer +=1;
34
          if(bitpointer == 8){bitpointer = 0;bytepointer+=1;}
35
          byte = pgm_read_byte_near(&pic[offset+bytepointer]);
36
          if(bit_is_set(byte, bitpointer)){colortableindex += 1;}
37
          }
38
        aktcolor = pgm_read_byte_near(&pic[7+colortableindex]);
39
        }
40
      else
41
        {
42
          S65_wrdat16(aktcolor);
43
          counter++;
44
          bitpointer +=1;
45
          if(bitpointer == 8){bitpointer = 0;bytepointer+=1;}
46
        }
47
      }
48
    }

sie ist eigentlihc so aufgebaut wie von Hagen beschrieben, enthällt aber 
noch bug(s). Wie gesagt, ich habe im moment nicht die Zeit sie zu 
implementieren, aber bereichern würde sie die c-lib nat. schon gewaltig 
!

Gruß, Marc

von Hagen (Gast)


Lesenswert?

habs jetzt nur überflogen, aber
1
aktcolor = pgm_read_byte_near(&pic[7+colortableindex]);

das kann garnicht richtig sein. aktcolor muß ein 16Bit Datentyp sein, 
logisch.

Davon abgesehen würde ich den Pointer "pic" nicht absolut + offset 
benutzen sondern diese Pointer nach jedem Lesen eines Bytes aus dem 
FLASH inkrementieren.

Hm, nachdem ich mir deine Source nochmal angeschauen habe mein ich das 
da einiges nicht stimmt. Du lieste unter Umständen das Datenbyte "Byte" 
mehrmals von der gleichen FLASH Adresse weil sich der "BytePointer" 
nicht verändert hat.

Hier nochmal meine Source, so umgeschrieben das sie ohne ASM Makro 
auskommt. Alle Display-abhängigen Makros habe ich mal als Pseudocode 
eingebaut.
1
uint8_t powerof2[8] PROGMEM = {1,2,4,8,16,32,64,128};
2
3
uint16_t colormasks[14] PROGMEM = {0x0006, 0x000E, 0x001E, 0x003E, 0x007E, 0x00FE, 0x01FE, 0x03FE, 0x07FE, 0x0FFE, 0x1FFE, 0x3FFE, 0x7FFE, 0xFFFE};
4
5
void glcdDrawBitmap(glcdCoord_t x, glcdCoord_t y, const prog_char* bitmap, uint8_t flags) {
6
7
    if (!(bitmap)) return; // bitmap = nil exit
8
    uint8_t w = pgm_read_byte(bitmap++); // lese Breite in Pixeln
9
    if (!(w)) return;                      // wenn Breite == 0 exit
10
    uint8_t h = pgm_read_byte(bitmap++); // lese Höhe in Pixeln 
11
    if (!(h)) return;                      // wenn Höhe == 0 exit
12
    uint8_t bpp = pgm_read_byte(bitmap++); // lese Farbauflösung in Bits per Pixel
13
    uint16_t bkcolor = pgm_read_word(bitmap); bitmap += 2; // Hintergrundfarbe lesen, entspricht Pixelfarbe in linker oberer Ecke des Bildes
14
    if (flags & GLCD_BMP_USECOLORS) bkcolor = glcd.Colors[0]; // falls Flag gesetzt dann soll als Transparenzfarbe die Hintergrundfarbe der GLCD Lib. aus glcd.Colors[0] benutzt werden
15
    if (bpp == 0) { 
16
  // Bitmap ist ein einfarbig gefülltes Rechteck
17
      glcdFillRect(x, y, x + w -1, y + h -1, bkcolor);
18
      return;
19
    }
20
    GLCD_CS_ON(); // CS vom Display ON
21
    GLCD_SETADDR(x, y); // Pixeladdresse im Display setzen
22
    GLCD_WINDOW(x, y, x + w -1, y + h -1); // Window im Display setzen, 
23
// Modus muß sein das X-Koordinate inkrementiert wird und bei Überlauf 
24
// innerhalb des Windows die Y-Koordinate inkrementiert wird
25
    if (flags & GLCD_BMP_TRANSPARENT) { 
26
      GLCD_SETMODE(0x38 | GLCD_ROP_WNE); // Transparenter Modus setzen
27
      GLCD_SETCOMPARE(bkcolor);
28
    } else {
29
      GLCD_SETMODE(0x38);
30
    }
31
    GLCD_STARTDATA(); // als nächstes kommen Pixeldaten übers SPI
32
    if (bpp == 1) {
33
  // monochrome Bitmap
34
      uint16_t pixelcount = w * h; // Anzahl der Pixel im Bitmap
35
      uint16_t fgcolor = pgm_read_word(bitmap); bitmap += 2;
36
      if (flags & GLCD_BMP_USECOLORS) fgcolor = glcd.Colors[1];
37
      uint16_t color = bkcolor; // aktuelle Pixelfarbe auf Hintergrundfarbe setzen
38
      if (flags & GLCD_BMP_SWAPCOLORS) {
39
        bkcolor = fgcolor; // Farben vertauschen
40
        fgcolor = color;
41
        color   = bkcolor;
42
      }
43
      uint8_t data = pgm_read_byte(bitmap++); // 1. Datenbyte lesen und dekodieren
44
      uint8_t pixelbits = ((data >> 4) +1) << 2;
45
      data &= 0x0F;
46
      uint8_t temp = data << 4;
47
      data |= temp; // data enthält nun im beiden Nibbles den Wert des LowNibble
48
      do {
49
        GLCD_WAIT(); // warte auf Display-SPI-Kommunikation, also werden noch Bits ans Display gesendet ? Wenn ja warte bis SPI fertig.
50
        GLCD_OUT(H8(color)); // sende HighByte aus Color ans Display
51
        if (!(--pixelbits)) { 
52
        // neue Daten holen
53
          data = pgm_read_byte_inc(bitmap);
54
          pixelbits = ((data >> 4) +1) << 2; // Anzahl Pixel zu setzen == HighNibble(Data) * 4
55
          data &= 0x0F;
56
          uint8_t temp = data << 4;
57
          data |= temp; // Data = LowNibble(Data) << 4 or LowNibble(Data)
58
        }
59
        GLCD_WAIT(); // warte auf SPI
60
        GLCD_OUT(L8(color)); // sende LowByte der Farbe
61
        ROL(data);  // rotate data, data = (data << 1) | (data >> 7);, ASM Makro ist effizienter "ADD Data, Data; ADC Data,0;" 
62
        color = bkcolor; // Farbe ist Hintergrundfarbe
63
        if (data & 0x01) color = fgcolor; // wenn Bit in Data = 1 dann Farbe auf Vordergrundfarbe
64
      } while (--pixelcount);
65
    } else if (bpp == 16) { 
66
    // full color Bitmap
67
      uint16_t pixelcount = w * h;
68
      while (pixelcount) {
69
        GLCD_WAIT();
70
        GLCD_OUT(H8(bkcolor));
71
        pixelcount--;
72
        GLCD_WAIT();
73
        GLCD_OUT(L8(bkcolor));
74
        bkcolor = pgm_read_word(bitmap); bitmap += 2;
75
      }
76
    } else {
77
   // color, 2 upto 15 BPP Bitmap
78
      uint16_t colortablesize = pgm_read_word(bitmap); bitmap += 2;
79
      uint8_t* colortable = (uint8_t*)bitmap; // Farbtabellen-Zeiger
80
      bitmap += colortablesize; // Farbtabelle überspringen, auf Pixeldaten positionieren
81
      uint16_t colormask = pgm_read_word(&colormasks[bpp -2]); // Farbmaske laden, das ist die AND Maske mit der das Datenword maskiert werden muß um den Index in Colortable zu berechnen, allerdings *2 multipliziert und damit schon angepasst auf den Fakt das in Colortable ein Farbwert ein 16 Bit Word ist.
82
      uint32_t data = 0;
83
      uint8_t databits = 0; // enthält die Anzahl der Pixelbits
84
      uint8_t bitsmul = 1; // statt Shifts mißbrauchen wir den MUL Befehl, ist effizienter auf ATMegas als Shifts von 16Bit.
85
      uint16_t pixelcount = w * h;
86
      do {
87
        GLCD_WAIT();
88
        GLCD_OUT(H8(bkcolor));
89
        pixelcount--;
90
        while (databits < 16) { 
91
 // solange weniger als 16 Bits in Data befüllt sind neue Daten vom FLASH holen
92
          uint16_t t = pgm_read_byte(bitmap++) * bitsmul; // links shift per MUL
93
          if (databits >= 8) data |= (uint32_t)t << 8;
94
            else data |= t;
95
          databits += 8;
96
        }
97
98
        GLCD_WAIT();
99
        GLCD_OUT(L8(bkcolor));
100
101
        if (data & 0x01) { 
102
// wenn unterstest Bit in Data = 1 dann folgt in Data ein Index auf die Farbtabelle mit neuer Pixelfarbe
103
          bkcolor = pgm_read_word(colortable + (data & colormask));
104
          data >>= bpp;
105
          databits -= bpp;
106
          bitsmul = pgm_read_byte(&powerof2[databits & 0x07]);
107
        }
108
  // "Shiftfaktor" für multiplikativen Shift rechts rotieren
109
        bitsmul >>= 1;
110
        if (!(bitsmul)) bitsmul |= 0x80;
111
        data >>= 1;
112
        databits--;
113
      } while (pixelcount);
114
    }
115
    GLCD_WAIT(); // warte auf SPI
116
    GLCD_CS_PULSE(); // CS pulsen
117
    GLCD_SETMODE(0x30); // Modus auf Standard
118
    GLCD_CS_OFF(); // Display-SPI deaktivieren
119
}

Gruß Hagen

von Hagen (Gast)


Lesenswert?

Die Makros L8() und H8() extrahieren das Low/High Byte eines 16Bit 
Words. Die Makros HH8((), HL8(), LH8(), LL8() extrahieren die 
entsprechenden Bytes eine 32Bit Words. In gccutils.h schauen.

Wichtig in der 2-15 BPP Routine ist das Data ein >= 24Bit Datentyp ist. 
Es müssen zu jedem Zeitpunkt mindestens 16 gültige Datenbits in Data 
gespeichert sein. Logisch da bei einer 15Bit Bitmap ja der 15Bit 
Farbindex in die Farbtabelle darin enthalten sein müssen. Das unterste 
Bit in Data (Bit #0) wird dann 1 sein um anzuzeigen das die Bits 1# bis 
15# ein Farbindex darstellt. Durch diesen 1 Bit Linksversatz sparen wir 
uns eine Multiplikation mit 2, Linksshift mit 1, um den Offset in die 
Wordbasierte Farbtabelle zu berechnen.

Data wird beim Nachladen eines neuen Bytes von "Oben" befüllt, man setzt 
also die neuen 8 Bits an Daten aus dem FLASH ontop in Data rein. Somit 
kann man Data immer rechtsshiften um X Bits zu entfernen. Dazu benutzen 
wir keinen Linksshift per LSR Opcode sondern eine 8 auf 16 Bit 
Multiplikation. Das ist auf einem ATMega durchschnittlich immer 4 mal 
schneller als ein generischer Shift.

Die Routinen/Datenstrukturen sind dahingehend optimiert das man sie 
effizient in Assembler optimieren kann. Zb.
1
        ROL(data);
2
        color = bkcolor;
3
        if (data & 0x01) color = fgcolor;

kann in ASM so geschriebenen werden

[asm]
  movw  color, bkcolor
  add  data, data
  bnc  @@next
  inc data
  movw color, fgcolor
@@next
[/asm]

also rotieren von data und das setzen von color in einem Branch.

Gruß Hagen

von Hagen (Gast)


Lesenswert?

sorry

[asm]
  movw  color, bkcolor
  add  data, data
  bnc  @@next
  movw color, fgcolor
@@next
[/asm]

das inc data ist überflüssig.

Gruß Hagen

von Hagen (Gast)


Lesenswert?

der wert in bitsmul entspricht 2^(databits & 0x07).

Gruß hagen

von Gunni H. (gunni)


Lesenswert?

@Hage &  Marc Seiffert:
Ihr habt euch ja nun recht intensiv mit dem Display beschäfftig, wäre es 
nicht sinvoll die beiden Libs zu einer zusammen zu fügen, soweit dieses 
Funktioniert?
Wo es geht, würde ich helfen.

Gruß
Gunni

von Hagen (Gast)


Lesenswert?

Jo sinnvoll ist alles ;) Ich tendiere aber dazu, wenn ich es persönlich 
auch bräuchte, meine Lib nur so anzupassen das man damit andere S65 
Displaytypen unterstützt. Denn es existieren schon alle Funktionen, zb. 
Ellipsen, abgerundete Rechtecke und ein vollständiges Menusystem samt 
verschiedener Editoren um die angezeigten Parameter im Menu zu 
editieren. Soll heisen: meine LPHxxxx Library fürs S65 Display hat einen 
höheren Funktionsumfang, und der ist getestet. Im Gegensatz zur Nodkia 
GLCD Library von damals habe ich diesesmal einiges verbessert. Alles in 
C, bis auf par Kleinigkeiten bei denen ich nicht widerstehen konnt um 
den GCC Code zu verbeseren. Desweiteren alle Display-Controller 
abhängigen Ansteuerungen per Makros. Man sollte also nur diese Makros 
anpassen müssen und ansonsten die speziellen Ansteuersequenzen die 
spezialfeatures des Controllers benutzen.

Nur halte ich es im Hobby aber auch so das ich nur das programmiere was 
ich auch wirklich benötige. Und das S65 habe ich in meinem 
Drumpad-Projekt benötigt und dieses ist schon längere Zeit 
abgeschlossen.

Wenn ich ein Display mit anderen Typ zum Testen hätte dann und nur dann 
würde ich mirs eventuell nochmal überlegen auch dieses Display zum 
laufen zu bringen. Aber im Grunde wäre das Zeitverschwendung da ich es 
nicht brauche zur Zeit.

Und dann kommt noch das problem hinzu das ich mich im Gegensatz zur 
Nokia Library entschlossen habe meine S65 Library eben nicht frei zu 
veröffentlichen. Die Gründe sollten Insider ja bekannt sein. Das hat 
nichts damit zu tuen das ich mein Wissen nicht teilen möchte, das dürfte 
wohl klar sein.

Gruß Hagen

von TheMason (Gast)


Lesenswert?

wow ...
dieser artikel geht auf die 1000'er marke zu :-)

schade nur das ich mir noch kein s65-display organisiert habe.
weiß jemand (sorry habe mir den thread nicht komplett durchgelesen :-)))
ob das s65 kompatibel (wenns nicht gar dasselbe) ist wie das 1.5'' TFT 
auf display3000.com ?

von Gunni (Gast)


Lesenswert?

Soweit ich herausgefunden habe, ist eines der Displays auf Display3000 
ein S65.
Das andere ist bzw. war mal ein Nokia. Das Nokia hat soweit mir bekannt 
4.000 Farben. Dort wird aber ein verkauft, welches mehr Farben hat.
Ich möchte hier niemanden etwas unterstellen, aber ich meine mal gehört 
zu haben, das der Quellcode von Display3000 einer "kostenlos" 
erhältlichen Lib für die Displays sehr ähnlich ist.
Also ich würde dir Empfehlen besorg dir ein "richtiges" Nokia oder S65 
Display und benutze eine hier erhältliche Lib.
Kommst auf jeden fall günstiger bei weg.
Gruß
Gunni

von EDAconsult Udo Kuhn (Gast)


Lesenswert?

Auf der Jagd nach Display's bin ich zufällig hier

Bin gleich los und wie sollte es anders sein ist natürlich das Epson 
Display auf meinem Tisch gelandet, geht auch.  Wie nicht anders zu 
erwarten habe ich ein ATmega8L angeschlossen, geht auch mit 2.8V, nein 
kein aber. Von allen drei Display's habe ich versanden den letzten zu 
erwischen. Dann noch den kleinen ATmega8L, kann ich noch tiefer fallen. 
Geht aber alles, nur duch lesen, das Ding läuft. Falls jemand wirklich 
damit Fehrnsehen möchte, sollte sich überlegen ob min. 24 Bilder in der 
sec. auch mit bester Ausstattung überhaupt auf dem LCD ankommen!

Ansonsten bin ich mit allem was ich hier bekommen konnte schwerstens 
zufrieden, auf alle Fragen habe ich eine Antwort gefunden.

Besonderen Dank an C. Kranz und H. Reddmann.

von sebastian (Gast)


Lesenswert?


von EDAconsult Udo Kuhn (Gast)


Angehängte Dateien:

Lesenswert?

S65 display LS020 und ATmega8L 8MHz 2,8V.

von Borsty (Gast)


Lesenswert?

Ich hab mir mal die Mühe gemacht dem LS020 einen Controller zur seite zu 
Stellen der per UART ansprechbar ist.

Kleine Demo: ( läuft über den pc, Baud 38400 )
http://www.youtube.com/watch?v=-lzhdzzPxKI

Doku und Sourcecode folgt in der nächsten oder übernächsten Woche für 
die die's interessiert :)

Befehle die zZ unterstütz werden:
Pixel setzen, Linie zeichnen, Box zeichnen, Quadrat zeichnen, 5x8px 
Text, 3x5px Text, Hintergrund- und Vordergrund-Farbe setzen (interne 
24bit->16bit Umrechnung), Baudrate ändern.

Was noch geplant ist:
Zugriff auf freie Ports und ADC, Neben Uart auch TWI/I2C slave 
unterstützung.

Das Endergebniss soll ein einfach anzusteuerndes I/O-Interface mit 
Display werden :)

von Michi Müller (Gast)


Lesenswert?

Wow, sieht gut aus. Hab ich das richtig gesehen : War da auch Fading ?

Ich hab auf jeden Fall Interesse an dem Projekt !

von Borsty (Gast)


Lesenswert?

>War da auch Fading ?

Halbwegs :P.. In der Demo ist's so gelöst das ich dem Controller 
jedesmal sage das er die Farbe ändern soll und dann halt das ganze 
überzeichnet.

Eventuell komm ich aber auf die Idee mit dem Fading zurück. Spart ne 
Menge an Daten ^^

Worüber ich mir noch Gedanken machen muss ist die Sache mit dem 
Empfangspuffer. Hin und wieder hab ich das Problem das mir das array zum 
zwischenspeichern der daten vom UART ( immerhin 256 byte ) überläuft.. 
das muss nochmal neu überdacht werden :)

von Wulf (Gast)


Lesenswert?

Über 1000 Beiträge beweist, es ist Bedarf an dem Display-Code.
Respekt!!!

von Borsty (Gast)


Lesenswert?

Ja nu was will man sagen.. Display ist relativ günstig zu beziehen, 
ansteuerung relativ einfach gehalten und der effekt ist groß (176x132 
pixel in farbe uiuiuiuiui :D)

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

@ Borsti

Schaut im Prinzip schomal sehr schön aus !

aber sagmal, warum verwendest du nicht einfach schonmal eine vorgegebene 
Lib und bindest an die einfach nur ein uart-interface an ? auf die art 
könntest du das ganze projekt an einem Tag realisieren :)

ajo, und noch ne Frage. möchtest du wirklich einen mega2561 verwenden ?? 
ein mega128 ist schon überdimensioniert, das ganze würde sich sogar auf 
nem mega32 noch vollkommen wohlfühlen :) vorteil wäre, das das projekt 
weit günstiger zu realisieren ist ! (ein Beispiel: meine C-Grafiklib 
nimmt 5700byte Flash und 23byte Ram ein ;) da vielleich noch die einie 
andere Funktion zu, und dann das USART-Terminal und du bist imernoch 
recht sicher unter 16k)

wenn du ein Projekt machst, das für viele leute sein soll ist ein 
günstiger nachbaupreis sowie eventuell auch eine Version nur für 
bedrahtete Bauteile immer von Vorteil :)

von Klaus (Gast)


Lesenswert?

@Gunni
ich habe mehrere Display3000 Module (anfangend seit 2005) im Einsatz und 
ich kann bestätigen das die Software mit den hier kursierenden 
Fragmenten nichts zu tun hat. Das ist lediglich ein Gerücht und bislang 
ist ja auch jeder den Beweis schuldig geblieben. Ich glaube auch nicht 
das hier abgeschaut wurde, denn etliche Befehle (z.B. 90° Drehung war 
von Anfang an vorhanden) waren in der Display3000 Doku schon 
dokumentiert bevor sie hier auftauchten...teilweise fehlen sie hier auch 
noch (z.B. die Abschaltsequenz). Es ist also vielleicht sogar umgekehrt: 
jemand holt sich die infos dort und setzt sie hier rein. Aber das ist 
nur Vermutung. Keine Ahnung warum Display3000 diese Gerüchte hier nie 
dementiert; vielleicht um keine Trolle zu wecken.

Das 1.5" ist tatsächlich ein 65000 Farben Display, was ein wesentlich 
besseres Bild als das übliche 4096 Farben Nokia Display hat.
Die Softwareroutinen gibt es übrigens für beide Displays als Library in 
C und Basic. Die Kommandos sind bei beiden Displays identisch, d.h. man 
kann jederzeit von einem Display zum anderen switchen: einfach nur die 
neue Library im File angeben und neukompilieren: Fertig.

Ich war übrigens vor ca.4 Wochen mal dort um was abzuholen. Sie hatten 
vergessen von einem hinteren Tisch was wegzuräumen - geile Sachen habe 
ich gesehen..... ist für ein Kundenprojekt und ich musste versprechen 
nicht drüber zu sprechen.... also halte ich die Klappe, auch wenn es 
schwer fällt. Wenn es das mal dort für alle zu kaufen gibt: Hammer!

Klaus

P.S. Habe über den Youtube Link oben auch Leute entdeckt, die einen 
Bierbrauautomaten (ob meine Freundin mir sowas wohl erlauben würde 
ggg) mit einem älteren D072 von Display3000 programmieren:
Hier sind ein paar Links:
http://www.youtube.com/watch?v=xtSXgI_YnPg und
http://www.youtube.com/watch?v=ReRWOblLscM

von Borsty (Gast)


Lesenswert?

>aber sagmal, warum verwendest du nicht einfach schonmal eine vorgegebene
>Lib und bindest an die einfach nur ein uart-interface an ?

wäre doch viel zu einfach ;)

>ajo, und noch ne Frage. möchtest du wirklich einen mega2561 verwenden ??

Nö, nur entwickel ich das ganze auf dem bereits angesprochenem Modul von 
Display3000, neue Displays werden demnächst bei ebäh bestellt, abhängig 
von der code größe entscheide ich mich dann für einen passenden atmega.

Alle Register u.Ä. werden am Ende mit defines gesetzt damit man das 
direkt auf verschiedener hardware benutzen kann :)

von Troll (Gast)


Lesenswert?

@Klaus

>vielleicht um keine Trolle zu wecken.

Ich habe sogar Gerüchte gehört, hier würden Trolle manchmal 
Schleichwerbung machen :o)

von EDAconsult Udo Kuhn (Gast)


Lesenswert?

Vielleicht ist so etwas von interesse.

http://serdisplib.sourceforge.net/index.html

Dann noch etwas zur GLCD.lib

Beitrag "ATmega8 durch ATmega168 ersetzen"

von Markus B. (wolframator)


Lesenswert?

Nach 2 Tagen lesen hab ich jetzt alles durch... Leider wurde die Frage 
bzw. des Software SPI noch nicht beantwortet. Ich würde das Display 
gerne per Software SPI nutzen, da mein Hardware SPI bereits in Nutzung 
ist. Gibts dadurch Nachteile die man bedenken sollte?

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Alles n stück langsamer, sonst eigentlich nix besonderes.

von günny (Gast)


Lesenswert?

@ wolframator:

SPI ist doch ein Multi-Slave-Bus. Was spricht dagegen, das LCD mit an 
die Hardware-SPI zu hängen?

von Markus B. (wolframator)


Lesenswert?

Also langt es Slave-Select von Komponente A oder Komponente B auf Hi bzw 
Lo zu setzen wenn ich gerade Daten schreiben will die nur Für A oder B 
sind?

von Marc S. (eurofighter) Benutzerseite


Lesenswert?

jup, richtig. nur der slave bei dem CS auf LOW ist nimmt aktiv am 
Busverkehr (sei es nun lesen oder schreiben) Teil, die anderen 
ignorieren einfach alles

von Garag (Gast)


Lesenswert?

Hallo,

ich konnte jetzt auch endlich meinen Aufbau (Mega 644 mit 74HC4050 als 
Levelshifter und S65 Display) zum Laufen bringen.

Dabei hatte ich mit einigen Problemen zu kämpfen:

1) Hardware SPI benutzt andere Pins (Wer lesen kann ist doch klar im 
Vorteil :-))
1
#define LCD_CS     B,0
2
#define LCD_RESET  B,1
3
#define LCD_RS     B,2
4
5
// Info: Es wird Hardware-SPI verwendet vvvvvv
6
#define LCD_MOSI   B,5
7
#define LCD_MISO   B,6
8
#define LCD_SCK    B,7
9
// Info: Es wird Hardware-SPI verwendet ^^^^^^

2) SPI ging immer von selbst in den Slave Mode. Nach genauem Studium des 
Datenblattes musste ich feststellen, das es besser ist SS(PB4) als 
Ausgang zu schalten da ansonsten bei einem Low Pegel automatisch auf SPI 
Slave umgeschaltet wird.
1
int main(void)
2
{
3
  PORTB &= ~_BV(PB4);
4
  DDRB |= _BV(PB4);
5
6
    S65_Init();
7
  S65_HgBelInit(2);
8
  S65_Fillscreen(0xFFFF);

3) Timer2 Einstellungen an den 644 angepasst. Die Hintergrundbeleuchtung 
liegt bei mir jetzt auf PD7 (OC2A).
1
void  S65_HgBelInit(uint8_t Helligkeit){
2
  PORTD &= ~_BV(PD7);  // clear port before enable
3
  DDRD |= _BV(PD7);  // will be used for OC2, must be output
4
  TCCR2A = _BV(WGM21) | _BV(WGM20) | _BV(COM2A1);
5
  TCCR2B = _BV(CS20);
6
  TCNT2=0x00;  
7
  OCR2A=pgm_read_byte_near(&HG[Helligkeit]);
8
}

Nachdem dann doch alles lief wollte ich zum Test eine Grafik auf dem 
Display ausgeben und wurde mit recht merkwürdigen Balkengrafiken 
belohnt. Nach einigem hin und her lief es dann doch. Bei dem Aufruf von 
"S65_PutRawBmp16" müssen anscheinend Höhe und Breite getauscht werden. 
Mit folgendem Aufruf hat es dann mit einem vollflächigem Bild gepasst:
1
  S65_PutRawBmp16(0, 0, S65_test_pic_bmp, S65_test_pic_HEIGHT, S65_test_pic_WIDTH);

Ich wünsche allen noch viel Spaß beim Basteln.

von Frank H. (huene)


Lesenswert?

Hallo,

 ich habe versucht die Power down Sequenz für das Display LS020 
einzubauen.

 Hierzu habe ich die lch.h wie folgt erweitert.
1
const char PowerDown1[] PROGMEM = {
2
0xEF, 0x00, 0x1B, 0x04, 0xFE, 0xFE, 0xFE, 0xFE, 0x7E, 0x04, 0xE3, 0x04, 0xE4, 0x04,
3
0xE2, 0x01, 0x80, 0x00, 0xE0, 0x01, 0x7F, 0x01
4
};
5
6
const char PowerDown2[] PROGMEM = {
7
0xE0, 0x00, 0x7F, 0x01
8
};
9
const char PowerDown3[] PROGMEM = {
10
0x01, 0x01
11
};
12
13
void lcd_PowerDown(void)
14
{
15
  LCD_PORT |= _BV(LCD_CS);     
16
  LCD_DIR |= _BV(LCD_CS);       
17
18
  wrtab(PowerDown1, 22);
19
  mswait(5);
20
  wrtab(PowerDown2, 4);
21
  mswait(5);
22
  wrtab(PowerDown3, 2);
23
  
24
  LCD_PORT &= ~_BV(LCD_CS);  // select Display
25
}

Wenn ich nun die Power down Routine aufrufe, verschwindet die Anzeige 
(Hintergrundfarbe und Text) auf dem Display langsam. Vom Verhalten 
ähnlich wie beim Ausschalten der Displayversorgungsspannung. Ist das 
normal oder müsste das Display schlagartig weiß werden?

Falls das Display eigentlich sofort weiß werden müsste, hatt dann jemand 
eine Idee, was ich evtl. übersehen haben könnte?

Vielen Dank
 Frank

von dudu (Gast)


Lesenswert?

huene,

sah bei mir auch so aus.
die sequence ist so nicht verwertbar. war wohl mal als 
experimentieransatz gedacht. aber ist schon schade, dass sich bisher 
logikanalysator und telefon nie getroffen haben. habe da ein TLA5204, 
aber eben nix zum messen.
nur auf verdacht ein handy kaufen, von dem ich nicht weiss, ob ein LS020 
drinsteckt, nunja..

von Dominik (Gast)


Lesenswert?

Hallo!

Ich habe mich jetzt nochmal rangetraut. Nach einem Fehlversuch hatte ich 
vorerst aufgegeben, aber nun hab ich Zeit und Lust das Ding ans Laufen 
zu bekommen!
Ich nutze einen ATmega8 und habe das L2F50 Display.
Habe genau die Verschaltung von superkranz übernommen und mehrmals 
gecheckt. Geändert habe ich im Tesprogramm nur die Ports verändert:
#define LCD_CS     PB2
#define LCD_RESET  PB1
#define LCD_RS     PC0
#define LCD_MOSI   PB3
#define LCD_MISO   PB4
#define LCD_SCK    PB5
Dementsprechend ist es auch verschaltet.

Dazu habe ich nur die ersten 5 ASCII-Zeichen drin. (const uint8_t 
ascii_tab[5][14] PROGMEM = { ....... )
Als Testausgabe habe ich "!!!###". Ist es nötig dass noch ein \0 hinten 
dran hängt wie beim Testprogramm?

Mein gravierenes Problem ist halt dass ich keine Ausgabe habe. Es wird 
nichts ausgegeben. Manchmal kommt ein Bildrauschen. Aber auch nicht 
immer. SEHR komisch.

Weiß da einer Rat? Was könnte das prob sein?

MfG Dominik

von Frank H. (huene)


Lesenswert?

Hallo,

 irgendwo in diesen Thread meine ich gelesen zu haben, dass alle Signale 
auf einen Port liegen sollten. Desweiteren hatte ich das Problem das der 
Complier die Warteschleife wegoptimiert hatte. Wurde auch mal in diese 
Thread geschrieben und hatte bei mir geholfen.
Ich bin aber noch am Anfang mit meinen Versuchen in C und mit dem 
AVR-Controller. Daher habe ich sicher mehr Fragen als Antworten.

MfG
 Frank

von Gunni (Gast)


Lesenswert?

Die Signale müssen nicht zwingend auf einem Port liegen.
LCD_RS und LCD_CS sind eh software Signale (Hardwareunabhängig).
Wichtig ist bei MISO, MOSI und SCK das sie am richtigen port liegen.
Unterumständen brauchst du ja mehr CS leitungen weil du mehr Slaves dran 
hast als du Pins an dem jeweiliegen Port noch frei hast.

von Fridolin (Gast)


Lesenswert?

hallo,

auch ich habe ein problem, ich habe mich grob an die pinbelegung des 
einen bildes in diesem thread für den mega16 gehalten (is ja mega32 
pinkompatibel) und das mega32 beispiel genommen.
nun meine erste frage:

#define LCD_CS     PB4
#define LCD_RESET  PB1
#define LCD_RS     PB0
#define LCD_MOSI   PB5
#define LCD_MISO   PB6 <-- was liegt da für ein pin an? ich habe dafür 
keinen finden können
#define LCD_SCK    PB7

pflicht ist ja folgendes:
DAT an MOSI, also PB5
CLK an SCK, also PB7

aber was ist bei dem display bitte MISO? ich finde es einfach nicht.

und nun meine zweite frage:
ich erzeuge die 2,9V mit einem 3V festspannungsregler, was auch gut 
klappt (multimeter zeigt bisher ohne last 2,9 an). Wenn ich noch keine 
12V anlege für die LED-Beleuchtung, dann sieht dann müsste doch alles 
noch genau so gehn wie beim handy (anzeige sehr matt, aber dennoch 
lesbar (habe ein M65).

Grüße

PS: ich habe ein LPH88

von Gunni (Gast)


Lesenswert?

@Fridolin:
Der MISO muss für den SPI betrieb konfiguriert werden.
Auch dieser muss auf dem richtigen PIN konfiguriert werden.
Wir aber in der tat an dem Display nicht angeschlossen.

Zu deiner zweiten frage:
Ja, das Display sollte auch ohne Hintergrund Beleuchtung etwas anzeigen 
(unter Umständen etwas schlechter zu lesen als mit Bel.).
Mit welcher VCC versorgst du deinen µC? Auch mit 3V?
Ansonsten brauchst du nen Levelshifter. (Siehe weiter oben)

von Fridolin (Gast)


Lesenswert?

Mein Mega32 läuft mit 5V und somit mache ich Levelshift über die 470 Ohm 
(und 610Ohm gegen GND, wobei ich mich wundere, warum hier ein so 
geringer Widerstand gewählt wird), das sollte ja eigentlich hinhauen.
Könnte etwa Kabellänge ein Problem sein? ich habe etwa 7cm kabel vom 
Display zum 10-Pol Wannenstecker, und dann gehts von hierausnochmal 
durch die Widerstände und dann direkt mit ner Buchsenleiste an den 
Mega32.

Ich glaube, mein Fehler liegt in der Pinbelegung;
diese Beiden Pins sollten soweit ich das verstehe frei wählbar sein.
#define LCD_RS       PB0 <- LCD-Pin1
#define LCD_RESET  PB1 <- LCD-Pin2

Auch dieser sollte relativ frei wählbar sein, da es ja den Slave angibt, 
aber da öfters SS (PB4 bei Mega32) genommen wird, wollte ich mir da eine 
Fehlerquelle ersparen.
#define LCD_CS     PB4  <- LCD-Pin3

Die Restlichen Pins sind Pflicht:
#define LCD_MOSI   PB5  <- LCD-Pin5
#define LCD_MISO   PB6  <-- bleibt leer
#define LCD_SCK     PB7  <- LCD-Pin4

Dann muss noch an LCD-Pin6 und Pin8 noch 3V angelegt werde, und LCD-Pin7 
auf GND.

Und dann sollte doch das simple-demo mit anpassen der CPU, Taktrate und 
Pin-Defines funktionieren, oder?

von Thomas H. (supergrobi)


Lesenswert?

Hallo,

hat jemand schon die Lib für den MSP430 verwirklicht ?
wo finde ich das Datenblatt für das LPH88xx

ich gebs zu, ich hab mir den Thread noch nicht von ANfang bis Ende 
durchgelesen, man möge mir dies verzeihen ;)

gruß
Thomas

von Fridolin (Gast)


Lesenswert?


von Fridolin (Gast)


Lesenswert?

hmm.. find ich echt schade, dass sich keiner dazu in der Lage fühlt, 
eine klare einfache kurze Aussage zu machen, wie das vorgehen mit einer 
Mega16/32 Architektur ist...
Anscheinend haben das ja einige problemlos hinbekommen - bei mir bleibt 
halt alles schwarz.

von Michi (Gast)


Lesenswert?

Hi ihr alle,

ich versuche, die LS0XX Library in meinem Atmega 2560 Projekt 
einzubinden, bekomme aber immer eine "undefined reference", wenn ich die 
Methoden verwenden will. An was könnte das liegen?
Habe alle Verzeichnisse und Dateien wie in der Test-Datei included(Auch 
in den Projekteinstellungen). Verwende das AVR Studio

Auf was muss ich noch aufpassen, wenn ich statt dem Atmega16 den 2560 
verwenden will?

Danke schonmal
Michi

von µluxx .. (uluxx) Benutzerseite


Lesenswert?

Fridolin wrote:
> hmm.. find ich echt schade, dass sich keiner dazu in der Lage fühlt,
> eine klare einfache kurze Aussage zu machen, wie das vorgehen mit einer
> Mega16/32 Architektur ist...
> Anscheinend haben das ja einige problemlos hinbekommen - bei mir bleibt
> halt alles schwarz.

Junge...der Thread hat über 1000 Messages in denen alle möglichen 
Fehler/Probleme diskutiert wurden, da muss doch wohl genug Info drin 
sein, um dein Problem zu lösen....

von Fridolin (Gast)


Lesenswert?

µluxx, mal abgesehn von deiner doch etwas patzige Ansprache, denk mal 
kurz nach: würde ich einen solchen Post erstellen, wenn ich nicht schon 
aufgegeben hätte?
Klar, es sind viele Posts, und ich habe sie so mehr oder weniger alle 
mal gelesen (wobei fast nix hängenblieb) und dann auch schön nach 
Stichworten gesucht, aber effektiv hat es dann nicht funktioniert. Daher 
hab ich mal meine bisherigen Erfahrungen und Schritte übersichtlich 
zusammengefasst, in der Hoffnung, dass jemand weiß, was daran Falsch 
sein könnte, sodass das dann auch nachfolgenden Leuten helfen möge.

von Frank H. (huene)


Lesenswert?

@Fridolin

Ich habe mit dem Bilderrrahmenprogramm von M. Bode angefangen. Nach der 
Anpassung der Funktion mswait (wurde in der ursprünglichen Version 
wegoptimiert) funktionierte mein Display. Als Levelschifter habe ich die 
Kombination 470-560R. Hatte gerade nichts anderes in der Bastelkiste. 
Kabel habe ich mind. 10cm dazwischen + Drahtbrücken, Steckbrett usw. 
Sollte als kein Problem sein.

Mal sehen, ob ich noch etwas zum Power-Down herausfinde. Das M65 ist 
schon geöffnet. Ich wollte ein paar Drähte anbringen und dann mal 
versuchen die Power-Down Sequenz mitzuschreiben.

MfG
 Frank

von Dilligent (Gast)


Lesenswert?

Hey, geile sache mit den Displays, diese Folie zu löten is allerdings 
echt ein Krampf. Einzige Chance: IDE Flachbandkabel zerschnippeln (ham 
eh alle SATA, die alten DIngr brauchen wa nich mehr) und dann diese 
mini-einzel drähte der leitungen auf die Folie löten, das klappt 
einigermaßen.... Aber dann diese Drähte ins Steckbrett? oh mann, das is 
echt ne qual aber ich denke in 1-2 Tagen hab ichs am laufen... Hab jetz 
ersma 2-3 Stunden rumgelötet bis es einigermaßen klappt...

ich benutze 2200/2700 Ohm Spannungsteiler und komme auf ca. 2,76V, hab 
keine anderen da und ich glaube kaum das mir diese 0,14V schlaflose 
nächte bereiten werden ;) Hintergrundbeleuchtung klappt ebenfalls schön 
und sieht echt gut aus (bis mir das Kupferpad der Folie abgegangen is, 
argh!)

Naja, dafür kosten die Dinger auch nich die Welt... schöne Grüße

von Lanius (Gast)


Lesenswert?

@Thomas H

>hat jemand schon die Lib für den MSP430 verwirklicht?

die ganze Lib nicht, aber ich habe ein LS020 an einem MSP430F1611.

von Thomas H. (supergrobi)


Lesenswert?

@ Lanius

könntest Du mir den Code bitte zu Verfügung stellen ?

Gruß
Thomas

von Obelix (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen!

Kann mir jemand weiterhelfen?

Ich habe ein Display LS202 an einen atmega32 angeschlossen. Dieser ist 
intern mit 8MHZ getaktet.
Jetzt hab ich beim Programm LS202-RGB.BAS die Anzeige wie auf dem Foto.
Hat jemand ne Idee wo der Fehler liegt?

Danke

Richard

von Fridolin (Gast)


Lesenswert?

Richard, ich kann dir leider nicht helfen, aber könntest du so nett 
sein, und deine Beschaltung grob aufzeichnen und dann z.b. als Bild 
reinstellen?
Bei mir bleibt nämlich wie schon gesagt leider der Bildschirm schwarz - 
ich seh netmal so schöne Muster wie du ;D

von SuperUser (Gast)


Lesenswert?

Hallo Fridolin,

da du ja so verzweifelt bist...

Ich finde erst mal keinen Fehler bei deiner Beschaltung. Der Atmega 32 
funktioniert problemlos mit der SW und dem Display (selber getestet). 
Wenn du also die zum Display passende SW nimmst, sollte es funktionieren 
nachdem du lediglich den Takt und die Port Definition geänderst hast.

Kannst du überprüfen (Osci) ob die Signale am Display ankommen? Wenn ja, 
ist u.U. das Display defekt oder Löt-Probleme?

Grüße
 SU

von Dominik (Gast)


Lesenswert?

Hey!

@Obelix:
Also der anfang sieht danach aus als wenn du die farben falsch 
hochzählst. Was willst du da denn ausgeben? Wenn man "normal" das 
komplette Farbband, also die 5-6-5 Bit Kombi hochzählt, dann kommt 
dieses komische Muster. Der rest ist noch der test von deiner 
initialisierung.


Gruß Dominik
PS: Mein Fehler war dass ich bei der Portänderung vom B Port auf den C 
Port vergessen habe die Def alla PORTB |= ..... nach PORTC |= .... zu 
ändern. :>

von Fridolin (Gast)


Lesenswert?

Hallo SU,


> Ich finde erst mal keinen Fehler bei deiner Beschaltung. Der Atmega 32 
funktioniert problemlos mit der SW und dem Display (selber getestet).
ok, schonmal gut zu wissen, dann werd ich mal mehr an der Software 
rumspielen

> Kannst du überprüfen (Osci) ob die Signale am Display ankommen?
nein, hatte nur ein oszi geliehen. muss ich mal schauen, dass ich 
nochmal drankom.

>Wenn ja, ist u.U. das Display defekt oder Löt-Probleme?
Also auf Kabelbruch hab ich das Kabel untersucht, und durchgang (mit dem 
Entsprechenden Widerstand) hatten auch alle Leitungen...

Nunja, ich werde dann wie gesagt mal schaun, ob ich Softwaremäßig nen 
Fehler gemacht hab.

Vielen Dank!

von Lanius (Gast)


Lesenswert?

@ Thomas H.

>könntest Du mir den Code bitte zu Verfügung stellen ?

ja, muss ich aber erst raussuchen. Upload heute oder morgen.

von Lanius (Gast)


Angehängte Dateien:

Lesenswert?

hmm, ich hänge mal das ganze Projekt an.

Die interessanten Funktionen sind in display.c und vieleicht noch 
backlight.c
Das ganze Programm wird so wie es ist nicht laufen da als erstes ein 
Bild von einer SD-Karte geladen wird.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

@Obelix:
hast du

$hwstack = 128
$swstack = 128
$framesize = 128

drinne?

http://www.comwebnet.de - Bascom Projekte auch mit S65 Display

von James (Gast)


Lesenswert?

Hallo
Gibt es eine Möglichkeit die LIB von Hagen so umzubiegen das ich auch 
LS020 displays ansteuern kann?

von Jens (Gast)


Lesenswert?

also nich hauen, aber ich stell n paar doofe Fragen und selbst wenn ich 
alles hier lese, dann werd ich ned schlauer ... daher ...

1.) ich hab ne Funktion für das LHP88 geschrieben (als Erweiterung für 
den Ur-Code von Superkranz) daß eine Linie malen soll - Strich in 
X-Richtung, sieht so aus:

Auffruf im Programm:
x_line(0,20,174,0xffe0);  // Pos x,y Länge, Farbe

void x_line(unsigned int x, unsigned int y, unsigned int l, unsigned int 
c)
{
uint16_t i;

PORTB &= ~_BV(LCD_CS);        // Auswahl Display

lcd_comtype(0x16);
lcd_comdat(0x83-y, 0x83-y);       // y - Koordinaten
lcd_comtype(0x17);
lcd_comdat(x+l, x);        // x - Koordinaten
lcd_comtype(0x21);
lcd_comdat(0x00, 0x00);        //
lcd_comtype(0x22);
lcd_write(0x76);

for (i=0; i<DISP_W*DISP_H; i++)
  {
  lcd_write16(c);        // mit Farbe ausfüllen
  }

PORTB |= _BV(LCD_CS);          // Display weg
}

es malt auch einen Strich, aber zwei Pixelreihen breit und ich versteh 
bei Nacht ned wieso - ihr? Wenn ich das Ganze für Y-Richtig verbiege, is 
der Strich nur ein Pixel breit!

wo wir schon dabei sind, was macht:
lcd_comdat(0x00, 0x00);        //
lcd_comtype(0x22);
also ich mein natürlich welchen Sinn hat es?

Die Frage nach einer funktionierenden und für mich verständlichen 
Funktion zur Ausgabe eines Bitmaps gibt es auch ... und woher bekommt 
man die Sorte Displays die für die GLCD passen, weil bisher hab ich bei 
ebay nur LHP und die Epsonteile entdeckt ... ???
Danke

von Henrique V. (Firma: CMOS Drake) (rickonvb)


Lesenswert?

Hallo Freunde,

entschuldigung über mein Deutsch (Ich spreche Portugiesisch und english 
und jetzt learnen Deutsch). Vielleicht werde ich mal auf English 
schreiben?

Zuerst möchte ich "Hallo!" sagen und Gratulieren für diese forum.

Bitte, ich möchte LS020B8UD05 benutzen mit PSoC mikrocontroller oder 
PIC. Haben Sie vielleicht ein bisschen code auf C-programmin?

Danke für alles!

Grüsse von Brasilien,

Henrique
e-mail: henriquevilela@cmosdrake.com.br

von Marc Seiffert (Gast)


Lesenswert?

hi henrique,

some posts upwards i postet a "library" in C for use with Atmel-mega 
µCs. Of course it wont directly run on your controller. But if you 
modify the hardware-part of the librarie (the SPI-Part) the high-level 
functions will run without problems i suppose.

Best regards,

Marc S.

von Henrique V. (Firma: CMOS Drake) (rickonvb)


Lesenswert?

Hi Marc!

Thank you so much. My Deutsch is basic... but at least you could 
understand! :)

I saw some codes here... but they end up in ASM code.

Maybe I didn´t pay much attention to other library.

Thank you!

Henrique V

von Henrique V. (Firma: CMOS Drake) (rickonvb)


Lesenswert?

I am here just to let you know that everything is just fine!

The display is Awesome!

Thanks for the help!

If yo guys need anything... I´ve got a code for PSoC.

Grüsse,

Henrique Vilela

von Marc Seiffert (Gast)


Lesenswert?

maybe it would be good if you simply put the essential code-parts in a 
.zip and post it here in the forum so that everybody is able to use the 
code if he wants :)

i dont use psoc-chips but there are so many questions about different 
controller hier in this thread i think it might be quiets usefull

Greets, Marc

von Henrique V. (Firma: CMOS Drake) (rickonvb)


Angehängte Dateien:

Lesenswert?

Sure Marc!

This is a good idea!

One thing I got to say..... using ASM SPI code is far faster than C SPI 
code.
I made a simple ASM SPI code and it is about ten times faster.

Please.. feel free to replace the C code... as I used simple 
instructions I think anyone can use it.

Best Whishes!!

Henrique Vilela

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Hallo Jungs,

kennt jemand das S65 Display -> P03.... ?

ist es zuwas kompatible ( Außer mit dem Handy )?
Wird bei Ebay angeboten, sieht ähnlich aus wie das LS020...

von James (Gast)


Lesenswert?

Hallo Marc.

Vielen Dank erstmal für deine Lib. Bin bis jetzt zufrieden. Was ich aber 
noch vermisse ist eine Funktion für Rechtecke mit abgerundeten Ecken.
Ansonsten super Arbeit. Weiter so!

von Hagen R. (hagen)


Lesenswert?

Solche Rechtecke kann man mit der gleichen Routine zeichnen lassen die 
auch Ellipsen und Kreise zeichnet. So habe ich es bei meiner S65 Library 
gemacht. Zeichnet man eine Ellipse so benutzt man 2 unterschiedliche 
Radien für die sich gegenüberliegenden Ecken eines Rechteckes. Sind 
beide Radien exakt gleich so entsteht ja nach Größe der Radien entweder 
ein exaktes Rechteck (wenn Radien = 0 sind) oder abgerundetes Rechteck 
wenn Radien < Halbierende der längsten Kante sind, oder ein exakter 
Kreis wenn das Rechteck ein Quadrat ist und die Radien sind exakt die 
Hälte der Kantenlänge.
Eine Ellipse entsteht wenn die Radien jeweils exakt die Hälfte der 
jeweiligen 2 Kantenlängen sind und das Viereck ein Rechteck ist und kein 
Quadrat.
So kann man zb. auch eine abgerundete Tonne zeichnen lassen, wenn zb. 
der eine Radius größer ist als die Hälfte der jeweiligen Kantenlänge und 
der andere Radius = 0 ist.

Ergo: mit einer cleveren Zeichnroutine für Ellipsen lassen sich auch 
Kreise und abgerundete Rechtecke zeichnen.

Gruß Hagen

von Christian K. (christiank)


Lesenswert?

zur Info:

Ich auf der web-Seite ein update für den LPH Code aufgespielt. Der läßt 
sich jetzt auch mit der neuen gcc Version (getestet 4.2.1) fehlerfrei 
compilieren und läuft bei mir mit Atmega128 bei 16MHz.

CPU Takt ist in disp.h einzustellen. In der simple.c habe ich auch noch 
den PWM backlight timer programmiert, damit bei mir die 
Hintergrundbeleuchtung geht. Die drei Zeilen müsst ihr u.U. 
auskommentieren.

von James (Gast)


Lesenswert?

Hallo Marc

Erstmal vielen dank für deine Libary.
Funktioniert gut. Nur die Funktion S65_Fillscreen funktioniert nicht 
richtig. Wenn ich ein Text ausgebe und im nachhinein das Display wieder 
mit einer Farbe füllen will, zeichnet er mir nur zwei Linien. Eine vom 
Ende des Textes bis zum Rand und dan am Rand weiter bis links oben in 
die Ecke. Ich hab schon versucht den Fehler zu analysieren, aber meine C 
kentnisse sind noch nicht so gut.
Übrigens, wäre es kompliziert noch eine Funktion für ein Rechteck mit 
abgerundeten Kanten zu schreiben. Danke!

von James (Gast)


Lesenswert?

Sorry, nochmal die Frage wegen den abgerundeten Rechteck. Habe die 
Antwort von Hagen nicht gleich gesehen.

von Marc Seiffert (Gast)


Lesenswert?

hmm..das mit dem S65_Fillscreen schaue ich mir nochmal an

de Fehler ist mir noch nicht aufgefallen. wasfür parameter nutzt du ?

Gruß, Marc

von James (Gast)


Lesenswert?

Hallo Marc

Ich betreibe das Display mit einem Mega128. Ich habe lediglich die Pins 
angepasst.
Mein Code sieht so aus:
1
int main(void)  // ### Hauptprogramm
2
{
3
// ***** INITS *****
4
 
5
   cli();          
6
  S65_Init();        
7
  sei();          
8
9
// ***** Hauptteil *****
10
 
11
   S65_Fillscreen(BLACK);
12
13
  S65_SetFont(ver-font);          
14
  S65_SetRot(0);            
15
  S65_SetTextColor(WHITE);      
16
  S65_SetTextTyp(0);          
17
  S65_SetNonTransparenz(0);        
18
  // Textausgabe
19
  for(uint8_t i=0x00;i<0xFF;i+=0x03)
20
  {
21
    S65_SetFont(ver-font);
22
    S65_SetTextColor(RGB(i,i,i));
23
    S65_PutStr(15, 55, "Hallo");
24
  }
25
        S65_Fillscreen(GOLD);
26
27
  while (1)        // Hauptschleife
28
  {
29
  }
30
}

von John S. (linux_80)


Lesenswert?

@ Avr Nix

wenn P03 drauf steht, ist es eher dieses hier, auf dem Kopf stehend im 
dunklen Bereich zu erkennen:
http://www.superkranz.de/christian/S65_Display/pics/epson_display_large.jpg

Ich hab mir die Tage auch ein P03 gekauft, aber es ist ein LPH88 
gekommen, mal sehen wie's wird.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

@Tiny : Danke! Ich arbeite meist mit den LS020 in Bascom, ich dachte 
schon da gibts was neues.

von Henrique V. (Firma: CMOS Drake) (rickonvb)


Lesenswert?

Hallo Freunde,

Bitte, wo kann man diese LS020 display billig einkaufen?

Hier in Brasilien Jemand kann man einkaufen für U$12,00.

Danke!

Sehr Grüsse,

Henrique Vilela

von edgar (Gast)


Lesenswert?

Hallo, ich habe mir vor kurzem auch ein LS020 display gekauft und die 
Ansteuerung mit hilfe von Bascom und einem Atmel32 mit knapp 10 Mhz 
hinbekommen. Ich habe auch die BeispielVideos gesehen. Und nun zu meiner 
Frage, mit welcher Geschwindigkeit kann das Display beschrieben werden. 
Bei mir dauert es relativ lang um den kompletten Bildschirm zu füllen. 
Wie wurden dann die sich drehenden Vektorobjekte erzeugt? Mit einem 
schnelleren Quarz? Und was mich interessieren würde, wie viele Frames 
pro Sekunde sind möglich und wovon abhängig?

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Soviel ich weiss SPI 1/2..1/4 der Quarzfrequenz

http://comwebnet.weimars.net/forum/showthread.php?tid=28

laut Tests soll bei BASCOM bei Hard-SPI 2x schneller sein als SOft-SPI

von Henrique V. (Firma: CMOS Drake) (rickonvb)


Lesenswert?

Hallo!

Kennen sie jede SPI Handy Kamera? Na klar... mit ein bisschen 
c-programming..?
Danke schön!

Grüsse,

Henrique Vilela

von Mi G. (ducky)


Lesenswert?

Moin ...

hat schon mal jemand eins der anderen verfügbaren S65 Displays 
hinbekommen ???
P03 zum Beispiel ...

Gruß Micha

von Markus B. (wolframator)


Lesenswert?

Habe bei eBay eine Hand voll Display mit einem Epson-Controller 
bekommen. Die Bezeichnung der Displays sind allesamt P05... Sollte 
jemand wie ich diese abbekommen, einfach den Code vom Epson P03 
benutzen. Klappt wunderbar :)

von Peter (Gast)


Lesenswert?

Hallo Forumskollegen,

Ich hab mir auch ein Display besorgt, genau das ls020 mit Mega8, 8mhz.

Als Software benutze ich bascom, und den Source hab ich aus dem Internet 
für das Display.

Ihr kennt das Programm sicher.

Bei mir funktioniert schon ziemlich viel, aber ich kann keinen Text 
schreiben. Also Linien, Pixelset, CLS, Init...das funktioniert alles,
aber ich kann leider nichts schreiben. Da kommt am Display nichts 
schönes raus. Nur vertikale linien...

Kann mal bitte einer von euch Profis drüberlesen?

Irgendwo bei dem Untermenü ascii Zeichen dürfte was nicht stimmen.
MFG Peter
1
$regfile = "m8def.dat"
2
$crystal = 8000000
3
$baud = 19200
4
5
$hwstack = 64
6
$swstack = 64
7
$framesize = 64
8
9
Ddrb = &B11111111                                           'portb output ->S65 Display
10
11
Dim A1 As Word , B1 As Word , R1 As Byte , F1 As Word , T As Byte , Platz As Word
12
Dim W1 As Word , Xy As Byte , Farbe As Word , Zeichenkette As String * 30
13
14
15
'##################################################
16
'                   SPI
17
'#################################################
18
19
Rs Alias Portb.0
20
Res Alias Portb.1
21
Cs Alias Portb.2
22
Clk Alias Portb.3
23
Dat Alias Portb.4
24
25
26
'16Bit Color -> RRRRRGGGGGBBBBB
27
Const Lila = &B1111100000011111
28
Const Blau = &B0000000000011111
29
Const Weiss = &HFFFF
30
Const Schwarz = &H0000
31
Const Rot = &B1111100000000000
32
Const Gruen = &B0000011111100000
33
Const Cyan = &B0000011111111111
34
Const Gold = &B1111111111100000
35
Const Grau = &B1111111111110110
36
Const Hgelb = &B1111011110101000
37
Const Dgelb = &B1111011111010000
38
39
Const X = 176
40
Const Y = 132
41
42
Declare Sub S65_init()
43
Declare Sub S65_pset(byval Lx As Byte , Byval Ly As Byte , Byval Color As Word)
44
Declare Sub S65_line(byval Lx1 As Byte , Byval Ly1 As Byte , Byval Lx2 As Byte , Byval Ly2 As Byte , Byval Color As Word)
45
Declare Sub S65_zeichen(byval Lx As Byte , Byval Ly As Byte , Byval Bcol As Word , Byval Fcol As Word , Byval Lcd_text As String )
46
Declare Sub S65_print(byval Lx As Byte , Byval Ly As Byte , Byval Fcol As Word , Byval Bcol As Word , Byval Lcd_text As String)
47
Declare Sub S65_cls(byval Bcol As Word)
48
49
50
Call S65_init()
51
52
Call S65_cls(schwarz)
53
54
Call S65_print(18 , 40 , Weiss , Schwarz , " V1.0-20060922 ")
55
56
57
Do
58
59
60
Loop
61
Powerdown
62
End
63
64
65
'################################################################
66
'  LCD - commando , Parameter übergabe zum Display
67
'################################################################
68
16:
69
Cs = 0
70
Shiftout Dat , Clk , A1 , A1
71
Cs = 1
72
Return
73
74
75
'##################################
76
'Start der S65-Ansteuerung
77
'##################################
78
Sub S65_init()
79
Anfang:
80
Res = 1
81
Waitms 10
82
Res = 0                                                     'Reset
83
Cs = 1
84
Clk = 1
85
Dat = 1
86
Rs = 1
87
88
Waitms 1
89
Res = 1                                                     'Reset Ende
90
Waitms 10
91
92
93
Cs = 1                                                      'CS select, Start
94
Waitms 1
95
Rs = 1
96
                                                     'RS high, Command
97
'####################################
98
'      Displayinitialisierung
99
'####################################
100
101
Restore Init1
102
For R1 = 1 To 12
103
Read A1
104
Gosub 16
105
Next
106
107
Waitms 7                                                    'diese Zeit ist sehr wichtig, sollte keinesfalls unterschritten werden
108
109
Restore Init2
110
For R1 = 1 To 23
111
Read A1
112
Gosub 16
113
Next
114
115
End Sub
116
117
118
119
'##################################
120
'#           LCD Löschen          #
121
'##################################
122
123
Sub S65_cls(byval Bcol As Word)
124
Local Aa As Word
125
126
127
Rs = 1
128
A1 = &HEF90
129
Gosub 16
130
A1 = &H0500
131
Gosub 16
132
A1 = &H0600
133
Gosub 16
134
A1 = &H0700
135
Gosub 16
136
Platz = 132 * 176
137
Rs = 0
138
For W1 = 0 To Platz
139
A1 = Bcol
140
Gosub 16
141
Next W1
142
Rs = 1
143
End Sub
144
145
146
147
148
149
'######################################################
150
'#                 Setze Pixel -> Pset                #
151
'######################################################
152
153
Sub S65_pset(lx As Byte , Ly As Byte , Color As Word)
154
Rs = 1
155
156
A1 = &H600 + Lx
157
Gosub 16
158
A1 = &H700 + Ly
159
Gosub 16
160
Rs = 0
161
Cs = 0
162
Shiftout Dat , Clk , Color , 0
163
Cs = 1
164
165
End Sub
166
167
168
'######################################################
169
'#               Line zeichnen                        #
170
'######################################################
171
172
Sub S65_line(byval Lx1 As Byte , Byval Ly1 As Byte , Byval Lx2 As Byte , Byval Ly2 As Byte , Byval Color As Word)
173
Local M As Byte , M1 As Single , M2 As Single
174
Local Yg As Byte , Cv As Single , Bn As Integer
175
Local R As Byte , B As Byte
176
177
M1 = Ly2 - Ly1
178
M2 = Lx2 - Lx1
179
Cv = M1 / M2
180
Bn = Int(cv)
181
M = Low(bn)
182
B = M * Lx1
183
B = -1 * B
184
'If Ly1 = Ly2 Then B = 0
185
'If Lx1 = Lx2 Then B = 0
186
B = B + Ly1
187
188
For R = Lx1 To Lx2
189
Yg = M * R
190
Yg = Yg + B
191
Call S65_pset(r , Yg , Color)
192
Next R
193
194
195
End Sub
196
197
'#####################################################
198
'#       ACSII Zeichenausgabe                        #
199
'#####################################################
200
201
Sub S65_zeichen(byval Lx As Byte , Byval Ly As Byte , Byval Bcol As Word , Byval Fcol As Word , Byval Lcd_text As String * 1)
202
203
Local R As Integer
204
Local A As Byte
205
Local B As Byte
206
Local C As Long
207
Local D As Byte
208
Local E As Byte
209
Local F As Byte
210
Local G As Long
211
Local Xpos As Byte
212
Local Ypos As Byte
213
Local Zeichen As String * 1
214
Print "S65_zeichen(" ; Lx ; "," ; Ly ; "," ; Bcol ; "," ; Fcol ; "," ; Lcd_text ; ")"
215
Xpos = 0
216
Ypos = 0
217
  'For R = 1 To Len(lcd_text)
218
219
     Zeichen = Mid(lcd_text , R , 1)                        'Hole char
220
      G = Asc(lcd_text)
221
      Print "S65_Zeichen:" ; Lcd_text
222
      Print "ASCII:" ; G                                    'Bestimme Pos in Tabelle
223
      G = G - 32
224
      G = G * 6
225
226
      Readeeprom B , G
227
228
229
230
      'Call Lcd_locate(lcd_posx , Lcd_posy)
231
232
      A = 8                                                 '1.linie frei
233
234
      For F = 1 To 6
235
         C = 1
236
237
            D = B                                           'Byte darf nicht verändert werden für 2. durchlauf
238
            For E = 1 To 8
239
            Xpos = Lx + E
240
           Xpos = 132 - Xpos
241
242
            Ypos = Ly + F
243
            'Ypos = 176 - ypos
244
245
              A = D And 1
246
               If A = 1 Then Call S65_pset(xpos , Ypos , Fcol)
247
               If A = 0 Then Call S65_pset(xpos , Ypos , Bcol)
248
               Shift D , Right , 1
249
            Next
250
            Decr C
251
252
         G = G + 1
253
         Readeeprom B , G
254
      Next
255
      Ypos = Ypos + 6
256
257
  'Next
258
259
260
261
262
End Sub
263
264
'####################################################################
265
'  S65_print(x,y,bcol,fcol) -> Zeichenketten auf LCD ausdrucken
266
'####################################################################
267
268
269
Sub S65_print(byval Lx As Byte , Byval Ly As Byte , Byval Bcol As Word , Byval Fcol As Word , Byval Lcd_text As String)
270
Local Xpos As Byte
271
Local Ypos As Byte
272
Local Zaehler As Byte
273
Local Laenge As Byte
274
Local Zeichen As String * 1
275
Laenge = Len(lcd_text)
276
For Zaehler = 1 To Laenge
277
Zeichen = Mid(lcd_text , Zaehler , 1)
278
Call S65_zeichen(lx , Ly , Bcol , Fcol , Zeichen)
279
Ly = Ly + 6
280
Next Zaehler
281
282
283
End Sub
284
285
286
287
'-------------------------------------------------------------------       Ende Subs zum Definieren von Fenstern
288
289
290
Init1:
291
Data &HFDFD% , &HFDFD%,
292
Data &HEF00%,
293
Data &HEE04% , &H1B04%,
294
Data &HFEFE% , &HFEFE%,
295
Data &HEF90% , &H4A04% , &H7F3F% , &HEE04% , &H4306%
296
297
Init2:
298
Data &HEF90% , &H0983% , &H0800% , &H0BAF% , &H0A00% , &H0500% , &H0600% , &H0700%,
299
Data &HEF00%,
300
Data &HEE0C%,
301
Data &HEF90% , &H0080%,
302
Data &HEFB0% , &H4902%,
303
Data &HEF00%,
304
Data &H7F01% , &HE181%,
305
Data &HE202%,
306
Data &HE276%,
307
Data &HE183%,
308
Data &H8001%,
309
Data &HEF90%,
310
Data &H0000%
311
312
$eeprom
313
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00                ' "(space)"
314
Data &H00 , &H06 , &H5F , &H06 , &H00 , &H00                ' "!"
315
Data &H07 , &H03 , &H00 , &H07 , &H03 , &H00 ' """
316
Data &H24 , &H7E , &H24 , &H7E , &H24 , &H00                ' "#"
317
Data &H24 , &H2B , &H6A , &H12 , &H00 , &H00                ' "$"
318
Data &H63 , &H13 , &H08 , &H64 , &H63 , &H00                ' "%"
319
Data &H36 , &H49 , &H56 , &H20 , &H50 , &H00                ' "&"
320
Data &H00 , &H07 , &H03 , &H00 , &H00 , &H00                ' "'"
321
'40
322
Data &H00 , &H3E , &H41 , &H00 , &H00 , &H00                ' "("
323
Data &H00 , &H41 , &H3E , &H00 , &H00 , &H00                ' ")"
324
Data &H08 , &H3E , &H1C , &H3E , &H08 , &H00                ' "*"
325
Data &H08 , &H08 , &H3E , &H08 , &H08 , &H00                ' "+"
326
Data &H00 , &HE0 , &H60 , &H00 , &H00 , &H00                ' ","
327
Data &H08 , &H08 , &H08 , &H08 , &H08 , &H00                ' "-"
328
Data &H00 , &H60 , &H60 , &H00 , &H00 , &H00                ' "."
329
Data &H20 , &H10 , &H08 , &H04 , &H02 , &H00                ' "/"
330
Data &H3E , &H51 , &H49 , &H45 , &H3E , &H00                ' "0"
331
Data &H00 , &H42 , &H7F , &H40 , &H00 , &H00                ' "1"
332
'50
333
Data &H62 , &H51 , &H49 , &H49 , &H46 , &H00                ' "2"
334
Data &H22 , &H49 , &H49 , &H49 , &H36 , &H00                ' "3"
335
Data &H18 , &H14 , &H12 , &H7F , &H10 , &H00                ' "4"
336
Data &H2F , &H49 , &H49 , &H49 , &H31 , &H00                ' "5"
337
Data &H3C , &H4A , &H49 , &H49 , &H30 , &H00                ' "6"
338
Data &H01 , &H71 , &H09 , &H05 , &H03 , &H00                ' "7"
339
Data &H36 , &H49 , &H49 , &H49 , &H36 , &H00                ' "8"
340
Data &H06 , &H49 , &H49 , &H29 , &H1E , &H00                ' "9"
341
Data &H00 , &H6C , &H6C , &H00 , &H00 , &H00                ' ":"
342
Data &H00 , &HEC , &H6C , &H00 , &H00 , &H00                ' ";"
343
'60
344
Data &H08 , &H14 , &H22 , &H41 , &H00 , &H00                ' "<"
345
Data &H24 , &H24 , &H24 , &H24 , &H24 , &H00                ' "="
346
Data &H00 , &H41 , &H22 , &H14 , &H08 , &H00                ' ">"
347
Data &H02 , &H01 , &H59 , &H09 , &H06 , &H00                ' "?"
348
Data &H3E , &H41 , &H5D , &H55 , &H1E , &H00                ' "@"
349
Data &H7E , &H09 , &H09 , &H09 , &H7E , &H00                ' "A"
350
Data &H7F , &H49 , &H49 , &H49 , &H36 , &H00                ' "B"
351
Data &H3E , &H41 , &H41 , &H41 , &H22 , &H00                ' "C"
352
Data &H7F , &H41 , &H41 , &H41 , &H3E , &H00                ' "D"
353
Data &H7F , &H49 , &H49 , &H49 , &H41 , &H00                ' "E"
354
'70
355
Data &H7F , &H09 , &H09 , &H09 , &H01 , &H00                ' "F"
356
Data &H3E , &H41 , &H49 , &H49 , &H7A , &H00                ' "G"
357
Data &H7F , &H08 , &H08 , &H08 , &H7F , &H00                ' "H"
358
Data &H00 , &H41 , &H7F , &H41 , &H00 , &H00                ' "I"
359
Data &H30 , &H40 , &H40 , &H40 , &H3F , &H00                ' "J"
360
Data &H7F , &H08 , &H14 , &H22 , &H41 , &H00                ' "K"
361
Data &H7F , &H40 , &H40 , &H40 , &H40 , &H00                ' "L"
362
Data &H7F , &H02 , &H04 , &H02 , &H7F , &H00                ' "M"
363
Data &H7F , &H02 , &H04 , &H08 , &H7F , &H00                ' "N"
364
Data &H3E , &H41 , &H41 , &H41 , &H3E , &H00                ' "O"
365
Data &H7F , &H09 , &H09 , &H09 , &H06 , &H00                ' "P"
366
'80
367
Data &H3E , &H41 , &H51 , &H21 , &H5E , &H00                ' "Q"
368
Data &H7F , &H09 , &H09 , &H19 , &H66 , &H00                ' "R"
369
Data &H26 , &H49 , &H49 , &H49 , &H32 , &H00                ' "S"
370
Data &H01 , &H01 , &H7F , &H01 , &H01 , &H00                ' "T"
371
Data &H3F , &H40 , &H40 , &H40 , &H3F , &H00                ' "U"
372
Data &H1F , &H20 , &H40 , &H20 , &H1F , &H00                ' "V"
373
Data &H3F , &H40 , &H3C , &H40 , &H3F , &H00                ' "W"
374
Data &H63 , &H14 , &H08 , &H14 , &H63 , &H00                ' "X"
375
Data &H07 , &H08 , &H70 , &H08 , &H07 , &H00                ' "Y"
376
Data &H71 , &H49 , &H45 , &H43 , &H00 , &H00                ' "Z"
377
Data &H00 , &H7F , &H41 , &H41 , &H00 , &H00                ' "["
378
'90
379
Data &H02 , &H04 , &H08 , &H10 , &H20 , &H00                ' "\"
380
Data &H00 , &H41 , &H41 , &H7F , &H00 , &H00                ' "]"
381
Data &H04 , &H02 , &H01 , &H02 , &H04 , &H00                ' "^"
382
Data &H80 , &H80 , &H80 , &H80 , &H80 , &H00                ' "_"                      ' "`"
383
Data &H0C , &H12 , &H12 , &H0C , &H00 , &H00                ' neu "°" statt "`"
384
'Data &H00 , &H03 , &H07 , &H00 , &H00  , &H00
385
Data &H20 , &H54 , &H54 , &H54 , &H78 , &H00                ' "a"
386
Data &H7F , &H44 , &H44 , &H44 , &H38 , &H00                ' "b"
387
Data &H38 , &H44 , &H44 , &H44 , &H28 , &H00                ' "c"
388
Data &H38 , &H44 , &H44 , &H44 , &H7F , &H00                ' "d"
389
Data &H38 , &H54 , &H54 , &H54 , &H18 , &H00                ' "e"
390
Data &H08 , &H7E , &H09 , &H09 , &H00 , &H00                ' "f"
391
'100
392
Data &H18 , &HA4 , &HA4 , &HA4 , &H7C , &H00                ' "g"
393
Data &H7F , &H04 , &H04 , &H78 , &H00 , &H00                ' "h"
394
Data &H00 , &H00 , &H7D , &H00 , &H00 , &H00                ' "i"
395
Data &H40 , &H80 , &H84 , &H7D , &H00 , &H00                ' "j"
396
Data &H7F , &H10 , &H28 , &H44 , &H00 , &H00                ' "k"
397
Data &H00 , &H00 , &H7F , &H40 , &H00 , &H00                ' "l"
398
Data &H7C , &H04 , &H18 , &H04 , &H78 , &H00                ' "m"
399
Data &H7C , &H04 , &H04 , &H78 , &H00 , &H00                ' "n"
400
Data &H38 , &H44 , &H44 , &H44 , &H38 , &H00                ' "o"
401
Data &HFC , &H44 , &H44 , &H44 , &H38 , &H00                ' "p"
402
Data &H38 , &H44 , &H44 , &H44 , &HFC , &H00                ' "q"
403
'110
404
Data &H44 , &H78 , &H44 , &H04 , &H08 , &H00                ' "r"
405
Data &H08 , &H54 , &H54 , &H54 , &H20 , &H00                ' "s"
406
Data &H04 , &H3E , &H44 , &H24 , &H00 , &H00                ' "t"
407
Data &H3C , &H40 , &H20 , &H7C , &H00 , &H00                ' "u"
408
Data &H1C , &H20 , &H40 , &H20 , &H1C , &H00                ' "v"
409
Data &H3C , &H60 , &H30 , &H60 , &H3C , &H00                ' "w"
410
Data &H6C , &H10 , &H10 , &H6C , &H00 , &H00                ' "x"
411
Data &H9C , &HA0 , &H60 , &H3C , &H00 , &H00                ' "y"
412
Data &H64 , &H54 , &H54 , &H4C , &H00 , &H00                ' "z"
413
Data &H08 , &H3E , &H41 , &H41 , &H00 , &H00                ' "{"
414
'120
415
Data &H00 , &H00 , &H7F , &H00 , &H00 , &H00                ' "|"
416
Data &H00 , &H41 , &H41 , &H3E , &H08 , &H00                ' "}"
417
Data &H02 , &H01 , &H02 , &H01 , &H00 , &H00                ' "~"
418
Data &H3F , &H21 , &H21 , &H21 , &H21 , &H00                ' "["
419
Data &H21 , &H21 , &H21 , &H21 , &H21 , &H00
420
Data &H21 , &H21 , &H21 , &H21 . &H3F , &H00                ' "]"
421
Data &H3F , &H3F , &H3F , &H3F , &H3F , &H00
422
Data &H3F , &H00 , &H00 , &H00 , &H00 , &H00
423
$data

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Hättest du im Forum nachgeschaut welches auch auf der HP ( 
http://www.comwebnet.de ) gibt, hättest du gesehen -> das die Zeichen

ins EEPROM gehören und in BASCOM explizit ins M8 geladen werden müssen, 
je nach Einstellung, da nach jeder Flashung das EEPROM mit gelöscht 
wird.

Aber wieso fragt man nicht an der Quelle?

Der Author

PS: Code schön in ZIP einpacken und als Dateianhang hochladen,
    sonst gib es böse Worte.

von Michael B. (miba)


Lesenswert?

Hallo,

ich versuche gerade ein LHP88 an einem MSP430 mit Software SPI zum 
Laufen zu bringen. Leider tut sich auf dem Display rein gar nichts.
Verwende den Beispielcode von aethr im IAR, 3.0 V, keine Pegelwandler.

Habe in einem Beitrag gelesen, dass vor dem Löschen des Displays Muster 
bzw. zufällige Daten angezeigt werden. Ab welchem Punkt ist frühestens 
zu erkennen, dass das Display und die Ansteuerung funktioniert? Nach dem 
Schalten des Reset-PIN, nach dem Einschalten des Oszillators?

Michael

von Daniel (Gast)


Lesenswert?

Grüß euch

@avr nix und all:

Da du dich hier ja gut aus kennst, kannst du mir vielleicht sagen, wie 
ich die Schriftgröße ändere?

Jetzt ist sie ja auf 6x8 ...?

Kann man die nicht einfach verdoppeln auf 12x16? Würde das gehen?

MFG Peter

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Die Schriftgröße ist fix. Entweder jeden Pixel verdoppeln oder ein neuen 
Font erstellen und das Programm anpassen. Hatte das mal vor aber da ich 
im Moment keine zeit für die Erweiterung habe, wäre das doch mal ein 
schönes Projekt und kannst das dann hier oder auf meiner HP 
vorveröffentlichen.

von Thorsten S. (whitenoise)


Lesenswert?

Hallo,

Welches Display sollte man sich jetzt am besten anschaffen. Bei 
Christian ist das LS020xxx am weitesten ausgeführt, zumindest auf den 
ersten Blick.

Zu dem Epson schwirrte hier meine ich sogar mal ein Datenblatt rum...

Gruß,
Dennis

von Juras Pr. (Gast)


Angehängte Dateien:

Lesenswert?

Hi!
There are some results of researching of hardware scrolling. LCD - 
LS020B8UD06.

Registers:
R0Fh - start position
R10h - end position
R11h - offset value (up to value of R10h)

von Juras Pr. (Gast)


Angehängte Dateien:

Lesenswert?

Und video :)

von GastTX (Gast)


Lesenswert?

Sourcecode ?  Wieder eine Funktion mehr , gut!

von Gunni (Gast)


Lesenswert?

Kann es sein, dass das Video defekt ist, oder fehlt mir irgendein codec?

von Gunni (Gast)


Lesenswert?

Hat sich gerade erledigt.
Mit VLC kann ich es mir anschauen.

von Juras Pr. (Gast)


Lesenswert?

Ich benutze H246-codec fur Video.

Some discrepancies found:
The Register R10h isn't end position of scrolling part, it is width of 
part.
The end position of part may be calculated as R0Fh+R10h.
R11h shouldn't be equal or greater of R10h.
Sourcecode will later, after preparing.

At this moment some new effects are found.
I suggest to join search process.

von Juras P. (juras-projects)


Angehängte Dateien:

Lesenswert?

Some info about partial screen write in LS020.

von Alex F. (alexf)


Lesenswert?

Hi Juras,

there is already some information available about the advance address 
modes of LS020 ->

http://www.superkranz.de/christian/S65_Display/DisplayRamAccess.html

How do you write to a specific register address? The hardware scrolling 
looks very good.

Alex

von Juras P. (juras-projects)


Angehängte Dateien:

Lesenswert?

Hi Alex!
I mean, the first byte of the command "lcd_wrcmd16()" is a register 
address, second byte is a data byte.
The registers from this page are very similar to registers of 
LQ022B8UD04. These registers really does work with LS020. Probably, the 
register EFh is the memory bank switcher. The same results we can get 
with different registers combinations in different "banks". For example, 
we can access the HOST INTERFACE SETTING REGISTER by two ways:

way 1:
lcd_wrcmd16($EF80);
lcd_wrcmd16($10XX);

way 2:
lcd_wrcmd16($EF90);
lcd_wrcmd16($E8XX);

I refer to datasheet of LQ022 and i try to describe the init block 2 of 
LS020 LCD:
1
ls020_init_block_2:
2
.db 0xEF, 0x90  ;Bank Switch
3
.db 0x09, 0x83  ;Set X2 Corner, 131 - checked
4
.db 0x08, 0x00  ;Set X1 Corner, 0 - checked
5
.db 0x0B, 0xAF  ;Set Y2 Corner, 175 - checked
6
.db 0x0A, 0x00  ;Set Y1 Corner, 0 - checked
7
.db 0x05, 0x00  ;Set Orientation - checked
8
.db 0x06, 0x00  ;Set "cursor" position Y - checked
9
.db 0x07, 0x00  ;Set "cursor" position X - checked
10
11
.db 0xEF, 0x00  ;Bank Switch
12
.db 0xEE, 0x0C  ;?
13
14
.db 0xEF, 0x90  ;Bank Switch
15
.db 0x00, 0x80  ;Display OFF (WHITE) - checked
16
17
.db 0xEF, 0xB0  ;Bank Switch
18
.db 0x49, 0x02  ;Set Color Mode (positive) - checked
19
20
.db 0xEF, 0x00  ;Bank Switch
21
.db 0x7F, 0x01  ;?
22
.db 0xE1, 0x81  ;?
23
.db 0xE2, 0x02  ;?
24
.db 0xE2, 0x76  ;?
25
.db 0xE1, 0x83  ;?
26
.db 0x80, 0x01  ; Display ON ?
27
28
.db 0xEF, 0x90  ;Bank Switch
29
.db 0x00, 0x00  ;Display ON - checked

In addition, you can see the video with description of some checked 
commands and hardware functions. Sorry, but the video isn't very 
quality.

P.S. I use two displays: LS020 and LQ020. I hope these displays are 
fully compatible.

von Peter (Gast)


Lesenswert?

Hallo Ich habe ein LPH88 mit einem MSP430 am laufen, sehe aber einen 
Fehler:
- das Display zeigt nicht die 65k Farben, nur einen Teil davon.

Hat jemand so ein Problem schon mal gesehen?

mfg

Peter

von Juras P. (juras-projects)


Angehängte Dateien:

Lesenswert?

The palette of LS020 in 8-bit host mode.

von Gunni H. (gunni)


Lesenswert?

@ Juras Pr.:
Can you explain how you configure the display in 8bit color mode?

von Gunni H. (gunni)


Lesenswert?

@ Juras Pr.
Now, i can display pictures in 8 Bit mode.
But not whith the right Color Palette.
Can you give me your Palette in a format, that i can import it to Gimp 
or other?

von Juras P. (juras-projects)


Angehängte Dateien:

Lesenswert?

@ Guntmar H.:
The palettes in two formats (*.act, *.pal) are in archive.
To configure the display in 8-bit mode i use the following commands 
sequence:
lcd_wrcmd16($EF90);
lcd_wrcmd16($E800);
I think, this 8-bit mode is useful for displaying a simple menu drawings 
and text.
P.S. Sorry for the some mismatch in the top of previous picture (the new 
picture is in archive).

von Henrique V. (Firma: CMOS Drake) (rickonvb)


Angehängte Dateien:

Lesenswert?

Hallo Freunde!

I am sending you now a little program that I made just to make things 
easier about images plotting.

You just have to create a 8 bit  12 bit  16 bit image using the right 
dimensions and it creates a ASCII image file for you.

It works pretty good here! Hope it might help you guys!

If you have any comments.. doubts... or you are facing any error.. 
please tell me..

Grüsse!

Henrique

von Christian B. (drunkenmog)


Lesenswert?

Hallo zusammen,
ich habe mich jetzt im groben schon ziemlich durch dieses Thema 
durchgearbeitet aber alles habe ich dann doch nicht geschaft zu lesen.
Ich habe es auch geschaft ein PO3.. (L2F50xxx ) in betrieb zu nehmen.
Ich kann bis jetzt allerdings nur Sachen im Hochformat ausgeben.
Ich wollte nun fragen ob das schon jemand im Querformat mit Bildern 
geschafft hat denn da hapert es a bissi am verständins.(in der Bucht 
giebt es auch nur PO3.. Displays zu kaufen keine anderen mehr...)
Und dann wollte ich noch wissen welche Hexzahl welche Farbe ergibt ich 
habe schon viel rumgespielt aber ich komme da hinter kein system ein 
begriff zum googeln oder ne tabelle wären da hilfreich denn die richtig 
klaren Farben wie blau oder rot bekomm ich einfach nicht hin.

Danke für die mühe wenn ich was übersehen habe sorry

von Christian B. (drunkenmog)


Lesenswert?

Dann wollte ich noch was nachtragen ´bei mir wird der ober schwarze 
streifen sehr heiß habe ich da was geschrottet oder ist das normal?

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

schrott

von Christian B. (drunkenmog)


Lesenswert?

Wie ich schon vermuttet habe ist es schrott
Aber lohnt sich der nachkauf eines PO3 weil ich bekoome das selber nicth 
hin das display so einzustellen das ich es im Querformat betreibe und 
ich wollte aber diese so benützen

von Grummel (Gast)


Lesenswert?

Hallo
Eventuell seh ichs ja nicht, aber gibts irgendwo den code fürs 
scrolling?
Gruß Grummel

von Euroscan T. (euroscan)


Angehängte Dateien:

Lesenswert?

one picture from crash display in car.( sx-65 with ARM 7)
--

von Claude S. (claudeschwarz)


Lesenswert?

Mal eine generelle Frage:
Hätte jemand Bedarf an einem Linux Treiber (fbdev device) für 
AT91,AVR32,oder jeden anderen Controller mit SPI Interface für z.b. die 
LS020 Displays? Habe die letzten Tage für ein 240x320 SPI TFT einen 
Treiber geschrieben , aber da das Datenblatt jenes Displays unter einer 
art NDA steht kann ich den Treiber nicht veröffentlichen. Das 
umschreiben des Treibers auf z.b. LS020 wäre eine Fingerübung und 
konform mit der GPL :-). Also wenn genug ,wirklicher!, Bedarf an sowas 
besteht würde ich das in Angriff nehmen.

von Bernd (Gast)


Lesenswert?

Hallo zusammen,,
würde gerne 10 Stück von dem Display LS02...
(Neu mit Schutzfolie)kaufen!
Hat jemand eine gute Bezugsquelle ?

Danke.
MfG
Bernd

von Ben (lightning)


Lesenswert?

Da würde ich glatt auch noch welche nehmen.
Hoffentlich findet sich jemand :)

von ebay (Gast)


Lesenswert?

http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&rd=1&item=350009303191&ssPageName=STRK:MEWA:IT&ih=022

"NEW LCD FOR Siemens S65 M65 CX65 SK65 (LS020B8UD06)" für $9,99 (6,30 
EUR).


Vielleicht lohnt sich ja eine Sammelbestellung?
Der Hacken an der Sache sind die zusätzlichen $9,99 Versand pro Display!

Eventuell sind bei einer größeren Abnahme die Versandkosten 
verhandelbar.

von eleCtr00nix (Gast)


Lesenswert?

bei ebay deutschalnd gibts auch massig welche für 4,95+4,9, allerdings 
ohne versandrabatt...

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Aber nicht LSO20...   sondern PO4 -> LF... Display bzw. sehr Teuer 
geworden.

von Ben (lightning)


Lesenswert?

Also als ich den Menschen von der eBay Auktion da weiter oben gefragt 
habe ob man da für die Displays nur einmal Versand zahlen muss und ob es 
Rabatt gebe, wollte er wissen wie viele ich denn da haben will.

Was ist denn da so ne realistische Zahl die ich ihm mailen kann ?
Mal sehn ob man dem was rausleiern kann ;)

Gruß
Lightning

von S65 (Gast)


Lesenswert?

@Ben
>Was ist denn da so ne realistische Zahl die ich ihm mailen kann ?

Bei einem Stückpreis (LSO20...) von 10$ würde ich 20 Stück nehmen.

von Bernd (Gast)


Lesenswert?

@ Ben.. (lightning)
Hallo Ben,
bei US$ 10.- würde ich 30 Stück nehmen.
Das Problem ist nur, dass dann in Deutschland noch 19% Mwst + ca.3% Zoll 
dazu kommen!
Vieleicht sollten wir mal miteinander telefonieren.
Hier mal meine E-Mail zur Kontaktaufnahme  Haus444(at)gmx.de
[(at) = absichtlich anders geschrieben]

Gruß Bernd

von Jens D. (jens) Benutzerseite


Lesenswert?

Hallo,

vielleicht kommt man irgendwann auch mal an ein Datenblatt ran.
Oder zumindest an eine Beschreibung über die Funktionen des Controllers.

Jens

von Markus H. (rf-bug)


Lesenswert?

@ Ben.. (lightning)
Ist mit der Bestellung noch was in der Mache? Oder schon Ende?

@ Jens D. (jens)
Zum LS020... ist mir nichts bekannt. Noch keins gesehen

@all
Frage: habe im Moment das Problem, das mein Display schwarz bleibt. Es 
sieht so aus als ob es Initialisiert (man kann das Löschen sehen[meine 
ich]). Und wenn ich im Code vom glcd_init die folgende Zeile 
auskommentiere
1
rcall   lcd_clrscr
dann sehe ich ein wildes, sich bei einem "Neustart" neu generierendes 
Pixelwirrwar.
Ich denke daher, das die Initialisierung OK ist und somit die GrafikLib 
irgendwie funzt. Allerdings egal wie ich die Hintergrundfarbe einstelle, 
das Display bleibt schwarz. Auch die Demo aus der Christian K. Datei ist 
nicht zu sehen.
Zur Info: Die Hardware ist OK. Mit der Simple3 Demo "Hello World" läuft 
alles, halt nur die Grafiklib bekomme ich nicht zum Rennen.

Jemand eine Idee woran das liegen könnte?

Danke!

PS: Schon klar das es am User liegt, nur wo sollte man suchen ? :)

von Ben (lightning)


Lesenswert?

@Markus H.
Nun ja ich warte bis heute auf eine Antwort von dem. Mal sehn ob das 
noch was wird.

Gruß Lightning

von Achim (Gast)


Lesenswert?

Hallo,
hat mitlerweile jemand den Code auf einen M32c portiert und kann ihn 
bereit stellen? Danke.

von whitenoise (Gast)


Lesenswert?

...

1)warum sind hier eigentlich immer alle auf das lso020... was ist denn 
mit dem p03.. was es momentan bei ebay gibt, ich meine kranz hat doch 
software für alle drei varianten, oder?

2)welchen tools nutzt ihr für die fonterstellung, und welche software 
mit welchem umfang für die darstellung der zeichen und grafiken?

3)gibt es eine einheitliche softwareschnittstelle für alle 3 
displayausführungen in den sourcen von kranz? (zb.: init_display(); 
set_pixel(x,y,col))?

w.

von Christian K. (Gast)


Lesenswert?

Hallo Markus H.

du hast ja deine Display-Leitungen auf zwei Ports verteilt. Original 
benutzt  die lib. aber nur einen Port. (siehe glcd.inc)
1
  #define   LCD_PORT                _SFR_IO_ADDR(PORTB)
2
3
  #define   LCD_PIN                 _SFR_IO_ADDR(PINB)
4
5
  #define   LCD_DDR                 _SFR_IO_ADDR(DDRB)

Du müsstes also einen zweiten Port definieren und dann die glcd_init.asm 
ändern. Überall wo LCD_PORT auftaucht (und LCD_PIN/LCD_DDR) prüfen, 
welcher Port denn nun genommen werden soll. z.B. hier
1
       cbi     LCD_PORT,LCD_CS        ; select Display
2
3
       sbi     LCD_PORT,LCD_RS        ; set RS line

Aber wahrscheinlich ist das nicht das Problem, denn die Initialisierung 
(der assembler Teil) scheint bei dir ja zu funktionieren. (siehe random 
pixel muster und lcd_clrscr).

Ich kann mir vorstellen, dass die C-Zugriffe auf die Assembler Routinen 
nicht funktionieren, oder dass du in deinem Code die Port's des Displays 
versehentlich verändert hast. Hast du schon mal ein minmal Program (nur 
main und clearscreen) versucht? Gibt es irgendwelche Linker Warnungen?

von max (Gast)


Lesenswert?

Das wäre ideal um jedem OpenWrt Router ein ordentliches LCD zu 
verpassen.. Wenn es eine Fingerübung ist: setzt dich mal dran, ich wäre 
sehr interessiert, baue die Tage mein Display auch mal auf und kann 
deinen Code dann testen falls du keine Möglichkeit hast.

Gruß

Max

von T. H. (mctx)


Lesenswert?

Hallo,

versuche verzweifelt ein P03-Display (neu gekauft auf Ebay, Seriennummer 
P03-422BS ) mit der entsprechenden Software auf der Homepage von 
Christian Kranz in Betrieb zu nehmen (auf PIC rüberportiert, beim LPH 
ging das auf Anhieb). Was mir aufgefallen ist ist folgendes:

Wenn ich die "RS"-Leitung ziehe (oder den Pin auf Tristate schalte) sehe 
ich einen uninitialisierten Displayinhalt (Ameisenkino). Lasse ich das 
RS-Signal am Portpin bleibt es grau (so als wenn ich das Display gar 
nicht beschaltet hätte sondern nur das Backlight an ist).

Kann es vielleicht sein, dass es eine neue Version des Displays mit 
9-bit SPI gibt, welche das RS-Signal gar nicht mehr unterstützt oder 
sonst irgendeine Änderung am Displaycontroller vorgenommen wurde?


Ich habe verucht, die Initialisiuerung anhand des L2F50-Datenblatts das 
hier im Formum gepostet wurde nachzuvollziehen. Doch dieses ist 
Preliminary und weicht auch von der Initialiserungssequenz der Software 
von Chistian ab (z.b. sind der OSSEL-Befehl und der SPI Mode gar nicht 
beschrieben.

Danke für Eure Unterstützung!

Btw: Zwischenzeitlich gibt es ja fast ausschließlich P03 Versionen zu 
kaufen. Kennt Einer von Euch eine Quelle für LPH-Typen?

von rf-bug (Gast)


Lesenswert?

@Thomas H. (mctx)

Schau dir mal meinen Post darüber an. Ich sehe ein ähnliches Problem. 
Dein grau könnte schon ein gelöschter Bildschirm sein. Ich sehe halte 
auch so ein Verhalten. Schau dir mal das Display an, wenn du die 
Spannung anschaltest. Ich kann meiner Meinung nach ein Löschen sehen. 
Nur Pixel darstellen geht nicht. Leider noch keine Zeit gehabt. Kommt 
aber hoffentlich noch.

Und das es neuere Versionen gibt wäre mir neu. Habe ich bisher 
jedenfalls nichts davon gehört.

Gruß

von Achim (Gast)


Lesenswert?

So,
ich bin grad fleißig dabei das Display mittels C und Renesas M32c 
anzusteuern, habe aber noch Probleme. Das einfachste, d.h. die 
Hintergrundbeleuchtung, funktioniert, aber das Display (LS020) ist 
komplett weiß, von Anfang an, und ich bekomm nix darauf angezeigt. Hat 
da jemand eine Idee, woran es liegen könnte?
Danke

von Gast (Gast) (Gast)


Lesenswert?

keine Spannungsversorgung...
falsche Spannungsversorgung...
Interface falsch angeschlossen...
Falsche Pegel auf dem Interface...
Programmierfehler...

von Achim (Gast)


Lesenswert?

Sodale,
nun klappt es auch bei mir. Ich hatte zwei Fehler drin:

1.) Ich hatte LSB zuerst gesendet.
2.) Die Übertragungsrate war zu gering.

von Daniel R. (sliderbor)


Lesenswert?

Hat es mittlerweile einer geschafft die P03 Display ans Rennen zu 
bekommen? Eagl an welchem Controller? Und wenn ja, wo liegen die 
Unterschiede zu den anderen Typen?

von Christian (Gast)


Lesenswert?

Hallo, ich bin neu in der µC-Welt. Das Projekt interessiert mich sehr 
und ich würde es gerne nachbauen. Leider fehlen mir wohl ein paar 
grundlegende Sachen.
Ich hab das Tutorial für Assembler AVR schon durchgearbeitet und denk 
ich hab zumindesten diese Sachen verinnerlicht.

Für mein "Projekt" bräuchte ich ein Display zur grafischen Darstellung 
und da die 4x20 Displays schon sehr begrenzt sind, brauch ich etwas 
anderes. Mit der Forumssuche bin ich auf diesen Thread gekommen. Die 
LS020 displays sind ja auch noch relativ erschwinglich.

So zu meinen Fragen.:
Das Display brauch also 10.4Volt. Wie stell ich bei den PWM die 47% und 
63.5khz ein?
Kann ich nciht direkt mit 10Volt an den Controller rangehen? Z.B. mit 
einem µA 7810 auf 10Volt runtergehen, oder mit einem Spannungsteiler 
oder einfach mit einem 100K widerstand bei 12V?

Warum sind kondensatoren zw. 2.9V bzw. 5V leitung und GND? Passen da 
100n?

Danke im Voraus

von Klaus R. (klaus2)


Lesenswert?

"Ich hab das Tutorial für Assembler AVR schon durchgearbeitet und denk
ich hab zumindesten diese Sachen verinnerlicht."

-> Endlich mal einer, der sich richtig Arbeit macht und bei dem man 
sofotr merkt: Der hat Ahnung!

"Kann ich nciht direkt mit 10Volt an den Controller rangehen? Z.B. mit
einem µA 7810 auf 10Volt runtergehen, oder mit einem Spannungsteiler
oder einfach mit einem 100K widerstand bei 12V?"

-> Kein Problem, das geht!

Wie machst du die Eingabe? Über Touchscreen, oder?

Klaus.

von Bernd (Gast)


Lesenswert?

@ Cristian

Aber bitte keine 10V auf den Controller geben !!!
Die 10 V (10,2V - 10,4V) sind nur für die LED-Beleuchtung.
Mit einem 100k Widerstand kannst Du da nichts anfangen, ist viel zu groß 
!
Wenn Du 12V zur Verfügung hast, dann kannst Du einen Widerstand von
ca. 100-150 Ohm in Serie schalten, dann stellt sich der gewünschte Strom 
von ca. 15-20mA ein und es liegen ca. 10,2V - 10,4V an den LED's an. Je 
nach Zustand der LED's.

Gruß
Bernd

von SuperUser (Gast)


Lesenswert?

Hallo Christian,

lass dich nicht verarschen (mit den 10V). Wenn du Anfänger bist, 
empfehle ich dir die Schaltung so wie sie ist nachzubauen. Dann ist die 
Wahrscheinlichkeit höher das es klappt. Statt der 15V kannst du auch die 
12V für das Display nehmen, allerdings sollte dann der Widerstand nicht 
180 sondern vielleicht 100Ohm sein.

Der µC braucht die Spannung die im Datasheet steht und zwar aus einer 
relativ guten Quelle. Also nichts mit Vorwiderstand o.ä.

100nF für die Kondensatoren am Spannungsregler sind vmtl. o.k.

von SuperUser (Gast)


Lesenswert?

"Hat es mittlerweile einer geschafft die P03 Display ans Rennen zu
bekommen? Eagl an welchem Controller? Und wenn ja, wo liegen die 
Unterschiede zu den anderen Typen?"

Das P03 ist identisch mit dem L2F50, wenn du dir das Bild

http://www.superkranz.de/christian/S65_Display/pics/epson_display_large.jpg

genau ansiehst, findest du da auch den P03-xxxx Aufdruck

von Ben (lightning)


Lesenswert?

@ Klaus R.
Wow übertreibs nich mit dem Sarkasmus, sonst legt der noch
wirklich die 10V an den µC an :D

@ Christian
Hast du das Display bereits oder ist das Ganze erst in Planung ?
Wenn du das Display schon hast und es ein LS020 ist, könntest
mir dann nicht eventuell erzählen woher du es hast oder auch
eins bestellen, kaufen etc. ?

Ach ja noch was, wenn du dir ne 12V Quelle nimmst kannst mit nem
7805 den µC und mit dem 7810 die Display Hintergrundbeleuchtung
betreiben. (Tipp: Nimm ein altes Computernetzteil)
Zum testen dürfte es allemal reichen.

Gruß Lightning

von Christian (Gast)


Lesenswert?

Klaus du bist mein Held!
kannst bei deiner mutti rum trollen

mit 10volt ist natürlich nur für die led-beleuchtung. der 
mikrocontroller wird mit 5v durch einen 7805 gespeist.
Und bei 12V sind 1,6volt spannungsabfall durch 15mA ~ 100ohm. (Das kilo 
ist nur irgendwie reingerutscht)

von Manuel S. (thymythos) Benutzerseite


Lesenswert?

Falls jemand lieber ein Display aus dem S55 benutzen will, ich hab meins 
heute mit nem Logicanalyzer begutachtet: 
Beitrag "Siemens S55 Display"

von Daniel R. (sliderbor)


Lesenswert?

SuperUser wrote:
> "Hat es mittlerweile einer geschafft die P03 Display ans Rennen zu
> bekommen? Eagl an welchem Controller? Und wenn ja, wo liegen die
> Unterschiede zu den anderen Typen?"
>
> Das P03 ist identisch mit dem L2F50, wenn du dir das Bild
>
> http://www.superkranz.de/christian/S65_Display/pics/epson_display_large.jpg
>
> genau ansiehst, findest du da auch den P03-xxxx Aufdruck

Ahh, da hat mir das Farbprofil meiner Grafikkarte die Sicht verwehrt 
(die Stelle mit dem P03 war einfach schwarz). Jetzt hab ichs auch 
gesehen. =)

von Achim (Gast)


Lesenswert?

Hallo,
kann mir jemand sagen, wie ich zwischen 8- und 16-Bit Farbe hin- und her 
schalte und der kurzen Seite nach scrolle?

Gefunde habe ich nur folgendes:

8-Bit-Mode
lcd_wrcmd16($EF90);
lcd_wrcmd16($E800);


Scrollen lange Seite (klappt wunderbar)
lcd_wrcmd16($EF90);
R0Fh - start position
R10h - scrollwidth
R11h - offset value (up to value of R10h)

Danke.

von Florian (Gast)


Lesenswert?

Hallo.
Ich habe probiert das display auch anzusteuern, habe aber die 
displayanschlüsse, durch zu oft Löten, geschrottet...
Gibt es einen passenden Adapter, sodass man nicht an der Folie rumlöten 
muss??

Gruß Flo

von LcdMan (Gast)


Lesenswert?

Hello.
Juras Pr., thanks for vertical scrolling method. Do you have a 
specification for LQ022B8UD04 with descriptions of registers? I can't 
found it.

von Ein Display (Gast)


Lesenswert?

Ich auch nicht.

von Juras P. (juras-projects)


Lesenswert?

Hello!
LcdMan, i have only the document based on my researches. But for display 
LS(Q)020B8UD05(6). This document may be expanded and detailed in the 
future.
http://juras.yourbb.be/viewtopic.php?f=2&t=5
or
http://juras-projects.at.tut.by/data/ls020_registers.doc

von LcdMan (Gast)


Lesenswert?

Thanks, it may be useful too.

von pawci0 (Gast)


Lesenswert?

Hi!
I have a LS020 display. It works fine until I try to send some data. It 
appears on the display but after that I can't use any commands anymore.
Before sending data everything works fine. As soon as I lower the RS 
signal and send something through SPI the display seems to ignore all 
commands.
Can you tell me what's wrong?
TIA
Best regards

von Markus H. (rf-bug)


Lesenswert?

Hi pawci0,

If U use the right lib from
http://www.superkranz.de/christian/S65_Display/DisplayIndex.html
everything shoud work.
Check your Hardware if all wires are connected.

BR
Markus

PS: I had a little short @the display by reconnecting the display wires.

von pawci0 (Gast)


Lesenswert?

I have some different code, because i'm using dsPIC33 microcontroler. 
I'm simply using built-in SPI peripheral with hardware CS-pin support. I 
was wondering maybe there's a problem. Normally CS goes low everytime a 
command is send into SPI buffer. But before activating CS i make change 
to the RS-pin - is that OK? Because in Kristian's page it was different 
- first the CS goes low and then RS was changed. But I don't think this 
could be the problem. Somebody correct me if I'm wrong...
In hardware is everything ok, all pins connected correctly. Commands are 
also accepted perfectly BEFORE I send any data (tried for example the 
negative mode... it works). After the RS goes low and I send some data, 
then I can't go back to sending commands - it just doesn't respond for 
ANY commands.

von pawci0 (Gast)


Lesenswert?

oh... forgot to say:
when I go with RS low, than wait a while (but don't send any data), and 
then go with RS high, then commands still work!
Only after sending data display ignores commands - I can write then only 
data (colors), and display keeps raising the pointer position.

von pawci0 (Gast)


Lesenswert?

Problem solved :)
Markus you were right. It seems that CS pin wasn't working as it 
should...
SPI peripheral was making some strange stuff with it, so I had to 
implement toggling CS pin in software. Now everything works fine :)
Thanks for help.

von A. G. (tipfix)


Angehängte Dateien:

Lesenswert?

Abend

Ich habe ein S65 Dispay mit LQ02xxx. Das läuft perfekt. Auf dem Bild 
sieht man wofür es herhalten muss.

Gruß

von unseen (Gast)


Lesenswert?

Hello!
I connected a L2F display to my parallel port, everithing is fine, 
except that when screen is written, there are vertical flickering lines.
These lines are random in length and color, and appear beneath the drawn 
pixels towards the bottom of the screen.
Does anybody experienced similar, what causes them?

Other question, can somebody tell me, what controller is used on C65 
displays?Or at least a project, some source code, anything.
The pinouts are (almost) identical to S65.

Thanx!

von unseen (Gast)


Angehängte Dateien:

Lesenswert?

I attached a video, maybe somebody can help me?

von unseen (Gast)


Angehängte Dateien:

Lesenswert?

Here I made another video. (sorry for quality, webcam)
I've slowed down the SPI communication (only for image data sending) by 
making an 1s delay between each line change, and figured out, that the 
lines appear when the CLOCK line is low. When it goes high, the picture 
gets back to normal.

von unseen (Gast)


Lesenswert?

Hello again!

I still need some help please from somebody who owns an L2F50 based 
display.
Please try out the following: draw a picture, or anything to the screen, 
than pull the SCLK line LOW from software, and make an infinite loop 
afterwards. It would be a huge help for me, I would figure out if my 
display is faulty (the whole picture should turn into vertical 
(sometimes moving) lines, or something else is wrong.

Thank you!

von A. G. (tipfix)


Lesenswert?

Hallo

Hier könnt Ihr mal alle Bilder zu meinem Projekt bewundern.
[[http://www.andyandandy.de/gallery/main.php?g2_view=core.ShowItem&g2_itemId=369]]

Gruß Tipfix

von Michael R. (rubi)


Lesenswert?

Hallo Tipfix

Gratuliere, schöne Prototyping arbeit.

Der Led Cube ist auch sehr schön.
Auf die Idee Heiskleber als Difusor zu verwenden muss man auch mall 
kommen.

Jetzt noch die leds in smd und ein "paar" mehr, schon könnte man in 3D 
fernsehen. :)

LG
Michael

von Klaus2 (Gast)


Lesenswert?

...wieso hat der Atmel nen Kühlkörper auf dem Steckbrett??? :)

Klaus.

von unseen (Gast)


Lesenswert?

Really nobody can help???  :(

von A. G. (tipfix)


Lesenswert?

Guten Morgen

Der Atmel ist von meinem Cube. Da er dort mit 16 MHz läuft und viel zu 
tun hat wird er in der mitte etwas warm. Und da dachte ich mir ein 
Kühlkörper kann nicht schaden. Er ist aber wieder dort wo er hin gehört. 
Für das GPS kommt jetzt ein 644'er zum einsatz. Grund mehr SRAM.

Gruß der Tipfix

von M. E. (meins0273)


Lesenswert?

Hallo, hat jemand das Datenblatt vom S65 LS020 Display?

Danke und Gruß
meins0273

von Joachim (Gast)


Lesenswert?

Falls jemand Interesse hat:

wir verkaufen S65 Displays (LS020 neueste Version) inklusive 
smd-springboard-connector.
Ganz neu, originalverpackt 12€ / Stück.

Bei 10 Stück 10€
Bei 100 Stück 8€.

Bei Interesse schreibt hier hinein.

Viele Grüße

Marc

von A. G. (tipfix)


Lesenswert?

Wie wärs mit einem Bild damit man sich den Connector mal ansehen kann?

von Andreas (Gast)


Lesenswert?

> Joachim
> Marc

Ja was denn nun?
Wenn schon gewerblich hier rumspammen, dann bitte mit richtigem 
Firmennamen.

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Ich hätte an ein S65 Display + Connector Interesse Was kostet der 
Versand?

von S65 (Gast)


Lesenswert?

Hallo Joachim,

was willst Du für 50 Displays ohne Connector.

> Wie wärs mit einem Bild damit man sich den Connector mal ansehen kann?

von Joachim ;-) (Gast)


Angehängte Dateien:

Lesenswert?

Marc und Joachim gibts beide ;-)

Versand DHL Standardpreise je nach Gewicht + 1€ Verpackung.

Schlechtes Bild vom Connector ist anbei.

Bitte schreibt mir eine eMail an supply (AT) butterflyavionics (dot) com

Viele Grüße

Marc


@S65: 450€ + Versand

von Bastler (Gast)


Lesenswert?

Hallo Joachim,

verkaufst Du auch die Connector ohne Display, wenn ja, was würden 10 
Stück kosten?

von Ben (lightning)


Lesenswert?

@Joachim

Tach !
würdest du die Displays auch nach Österreich versenden ?
Wenn ja würde ich auch 4 Stück nehmen.

Gruß Lightning

von mctx (Gast)


Lesenswert?

Was würden denn 50 von den Connectoren kosten?

von Joachim (Gast)


Lesenswert?

Hallo zusammen,

herzlichen Dank für Euer Interesse.

Ich möchte jetzt nicht diesen (wirklich guten) Beitrag hier zusammen. 
Also bitte alle Anfragen an die o.g. Adresse.

Vielen Dank

Marc


@Ben: Versand in die EU ist kein Thema (kostet nicht viel mehr)
@mctx und wigbert: connectoren sind leider vergleichsweise teuer:

1-50:  2€ / Stück
ab 50: 1,80 € / Stück

von Gast (Gast)


Lesenswert?

Hallo,

gibt es Erfahrungswerte zur Lebensdauer der LCD Hintergrundbeleuchtung?

Danke

von Mark .. (mork)


Lesenswert?

Wie hoch ist eigentlich die Reaktionszeit von dem Display? Bei dem 
kleineren Nokia 6100 LCD dauert es voll lange, bis die Pixel nach dem 
Übertragen ihre Farbe wechseln, schätzungsweise so um die 200-300ms, 
sodass bewegte Grafiken sehr verschwommen erscheinen. Ist es bei diesem 
LCD besser?

von Benedikt S. (Firma: embedded projects GmbH) (flopper)


Lesenswert?

Hallo,

hier gibt es jetzt nun einzeln für den Bastler das Display (Preis ist 
inkl. Mehrwertsteuer):

www.eproo.net (direkt auf der Startseite)

(und den passenden Connector natürlich)

Gruss Bene

von SuperUser (Gast)


Lesenswert?

>> gibt es Erfahrungswerte zur Lebensdauer der LCD Hintergrundbeleuchtung?

Meine funktionern seit 2006 ohne Probleme. Da es sich um LED's handelt 
kannst du mit einigen zehn-tausend Stunden rechnen wenn du es mit der 
Helligkeit (Strom) nicht übertreibst.


>> Wie hoch ist eigentlich die Reaktionszeit von dem Display?

Ziemlich schnell. Videos sind kein Problem.

von Gast (Gast)


Lesenswert?

Display3000 spricht von
Zitat:
"Da die LEDs im Display eine begrenzte Lebensdauer von ca. 5000 Stunden 
haben (dann ist die Leuchtkraft auf 70% gefallen)..."

MfG

von Anonym (Gast)


Lesenswert?

Das ist mit den 5x10^3h ist konform mit den Spezifikationen im 
Datenblatt.

Dann tritt 0,7*Helligkeit_max ein.

von Gunni H. (gunni)


Lesenswert?

@ Anonym: Aus welchem Datenblatt hast du die werte entnommen?
Soweit mir bekannt ist, existiert für das Display kein original 
Datenblatt.
Kannst du mir vielleicht eine Kopie... :-)

von M. E. (meins0273)


Lesenswert?

Hallo,
habe jetzt auch zwei S65 Displays an einem PIC18F4520 mit dem CC8E 
Compiler in Betrieb. Gibt es ein Tool um Zeichensätze zu generieren.
Ich benötige einen großen (27x49 oder noch größer). Mir würden die 
Zahlen von 0 - 9 und ein : genügen. Also für eine Zeitanzeige.
Hat jemand einen Tipp?
Danke und Gruß

von dave (Gast)


Lesenswert?

Hallo,

ich benütze das L2F50 Display. ich würde es gerne schaffen, die 
adressierung des displays zu drehen (so wie beim ls020), damit ich es im 
querformat betreiben kann. das würde mir einiges erleichtern ;-)

ich habe jetzt den ganzen thread durchgelesen, aber leider nix gefunden. 
hat das vl. schon irgendjemand zusammengebracht ?

lg,

david

von Markus L. (markusl)


Lesenswert?

Wow, danke für die unglaublich vielen Tipps in diesem Thread! Jetzt 
funktioniert meine 3D-Demo auf dem S65 (über PIC32 angesteuert) endlich! 
Hier ist ein Video: www.cg.tuwien.ac.at/~markusl/MVI_3327.AVI

Das Hardware SPI hat anfangs überhaupt nicht funktioniert. Ich hatte 
aber schlichtweg vergessen auf das Ende der Übetragung zu warten bevor 
ich CS auf
high gesetzt habe.

von Ivan M. (ivanm)


Lesenswert?

I've noticed that Christian's S65 document still is still missing power 
down sequence for LS020 controller.

For a regular shutdown a display needs normally a power down sequence to 
discharge the glass voltage in a controlled manner.
If you do not send this sequence, then after the power down, matrix will 
be some time under DC voltage, which will reduce its lifetime.

This is power down command sequence for LS020B8UD06 based S65 LCD:

Code:

//Function LCD_PowerOff()is performing power down sequence.

void LCD_PowerOff()   //LS020... controller in S65 lcd
{
  const BYTE bOff[52] =
  {
    0xEF, 0x00, 0x7E, 0x04, 0xEF, 0xB0, 0x5A, 0x48,
    0xEF, 0x00, 0x7F, 0x01, 0xEF, 0xB0, 0x64, 0xFF,
    0x65, 0x00, 0xEF, 0x00, 0x7F, 0x01, 0xE2, 0x62,
    0xE2, 0x02, 0xEF, 0xB0, 0xBC, 0x02, 0xEF, 0x00,
    0x7F, 0x01, 0xE2, 0x00, 0x80, 0x00, 0xE2, 0x04,
    0xE2, 0x00, 0xE1, 0x00, 0xEF, 0xB0, 0xBC, 0x00,
    0xEF, 0x00, 0x7F, 0x01
  };
  int i;

   if(m_bPowerOff) return;

  m_bData |= LCD_RS;  //Command bytes

  for(i=0; i<52; i++)
  {
    SPI_Send8bits(bOff[i]);
  }

  SPI_Delay(SPI_DELAY_1ms * 50); //delay 50 msec
  m_bPowerOff = true;
  //turn off power
  ...
}
---------------------
Original link is http://cprime.110mb.com/lesson/0201/1-6.php, I took me 
a while to translate it from Russian :-). Tested, it works.
This is last important piece of LS020B8UD06 protocol (well maybe 
contrast setting will be nice, but default contrast works very well for 
this TFT)


Frohe Weihnachten!

Ivan

von Psych (Gast)


Lesenswert?

>3D-Demo auf dem S65

Sieht aus wie ein Video. Ist bestimmt nen Fake ...

von A. G. (tipfix)


Lesenswert?

Psych wrote:
>>3D-Demo auf dem S65
>
> Sieht aus wie ein Video. Ist bestimmt nen Fake ...
Der Gedanke hat sich mir auch augedrängt. Der Teapott kommt mir bekannt 
vor.
edit:
"Utah teapot" heisst der. Gibt es unzählige videos im netz. Ganz sicher 
auch das.

von Markus L. (markusl)


Lesenswert?

Thanks for the power down sequence... finally, after three years all 
seems to be complete ;)

@A. G., Psych: Klar ists der Utah-Teapot, ist einfach das kultigste um 
was auszuprobieren ;) ... Ist aber kein Video, das ist ein Software 
Scanline-Renderer.  Intern arbeitet der nur mit Fixed-Point Zahlen und 
ist deshalb recht schnell. Das größte Problem war der kleine RAM des 
PIC32 (32kb), da hat nicht der ganze Framebuffer platz. Deshalb wird 
immer nur ein drittel des Bildes berechnet und dargestellt. Intern hat 
der Framebuffer auch das 5-6-5 Farbformat des S65, deshalb kann er sehr 
schnell auf das S65 übertragen werden.

Wer genauer wissen will wie man sowas macht, kann sich ja folgendes mal 
anschauen: http://www.cg.tuwien.ac.at/courses/CG/textblaetter.html
Das ist ne Computergraphik Vorlesung...

von A. G. (tipfix)


Lesenswert?

Markus Lipp wrote:

> @A. G., Psych: Klar ists der Utah-Teapot, ist einfach das kultigste um
> was auszuprobieren ;) ... Ist aber kein Video, das ist ein Software
> Scanline-Renderer.

Kann man aber kaum glauben wenn man es sieht. Dann will ich mal nichts 
gesagt haben.

von Markus L. (markusl)


Lesenswert?

So, dazu gibt es im Internet bestimmt noch kein Video:
www.cg.tuwien.ac.at/~markusl/MVI_3328.AVI

Wollte eigentlich "mikrocontrollet.net" schreiben, aber das hätte viel 
zu viele Dreiecke gebraucht ;) (schon dieser Schriftzug hat 420 
Dreiecke, da kommt der Pic32 bereits ins schnaufen)

von Markus L. (markusl)


Lesenswert?

Noch schnell ein Performance-Tipp:

Es ist absolut NICHT nötig, nach jedem Daten-Befehl die CS oder RS 
Leitung zu ändern. Es reicht aus, einmal CS und RS richtig einzustellen, 
dann kann man alle Pixel nacheinander schicken (Also die Abfolge 
CS-RS-DATA-DATA-DATA .... DATA-DATA-CS). Das ist viiiiel schneller als 
die Abfolge CS-RS-DATA-CS für jedes Pixel (wie sie zb in LCD.asm von 
Christian steht).

von A. G. (tipfix)


Lesenswert?

Gut. Bin überzeugt. Blöde Frage noch: Was ist ein PIC32?

von Markus L. (markusl)


Lesenswert?

A. G. wrote:
> Blöde Frage noch: Was ist ein PIC32?

Klicke dazu einfach auf den Link den die Forumssoftware automatisch in 
dein Post eingefügt hat ;)

von Psych (Gast)


Lesenswert?

>Blöde Frage noch: Was ist ein PIC32?

Das ist ein Produkt der Teufelsfirma, die Atmel übernehmen will, damit 
sie bessere Produkte als momentan im Angebot haben ;-)

>So, dazu gibt es im Internet bestimmt noch kein Video:

Ganz klar, immer noch ein Video. Glaube es erst, wenn ich ein bischen 
Code sehe !

von Achim (Gast)


Lesenswert?

Von dem L2F50 gibt es doch sogar ein Datenblatt. Ist irgendwo viel 
weiter oben schon mal verlinkt. Da sollte eigentlich alles drinne 
stehen, auch wie man dreht:
http://www.mikrocontroller.net/attachment/19968/50052T01e_01_110902.pdf

von M. E. (meins0273)


Lesenswert?

Meinst Du ATMEL oder Microchip :-)

von gast (Gast)


Lesenswert?

hi ich bin grade dabei auch mein erstandenes LCD in betrieb zu nehmen
eine frage hätte ich noch zu dem 2,9V und 1,8V  anschluss

könnte man den 1,8V aanschluss nicht auch über eine diode noch etwas 
abschwächen? das sind dann zwar um 2,1V was aber eben nicht die vollen

und 3 dioden in reihe zu 5V dürften auch die 2,9V erzeugen
oder is dagegen etwas einzuwenden

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

Du kannst beide Pins ohne Probleme auf 3V bzw. 3.3V legen.

von James (Gast)


Lesenswert?

Hi, eine Frage an die Hardware Spezis. Gibt es eine Möglichkeit den 
vorgeschlagenen Hochsteller von Christian für die 12V, soweit zu 
modifizieren, das man bei Bedarf die "Hintergrundbeleuchtung" (also die 
12V) komplett ausschalten kann.

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

Einfach die PWM ausschalten. Die LEDs brauchen mind. eine Spannung von 
ca. 10V und vorher fließt auch kein Strom.

von James (Gast)


Lesenswert?

Das kann ich nicht bestätigen. Sobald du an eine Diode Spannung anlegst 
fließt auch ein Strom. (wenn nicht in Sperrichtung) Und auch in meinem 
Fall, wenn an dem Display 5V anliegen, dann leuchten die LED's schon. 
Zwar nicht so hell aber sie leuchten. Deshalb will ich eine Lösung haben 
die LED Spannung abschalten zu können.

von Marius S. (lupin) Benutzerseite


Lesenswert?

Hat hier noch jemand anders ausser mir das gefühl das die displays ein 
wenig dunkel erscheinen (trotz heller Hintergrundbeleuchtung)?

Bei Menüs und grafiken merkt man das kaum, aber bei Bildern wird es 
schon ganz deutlich meine ich...

Hat einer mal mit der maximalen SPI Frequenz rum probiert? Habe es hier 
an einen SAM7 mit 96 MHz am laufen (glaube ich zumindest, morgen wird 
gemessen).

Interessant ist beim LPH88 das man ohne Probleme einfach neue Daten rein 
schreiben kann ohne dazwischen Kommandos zum Display zu senden (einfach 
einen Bildschirm per SPI übertragen, ich mach das einfach per Hardware 
DMA). Der alte Bildschirminhalt wird dann einfach bildschirmweise neu 
beschrieben.

von Gunni H. (gunni)


Lesenswert?

@Marius S.: Das würde mich auch interessieren.
Ich habe mit dem AVR nur den Max SPI von 8 MHz erreichen können.
Hast du 96 MHz CPU Takt oder SPI Takt ??
Zum Bilder darstellen sind 8 MHz zu wenig, deswegen verusche ich mich 
gerade in den SAM7 einzuarbeiten.

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

@James
Bei meinem LPH88 brauche ich mind. 7V damit ein Strom fließt. Ein 
schwaches Leuchten der LEDs sieht man bei dieser Spannung aber nicht.

@Marius S.
> Hat hier noch jemand anders ausser mir das gefühl das die displays ein
> wenig dunkel erscheinen (trotz heller Hintergrundbeleuchtung)?
Meine LPH88 sehen dunkler und auch schlechter ausgeleuchtet als wie die 
LS020 aus...

> Interessant ist beim LPH88 das man ohne Probleme einfach neue Daten rein
> schreiben kann ohne dazwischen Kommandos zum Display zu senden...
Das müsste beim LS020 auch gehen, wenn man den Window-Bereich dem 
entspechend setzt - ich habe es aber noch nicht ausprobiert.

von James (Gast)


Lesenswert?

Ich habe den LS020 und bei dem leuchten die LED's schon bei 5V. Also 
wenn der Hochsteller inaktiv ist. (z.B.:beim Programmieren.) Wie wird 
den die Abschaltug im Handy (zB: S65) realisiert? Ich habe leider keins, 
sonst hätt ich den sofort zerlegt ;). Gewiss gibts da eine feine Lösung.

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

Einfach einen NPN-Transistor oder N-Chn MosFet zwischen LED-Kathode und 
Masse schalten.

von Lupin (Gast)


Lesenswert?

hab eben mal nachgemessen, mein SPI takt ist wohl 48MHz. komisch, die 
PLL hab ich aber nicht so eingestellt...

Das Problem mit der LED lässt sich auch lösen indem man die Schaltung 
mit 3,3V betreibt (gibt auch keine Probleme mit dem Display).

von James (Gast)


Lesenswert?

@Andreas
Das ist eine Überlegung wert. Danke.

von michael (Gast)


Lesenswert?

hi,

ich hab ein display mit epson-controller laufen. das display hat eine 
spannungsversorgung von 3V und der Controller läuft auf 5V mit 
Spannungsteilern.
Zu Anfang läuft das Display einbandfrei, jedoch berlassen nach ca. 1 - 2 
Sekunden die Farben, bis nichts mehr zu sehen ist. Dann muss ich einige 
zeit (ca. ne halbe bis eine minute) warten, dann geht es kurz wieder.
ich hab das gefühl, dass der controller auf dem display zu warm wird und 
dann abschaltet... kann das sein? hab hier gelesen, dass die displays 
auch mit 3,3V betrieben werden.

von Euroscan T. (euroscan)


Lesenswert?

hi,
- need library ( *.lbr) for EAGLE 4.13 on S65 LCD connector 10 pins.
part number ITT Canon B 5 129.S

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

http://www.watterott.com/S65-Display-LS020 -> Downloads -> Eagle Lib

von Euroscan T. (euroscan)


Lesenswert?

thanks so much for this link.
Eagle library exist in this link only in version > 4.60
it's simply to re-mark to other version.

von Kay (Gast)


Lesenswert?

hallo,

benutze seit langem das S65 Lcd mit LS020 Controller. Funktioniert 
prima, wenn ich es im Landscape modus betreibe. Wenn ich im Hochformat 
was darstellen will, dann ist es spiegelverkehrt. Hier mal meine 
Ansteuerungunsroutine für Bascom:

Window2:
                                                     'Ausgabefenster mit 
den kooridnaten x1,y1 und x2,y2 /X-direction)

   Rs = Kommando
   Ausgabe = &HEF90
   Gosub Lcd_send
   Ausgabe = &H0500                                         ' Direction 
or  &H0504
   Gosub Lcd_send
   '-----------------
   Ausgabe = &H0800 - X1                                    'X1
   Gosub Lcd_send
   '-----------------
   Ausgabe = &H0900 - X2                                    'X2
   Gosub Lcd_send
   '-----------------
   Ausgabe = &H0A00 - Y2                                    'Y1
   Gosub Lcd_send
   '-----------------
   Ausgabe = &H0B00 - Y1                                    'Y2
   Gosub Lcd_send
Return

mit diesem Codeteil wird der Text spiegelverkehrt angezeigt.Ich habe 
schon probiert, die X1,X2,Y1,Y2 zu ändern, aber ich bekomme keine 
normale schrift hin. Auch mit X1 = 131 - y1 oder so, bekomme ich es 
nicht hin. Kann mir jemand einen Tip geben, wie ich aus der 
Spiegelverkehrten Schrift, eine lesbare Schrift hinbekomme ?

danke und gruß Kay

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

Schau dir mal diese Übersicht zur Schreibrichtung an:
http://juras.yourbb.be/viewtopic.php?f=2&t=5#p15

von Lupin (Gast)


Angehängte Dateien:

Lesenswert?

Hier mal das Datenblatt zum LS020... steht nicht viel zum Interface 
drin.

Es geht aber daraus hervor, dass der Controller tatsächlich ein LR38826 
ist - eigentlich suche ich nach dem Datenblatt dafür.

Die Supply voltage ist mit 2.8 bis 3.0 Volt angegeben - die meisten 
betreiben ihr Display also mit Überspannung.

Aber laut dem Datenblatt kann der display controller nicht mit 1.8 Volt 
betrieben werden - komisch...

von Mathias T. (schildkroete)


Lesenswert?

hallo,
kann der Pin 1V8 auch einfach an 2,9V angeschlossen werden oder geht das 
LCD dann kaputt?

von Andreas W. (Gast)


Lesenswert?

Beim LS020 und LPH88 kann man das ohne Bedenken machen. Der L2F50 Typ 
scheint es nicht so zu mögen - steht alles in diesem Beitrag.

von Michael B. (bubi)


Angehängte Dateien:

Lesenswert?

Hallo,

Hänge mich hier auch mal an,
Anbei der Initialisierungscode für einen STM32 Prozessor und LS2020 
Display.
2 Funktionen habe ich Testweise eingebaut:

1 mal FillScreen zum auffüllen des Displays und eine DrawBitmap passend 
zu Beitrag "Bitmap Konverter". Angepasst muss in der 
"for" Schleife in der Funktion eig nur der Pixelwert des zu zeichnenden 
Bildes angepasst werden.
Interesant sollte aber nur der INIT Code sein ;)

Viel Spass damit.
Und danke euch allen für die super Vorarbeit.

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Hi,

ich habe mein Display an einen Mega2561 angeschlossen, alle Verbindungen 
überprüft und doppelt gecheckt. Die Software von superkranz genommen, 
aber leider "passiert nichts". Genauer gesagt: Auf dem Display verändert 
sich nichts und der Code bleibt irgendwo in der lcd_init hängen.

Aufgrund der Adresse der Register SPCR und SPIF habe ich die SPI_SEND 
Befehle wie folgt geändert:
1
SPI_SEND:
2
  lds R28,SPCR
3
  sbr R28, (1<<SPE)
4
  sts SPCR, R28  
5
  ;sbi SPCR,SPE        ;enable SPI
6
  out SPDR,r24        ;load byte in SPI data register
7
SPI_SEND_0:
8
  lds R28,SPSR
9
  sbrs R28,SPIF 
10
  ;sbis    SPSR,SPIF
11
  rjmp    SPI_SEND_0      ;transmitt byte to LCD
12
  in  r0,SPDR
13
  sbi PORTF,LCD_CS        ;deselect Display
14
  ret

Zudem habe ich den XTAL-Wert auf 7372800 angepasst und die 
Pin-Definitionen zu meinem System passend eingestellt. Da bei mir nicht 
alle Pins (RS, CS, RESET) auf PORTB, sondern auf PORTE und PORTF liegen, 
habe ich im Code auch die entsprechenden Zeilen geändert.

Das ganze betreibe ich direkt an 3,3V. Vielleicht hat's ja mein Display 
geschossen? ;)

Hat jemand von euch eine Idee, warum das ganze bei mir nicht 
funktioniert (vllt noch andere Ideen als die 3,3V?)?

Grüße, Lasse

von Guest (Gast)


Lesenswert?

> Blöde Frage noch: Was ist ein PIC32?

Das ist eine afrikansche Tausendfüssler- Ausführung mit nur 32 Beinen 
:_))

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Schade, dass das Bearbeiten von "alten" Beiträgen nicht mehr möglich 
ist.

Daher hier ein Nachtrag: Er hängt in SPI_SEND_0 und zwar beim ersten 
Aufruf...

Ich vermute daher, dass er das SPI-Senden nicht abschließt.

Ich habe bisher noch keine Erfahrungen mit SPI und kann mir im Moment 
nicht erklären, woran das liegt.. Das sollte doch theoretisch auch 
ohne angeschlossenem Display funktionieren, oder?

Gruß, Lasse

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

Wie ist dein SS-Pin konfiguriert? Er muss als Ausgang oder Eingang mit 
PullUp eingestellt werden.

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Hi,

ja, der SS-Pin ist auf Ausgang und auf High eingestellt. Hier die 
Code-Sequenz:
1
DDRB |= (1<<PB0);
2
PORTB |= (1<<PB0);

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

Wie sieht denn der komplette Code aus und was für ein Display (LS020, 
LPH88, L2F50) hast du?

von Lasse S. (cowz) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hi,

danke für den Support :)

Ich habe hier mal meine lcd.h und meine lcd.asm angehängt, ist im Großen 
und Ganzen das von superkranz.

Gruß, Lasse

von Lasse S. (cowz) Benutzerseite


Angehängte Dateien:

Lesenswert?

Und hier die lcd.h

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

Das ist aber nicht der komplette Code (LS020 Display)?
Ich habe jetzt nur mal schnell drüber geschaut und in lcd.asm wird 
nirgends der SS-Pin konfiguriert.

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Hi,

richtig, es ist das LS020, sorry, hatte ich vergessen noch zu 
schreiben..

Die main.c fehlt.

Der SS-Pin wird so konfiguriert:
1
  DDRB |= (1<<PB0);
2
  PORTB |= (1<<PB0);

Die lcd_init wird auch aufgerufen, ich komme ja in die SPI_SEND_0 (kann 
dort per UART was schicken, was dann unendlich oft kommt, aber 
"dahinter" (also nach die SPIF-Schleife) kommt er nicht.

Wie kann es sein, dass das SPI nicht sendet? Ist mein SPE-Gewurschtel 
fehlerhaft?

Gruß, Lasse

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

SPE braucht man nicht jedes mal setzen. Es reicht aus die Daten in SPDR 
zu kopieren. Dann wird die Übertragung automatisch gestartet.
Hast du mal nachgemessen, ob Daten rausgeschoben werden?

Warum benutzt du eigentlich abwechselnd in/out und lds/sts und was macht 
der original Code:
1
SPI_SEND:   
2
    out SPDR, r24       ;load byte in SPI data register
3
SPI_SEND_0: 
4
    sbis SPSR, SPIF
5
    rjmp SPI_SEND_0     ;transmitt byte to LCD
6
    in r0, SPDR
7
    sbi PORTF, LCD_CS   ;deselect Display
8
    ret

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Geil!

Du bist mein Held ;)

Das nenn ich tollen Support, das Display hab ich ja bei dir bestellt :)

Klasse, klasse, klasse, ich freu mich grad n Keks :)

Gruß, Lasse

von Murat Y. (tarum30)


Lesenswert?

I look for proteus model for S65 display. Please, give me a link or send
to tarum_7791@hotmail.com

von Dominik P. (dominik86)


Lesenswert?

Hey!

Ich habe bereits das L2F50xxx Erfolgreich ansteuern können und konnte 
den Code eben auch ohne Fehler kompillieren. Da ich nun das LS020 
eingekauft habe musste ich umsteigen.

Ich wollte gerade den Code für das LS020 von SuperKranz kompilieren und 
es wirft sehr merkwürdige Fehler.

Meine Vorgehensweise:

- simple_display3.zip runtergeladen und entpackt
- AVR-Studio(v4.14 Build589) geöffnet und neues Projekt angelegt.
- AVR GCC, Häkchen bei "Create initial file" und "Create folder" 
deaktiviert und als Projektnamen "simple" gewählt. Als Location habe ich 
den Ordner gewählt wo die .c .h und .asm Dateien drin sind.
- Rechtsklick auf "Source Files" und "Header Files" Add Existing Files 
... nun sind alle c und h dateien in meinem projekt. Da ich die orginal 
Makefile nutzen will stelle ich dies unter Projekt -> configuration ein.

Wähle ich nun "Rebuild All" kommen folgende Fehlermeldung:
1
makefile:339: simple.d: No such file or directory
2
makefile:339: disp.d: No such file or directory

Diese beiden Dateien exsistieren jedoch in meinem Projektordner.

In der Makefile in Zeile 339 steht:
1
include $(SRC:.c=.d)

Dann kam mir die Idee die asm-Datei auch über Rechtsklick -> Source 
Files einzubinden, jedoch kommt da genau die gleiche Fehlermeldung. :(


Hat jemand von euch eine Idee was ich falsch mache oder woran es liegen 
kann?

Ich habe schon fast die Vermutung dass die Version von AVR Studio zu 
aktuell ist? Oder mache ich mit der Asemblerdatei einen Fehler?


Gruß

Dominik

von SuperUser (Gast)


Lesenswert?

versuch mal direct von der "Kommandoaufforderung" (ich glaube so heisst 
das unter windows) man gibt cmd unter Ausführen ein zu kompilieren.

Also zum Pfad gehen wo das makefile ist und dort dann

make

eingeben. U.u. wenn es nicht geht mal ein make clear machen.

Wenn es so geht, liegt es an der Konfiguration deines AVR Studios.

von SuperUser (Gast)


Lesenswert?

Ach nochwas, kenne mich mit AVR Studio nicht so aus, kann sein dass das 
make gmake oder nmake heisst....

von KBlank (Gast)


Angehängte Dateien:

Lesenswert?

Nun will ich auch mal zeigen, was ich fabriziert habe.
Vielen Dank an Christian Kranz, der dieses Projekt erst möglich gemacht 
hat.
Meine Schaltung basiert auf seinem Beispielcode und wurde vom mir (um 
einiges) erweitert. Dieses Programm ist gut, um sich in die Materie 
einzuarbeiten. Ich bin noch nicht am Ende, es soll noch einiges 
dazukommen; soll mal ein Oszi im Sinne von Ucompozzel (mal googeln, ist 
ziemlich genial) werden.
Prozessor AtMega64 SMD 5V, Display L2F50xx von Epson mit LM317 an 3,0V.
Die Versorgung der LED's erfolgt über einen MAX202(SMD) mit dem Abgriff 
an +10 und -10Volt; die Spannung bricht auf etwa 14V ein, hält 
aber.(Vorwiderstand von 420 Ohm) Den Stromverbrauch habe ich noch nicht 
gemessen, da das ganze Ding am Netzteil läuft.
Ich wünsche allen, die ihr Display noch nicht am laufen haben,
viel Erfolg; Dass mein Display läuft habe ich dieser tollen Community zu 
verdanken.

von Dominik P. (dominik86)


Lesenswert?

Hey!

Ich habs jetzt hinbekommen ... die Fehlermeldung kommt zwar immer noch 
aber die hex datei funktioniert :)

Nun wollte ich dir Library einbauen und bin die install.txt 
durchgegangen. Da ist dann die rede von einer compile.bat, die aber 
nicht existiert. Was kann ich da machen? Ich habe mir die Lib von 
http://www.superkranz.de/christian/S65_Display/DisplayIndex.html 
runtergeladen.
Bin mir auch garnicht sicher wie das mit der Lib funktionieren soll. 
Wird dann nur das mit Compiliert, was auch gebraucht wird?
Weiß da jemand was?

Gruß
Dominik

von Gast (Gast)


Lesenswert?

Hi Alle!

(falls offensichtlich, bitte ignorieren)

Warum schliessen alle diese komischen Spannungsteiler
zwichen Atmel IO und dem Display an??? Eine "open drain
without pullup" Konfiguration mit einem externen Pullup
von ein paar kOhm an die kleinere (vom Display) VDD
muesste doch haushoch ueberlegen sein (und ohne jegliche
Bedenken funktionieren).

Wenn man die IOs mit "open drain mit pull-up", ohne externe
Elemente konfiguriert, duerfte es auch funktionieren. Es
waehre zwar nicht mehr 100% elektrisch korrekt, der moegliche
Strom aber, der durch die internen Pull-ups und die
Sicherheitsdiode im Display laeuft duerfte dann hoechstens
ein paar uA betragen. Stimmt es?

Zu LS020: Laut der, oben im Thread verlinkten, Spezifikation
ist das Pin 8 am Display (VDD2 bzw. VDD_1.8V) "not connected".
Hat irgendjemand versucht das Pin gar nicht zu verschalten?

von Peter F. (piet)


Lesenswert?

Gast schrieb:
> Zu LS020: Laut der, oben im Thread verlinkten, Spezifikation
> ist das Pin 8 am Display (VDD2 bzw. VDD_1.8V) "not connected".
> Hat irgendjemand versucht das Pin gar nicht zu verschalten?

Ja, in der Testschaltung habe ich 1V8 mit an den 2.9V hängen. Wenn ich 
1V8 nicht mit 2.9V versorge funktioniert das Display zwar allerdings 
lässt der Kontrast nach bzw. wird das Bild schlechter und es fängt an zu 
flackern beim beschreiben.

Mfg,
Peter

von s65besitzer (Gast)


Lesenswert?

Hallo Forum!

Ich habe die glcd-lib von superkranz mal kompiliert und stoße auf 
folgende Probleme:

"make.exe" all
makefile:335: test.d: No such file or directory

--> in Zeile 335 des Makefiles steht: include $(SRC:.c=.d)
Die Zeile kann ich doch knicken oder?

Compiling: test.c
test.c:10: warning: no previous prototype for 'testLines'
test.c:33: warning: no previous prototype for 'testLines2'
test.c:45: warning: no previous prototype for 'testEllipses'
test.c:87: warning: no previous prototype for 'testEllipses2'
test.c:99: warning: no previous prototype for 'testRects'
test.c:120: warning: no previous prototype for 'glcdRotateRect'
test.c:190: warning: no previous prototype for 'glcdNewOrientation'
test.c:197: warning: no previous prototype for 'testSymbols'
test.c:223: warning: no previous prototype for 'glcdPrintCenter'
test.c:233: warning: no previous prototype for 'myRead'
test.c:238: warning: no previous prototype for 'demoScreen'
test.c:339: warning: no previous prototype for 'testOrientation'
test.c:390: warning: no previous prototype for 'testBitmaps'
test.c:411: warning: no previous prototype for 'glcdRandomClipRect'
test.c: In function 'main':
test.c:429: warning: unused variable 'o'

Die fehlenden Prototypen meckert er an.
Das ist doch aber alles da oder?

Danke für Euren Tip

von s65besitzer (Gast)


Lesenswert?

Mein vorheriger Beitrag hat sich erledigt!

Layer8-Problem: Erst denken und dann posten ;-)

von iok (Gast)


Lesenswert?

Hi,
does someone know how to change Christian library to display 
horizontally?

Viele Grüße
Lukasz

von sasamy (Gast)


Lesenswert?

Hallo. Ich habe den Treiber für lph88 unter linux geschrieben
http://www.at91.com/samphpbb/viewtopic.php?f=12&t=18204
aber ich habe ein Problem - lcd nicht immer startet richtig. Die Code 
der Initialisierung:
<c>
#define SPI_SPEED   (12*1000*1000)

static u8 lcd_init_data[] __initdata = {0x74,0x00,0x00,0x76,0x00,0x01,
..... und weiter von Superkranz

static int __init lcd_init(struct lph88fb_par *par)
{
   int i;
   u8 *tx_buf = par->fb_virt;
   dma_addr_t tx_dma = par->fb_phys;

   /* reset lcd controller */
   at91_set_gpio_output(AT91_PIN_PB4, 0);
   mdelay(1);
   at91_set_gpio_value(AT91_PIN_PB4, 1);
   mdelay(10);

   memcpy(tx_buf, lcd_init_data, sizeof(lcd_init_data));

   for(i = 0; i < sizeof(lcd_init_data); i += 3) {
      spi_send_poll(par, tx_dma + i, 3);
      mdelay(1);
      if(tx_buf[i] == 0x76)
         switch(tx_buf[i-1]) {
         /* power control - need big delay */
            case 0x03:
            case 0x04:
            case 0x0c:
            case 0x0d:
            case 0x0e:
               mdelay(40);
         }
   }

   mdelay(100);

   return 0;
}
</c>

Was ich falsch mache? Danke.

von Richard (Gast)


Lesenswert?

Hi,

ich betreibe das LS020 an einem Mega644 mit 16MHz.

Ausgaben auf dem Display funktionieren soweit auch ganz gut,
zumindest für feststehende Ausgaben. Nun möchte ich den Inhalt
einer Variablen hochzählen und zur Anzeige bringen. Die Anzeige
aktualisiert sich aber nicht richtig, denn alte Werte bleiben
auf der Anzeige stehen und werden von neuen Werten überschrieben,
so dass irgendwann nur noch ein Balken zu sehen ist. Habe schon die Fkt.
LCD_ClrScr() bzw. S65_refresh() ausprobiert, bringen aber nichts.

Wer kann mir einen Tipp für folgenden Quelltextauszug geben?

1
void display_init(void)
2
{
3
   _delay_ms(10);
4
   S65_Init();
5
   _delay_ms(10);
6
   S65_Fillscreen(0x0000);
7
   S65_SetFont(&f12x12[0]);
8
   S65_SetTextColor(0xFFFF);
9
   S65_SetTextTyp(0);
10
   S65_SetFNull(0);
11
}
12
13
void S65_PutInt(uint8_t x, uint8_t y, uint16_t z)
14
{
15
   uint8_t counter = 0;
16
   uint8_t za[20];   
17
   za[6] = 0;
18
   za[5] = (z % 10)+48;z = z/10;
19
   za[4] = (z % 10)+48;z = z/10;
20
   za[3] = (z % 10)+48;z = z/10;
21
   za[2] = (z % 10)+48;z = z/10;
22
   za[1] = (z % 10)+48;z = z/10;
23
   za[0] = (z)+48;
24
   
25
   if(!FNull)              
26
   {
27
      while(za[counter] == 48){counter++;}
28
   }
29
   S65_PutStr(x, y, &za[counter]);
30
}
31
32
void S65_refresh()
33
{
34
   S65_wrcmd16(0xEF90);
35
   S65_wrcmd16(0x0000);
36
}
37
38
void LCD_ClrScr(void)
39
{
40
   uint16_t cnt;
41
   S65_wrcmd16(0xEF90);
42
   S65_wrcmd16(0x0500);
43
   S65_wrcmd16(0x0600);
44
   S65_wrcmd16(0x0700);
45
   for(cnt=0;cnt<(132*176);cnt++)
46
   {
47
      LCD_WrData(0x00);
48
      LCD_WrData(0x00);
49
   }
50
}
51
52
void main(void)
53
{
54
   uint16_t val = 0;
55
   display_init();  
56
57
   while(1)
58
   {
59
      if(val == 0xFFFF) val = 0; 
60
      S65_PutInt(66, 66, val++); 
61
      //LCD_ClrScr();
62
      //S65_refresh();
63
      _delay_ms(1000);
64
   }
65
}

Danke + Gruß
Richard

von Spider (Gast)


Lesenswert?

Hallo,

ich habe das  "simple_display3" mit nem Mega16L und 8Mhz ausprobiert.
Im prinzip scheint es zu funktionieren, jedoch erhalte ich anstelle 
"Hello World" nur menrkwürdige zeichen in der Display mitte.

wenn ich jedoch nur ein Zeichen ausgeben möchte z.B. 'H' dann wird 
dieses korrekt dargestellt. Hat jemand evtl. nen Tip für mich?

Danke!!

von Spider (Gast)


Lesenswert?

Hallo S56Besitzer,

was war die lösung deines Problems ?




Hallo Forum!

Ich habe die glcd-lib von superkranz mal kompiliert und stoße auf
folgende Probleme:

"make.exe" all
makefile:335: test.d: No such file or directory

--> in Zeile 335 des Makefiles steht: include $(SRC:.c=.d)
Die Zeile kann ich doch knicken oder?

Compiling: test.c
test.c:10: warning: no previous prototype for 'testLines'
test.c:33: warning: no previous prototype for 'testLines2'
test.c:45: warning: no previous prototype for 'testEllipses'
test.c:87: warning: no previous prototype for 'testEllipses2'
test.c:99: warning: no previous prototype for 'testRects'
test.c:120: warning: no previous prototype for 'glcdRotateRect'
test.c:190: warning: no previous prototype for 'glcdNewOrientation'
test.c:197: warning: no previous prototype for 'testSymbols'
test.c:223: warning: no previous prototype for 'glcdPrintCenter'
test.c:233: warning: no previous prototype for 'myRead'
test.c:238: warning: no previous prototype for 'demoScreen'
test.c:339: warning: no previous prototype for 'testOrientation'
test.c:390: warning: no previous prototype for 'testBitmaps'
test.c:411: warning: no previous prototype for 'glcdRandomClipRect'
test.c: In function 'main':
test.c:429: warning: unused variable 'o'

Die fehlenden Prototypen meckert er an.
Das ist doch aber alles da oder?

Danke für Euren Tip

von kazio0 (Gast)


Lesenswert?

PLEASE send mi SIEMENS CX65 LCD Lib for Proteus :) my e-mail: 
kazio0o@o2.pl

von michael (Gast)


Lesenswert?

Hallo zusammmen,

ich habe erfolgreich die glcd-lib von christians seite mit einem ls020 
zum laufen bekommen.
tolle arbeit von euch!

leider funktioniert die rotation noch nicht. hat schon jemand die lib 
entsprechend erweitert, sodass man den text auch in 90° rotation 
anzeigen kann?

mfg, michael

von Torsten G. (wawibu)


Lesenswert?

Hi zusammen,

habe mir auch mal so ein Display vom Typ LS020 in der Bucht bestellt. Da 
es heute eingetroffen ist, wollte ich versuchen zumindest schonmal die 
"Hello World" angezeigt zu bekommen.
Habe mir dazu von Christians Webside die aktuelle simple_display3 
geladen und entpackt. Wenn ich diese nun mit Rebuild All compilieren 
lassen, kommen folgende Meldungen:
Build started 20.8.2009 at 22:12:43
avr-gcc  -mmcu=attiny2313 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT disp.o -MF 
dep/disp.o.d  -c  ../disp.c
avr-gcc  -mmcu=attiny2313 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT simple.o 
-MF dep/simple.o.d  -c  ../simple.c
avr-gcc -mmcu=attiny2313 -Wl,-Map=S65_simple_Dispaly3.map disp.o 
simple.o     -o S65_simple_Dispaly3.elf
disp.o: In function `lcd_wrdat16':
C:\_Data\Projekte\_MoBa\AVRStudio\S65_simple_Dispaly3\default/../disp.c: 
128:  undefined reference to `lcd_wrdata'
C:\_Data\Projekte\_MoBa\AVRStudio\S65_simple_Dispaly3\default/../disp.c: 
129:  undefined reference to `lcd_wrdata'
disp.o: In function `lcd_wrcmd16':
C:\_Data\Projekte\_MoBa\AVRStudio\S65_simple_Dispaly3\default/../disp.c: 
122:  undefined reference to `lcd_wrcmd'
C:\_Data\Projekte\_MoBa\AVRStudio\S65_simple_Dispaly3\default/../disp.c: 
123:  undefined reference to `lcd_wrcmd'
simple.o: In function `main':
C:\_Data\Projekte\_MoBa\AVRStudio\S65_simple_Dispaly3\default/../simple. 
c:24:  undefined reference to `lcd_init'
make: *** [S65_simple_Dispaly3.elf] Error 1
Build failed with 5 errors and 0 warnings...

Leider kann ich die Funktion lcd_wrcmd auch nicht finden. Dafür ist die 
Funktion lcd_wrcmd16 gleich doppelt in der disp.c enthalten. Liegt hier 
vielleicht ein Fehler vor oder was mache ich falsch?

void lcd_wrcmd16(uint16_t dat)
{
  lcd_wrcmd((dat>>8));
  lcd_wrcmd(dat);
}

void lcd_wrdat16(uint16_t dat)
{
  lcd_wrdata(dat>>8);
  lcd_wrdata(dat);
}

Wenn ich zum testen den ATtiny nur mit 2,9Volt betreibe, dann kann ich 
das Display doch direkt an die Ausgänge anschließen - oder ?

Danke Euch

Torsten

von Torsten G. (wawibu)


Lesenswert?

Torsten Giese schrieb:
> Leider kann ich die Funktion lcd_wrcmd auch nicht finden. Dafür ist die
> Funktion lcd_wrcmd16 gleich doppelt in der disp.c enthalten. Liegt hier
> vielleicht ein Fehler vor oder was mache ich falsch?
>

Da habe ich quatsch geschrieben - sorry

von Torsten G. (wawibu)


Lesenswert?

Habe es nun hinbekommen. Display wird erfolgreich mit einem ATmega8515 
betrieben.

von Slevin (Gast)


Lesenswert?

Hallo Leute,

ich habe das LS020 schon erfolgreich mit dem kleinen Programm 
Simple-Display an meinem Mega32 betrieben. Jetzt würde ich gerne das mit 
s65_glcd_V01 versuchen, doch ich kriegs nicht auf die Reihe.
Ich benutze AVR Studio 4 und weiß nicht so recht wohin mit den Dateien 
(zB: *.asm, *.a, *.inc,...), hab schon Vieles versucht, doch ihm fehlen 
so gut wie alle Funktionen oder der Assembler findet keine Header 
Dateien, obwohl ich die schon included habe.
In der Installation Textdatei stehen auch andere Pfade.
Die Dateien (makefile, glcd) habe ich schon anpasst (MCU, Ports für 
Ausgabe, Quarz).
Es wäre echt super, wenn einer eine Anleitung oder sowas Ähnliches 
schreiben könnte, Schritt für Schritt oder Tipps geben könnte.

Ich freu mich schon drauf!!!
Slevin

von Slevin (Gast)


Lesenswert?

Hi,

habs endlich doch noch hinbekommen!

Wenn ich es compiliere, dann kommt folgendes:

c:/programme/avrstudio/bin/../avr/include/util/delay.h:89:3: warning: 
#warning "Compiler optimizations disabled; functions from <util/delay.h> 
won't work as designed"
test.c:12: warning: no previous prototype for 'testLines'
test.c:35: warning: no previous prototype for 'testLines2'
test.c:47: warning: no previous prototype for 'testEllipses'
test.c:89: warning: no previous prototype for 'testEllipses2'
test.c:101: warning: no previous prototype for 'testRects'
test.c:122: warning: no previous prototype for 'glcdRotateRect'
test.c:192: warning: no previous prototype for 'glcdNewOrientation'
test.c:199: warning: no previous prototype for 'testSymbols'
test.c:225: warning: no previous prototype for 'glcdPrintCenter'
test.c:235: warning: no previous prototype for 'myRead'
test.c:241: warning: no previous prototype for 'demoScreen'
test.c:341: warning: no previous prototype for 'testOrientation'
test.c:392: warning: no previous prototype for 'testBitmaps'
test.c:413: warning: no previous prototype for 'glcdRandomClipRect'
test.c:424: warning: no previous prototype for 'pwma'
test.c: In function 'main':
test.c:457: warning: unused variable 'o'

Zwar funktioniert das Display so einwandfrei, doch mich interessiert es 
schon, was das für warnungen sind. Kann mir einer weiter helfen?

MfG
Slevin

von Tobias B. (tc-soundnlight)


Lesenswert?

Entweder habe ich es überlesen oder es hat noch keiner geschrieben!
Ich suche eine möglichkeit das S65 - Display mit 8bit Farben zu 
verwenden - gibt es hier vom LCD aus eine möglichkeit per Befehl 
umzuschalten??

Danke - Grüße Tobi

von Andreas W. (andreasw) Benutzerseite


Lesenswert?


von Torsten G. (wawibu)


Angehängte Dateien:

Lesenswert?

Habe nun endlich es hinbekommen, dass ich die Files, welche mit Hagens 
Font-Editor erstellt werden, in meinem Projekt verwenden kann. Die ganze 
Lib ist mir zu wuchtig, und außerdem müsste ich die größtenteils eh 
umschreiben, da ich in ASM programmiere.
Gestern habe ich dann mir die Windows-Updates von XP gezogen. Seit dem 
kann ich den Font-Editor noch aufrufen, jedoch wird im Bearbeitungsfeld 
wo normalerweise die kleinen Kästchen sind, nichts mehr angezeigt. Das 
Feld ist leer.

Habe mal einen Screenshot angehängt.

Hat einer eine Idee was ich tun kann? Im WorstCase muss ich versuchen 
herauszufinden, was das WindowsUpdate gestern installiert hat und dass 
dann wieder deinstallieren.

Danke & Gruß
Torsten

von Michael 9. (michael93) Benutzerseite


Lesenswert?

Hallo zusammen,

als erstes: Danke christian für deine Arbeit, echt toll von dir alles 
zur verfügung zu stellen.

Das Demo (grüner hintergrund mit Text) funktioniert bei mir wunderbar 
(LPH8826 und ATMega32 mit 8MHz), aber die Grafikroutinen nicht. Ich kann 
alles compilieren und so, aber das Display zeigt überhaupt nichts an.
Kann mir jemand einen Tip geben was man machen muss, damit man etwas 
sieht? Die Pinbelegung stimmt, habs mehrfach kontrolliert.

Da fällt mir ein: In der main in test.c ist display on auskommentiert. 
Wird das Display irgendwo anders eingeschaltet?

Michael

von Michael 9. (michael93) Benutzerseite


Lesenswert?

ok, es lag nicht am auskommentierten.

Stattdessen hab ich mal das hier probiert (in C bin ich fitter als in 
asm):
1
draw_fill_rect(20,20,30,20,0x0F00);
2
3
void draw_fill_rect(unsigned char x, unsigned char y, unsigned char width, unsigned char height, unsigned int color)  {
4
5
  int i = width * height;
6
  i--;
7
8
  // PORTB &= ~_BV(LCD_CS);  // select display
9
10
  lcd_comtype(0x05);
11
  lcd_comdat(0x00,0x30);
12
  lcd_comtype(0x16);
13
  lcd_comdat(x + width, x);
14
  lcd_comtype(0x17);
15
  lcd_comdat(y + height, y);
16
  lcd_comtype(0x21);
17
  lcd_comdat(y, x);
18
  lcd_comtype(0x22);
19
  lcd_write(0x76);
20
21
22
  while (i)  {
23
    lcd_write16(color);
24
  }
25
26
  // PORTB |= _BV(LCD_CS);  // deselect display
27
28
  return;
29
}

Die erste Zeile ist der Aufruf der Funktion (steht in main drinne). Das 
Rechteck wird korrekt bezeichnet, danach geht aber nichts mehr (vorher 
wird Bildschirm gefüllt, natürlich mit einer anderen Farbe, das geht, 
aber alles was danach kommt tut nichtmehr. Ich bin mir sicher, dass 
einfach nur ein Befehl fehlt, weiß aber nicht welcher. Oder ich fülle 
den GRAM in angegebenen Bereich zu wenig oder zu viel, ich weiß nicht, 
wieviel es genau sein muss.

Michael

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Hi,

wie soll er denn aus
1
  while (i)  {
2
    lcd_write16(color);
3
  }

wieder rauskommen?

Gruß, CowZ

von Michael 9. (michael93) Benutzerseite


Lesenswert?

oooops, das is jetz aber peinlich, hab i--; vergessen, danke.

Michael [schäm]

von Torsten G. (wawibu)


Lesenswert?

Ich muss mich hier nun nochmal melden. Irgendwie komme ich leider nicht 
weiter.
Die Lib habe ich derweilen nun erfolgreich in mein C-Projekt in Ecplise 
eingebunden. Textausgaben sind auch ohne Probleme mit folgendem Aufruf 
möglich:
1
glcdSetFgColor(RGB(0xff,0xff,0xff));
2
glcdMoveTo (LCD_TIME_X - VIS_font_WIDTH - 2, LCD_TIME_Y);
3
glcdPrint(icon_DCF,0);

Der Text wird so natürlich nur in der Farbe ausgegeben, die ich vorher 
angegeben haben.

Doch wie geben ich denn ein buntes Zeichen aus? So wie zB in der 
clock20x37

Und wo finde ich die glcd_Colors[]? Wenn ich die Farben im Font-Editor 
angepasst habe, muss ich diese doch auch irgendwie meinem Projekt 
mitteilen - oder?

Möchte gerne einfache farbige Symbole über das Font-Tool erstellen und 
dann auf dem Display ausgeben. Doch irgendwie scheitere ich daran.

Vielleicht mache ich den Fehler ja schon beim einbinden der Schriftart:
1
#include "font/VIS_font.h"

Hoffe ihr könnt mir helfen.

Danke
Torsten

von cun83 (Gast)


Lesenswert?

Hallo zusammen,

erstmal vielen Dank an euch alle für die tollen Infos, ohne euch wäre 
ich nicht so weit gekommen. Mein spezieller Dank an Christian K. für die 
super Hardwareinfos und an Ben a.k.a. Lightning für das tolle PDF.

Zum Wesentlichen:
Nachdem ich keinen simplen Arduino Sketch / Code ohne externe Librarys 
gefunden habe, um mein LS020 Display zu testen, habe ich selbst einen 
geschrieben (nur Initialisierung als reiner Hardwaretest). Vielleicht 
hilft das hier jemandem.

Zu finden hier:
http://tinylogic.blogspot.com/2009/11/siemens-s65-tft-part-2-its-working.html

Der Post ist zwar auf Englisch, aber der Code ist selbsterklärend, wenn 
man hier den Thread gelesen hat. (Fragen, Probleme, etc zum Sketch bitte 
im Blog in die Comments, dort bin ich häufiger aktiv als hier. Auch gern 
auf Deutsch.)

Nebenbei:
@Andreas Watterott: Unter welcher Lizenz stehen eigenlich eure Libs, 
speziell die im S65 Shield Project? Ich habe da diverse Änderungen, die 
ich bei geignetem Reifegrad gerne der Community zu Verfügung stellen 
möchte.

Schöne Grüße,
cun83

von Julian W. (julian-w) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,
ich wollte mal Fragen, ob der Schaltplan so in Ordnung ist. Als Display 
benutze ich ein L2F50xxx.

Schon mal Danke für eure Hilfe und ich wünsche euch noch einen guten 
Rutsch ins neue Jahre!

MfG
Julian

von Torsten G. (wawibu)


Lesenswert?

Hi Julian,

ich weiß zwar nicht, welchen Regler Du als IC2 und IC3 verwendest, 
scheint aber sonst zu passen.
Ich habe bei mir sogar nur eine Regelung auf 3.3V drin und diesen dann 
an den 1.8V und 2.9V Eingang abgeschlossen. Das läuft bei mir super.

Dir auch einen guten Rutsch.

Gruß
Torsten

von Thisamplifierisloud (Gast)


Lesenswert?

10 Eu das Stück  ?!?

Uaaaaaaaaahhhhh !

Ich hab letzte Woche ein Dutzend in die Tonne getreten.

Nehmt einen Stock und verhaut mich.

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Ups, als Regler v

Torsten Giese schrieb:
> Ich habe bei mir sogar nur eine Regelung auf 3.3V drin und diesen dann
> an den 1.8V und 2.9V Eingang abgeschlossen. Das läuft bei mir super.

Upps, ganz vergessen hinzuschreiben. Als Regler benutze ich den LM317.

von Torsten G. (wawibu)


Lesenswert?

Thisamplifierisloud schrieb:
> 10 Eu das Stück  ?!?
>
> Uaaaaaaaaahhhhh !
>
> Ich hab letzte Woche ein Dutzend in die Tonne getreten.
>
> Nehmt einen Stock und verhaut mich.

Hm - was hat das nun hiermit zu tun? Vermutlich in falschen Thread 
gelandet?

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Naja, ich glaube, er meint, dass er S65-Displays geschrottet hat und 
sich jetzt (logischer weise) darüber ärgert...

von Julian W. (julian-w) Benutzerseite


Lesenswert?

So, hab mein Display zum laufen bekommen und muss sagen:
Super Bildqualität für den Preis! Hab gleich mal noch ein paar bestellt.
Auch der Code von superkranz funzt prima.

Jedoch wollte ich mal Fragen, wie ich ein einzelnes Pixel setzten kann. 
Hab schon stundenlang rumprobiert, hat aber leider nie funktioniert :(

Displaytyp ist L2F50xxx.

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

> Jedoch wollte ich mal Fragen, wie ich ein einzelnes Pixel setzten kann.
> Hab schon stundenlang rumprobiert, hat aber leider nie funktioniert :(
Bereich (column, page) setzen und Pixel malen:
http://code.google.com/p/arm-webradio/source/browse/trunk/src/lcd/lcd_l2f50.c

Was mich interessieren würde, ob schon jemand eine Möglichkeit gefunden 
hat das L2F50 um 90 Grad zu drehen (Landscape-Mode). Scheinbar ist nur 
eine Drehung um 180 Grad möglich.

von Andreas B. (lawert)


Lesenswert?

Hallo Zusammen,

erst mal ein Gutes Neues !

Ich hab mich ein wenig "verschluckt". Ich hab mir ein S65 Displays 
besorgt (LS020 gebraucht) -> und bekomm das Ding einfach nicht zum 
laufen.
Das Ganze ist dadurch erschwert, dass ich einen Mega88 verwende und ich 
hier (offensichtlich) nicht alles 1:1 übernehmen kann (Register...).

Ich will euch nicht damit belästigen, meine ganzen "Anfängerprobleme" 
durchzukauen, sondern bitte nur darum mir eines hex File zukommen zu 
lassen das ich auf dem Mega88 laufen lassen kann um festzustellen, ob 
das Display überhaupt funktioniert und ob meine Verkabelung IO ist.
(mir genügt es wenn das Ding "Hallo NEWBIE" ausgibt :-) )
Durch den Rest qäle ich mich dann durch.

Mein Aufbau:  Atmega88 (8MHz intern), Display: LS020XXX
Pins:
  #define   LCD_CS      PB2
  #define   LCD_RESET   PB6
  #define   LCD_RS      PB7
  #define   LCD_MOSI    PB3
  #define   LCD_MISO    PB4
  #define   LCD_SCK     PB5

würde mich freuen wenn mir jemand helfen könnte.

Meine Mail:  S_Andreas_'ät'hotmail.com

DANKE !

von Thisamplifierisloud (Gast)


Lesenswert?

Ganz oben steht :

"Preis derzeit z.B. 10EUR beim Internet Versteigerer zum sofort kaufen."

Aber da steht auch, daß das anno 2005 war... uuups.

von Torsten G. (wawibu)


Lesenswert?

Thisamplifierisloud schrieb:
> Ganz oben steht :
>
> "Preis derzeit z.B. 10EUR beim Internet Versteigerer zum sofort kaufen."
>
> Aber da steht auch, daß das anno 2005 war... uuups.

Aktuell gibt es das LS020 in der Bucht für knapp 12Eur als Neuware.

von S65_User (Gast)


Lesenswert?

Hallo.

Ich habe mir auch ein schickes S65-Display zugelegt. Funktioniert auch 
mit der Ansteuerung und allem. Ich verwende die GLCDv01.

Nun frage ich mich, wie ich Bitmaps damit darstellen kann. Ich habe 
meine bmp's mit einigen der hier im Thread vorgestellten Konvertern in 
*.h Files konvertiert. Nun sind das ja jeweils 2 Byte pro Pixel.

Ich weiß nun nicht, wie ich die Farbinformationen an das Display 
übertrage.

Ich habs versucht mit glcdSetPixel(x,y,color) und mit glcdDisplayData().

Wie kann ich die 2 Byte in die Farbe eines Pixels für glcdSetPixel() 
umwandeln?

Wie sende ich das Bitmap als Puffer? Das Display muss den Datenstrom ja 
interpretieren können.

Ich habe leider keine Infos zum Umgang mit den Farben in der 
Dokumentation gefunden.

Grüße
S65_User

von S65_User (Gast)


Lesenswert?

Re

Kann mir wirklich niemand kurz erklären, wie das mit den Farben in der 
glcd funktioniert? Oder zumindest einen Hinweis oder Link geben, 
vielleicht gibts dazu ja schon einen Thread oder sowas.

S65_User

von Gunni H. (gunni)


Lesenswert?

Hallo,

ich habe mal einen komplette Code erstellt, der von einer SD Karte das 
BMP liest und auf dem LCD ausgibt.

schau mal in der Codesammlung unter "Atmega32 zeigt BMP von SD/MMC Karte 
aus S65"

gruß
gunni

von S65_User (Gast)


Lesenswert?

Hallo Guntmar,

Vielen Dank erstmal für die Info. Jetzt hab ich aber trotzdem noch ein 
paar Fragen:

Wenn ich zum Beispiel aus deiner Bibliothek die Funktion 
S65_PutRawBmp16() nehme:

- Das Display weiß dann, dass es jeweils 2 gesendete Bytes als ein Pixel 
interpretieren muss?
- Muss man vorher den Platz auf dem Display allokieren?

- Woher weiß das Display, welche Farbe es welchem Wert zurordnen muss? 
Es muss ja dann irgendwie ne Farbtabelle geben, wo das Display weiß: 
"dieser 16-Bit-Wert entspricht genau dieser Farbe". Genauso im 
8-Bit-Modus. Welche Farbtabelle ist dort hinterlegt?


Grüße,
S65_User

von Torsten G. (wawibu)


Lesenswert?

Hi S65_user,

schaue Dir mal diesen Thread an:
Beitrag "S65 GLCD - wie farbige Icons mittels Font Editor?"

Für mich war das auch nicht transparent. Nach Hagens Erklärung, habe ich 
es aber nun kappiert :)

Gruß
Torsten

von S65_User (Gast)


Lesenswert?

Hallo Torsten,

Danke für den Link. Ist wirklich sehr informativ. Besonders was die 
Darstellung von Fonts in unterschiedlichen Farben angeht.

In dem Thread ist die Rede von einer DrawBitmap-Funktion. Die gibts aber 
in der glcd-Lib (V01), die ich von superkranz.de habe leider nicht :-(

Gibts ne aktuellere Version davon?

Grüße,
S65_User

von k000858 (Gast)


Lesenswert?

Hi all. Who has LS020 model for ptoteus?

von k000858 (Gast)


Lesenswert?

send it to my mail pls
flint.
relax@
gmail.com

von Torsten G. (wawibu)


Lesenswert?

S65_User schrieb:
> In dem Thread ist die Rede von einer DrawBitmap-Funktion. Die gibts aber
> in der glcd-Lib (V01), die ich von superkranz.de habe leider nicht :-(
>
> Gibts ne aktuellere Version davon?

Hi S65_User,

habe mal nachgeschaut und konnt so auf Anhieb auch nichts in der GLCD v1 
finden. Ob es eine neuere Version davon gibt, kann vermutlich am besten 
Hagen beantworten.

Gruß
Torsten

von Hagen (Gast)


Lesenswert?

Ja gibt es. Ich habe diese GLCD mit dem Nokia6100 in zwei Versionen 
begonnen und sie dann nochmals neu portiert für das S65 LPHxxx Display. 
Christian dagegen hat die alte Nokia Lib von mir für das S65 portiert. 
Beide Libs sehen sich sehr aähnlich was die Funktionsnamen, Parameter 
und Features betrifft sind aber auch teilweise sehr unterschiedlich. 
Meine S65 Lib hat zb. neue features wie Bitamps/Icons zeichnen die mit 4 
unterschiedlichen Verfahren komprimiert im Speicher liegen. Desweiteren 
enthält sie die Funktion glcdRoundRect() mit der man vom Rechteck über 
abgerundete rechtecke und Tonnen bishin zu Ellipsen und Kreise zeichnen 
kann. Das sind die wesentlichen Unterschiede. Ganz neu in der S65 Lib 
ist ein sehr flexibels und schon fertiges Menusystem das im FLASH seine 
Struktur hinterlegt bekommt, vielfarbig, scrollbar und dynamiscerbar 
ist.

Der größte Unterschied ist aber das ich die S65 Lib nicht frei 
veröffentlicht habe. Man muß sich bei mir per PN melden und kann sie 
dann per EMail bekommen. Übrigens haben schon ziemlich viele leute hier 
dieses Angebot wahrgenommen.

Gruß hagen

von M. E. (meins0273)


Lesenswert?

Und wie kann ich mich bei Dir melden :-)
Hätte die S65 LIB auch gerne.

Danke und Gruß

von Hagen R. (hagen)


Lesenswert?

Links oben neben meinem Namen klicken und mir eine PN schicken.

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Hallo euch allen, das ist ja ne echt starke leistung, was hier alle 
vollbracht haben.
leider bekomme ich keine der Displays mit den Programmen zum laufen.

Ich suche eine Software für die Displays.
       Nokia 6100   leider die EPSON version
       S65
       Nokia 3310

       mit ATmega128

Nutzen möchte ich diese mit dem aktuellen WinAVR und einem ATmega128
kann mir jemand einen brauchbaren CODE zusenden?

Vielen DANK
martin

von LordZiu (Gast)


Lesenswert?

Welcher Displaycontroller bei dem S65?

von Gunni H. (gunni)


Lesenswert?

@ Martin J.:
wenn du ein oszilloskop hast, ist es sehr hilfreich zu schauen, ob die 
richten Signale, an den richtign Pins ankommen.
Stimmt dein Timing? (Quarz?)

von Mi G. (ducky)


Lesenswert?

Moin ...

hat jemand das Display an nem MSP430 am Laufen ?? vielleicht sogar an 
einem der
5er Serie ??? ich wollte das Display an nen CC430F5xxx packen ..
vielleicht hats ja schon mal jemand mit Erfolg probiert ..

Gruß Micha

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Ist es möglich, zwei Displays an einen Controller anzuschließen? Ist es 
richtig, dass ich dafür nur eine zusätzliche CS-Leitung bräuchte?

Und: Gibt es Display noch irgendwo zu kaufen? Bei Watterott habe ich es 
nicht mehr gefunden?

Gruß
Lasse

von Torsten G. (wawibu)


Lesenswert?

Lasse S. schrieb:
> Und: Gibt es Display noch irgendwo zu kaufen? Bei Watterott habe ich es
> nicht mehr gefunden?

Hi Lasse,

Wattenrott stellt ja noch immer den Shop um. Ich schätze mal, dass sie 
die Displays wieder reinbekommen.

Ansonsten schaue mal in der Bucht nach:
http://shop.ebay.de/i.html?_nkw=s65+display

Bzgl der 2 Displays, schätze ich mal das das mit einer zusätzlichen CS 
geht. Bei der Aussage lasse ich aber die Experten vor :)

Gruß
Torsten

von Lord Z. (lordziu)


Lesenswert?

Serial Peripheral Interface

Danach sollte es ohne Probleme möglich sein. Du musst halt pro Display 
die Slave Select Leitung schalten.

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

Hallo,

Wir haben die S65-Displays, Steckverbinder und auch die Metallrahmen im 
Lager. Die Teile sind aber noch nicht im neuen Shop gelistet. Wir 
versuchen alle Artikel in den nächsten 14 Tagen einzupflegen.

Gruß
Andreas

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Danke schonmal für die Antworten.

Beruhigend, dass ihr die wieder bekommt, Andreas :)

Danke für den Link zum SPI, das war mir durchaus bewusst. Leider nutzt 
das Display ja zusätzlich noch Reset und RS. Meine Frage zielt daher 
darauf, ob ich Reset und RS auch doppelt brauche, oder ob das mit dem CS 
reicht. (Es wäre in Ordnung für mich, wenn ich beide Displays nur 
gleichzeitig resetten kann, beide Displays sind stets gemeinsam in 
Verwendung)


Warum ich zwei Displays brauche (weil hier ja häufig sinnvoller Weise 
auch nach den tieferen Beweggründen gefragt wird): Die Anzeigefläche 
eines Displays ist mir zu wenig, und ich finde kein leicht ansteuerbares 
größeres Display, welches bezahlbar ist.

Gruß
Lasse

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

Das mit dem gleichzeitigen Reset/Init müsste eigentlich gehen.

> Warum ich zwei Displays brauche (weil hier ja häufig sinnvoller Weise
> auch nach den tieferen Beweggründen gefragt wird): Die Anzeigefläche
> eines Displays ist mir zu wenig, und ich finde kein leicht ansteuerbares
> größeres Display, welches bezahlbar ist.

Da die S65-LCDs nicht mehr produziert werden, sind wir auch auf der 
Suche nach einer Alternative. Wahrscheinlich werden wir 2,8" 240x320 
Displays (mit SPI, 8bit und 16bit Interface) von Multi-Inno mit in den 
Shop aufnehmen.

Gruß
Andreas

von M. E. (meins0273)


Lesenswert?

Zwei Displays gehen.
Du kannst alle Leitungen parallel anschließen und nur jedem Display eine 
eigene CS Leitung verpassen.
Habe ich schon gemacht.

GRuß

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Super, danke für die Infos! :)

von paule (Gast)


Lesenswert?

Weiß jemand etwas darüber, ob es unter den aktuellen Handys überhaupt 
noch ein Display gibt, welches via spi oder 8bit Datenbus angesteuert 
wird?

Grüße

von Max P. (eizo)


Angehängte Dateien:

Lesenswert?

Hallo
ich habe leider oben im Beitrag nur recht wenige Informationen zu meinem 
Display gefunden. Optisch sieht es wie ein LS020... aus aber die genaue 
Bezeichnung ist LQ020..., aus einem S65 Handy ausgebaut. Ich habe ein 
Video oben gefunden wo jemand anscheinend dieses Display erfolgreich 
benutzt. Ist es es von der Ansteuerung dem LS020 identisch? Gibt es 
irgendwelche Besonderheiten zu beachten? Kann das Display leider 
momentan nicht selber testen. Vielen Dank.

von Uli (Gast)


Lesenswert?

Hallo,

mein LPH Display an einem XMega macht manchmal Probleme.
Die Spannungsversorgung beträgt 3,3V.
Verwendet wird Hardware-SPI mit 16MHz. Testweise wurde auch 8MHz, 4MHz 
und 2MHz probiert. Das verhalten ändert sich hierbei nicht (abgesehen 
von der Geschwindigkeit des Bildaufbaus natürlich).

Es kommt immer mal wieder vor, dass das Display "schlieren" zieht; es 
wird zwar alles angezeigt, jedoch ist wie ein ein Grauschleier 
schattenhaft alles mehrfach zu sehen.
Das ist meist wenn ich die Schaltung ein paar Stunden vom Strom getrennt 
habe wieder weg gewesen, jetzt ist es jedoch auch direkt -nach einem 
halben Tag ohne Strom- sofort wieder fehlerhaft gewesen.

Kann das daran liegen, dass ich des öfteren keinen Reset des Displays 
vor dem Ausschalten gemacht habe?

Grüße Uli

PS: Ich habe vage in Erinnerung, dass ich das Problem schonmal hatte, 
und da irgendwas mit der Slave-Select-Line war. Irgendwas mit zu langsam 
oder zu schnell oder so, aber da bin ich mir nicht sicher und durch 
rumprobieren hab ichs net besser hinbekommen als so fehlerhaft mit 
Schlieren
Oder war es irgendwas mit der Spannungsversorgung, dass die Spannung 
noch nicht sauber genug war? :-/ Ich hab jedenfalls testweise auch 
bereits delays von bis zu 1s eigenstellt vor dem Iniitialisieren des 
Displays und danach vor dem ersten beschreiben, aber das hat auch nicht 
geholfen

von Vladimir (Gast)


Lesenswert?

Dear Hagen Reddmann!
Thank you very much for great font editor (font.exe) and picture 
converter (convert.exe) program!
They are very useful for me.

Now I`am changed the display to one with the resolution of 320x240 
pixels, but the picture converting utility does not allow me to work 
with this new resolution properly because of its restriction of 176x132 
pixels maximum :(

Would you be so kind to change this restriction to 320 x 240 pixels 
instead?

Thanks in advance :)

von Hagen (Gast)


Angehängte Dateien:

Lesenswert?

here is it, regards Hagen

von Vladimir (Gast)


Lesenswert?

Thank you very much!

von Vladimir (Gast)


Lesenswert?

Hagen schrieb:
> here is it, regards Hagen

There is a bug in the modified converter - saved image (436 x 249 
original, must be 320 x 182 after conversion) has wrong "width" 
parameter (in the header) - 64 (instead of 320)...

.png images are not supported anymore?

von Hagen (Gast)


Angehängte Dateien:

Lesenswert?

- .png again supported
- bug removed

Please remember needed changes in binary data format. First both bytes, 
wich are width and height in the old format, must be changed to word, 
eg. two bytes per value. This is important if you use my compessed data 
format and export into header files.
Next two weeks i'm on tour, thus you have to wait some time for a 
answer.

Regards, Hagen

von Vladimir (Gast)


Lesenswert?

Hagen schrieb:
> - .png again supported
> - bug removed

Thanks, it seems now all works fine!

Just one last thing - your old converter has the "info text" - a text 
lines below each picture window with its bit depth and resolution 
information.
This text disappears in the new version.

Possibly, the text is still in place, just being hidden below oversized 
"picture windows"?

von clonePhone82 (Gast)


Lesenswert?

Wäre es möglich eine Version zu erstellen bei der man die resolution 
einstellen kann?. Ich bräuchte 128x64.

Danke im Voraus

von Thomas H. (supergrobi)


Angehängte Dateien:

Lesenswert?

hier mal eine Umsetzung für MSP430 mit Hardware SPI für das LPH8836

gruß
Thomas

von marcel (Gast)


Lesenswert?

hallo ich wolte mal fragen ob dess display auch mit einem atem 88 
angesteuert waerden kann oder nur mit den atem 126

von Mike (Gast)


Lesenswert?

Was ist ein atem?
Ist das sowas wie ein Mega oder Pic oder sowas?

von marcel (Gast)


Lesenswert?

entschuldigung ich meiente den atmega88 ob mann dann nemen kann weil ich 
keinen atmega128 löten kann (kontakte zu klein)

von marcel (Gast)


Lesenswert?

kann man den jetzt dass display mit einem atmel88 ansteuern

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

das display funktioniert über SPI.
also wenn der atmega88 spi hat sollte das möglich sein

von marcel (Gast)


Lesenswert?

ne leider nicht aber wie kann ich den den löten

von marcel (Gast)


Lesenswert?

also den 182

von Marc Seiffert (Gast)


Lesenswert?

marcel du solltest definitiv an der genauigkeit deiner Texte arbeiten !

du kannst das dieplay mit nem atmel mega88 ansteuern, ja, allerdings ist 
der schon arg klein, große sprünge werden die nicht möglich sein

(ich weis dass ich an meiner rechtschreibung arbeiten könnte, ja....)

von Stefan Hibuk (Gast)


Lesenswert?

Habe gerade voller Hoffnung mein Paket von Ebay aufgemacht und was 
musste ich feststellen, anstelle der versprochenen Modellreihe P03 habe 
ich P00 bekommen.

Weiß einer von euch ob diese beiden Modellserien den selben Controller 
benutzen ? ;)


Vielen Lieben Dank

Stefan Hibuk

von Marcel H. (heier1213)


Lesenswert?

Hallo
Leider weis ich auf deine frage keine Antwort
aber ich wolte fragen ob es möglichist ein s/w
Kamera modul von Conrad (http://www.conrad.de/ce/de/product/150001)
an das disply L2F50xxx anzuschließen?

von Marcel H. (heier1213)


Lesenswert?

Was ist los keine antwort????

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Klick mal auf deinen Link, der geht nicht.
Und prinzipiell würde ich sagen, dass das nicht geht, es sei denn, die 
Kamera unterstützt explizit das Display, was zu 99,999% nicht der Fall 
sein wird. Von daher müsstest du die Signale der Kamera konvertieren und 
dann an das Display senden, bräuchtest also etwas Hardware, nur 
verdrahten reicht nicht.

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Naja. Du hast ein Kameramodul(*). Du hast ein Display.

Wenn du da geeignete Logik zwischen baust, geht das bestimmt irgendwie. 
Eine mechanische Verbindung funktioniert mit genügend Heißkleber.


Gruß
Lasse

(*) was für eins auch immer, der Link zu Conrad funktioniert nicht.

von Marcel H. (heier1213)


Lesenswert?

entschuldigung mit den link.
hier ist er noch mal und hoffendlich klapt er:
http://www.conrad.de/ce/de/product/150001/

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Also direkt miteinander verbinden geht hier gar nicht. Und mit 
"einfacher" Logik dürfte das auch nichts werden.
Hab ich zwar nicht so genau damit beschäftigt, aber das dürfte eher in 
die Richtung CPLD/FPGA gehen, evtl. auch Atmega, aber dann 
wahrscheinlich nur eine geringe Bildrate...

von Torsten G. (wawibu)


Lesenswert?

Auch wenn es ggf nicht ganz hier hingehört:
Da das LS020... zwischenzeitlich nicht zu bekommen war - jetzt gibt es 
das wohl wieder in der Bucht -, was wäre eine Alternative?
Starte gerade mit einem neuen Projekt und da dann auf ein totes Pferd 
setzen ist auch nicht die beste Wahl.

Gibt es ein Display, das eine Alternative zum LS020... darstellt?

Danke,
Torsten

von Marcel H. (heier1213)


Lesenswert?

Das mit dem LS020 ist in Ordnung auch wenn es nur eine langsame 
darstellung ist. Hat den jemand mal ein schaltplan und ein programm.
Das am ende ein Display mit ein eingang für die kamera rauskommt.

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Marcel Heier schrieb:
> Hat den jemand mal ein schaltplan und ein programm.
> Das am ende ein Display mit ein eingang für die kamera rauskommt.

Ich glaube, du unterschätzt da etwas den Aufwand einer solchen 
Schaltung, das ist nicht gerade eine 0815-Standard-Schaltung, sondern 
eher was anspruchsvolleres...

Also falls einer sowas haben sollte, dann hab ich morgen einen 6er im 
Lotto^^

von klabusterbaer (Gast)


Lesenswert?

Hallo an Alle hier in diesem Forum,
erst mal möchte ich danke für die tolle glcdLib sagen.

kann es sein das ich etwas falsch gemacht habe, oder habe ich ein 
kleinen Fehler entdeckt?
Ich hoffe das ich keine Diskussion dazu übersehen habe.
Habe das LS020 an einem atmega128. mir ist aufgefallen, das scheinbar 
die erste zeile und die erste spalte des display nicht benutzt werden 
wenn mann ein glcdRect definiert oder den Screen löscht.
ich hänge hier mal die test.c mit dran so sieht man schön was ich meine.
1
#include <inttypes.h>
2
#include "../glcd/glcd.h"
3
#include "../glcd/lfsr.h"
4
#include "../font/mein.h"
5
#include "../font/mein1.h"
6
#include "../font/f9x14.h"
7
#include "../font/f15x22.h"
8
#include "../font/f8x11.h"
9
10
void glcdPrintCenter(glcdRect_t r, char *text, uint8_t InFlashStored){
11
  r.X1 += (r.X2 - r.X1 - glcdCharsWidth(text,InFlashStored)) / 2;
12
  r.Y1 += (r.Y2 - r.Y1 - glcd_FontHeight) / 2;
13
  glcdMoveTo(r.X1, r.Y1);
14
  glcdPrint(text, InFlashStored);
15
}
16
17
void demoScreen(void)
18
{
19
 glcdRect_t r; 
20
 glcdSetBkColor(BLUE);
21
 glcdRectangle(0,0,SCREEN_WIDTH,SCREEN_HEIGHT);
22
 glcdSetFgColor(MAGENTA);
23
 glcdLine(0,0,0,50);
24
 glcdLine(0,0,50,0);
25
 
26
}
27
28
int main(void) {
29
#define cnt 1
30
31
#ifndef USE_AUTOINIT
32
    glcdDisplayInit();
33
#endif
34
35
    glcdClearScreen(1);
36
//    glcdDisplayOn();
37
38
    demoScreen();
39
40
    while (1) {
41
    }
42
}

mfg der klabusterbaer

von Matus (Gast)


Lesenswert?

hallo, i want datasheet for my LCD L2F50126. I want to use it in my 
software with PIC uC. I see some documents, but nowhere i find 
information about this type of display. You can write email to me...in 
future if i start writing program for display i will be have some 
questions. Thanks in advance.

von Matthias (Gast)


Lesenswert?

Hallo!

Erstmal danke an alle für dieses Forum, damit habe auch ich
das LS020 zum laufen gebracht...
aber hat denn noch jemand eine Bezugsquelle für das Display?
Ebay und diverse Shops sind scheinbar leergekauft.

MfG,
Matthias

von Torsten G. (wawibu)


Lesenswert?

Matthias schrieb:
> Hallo!
>
> Erstmal danke an alle für dieses Forum, damit habe auch ich
> das LS020 zum laufen gebracht...
> aber hat denn noch jemand eine Bezugsquelle für das Display?
> Ebay und diverse Shops sind scheinbar leergekauft.

hatte ich hier >> 
Beitrag "Re: The Siemens S65 132x176, 65536 color display with AVR"
auch schon mal gefragt.

Bin derzeit auf der Suche nach einer preislichen Alternative. Glaube das 
MI0283ST könnte eine Alternative sein. Habe es aber noch nirgendwo 
bestellbar gesehen.

Grüße,
Torsten

von ARV (Gast)


Lesenswert?

Font editor generates invalid *. h-file. Imports of Cyrillic fonts is 
successful in the editor, but the output to the display of Cyrillic 
characters do not work: only empty squares pechatyutsya!
Why?
P.S. Sorry for my English (Google-translate)

von ARV (Gast)


Lesenswert?

Sorry, typing error, sould be: "...only empty squares are printed!"

von Matthias L. (mcl024)


Lesenswert?

Torsten Giese schrieb:
> Bin derzeit auf der Suche nach einer preislichen Alternative. Glaube das
> MI0283ST könnte eine Alternative sein. Habe es aber noch nirgendwo
> bestellbar gesehen.


und schon was gefunden?

von Torsten G. (wawibu)


Lesenswert?

Matthias Laubnitz schrieb:
> und schon was gefunden?

Das MI0283ST liegt nun hier schon eine Weile rum - komme im Moment 
einfach nicht dazu. Mal sehen wann ich die Zeit dazu finde. Brauche 
allerdings auch noch eine Bezugsquelle für die passende Buchsenleiste. 
Ggf würde ich im ersten Step dazu auf das Board von Watterott 
zurückgreifen.
>> 
http://www.watterott.com/de/MI0283QT-2-Adapter-without-LCD?xe5e2d=g23ri7m3hbc2tucoahffbsgos2

Ist im Moment aber auch nicht zu bekommen :)

von Lasse S. (cowz) Benutzerseite


Lesenswert?

Was für ne Buchsenleiste brauchst du denn da? Das Kabel vom Display kann 
direkt aufgelötet werden.

von Sven T. (svent)


Lesenswert?

Hallo zusammen,
gibts das Display eigentlich noch irgendwo ?
Ich bräuchte 5 Stück.
Keiner mehr welche rumliegen ?

Sven

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Ich habe ein merkwürdiges Problem mit einem LPH88xx-Display.

Es funktioniert halbwegs, ich kann Texte, einzelne Pixel setzen usw.

Das Problem ist, dass der Kontrast sehr schlecht ist. Sobald ich das 
Display initialisiere, aber mit keiner Farbe Fülle, wird das komplette 
Display Dunkelgrau bis Schwarz über ca. 1-2 Sekunden immer dunkler.

Egal, mit welcher Farbe ich fülle, es wird immer dunkelgrau-schwarz.

Wenn ich es gar nicht initialisiere und auch sonst nichts mache, nur 
Power, dann zeigt es mir random-Pixel über das gesamte Display an.

Hat das schonmal jemand gesehen und weiss wo der Fehler liegt? Das 
Display funktioniert 1A, wenn ich es zurück in mein S65 stecke.

von Frank P. (mauz)


Lesenswert?

Falls es noch jemanden interessiert, ich habe mal mit einem LA die 
Endsequenzen bei einem M65 mit LS020 aufgenommen:
1
-488,142 ms  0xef00
2
-488,132 ms  0x7e04
3
  
4
-428,632 ms  0xefb0
5
-428,623 ms  0x5a48
6
-428,614 ms  0xef00
7
-428,605 ms  0x7f01
8
  
9
-368,655 ms  0xefb0
10
-368,645 ms  0x64ff
11
-368,636 ms  0x6500
12
-368,628 ms  0xef00
13
-368,619 ms  0x7f01
14
  
15
-308,660 ms  0xe262
16
  
17
-216,353 ms  0xe202
18
  
19
-156,353 ms  0xefb0
20
-156,344 ms  0xbc02
21
-156,335 ms  0xef00
22
-156,325 ms  0x7f01
23
  
24
-137,892 ms  0xe200
25
  
26
-119,433 ms  0x8000
27
-119,423 ms  0xe204
28
  
29
-100,970 ms  0xe200
30
  
31
-82,508 ms  0xe100
32
  
33
-64,046 ms  0xefb0
34
-64,037 ms  0xbc00
35
-64,028 ms  0xef00
36
-64,019 ms  0x7f01
37
  
38
-4,027 ms    /RESET → low
39
  
40
0,000 ms    Vdd → low

Dies ist komplett alles nach den letzten Daten.
Was davon wirklich zum Abschalten gehört habe ich noch nicht weiter 
untersucht.
Vielleicht kann es ja einer brauchen.
frank

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
Noch kein Account? Hier anmelden.