Toetsenborden zijn veelgebruikte invoerapparaten die worden gebruikt in verschillende elektronica- en embedded projecten. Ze worden gebruikt om input te nemen in de vorm van getallen en albhabets, en deze in het systeem te voeden voor verdere verwerking. In deze tutorial gaan we een 4x4 matrix toetsenbord koppelen aan een 8051 microcontroller.
4X4 Matrix-toetsenbord
Voordat we het toetsenbord met de microcontroller verbinden, moeten we eerst begrijpen hoe het werkt. Matrix-toetsenbord bestaat uit een reeks drukknoppen die onderling zijn verbonden. Net als in ons geval gebruiken we een 4X4 matrix toetsenbord, waarin er 4 drukknoppen in elk van de vier rijen zijn. En de klemmen van de drukknoppen zijn aangesloten volgens schema. In de eerste rij is een terminal van alle 4 drukknoppen met elkaar verbonden en een andere terminal met 4 drukknoppen vertegenwoordigt elk van de 4 kolommen, hetzelfde geldt voor elke rij. We krijgen dus 8 terminals om verbinding te maken met een microcontroller.
Interfacetoetsenbord met 8051 microcontroller (AT89S52)
Eerst moeten we een LCD-module aansluiten om de gegevens weer te geven die via KEYPAD worden ingevoerd, dus lees het artikel "LCD-interface met 8051 Microcontroller" voordat u KEYPAD koppelt.
Zoals weergegeven in het bovenstaande schakelschema, moeten we om het toetsenbord te koppelen 8 terminals van het toetsenbord aansluiten op een willekeurige poort (8 pinnen) van de microcontroller. Alsof we toetsenbordaansluitingen hebben aangesloten op poort 1 van 8051. Telkens wanneer een knop wordt ingedrukt, moeten we de locatie van de knop krijgen, wat betekent dat de corresponderende RIJ en KOLOM nr. Zodra we de locatie van de knop hebben, kunnen we het personage dienovereenkomstig afdrukken.
Nu is de vraag hoe je de locatie van de ingedrukte knop kunt krijgen? Ik ga dit in onderstaande stappen uitleggen en wil ook dat je naar de code kijkt:
1. Eerst hebben we alle rijen op logisch niveau 0 gemaakt en alle kolommen op logisch niveau 1.
2. Telkens wanneer we op een knop drukken, worden kolom en rij die overeenkomen met die knop kortgesloten en wordt de corresponderende kolom naar logisch niveau 0. Omdat die kolom wordt verbonden (kortgesloten) met de rij, die zich op logisch niveau 0 bevindt. kolom nr. Zie main () functie.
3. Nu moeten we het rij nr. Vinden, dus hebben we vier functies gemaakt die overeenkomen met elke kolom. Net als wanneer een knop van kolom één wordt ingedrukt, noemen we de functie row_finder1 () om het rij nr.
4. In de functie row_finder1 () hebben we de logische niveaus omgekeerd, wat betekent dat nu alle rijen 1 zijn en kolommen 0. Nu moet de rij van de ingedrukte knop 0 zijn omdat deze is verbonden (kortgesloten) met de kolom waarvan de knop is ingedrukt, en alle kolommen hebben logica 0. We hebben dus alle rijen gescand op 0.
5. Dus als we de rij vinden op logische 0, betekent dat de rij met ingedrukte knoppen. Dus nu hebben we kolom nr (in stap 2) en rij nr., En we kunnen nr. Afdrukken. van die knop met behulp van de lcd_data-functie.
Dezelfde procedure volgt voor elke druk op een knop, en we gebruiken while (1) om continu te controleren of de knop is ingedrukt of niet.