Hallo Leute,
Ich möchte u.a. gerne eine 3x4 Matrix Tastatur mit meinem Atmega8 zu
verbinden.
Als Denkanstoß dient mir dabei ein C-Code hier aus dem Forum.
http://www.mikrocontroller.net/attachment/48476/matrix3x4.c
Dazu habe ich ein paar Fragen und würde mich freuen, wenn ihr mir helfen
könntet.
1. u8 findet die selbe Verwendung wie unsigned char. richtig?
2. Wie binde ich diese Datei in meinen C-Code ein? In "int main" oder
gehört das noch davor?
3. Wie kann ich die eingegebene Zahl auf einem Display darstellen?
mit lcd_string(col-row);?
Vielen Dank für eure Mühe
Gruß Micha
Michael Lambertz schrieb:> 1. u8 findet die selbe Verwendung wie unsigned char. richtig?
In dem Fall ist es besser das u8 gegen ein char auszutauschen. Schau dir
den Arrayinhalt an. Lauter Character. Also sollte man auch den richtigen
Datentyp dafür nehmen. Eben char
> 2. Wie binde ich diese Datei in meinen C-Code ein? In "int main" oder> gehört das noch davor?
Kopier den Inhalt vor deine main.
Das ist eine Funktion, die aufgerufen werden will.
> 3. Wie kann ich die eingegebene Zahl auf einem Display darstellen?> mit lcd_string(col-row);?
No.
VOn der Funktion kriegst du offenbar eine Nummer zurück. Diese Nummer
ist die Nummer der Taste. Aus dem MXKEY_TAB Array kriegst du dann direkt
das zugehörige Zeichen als Character. Den mann dann natürlich ausgeben
kann.
uint8_t keyNr = keyscan();
lcd_putc( MXKEY_TAB[keyNr] );
Hallo,
Ich hab meinen C-Code dementsprechend umgeschrieben. (s.Anhang)
Leider klappt die LCD-Ausgabe nicht so recht.
Auf dem kompletten Display tauchen nur ungewöhnliche Zeichen auf.
Der Mikrocontroller erkennt zwar einen Tastendruck, kann den aber nicht
verwerten, bzw. auf dem Display darstellen und gibt ein anderes Zeichen,
anstatt einer Ziffer aus.
Vielleicht weiß einer von euch, wo ich den Fehler gemacht habe.
Danke und Gruß
Michi
Klappt leider immernoch nicht :(
Ich dank dir aber für deine Mühe, Karl-Heinz.
Hast mir sehr geholfen.
Ich werd mir wohl einen anderen Lösungsweg suchen müssen.
Bis dann...
Michael Lambertz schrieb:> Klappt leider immernoch nicht :(
Was heißt: klappt immer noch nicht.
Welche Zahlen stehen den für 'Code' dort? Da dürfen nur zahlen von 1 bis
12 auftauchen.
> Ich werd mir wohl einen anderen Lösungsweg suchen müssen.
Wie wärs mit: den vorhandenen Code reparieren? Bisweilen sollen
Programmierer sowas sogar machen! Oder kaufst du immer gleich ein neues
Auto, wenn die Radkappen schmutzig sind? Vorausstzung ist natürlich,
dass derjenige, der am Motor rumschraubt zumindest weiß, wie rum man
einen Schraubendreher anfasst.
Karl Heinz Buchegger schrieb:> Was heißt: klappt immer noch nicht.>> Welche Zahlen stehen den für 'Code' dort? Da dürfen nur zahlen von 1 bis> 12 auftauchen.
Die LCD-Ausgabe klappt leider immer noch nicht.
Jetzt tauchen keine Zeichen mehr auf, sondern alle Felder des Displays
sind nun komplett schwarz. Tastendruck wird auch nicht mehr erkannt.
Hab schon verschiedene Befehle für die LCD-Ausgabe versucht.
Michael Lambertz schrieb:> Die LCD-Ausgabe klappt leider immer noch nicht.
Dann solltest du dich zuerst mal um das LCD kümmern, anstatt da einen
2-Fronten Krieg zu inszenieren, den du nicht gewinnen kannst.
Ich bin bisher eigentlich schon davon ausgegangen, dass du dein LCD
unter Kontrolle hast, wenn du nach einer Tastatur-Matrix frägst.
Karl Heinz Buchegger schrieb:> Ich bin bisher eigentlich schon davon ausgegangen, dass du dein LCD> unter Kontrolle hast, wenn du nach einer Tastatur-Matrix frägst.
Bisher hat die Anzeige auf dem LCD auch hervorragend funktioniert.
Eine AD-Wandlung mit Anzeige der Messergebnisse funktionierte bisher
problemlos.
Hast du möglicherweise eine Erklärung, warum das oben beschriebene
Ereignis beim Display eintreten kann?
Michael Lambertz schrieb:> Hast du möglicherweise eine Erklärung, warum das oben beschriebene> Ereignis beim Display eintreten kann?
zb dadurch, dass I/O Pins vom LCD mit I/O Pins vom LCD im Clinch liegen.
zb dadurch, dass unsauber programmiert wurde und Pins irrtümlich
verändert werden, die gar nicht verändert werden sollen bei einem
Zugriff.
Du hast Recht, Karl Heinz.
In der lcd.h Datei hatte ich einige Ports gemeinsam sowohl für das LCD
als auch für die Tastatur konfiguriert, was ich nicht berücksichtigt
habe.
Nach tagelangem Suchen und Rumprobieren habe ich den vermeintlich
"einfachen" Fehler also doch noch gefunden.
Danke...