Professional Documents
Culture Documents
CCS C Ornek Sayfa 1
CCS C Ornek Sayfa 1
CCS C Ornek Sayfa 1
Blm
TU TAKIMI (KEYPAD) UYGULAMALARI
Tu Takm (Keypad) Hakknda Bilgi Tu Takm Uygulamas-1 74C922 Tu Takm Enkoder Entegresi Tu Takm Uygulamas-2 (74C922 le)
Bu blmde tu takm dier ifade ile keypad-klavye hakknda bilgiler verilmitir. Bu bilgiler uygulamalar ile pratie dklmtr. Blmde ilk bata program komutlar ile bir tu takm tarama ilemleri ve uygulamalar incelenmitir. Ayrca 74C922 tu takm enkoder entegresi tantlm ve bu entegre ile bir uygulama gerekletirilmitir.
320
Tu takmnda hangi tua basldn bulmak iin eitli yntemler kullanlabilir. Bu yntemlerden biri tarama yntemidir. ekil-12.3.de butonlarla yaplm 4x4 tu takm grlmektedir. Butonlarn bir ucu satr ksmna, bir ucu da stun ksmna baldr. Denetleyici ile tarama yaplrken satrlar k, stunlar ise giri olarak tanmlanr.
321
1 2 3 A 4 5 6 B 7 8 9 C *, E 0 #, F D
322
323
324
/********* ANA PROGRAM FONKS YONU********/ void main ( ) { setup_psp(PSP_DISABLED); // PSP birimi devre d setup_timer_1(T1_DISABLED); // T1 zamanlaycs devre d setup_timer_2(T2_DISABLED,0,1); // T2 zamanlaycs 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 Yksek deerlikli 4 bit k, // dk deerlikli 4 bit giri output_b(0x00); // lk anda B portu k sfrlanyor
while(1) // Sonsuz dng { portb=keypad_oku(); // Baslan tu deerini B portuna aktar } } //****************************************************************** Programda #byte portb=0x06 komutu ile B portunun adresi (0x06) portb ifadesine eitlenmitir. Yani bu komuttan sonra artk portb ifadesi direkt olarak B portu deerini temsil etmektedir. Programda #define sut1 pin_d0 komutu ile sut1 ifadesi pin_d0a yani RD0 pinine eitlenmitir. Dier stun ve satr ifadeleri
ilk deer olarak sfr (0) verilmitir. Tu takm tarama fonksiyonu olarak char keypad_oku() komutu ile keypad_oku() isminde fonksiyon tanmlanmtr. Fonksiyonun bandaki char ifadesi, fonksiyonun geri dn deeri olduunu ve bu deerin karakter tipinde olduunu belirtir. Fonksiyonda ilk bata output_d(0x00); komutu ile D portuna bal stunlarn hepsi lojik-0 yaplmtr. Daha sonra output_high(sat1); komutuyla srayla her satr lojik-1 yaplm ve if (input(sut1)) komutu ile de stun girileri okunmutur. Eer stun girii 1 olursa if fonksiyonu dngs ilem grecektir. if fonksiyonu iinde, delay_ms(20); komutu ile tu hatalarn nlemek iin bir gecikme konulmu ve ardndan tus=1; komutu ile de baslan tu deeri tus deikenine aktarlmtr. Burada tus= ifadesine istenen deer yazlarak hangi tuun neye karlk gelecei istenen ekilde deitirilir. lk satrda 4 stunun taramas ayn mantkla yapldktan sonra output_low(sat1); komutu ile 1. satr lojik-0 yaplmtr. Daha sonra ayn ilemler dier satrlar iin yaplmtr. Fonksiyonda en son olarak da return tus; komutu ile fonksiyonun tus deikeni deeri ile geri dnmesi salanmtr. Dikkat edilmesi gereken bir nokta da, fonksiyon bir geri dn deeri ierdiinden, fonksiyon tanmlarken char sutun_tara() komutunda
325
bata char ksm ile fonksiyonun geri dn deeri olduunu ve trnn karakter olduunu belirtmemizdir. Fonksiyonun geri dn deeri olmasayd bana void koymamz gerekirdi. Ana fonksiyondaki sonsuz dngde portb=keypad_oku(); komutu ile tu takm tarama fonksiyonu arlm ve bu fonksiyonda tu deerinin tutulduu tus deikeni deeri B portuna gnderilmitir. Tu takm tarama fonksiyonunu kendi amalarnza ve ihtiyalarnza gre deitirebilirsiniz.
74C922 entegresi 3V ile 15V alma gerilim aralnda alabilir. Genel besleme gerilimleri 5V, 10V ve 15Vtur. Klavye satr hatlar Y girilerine (ROW), stun hatlar ise X girilerine (COLUMN) balanr. OE entegre seme ucudur ve
326