TUŞ TAKIMI (KEYPAD) UYGULAMALARI

Benzer belgeler
DENEY 9-A : PIC 16F877 ve LM-35 ile SICAKLIK ÖLÇÜM UYGULAMASI

Alıcı Devresi; Sinyali şu şekilde modüle ediyoruz;

DENEY-2. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak

BÖLÜM 3 CAPTURE/COMPARE/PWM ve TUŞ TAKIMI İŞLEMLERİ

DENEY-1. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

PIC MİKROKONTROLÖR TABANLI MİNİ-KLAVYE TASARIMI

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

DENEY-6. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

BÖLÜM 4 KAREKTER LCD ve ADC İŞLEMLERİ

B.Ç. / E.B. MİKROİŞLEMCİLER

PD103 BUTON LED UYGULAMA DEVRESİ UYGULAMA ÖRNEKLERİ MALZEME LİSTESİ

DENEY 10-A : PIC 16F877 ile DARBE GENİŞLİK MODÜLASYONU (PWM) SİNYAL KONTROL UYGULAMASI

DENEY-7. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

void setup() fonksiyonu: Bu fonksiyon program ilk açıldığında bir kere çalışır ve gerekli kalibrasyon, setup komutlarını buraya yazarız.

Bu dersimizde pic pinlerinin nasıl input yani giriş olarak ayarlandığını ve bu işlemin nerelerde kullanıldığını öğreneceğiz.

Program Kodları. void main() { trisb=0; portb=0; while(1) { portb.b5=1; delay_ms(1000); portb.b5=0; delay_ms(1000); } }

EEProm 24C08 UYGULAMA AMAÇ 24C08 MCU_VCC. e r : d e G. Sayfa - 1

DENEY-5. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

7. Port Programlama. mikroc Dili ile Mikrodenetleyici Programlama Ders Notları -42- Şekil 2.1. Atmega16 mikrodenetleyici pin şeması

BÖLÜM 2 2. PROGRAMLAMA MANTIĞI

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Arduino nedir? Arduino donanım ve yazılımın kolayca kullanılmasına dayalı bir açık kaynak elektronik platformdur.

BUTON KONTROLÜ. Pull-Down Bağlantı (Ters Bağlantı) Butona basılmadığında Giriş=1 Butona basıldığında Giriş=0

T.C. MİLLİ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ-6

MİLLİ SAVUNMA ÜNİVERSİTESİ KARA HARP OKULU DEKANLIĞI BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERS TANITIM BİLGİLERİ

BLGM423 Gömülü Sistem Tasarımı

DENEY-4. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

RS 232 HABERLEŞMELĐ DOKUNMATĐK ĐMZA PANELĐ

Paralel ve Seri İletişim. Asenkron/Senkron İletişim. Şekil 2: İletişim Modları

1. Mikrodenetleyici Programlamada Giriş- Çıkış İşlemleri

İçİndekİler. 1. Bölüm - Mİkro Denetleyİcİ Nedİr? 2. Bölüm - MİkroDenetleyİcİlerİ Anlamak

PIC PROGRAMLAMA STEP MOTOR SÜRÜCÜ VE KONTROL AMAÇ NEDİR? Unipolar Step Motorlar. Uç TESPİTİ NASIL YAPILIR?

5.Eğitim E205. PIC16F628 ve PIC16F877 Hakkında Genel Bilgi IF THEN ELSE ENDIF HIGH-LOW GOTO-END- PAUSE Komutları Tanıtımı ve Kullanımı PIC16F628:

DC motorların sürülmesi ve sürücü devreleri

LCD (Liquid Crystal Display )

PIC TABANLI, 4 BASAMAKLI VE SER

PULSE ÇIKIŞI İLE SERVO MOTOR KONTROLÜ. Giriş PLS2 Komutunun Açıklanması CP1H ve Smart Step 2 Kablo Bağlantıları Sonuç

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

