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