Ist ja auch gut !!
avr_racer verstehts schon![]()
Ist ja auch gut !!
avr_racer verstehts schon![]()
PN
Der Swap dient der Zuordung der richtigen Stelle
1Mio, 100tsder, 10tsder, Tausender, Hunderter, Zehner, Einer.
Das hängt davon ab wie man es betrachtet. Wenn ich rechne möchte ich das Ergebnis als ganzes sehen um evtl Fehler usw zu erkennen und spart Bytes. Somit habe ich eine reine Zahlenroutine nur für die Ausgabe von Zahlen.
Wenn man jeder Ziffer der einzelnen Stellen jeweils ein Byte zuordnet kann man das gern machen um es dann mit $30 zu addieren um es quasi als LCD-Ziffer schon parat und abrufbereit zu haben, erfordert je nach Ergebnis aber eben schonmal bis zu 10byte.
Problem wirds geben wenn man das zu früh macht und evtl mit dem Ergebniss weiter rechnen muss...
Ich spare mir das indem ich dafür eine reine Zahlenroutine habe die dann High/Lowbyte auftrennt und $30 dazu addiert
Nun ich nehme an das ZE als Buchstaben zu betrachten sind und Buchstaben brauchen nicht mehr gewandelt werden.
Mach mal einen Doppelklick auf ein Register, dort hast du jetzt mehrere Möglichkeiten einen Wert einzugeben und in HEX/DEZ/OCT/BIN/TEXT darstellen zu lassen. Also klicke mal TEXT an und gebe Z oder E ein. Dann klickst auf Bin oder HEX oder DEZ, da steht dann der Zahlenwert im jeweiligen Zahlensystem. Mal einen Wert von E oder Z als BIN anzeigen lassen und nix machen
Wechsel zur PDF des LCD. Dort ASCII-Tabelle suchen und mal die UPPER und LOWER 4Bit ansehen und vergleichen nun sollte eigentlich ein EUREKA die Synapsen befeuern![]()
Selbst dein Bildschirm beinhaltet diesen Zeichensatz.
absolut korrekt.
40 als DEZ + $30 = $58 in binär 0101 1000 und sollte eigentlich das X sein
15 als DEZ + $30 = $3F in binär 0011 1111 und sollte eigentlich das ? sein
$40 + $30 = $70 in binär 0111 0000 müsste das p sein
$15 + $30 = $45 in binär 0100 0101 müsste das E sein
Die erste Spalte, also $00 bis $0F, sind die Adressen für eigens zu erstellende Zeichen im CHARAKTER-ROM... Heißt du würdest jetzt im Zeichenvorrat-Ram deine eigenen Zeichen adressieren...
Als Assembler "String" wäre das eine Schleife.
Heißt du könntest diese Zahl im RAM ablegen um die Register frei zu machen somit dann gesichert. Und schreibst dir eine Unterroutine wo du dir die gesicherte Zahl in dein/e Register schreibst, $30 dazu addieren gefolgt von LCD_DATA. Vorher solltest du eine Adresse (00 bis 0F) + $80 für Zeile 1 oder für Zeile 2 ($40 bis $4F) + $80 definieren auf die bzw ab die das LCD mit dem setzen der Zeichen beginnen soll.
1. Adresse auf LCD setzen mit LCD_Command
2. Zeichen/Ziffer laden + bearbeiten
3. Zeichen mit LCD_DATA an LCD senden
4. bei weiteren Zeichen Sprung zu 2 solange bis EndeBedingung erkannt wurde die musst du dann für dich kreieren
*LACHT*
Geändert von avr_racer (15.01.2019 um 15:49 Uhr)
Ich möchte euch allen für eure Hilfe und Geduld danken!
Programm ist fertig - umgewandelt.
Ein paar kleine Schreib- und Definitionsfehler waren noch drin.
Die LCD-Funktionen hab ich - soweit mit dem T24 auf dem Miniboard möglich - getestet.
Schaut alles gut aus.
Demnächst wird die Platine entworfen.
Dann gehts weiter ...
Bei diesem Projekt hab ich wieder viel gelernt! Und auch die Scheu vor einem LCD verloren
Es ist doch viel einfacher damit, wenn man immer wieder - zumindest anfangs - an ein paar Parametern "drehen" muss ...
PS:
Hab bei meiner alten MC20 Funke das LCD (ist um einiges größer als das neue 1602er) entfernt und bei meinem T24 Test probiert - läuft einwandfrei![]()
Geändert von HeSt (18.01.2019 um 07:48 Uhr)
Bin wieder da ...
Frage:
Wie schalte ich ein LCD aus/ab, damit es keinen Strom mehr zieht - also nichts mehr verbraucht???
Der Grund - eine etwas kuriose Sache:
Ich hab ein Labornetzgerät, das ich zum Testen auf 5V und 65mA eingestellt hab.
Ich möchte das LCD nur dann in Betrieb haben, wenn ich Werte/Parameter anzeigen oder ändern, oder des Solarpanel manuell steuern will.
Schalte ich VDD (+) ab (gegen -), geht die Spannung etwas in die Knie = die Schaltung zieht mehr Strom.
Lege ich VDD oder VSS "floating" (also nirgendwo angeschlossen), bleibt zwar die Spannung stabil, dafür bleibt die Anzeige am LCD aktiv, wenn auch ein bisschen schwächer.
Der Suntracker wird an einem Akku betrieben.
Der Akku wird zwar bei genügend Sonnenenergie immer wieder geladen, aber trotzdem möchte ich den Stromverbrauch so gering wie möglich halten.
Die Schaltung wird zudem nachts oder bei zu wenig Sonnenenergie schlafen gelegt.
Sonst schaut's einstweilen gut aus
[edit]
Rätsel gelöst!
Solange am Datenport des LCD irgend ein Bit ein ist (=+):
1. Wenn VDD (+) gegen VSS (-) geschaltet wird, fließt offenbar über den Datenport Strom.
Deshalb auch der Spannungseinbruch (Sicherheitsschaltung des Labornetzgerätes).
2. Wenn VDD (+) oder VSS (-) "floating" sind, bekommt das LCD über den Datenport noch genug Strom um die Anzeige (schwächer) aufrecht zu erhalten.
Lösung:
Alle Bits des Datenport auf aus (-) setzen, dann VDD auf aus (-) und alles ist gut
[endedit]
Geändert von HeSt (29.01.2019 um 08:01 Uhr)
Hey hallo,
Es gibt ein extra Befehl was das LCD bzw nur die Anzeige selbst ausschaltet. Muss dann aber trotzdem mit Spannung versorgt werden.
Wenn du das LCD komplett spannungslos machst, muss es auch neu initalisiert werden.
Spanung anlegen an ein Bauteil was in der Versorgungsspannung weggeschaltet ist, sollte man tunlichst vermeiden aussser das DB erlaubt es.
Okay war mir nicht sicher dir es bewusst war/ist...
LCD ausschalten per Befehl und nicht stromlos schalten Verbrauch wenige µA....
LCD bleibt eingeschaltet Strom ca. max. 3mA ohne LED-Beleuchtung.
Einige Pins/IC mögen eben die Kriechstöme nicht die an den Pins wirken wenn die UB fehlt. Je nach Schaltungsart können diese Kriechströme Umwege über die +Rail nehmen und somit weitere Teile des IC versorgen womit dieser aber nicht richtig funktioniert...
Lesezeichen