4x3 4x4 Matrix-Tastatur-Schnittstelle mit Atmel AVR-Mikrocontroller
Wie es alles zu tun, mit AVRs
Jede I / O Port in AVR hat drei miteinander verbundene Register PORTx, DDRx und PINx. Zum Beispiel hat Port A
- PORTA Port Driver - wenn irgendein Bit auf 1 gesetzt ist scheint es, als HOCH heißt 5v. Aber dies ist nur der Fall, wenn die Bit-Ausgabe ist. Wenn er eingegeben ist, ermöglicht dieses Bit auf das interne Pull-up jedes Bit auf 1 zu setzen.
- DDRAD ATA D IRECTION R egister - Nehmen Sie die Pin auf als Port als IN oder OUT. Wenn Bit 1 repräsentiert es Ausgang. Wenn Bit 0 repräsentiert es Eingang. Eingabezustand wird auch Tristate oder hohen Z-Zustand genannt.
- PINA - Lesen Sie den Pegel (HIGH oder LOW) bei dem aktuellen I / O-Pin zu erhalten. Es wird gelesen, wenn der Stift-Eingabe gemacht wird.
So, jetzt wissen Sie
- Wie jede I / O-Leitung Eingang (High Z) oder Ausgang zu machen.
- Wie internes Pull-up-Register auf den Eingangsleitungen zu ermöglichen.
- Wie lesen Wert, der auf den Eingangsleitungen vorhanden ist.
Bitte beachten Sie die folgende Anleitung, um weitere Klarstellung.
Warum machen wir andere Spalten hohe Impedanz während einer Spalte LOW gemacht wird?
Können sagen, wir Spaltennummer C0 ausgewählt, so machen wir es LOW (d. GND oder logisch 0), in der gleichen Zeit, dass wir alle anderen Spalten mit hoher Impedanz (d-Eingang) zu machen. Wenn wir im Ausgabemodus nicht andere Leitungen mit hoher Impedanz (Tri-State-oder Input) machen sie sind. Und im Ausgabemodus müssen sie entweder LOW (GND oder logisch 0) oder HIGH (5 V oder logisch 1) sein. Wir können keine andere Linien LOW machen, wie wir nur eine Zeile zu einem Zeitpunkt auswählen und C0 bereits niedrig wie pro Annahme. So ist die einzige andere mögliche Zustand ist alle anderen Spalten hoch sind. Dies ist unten in Abbildung dargestellt. Rote Farbe auf Spalte zeigt hohen Zustand, während grün für Low-Zustand ist.
Deshalb werden alle anderen Spalten werden bei Tri-State gehalten (weder niedrig noch HIGH), aber sehr hohe Eingangsimpedanz, die entweder Quelle oder Senke von Strom von ihnen verhindern. Wenn wir also C1 bei hochohmigen Zustand gehalten, es wird nicht Strom erlauben, GND auf C0 zu fließen.
avr-gcc C-Code für 4 × 3-Matrix-Tastatur
Der obige Code nutzen die LCD-Bibliothek. Sie können hier weitere Informationen über LCD-Bibliothek erhalten: -
Hardware für 4 × 3-Matrix-Tastatur und AVR-Schnittstelle.
Die Testschaltung wird um ATmega32microcontroller gebaut werden. Die Ausgabevorrichtung wird eine 16 × 2 LCD-Modul E sein. So haben wir eine grundlegende ATmega32 Schaltung auf. Die Schaltung wird die folgende: -
- ATmega32 MCU
- 16MHz Kristall
- Reset Circuit.
- 5 V Stromversorgung Circuit.
- ISP (für Programmierung)
- LCD-Modul.
- Contrast LCD-Modul einstellen Topf.
ATmega32 + LCD + Tastatur-Schnittstelle.
Wir haben die obige Schaltung auf einem Low-Cost-AVR Development Board gebaut. aber es hat nicht eingebauten LCD-Modul-Anschluss, so dass Sie brauchen es zu löten selbst am freien Bereich (und tun auch die Verkabelung).
Kompilieren Sie das obige Programm mit AVR Studio (Compiler avr-gcc). Und brennt schließlich das Programm mit einem beliebigen ISP Programmer an den ATmega32. Die Sicherungs Bits müssen wie folgt eingestellt werden externe Kristall zu ermöglichen, als Taktquelle.
- Hohe Sicherung = C9 (Hex-Wert)
- Low Sicherung = FF (hex-Wert)
die HEX-Datei zu MCU nach dem Brennen, schließlich sind Sie bereit, um das Setup an der Macht. Beim Einschalten soll der LCD-Bildschirm zeigt Ihnen den Schlüsselcode der Taste auf der Tastatur gedrückt wird. Dies ist unser Test abgeschlossen.
Fehlerbehebung
- NEIN Anzeige auf dem LCD
- Stellen Sie sicher, AVR Studio-Projekt eingerichtet ist für Taktfrequenz von 16 MHz (16000000Hz)
- Stellen Sie den Kontrast Adj Pot.
- Drücken Sie Reset einige Male.
- Power On / Off paar Mal.
- Schließen Sie das LCD nur wie oben auf Plan abgebildet.
- Keine Reaktion auf Tastendruck.
- Überprüfen Sie, ob Tastatur nur auf PORTA verbunden ist.
- Wenn Sie Tastatur auf anderen Port anschließen möchten, ändern Sie die Zeile 80 auf Quellcode (keypad.c)
- #define KEYPAD A // TASTATUR AUF PORTA ANGEHÄNGTEM
- Compiler-Fehler
- Viele Menschen in diesen Tagen haben ohne ein solides Konzept der Informatik und Programmierung Embedded-Programmierung springen. Sie wissen nicht, die Grundlagen der Compiler und fehlt Erfahrung. Um zu erfahren, Grund von Compilern und ihre Arbeits PC / MAC / Linux (ich meine einen Desktop oder Laptop) sind großartige Plattform. Aber Embedded-System ist nicht gut für das Lernen über Compiler und Programmiergrundlagen. Es ist für diejenigen, die bereits über diese Fähigkeiten und wollen einfach nur, sie anzuwenden.
- Stellen Sie sicher, dass alle Dateien auf dem LCD-Bibliothek gehören, „added“ auf „Projekt“.
- avr-gcc installiert ist. (Die Windows-Binärdistribution heißt WinAVR)
- Der AVR Studio-Projekt Typ ist AVR GCC.
- Grundlagen der Installation und AVR Studio mit avr-gcc verwendet, werden in diesem Tutorial beschrieben
- Wie Dateien hinzufügen, um in diesem Tutorial beschrieben zu projizieren.
- Allgemeine Tipps für Anfänger
- Verwenden Sie fertige Entwicklungsboards und Programmierer.
- Versuchen Sie, die AVR Tutorial-Serie von Anfang an zu folgen. (Denken Sie daran, die Liste vier Seiten erstreckt, Seite 1 jüngste somit fortschrittlichste)
Video für 4 × 3 Tastatur Interfacing.
Benutzer Videos
Ich schätze Brendin Ansatz auf immer sein Problem gelöst und erfolgreich Portierung um die Demo zu ATmega48 wirklich. Was ich die Benutzer empfehlen ist Ihre Grundlagen stark zu erhalten. Sie müssen volles Verständnis von C-Sprache Konzept und die vollständigen Details des Geräts, das Sie programmieren, wird diese Ihnen eine Menge Zeit sparen. Also bitte das gute Buch über C und das Datenblatt von AVRs gehen und lesen, bevor Sie tauchen! - Avinash
Wir versuchen Anfänger freundlich Tutorials für die neuesten Themen in Embedded-System zu veröffentlichen, so schnell wie wir können. Wenn Sie diese Tutorials mögen und sie haben Sie Probleme zu lösen geholfen, sprechen Sie uns im Gegenzug helfen. Sie können jede Menge spenden, wie Sie sicher eine Kredit- oder Debitkarte oder Paypal mag mit.
Wir würden uns für Ihre freundliche Hilfe sehr dankbar.
Mit Blick auf Probleme mit eingebetteter, Elektronik oder Robotik-Projekt? Wir sind hier um zu helfen!
Stellen Sie eine Hilfeanforderung.
Das Programm arbeitet keinen Zweifel daran.
Aber könnten Sie einige der wichtigsten Fehlfunktion Probleme auftreten, wenn Sie nicht hinzufügen eine 1 ms oder 2 Verzögerung, bevor die Eingänge vor allem lesen, wenn Sie bei 16MHz laufen.
Es ist immer ratsam, eine 1 ms oder 2 Verzögerung hinzuzufügen, nachdem Sie den Status des Port-Pins vor dem Lesen ändern.
Wenn jemand trifft auf ein Problem mit dem oben genannten Programm mit Schnittstellen, freundlicherweise hinzufügen ‚_delay_ms (1);‘ in der Leitung 122 und zwischen den Linien 123 und 124. Wenn das Problem weiterhin besteht, die Verzögerung von 2 ms zu erhöhen.
Aktuelle Artikel
Facebook Like Box

CDPWD3436 Baldor - MRO Versorgungs