ACD BİLGİ İŞLEM ACD KABLOSUZ VERİ TOPLAMA SİSTEMLERİ URT-V2 KABLOSUZ VERİ TOPLAMA TERMİNALİ DONANIM TEKNİK BELGESİ. URT-V2 Terminallerinin

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak

Deney 10: Analog - Dijital Dönüştürücüler (Analog to Digital Converters - ADC) Giriş

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ ELEKTRONİK SİSTEMLER LABORATUVARI 1

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

16F84 ü tanıt, PORTB çıkış MOVLW h FF MOWF PORTB

PIC 16F84 VE TEK BUTONLA BĐR LED KONTROLÜ

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

Erzurum Teknik Üniversitesi RobETÜ Kulübü Robot Eğitimleri. ARDUİNO EĞİTİMLERİ I Arş. Gör. Nurullah Gülmüş

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

KONTROL VE OTOMASYON KULÜBÜ

Çizgi İzleyen Robot Yapımı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Yrd.Doç. Dr. Bülent ÇOBANOĞLU. Sakarya Üniversitesi, Teknoloji Fakültesi

PIC UYGULAMALARI. Öğr.Gör.Bülent Çobanoğlu

Deney No Deney Adı Tarih. 3 Mikrodenetleyici Portlarının Giriş Olarak Kullanılması / /201...

SAYISAL MANTIK LAB. PROJELERİ

PİC HAKKINDA KISA KISA BİLGİLER GİRİŞ/ÇIKIŞ PORTLARI

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım

DOKUMANLAR

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

BİLG Dr. Mustafa T. Babagil 1

BESLEME KARTI RF ALICI KARTI

GAZİ MESLEK YÜKSEK OKULU ELEKTRONİK TEKNOLOJİSİ

T.C. NİĞDE ÜNİVERSİTESİ MÜHENDİSLİK-MİMARLIK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ. Uzaktan Kumanda Edilen Lamba Dimmer inin Gerçekleştirilmesi

T.C. MİLLÎ EĞİTİM BAKANLIĞI MEGEP (MESLEKİ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) ENDÜSTRİYEL OTOMASYON TEKNOLOJİLERİ

BÖLÜM 6 RS232 SERİ İLETİŞİM İŞLEMLERİ

Prof. Dr. Doğan İbrahim Yakın Doğu Üniversitesi, Mühendislik Fakültesi, Biyomedikal Mühendisliği, Bölümü Tel:

ADUC841 MİKRODENETLEYİCİ TABANLI GELİŞTİRME KARTININ TANITIMI:

YAPILAN İŞ: Sayfa 1. Şekil 1

DERS 7 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 örnek programlar Dallanma komutları Sonsuz döngü

LCD (Liquid Crystal Display)

Hacettepe Robot Topluluğu

BÖLÜM 2 INTERRUPT ve TIMER İŞLEMLERİ

KONFİGÜRASYON BİTLERİ

Deney 7: Aritmetik ve Lojik İşlem Birimi(ALU)

Haftalık Ders Saati Okul Eğitimi Süresi

Fonksiyonlar (Altprogram)

EasyPic 6 Deney Seti Tanıtımı

T.C. KOCAELİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Deney 8: ALU da Aritmetik Fonksiyonlar

Assembler program yazımında direkt olarak çizgi ile gösterilmemesine rağmen ekranınız ya da kağıdınız 4 ayrı sütunmuş gibi düşünülür.

LİSANS BİTİRME PROJESİ

DENEY in lojik iç şeması: Sekil 2

idea rsbasic KOMUTLARI

C++ Dersi: Nesne Tabanlı Programlama

Melih Hilmi ULUDAĞ. Yazılım Mühendisi Mekatronik Mühendisi. a aittir.

1 PROGRAMLAMAYA GİRİŞ

Dr. Fatih AY Tel: fatihay@fatihay.net

Örnek 1: Sağdan sola ledleri yakmak.

VTIY DERS-4 YARDIMCI NOTLARI -2018

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Ön Söz. Fırat Deveci Ağustos 2009 Elektrik ve elektroniğe gönül veren herkese. FxDev.org Sayfa 2

