display ansteuerung problem

Gast #1080447
hallo,
ich mache meine ersten gehversuche mit dem avr und probiere ein 1x16 lcd 
anzusteuern. dabei habe ich mich zuerst komplett an das tutorial 
gehalten was auch funktioniert hat. jedenfalls für die ersten 8 zeichen. 
dann bin ich weiter gegangen und habe mit hilfe des datenblattes und des 
tutorials ein zweites wort an die adresse der zeichen 9-16 geschrieben, 
funktioniert auch. da es mein ziel ist ein thermometer mit mehreren 
fühlern zu bauen, muß ich das display natürlich öfters beschreiben als 
nur einmal wie es im tut gemacht wird. wenn ich rücksprungpunkt "loop" 
aber zurück zur ausgabe des wortes "test" setze, wird nach ca. 
30sekunden progammlaufzeit (90s1200 @4mhz) nur noch zeichen 1-8 
beschrieben, 9-16 bleibt tot. das erste bild zeigt das display nach der 
initialisierung, das bild bleibt wie gesagt für ca. 30sekunden so.
Angehängte Dateien:
flo wrote:
> nach ca.
> 30sekunden progammlaufzeit (90s1200 @4mhz) nur noch zeichen 1-8
> beschrieben, 9-16 bleibt tot.

Das heißt das Display wird danach vermutlich in den 1 Zeilen Modus 
versetzt -> Das Display bekommt aus irgendeinem Grund den Befehl dazu, 
entweder wegen eines Software oder Hardware Fehlers.
Gast
uiui, hier kommen ja schneller antworten als ich den fred laden kann :-)
ich kann nur eine datei in den anhang posten, hier das programm.
anmerkung: high/ LOW-Byte der obersten RAM-Adresse hab ich auskomentiert 
weil der 1200 es nicht unterstützt
Angehängte Dateien:
Gast
@benedikt, ich habe die (steuer- und daten) signale mal mit nem oszi 
nachgemessen, die sehen zum zeitpunkt des "umschaltens" unauffällig auf. 
wenn sich nicht doch ein fehler in den code eingeschlichen hat- wie 
stehen die chancen daß der displaycontroller einen weg hat?
Chris S. wrote:
> Hallo, in deinem Code habe ich nichts gesehen, wo du in die zweite Zeile
> gehst, um dort Text auszugeben.

Hier geht er in die 2. Zeile:
 ldi temp1, 0b11000000  ;position 9 laden
  rcall lcd_command

Hier ist nur der Kommentar falsch, der Befehl macht 2 Zeilen:
           ldi temp1, 0b00101000        ; 4Bit  1 Zeile  5x8
           rcall lcd_command

Ansonsten passt die Software auch, das Timing ist OK usw. Ich konnte 
zumindest nichts erkennen. Daher würde ich auf einen Hardwarefehler wie 
zu große Kapazitäten, zu kleine Widerstände oder ähnliches an den 
Leitungen tippen.
Sorry, kenne mich mit AVR Assembler nicht aus, danke.
Aber was ich im obigen Post meinte, warscheinlich erste Zeile
0x0 - 0x7 sowie zweite Zeile 0x40-0x47 wie es oft üblich ist.
Es wird eben als zweizeiliges Display angesteuert, und hoffentlich
auch Initialisiert, habe nicht nachgeschaut.
Die zweite Zeile beginnt eben bei 0x40.
Für ein Display 1x16 mit 0x0-0xf muß ein weiteres IC drauf, das meistens 
weggespart wird.

Mfg
Chris

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.