mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 4X3 Matrix


Autor: XMEN (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
ich habe eine 4 x 3 Matrix über msp430 gebaut und wollte jetzt den Code 
(C Code) schreiben.
kann mir jemand helfen und erklären Schrittweise wie ich den Matrix in C 
programmiere?

ich bin euch für jede Hilfe sehr dankbar.

danke

Autor: fieser, klugscheissender Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Matrix in C programmiere?

Eine Matrix ist nichts anderes als ein zweidimensionales Array.


>4 x 3 Matrix

Eingänge oder Ausgänge?

Autor: XMEN (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich setze in der Tastaturmatrix die Spalten an den Port 1
und die Zeilen an den Port 3.

Dann schalte ich alle Zeilen (Port 3) auf Eingang, alle Spalten (Port 1)
auf Ausgang.

Autor: fieser, klugscheissender Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du willst also eine Matrix-Tastatur einlesen...

>Ich setze in der Tastaturmatrix die Spalten an den Port 1
>und die Zeilen an den Port 3.

>Dann schalte ich alle Zeilen (Port 3) auf Eingang, alle Spalten (Port 1)
>auf Ausgang.

(Mit dem MSP kenne ich mich nicht aus, deswegen die AVR-Variante:)
Die Ausgänge schaltest du auf Masse. Bei den Eingängen brauchst du dann 
den (hoffentlich vorhandenen) internen Pullup (einschalten!).
Wenn keine Taste gedrückt ist, werden die Eingänge als logsisch "1" 
gelesen.
Wurde eine Taste gedrückt, kann man die Zeile per (1<<x) (0<=x<=4) 
ausmaskieren.

Dann muß man die beiden Ports in ihrer Funktion umdrehen:
Eingänge werden zu Ausgängen und Ausgänge zu Eingängen.
Dann kann man auf gleiche Weise zur Zeile die Spalte herausfinden.

Die AVR240 von Atmel befasst sich mit dem Problem...

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist zwar für einen 8051-derivat und nicht besonders schön programmiert, 
aber es sollte einige deiner fragen beantworten.

http://freenet-homepage.de/sound-inside/UNI_stuff/...

pumpkin

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
fieser, klugscheissender Rahul schrieb:

> Bei den Eingängen brauchst du dann den (hoffentlich vorhandenen) internen
> Pullup (einschalten!).

nicht unbedingt. ist aber ne variante.

pumpkin

Autor: XMEN (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke euch erstmal. jetzt habe ich verstanden wie das funktioniert. 
jetzt werde ich mich mit C Code beschäftigen.
falls jemand Ideen hat bitte schön gern.

Autor: fieser, klugscheissender Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>falls jemand Ideen hat bitte schön gern.

Schreib nächstes Mal gleich hin, um welche Art Matrix es sich handelt. 
Schliesslich gibt es auch LED-Matrizen...

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[lame]
> Schreib nächstes Mal gleich hin, um welche Art Matrix es sich handelt.
> Schliesslich gibt es auch LED-Matrizen...

wie hoch ist wohl die wahrscheinlichkeit, dass er den gleichen thread 
nochmal erstellt? (aber du hast ja recht...)
[/lame]


> falls jemand Ideen hat bitte schön gern.

was für ideen? code ist im obigen rar-archiv, viel innovatives wird da 
nicht mehr kommen. spalten oder zeilen durchtoggeln, einlesen und 
auswerten.


pumpkin

Autor: XMEN (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry dein datei könnte ich nicht öffnen.

ich habe versucht ein Port als Eingang und andere port als Ausgang.

wenn ich ein Taste drücke schaue ich welche Pin ist dann aus High gesetz 
und von welchen Ausgang und dann interpretiere ich es.

zum beispiel:

int out[4] = {0x01,0x02,0x04,0x08};
int x = 0;

for(int count = 0 ; count < 4 ; count ++)
{
P5OUT = out[count];
switch(P1IN)
{

case 0x01: x=1; break;
case 0x02: x=2;  break;
case 0x04: x=3; break;
}
switch(count)
{
case 1: x=x+3; break;
case 2: x=x+6; break;
case 3: x=x+9; break;
}
leider klapt es nicht. weisst jemand woran das liegt?

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.