PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : grad "°" auf LCD ausgeben für Temperatur



Haveaniceday
26.03.2009, 09:00
Hallo zusammen,
ich würde gerne zur Temperatur anzeige auf dem LCD das grad Zeichen ausgeben.
Habe es schon mit folgenden Zeichen versucht


0xC2
0xB0
0xBA


Aber es wird immer was anderes dargestellt. Wäre nett wenn mit einer helfen könnte.

Ceos
26.03.2009, 09:53
welches display ? kommt auch manchmal auf den gespeicherten zeichensatz an!

EDIT: theoretisch müsste es aber 0xB0 oder '°' eben sein

falls ein strich zu sehen sein sollte, hast du die falsche zeichentabelle, dort liegen japanische zeichensätze

Haveaniceday
26.03.2009, 10:32
Welchen Zeichensatz meinst du? Von Windows oder vom Winavr? Wie kann ich den Zeichensatz ändern?
Bei der ausgabe via Uart kannn ich grad als "°" anzeigen lassen, also schreibe in die sprintf auch ° rein, nicht den hex code

pacer_one
26.03.2009, 12:43
den Zeichensatz von deinem Display.
sollte in der Spezifikation drinstehen, deswegen die Frage nach deinem Displaytyp

Ceos
26.03.2009, 13:17
im datenblatt ist irgendwo der zeichesatz dargestellt, vielleicht sind die zeichen einfach nur auf anderen werten

Haveaniceday
26.03.2009, 13:26
Hm, wüsste nicht wo der im Datenblatt dargestellt ist...
Hab das Datenblatt mal aus pdf beigefügt. Der Display-Controller ist jedenfalls HD44780 kompatibel, wenn das weiter hilft

Hubert.G
26.03.2009, 14:28
Es sollte im Datenblatt des KS0066, Display-Driver, dargestellt sein.
In meinem Datenblatt fehlt leider die Character Code Table.
Probier mal 0x6f, das könnte hinkommen.

McJenso
26.03.2009, 15:34
Hallo,

habe auch noch zwei Vorschläge 0xDF oder 0xB2

Gruß

Jens

Ceos
26.03.2009, 16:03
das ist doch nciht das datenblatt, das ist vielleicht nur der anschlussplan und die äußeren abmessungen, normalerweise hat man dazu ne detaillierte anleitung wie angeschlossen, übertragen und die befehle auszusehen haben

HD44780 sagt mir das datenblatt, dass du den rom code 02 verwenden solltest ... frag mich jetzt nicht wie, ich bin froh dass es bei mir mit der "einfachen" initialisierung getan ist und alles geht
tut mir leid wenn ich dir da keine hilfe bin

das datenblatt kann ich hier auch leider grad nicht hochladen und das hab ich leider auch nur in dateiform und keinen link

Hubert.G
26.03.2009, 18:25
Soviel ich weiss kann man den CGROM Code nicht umschalten, es ist entweder Japan A00, oder Europa A02 Standard.
Ich hatte bis jetzt allerdings immer nur A00.
In dem Display ist auch kein HD44780 sondern ein KS0066 drinnen, das sollte aber zumindest beim CGROM Code keinen Unterschied machen.

wkrug
26.03.2009, 19:02
Bei meinem Display muß ich ein "ß" = Scharf S eingeben, damit ein ° angezeigt wird.
Den ASCII Code für diesen Buchstaben hab ich aber gerade nicht parat.

PICture
26.03.2009, 20:16
Hallo!

@ Haveaniceday

Am einfachsten ist es in Initialisirungsunterprogramm benötigten Zeichen selbst erstellen (definieren). Das benötigt nur 8 Bytes unter gewählter Adresse nacheinander in CGRAM zu schreiben. Ich als PIC Anwender kann dir leider keinen fertigen Code posten. :)

MfG

Haveaniceday
27.03.2009, 07:52
Ok, vielen Dank erstmal an alle.


0xDF
hat den gewünschten efekt gehabt. Zwar kein Kreis, viel mehr ein Quadrat, aber das stört nicht zwingend.

Gruß Hannes

holger_s
31.07.2009, 10:47
Hallo,

wie genau schreibe bzw. lese ich den CG-Ram des 2x16 LCD vom AppBoard der Main-Unit? Möchte diesen Speicher "fremdnutzen".

MfG
Holger


Hallo!

@ Haveaniceday

Am einfachsten ist es in Initialisirungsunterprogramm benötigten Zeichen selbst erstellen (definieren). Das benötigt nur 8 Bytes unter gewählter Adresse nacheinander in CGRAM zu schreiben. Ich als PIC Anwender kann dir leider keinen fertigen Code posten. :)

