mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik unbekanntes Display (16x2 / 80 Spalten?) ersetzen


Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,
Ich muß ein LCD Display mit 2x16 Zeichen (5x8 dots) ersetzen.
Soweit so gut.Es hat einen Standart-16-poligen Anschluß.
Schließe ich ein HD44780 kompatibles an habe ich nur die erste Zeile.
Bei genauerer Untersuchung habe ich gemerkt , daß das alte Display wie 
das neue 16 Zeilen zur Ansteuerung hat aber das alte hat 80 ! Spalten.
Das neue nur 40 , weil die ja über alle 16 Zeilen gehen und nicht nur 
über 8 wie beim alten. Gibt es sowas noch neu, oder ist das eine Frage 
der Initialisierung ? Sieht für mich so aus , als ob das alte Display 
als eine lange Reihe betrieben wird .Kann das sein ? Alles lesen bei 
Sprut hat mich nicht weitergebracht. Da braucht man wohl etwas 
Kampferfahrung .
Ich hoffe jemand kennt sowas...

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

Bewertung
0 lesenswert
nicht lesenswert
Wolfgang Seiler wrote:
> Schließe ich ein HD44780 kompatibles an habe ich nur die erste Zeile.

Was heißt nur die erste Zeile: Ist die zweite Zeile komplett dunkel 
(wird also nichtmal gescannt), oder erscheinen da nur keine Zeichen?

> Bei genauerer Untersuchung habe ich gemerkt , daß das alte Display wie
> das neue 16 Zeilen zur Ansteuerung hat aber das alte hat 80 ! Spalten.

Die 16 Zeilen sind da, weil jede Textzeile 8 Pixelzeilen hat. Die 80 
kommen durch 16x5. Soweit ist alles klar.

> Das neue nur 40 , weil die ja über alle 16 Zeilen gehen und nicht nur
> über 8 wie beim alten.

Das verstehe ich jetzt nicht. Wie kann das neue Display nur 40 Spalten 
haben? Bei 16 Zeilen wäre dies ein 2x8 LCD (2x8, 8x5)

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigung , alles mal 2 natürlich , also 160 Spalten...
Die 2. Reihe blebt wie tot. nicht einmal grau .
Die erste Reihe zeigt korrekt an mit etwas grau ,ist aber 
Kontrasteinstellungsbedingt.

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

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich dich also richtig verstehe, dann ist das alte Display 
elektrisch als 1x32 geschaltet, es werden also nur 8 Zeilen angesteuert?

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So habe ich das bisher gedeutet. Allerdings habe ich soetwas noch nicht 
neu gesehen.

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muß mich korrigieren , es hat auch 16 Zeilen.

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

Bewertung
0 lesenswert
nicht lesenswert
Du könntest mal ein 2x40 oder 4x20 LCD ausprobieren. Wenn da der Text 
komplett in der 1. Zeile (bzw. in der 1. und 3. beim 4x20) steht, dann 
ist es wirklich ein 1x32.
Gesehen habe ich sowas auch noch nie, nur umgekehrt, (also 1x16 LCDs 
sind meist als 2x8 geschaltet, da die zusätzliche Spaltentreiber 
einspart, da der 44780 8 Zeichen und 2 Zeilen direkt ansteuern kann).
Die Ansteuerung macht in der Hinsicht Sinn, dass das LCD nur mit 1/8 Mux 
läuft und daher der Kontrast besser ist und das LCD weniger Spannung 
benötigt. Das LCD dürfte dann irgendwas kundenspezifisches gewesen sein.

Es könnte aber auch sein, dass in der Software etwas gepfuscht wurde, 
und diese daher nicht kompatibel zu neueren Displays ist, da z.B. das 
Timing zu knapp gewählt wurde. Dann würde das Display nicht korrekt 
initialisiert werden, und würde im 1 Zeilen Modus bleiben.

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das vermute ich auch . Das heißt ich werde keine einfache Lösung für das 
Problem finden. Ich hatte gehofft , das Standartdisplays auch diesen 
Modus durch eine Initialisierung verstehen.
Das würde ja bedeuten, daß ich die Daten abfangen und umrechnen lassen 
muß.
Sieht nach viel Arbeit aus...
Vielen Dank für die fachliche Unterstützung.

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

