Wie schließe ich am besten eine 12 Tastatur an meinen Pic. Ich will direckt auf 4 Eingänge gehen und die Werte in hex auslesen die Tastatur hat 13 Anschlüsse 1 I /12 O. Nicht betätigte Tasten sollen 0xF ausgeben damit die 0 frei bleibt. Gibt es ein TTL Baustein BCD to HEX? oder muß ich sie mit z.b. dioden selbst Codieren? Kann natürlich auch ein seperaten Pic dafür verwenden was meint ihr?
12 Ausgänge der Tastatur auf 4 Eingange eines PIC hört sich für eine direkte Verbindung sportlich an. Die Idee mit BCD/HEX-Konverter dazwischen hört sich vernünftiger an, wenn es ein Tastatur => Hex-to-BDC Konverter => PIC Aufbau ist. Dann bestehte die Chance, dass du mit der Leitungszahl aus kommst. Selbstkodieren wäre eine Option, wenn du die Tastatur als Matrix schalten kannst, so wie es in der Artikelsammlung erklärt ist. Leider hast du kein Datenblatt angegeben. Deine 1 In/12 Out Beschreibung lässt mich an der Machbarkeit Selbstkodieren zweifeln. Seperater µC (zur Not auch Pic :-) geht immer.
Paul schrieb: > die Tastatur > hat 13 Anschlüsse 1 I /12 O. Dumm gelaufen. Besser wäre ne Matrix-Tastatur 3*4, dann brauchts nur 6 IO-Pins. Oder +6 Widerstände an einen analog Input. Peter
Hallo Paul, wenn Du EINEN analogen Eingang frei hast, wäre ein DA-Wandler aus Widerständen einen Versuch wert. Aus 13 Rs machst Du eine Spannungsteilerkette zwischen Vcc und GND, an die 12 Knoten schließt Du Deine Tastenleitungen an. Da klappt solange, wie nur eine Taste gedrückt wird... Anderer Ansatz: Drei Deiner Leitungen steuern ein 12-Stufen-Schieberegister (z.B. 2x74HC164). Damit schiebst Du ein Bit an den 12 Leitungen vorbei und schaust mit der 4. Leitung, ob es an der Tastatur durchgeschaltet ist. Da brauchst Du zwar zwei externe ICs, aber Du kannst auch erkennen, wenn mehrere Tasten gleichzeitig gedrückt werden. (Oh, mit Einschränkungen, da würden noch 12 Dioden und ein Widerstand fehlen, da sonst 0 und 1 der Registerausgänge gegeneinander getrieben werden.) Bei Bedarf kann ich Dir das als Schaltplan skizzieren. Gruß Jens
Ich nochmal, nicht zu Ende gedacht... Mit 2 x 74HC165 (Auch Schieberegister, aber mit parallelem Eingang und seriellem Ausgang) kommst Du direkter zum Ziel. Die In-Leitung der Tasten auf Masse, die 12 Out-Leitungen an die parallelen Eingänge der zwei hintereinander geschalteten Schieberegister (Q des einen an Serial Input des anderen). Und Du wirst Pullups brauchen, um die offenen Eingänge bei nicht gedrückter Taste festzulegen. 10k oder so. Bei dieser Lösung reichen Dir 3 Leitungen: Tasten parallel ins Register einlesen (Load), Register takten (Clock) und serielle Daten in den Prozessor lesen (Q). Diese letzte Lösung scheint mir angemessen: Keine Spezialbauteile (auch wenn man ein 74HCxx heute dafür halten könnte;-) ), keine Tricks. Wenn Du Platz für die zwei ICs hast.... Und vier unbenutzte Eingänge an einem Schieberegister fallen auch noch mit ab. Gruß Jens
diodenmatrix ! com - GND taste 1 - kat / an bit 0 taste 2 - kat / an bit 1 taste 3 - kat / an bit 0 taste 3 - kat / an bit 1 taste 4 - kat / an bit 2 taste 5 - kat / an bit 0 taste 5 - kat / an bit 2 taste 6 - kat / an bit 1 taste 6 - kat / an bit 2 taste 7 - kat / an bit 0 taste 7 - kat / an bit 1 taste 7 - kat / an bit 2 taste 8 - kat / an bit 3 taste 9 - kat / an bit 0 taste 9 - kat / an bit 3 taste 10 - kat / an bit 1 taste 10 - kat / an bit 3 taste 11 - kat / an bit 2 taste 11 - kat / an bit 3 taste 12 - kat / an bit 1 taste 12 - kat / an bit 2 taste 12 - kat / an bit 3 da gnügen 3 bits welche mit je einem Pullup hochgehalten werden den Rest machs du im MC mit look ap du kannst natürlich ach anders kodieren und die lookup weglassen
Danke für die Antworten. Winfried J. 0-3 sind 4 (Bits) habe es och so gedacht funktioniert aber nicht so ohne weiteres da ich die 0 Taste Null mit den wert 0 habe und im Ruhezustans alle pins auf H.
Schaltung V1.0 ist Fertig mit Passic OR technik die ich zum Schluß mit Transestoren invertiere. die Rote Diode brauch man nicht umbedingt. suche aber noch verbesserungen.
o.k. klar 4 bit war doch schon spät alle auf high ruhezustand gibt 0xf com an GND spart die invertierung mit transistoren und den widerstandsfriedhof taste 0 kathode anode bit 0 taste 0 kathode anode bit 1 taste 0 kathode anode bit 2 taste 0 kathode anode bit 3 taste 1 kathode anode bit 1 taste 1 kathode anode bit 2 taste 1 kathode anode bit 3 taste 2 kathode anode bit 0 taste 2 kathode anode bit 2 taste 2 kathode anode bit 3 taste 3 kathode anode bit 2 taste 3 kathode anode bit 3 taste 4 kathode anode bit 0 taste 4 kathode anode bit 1 taste 4 kathode anode bit 3 taste 5 kathode anode bit 1 taste 5 kathode anode bit 3 taste 6 kathode anode bit 0 taste 6 kathode anode bit 3 taste 7 kathode anode bit 3 taste 8 kathode anode bit 0 taste 8 kathode anode bit 1 taste 8 kathode anode bit 2 taste 9 kathode anode bit 1 taste 9 kathode anode bit 2 taste a(10) kathode anode bit 0 taste a(10) kathode anode bit 2 taste b(11) kathode anode bit 0 taste b(11) kathode anode bit 1 so gehts direkt und ohne lookup für bin Du must die Diode für das Bit welches jeweils angezeigt werden soll weglassen, auch andere Kodierungen z.B. Gray oder BCD sind so möglich. kannst dir auch einen eprom brennen wenn dir löten zu langweilig ist Taste an Adresse data an MC Eingang Nachteil all solcher Coder du darfst jeweils nur eine Tase drücken. Besser ist es multiplexfähige Tastaturen zu benutzen oder jeder Taste ein eigenes bit zu spendieren. Ein eigener Tiny welcher über I2C das ergebniss ausgibt und noch andere Ereignisse wie hold oder release meldet wäre hier sinnvoll. viel spass
Danke nochmals ach Ja ich habe die Tastatur von Ebay Artikelnummer: 220878455035 2€ das Stück Ich habe die Schaltung auf das Maximum mit 3 Zusats Tasten erweitert. Wenn 2 Tasten Gedrückt werden kann man das mit den Pic überptüfen in dem man testet ob bei einen Wechsel der Wert 0xF dabei war. Die Roten Dioden brauch man nicht unbedingt. Bei der Oberen Schaltung kann man die Inventierung auch im Pic machen hat den vorteil man kann mit 0x0 (ungleich null = taste getrückt)testen ob eine taste getrückt ist und inventiert dann das Eingangssignal.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.