Hallo liebe Community, ich schreibe erstes mal in diesem Forum und hoffe daß ich eure Hilfe bekommen kann. Ich benutze ein SAB80C537 µC und ein Display mit HD44780 Baustein. Das Display läuft einwandfrei beim Textausgabe aber nicht beim Variableausgabe. Das Unterprogramm sieht so aus; Impuls = 123; void display_Var(UInt Impuls) { P5 = Impuls; //Datenbus Delay(); //Verarbeitungswartemodus LCD_RS = 1; LCD_R_W = 0; LCD_ENB = 1; LCD_ENB = 0; } Aber es zeigt nur schwarze Balken. D.h. er nimmt die Zahl 123 als irgendeine Code die er nicht interpretieren kann. Wie sollte man die Variable definieren? Was empfehlt Ihr? MfG KurtM
dei schwarzen balken bedeuten, dass das display noch nicht initialisiert wurde. im netz gibts eine menge seiten mit dem befehlssatz der hd44780 kompatiblen displays. da solltest du dir mal die befehle durchlesen. da ich den uC nicht kenn kann ich nichts genaueres sagen
Hallo Tobi, das Display ist schon richtig initialisiert. Ich gebe ja nicht nur diese variable in das Display aus. Sondern, ich schicke zuerst ein Text wie "Geschwindigkeit =" und dann schicke ich die entsprechende Variable. Und er macht in dem Display genau so; Geschwindigkeit = (ein Schwarze Balken) Also wenn er Text ausgeben kann, d.h. er hat keine Probleme bei der Initialisation aber bei Variablen- oder Zahlenausgabe. Danke für dein Vorschlag. MfG KurtM
Les dir mal das HD44780 Datenblatt durch. 123="{" als ASCII Zeichen, so wi es das LCD versteht. Du muss 123 in "1" "2" "3" also 49, 50, 51 zerlegen und diese ans LCD senden. Die Funktion nennt sich ITOA (Integer TO ASCII)
Darf ich mal raten? Wenn du die Zahl 65 ausgibst, dann gibt es in A? Sollte ich damit richtig liegen empfehle ich den Besuch eine Buecherei(1) und das lesen eines guten Grundlagenbuchs. Olaf (1) Ort wo viele Buecher, manche sogar ohne Bilder drin, in einem Raum stehen. :-)
Hallo Benedikt, ich habe das Problem erledigt. Jetzt funktioniert es perfekt... Ich habe meine Lichtschranke an meinen µC angeschlossen und die Impulse lasse ich bei dem Display anzeigen. Vielen Dank für deine Antwort. Achh nicht zu vergessen Olaf!.. deine Antwort hätte noch konstruktiver sein können... MfG KurtM
Olafs Antwort war äußerst konstruktiv. Wenn du es nötig hast wegen so eines Fehlers im Forum zu posten, zeigt das den Lesern nur, dass du keine ausreichenden C-Kenntnisse besitzt. Also nimm dir den Rat zu Herzen und lern erstmal richtig die C-Grundlagen. Du wirst es dann viel einfacher haben und kannst dich auf die eigentliche Programmierung konzentrieren.
@Kurt: Und wenn du lernen möchtest, was genau du falsch gemacht hast, guck dir die IntToString()-Routine an, die ich irgendwann mal geschrieben habe. ;-) void IntToString(char* str, int value, char precomma, char aftercomma) { int k, i, digit, multiplier, j=0; for (i=0;i<precomma;i++) { multiplier=1; for (k=0;k<precomma+aftercomma-i-1;k++) multiplier*=10; digit = value / multiplier; value %= multiplier; str[j++] = digit + 48; } if (aftercomma) str[j++] = '.'; for (i=0;i<aftercomma;i++) { multiplier=1; for (k=0;k<aftercomma-i-1;k++) multiplier*=10; digit = value / multiplier; value %= multiplier; str[j++] = digit + 48; } } Weiteres Zeug in diese Richtung auf www.mathar.com, auch zur HD44780-Ansteuerung ;-)
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.