mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik falsche zeichen am lcd HILFE :(


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

Bewertung
0 lesenswert
nicht lesenswert
hallo alle zusammen

ich hab ein problem mit meinem lcd display da es falsche zeichen 
anzeigt.

input:
lcd display 4x20
der firma: topway
modell: lmb204bfc
angeblicher treiber: st7066u und drei mal st7063c also vier chips wovon 
ich aber nur drei sone schw. tropfen auf der platine sehe!naja
programm in assembler und mit atmega8.

wie man in der datei sieht schicke ich a,b,c,d,e,....hintereinander weg
aber anstatt diese buchstaben zu zeigen, zeigt das lcd für jeden 
buchstaben "|||" anfangs hatte ich 'T' 'E' 'S' 'T' verschickt und es 
kamen nur ein schw. block an erster stelle, ein unterstrich (2. stelle) 
und dann drei "ooo" raus!

ich hab viel rum gespielt mit zeiten und init. doch das problem war 
immer noch vorhanden!

hab auch mal die zeile mit dem cursor blinken verändert so das es nicht 
mehr blinkt aber geblinkt hat es immer noch, das lcd macht sein eigenes 
ding.

also kurz und knapp das lcd bedient mich und nicht anders herum ;-)

hat vill. jeman einen tipp bzw kann mir erklähren was ich falsch und 
machen soll?

muss dazu sagen bin relativ neu im µc programmieren hab jedoch schon 
einen countdown timer mit 7 seg. anz. gebastelt was auch leuft...nur so 
zur info was ich kann(ist ja nich viel hehe).

währe sehr dankbar für eine lösung
grüße aus berlin mojo

Autor: Bernhard M. (boregard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, also programmierst Du mit Word, oder warum ist das Attachment im 
RTF Format?
Dann habe ich keine Ahnung, was das für ein Display ist, scheint aber 
HD44780 kompatibel sein zu sollen.

Mit ein googlen nach "st7066u" kommt als dritter Eintrag ein thread aus 
diesem Forum, der dieselben Probleme löst:
Beitrag "Probleme mit LCD (ST7066U)"

(Übrigens vermisse ich in Deinem Code beim initialisieren die 
notwendigen Pausen, Du scheinst das Display zu "überfahren".)

Gruß,
Bernhard

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mojo wrote:
> wie man in der datei sieht

Mein Assembler versteht kein RTF.

Mach nen vernünftigen Dateianhang *.asm, dann gucken sich das einige 
Leute auch mal an.


Peter

Autor: Neb N. (bluemorph)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin auch noch recht neu auf dem Gebiet der uP - Programmierung, aber 
ich hab mir deinen Quellcode mal angeguckt.

Mir ist aufgefallen, dass du bei der Initialisierung glaube ich nur 
einmal das Commando 0x30 an das Display sendest.

Im Datenblatt eines HD44780 steht aber, dass man das 3 mal senden muss.
;init_lcdd:
  
  cbi data, e      ;8bit ohne untere nibbel
  ldi reg1, 0x30          ;<-- diese Stelle mein ich
  out data, reg1                  
  rcall ena

  cbi data, e      ;4bit, 2 zeilen, 5x8
  ldi reg1, 0x28
  rcall comand
        ...

Und wie auch schon boregard sagte, dir fehlen zumindest bei dieser 
ersten Anweisung die Wartezeiten.

MfG BlueMorph

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

Bewertung
0 lesenswert
nicht lesenswert
hallo

danke für eure antworten.
an peter & boregard:
rtf deswegen, weil ich den code in wordpad kopiert hab.
hoffe der anhang hilft jetzt.

an boregard:
die pausen habe ich im comand und im datai versteckt.
meinst du die zeit reicht nicht?? ich mein im datenblatt steht >37us und 
das sind deutlich mehr da ich dachte las dem lcd vieel zeit zum tun;-)

an bluemorph:
http://www.sitronix.com.tw/sitronix/SASpecDoc.nsf/...
laut datenblatt seite 25 sollte das so richtig sein(4 bit mode).

mfg mojo

Autor: Bernhard M. (boregard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

die 37usec sind im Betrieb für normale commands i.O. nicht für 
Initialisierung, und da:
  cbi data, e      ;8bit ohne untere nibbel
  ldi reg1, 0x30
  out data, reg1
  rcall ena

  cbi data, e      ;4bit, 2 zeilen, 5x8
  ldi reg1, 0x28
  rcall comand
fehlt die Pause ganz, abgesehen davon daß viele Controller da bis zu 
15ms wollen, steht aber alles in den Tutorials.

Gruß,
Bernhard

Autor: Neb N. (bluemorph)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha, ich davon ausgegangen, dass du einen HD44780 kompatibles display 
hast.
Hattest du ja nicht reingeschrieben.

Hoffe Du hast dein Problem behoben.

MfG BlueMorph

Autor: mojo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nee leider ist das problem noch nicht behoben im gegenteil hab jetzt ein 
neues :-(.

diese zeilen hab ich verändert das heißt nur rcall ms.
  ldi reg1, 0x30    ;8bit ohne untere nibbel
  out data, reg1
  rcall ena
  rcall ms <----- hinzu gefügt


  ldi reg1, 0x28
  rcall comand
das problem das ich jetzt habe ist das der µc das lcd initialisiert, 
aber weder die buchstaben noch diese "|||" anzeigt besser gesagt nichts 
mehr!

dieses projekt frustriert mich sehr.*heul*

hat jemand noch ne idee?

oder andere frage: meint ihr der gedanke, das ich jetzt den 8 bit mode 
und nicht 4bit init. hab, ist richtig?

mfg mojo

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Wenn ich das richtig sehe und das Prog. noch so ist wie dein letztes, 
überschreibst du in der SUB "ms" REG1 und REG2 oder besser sie kommen 
mit 0 zurück -> Push/Pop vergessen.

Viel Erfolg, Uwe

Autor: Thomas Forster (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte auch Probleme mit LCDs
Diese Lib funktioniert bei mir mit einem Mega8 1Mhz stabil. Die 
Pinbelegung ist zwar anders aber vllcht kannst du ja umlöten.
Aus irgendeinem Grund. den ich noch nicht herausgefunden habe, 
funktioniert bei mir das LCD  nur, wenn  D4-D7 vom LCD am einem unteren 
Nibble Px0-Px3 eines Ports angeschlossen sind (ja, ich hatte den code 
angepasst):

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.