- Neden 4x4 Tuş Takımına ihtiyacımız var:
- 4x4 Matrix Keypad nasıl çalışır:
- Gerekli Materyal:
- Devre şeması:
- Programlama Açıklaması:
Tuş takımları, çeşitli elektronik ve gömülü projelerde kullanılan yaygın olarak kullanılan giriş cihazlarıdır. Sayılar ve alfabe şeklinde girdiler almak ve daha sonraki işlemler için bunları sisteme beslemek için kullanılırlar. Bu eğitimde 4x4 matris tuş takımını PIC16F877A ile arayüzleyeceğiz.
Detay mantığına girmeden ve tuş takımını nasıl kullanacağımızı öğrenmeden önce birkaç şeyi bilmemiz gerekecek.
Neden 4x4 Tuş Takımına ihtiyacımız var:
Tipik olarak, bir anahtar girişi gibi dijital sinyali okumak için bir mikro denetleyici biriminin tek G / Ç pini kullanırız. Giriş amacıyla 9, 12, 16 tuşa ihtiyaç duyulan birkaç uygulamada, her anahtarı bir mikro denetleyici bağlantı noktasına eklersek, 16 G / Ç bağlantı noktasını kullanırız. Bu 16 G / Ç bağlantı noktası yalnızca G / Ç sinyallerini okumak için değildir, aynı zamanda ADC destekleri gibi çevresel bağlantılar olarak da kullanılabilirler, I2C, SPI bağlantıları da bu G / Ç pinleri tarafından desteklenir. Bu pinler anahtarlara / anahtarlara bağlı olduğundan, onları kullanamayız, sadece I / O portları olarak kullanıyoruz. Bu hiç mantıklı değil. Peki, pin sayısı nasıl azaltılır? Cevap, altıgen tuş takımı veya matris tuş takımı kullanmaktır; pin sayılarını azaltabiliriz4x4 matris anahtarlarını ilişkilendiren. 4'ü sıralar halinde ve 4'ü sütunlar halinde bağlanmış 8 pini kullanır, böylece mikrodenetleyicinin 8 pini tasarruf eder.
4x4 Matrix Keypad nasıl çalışır:
Üstteki resimde solda bir matris tuş takımı modülü gösterilmektedir. Sağda dahili bağlantı ve port bağlantısı gösterilir. Limana görürseniz soldan sağa 8 iğne, ilk 4 vardır vardır X1, X2, X3, X4 olan satırlar soldan sağa ve son 4 olan Y1, Y2, Y3, Y4 dört edilmektedir sütunlar. Çıktı olarak 4 satır veya X tarafı yapıp bunları lojik düşük veya 0 yaparsak ve 4 sütunu girdi olarak yaparsak ve tuşları okursak, karşılık gelen Y 0 aldığında switch'e basmayı okuyacağız.
Aynı şey nxn matrisinde de olur, burada n sayıdır. Bu 3x3, 6x6 vb. Olabilir.
Şimdi sadece 1'e basıldığını düşünün. Ardından 1, X1 satırında ve Y1 sütununda yer alır. X1 0 ise, Y1 0 olacaktır. Aynı şekilde X1 satırındaki her bir anahtarı Y1, Y2, Y3 ve Y4 sütunlarını algılayarak algılayabiliriz. Bu şey her anahtar için olur ve matristeki anahtarların konumunu okuyacağız.
Her yeşil daire anahtardır ve ikisi de aynı şekilde birbirine bağlıdır.
Bu eğitimde, klavye ile aşağıdaki özelliklerle arayüz oluşturacağız:
- İç çekme kullanacağız
- Anahtar geri dönme seçeneği ekleyeceğiz
Anahtarlar olduğunda Ama yapmak gerekir basılmadı Y1, Y2, Y3 ve Y4 olarak yüksek veya 1. Düğmeye basıldığı ediliyor Aksi takdirde biz mantık değişiklikleri algılayamaz. Ancak bu pinlerin çıkış değil giriş olarak kullanılması nedeniyle kodlarla veya programlarla yapamadık. Bu nedenle, mikro denetleyicide dahili bir işlem yazmacı kullanacağız ve bu pinleri zayıf yukarı çekme etkin mod olarak çalıştıracağız. Bunu kullanarak, varsayılan durumda olduğunda bir mantık yüksek etkinleştirme modu olacaktır.
Ayrıca, tuşuna bastığımızda anahtar kontaklarında sivri uçlar veya gürültü oluşuyor ve bu çoklu anahtara basılması nedeniyle beklenmeyen bir şey oluyor. Bu nedenle, ilk önce düğmeye basmayı algılayacağız, birkaç milisaniye bekleyeceğiz, tekrar düğmeye hala basılı olup olmadığını kontrol edeceğiz ve düğmeye hala basılıysa, anahtarın basılmasını kabul edeceğiz, aksi takdirde basmayacağız. Buna, anahtarların geri sekmesi denir.
Tüm bunları kodumuzda uygulayacağız ve bağlantıyı breadboard üzerinden yapacağız.
Ayrıca, 4x4 tuş takımının diğer Mikroişlemcilerle nasıl arayüzleneceğini de kontrol edin:
- Arduino Uno ile Tuş Takımı Arayüzü
- 8051 Mikrodenetleyici ile 4x4 Matrix Tuş Takımı Arayüzü
- ATmega32 Mikrodenetleyici ile 4x4 Tuş Takımı Arayüzü
- Breadboard'da Raspberry Pi Dijital Kod Kilidi
Gerekli Materyal:
- Breadboard
- Pic-kit 3 ve PC'nizdeki geliştirme ortamı, yani MPLABX
- Teller ve konektörler
- Karakter LCD 16x2
- 20Mhz Kristal
- 2 adet 33pF seramik disk kapak.
- 4.7k direnç
- 10k ön ayar (değişken direnç)
- 4x4 Matrix tuş takımı
- 5 V adaptör
Devre şeması:
Kristalleri ve direnci ilgili pimlere bağlayacağız. Ayrıca, LCD'yi PORTD üzerinden 4 bit modunda bağlayacağız. Hex tuş takımını veya matris tuş takımını RB4 portuna bağladık.
PIC'de yeniyseniz, PIC Microcontroller'a Başlarken ile başlayın: PIC ve MPLABX'e Giriş
Programlama Açıklaması:
Matrix Keypad ile PIC Microcontroller arasında arayüz oluşturmak için eksiksiz kod en sonunda verilmiştir. Kod kolay ve açıklayıcıdır. Tuş takımı kütüphanesi, kodda anlaşılması gereken tek şeydir. Burada kullanmış keypad.h ve lcd.h tuş takımı ve 16x2 LCD arayüz Kitaplığı. Öyleyse bunun içinde neler olduğunu görelim.
İçinde keypad.h biz kullanılan olduğunu göreceksiniz xc.h varsayılan kayıt kütüphane, kristal frekansı kullanılan gecikme kullanımı için kullanılmak üzere tanımlanmıştır olan başlık kepad.c dosyası. PORTRB yazmacındaki tuş takımı portlarını tanımladık ve tek tek pinleri satır (X) ve sütunlar (Y) olarak tanımladık.
Ayrıca, bağlantı noktasını çıkış ve giriş olarak yeniden yönlendirecek tuş takımı başlatma için iki işlev ve çağrıldığında anahtar basma durumunu döndürecek bir anahtar basma taraması kullandık.
#Dahil etmek
Gelen keypad.c biz tuş takımı tarayıcı fonksiyonu 'n' döndürmez zaman fonksiyonu aşağıda anahtar basın döneceğini göreceksiniz.
char switch_press_scan (void) // { char key = 'n' kullanıcısından anahtarı al ; // (key == 'n') iken hiçbir tuşa basılmadığını varsayın // Bir tuşa basılıncaya kadar bekleyin key = keypad_scanner (); // Anahtarları tekrar tarayın ve tekrar geri dönün; // tuşuna basıldığında değerini döndürür }
Aşağıda tuş takımı okuma işlevi bulunmaktadır. Her adımda X1, X2, X3 ve X4 satırını 0 yapıp Y1, Y2, Y3 ve Y4 durumunu okuyacağız. Gecikme, geri çevrilme etkisi için kullanılır, anahtara hala basıldığında, onunla ilişkili değeri döndürürüz. Hiçbir anahtara basılmadığında 'n' döneceğiz .
char keypad_scanner (void) { X_1 = 0; X_2 = 1; X_3 = 1; X_4 = 1; eğer (Y_1 == 0) {__delay_ms (100); süre (Y_1 == 0); dönüş '1'; } eğer (Y_2 == 0) {__delay_ms (100); while (Y_2 == 0); dönüş '2'; } eğer (Y_3 == 0) {__delay_ms (100); süre (Y_3 == 0); dönüş '3'; } eğer (Y_4 == 0) {__delay_ms (100); while (Y_4 == 0); dönüş 'A'; } X_1 = 1; X_2 = 0; X_3 = 1; X_4 = 1; eğer (Y_1 == 0) {__delay_ms (100); süre (Y_1 == 0); dönüş '4'; } eğer (Y_2 == 0) {__delay_ms (100); while (Y_2 == 0); dönüş '5'; } eğer (Y_3 == 0) {__delay_ms (100); süre (Y_3 == 0); dönüş '6'; } eğer (Y_4 == 0) {__delay_ms (100); while (Y_4 == 0); dönüş 'B'; } X_1 = 1; X_2 = 1; X_3 = 0; X_4 = 1; eğer (Y_1 == 0) {__delay_ms (100); süre (Y_1 == 0); dönüş '7'; } eğer (Y_2 == 0) {__delay_ms (100); while (Y_2 == 0); dönüş '8'; } eğer (Y_3 == 0) {__delay_ms (100); süre (Y_3 == 0); dönüş '9'; } eğer (Y_4 == 0) {__delay_ms (100); while (Y_4 == 0); dönüş 'C'; } X_1 = 1; X_2 = 1; X_3 = 1; X_4 = 0; eğer (Y_1 == 0) {__delay_ms (100); süre (Y_1 == 0); dönüş '*'; } eğer (Y_2 == 0) {__delay_ms (100); while (Y_2 == 0); dönüş '0'; } eğer (Y_3 == 0) {__delay_ms (100); süre (Y_3 == 0); dönüş '#'; } eğer (Y_4 == 0) {__delay_ms (100); while (Y_4 == 0); dönüş 'D'; } dönüş 'n'; }
Ayrıca son dört bit üzerindeki zayıf çekmeyi ayarlayacağız ve ayrıca portların yönünü son 4 giriş ve ilk 4 çıkış olarak ayarlayacağız . OPTION_REG & = 0x7F; son pimlerdeki zayıf yukarı çekme modunu ayarlamak için kullanılır.
void InitKeypad (void) { Keypad_PORT = 0x00; // Keypad port pin değerlerini sıfır ayarla Keypad_PORT_Direction = 0xF0; // Son 4 pin girişi, İlk 4 pin çıkışı OPTION_REG & = 0x7F; }
Gelen ana PIC programı öncelikle yapılandırma bit set ve birkaç gerekli kütüphaneleri dahil (aşağıda verilmiştir). Sonra void system_init işlevlerinde tuş takımını ve LCD'yi başlatırız. Ve nihayet içinde ana işlevi biz arayarak tuş takımını okudum switch_press_scan () fonksiyonu ve lcd değer dönüyor.
Kodu başlık dosyalarıyla birlikte buradan indirin ve aşağıdaki Gösteri videosunu kontrol edin.