Transkript:

12. Bölüm TUŞ TAKIMI (KEYPAD) UYGULAMALARI Tuş Takımı (Keypad) Hakkında Bilgi Tuş Takımı Uygulaması-1 74C922 Tuş Takımı Enkoder Entegresi Tuş Takımı Uygulaması-2 (74C922 İle) Bu bölümde tuş takımı diğer ifade ile keypad-klavye hakkında bilgiler verilmiştir. Bu bilgiler uygulamalar ile pratiğe dökülmüştür. Bölümde ilk başta program komutları ile bir tuş takımı tarama işlemleri ve uygulamaları incelenmiştir. Ayrıca 74C922 tuş takımı enkoder entegresi tanıtılmış ve bu entegre ile bir uygulama gerçekleştirilmiştir. 12.1. TUŞ TAKIMI (KEYPAD) HAKKINDA BİLGİ Kontrol sistemlerinde dış dünyadan insanlar tarafından veri girişleri genellikle tuş takımı (keypad-klavye) ile yapılır. Tuş takımı butonlarla gerçekleştirilebileceği gibi çeşitli hazır tuş takımları piyasada bulunmaktadır. Tuş takımı isimlendirmelerinde ilk sayı sütun, ikinci sayı ise satır sayısını belirtir. Örneğin 4x3 lük bir keypad, 4 sütun ve 3 satırdır. Şekil-12.1. 4x4 Tuş takımı. Şekil-12.2. 4x3 Tuş takımı.

320 CCS C İle PIC Programlama Tuş takımında hangi tuşa basıldığını bulmak için çeşitli yöntemler kullanılabilir. Bu yöntemlerden biri tarama yöntemidir. Şekil-12.3. de butonlarla yapılmış 4x4 tuş takımı görülmektedir. Butonların bir ucu satır kısmına, bir ucu da sütun kısmına bağlıdır. Denetleyici ile tarama yapılırken satırlar çıkış, sütunlar ise giriş olarak tanımlanır. Şekil-12.3. Butonlarla yapılmış 4x4 tuş takımı. Sütunlarda hep lojik-0 (GND-şase) vardır. Hangi tuşa basıldığını anlamak için önce satırlardan biri lojik-1 diğerleri lojik-0 yapılır. Sonra sütunlar okunur, hangi giriş lojik-1 ise o satıra ait sütundaki tuşa basılmış demektir. İstenen tuşa hangi değerin verileceği programcıya aittir. Şekil-12.3 teki bağlantıda 1. satır lojik-1 diğer satırlar lojik-0 iken, 1.satırda 3 numaralı tuşa basıldığında 3.sütunda lojik-1 bilgisi okunur. Böylece basılan tuş bulunabilir. Tabi ki 1.satırda değil de diğer satırlardaki tuşlara basılmışsa algılama yapılamaz. Bu nedenle 1.satırdan sonra sıra ile bir satır lojik-1, diğer satırlar lojik-0 yapılarak tüm sütunlar okunur. Bahsedilen tarama işlemi bu şekilde yapılmaktadır. Tablo-12.1 de, Şekil-12.3 teki tuş takımına göre uyarlanmış tarama bilgileri verilmiştir. Butona basıldığında ve bırakıldığında bir ark (parazit) meydana gelir. Buna tuş sıçraması da (key debounce) denilir. Tuş sıçraması butona bir kez basıldığı halde butona birden fazla basılmış ve çekilmiş gibi durum yaratır. Şekil-12.4 te örnek bir tuş sıçraması görülmektedir. Bu sıçramayı önlemek için programda gerekli önlemler alınmalıdır. Tedbir olarak butona basıldıktan sonra 15-20 msn gecikme verilmesi gerekir veya butondan el çekilene kadar içinden çıkılmayacak bir döngü kurulmalıdır. Ayrıca tuş takımında aynı anda iki tuşa birden basılabilir. Bu gibi durumlarda hangi tuşun geçerli olacağı programla belirtilerek istenmeyen durumlar önlenmelidir. Şekil-12.4. Tuş basılıp bırakılmasında oluşan parazit.