MfG

Ceos
03.08.2009, 14:13
der zeichenspeicher ist ein ROM soweit ich weis! man kann sich zwar beim starten des display je nach bauart ein paar zeichen definieren, aber der rest kann nicht beschrieben werden.
der grafikspeicher ist ein RAM, ABER ...

in den speicher schreiben iss zwar kein problem, aber das auslesen kostet "unmengen" Zeit, da du immer mindestens 2 mal lesen musst, wenn du die adresse änderst ... zur fremdnutzung nimm lieber nen echten ram oder was in der richtung, damit fährst du besser ... ich habs nämlich aufgegeben, ne vektorgrafik nur im speicher des display zu verarbeiten, da ich hin und wieder fehlerhaft ausgelesen habe (trotz dummylesen) .. jetzt erzeug ich einfach zur programmlaufzeug das bild im ram des µC und in einem "pseudoparallelen" prozess schiebe ich pausenlos den speicherinhalt zum display, die aktualisierungsrate ist klasse, aber es tritt halt manchmal der tearing effekt auf, wie man ihn vom monitor kennt (das letzte objekt ist noch nicht komplett gezeichnet bevor es auf dem display sichtbar wird)

holger_s
03.08.2009, 19:29
Hallo,

Geschwindigkeit spielt eine untergeordnete Rolle, zur Anzeige nutze ich eh nur 2x16 ASCII-Zeichen (DD-RAM-Byte 00 bis 0F und 40 bis 4F), die LCD haben aber mehr DD-RAM (00 bis 27 und 40 bis 67), außerdem 8x8 Byte CG-RAM zum generieren von Sonderzeichen. Den DD-RAM kann ich problemlos schreiben (00-27 und 40-67), den SG-RAM vermutlich auch (kann es nur nicht prüfen).

Lediglich das LESEN bekomm ich nicht hin, ich habe zwar die Unterlagen, bekomme aber scheinbar das Timing nicht hin, scheint recht kritisch zu sein, High-Nibble und Low-Nibble (4 Bitmodus) sollen kurz während der H->L Flanke des Enableimpulses anliegen.

Unter http://www.wiesolator.de/index.php?area=Microcontroller&topic=C-Control&stopic=LCD-RAM hat das mal jemand hinbekommen, leider ist der link zum Programm inaktiv und der Autor z.Z. nicht erreichbar. Daher hier meine Anfrage.

Die Unterlagen könnte ich mailen.

Wäre nett wenn jemand helfen könnte, ich brauche x * 4 Byte als Timerspeicher für meine Beregnungsanlage im Garten... (10 Timer oder mehr wären schööön.)

Oder es hätte jemand eine Idee, wie ich im CCBasic Werte einer Tabelle ändern könnte.


der zeichenspeicher ist ein ROM soweit ich weis! man kann sich zwar beim starten des display je nach bauart ein paar zeichen definieren, aber der rest kann nicht beschrieben werden.
der grafikspeicher ist ein RAM, ABER ...

in den speicher schreiben iss zwar kein problem, aber das auslesen kostet "unmengen" Zeit, da du immer mindestens 2 mal lesen musst, wenn du die adresse änderst ... zur fremdnutzung nimm lieber nen echten ram oder was in der richtung, damit fährst du besser ... ich habs nämlich aufgegeben, ne vektorgrafik nur im speicher des display zu verarbeiten, da ich hin und wieder fehlerhaft ausgelesen habe (trotz dummylesen) .. jetzt erzeug ich einfach zur programmlaufzeug das bild im ram des µC und in einem "pseudoparallelen" prozess schiebe ich pausenlos den speicherinhalt zum display, die aktualisierungsrate ist klasse, aber es tritt halt manchmal der tearing effekt auf, wie man ihn vom monitor kennt (das letzte objekt ist noch nicht komplett gezeichnet bevor es auf dem display sichtbar wird)

chientech
25.08.2009, 18:35
Hi,

Was für einen Controller nutzt du?
gruß

holger_s
25.08.2009, 22:57
Danke fürs Interesse, aber es läuft jetzt alles wie gewünscht, ich kann die 64 Byte im CG-Ram des LCD (MC16021E-TRG) mit der C-Control Main-Unit lesen (Assemblerroutine) und schreiben. Somit alles wie gewünscht, bin grad noch am Gehäusebau, dann ist es fast perfekt...

allerdings... naja, vielleicht baue ich noch einen Regensensor mit dran....

Also bis dann, trotzdem Danke an alle für die Mühe....