Arama butonu
Bu konudaki kullanıcılar: 1 misafir
3
Cevap
271
Tıklama
0
Öne Çıkarma
pic c
H
14 yıl (1963 mesaj)
Yüzbaşı
Konu Sahibi

elimde keypad ile yaptığım bir uyglama var. keypad ile sayıları oktuyoırum 10 a kadr fakat 10 dan sonrasını nasıl okutucam bilemedim. yardımcı olurmsunuz?



E
14 yıl (2734 mesaj)
Yüzbaşı

Programınızı paylaşırsanız yardımcı olmak daha kolay olur.


Bu mesaja 1 cevap geldi.
H
14 yıl (1963 mesaj)
Yüzbaşı
Konu Sahibi

#include <16f876A.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.
#if defined(__PCM__)
#use fast_io(b) //Port yönlendirme komutları B portu için geçerli
#use fast_io(c) //Port yönlendirme komutları C portu için geçerli
#define use_portb_lcd TRUE
#include <lcd.c>
#byte portb=0x06 // B portu “tus” ismine eşitleniyor.

#define sut1 pin_c0 // sut1 ifadesi pin_d0 ifadesine eşitleniyor
#define sut2 pin_c1 // sut2 ifadesi pin_d1 ifadesine eşitleniyor
#define sut3 pin_c2 // sut3 ifadesi pin_d2 ifadesine eşitleniyor
#define sut4 pin_c3 // sut3 ifadesi pin_d2 ifadesine eşitleniyor

#define sat1 pin_c4 // sat1 ifadesi pin_d4 ifadesine eşitleniyor
#define sat2 pin_c5 // sat2 ifadesi pin_d5 ifadesine eşitleniyor
#define sat3 pin_c6 // sat3 ifadesi pin_d6 ifadesine eşitleniyor
#define sat4 pin_c7 // sat4 ifadesi pin_d7 ifadesine eşitleniyor
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
char tus=0; // karakter tipinde değişken tanımlanıyor
int bas=0;
int i=0;
int dizi[];
int girilen;
//*********** Keypad Tarama Fonksiyonu *********
char keypad_oku() // Fonksiyon ismi
{
output_c(0x00); // D portu çıkışı sıfırlanıyor
tus=0;
output_high(sat1); // 1. satır lojik-1 yapılıyor
if (input(sut1)) // 1. sütun okunuyor
{ delay_ms(20); tus=tus+1; }
if (input(sut2)) // 2. sütun okunuyor
{ delay_ms(20); tus=tus+2; }
if (input(sut3)) // 3. sütun okunuyor
{ delay_ms(20); tus=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=tus+4; }
if (input(sut2)) // 2. sütun okunuyor
{ delay_ms(20); tus=tus+5; }
if (input(sut3)) // 3. sütun okunuyor
{ delay_ms(20); tus=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=tus+7; }
if (input(sut2)) // 2. sütun okunuyor
{ delay_ms(20); tus=tus+8; }
if (input(sut3)) // 3. sütun okunuyor
{ delay_ms(20); tus=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=tus+11; }
if (input(sut2)) // 2. sütun okunuyor
{ delay_ms(20); tus=tus+10; }
if (input(sut3)) // 3. sütun okunuyor
{ delay_ms(20); tus=tus+12; }

output_low(sat4); // 3. satır lojik-0 yapılıyor
if(tus>0) delay_ms(200);
return tus; // Fonksiyon “tus” değeri ile geri döner
}

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

void main ( )
{
int x=0;
while(x<9){
output_high(pin_a0); // RB0 pini çıkışı lojik-1 yapılıyor
delay_ms(500); // 500 ms gecikme veriliyor
output_low(pin_a0); // RB0 pini çıkışı lojik-1 yapılıyor

delay_ms(500);
x++;

}
setup_spi(SPI_SS_DISABLED); // SPI 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ışı
lcd_init();
set_tris_b(0x00); // B portu komple çıkış
set_tris_c(0x0F); // 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

lcd_putc("atom no gir");
{char count=0,keypad,sayi[2],k,sayikont[20];

for(;;){
sayi[0]=keypad_oku();
if (sayi[0]<11){


don: if (keypad_oku()=11)
{if(sayi[0]<11){

sayi[1]=keypad_oku();
}}
else
{goto don;}


}


girilen=sayi[0]+sayi[1]+sayi[2];

lcd_gotoxy(1,2);
lcd_putc(girilen);
}}



}


Bu mesaja 1 cevap geldi.
H
14 yıl (1963 mesaj)
Yüzbaşı
Konu Sahibi

yardım edebilcek varmı?



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.