12. BÖLÜM: Tuş Takımı (Keypad) Uygulamaları 321 Satırlar Sütunlar Basılan Tuş 4 3 2 1 4 3 2 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 2 0 0 0 1 0 1 0 0 3 0 0 0 1 1 0 0 0 A 0 0 1 0 0 0 0 1 4 0 0 1 0 0 0 1 0 5 0 0 1 0 0 1 0 0 6 0 0 1 0 1 0 0 0 B 0 1 0 0 0 0 0 1 7 0 1 0 0 0 0 1 0 8 0 1 0 0 0 1 0 0 9 0 1 0 0 1 0 0 0 C 1 0 0 0 0 0 0 1 *, E 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 #, F 1 0 0 0 1 0 0 0 D Tablo-12.1. Tuş takımı tarama bilgileri. 12.2. TUŞ TAKIMI UYGULAMASI-1 Benzetim: PROTEUS-ISIS Deneme Kartı: PIC PROG/DEKA V5 Bu uygulamada butonlarla yapılmış 4x4 bir tuş takımı uygulaması yapılmıştır. Tuş takımı D portuna bağlanmıştır. B portunda RB0, RB1, RB2 ve RB3 pinlerine LED bağlanmıştır. Tuş takımından basılan tuşların ikili karşılıkları LED lerde gösterilmektedir. Tuş takımı için programda bir fonksiyon yazılmıştır. Programda tuş takımında bir tuşa basıldıktan sonra tuşun değeri B portuna bağlı LED lerde görünecektir. Programda her satır sırayla lojik-1 yapılmış ve ardından sütun girişleri kontrol edilmiştir. Hangi sütun lojik-1 ise o sütundaki butona basılmış demektir. Örneğin 2. satır lojik-1 yapıldığında, 2. sütun girişi lojik-1 ise 5 tuşuna basılmış demektir. Programda yapılan fonksiyonda tarama sonucu basılan tuş değeri tus değişkenine aktarılmıştır. tus değişkeni kullanılarak elde edilen sonuç istenen şekilde kullanılır. Programda tuş takımında birden fazla tuşa basılması için gerekli önlem alınmamıştır. İstenirse bu gibi durumlarda basılan en son tuşun geçerli olması veya ilk basılan tuştan el kalkana kadar, diğer basılan tuşların geçerli olmaması sağlanabilir. İstenen amaca göre program değiştirilebilir.

322 CCS C İle PIC Programlama Devre programı; Şekil-12.5. Tuş takımı uygulaması-1 devre şeması. /****************************************************************** PIC16F877 ile Tuş Takımı Uygulaması-1 PIC PROG/DEKA V5 :Port B seçme anahtarı LED leri seçme konumunda ******************************************************************/ #include <16f877.h> // Kullanılacak denetleyicinin başlık // dosyası tanıtılıyor. // Denetleyici konfigürasyon ayarları #fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD #use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak // osilatör frekansı belirtiliyor. #use fast_io(b) //Port yönlendirme komutları B portu için geçerli #use fast_io(d) //Port yönlendirme komutları C portu için geçerli #byte portb=0x06 // B portu "portb" kelimesine eşitleniyor. #define sut1 pin_d0 // sut1 ifadesi pin_d0 ifadesine eşitleniyor #define sut2 pin_d1 // sut2 ifadesi pin_d1 ifadesine eşitleniyor #define sut3 pin_d2 // sut3 ifadesi pin_d2 ifadesine eşitleniyor #define sut4 pin_d3 // sut3 ifadesi pin_d2 ifadesine eşitleniyor #define sat1 pin_d4 // sat1 ifadesi pin_d4 ifadesine eşitleniyor #define sat2 pin_d5 // sat2 ifadesi pin_d5 ifadesine eşitleniyor #define sat3 pin_d6 // sat3 ifadesi pin_d6 ifadesine eşitleniyor #define sat4 pin_d7 // sat4 ifadesi pin_d7 ifadesine eşitleniyor char tus=0; // karakter tipinde değişken tanımlanıyor

