Forum: Mikrocontroller und Digitale Elektronik ASCII Zeichen auf Display ausgeben


von ben.pu (Gast)


Lesenswert?

Hallo ihr da draußen,

Ich bin grad dabei mit einem ATMEGA8 im 4bit-Modus Texte auf dem 
2zeiligen Display von Displaytech auszugeben. Das ist mir dann auch mit 
der übergabe von Hexadezimalzahlen gelungen und das Display hat das 
angezeigt was es anzeigen sollte. Jedoch bin ich jetzt dabei die Hexas 
in normale Buchstaben umzutauchen um später auch Zeichenketten bzw auch 
nur einzelne Zeichen verarbeiten zu können damit man nicht immer im der 
Tabelle nachschauen muss.

Also hab ich zum Beispiel den Befehl...

lcd_data(0x41);

mit dem Befehl...

lcd_data("A");

ersetzt.

Jetzt habe ich ab er das Problem dass nur noch total wirres Zeug 
angezeigt wird. Kann mir jemand sagen wo das Problem ist?

Infos:
-benutze das AVR-Studio mit dem GCC Compiler
-die Zechentabelle des Displays stimmt genau mit der ASCII Tabelle 
überein
-im Disamsambler hab ich gesehen dass jetzt eine andere Hexa an die 
Routine übereben wird

MFG Benny

von Benedikt K. (benedikt)


Lesenswert?

Versuchs mal mit lcd_data('A');

von Karl H. (kbuchegg)


Lesenswert?

ben.pu wrote:

> Also hab ich zum Beispiel den Befehl...
>
> lcd_data(0x41);
>
> mit dem Befehl...
>
> lcd_data("A");
>
> ersetzt.

Und dein Compiler hat dazu nichts zu sagen?

> angezeigt wird. Kann mir jemand sagen wo das Problem ist?

Deine mangelnden C-Kentnisse.
"A" ist ein String, der in Summe aus 2 chars besteht. Aus dem 'A' und 
einem abschliessendem '\0' Zeichen, welches bei Strings obligatorisch 
ist.

'A' hingegen ist das Zeichen, dessen ASCII-Code 0x41 ist.

Man beachte die Unterschiede in den Anführungsstrichen:
doppelte Anführungszeichen - String
einfache Anführungszeichen - ein einzelner Character

Um Strings auszugeben kannst du zb diese Funktion benutzen
1
void lcd_puts( const char* String )
2
{
3
  while( *String )
4
    lcd_data( *String++ );
5
}

Da kannst du jetzt dein "A" ausgeben.
1
    lcd_puts( "A" );

aber auch
1
    lcd_puts( "Hallo World" );

von ben.pu (Gast)


Lesenswert?

Danke euch allen für die schnelle Hilfe!!!!!!
Es funktioniert und ich bin total HAPPY.
Hab meine C-Kentnisse aus nem Mikrocontrollerbuch und da wird das nich 
so ausgeweitet. Man lernt nie aus und zum Glück gibts ja auch ;-) Werd 
die Funktionen gleich einbauen...

Danke nochma!!!
Benny

PS: Der Compiler hatte kein Wort gesagt.

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.