Forum: Mikrocontroller und Digitale Elektronik Tastatur -> AVR -> LCD


von Michael (Gast)


Lesenswert?

Tag,

ich möchte mit einem Mega8 in C eine PS/2 Tasatur auslesen und dann auf 
einem 2*16 Zeichen LCD ausgeben. Die Routinen um auf das LCD zu 
schreiben habe ich von der Website von Ulrich Radig und die 
funktionieren gut, mit fest programmierten Zeichen.
Wie ich die Tastaturdaten empfange, weiß ich schon, danach habe ich 8Bit 
in einer Variable gespeichert (UART-Rx geht nicht, da auf PORTC das LCD 
hängen muss). Wenn ich "LCD_Print(0,0, x)"(x = Empfangenes Zeichen) 
kommt nur eine Fehlermeldung beim Compilieren(WinAVR/Make.exe). ASCII 
ist das Zeichen ja schon, d.h. itoa() o.ä. hilft mir nicht. Vielleicht 
hat es ja schon jemand von euch gemacht und könnte mir eventuell einen 
Tipp geben?

Danke im voraus, Michael

von Helmut -. (dc3yc)


Lesenswert?

Michael,

vielleicht hilft es ein wenig, wenn man die Fehlermeldung posten 
würde???????
Wie soll man denn dazu Tips geben?

Servus,
Helmut.

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Sorry,

die Fehlermeldung ist "test1.c:66: error: incompatible type for argument 
3 of 'LCD_Print'"
Im Angang sind die Routinen für das LCD.

Michael

von Karl H. (kbuchegg)


Lesenswert?

LCD_Print funktioniert wie ein printf


  LCD_Print( 0, 0, "%c", x );


> Wie ich die Tastaturdaten empfange, weiß ich schon, danach habe ich 8Bit
> in einer Variable gespeichert (UART-Rx geht nicht, da auf PORTC das LCD
> hängen muss).

Das, vor allem der letzte Satz macht mich stutzig. Bevor ich aber
nicht mehr darüber weiß, spare ich mir sonstige Kommentare dazu.

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Danke, die Fehlermeldung kommt nicht mehr.
Wenn ich das ganze mal laufen lasse, und eine Taste drücke 
passiert...nichts. Hier ist mal der ganze Code den ich(bzw. Ulrich 
Radig) geschrieben hab. Ich glaube der Fehler ist, dass ich warte, bis 
die Clock-Leitung auf HIGH gezogen wird, die Tastatur diese aber immer, 
außer beim Senden, auf HIGH HAT, d.h. es kann nich tun.
Ich denke, ich habe 2 Möglichkeiten: a) Signal extern invertieren b) auf 
LOW warten, problem: Befehl??
Vielleicht kennt einer von euch die Umsetzung für eine der Möglichkeiten 
oder weiß was anderes, schlaueres??

Michael

PS: Mein Code ist vielleicht ein wenig komisch, bin halt erst 14 und 
konnte deshalb noch keine 20 Jahre in C programmieren...

von Michael (Gast)


Lesenswert?

Aha..
wenn man loop_until_bit_is_set(WARTEPIN, WARTEBIT); durch 
loop_until_bit_is_clear(WARTEPIN, WARTEBIT); ersetzt, sieht das ganze 
schon anders aus. Nur wenn ich jetzt das ganze einschalte, kommen 
Kästchen und ein paar d. Nach einer weile beginnt sich alles zu bewegen 
SOS!!
Vor allem: das ganze kommt in der 2. Zeile, obwohl diese eigentlich ja 
nicht beschrieben wird...

Michael

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

oh, neuer Code..(nur geändert)

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.