Bewertung
0 lesenswert
nicht lesenswert
Ich vermute mal, auf dem alten Display ist ein original HD44780 drauf?
Falls ja, dann schließe doch mal ein anderes 2x16 LCD mit original 44780 
an, das sollte dann eigentlich funktionieren (oder kauf dir eines, 
Pollin Best.Nr. 120 060 sollte einen echten 44780 drauf haben, so 
vergammelt wie das Datenblatt aussieht, ist das Display nämlich schon 
etwas älter).
Alternativ übertakte mal den Controller: Auf dem Display gibt es fast 
immer ein Widerstand mit rund 100k (oft 91k). Setz dafür z.B. mal 60-70k 
ein, dann läuft der Controller schneller.
Ist zwar keine perfekte Lösung, aber besser da irgendwas dazwischen zu 
hängen.

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann ich nicht mit Gewißheit sagen, Ist ja direkt gebondet und 
schwarz vergossen. Auf der Platine sind 4 Chips. Einer dürfte der 
Spannungswandler wegen hohem Temperaturbereichs sein. Daraus habe ich 
entnommen 1 Controller und zwei zusätzliche Displaytreiber. Alle in Form 
schwarzer runder "Kleckse".
Ich kann das Display mit einem PIC 16F84 einzeilig ansteuern mit dem 
selben Programm das für den 44780 gedacht ist. Daher die Annahme es sei 
kompatibel.
Aber ich habe auch schon von Timingproblemen gelesen.
Haben Sie eine Idee wie ich es in der Entwicklungsumgebung mit dem PIC 
noch testen könnte ?

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

Bewertung
0 lesenswert
nicht lesenswert
Man könnte in der Software das Timing verschärfen, aber das bringt nicht 
allzuviel, da man nicht weiß, wo das Problem bei der anderen Software 
liegt.
Ich würde den Widerstand testweise verkleinern, und schauen ob es geht. 
Wenn es damit läuft, dann kann man sicher sagen, dass es am Timing 
liegt: Die alten 44780 waren nämlich sehr viel besser als die 
Toleranzangaben im Datenblatt. Die Nachbauten nutzen den Toleranzbereich 
aus, daher kann es bei neueren Displays Probleme geben.

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann teste ich das wie empfohlen und melde mich mit dem Ergebnis zurück.
Das wird dann erst Montag gehen .
Vielen Dank für die sehr schnelle Hilfe und noch einen angenehmen Abend.

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das alte Display ist definitiv ein 1x32 !
Ich habe mal mit dem PIC eine lange Ausgabe programmiert, länger als 16 
Zeichen und dann geht es nahtlos ohne Verluste auf der 2. Reihe weiter.
Dann ist natürlich auch die Initialisierung nur für eine Reihe.
Dadurch ist das Standart 2x16 in der 2. Reihe ohne Funktion.
Welche Möglichkeiten habe ich so ein Teil zu ersetzen ?
Ich kann das Programm des steuernden Controllers nicht beeinflussen ist 
maskenprogrammiert ...
Nur die Initialisierung beeinflussen reicht ja wohl nicht , da die 
Adressierung ja unterschiedlich sein wird für die 2. Reihe.

Autor: Klaus2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...daten loggen, umrechnen neu ausgeben. quasi mit einem uC "dazwischen" 
oder einem "virtuellen 1x32 display marke eigenbau" - wenn sich das 
lohnt.

Klaus.

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das habe ich befürchtet. Ich habe bei 
http://www.electronic-engineering.ch ein Projekt von Herrn Peter Luethi 
gesehen welches PC-Tataturcode in Morsezeichen mit LCD Ausgabe umsetzt 
und ausgibt. Kann ich soetwas als Basis nehmen und ändern ? So wie ich 
das sehe würde ein 16F84 ausreichen ?
Für mich ist die Sache schon etwas wert. Ich habe zwar schon kleine 
Sachen mit PIC und Display gemacht, aber hier bin ich erstmal 
überfordert...

Autor: Klaus2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du musst dir quasi ein virtuelles display (1x32) als strings aufbauen, 
die vollschreiben und von einer anderen routine wieder lesen und 
"re-interpretieren lassen" und ausgeben. da muss man sich erstmal 
hinsetzen undmklar amchen, was da genau passiert und WAS man überhaupt 
ändern muss - problematisch ist ja quasi nur das "offset" deines neuen 
2x16, denke ich. daher das "virtuelle display" als zwischenspeicher. 
interessant wäre auch zu wissen, wie schnell die daten geschrieben 
werden - das hat einflüsse auf die softwarestruktur und evtl den 
prozessortyp.

im schlimmsten fall muss man erstmal die daten des 1x32 "sniffen" und 
mit dessen datenblatt reverse engineeren, bevor man weiß, wie man es 
umstricken kann.

