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


von mojo (Gast)


Angehängte Dateien:

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

von Bernhard M. (boregard)


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

von Peter D. (peda)


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

von Neb N. (bluemorph)


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.
1
;init_lcdd:
2
  
3
  cbi data, e      ;8bit ohne untere nibbel
4
  ldi reg1, 0x30          ;<-- diese Stelle mein ich
5
  out data, reg1                  
6
  rcall ena
7
8
  cbi data, e      ;4bit, 2 zeilen, 5x8
9
  ldi reg1, 0x28
10
  rcall comand
11
        ...

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

MfG BlueMorph

von mojo (Gast)


Angehängte Dateien:

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/FileDownload/ST7066U614654/$FILE/ST7066Uv22.pdf
laut datenblatt seite 25 sollte das so richtig sein(4 bit mode).

mfg mojo

von Bernhard M. (boregard)


Lesenswert?

Hi,

die 37usec sind im Betrieb für normale commands i.O. nicht für 
Initialisierung, und da:
1
  cbi data, e      ;8bit ohne untere nibbel
2
  ldi reg1, 0x30
3
  out data, reg1
4
  rcall ena
5
6
  cbi data, e      ;4bit, 2 zeilen, 5x8
7
  ldi reg1, 0x28
8
  rcall comand
fehlt die Pause ganz, abgesehen davon daß viele Controller da bis zu 
15ms wollen, steht aber alles in den Tutorials.

Gruß,
Bernhard

von Neb N. (bluemorph)


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

von mojo (Gast)


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.
1
  ldi reg1, 0x30    ;8bit ohne untere nibbel
2
  out data, reg1
3
  rcall ena
4
  rcall ms <----- hinzu gefügt
5
6
7
  ldi reg1, 0x28
8
  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

von Uwe (Gast)


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

von Thomas Forster (Gast)


Angehängte Dateien:

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):

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.