28 Şubat 2014 Cuma

C ile programlama uygulamaları-14

Tuş Takımı Uygulaması-1



AMAÇ:



Mikrodeneleyicilerin çalışma sistemini öğrenmek, C dili ile program yazabilme ve 16F877A entegresini programlayabilme yeteneğini kazanmak.


YAPILACAK İŞ:



Tuş takımında bir tuşa basıldığında tuşun değeri B portuna bağlı ledlerde görünmesi sağlanacak.


DENEYİN BAĞLANTI ŞEMASI




    PROGRAM KODU:



#include <16f877a.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.



#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=0×06 // B portu “tus” ismine 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



//*********** Keypad Tarama Fonksiyonu *********



char keypad_oku() // Fonksiyon ismi





output_d(0×00); // 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





/********* ANA PROGRAM FONKSİYONU********/



void main ( )





setup_psp(PSP_DISABLED); setup_timer_1(T1_DISABLED);



setup_timer_2(T2_DISABLED,0,1); setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF);



set_tris_b(0×00); // B portu komple çıkış



set_tris_d(0x0F); // Yüksek değerlikli 4 bit çıkış, düşük değerlikli 4 bit giriş



output_b(0×00); // İ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







İŞLEM BASAMAKLARI



1.Devreyi bord üzerine kurunuz.



2. Kodu yazıp derleyiniz.Hex kodunu Pice yükleyiniz.



3.Devrenin çalışmasını inceleyiniz.





C ile programlama uygulamaları-14

Hiç yorum yok:

Yorum Gönder