www.mikrocontroller.net

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


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Helmut -dc3yc (dc3yc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael,

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

Servus,
Helmut.

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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...

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
oh, neuer Code..(nur geändert)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.