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
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
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
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
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
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
Aha, ich davon ausgegangen, dass du einen HD44780 kompatibles display hast. Hattest du ja nicht reingeschrieben. Hoffe Du hast dein Problem behoben. MfG BlueMorph
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.