16-nyckel knappsatsen avkodning med en AVR MCU (4 / 7 steg)
Steg 4: Använda 74C922 att minska i/o-krav
74C 922 16-nyckel kodaren
Från datablad, MM74C922 kan använda en extern klocka för synkron tangentbordet scanning, har interna pull-ups, och har en inre debounce krets! Både sökhastighet och debounce tid kan konfigureras via en extern klocka eller kondensator. Det håller också den sista nyckeln tryckte på utgångarna även efter de viktigaste har varit deprimerad, ifall din MCU en stund och måste hämta värdet igen (åtminstone före nästa tangenttryckning). Driver från 3V till 15V så det integrerar väl i TTL och CMOS mönster.
Rader av knappsatsen är anslutna via dess inre pull-up motstånd när ingen nyckel har tryckts. När en tangent trycks chip går igenom det är Dämpningstid mekanism och när som tiden ute, kodade data är låst och DA pin (Data tillgänglig) går hög. DA pin stagen hög (logiska 1) tills nyckeln släpps, då den sjunker till en logisk 0. Det finns också en OE pin (Output aktiverat) som är inversen av DA PIN-koden.
74C922N pinut visas en schematisk jag har inkluderat nedan som bara visar denna IC. Jag har också tagit en Eagle Schematisk, även om knappsatsen enhetens rader och kolumner gjorde banan svår att tolka, så jag även min handskrivna Schematisk som jag gjorde när jag först började lekte med knappsatsen och 74C922. Förhoppningsvis kommer att en av dem klara upp eventuella anslutningsproblem, om du får någon.
Bygga kretsen
Sätta i din 74C922 till din skärbräda, någonstans nära men där är du inte för trångt. Om inte du är bekant med IC, ta en stund att undra över din nya blanka chip och märker att benen är utspärrade ut när de kommer ut ur fabriken. Det kan hjälpa att få det i bakbord om du lägger det på sidan med benen platt på bordet, och med en mild rullande rörelse något böja dem inåt. När du placerar din IC notera att det finns en rand eller divot på ena sidan. Det visar där pin en är.
Ansluta 0.1uF kondensatorer till stift 6 och 7 och ta dem till marken. Se nedan. Om du använder tantal kondensatorer minns de är polariserat så satte den positiva sidan (vanligtvis längre benet) närmast PIN-koden och den korta ben i marken terminalen.
N.B.
Kan du behöva leka med kondensatorerna för dina inställningar. Jag har hittat 1uF på oscillator och 10uF till 15uF (jag hade 3 parallellt) ger mig bästa lyhörd skanna med den minst debounce. Räkna ut för din inställning kan vara kul.
Nästa ansluta din makt komponenter. I detta skede har jag inte min ombord drivs. Det är bara lättare att göra dessa nu än efter du är ansluten alla ingångar och utgångar. Anslut Vcc (övre högra pin) till 5V, nedre vänstra pinnen till jord, samt OE-pinnen till jord. Vi kommer inte att bry sig om det denna gång. Se nedan.
Nu ansluta din data utgångar till din AVR. I bilden nedan har jag anslutit Data ut (göra) A till PD2, DOB till PD3, DOC till PD4 och DOD till PD5. Nu skulle vara en bra tid att ansluta Data tillgängliga pin (en rätt under OE du körde till marken till höger) till din mikrokontroller. Jag valde PD6. Fin sammanhängande block av i /. Om vi kunde veta att samma två siffrorna inte var in efter varandra kan vi lämna bort Data tillgänglig och bara avsöka data ut stiften. Det skulle minska våra tidigare behövs åtta I/O linjer till endast fyra! För fullständighetens är jag även det eftersom det är PIN-koden jag ska service med en pin change avbryta. Det är trevligare än polling och låter datorn göra andra saker istället för att vänta i loopar polling pin staten.
Slutligen, Anslut din input sladdar. Övre vänstra fyra stift gå till rader ett, två, tre och fyra. De två stift mellan kondensatorn och marken på det nedre vänstra ansluta till kolumn fyra och tre. På andra sidan, läsning från längst ner till höger, Anslut stiften till kolumn två och en. Emot att beställa! Anslut din knappsatsen om du gjorde en kabel för det och eld din microcontroller!