ARKADAŞLAR ÖNCELİKLE İLGİNİZ İÇİN TEŞEKKÜRLER. BU ÇOK ÖNEMLİ BİR DURUM VEYA İHTİYAÇ DEĞİLDİR. ZAMANINIZI HARCAMAYIN İSTERSENİZ.
kodlar ve üzerinde yaptığım oynamalar ve ekran çıktıları şu şekilde:
#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ı B portu için geçerli
#define use_portb_lcd TRUE // LCD B portuna bağlı
#include <lcd.c> // lcd.c dosyası tanıtılıyor
#define sut1 pin_d1 // sut1 ifadesi pin_d0 ifadesine eşitleniyor
#define sut2 pin_d2 // sut2 ifadesi pin_d1 ifadesine eşitleniyor
#define sut3 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(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; }
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; }
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; }
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; }
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); // 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ışı
set_tris_b(0x00); // B portu komple çıkış
set_tris_d(0x0F); // Yüksek değerlikli 4 bit çıkış, düşük değerlikli 4 bit giriş
lcd_init(); // LCD hazırlanıyor
printf(lcd_putc,"\fBasilan Tus="); // LCD'ye string yazdırılıyor
while(1) // Sonsuz döngü
{
lcd_gotoxy(13,1); // İmleç 3.sütun, 1.satıra konumlandırılıyor
if (keypad_oku()>9) // Eğer basılan tuş değeri 9'dan büyük ise
printf(lcd_putc,"%d",keypad_oku()); // Tuş değeri LCD'ye yazdırılıyor
else // Eğer basılan tuş değeri 9'dan büyük değilse
printf(lcd_putc,"%d ",keypad_oku()); // Tuş değeri LCD'ye yazdırılıyor
}
}
Çıktısı: Basılan Tus=4 şeklinde
Kodları şöyle yaparsam:
while(1) // Sonsuz döngü
{
lcd_gotoxy(13,1); // İmleç 3.sütun, 1.satıra konumlandırılıyor
if (keypad_oku()>9) // Eğer basılan tuş değeri 9'dan büyük ise
printf(lcd_putc,"%d",tus); // Tuş değeri LCD'ye yazdırılıyor
else // Eğer basılan tuş değeri 9'dan büyük değilse
printf(lcd_putc,"%d ",tus); // Tuş değeri LCD'ye yazdırılıyor
}
Çıktısı: Basılan Tus: 4
Kodları şöyle yaparsam:
printf(lcd_putc,"\fBasilan Tus="); // LCD'ye string yazdırılıyor
printf(lcd_putc,"\nBasilan Tus="); // LCD'ye string yazdırılıyor
while(1) // Sonsuz döngü
{
lcd_gotoxy(13,1); // İmleç 3.sütun, 1.satıra konumlandırılıyor
printf(lcd_putc,"%d",tus); // Tuş değeri LCD'ye yazdırılıyor
lcd_gotoxy(13,2); // İmleç 3.sütun, 1.satıra konumlandırılıyor
printf(lcd_putc,"%d",tus); // Tuş değeri LCD'ye yazdırılıyor
}
Çıktısı: Basılan Tus: 0
Basılan Tus: 0 şeklinde oldu.
Kodları şöyle yaparsam:
printf(lcd_putc,"\fBasilan Tus="); // LCD'ye string yazdırılıyor
printf(lcd_putc,"\nBasilan Tus="); // LCD'ye string yazdırılıyor
while(1) // Sonsuz döngü
{
lcd_gotoxy(13,1); // İmleç 3.sütun, 1.satıra konumlandırılıyor
printf(lcd_putc,"%d",tus); // Tuş değeri LCD'ye yazdırılıyor
}
Çıktısı: Basılan Tus= 0
Basılan Tus= şeklinde oluyor.
Kodları şöyle yaparsam:
printf(lcd_putc,"\fBasilan Tus="); // LCD'ye string yazdırılıyor
while(1) // Sonsuz döngü
{
lcd_gotoxy(13,1); // İmleç 3.sütun, 1.satıra konumlandırılıyor
printf(lcd_putc,"%d",tus); // Tuş değeri LCD'ye yazdırılıyor
}
Çıktısı: Basılan Tus=0 şeklinde
Kodları şöyle yaparsam:
printf(lcd_putc,"\fBasilan Tus="); // LCD'ye string yazdırılıyor
while(1) // Sonsuz döngü
{
lcd_gotoxy(13,1); // İmleç 3.sütun, 1.satıra konumlandırılıyor
printf(lcd_putc,"%d",keypad_oku()); // Tuş değeri LCD'ye yazdırılıyor
}
Çıktısı: Basılan Tus=4 şeklnde yani çıkış veriyor.
Kodları şöyle yaparsam:
printf(lcd_putc,"\fBasilan Tus="); // LCD'ye string yazdırılıyor
printf(lcd_putc,"\nBasilan Tus="); // LCD'ye string yazdırılıyor
while(1) // Sonsuz döngü
{
lcd_gotoxy(13,1); // İmleç 3.sütun, 1.satıra konumlandırılıyor
printf(lcd_putc,"%d",keypad_oku()); // Tuş değeri LCD'ye yazdırılıyor
lcd_gotoxy(13,2); // İmleç 3.sütun, 1.satıra konumlandırılıyor
printf(lcd_putc,"%d",keypad_oku()); // Tuş değeri LCD'ye yazdırılıyor
}
Çıktısı: Basılan Tus= 4
Basılan Tus=4 şeklinde yani çıkış veriyor.
Son denemede istediğim oldu, iki satırda da bilgiyi yazdırdım. Benim aklımı baştaki durum karıştırdı. Keypad_oku yerine “tus” yazıncada çıktı alabiliyordum (if-else li durumda). Ama alt alta iki kere “tus” u kullanırsam yazdıramıyorum. Keypad_oku yazınca yazdırabiliyorum. Altalta yazınca tus u neden kabul etmedi onu anlamadım J gece yarısı da olunca algılayıcılarım kapandı J