Archiv verlassen und diese Seite im Standarddesign anzeigen : 4x4 Matrixtastatur
surf_andre
23.10.2005, 13:00
Hallo zusammen,
ich bin gerade dabei mir eine kleine Eingabetastertur zu abbauen 0-9, *, #, a-d.
Da ich ein 89s53 mit bus system habe wollte ich die Tastatur mit an den bus legen und sie über einen Adressdekoder ansprechen. Nun stellte sich halt das problem wie dekodiere ich die Tastatur....
Ich bin bei meinen überlegungen nun soweit gekommen das ich einen 2051 diese sache machen lasse wollte. Die Tasten über eine 4x4 dekodiermatrix an den µC und dann die daten als 4bit nibbel auf den Bus. Wenn ich mich da nicht verzählt habe ist da noch ein pin frei für den CS.
hat das schon mal jemand gemacht?
Oder gibt es da einfache IC-Gräber? Andere Möglichkeiten
Mfg André
haeng an den Bus logisch gesehen etwas 'externe Memory':
Eingaenge als 74HC541 zum Lesen und Ausgaenge als 74HC573 zum Schreiben - Rest ist SW.
surf_andre
23.10.2005, 14:46
Stimmt eigentlich ne ganz einfache idee.... Hätte mir auch einfallen können... Aber wenn man den Wald vor lauter bäumen nicht sieht passiert sowas schon mal....
Werde mir mal so ein paar gedanken über den vorschlag machen....
Danke für die Blickfelderweiterung..
mfg andré
ein Beispiel mit 16 Ausgaengen findest du bei mir im Forum:
MC-Hardware-> 7-Segm.-Anz. auf Microcontrollerbus
surf_andre
23.10.2005, 16:58
Bin schon am Layouten mit den beiden 573 / 541... mal schauen was dabei rauskommt
surf_andre
23.10.2005, 23:11
Bei der Sache hier mit der Tastatur... Wie ist das eigentlich mir der adress dekodierung?
Normal nimmt man ja nen 138 der macht aber recht große schritte (2048 adressen ) wie bekommt man das denn in kleineren schritten hin?
habe da mal was von gal´s gehört. Wird das mit denen gemacht?
Wenn du kein ext. RAM (sondern nur ext. EPROM) hast, dann kannste doch die Adressen eins und zwei nehmen. Gleichzeitig sind das aber auch exclusiv die Adressleitungen selber - was willste da noch grossartig decodieren?
surf_andre
24.10.2005, 17:18
habe da mal was gesehn das man die z.b die adressen von 9xxxh für ausgänge genommen hat und die ab axxxh für eingänge und das ganze war nicht nur eine ausgangskarte sondern zwei oder drei die adresse der karte wurde per jumper auf karte selbst gesteckt. Ich muß doch einer karte z.b. 9a00h als adresse geben können und nicht nur 9000h.
z.b.
1 Ausgangskarte hat 9000h
2 Ausgangskarte hat 90a0h
3 ausgangskarte hat 90f0h
Eine Adresse fuer Ausgaenge und eine Adresse fuer Eingaenge reicht doch fuer mindestens e. Matrix von 8x8.
Mit Dioden koennte man noch mehr rauskitzeln... ;)
surf_andre
24.10.2005, 22:38
ja für die tastatur...
und wenn ich noch mehr schalten möchte? oder mehr eingänge abfragen muß?
muß doch da ne möglichkeit geben....
oder wie vergleiche ich am besten eine acht adresse und die anliegt und eine die ich irgendwie vorgebe...
das läuft auf Porterweiterungen hinaus (PIObausteine) oder handgeschmiedet, Adressdekoder schnitzen, und Datenbus latchen..... ein chipfriedhof basteln. besser nen 2. µc nur für IOs verwenden und den slave "nach hause"( zum master) telefonieren lassen. So war das mal gedacht mit den µC, und nicht als PC-Ersatz :p
surf_andre
24.10.2005, 23:00
Ich habe nun was gefunden was glaube ich gut paßt. Ist noch nicht mal ein Friedhof sondern für 8 bit nur ein Liegeplatz... ( 1IC )
ist ein 8bit vergleicher vom typ 74hct688 ist glaube ich genau das was ich suche.... noch mal genau nach schauen
ja, 688 oder 74F521 gehen als 'Card-Select'. Wenn du viele CEs brauchst, dann ist wirklich ein GAL die einfachste Loesung dafuer. Schaltbeispiele findest du bei den alten ISA-Bus Karten oder auch SMP-Bus, ECB-Bus etc. - ist alles uralt und verpoent :D
surf_andre
25.10.2005, 00:06
Denke mal ich werde das erst mal mit dem 688 testen, denn wenn ich mir überlege das ich noch mit der gal programmierung anfangen muß, programmiergerät bauen, dann kann ich auch bald nen 2051 zur adressdekodierung nehmen... ( den kann ich wenigstens ohne lernen programmieren und die hardware ist auch vorhanden) Ist zwar ne Verschwendung aber fast die günstigeste alternative.
aber den 688 ist erst mal favorit... Schon in der liste für die nächste R... bestellung.
mfg André
denn wenn ich mir überlege das ich noch mit der gal programmierung anfangen muß, programmiergerät bauen, dann kann ich auch bald nen 2051 zur adressdekodierung nehmen...das verstehe ich jetzt wiederum nicht: bei GALs, 688, 521 geht sowas in nanosekunden ab, beim 2051 bestenfalls in µs, das kann man doch garnicht vergleichen :confused:
surf_andre
25.10.2005, 00:15
:rolleyes: Stimmt jetzt wo du es sagst und ich noch mal drüber nach denke war der beitrag etwas verwirrt...:confused: ... Ist ja auch schon spät am tag....
Dann streichen wir den da über dir
das geht so: mit dem 688er machste den Card-Select, dazu vergleichste den Adressbus mit einem Maeuseklavier, die untersten Adressbits (z.B. vier Stueck) laesste aber offen. Wenn der Vergleicher (2 Stueck kaskadiert = 16bit) sein o.k. gibt, dann wird mit dem GAL aus den untersten vier Adressleitungen und R/W 16 ChipEnable -oder wieviel du brauchst- erzeugt.
oder was ganz anachronistisches: benutze die PIO 71055 - gibts die eigentlich noch?
surf_andre
25.10.2005, 23:16
Ja so ähnlich wollte ich das nun machen...
wollte einen festen bereich nehmen z.b.
90xxh für ausgänge
A0xxh für eingänge
über nen 138
und die xx durch den 688 dekodiernen lassen und mit der eingestellten Adresse vergleichen und das gleichheitssignal vom 688 und das CS vom 138 zusammenfassten über ein gatter. Und das ist das CS oder EN für die die eingangskarte...
Wenn ich das so richtig sehe dann habe ich dann theoretisch 16 mögliche Ein- und Ausgänge...
mfg
André
surf_andre
30.10.2005, 21:53
So das ist nun erstmal aus dem Schmalz geworden ....
Ist eine Ausgabe für 8bit
hat eine feste Highadresse von 90xx Hex
und eine einstellbare Lowadresse von 00 - FF Hex.
Aus der Schaltung, die ich für meine Ausgaben nehmen will, und aus der Eingabeschaltung ( die muß ich noch mal Zeichen ) soll dann die Matrixtastatur werden....
http://de.geocities.com/surftier/bilder/Ausgang.GIF
mfg andré
Schoen, und nicht vergessen:
Pin1 vom 688 an Potential und: D0-D7 sind gemultiplext mit A0-A7, Schalter ist ALE (Address Latch Enable), falls Leiterbahnen laenger als ein paar Zentimeter werden: Bustreiber einsetzen (541, 245 etc.)
surf_andre
30.10.2005, 23:34
Naja fast...
hätte dazu schreiben sollen das in meinem system daten und adressen getrent auf nen busbackplane laufen. d.h. das das so eigentlich richtig ist das die adressen und die daten getrennt laufen.
was meinst du mit ale ? das habe ich nicht ganz verstanden...
das mit dem pin1 hatte ich vergessen danke...
mfg andré
ach das haste mit Bus-System gemeint.
Die urspruengliche 8051er Serie hat Steuersignale fuer ein Bussystem: Der Zustand an Pin ALE beispielsweise zeigt an, ob gerade Daten oder A0-A7 an Port0 anliegen.
surf_andre
31.10.2005, 01:09
Hm, nun hast mich etwas verwirrt...
geht das nun nicht so wie ich das meine?
oder sollte man den ALE noch für was verwenden?
mfg Andrße
es ist alles schon getan, wenn du ein Busbackplane hast.
Um ALE brauchste dich nicht mehr zu kuemmern, da ja die Adressen und Daten schon getrennt (demultiplext) worden sind :)
surf_andre
31.10.2005, 01:29
Ahso na dann is ja gut....
Werde mal den anderen plan auch fertig machen und dann auch mal reinstellen...
zumindest den von der tastatur
Powered by vBulletin® Version 4.1.7 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.