Forum: Mikrocontroller und Digitale Elektronik Problem Mit LCD display


von Benjamin L. (benny_1998)


Angehängte Dateien:

Lesenswert?

Hallo, ich habe mir jetzt ein LCD 4x20 zugelegt.
jetzt habe ich die LCD routinen vin µc.net genommen an meinen controller 
angepasst. jetzt zeigt das display Zwar etwas an aber nocht das was es 
soll.

es Steht auf dem Dosplay `bddf anstat Hallo.

Pinbelegung ist folgende:

RS PORTC2
EN PORTC3
DB4 PORTC4
DB5 PORTC5
DB6 PORTC6
DB7 PORTC7


Danke für eure Hilfe

von Fritz G. (fritzg)


Lesenswert?

Nimm lcd_string("hallo");

von Benjamin L. (benny_1998)


Lesenswert?

Ja so funktioniert es doch wenn ich jetzt zahlen aus variablen ausgeben 
will funktioniert es nicht (zählschleife u. anzeigen).

von Karl H. (kbuchegg)


Lesenswert?

Benjamin Liebold schrieb:
> Ja so funktioniert es doch wenn ich jetzt zahlen aus variablen ausgeben
> will funktioniert es nicht (zählschleife u. anzeigen).

Was jetzt?

Wenn du die Buchstaben 'H' 'A' 'L' 'L' und 'O' ausgibst und am LCD steht 
'bddf dann funktioniert das nicht. Ehe das nicht klappt, brauchst du mit 
anderen Dingen gar nicht weiter machen.
Da dürften 2 Datenleitungen einen Wackelkontakt oder überhaupt keinen 
Kontakt haben.
PS: Ehe ich weiter die Bitmuster der Ausgaben vergleiche, steht am LCD 
'bddf in Kleinbuchstaben oder in Grossbuchstaben?

von Karl H. (kbuchegg)


Lesenswert?

Ausserdem. Welcher Prozessor?

von Benjamin L. (benny_1998)


Lesenswert?

Hallo, es ist ein Atmega 16

es steht alles in kleinen Buchstaben.
wenn ich es mit lcd_string("***"); versuche funktioniert es

Leitungen habe ich gerade durchgemessen es ist keine kaltelötstelle oder 
sonst etwas vorhanden.

danke für die hilfe

von Karl H. (kbuchegg)


Lesenswert?

Benjamin Liebold schrieb:
> Hallo, es ist ein Atmega 16

JTAG Interface ist per Fuse abgeschaltet?

von Benjamin L. (benny_1998)


Angehängte Dateien:

Lesenswert?

Laut den Fuses Ja. Zur sicherheit hier nochmal die Fuses

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

Mit wie viel Mhz tickt dein µC? 16Mhz?

Erhöhe mal LCD_WRITEDATA_US aufs doppelte und teste es erneut.

von Fritz G. (fritzg)


Lesenswert?

Gib doch den Buchstaben 'H' aus. Laut deinem Code übergibst du den 
String "H", dabei wird ein Zeiger auf den String übergeben.

von Benjamin L. (benny_1998)


Lesenswert?

Ich habe einen 16mhz quartz am µC hengen aber hab kp ob die fuses so 
passen?

von Karl H. (kbuchegg)


Lesenswert?

Fritz Ganter schrieb:
> Gib doch den Buchstaben 'H' aus. Laut deinem Code übergibst du den
> String "H", dabei wird ein Zeiger auf den String übergeben.

Ooops da hat er recht. Das hab ich im Code auch übersehen.
Das einzige was mich wundert, das ist, wie er das durch den Compiler 
gebracht hat.

Es muss lauten
1
  lcd_data( 'H' );
2
  lcd_data( 'A' );
3
  lcd_data( 'L' );
4
  lcd_data( 'L' );
5
  lcd_data( 'O' );

Beachte die Anführungszeichen!
' und " sind nicht dasselbe.
Für Details siehe jedes noch so grindige C-Lehrbuch für Anfänger.

von Laaaaaannngaaaamm (Gast)


Lesenswert?

Benjamin Liebold schrieb:
> Ich habe einen 16mhz quartz
Das ist aber seeehhhhr laaaaangsaaaaammm...

von Ardionoquäler (Gast)


Lesenswert?

Laaaaaannngaaaamm schrieb:
>> Ich habe einen 16mhz quartz
> Das ist aber seeehhhhr laaaaangsaaaaammm...

Für Anfanger:  16mhz vs. 16Mhz
-----------------^---------^-------

von Benjamin L. (benny_1998)


Lesenswert?

Das M sollte natürlich groß sein mein fehler

von Thosch (Gast)


Lesenswert?

Ardionoquäler schrieb:
> Für Anfanger:  16mhz vs. 16Mhz
> -----------------^---------^-------

Das sind doch beides offensichtliche Schreibfehler,
denn die Einheit Hertz kürzt sich Hz ab, mit großem H.

Also bitte mHz oder MHz.

von Benjamin L. (benny_1998)


Lesenswert?

dann eben MHz. Sorry. mit lcd_data('h'); funktioniert es jetzt,
Jetzt ist immernoch das Problem mit den Zahlen will ich Zahlen über 
lcd_Data ausgeben kommt wieder Ascii schit

von Karl H. (kbuchegg)


Lesenswert?

FAQ
gleich der erste Eintrag

von Felix P. (fixxl)


Lesenswert?

Benjamin Liebold schrieb:
> Jetzt ist immernoch das Problem mit den Zahlen will ich Zahlen über
> lcd_Data ausgeben kommt wieder Ascii schit

Die Lösung hat dir Karl-Heinz ja schon gepostet, aber um noch einmal 
klarzumachen, was dein Problem ist:

Die Zahl 0 und das Zeichen '0' (entspricht der Zahl 48) sind nur für den 
Menschen miteinander verknüpft, für den Controller nicht. Man muss dem 
Controller also sagen, dass - wenn eine Zahl zwischen 0 und 9 
hereinkommt, er ein Zeichen zwischen 48 und 57 ausgeben muss. Für 
einstellige Zahlen ist das noch recht trivial, denn man muss dann 
lediglich vor der Ausgabe 48 addieren, bei mehrstelligen Zahlen wird es 
entweder kniffliger oder man greift auf die fertigen Funktionen zurück.

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.