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?
#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.
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];
Bu mesaja 1 cevap geldi. Cevapları Gizle
// 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. Cevapları Gizle