Standardmäßig sind bei den AVRs (zumindest die ich kenne) die Ports als Eingang ohne Pullup-Widerstand konfiguriert. Den Pullup schaltet man ein wenn man ins Portregister schreibt (den jeweiligen Pin auf 1 setzen).
MfG Hannes
Standardmäßig sind bei den AVRs (zumindest die ich kenne) die Ports als Eingang ohne Pullup-Widerstand konfiguriert. Den Pullup schaltet man ein wenn man ins Portregister schreibt (den jeweiligen Pin auf 1 setzen).
MfG Hannes
Erst muss ich mich für eine Fehlmeldung entschuldigen,
denn beim Umbau von µC auf absolut händisch ist mir bewusst
geworden, dass ich das LCD verkehrt rum "gesehen" hab.
Weil ich das LCD so im Board hab, dass die Anschlüsse unten
sind und nicht oben. Zeile 1 ist bei den Anschlüssen.
Somit hat die Zeile 1 die Blöcke und nicht Zeile 2!
Zeile 2 ist leer.
DIE LCD-ANSCHLÜSSE WAREN/SIND IMMER RICHTIG BESCHALTEN!!
Hab nur die Zeilen vertauscht gesehen!
Aufbau mit T24:
Hab RS + R/W gegroundet.
Resultat: keine Änderung.
Pullup hin, pullup her ....
Aufbau manuell:
Nun hab ich statt dem µC ein Mäuseklavier installiert und
die entsprechenden commands darüber eingegeben.
RS + RW immer auf GND - also nur Befehle.
EN mit 4,7k gegen GND.
Per Taste + auf EN, bei Loslassen - über R.
CMD-Abfolge (x = per Taste EN > +/-):
$30 3x
$20 1x noch im 8-Bit Mode (4-Bit-Mode)
$28 2x erst 2 dann 8 (4-Bit, 2 Zeilen, 5x7)
$0F 2x erst 0 dann F (DSP on, Cursor on blink)
$06 2x erst 0 dann 6 (DSP fest, C autoincr)
$01 2x erst 0 dann 1 (clr DSP, C > home)
Pegel/V-levels an den Anschlüssen mit V-Meter kontrolliert - ok.
Somit sollte der Zeitfaktor (Warteschleifen zu kurz) eliminiert sein.
Oder "vergisst" das LCD nach gewisser Zeit, welche Befehle es schon erhalten hat!?
Resultat: keine Änderung ggü. µC oder keiner Beschaltung.
Es tut sich ggü. dem Status nach dem Spannung anlegen einfach ...
NICHTS, GAR NICHTS am LCD!!!
Die Blöcke bleiben unverändert und keine weitere Reaktion.
Bin ratlos ... Was nun?
Doch LCD defekt??
Und damit ihr euch den Testaufbau vorstellen könnt, die Fotos dazu.
Werde morgen noch DB4-DB7 mit R gegen GND hängen.
Geändert von HeSt (03.01.2019 um 16:54 Uhr)
In solchen Fällen, wenn ich gar nicht weiter komme, neige ich dann dazu, ein neues Teil zu kaufen - also hier ein neues Display - um zu sehen, ob sich das auch so verhält oder ob das alte defekt ist.
Oder ich würde mir ein Programmcode aus dem Internet ziehen, der auf dem Display was anzeigt und das dann damit versuchen.
Was aber auch eine Lösung wäre, das Teil zu jemandem schicken, der damit vertraut ist und versucht es zum Laufen zu bekommen.
MfG
Ich habe es mal eben probiert:
Verkabelung:
DB0 frei
DB1 frei
DB2 frei
DB3 frei
DB4 über Widerstand nach Plus
DB5 über Widerstand nach Plus
DB6 an Masse
DB7 an Masse
RS an Masse
RW an Masse
E über Widerstand nach Plus
V0 (Kontrastpin) nach Masse
Wir simulieren das Datenbyte 0x30 indem wir DB4 und DB5 an High legen
und DB6 und DB7 an Masse legen.
Nun müssen wir mehrfach das Enable Signal nach Masse und wieder nach Plus schalten.
Ich habe den Draht rein und wieder raus gezogen.
Dann sollte das Display ALLE Zeichen im Kontrast zeigen.
Bilder:
Aufbau:
Versorgund einschalten
Enable Pin Mehrfach rausgezogen und wieder reingesteckt.
Dann sollte es Grundinitialisert sein.
Ich habe die Pullup Widerstände an DB4 und DB5 mal eben weggelassen, auch dann ging es.
Der Widerstand am Enable Pin nach Plus ist aber zwingend erforderlich bei dem Test, der Pin "schwebt" sonst...
Muss doch in den Griff zu bekommen sein....
Siro
Geändert von Siro (03.01.2019 um 19:09 Uhr)
Hi Siro!
DANKE!! Dein Test hat mir immens geholfen!
1. Dass nach der Spannungsversorgung dein LCD ebenfalls die Blöcke in Zeile 1 hat und
2. dass alleine das Senden von $30 beide Zeilen "habt 8" stehen lässt.
Ich werde morgen deinen Aufbau bei mir rekonstruieren und mal schauen ...
Danke nochmals!
Falls wieder nichts passiert ist mit Sicherheit das LCD defekt.
Mir ist eingefallen, dass ich eine alte Graupner-Computerfunke rum liegen habe (nicht mehr in Gebrauch), die auch ein LCD eingebaut hat.
Es ist ein 2x16er Display. Allerdings weiß ich nicht welches. Werd es mal genauer unter die Lupe nehmen.
Es ist größer und mit Sicherheit über 20 Jahre alt ...
Könnte ich eventuell ausbauen und versuchen ...
Die Displays haben sich eigentlich seit Jahrzehnten nicht geändert. Hab die vor 20 Jahren schon in ähnlicher Form bernutzt.
Die arme Graupner..Hab auch noch eine, aber aus der neuesten Generation.
Viel Erfolg, ich bin gespannt.
Siro
Danke für den Erfolgswunsch! Kann ihn gebrauchen!
Ja, irgendwie wäre mir um die MC20 leid. Aber mal schauen, ob sich das LCD leicht ausbauen lässt.
Aber nur, wenn das neue defekt ist.
Bei Amazon gibt es jetzt blaue Displays für 1,17 Euro, kostenlose Lieferung:
https://www.amazon.de/Zeichen-Display-HD44780-Backlight-Arduino-Blau/dp/B009GEPZRE
Aber die Bewertungen sind teils schlecht, dauert wohl ewig und es wurden wohl auch defekte verkauft...
Wobei bei 1,77 kann man nicht viel verkehrt machen.
Bei Pollin hätte ich da mehr vertrauen
https://www.pollin.de/p/lcd-modul-tc1602a-09-120422
Geändert von Siro (03.01.2019 um 20:51 Uhr)
Alles gut ein nicht initialisiertes LCD muss immer in der ersten Zeile eine Balken haben, deshalb hab ich drüber hinweg geschaut siehe weiter oben.
Wenn denn nur R/W grounden. RS ist für das Schreiben auf dem LCD notwendig.
Rein für die Init könnte man das so machen bleibt die Frage der Entrprellung der Taster/Schalter was es wahrscheinlich scheintern lässt.
Danke für die Bilder. Und prüfe Leitungen oder Stecklöcher auf dem Board...
So hoffe ich das dir folgendes weiterhilft
Das "Ur-LCD" auf dem auch dei KS0077/67 usw angelehnt sind hat Seite 39 des HD44780 foglenden Hinweis:
"4-bit operation, 8-digit ´ 1-line display with internal reset
The program must set all functions prior to the 4-bit operation (Table 12). When the power is turned on,
8-bit operation is automatically selected and the first write is performed as an 8-bit operation. Since
DB0 to DB3 are not connected, a rewrite is then required. However, since one operation is completed in
two accesses for 4-bit operation, a rewrite is needed to set the functions (see Table 12). Thus, DB4 to
DB7 of the function set instruction is written twice."
Ich muss zugeben das habe ich das letzte mal vor 5/6 Jahren gelesen nachdem ich mir dann meine 8-Bit-Erweiterung mit nem Schieberegister gebaut habe um Pins zu sparen. Seit dem hatte ich 4bit nie wieder angefasst weil dort einfach zuviele Fehlinterpretation möglich sind. Gerade in Eng wenn man da nicht sattelfest ist.
Musste mir mein Board nochmal schnappen und es für den 4bit-Mode aufbauen was schief geht... Die Routine sollte eigentlich sofort bei dir funktionieren wenn folgende Bedigungen eingehalten sind
Takt 1Mhz eingestellt wenn
CLKDIV8 = Haken raus
!!!!!!!!!!!!
Jetzt VORSICHTIG wirklich drauf achten das folgende Einstellung gewählt ist
SUT_CKSEL = Int. RC. Osc. 8Mhz.... egal was oder Ext. Crystal 0,9-3Mhz.... egal was
Finger WEG von Ext. CLOCK der Chip lässt sich nur dann durch anlegen eines externen Taktes in den Fues umstellen!!!
!!!!!!!!!!!!
KONTRAST BISSCHEN STÄRKER EINSTELLEN
RW = GND
RS/E = vom Crontroller wie gehabt
DB0-DB3 = offen da sie eh in Tristate geschaltet werden
DB4-DB7 = vom Controller wie gehabt
Wenn LCD i.O. sollte jetzt Texte in beiden Zeilen zeilen erschienen.
Sollte dein LCD nach ca 5s, ohne das du Einstellungen verändert hast, nur wieder einen Balken in der Zeile 1 haben ist es defekt.
Geändert von avr_racer (04.01.2019 um 07:01 Uhr)
Ich habe schon vor längerem 2 PDFs gefunden http://www.epemag.wimborne.co.uk/lcd1.pdf und http://www.epemag.wimborne.co.uk/lcd2.pdf vielleicht hilft es weiter. Ich könnte noch eine Hex kompilieren damit du das LCD mit einem uC testen kannst.
MfG Hannes
Lesezeichen