PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] % Zeichen und Balken auf Display ausgeben



Jasmin13
11.04.2013, 10:53
Ich verwende die Bibliothek von Peter Fleury(Controller: HD44780U LCD library) und würde gerne ein % Zeichen und einen vollen Balken anzeigen.
Ich habe schon viel gegoogelt aber leider konnte ich mit nix was ich bisher gefunden habe so wirklich anfangen bzw. zum Laufen bringen.

Danke für eure Hilfe.

021aet04
11.04.2013, 11:25
Du findest die möglichen Zeichen (die das LCD darstellen kann) im jeweiligen Datenblatt. Es gibt verschiedene Rom Codes auf die du achten musst. Hier habe ich ein recht ausführliches DB gefunden https://www.sparkfun.com/datasheets/LCD/HD44780.pdf
Dort findest du auf S17 bzw 18 die Zeichensätze. Das % Zeichen ist in beiden vorhanden. Wenn du einen Balken erzeugen willst kannst du noch das CGRAM verwenden. Du kannst dort selbst generierte Zeichen verwenden, wie das geht steht (soweit ich beim überfliegen gesehen habe) auch drinnen. Ansonsten findet man im Internet genug Codes bzw Erklärungen.

MfG Hannes

Jasmin13
11.04.2013, 12:00
und mit welchem Befehl spreche ich die higher und lower bits und das CGRAM denn an?

021aet04
11.04.2013, 12:13
So wie du jedes andere Zeichen auch ansprichst. Normalerweise sollte es ganz einfach so gehen wie du die anderen Zeichen auch überträgst (wie normalen Text). Sollte das nicht funktionieren musst du einfach das Higher- und das lower Nibble zusammensetzen und als Daten (RS=1) an das LCD senden. Du musst aber direkt das zeichen senden und nicht als String.

Beim CGRAM musst du es als Zeichen senden.

MfG Hannes

PICture
11.04.2013, 12:28
Hallo!

Ich möchte nur als Lektüre vorschlagen: www.roboternetz.de/community/threads/48131-Große-Zeichen-auf-16*2-LCD . ;)

Jasmin13
11.04.2013, 13:24
mit dem Befehl: lcd_putc('%'); zeigt er es leider immer noch nicht an mhmmmmm.

oberallgeier
11.04.2013, 14:15
mit dem Befehl: lcd_putc('%'); zeigt er es leider immer noch nicht an mhmmmmm.Mal ne ganz dumme Frage: Du hast das LCD schon (vorher) initialisiert?
Hast Du die (richtige) Position gewählt, wo das Zeichen hinkommen soll?
Bei mir (Sprache C, NICHT-Fleury-Lib) sieht es mit Sonderzeichen z.B. so aus:


...
#define LCD_CHAR_OMEGA 244 //Omega-Zeichen
#define LCD_CHAR_U 228 //µ-Zeichen
...
lcd_init(); //
...
lcd_clear(); // Vor LCD-Ausgabe Display leeren
Line1(); // An den Anfang der 1. Zeile springen
// oder auf Position: SetCursor (2, 10) => SetCursor (x,y), x=zeile {1,2}, y=Pos {0, 15}
...
lcd_string("LCD-Test ^"); // String ausgeben
...
lcd_data(LCD_CHAR_OMEGA); //Omega - käme hier direkt nach dem Winkel raus...

Viel Erfolg noch

Jasmin13
12.04.2013, 08:56
danke oberallgeier für den Programmcode, hat geklappt konnte damit was darstellen, aber leider anstatt das Omega Zeichen ein OHM Zeichen, weiss leider nicht auf welcher Zahl das Prozent liegt...

Vielleicht kann mir damit ja noch jemand weiterhilfen.

BMS
12.04.2013, 09:16
Hallo,
in den Datenblättern der Displays ist meist der Zeichensatz aufgeführt.
Ich gehe jetzt mal von einem Standardcontroller HD44780 aus.
Also z.B. in http://www.lcd-module.de/pdf/doma/dip162-d.pdf auf Seite 2.
Das Prozentzeichen ist in der Tabelle in der linken Spalte.
Wenn man sich die Beschriftungen dazu anschaut ergibt sich Upper 4 bit: 0010 und Lower 4 bit: 0101, zusammengesetzt also 00100101. Die Binärzahl in Dezimal umgerechnet ist 37.
Also kannst du nun mit

#define LCD_CHAR_PROZENT 37
...
lcd_data(LCD_CHAR_PROZENT);
das Prozentzeichen % anzeigen ;)
Falls auf dem Display etwas anderes anzeigt wird, hat dein Display wohl einen anderen Zeichensatz. Welches Display verwendest du denn?
Was stellst du dir unter einem "Balken" vor? Alle Pixel auf dunkel? Das wäre nach Tabelle 11111111 binär, also 255 dezimal.
Grüße,
Bernhard

<pingelig ein>
aber leider anstatt das Omega Zeichen ein OHM Zeichendas ist dasselbe ;)<pingelig aus>

Klebwax
12.04.2013, 09:38
Ich verwende die Bibliothek von Peter Fleury(Controller: HD44780U LCD library) und würde gerne ein % Zeichen ...

Das '%' ist doch ein ganz normales ASCII-Zeichen, wo ist das Problem?

MfG Klebwax

oberallgeier
12.04.2013, 12:17
... weiss leider nicht auf welcher Zahl das Prozent liegt ...Das ist ein geringes Problem. Es gibt etliche Möglichkeiten ans Prozentzeichen zu kommen. Beispiele wieder NICHT Fleury-Lib-proof (sprich: nicht getestet).

Die Einfachste:
SetCursor (2, 7);
lcd_data('%');malt in die zweite Zeile auf die achte Position das Prozentzeichen. Achte Postion, weil die erste mit Null adressiert wird: SetCursor (2, 0);

Kaum komplizierter:
SetCursor (2, 7);
lcd_data(37);macht das Gleiche, ist aber schlecht leserlich im Quellcode.

Und "hinterrücks durchs Ohr"
#define LCD_CHAR_Przt 37 //%-Zeichen
SetCursor (2, 7);
lcd_data(LCD_CHAR_Przt);Schon wieder dasselbe, nur umständlich.

Oder im String:
Line1(); // An den Anfang der 1. Zeile springen
lcd_string("Rabatt 22 %"); // String ausgeben ab Anfang erste Zeile

Vielleicht schaust Du Dir mal diese Tabelle an (klick hier). (http://de.wikipedia.org/wiki/Ascii#ASCII-Tabelle)