Forum: Compiler & IDEs CG ROM beschreiben!


von Jan (Gast)


Lesenswert?

Moin,

ist es möglich die Libary von Peter Fleury so zu bearbeiten, dass man 
direkt mit einem Befehl, direkt Zeichen aus dem Zeichengenerator 
anzeigen kann?

hat da jemand schon was fertiges ?

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:
> Moin,
>
> ist es möglich die Libary von Peter Fleury so zu bearbeiten, dass man
> direkt mit einem Befehl, direkt Zeichen aus dem Zeichengenerator
> anzeigen kann?


lcd_putc( 0 );     // Zeigt das zeichen aus dem CHaracter Generator 0 an
lcd_putc( 1 );     // Zeigt das 2-te vereinbarte Character an.

D.h. du benutzt einfach die 'Nummer' des benutzerdefinierten Zeichens 
bei putc

von Jan (Gast)


Angehängte Dateien:

Lesenswert?

Karl Heinz schrieb:
> D.h. du benutzt einfach die 'Nummer' des benutzerdefinierten Zeichens
> bei putc

ich habe ja keine "Definierten" Zeichen die ich ausgeben möchte...

ich würde gerne diesen Balken ausgeben... (siehe Foto)

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:

> ich habe ja keine "Definierten" Zeichen die ich ausgeben möchte...
>
> ich würde gerne diesen Balken ausgeben... (siehe Foto)

Ach so.
Na, dann gibst du eben seinen ASCII COde an. Der ist 127

lcd_putc( 127 );





Dich scheint zu verwirren, dass man normalerweise

lcd_putc( 'A' );

schreibt. Diese Verwirrung ist bis zu einem gewissen Grad normal. :-)

Denn was du hier in WIrklichkeit machst, ist auch nichts anderes als den 
ACII-Code für 'A' anzugeben. Nur tust du es nicht, indem du selber den 
Code aus der ASCII-Tabelle rausliest, sondern du lässt das den Compiler 
machen.
Denn: In einem Computer gibt es eigentlich keine Zeichen. Alles sind 
einfach nur Zahlen. Auch ein char enthält letzten Endes einfach nur eine 
Zahl. Wenn der AVR vom LCD haben will, dass es ein 'B' hinmalt, dann 
nicht indem es ihm da ein 'B' schickt, sondern indem es ihm den ASCII 
Code (eine Zahl) für 'B' schickt. Es gibt also eine gegenseitige 
Vereinbarung darüber, welche Codezahl welchem Buchstaben entsprechen 
soll. Eben den ASCII Code. Der wird in diesem Fall aber nur an 2 Stellen 
relevant. Die eine ist der Compiler, der die richtige Codezahl für dein 
im C-Code vorkommende 'B' raussucht. Und die andere Stelle ist das LCD 
selber, welches beim Erhalt dieser Codezahl die richtigen Pixel auf 
schwarz stellen muss, damit dein Gehirn 'B' liest.

Und ja. Du kannst in C schreiben
1
  char c;
2
3
  c = 'A';
4
  c = 65;
5
  c = 0x41;
6
  c = 0x01000001;

alle 4 Anweisungen bewirken letzten Endes genau dasselbe. In der 
Variablen c wird das Bitmuster 01000001 abgelegt. Es ist nur jeweils die 
Schreibweise eine andere. Wann welche Schreibweise die vorteilhaftere 
ist, sollte intuitiv klar sein. Aber abgesehen von der Schreibweise sind 
alle 4 Zuweisungen in allen Punkten identisch.

von Jan (Gast)


Lesenswert?

wie kommst du jetzt auf "127" ? wenn ich diese ASCII Tabelle aufrufe...

http://www.tcp-ip-info.de/tcp_ip_und_internet/ascii.gif

ist mein Zeichen nicht eher "219" ?! :)

von Bastler (Gast)


Lesenswert?

@kbuchegg:
1
char ch = 0b01000001;
Wenn's der GCC sein sollte.

von Thosch (Gast)


Lesenswert?

Jan schrieb:
> wie kommst du jetzt auf "127" ? wenn ich diese ASCII Tabelle aufrufe...
>
> http://www.tcp-ip-info.de/tcp_ip_und_internet/ascii.gif
>
> ist mein Zeichen nicht eher "219" ?! :)

jo, aufm PC. Mit IBM-ASCII Codepage 437.

Aber nicht auf dem LC-Display Modul, auf dem das Zeichen erscheinen 
soll.
Das hat seinen eigenen Zeichensatz!

Dort ist, wie auf der Grafik zu sehen, der Code für
den "Balken" 0xFF bzw. 255 dezimal.

Bei Zeichen, die ans LCD gesendet werden, muß man natürlich dessen 
Zeichensatz verwenden, nicht den des PCs.

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:
> wie kommst du jetzt auf "127" ? wenn ich diese ASCII Tabelle aufrufe...
>
> http://www.tcp-ip-info.de/tcp_ip_und_internet/ascii.gif
>
> ist mein Zeichen nicht eher "219" ?! :)


:-)
Der 'Balken' den du in deinem ersten Bild eingekreist hast, ist ja 
eigentlich 255
:-)

Im Ernst, ich hab mich einfach am Bild orientiert. Der Balken war links 
unten, da wo bei einem 7-Bit ASCII das Zeichen mit dem Code 127 (oder 
eben Hex 0x7F) stehen würde. Ich hab das Bild nicht genau genug 
studiert. Zumal viele Terminals bei einem Code von 0x7F (oder eben 127) 
tatsächlich sowas wie einen Balken hinmalt.

Aber ich seh schon, du hast das Prinzip begriffen. Und das war ja 
schliesslich der Zweck der Übung.

Vorsicht: Alles über 127 ist vom 7-Bit ASCII Code nicht festgelegt. D.h. 
da musst du dich nach deinem LCD richten und nicht nach irgendeiner 
ASCII Tabelle. ASCII ist nur für 7 Bit ( 0 bis 127) überall gleich.

von holger (Gast)


Lesenswert?

>ist mein Zeichen nicht eher "219" ?! :)

Nö, es ist 255.

>wie kommst du jetzt auf "127" ? wenn ich diese ASCII Tabelle aufrufe...

Diese ASCII Tabelle interressiert dein Display wenig.
Du musst den Zeichencode nehmen den das LCD Datenblatt vorgibt.

von Jan (Gast)


Lesenswert?

vielen lieben dank Leute (:

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.