Stap 4: Voorbeeld #2: [INPUT]
Zo vreemd als het klinkt, behandeling van meerdere digitale ingangen met een shift register is bijna hetzelfde als de behandeling meerdere uitgangen. Laten we eens kijken op het circuit in de eerste, dus ik kan uitleggen hoe het werkt.
Dioden worden toegevoegd aan het beschermen van de uitgangen van het shift register, aangezien meerdere hoge ingangen kunnen kortsluiting veroorzaken. PB3 is verbonden met de grond door middel van een 10K Ohm weerstand (logische 0 wanneer geen kanaal gevonden).
Het algemene idee is om het verzenden van een bepaalde set van data-bits tot de shift register en als er een bitsgewijze match met de input - zullen we hoog signaal op PB3. Bijvoorbeeld, hebben we een 8-bits input 0x91, die is 10010001 in binary.
We beginnen met het verzenden van 0x01 naar het shift register (0b00000001) en zien als de eerste bit 1 is. Als we een match (PB3 is hoog), voeren wij OR-bewerking van de input aan het resultaat. Daarna, we de testgegevens 1 bit naar links verschuiven, zodat we 0x02 (0b00000010 krijgen) en herhaal de procedure om het verwerven van de tweede bit, dat geeft geen wedstrijd en resulteert in logische 0... enzovoort totdat we testen alle 8 bits.
Shift Register | PB3 | Resultaat |
---|---|---|
00000001 | 1 | 00000001 |
00000010 | 0 | 00000001 |
00000100 | 0 | 00000001 |
00001000 | 0 | 00000001 |
00010000 | 1 | 00010001 |
00100000 | 0 | 00010001 |
01000000 | 0 | 00010001 |
10000000 | 1 | 10010001 |
Deze techniek maakt het mogelijk om te lezen van redelijk grote waaier van ingangen ten koste van overname snelheid alleen. Het hoeft niet elke extra pinnen, dus het is een perfecte oplossing voor lage snelheid toepassingen, zoals toetsenborden, schakelborden, of zelfs lage snelheid digitale sensoren. Het aantal gebruikte pinnen kan verder worden teruggedrongen, als wij alternatieve seriële Data pin van de microcontroller tussen digitale uitgang en digitale ingang (in plaats van PB3).
Voor onze volgende voorbeeld zullen we bijna identieke circuit moet worden gebruikt, maar in plaats van digitale ingangen en transistors zullen we gebruik maken van eenvoudige tactiele schakelaars.