alternative: ein 1x32 finden - ich bin mir sicher, das gibts noch 
irgendwo!

Klaus.

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke auch, das der PIC das neue Display allein ansteuern sollte.
Die Anzeige ist nicht zeitkritisch. Also eine Verzögerung beim Umstzen 
wäre nicht tragisch. Da ich das alte Display (1x32)mit meinen Standart 
44780 Routinen testen kann meine ich, daß das Timing auch Standart sein 
sollte .Da ein neues 44780 kompatibles Display eingesetzt die erste 
Zeile richtig darstellt ,müßte auch die Datenstruktur und die 
Adressierung dem einzeiligem Standart entsprechen.

Autor: Klaus2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genau, stimmt ja! dann wird es recht einfach und du musst nur die 
adressierung der zweiten zeile "zur laufzeit" ändern - kann aber sein, 
dass das komfortabler als mit dem "virtuellen display" geht.

Klaus.

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das heißt also, Daten rein und Adressen vergleichen und ab einem 
bestimmten Wert der der 2. Reihe beim alten Display entspricht den 
Betrag dazu addieren, der dem  Wert der 2. Reihe auf dem neuen 
entspricht.
Ich glaube ich muß mir nochmal detailiert die LCD Ansteuerung ansehen.

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

Bewertung
0 lesenswert
nicht lesenswert
Theoretisch geht das ganze. Je nachdem wie das LCD angesteuert wird (mit 
Busy, feste Wartezeiten usw.) kann es aber relativ viel Hardwareaufwand 
bedeuten. Da die Zeit in der die Daten anstehen relativ gering ist, ist 
dazu ein Latch erforderlich, das die Daten/Befehle zwischenspeichert, 
Busy signalisiert (falls notwendig) und den µC informiert, dass neue 
Daten empfangen wurden. Der µC verarbeitet dann die Daten, sendet die 
Daten umgewandelt an das neue LCD weiter und gibt dann Busy wieder frei.
Noch komplizierter ist es, wenn die Software auch Daten aus dem LCD 
zurückliest. Dann kommen etliche HCMOS ICs für die Steuerlogik zusammen.

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich ahne schon daß das so nicht geht. Zu allem Überfluß ist der Bus auch 
noch mit einer Tastaturmatrix gemultiplext. Eigentlich wollte ich die 
Daten mit einem parallel/seriell Wandler (74HC165) abgreifen der dann 
sein enable bekommt wenn der Controller das write zum display (alt) 
sendet.So müßten nur die anliegenden 8 Bit reinkommen oder ?

Autor: Klaus2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...naja, ist es denn so ein problem für einen prozessor, die daten 
schnell genug verarbeiten und weitergeben zu können, ohne was zu 
"verlieren"? einlesen und speichern geht ja recht fix, umrechnen und 
ausgeben halt "wenn zeit ist". mit dem "write" des alten signals einen 
interrupt auslösen.

Klaus.

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

Bewertung
0 lesenswert
nicht lesenswert
Beim Daten Einlesen muss man 2 Sachen unterscheiden:
Die Zeit zwischen 2 Datenpaketen und die Zeit wie lange das Enable 
Signal ansteht.
Die Zeit zwischen 2 Daten liegt bei etwa 37µs, denn solange braucht der 
44780 zum Verarbeiten der Daten. Das sollte eigentlich reichen.
Viel kritischer ist erstmal das Speichern der Daten:
Das Enable Signale muss mindestens 230ns lang sein. Es ist also durchaus 
möglich, dass die Daten nur für <500ns anstehen, nachdem Enable aktiv 
wurde.
Sagen wir mal der µC braucht 5 Takte um die Daten einzulesen, dann darf 
ein Takt nicht länger als 100ns dauern. Das wäre bei einem PIC eine 
Taktfrequenz von mindestens 40MHz, also ziemlich knapp.
Daher würde ich die Daten in ein Latch schreiben, danach hat man die 
vollen 37µs Zeit um die Daten aus diesem zu lesen und zu verarbeiten.
Wenn das LCD im 4bit Modus läuft, wird das ganze natürlich nochmal viel 
komplizierter, da 2 Packete direkt hintereinander gesendet werden.

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das leuchtet ein. Ist also die Idee mit dem 74HC165 gar nicht so dumm. 
Das alte Display läuft im 8Bit Modus.

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach längerem Lesen habe ich erstmal verstanden , warum ein Latch her 
muß.
Der PIC braucht also länger zum Einlesen der 8 Bit als das Enable 
anliegt.
Das Latch speichert also die anliegenden Signale zwischen und ich habe 
die 37µs Zeit bis zum nächstan Zeichen um die Daten zu erfassen.
Also eher ein 74HC589 oder ? Ich muß doch aber nach Ablauf des enable 
auf open Collector stellen, weil in der Zeit in der der PIC erfasst , 
vorn schon wieder die Tastaturabfrage läuft . Dann müßte es aber machbar 
sein , rein vom timing. Ich weiß alles Anfängerfragen...
Dann habe ich nochmal mich mit der Adressierung der Displays befasst.
Bei meinem alten endet die erste Reihe mit 0Fh und geht nahtlos in der 
zweiten Reihe weiter also mit 10h ?
Die neuen Standart 16x2 fangen in der 2. Reihe mit 40h an.
Ich denke immer noch darüber nach , ob es nicht machbar ist, die 
empfangenen Daten nur dahingehend auszuwerten, welche Zeichen ab 40h 
angesteuert werden und dann die Differenz bis 10h abzuziehen .
Oder läuft die Ansteuerung nicht so einfach wie ich mir das vorstelle?

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bau ein 4x16 ein, dann sollte der Text in der 1. und 3. Zeile stehen.