12. BÖLÜM: Tuş Takımı (Keypad) Uygulamaları 323 //*********** Keypad Tarama Fonksiyonu ********* char keypad_oku() // Fonksiyon ismi { output_d(0x00); // D portu çıkışı sıfırlanıyor output_high(sat1); // 1. satır lojik-1 yapılıyor if (input(sut1)) // 1. sütun okunuyor { delay_ms(20); tus=1; } if (input(sut2)) // 2. sütun okunuyor { delay_ms(20); tus=2; } if (input(sut3)) // 3. sütun okunuyor { delay_ms(20); tus=3; } if (input(sut4)) // 4. sütun okunuyor { delay_ms(20); tus=0xa; } output_low(sat1); // 1. satır lojik-0 yapılıyor output_high(sat2); // 2. satır lojik-1 yapılıyor if (input(sut1)) // 1. sütun okunuyor { delay_ms(20); tus=4; } if (input(sut2)) // 2. sütun okunuyor { delay_ms(20); tus=5; } if (input(sut3)) // 3. sütun okunuyor { delay_ms(20); tus=6; } if (input(sut4)) // 4. sütun okunuyor { delay_ms(20); tus=0xb; } output_low(sat2); // 2. satır lojik-0 yapılıyor output_high(sat3); // 3. satır lojik-1 yapılıyor if (input(sut1)) // 1. sütun okunuyor { delay_ms(20); tus=7; } if (input(sut2)) // 2. sütun okunuyor { delay_ms(20); tus=8; } if (input(sut3)) // 3. sütun okunuyor { delay_ms(20); tus=9; } if (input(sut4)) // 4. sütun okunuyor {delay_ms(20); tus=0x0c; } output_low(sat3); // 3. satır lojik-0 yapılıyor output_high(sat4); // 3. satır lojik-1 yapılıyor if (input(sut1)) // 1. sütun okunuyor { delay_ms(20); tus=0xe; } if (input(sut2)) // 2. sütun okunuyor { delay_ms(20); tus=0; } if (input(sut3)) // 3. sütun okunuyor { delay_ms(20); tus=0xf; } if (input(sut4)) // 4. sütun okunuyor {delay_ms(20); tus=0xd; } output_low(sat4); // 3. satır lojik-0 yapılıyor } return tus; // Fonksiyon "tus" değeri ile geri döner

