@Achim,
Ich akzeptiere, dass du in C programmierst.
Kannst du mir dafür meinen Assembler lassen? Jeder wie er will.
Wenn man keine Hilfestellung leisten kann/will, lässt man in der Regel derartige Kommentare. Zumindest würde ich es so handhaben.
@Siro,
Danke!! Super!
Das ist absolut fein leserlich geschrieben!
Da kann ich mir so einiges raus nehmen.
@wkrug
Hab beim Mega16 leider noch keine Divisionsinstruktion gefunden.
Wird wohl so werden - oder ich finde was im Netz ...
Ich brauche/will keine führenden Nullen.
Danke für den Hinweis.
Sieht danach aus.
Danke jedenfalls für deine ausführlichen Zeilen!
Geändert von HeSt (12.12.2018 um 20:28 Uhr)
Oh sorry Achim,
die Info war natürlich für HeSt und nicht für Dich.
Diese (und ähnliche) Displays sind doch noch in erstaunlich vielen Anwenungen vorhanden,
jedoch meist im privaten Bereich. Sind halt super preiswert und "relativ" einfach zu handhaben.
ich hab die auch schon in verschiedenen Varianten eingesetzt.
Es gibt die ja inzwischen auch schon also OLEDs und mit diversen Beleuchtungsfarben.
Die OLED Version (zumindest die ich hatte) war übrigens "KACKE" wenn man das so sagen darf...
Je nach Pixeldichte verändert sich der Kontrast der anderen Zeichen.
Der Hersteller hatte mir das tatsächlich bestätigt und man arbeite dran....
@HeSt
Ich hoffe Du kommst mit den Informationen zurecht, ansonsten einfach nochmal fragen,
kann Dir dann bestimmt weiter helfen. Wichtig: Die Adressen der einzelnen Zeichen sind NICHT direkt hintereinander abgelegt,
das war Anfangs auch (m)eine Hürde. Die erste Zeile beginnt bei Adresse 0, die zweite bei vielen Displays erst bei 64,
da wundert man sich zunächst...
Du kannst bei vielen Displays dann auch noch eigene Zeichen definieren, hab ich auch schon gemacht.
Viel Erfolg.
Zusatz:
Ich habe die Dinger schon in 3 Sprachen programmiert: EN,DE,FR
neee, in PIC-Assembler, C und in Pascal.
Jedem wie er es mag, zudem ist das ja hier das "Assembler" Forum, also bist Du hier schon ganz richtig.
Siro
Geändert von Siro (12.12.2018 um 19:41 Uhr)
Hi Siro,
die Geschichte mit den Adressen hab ich schon mitbekommen.
Allerdings hab ich (noch) kein Datenblatt zu meinem LCD.
Ich habs beim großen C gekauft. Denke, dass ich dort auch das Datenblatt bekomme.
Die Sache mit den eigenen Zeichen lasse ich mal beiseite.
Erst muss das Ding funktionieren, dann kommen die Spielereien.
Ich hab mittlerweile ein ganzes Sammelsurium an LCD-Beispielprogrammen.
Jeder arbeitet ein bisschen anders. Aber da kann man sich viel raus holen.
Und manche haben den selben Stil wie man selbst.
Auf jeden Fall ist der Stil von Donald Weiman eine feine Sache!
So akkurat und gut dokumentiert hab ich noch kein Programmlisting gesehen.
Da tut man sich leicht, seinen Gedankengang nachzuvollziehen.
Nun hab ich, denke ich, genug Beispiele gesammelt um mein Vorhaben umsetzen zu können.
Mein LCD-Progrämmchen nimmt schön langsam auch Gestalt an, zumal ich jetzt bereits einiges behirnt hab.
Und falls ich mal wieder nicht weiter weiß, darf ich mich wieder melden.
Danke für eure Unterstützung !!!
Gruß Heinz
ps: mir reicht EINE Sprache
Drei Fragen:
1.
Eines hab ich bislang nirgendwo so konkret gefunden und weiß nicht genau:
Der Befehl $20 (RS=0) setzt den Cursor wohin?
An die 1. Stelle des LCD (Zeile 1, Position 1) oder
an die 1. Stelle der Zeile in der sich der Cursor gerade befindet?
2.
Kann ich mit dem Befehl $49 (RS=0) den Cursor direkt auf Zeile 2 Position 9 positionieren?
Zeile 2 Anfang ist bei meinem LCD @$40
3.
Wird dann an die gesetzte (curosr)@ (Position) auch das Zeichen ausgegeben, wenn ich gleich drauf ein Zeichen sende?
[edit]
Was ich auch hinterfragen möchte:
Immer wieder lese ich in diversen Programmlistings, dass bei der Init-Prozedur $30 3x hintereinander mit einem delay von ca. 4mS gesendet werden muss.
Ich hab mittlerweile 3 Datenblätter; aber in keinem ist bei der Init-Prozedur auch nur irgend ein Vermerk mit den 3x$30.
1x genügt offenbar. Die Verarbeitungszeit wird etwas unterschiedlich angegeben. Aber das war's dann.
Frage: ist 3x$30 notwendig? Dann erspart man sich eine Schleife ...
[endedit]
Danke und LG
Geändert von HeSt (13.12.2018 um 14:12 Uhr)
In einem Uralt Datenblatt für den HD44780 Display Controller meine Ich wohl mal sowas gelesen zu haben.Ich hab mittlerweile 3 Datenblätter; aber in keinem ist bei der Init-Prozedur auch nur irgend ein Vermerk mit den 3x$30
Anscheinend haben es die Programmierer so beibehalten, da es anscheinend nicht stört und die Initialisierungsroutine üblicherweise nur einmal aufgerufen wird ( Also während des Betriebs keine Zeitverzögerung ).
In dem EA Datenblatt wird zumindest der "Function Set" für die Umschaltung von 8 auf 4 Bit Modus 3x aufgerufen.
https://cdn-reichelt.de/documents/da...W162-N3LED.pdf
Aber wenn Dein Display das nicht braucht und Du nie einen anderen Typ verwenden willst - Was solls dann.
Deine hex Zahlen setz ich jetzt mal nicht um.
Wenn Du aber den Curser auf die gewünschte Stelle setzt und dann ein Zeichen ausgibst wird dieses Zeichen dort angezeigt.
Wie gesagt, Ich arbeite hier lieber mit Strings und geb dann auf dem Display immer eine komplette Zeile aus.
Das vermeidet dann auch, das Zeichen von der vorherigen Ansicht irgendwo stehen bleiben.
IMHO ist es auch einfacher Zeichen in einem fertigen String zu ändern, als zu Überlegen wo denn noch welches Zeichen zu löschen ist.
Man fügt einfach mal Leerzeichen in den String ein wo der Messwert hin soll und Überschreibt dann die benötigten Stellen mit ASCII Zeichen.
Danach wird der komplette String ans Display gesendet.
Durch auto Inkrement ist dann auch keine weitere Adressangabe nötig.
Lesezeichen