mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Variableausgabe im HD44780?


Autor: KurtM (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: KurtM (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. :-)

Autor: KurtM (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.