324 CCS C İle PIC Programlama /********* ANA PROGRAM FONKSİYONU********/ void main ( ) { setup_psp(psp_disabled); // PSP birimi devre dışı setup_timer_1(t1_disabled); // T1 zamanlayıcısı devre dışı setup_timer_2(t2_disabled,0,1); // T2 zamanlayıcısı devre dışı setup_adc_ports(no_analogs); // ANALOG giriş yok setup_adc(adc_off); // ADC birimi devre dışı setup_ccp1(ccp_off); // CCP1 birimi devre dışı setup_ccp2(ccp_off); // CCP2 birimi devre dışı set_tris_b(0x00); // B portu komple çıkış set_tris_d(0x0f); // D portunun Yüksek değerlikli 4 bit çıkış, // düşük değerlikli 4 bit giriş output_b(0x00); // İlk anda B portu çıkışı sıfırlanıyor while(1) // Sonsuz döngü { portb=keypad_oku(); // Basılan tuş değerini B portuna aktar } } //****************************************************************** Programda #byte portb=0x06 komutu ile B portunun adresi (0x06) portb ifadesine eşitlenmiştir. Yani bu komuttan sonra artık portb ifadesi direkt olarak B portu değerini temsil etmektedir. Programda #define sut1 pin_d0 komutu ile sut1 ifadesi pin_d0 a yani RD0 pinine eşitlenmiştir. Diğer sütun ve satır ifadeleri de D portunun ilgili pinlerine aynı şekilde eşitlenmiştir. char tus=0; komutu ile karakter tipinde tus isminde değişken tanımlanmış ve ilk değer olarak sıfır (0) verilmiştir. Tuş takımı tarama fonksiyonu olarak char keypad_oku() komutu ile keypad_oku() isminde fonksiyon tanımlanmıştır. Fonksiyonun başındaki char ifadesi, fonksiyonun geri dönüş değeri olduğunu ve bu değerin karakter tipinde olduğunu belirtir. Fonksiyonda ilk başta output_d(0x00); komutu ile D portuna bağlı sütunların hepsi lojik-0 yapılmıştır. Daha sonra output_high(sat1); komutuyla sırayla her satır lojik-1 yapılmış ve if (input(sut1)) komutu ile de sütun girişleri okunmuştur. Eğer sütun girişi 1 olursa if fonksiyonu döngüsü işlem görecektir. if fonksiyonu içinde, delay_ms(20); komutu ile tuş hatalarını önlemek için bir gecikme konulmuş ve ardından tus=1; komutu ile de basılan tuş değeri tus değişkenine aktarılmıştır. Burada tus= ifadesine istenen değer yazılarak hangi tuşun neye karşılık geleceği istenen şekilde değiştirilir. İlk satırda 4 sütunun taraması aynı mantıkla yapıldıktan sonra output_low(sat1); komutu ile 1. satır lojik-0 yapılmıştır. Daha sonra aynı işlemler diğer satırlar için yapılmıştır. Fonksiyonda en son olarak da return tus; komutu ile fonksiyonun tus değişkeni değeri ile geri dönmesi sağlanmıştır. Dikkat edilmesi gereken bir nokta da, fonksiyon bir geri dönüş değeri içerdiğinden, fonksiyon tanımlarken char sutun_tara() komutunda

12. BÖLÜM: Tuş Takımı (Keypad) Uygulamaları 325 başta char kısmı ile fonksiyonun geri dönüş değeri olduğunu ve türünün karakter olduğunu belirtmemizdir. Fonksiyonun geri dönüş değeri olmasaydı başına void koymamız gerekirdi. Ana fonksiyondaki sonsuz döngüde portb=keypad_oku(); komutu ile tuş takımı tarama fonksiyonu çağrılmış ve bu fonksiyonda tuş değerinin tutulduğu tus değişkeni değeri B portuna gönderilmiştir. Tuş takımı tarama fonksiyonunu kendi amaçlarınıza ve ihtiyaçlarınıza göre değiştirebilirsiniz. 12.3. 74C922 KEY ENKODER ENTEGRESİ Tuş tarama işlemi bir önceki uygulamada yapıldığı gibi kullanıldığında denetleyiciyi her zaman meşgul eder. Yani tuş tarama işleminin sürekli olarak yapılması gerekmektedir. Aynı anda başka işlemlerin de yapılacağı bir uygulamada bu yöntem sorunlara yol açabilir. Aynı zamanda önceki uygulamada tuş tarama işlemi için 8 adet pin kullanılmaktaydı, bu da port ihtiyacının fazla olduğu uygulamalarda sıkıntıya yol açabilir. Bu nedenle tuş takımı tarama işlemlerinde 74C922 Key Encoder gibi entegreler kullanılabilir. Bu entegre sayesinde tarama işlemi için denetleyici tümüyle meşgul edilmeyecek ve aynı zamanda fazla pin de kullanılmayacaktır. Şekil-12.7. 74C922 Key encoder entegresi pin diyagramı. Şekil-12.8. 74C922 Entegresi genel bağlantısı. 74C922 entegresi 3V ile 15V çalışma gerilim aralığında çalışabilir. Genel besleme gerilimleri 5V, 10V ve 15V tur. Klavye satır hatları Y girişlerine (ROW), sütun hatları ise X girişlerine (COLUMN) bağlanır. OEentegre seçme ucudur ve

326 CCS C İle PIC Programlama