www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD Grafikdisplay


Autor: Dirk L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Habe ein ALPS NEA02040AA.
Auch LSSDB3011A steht drauf.
Es sind 3 OKI M5260 und ein OKI 5298A drauf (Steuerung)
Hat ihrgendjemand Daten zur Anschaltung ??

plz mail me

Dirk

Autor: Torsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub ich hab das selbe. Kann dir morgen das Datenblatt schicken.

MfG Torsten

Autor: Dirk L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wäre cool

was machst du damit ?

Autor: Torsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähm, ich habs geschenkt bekommen... Und wollt ein bisschen rumspielen.
Hab aber leider noch nix hinbekommen, bzw. überhaupt probiert. Habs
leider in der Firma, deshalb erst morgen früh.

MfG Torsten

Autor: Dirk Broßwick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe einige solcher displays ... hierbei handelt es sich um passive
displays die keinen eigenen controller haben. man muß sich um die
ansteuerung selbst kümmern, sprich das horizontalsignal, das
vertikalsignal, den pixeltakt, die pixeldaten und das umschalten der
lcd-spannung selber machen. ich habe für einen TS80c32X2 einen
lauffähigen code geschrieben der im x2 modus bei 22Mhz etwa 50% der
rechnenzeit frist. hier die pinbelegung:

1. Contrast (0-18V)
2. DI (shiftdata für X-lines)
3. CP (clockline für DI-shifting)
4. LOAD (latch out DI-data)
5. DI (shiftdata für Y-Line)
6. DF (controlliert das refresh der LCD-spannung)
7. +5V
8. GND

wenn intresse besteht kann ich mal den sourcecode schicken !

CA Dirk