Gruß
Roland

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider ist dafür kein Platz. Wäre ja auch zu einfach...
Aber interessant zu wissen , heißt also , daß das dann eigentlich auch 
nur 2 Reihen mit je 32 Zeichen sind...

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

Bewertung
0 lesenswert
nicht lesenswert
Wolfgang Seiler wrote:
> Das Latch speichert also die anliegenden Signale zwischen und ich habe
> die 37µs Zeit bis zum nächstan Zeichen um die Daten zu erfassen.
> Also eher ein 74HC589 oder

Ja. Vorausgesetzt, der Programmierer hat es sich einfach gemacht und 
benutzt nicht das Busy (daran zu erkennen, dass RW fest auf Masse 
liegt).
Wenn nicht, sind die 37µs variabel, da der Controller auf das Busy 
wartet.

> Ich muß doch aber nach Ablauf des enable
> auf open Collector stellen, weil in der Zeit in der der PIC erfasst ,
> vorn schon wieder die Tastaturabfrage läuft .

Enable ist für dich immer ein Eingang, (genauso wie Enable für das LCD 
auch ein Eingang ist). Enable sollte aber mit der Tastaturabfrage wenig 
zu tun haben.

> Dann habe ich nochmal mich mit der Adressierung der Displays befasst.
> Bei meinem alten endet die erste Reihe mit 0Fh und geht nahtlos in der
> zweiten Reihe weiter also mit 10h ?
> Die neuen Standart 16x2 fangen in der 2. Reihe mit 40h an.
> Ich denke immer noch darüber nach , ob es nicht machbar ist, die
> empfangenen Daten nur dahingehend auszuwerten, welche Zeichen ab 40h
> angesteuert werden und dann die Differenz bis 10h abzuziehen .

Eigentlich ist das ganz einfach:
Der 44780 kann 2 Zeilen mit je 40 Zeichen ansteuern. Die erste Zeile 
beginnt daher bei 0, die zweite bei 64 (=0x40).
Dein Display ist als 1x32 organisiert, normale 2x16 als 2x16.
4x20 sind von der Ansteuerung und vom Speicher her gesehen 2x40.

Autor: *.* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur das Glasteil auswechseln geht nicht?

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

Bewertung
0 lesenswert
nicht lesenswert
Nein. Glas+Platine muss getauscht werden, da beim 32x1 doppelt soviele 
Spaltentreiber vorhanden sind.

Autor: Wolfgang Seiler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem enable ist schon klar ,ich meinte das ich das Latch nur so 
kurz mit der Datenübernahme beschäftige wie der Originalcontroller 
(80C515)das alte Display beschreiben würde. Danach muß ich die 
Datenleitungen wieder freigeben , damit das Tastaturmultiplexing 
funktioniert. Das Auslesen des Latch ist dann nicht mehr an dieses 
Timing gebunden und kann innerhalb der 37µs "in Ruhe" erfolgen. Deshalb 
auch eines mit Tristate Ausgängen.
RW ist nicht auf Masse .Ich gebe das Busy dann mit dem PIC zurück und 
der 80C515 wartet bis ich die neuen Daten verarbeitet habe und das Latch 
wieder frei ist . Ich muß mich mal für die Gedult , die unglaublich 
schnelle Antwortzeit und Sachkenntnis bedanken.

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.