-         

Ergebnis 1 bis 2 von 2

Thema: Tastenmatrix - Verstärkerschaltung

  1. #1

    Tastenmatrix - Verstärkerschaltung

    Anzeige

    Hallo,

    für mein derzeitiges Schulprojekt brauche ich eine RGB-LED-Matrix mit Tastern unter den LED's. Dazu verwende ich das Sparkfun ButtonPad 4x4 mit der entsprechenden Platine. Leider haben die Taster einen Widerstand von ca. 100K, was dazu führt, dass mein Controller AT89C5131A-S3SUM das Signal nicht mehr erkennt, da zu wenig Strom fließt. Daher habe ich mir eine Verstärkerschaltung gebastelt:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Schaltplan 2.png
Hits:	6
Größe:	10,2 KB
ID:	24967

    Die Anschlüsse P0.4 bis P0.7 führen auf den Controller. Die Anschlüsse Row0 bis Row3 führen auf die Zeilen meiner Tastermatrix. Das ganze funktioniert auch soweit, der Controller erkennt die Signale. Solange der Controller eine 1 auf der der entsprechenden Spalte ausgibt, kommen die Zeilensignale an. Jetzt muss ich ja um alle Taster zu erkennen quasi wie beim Multiplexen vorgehen, eine Spalte nach der anderen freigeben und die Zeilensignale auslesen. Das Problem ist jetzt, dass ich manchmal wieder falsche Signale erhalte. Beim loslassen des Tasters, erkennt der Controller plötzlich ein Signal auf allen Spalten und den unteren drei Zeilen, egal welchen Taster ich drücke.

    Folgenden Code verwende ich zum auslesen, wobei BUTTON_MATRIX dem Port entspricht, an dem die Matrix angeschlossen ist:
    Code:
    buttonGet:	push PSW			;PSW retten
    			clr RS1				;Registerbank 0 wählen
    			clr RS0
    			push AR0
    			push AR1
    			push AR2
    			
    			mov R0,#4
    			mov R1,#11111110b
    			
    bGLoop:		mov BUTTON_MATRIX,R1
    			mov A,BUTTON_MATRIX
    			anl A,#11110000b
    			cjne A,#0,bGLoopP
    			sjmp bGLoopC
    
    bGLoopP:	mov R2,BUTTON_MATRIX
    			xch A,R2
    			cpl A
    			anl A,#00001111b
    			orl A,R2
    			sjmp bGRet
    			
    bGLoopC:	mov A,R1
    			rl A
    			mov R1,A
    			djnz R0,bGLoop
    			
    bGRet:		mov BUTTON_MATRIX,#11110000b	;Zeilen freigeben, Spalten aktivieren
    			pop AR2
    			pop AR1
    			pop AR0
    			pop PSW				;PSW wiederherstellen
    			ret
    Als Rückgabewert erhalte ich manchmal als falschen Rückgabewert im Akku 11101111b. Habe ich jetzt etwas im Code falsch gemacht, oder ist meine Hardware mal wieder suboptimal, wäre ja nicht das erste Mal.

    Vielen Dank für jede Hilfe.

    MfG
    Der Eisvogel

  2. #2
    Hallo,

    also ich habe das Problem ebens selbst lösen können. Die Verstärkerschaltung ist doch hinfällig. In der Tastenmatrix befinden sich Dioden um Rückkopplungen zu verhindern, diese sollte man nach Möglichkeit immer in Durchlassrichtung verwenden und nicht umgekehrt, ich musste nur Spalten- und Zeilensignale tauschen und schön hat der Controller es erkannt.

    Danke an alle die sich mit dem Thema auseinandergesetzt hatten.

    MfG
    Der Eisvogel

Ähnliche Themen

  1. Tastenmatrix 3x4 mittels Interrupt abfragen?
    Von ledi im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 30.08.2010, 12:23
  2. Wer hilft mir eine Tastenmatrix 3X4 am Atmega 8 in Gang zu .
    Von nase im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 11
    Letzter Beitrag: 15.10.2007, 00:58
  3. Antworten: 0
    Letzter Beitrag: 16.08.2007, 10:17
  4. Tastenmatrix
    Von Mr-400-Volt im Forum Software, Algorithmen und KI
    Antworten: 3
    Letzter Beitrag: 07.01.2007, 05:05
  5. Verstärkerschaltung
    Von heiko9382 im Forum Elektronik
    Antworten: 16
    Letzter Beitrag: 09.09.2004, 08:19

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •