mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik display ansteuerung problem


Autor: flo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da hilft kein Bild deines Displays, sondern nur das Posten deines 
Programms.

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

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: flo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wie stehen die chancen daß der displaycontroller einen weg hat?

Schlecht ;) da die erste Anzeige ja korrekt ist.

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier mal, das Display als 2Zeile x 8 Zeichen anzusteuern.

Autor: flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tu ich ja schon, im 1- zeilenmodus komm ich garnicht über 8 zeichen 
hinaus.

Autor: YS-500 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Shift-Taste scheint def. zu sein.
Und was ist >4mhz ?

Autor: Chris S. (schris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, in deinem Code habe ich nichts gesehen, wo du in die zweite Zeile
gehst, um dort Text auszugeben.

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

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Chris S. (schris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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.