Forum: Mikrocontroller und Digitale Elektronik Variableausgabe im HD44780?


von KurtM (Gast)


Lesenswert?

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

von Tobi (Gast)


Lesenswert?

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

von KurtM (Gast)


Lesenswert?

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

von Benedikt (Gast)


Lesenswert?

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)

von Olaf (Gast)


Lesenswert?

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

von KurtM (Gast)


Lesenswert?

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

von Paul (Gast)


Lesenswert?

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.

von Sebastian (Gast)


Lesenswert?

@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
Noch kein Account? Hier anmelden.