Autor: Torsten (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch das Datenblatt...

An dem Code hätte ich auch Interesse!

MfG Torsten

Autor: Dirk L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo den Code nehm ich natürlich auch gern. mit allem was noch zu sammeln
ist.

THX

Dirk

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe auch Interesse an dem Code.
Könntest Du den bitte hier im Forum als Anhang posten?
Danke.

Gruß
Michael

Autor: Dirk Broßwick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hiho ...

ich habe gerade mal nach den code geschaut, ich kann ihn hier alleine
nicht posten sonst funktioniert er nicht mehr. Er ist leider in einen
µkernel für den TS80c32x2 gepackt, der auch gleich alle funktionen des
Controllers als Systemaufrufe hat, da wären:

- RS232 Ringbuffer
- I2C Routinen
- PWM erzeuger
- LCD-Bildaufbau + Basic GFX-routinen (Punkt
setzen/löschen(240*64Pixel), Zeichen ausgeben(60*8 Zeichen), Fenster
Zeichnen)

Wenn interesse besteht kann ich den µkernbel mal posten, ich werde aber
noch versuchen den code für das LCD zu extrahieren am heutigen abend.

CA Dirk

Autor: Dirk Broßwick (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
so ... hier die reinen GFX-routinen ... hoffentlich es ist lesbar (habst
schnell mal eben extrahiert), der wichtigste teil ist die
Interruptroutine, dort findet der bildaufbau statt. es werden 2 Kbyte
XRAM benötigt.

CA

Autor: Torsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähm, kann das mal jemand in "atmel" c übersetzen??? :-)

Naja, das Prinzip wird ja deutlich.

Thx

Torsten

Autor: Dirk Broßwick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

wenn du noch ein bischen warten tust, ich will dämnachst das ganze für
den atmega64 schreiben, aber in asm. und versuche die zeitkritischen
sachen in inline-asm, in c wird es meist etwas länger weil das handling
des carrys schwerer ist als in asm, der rest kann dann komfortabel in c
gecodet werden.

CA dirk

Autor: Torsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wäre schön, da wart ich gerne.

MfG Torsten

Autor: Dirk L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich natürlich auch

Autor: Kay I. (imperator)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich hab es in C versucht ... bin gescheitert
dann hab ich versucht, den Assambler von Dirk in C umzusetzen ... 
Display flackert nur und wenn man den Code per Debugger anhält, zeigt 
das Display ein Schachbrett-ähnliches Bild:

########                .
########                .
########                .
########                .
        #################
        #################
        #################
        #################

nach jedem Aufruf von K_shiftline() verschiebt sich die horizontale 
Linie.

[@ Dirk]
Kann es sein, dass Dein Pinning vom dem im Datenblatt abweicht?
-> hab es jedenfalls mit beiden versucht ... :(

Ich habe das komplette Projekt als RAR gepackt - bin für jeden Tip 
dankbar!

Autor: Dirk Broßwick (sharandac)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mich Anfang diesen Jahres mal wieder mit den Displays 
beschäftigt weil ich die beim Aufräumen wiedergefunden haben. Ich habe 
auch C-Code dafür geschrieben, siehe Anfang. Es sind aber noch keine 
Funktionen wie Pixelsetzen oder so eingebaut. Er zeigt einfach nur den 
Grafikspeicher an.
Der Code ist für einen ATmega644 geschrieben. Er erzeugt auch noch ein 
PWM-Signal zum erzeugen der LCD-Spannung. Schau einfach mal rein. Und 
ja, du hast recht, beim Pinning war glaube ich ein Fehler drin gewesen.

CA Dirk

Autor: Kay I. (imperator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
flackert immer noch vor sich hin, ist aber schon mal komplett dunkel

wie ist dieser Port mit dem Display verdrahtet?

wird das noch per HW mit DF oder FRMB ver-xor-t ?
// LCD-Spannung erzeugen am Ausgang OC2a
  PORTD &= ~(1<<PD7);  // clear port
  DDRD |= (1<<PD7);  // set as output
  
  TCCR2A = ( 0<<WGM21 ) | ( 1<<WGM20 ) | ( 1<<COM2A1 );
  TCCR2B = ( 0<<WGM22 ) | ( 1<<CS20 );
  
  TCNT2=0;
  
  OCR2A=43;

Im Datenblatt werden die Signale anders benannt - stimmt diese Zuordnung 
mit Deinem Code?

DI_X  D    - Input Data
CP_X  CLP  - shift Clock of Display
LOAD  LIP  - Latch impulse of display and shift clock for common driver
DI_Y  FRP  - Frame pulse forcommon driver
DF    FRMB - Switch signal to convert LCD drive waveform into AC

Welches Puls-Pause-Verhältnis und welche Periodendauer hat Deine PWM?

Autor: Dirk Broßwick (sharandac)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Die PWM ist nur für die Negative LCD-Spannung. Dazu wird aber noch eine 
kleine Schaltung am OC2A-Pin benötig. Anbei die verwendete Schaltung von 
mir. JP4 ist direkt mit dem LCD verbunden.

CA Dirk

Autor: Kay I. (imperator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also erstmal Prima Support!

Danke!


ich hab's jetzt ... hab mal ein anderes (baugleiches) drangehängt und 
siehe da - das Testbild!

Gruß,

Kay

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Dirk: D3 gefällt mir. Und Q3 und IC3 wirkt auf mich etwas doppelt.

Autor: Dirk Broßwick (sharandac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> @Dirk: D3 gefällt mir. Und Q3 und IC3 wirkt auf mich etwas doppelt.

D3 sollte sein. Q3 finde ich nicht, aber ich denke mal du meinst Q2 :-). 
Q2 und IC3 sind da um die negative Spannung für das LCD zu erzeugen. 
Wobei Q2 für das erzeugen einer positiven Spannung zwischen 0 - 14V da 
ist (per PWM an OC2A) und IC3 daraus eine negative Spannung macht.

@Kay

gerne geschehen, ist zwar schon ein echt alter Thread, aber was solls 
:-)

CA Dirk

Autor: Kay I. (imperator)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir mal noch erlaubt, das array zweidimensional zu definieren 
und initialisiere den Video-Buffer so, dass ausgefüllte Dreiecke zu 
sehen sind.

Leider wird die untere Zeile nicht dargestellt und die obere enthält 
irgendwelche komischen Daten?? Anhand Deines Treibers konnte ich nicht 
feststellen warum das so ist - im Datenblatt ist ja erklärt, in welcher 
Reihenfolge die Zeilen getaktet werden... da sind wohl immer Daten und 
Takt (zeilenweise) verschoben. Könnte das ein Grund sein?

Oder habe ich einfach den Video-Buffer falsch initialisiert?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dirk Broßwick schrieb:

> D3 sollte sein.

Jo. Ich finde auch dass sie sein sollte. Unbedingt genau so, auf 
garkeinen Fall anders herum!

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dirk Broßwick schrieb:

> Wobei Q2 für das erzeugen einer positiven Spannung zwischen 0 - 14V da
> ist (per PWM an OC2A) und IC3 daraus eine negative Spannung macht.

Schon klar. Aber erstens frage ich mich, warum du den Schaltwandler 
nicht gleich als Inverter betreibst. Zweitens ob du mal ins Datasheet 
vom ICL7660 reingesehen hast. Weil der offiziell nur 10V abkann.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dirk Broßwick schrieb:

> Wobei Q2 für das erzeugen einer positiven Spannung zwischen 0 - 14V da
> ist (per PWM an OC2A) und IC3 daraus eine negative Spannung macht.

Über die negative Spannung freut sich C1, falls IC3 die 14V überhaupt 
überlebt...

PS: Und wie der Stepup 0V liefern soll ist mir auch ein Rätsel.

So mache ich das immer:
http://www.mikrocontroller.net/attachment/33345/lc...
Da der MC34063 die Spannung selbst regelt, ist die Spannung auch nahezu 
unabhängig von Betriebsspannungs und Lastschwankungen.
Über R1/C1 erzeuge ich per PWM eine Spannung zwischen 0V und Vcc und 
kann damit die Ausgangsspannung um 5V verschieben, also den Kontrast 
anpassen.
Bei -14V reicht für den 34063 sogar der interne Transistor aus, die 
Schaltung wird also nochmals deutlich einfacher.

Autor: Dirk Broßwick (sharandac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benedikt K. schrieb:
> Dirk Broßwick schrieb:
>
>> Wobei Q2 für das erzeugen einer positiven Spannung zwischen 0 - 14V da
>> ist (per PWM an OC2A) und IC3 daraus eine negative Spannung macht.
>
> Über die negative Spannung freut sich C1, falls IC3 die 14V überhaupt
> überlebt...

Die Schaltung war nur ein Hack gewesen mit den Teilen die ich da habe um 
ein bisschen zu Probieren. Hat funktioniert, und ist auch nix in die 
Luft geflogen :-). Außerdem habe habe ich geschrieben das der Stepup bis 
14V kann ... aber das er auch mit 14V läuft habe ich nicht beschrieben. 
Demzufolge ist das schon Okay. Und Stimmt. C1 ist falsch rum drin und D3 
ist falsch herrum.

> PS: Und wie der Stepup 0V liefern soll ist mir auch ein Rätsel.

In dem man die PWM fast auf 100% bringt?

> So mache ich das immer:
> http://www.mikrocontroller.net/attachment/33345/lc...
> Da der MC34063 die Spannung selbst regelt, ist die Spannung auch nahezu
> unabhängig von Betriebsspannungs und Lastschwankungen.
> Über R1/C1 erzeuge ich per PWM eine Spannung zwischen 0V und Vcc und
> kann damit die Ausgangsspannung um 5V verschieben, also den Kontrast
> anpassen.
> Bei -14V reicht für den 34063 sogar der interne Transistor aus, die
> Schaltung wird also nochmals deutlich einfacher.

Klingt interessant, vor allem hat er einen schicken Spannungsbereich.

@A.K.

Weil ich eine per Controller einstellbare negative Spannung über 5V 
haben wollte. Und das der ICL7660 nur 10V abkann ist doch kein Problem. 
Ich habe ja auch geschrieben das ich bis 14V mit dem Stepup erzeugen 
kann, aber den ICL7660 nicht so betreibe. Das war mit den Teilen die 
beste Lösung für mich. Und das D3 falsch herum drin ist kann mal 
passieren, in der Schaltung war er richtig herum eingebaut. Und C3 habe 
ich mal schlichtweg übersehen.

CA Dirk

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dirk Broßwick schrieb:

> Hat funktioniert, und ist auch nix in die
> Luft geflogen :-). Außerdem habe habe ich geschrieben das der Stepup bis
> 14V kann ... aber das er auch mit 14V läuft habe ich nicht beschrieben.

Ich bin immer vorsichtig bei Stepups ohne feste Last: Es reicht bereits 
wenn das LCD mal nicht angeschlossen ist, und die Leerlaufspannung läuft 
am Stepup hoch bis der 7660 die Spannung (mehr oder weniger destruktiv) 
begrenzt. Zumindest eine Z-Diode parallel zur Ausgangsspannung halte ich 
daher für sinnvoll.

>> PS: Und wie der Stepup 0V liefern soll ist mir auch ein Rätsel.
>
> In dem man die PWM fast auf 100% bringt?

Nahezu 100% wäre auch nahezu unendlich hohe Spannung.

Autor: Dirk Broßwick (sharandac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benedikt K. schrieb:
> Dirk Broßwick schrieb:
>
>> Hat funktioniert, und ist auch nix in die
>> Luft geflogen :-). Außerdem habe habe ich geschrieben das der Stepup bis
>> 14V kann ... aber das er auch mit 14V läuft habe ich nicht beschrieben.
>
> Ich bin immer vorsichtig bei Stepups ohne feste Last: Es reicht bereits
> wenn das LCD mal nicht angeschlossen ist, und die Leerlaufspannung läuft
> am Stepup hoch bis der 7660 die Spannung (mehr oder weniger destruktiv)
> begrenzt. Zumindest eine Z-Diode parallel zur Ausgangsspannung halte ich
> daher für sinnvoll.
>
>>> PS: Und wie der Stepup 0V liefern soll ist mir auch ein Rätsel.
>>
>> In dem man die PWM fast auf 100% bringt?
>
> Nahezu 100% wäre auch nahezu unendlich hohe Spannung.

Wahrscheinlich. In der Schaltung ist die Spannung aber zusammengebrochen 
durch den ICL7660. Den höchsten Spannungspegel hatte man erreicht mit 
den Step-Up bei etwa 75% PWM, dort hatte man im Leerlauf ca 13,9V. 
Danach ist die Spannung herunter gegangen bis sie bei ca 99% komplett 
zusammengebrochen ist bis auf 0.25V. Die eigentliche Schaltung die ich 
dafür mal hatte waren zwei ICL7660, der ersten als Verdoppler und den 
zweiten als Inverter. Die Schaltung war von 2003 gewesen. Und da ich die 
Teile noch hatte ... Würde ich heute die Schaltung noch mal neu 
entwickeln, würde ich wahrscheinlich auch ein mc34063 oder ähnlich 
nehmen, obwohl mir das eigentlich schon fast zu viel drumherum ist.

CA Dirk

Autor: Kay I. (imperator)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Muss mich nochmal zu Wort melden ...

@ Dirk:

Hast Du eine Idee, wie man die oberste Zeile des Displays korrekt
anspricht?

hier nochmals der Code:

http://www.mikrocontroller.net/attachment/54204/LCD_alps.c

Autor: Dirk Broßwick (sharandac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kay,

sehe gerade das da wohl ein Fehler im Program steckt. Mach mal in der 
Funktion Update die Abfrage ob if(Line == 0) ist hinter den Aufbau für 
die Zeile. Sonst sind die Daten für die Zeile im Eimer. Kann es jetzt 
aber leider nicht probieren. Habe leider auch gerade nix zu testen da, 
dazu müsste ich erst mal wieder das Board in Betrieb nehmen.

CA Dirk

p.s.: sehe ich das richtig, du hast die Displays auch aus HiCom 
Telefonen geklaut ? :-)

Autor: Kay I. (imperator)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ahja .. genau richtig!

Hier nochmals für alle das gesamte Projekt.

Und hier noch ein paar Begriffe, damit dieser Thread auch von den 
Suchmaschinen gefunden wird:
 /*
 display driver for
 ALPS NEA02040AA
 HCN-111
 94V-0
 LSSDB3011A
 OKI M5260 2369702
 OKI M5298A
 */

p.s.   ... ertappt ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.