LCD ekranına tuş takımı ile 2 ve daha çok basamaklı sayı yazma ??

Başlatan sercanblbn, 27 Nisan 2014, 14:32:27

sercanblbn



Herkese selamlar. Hesap makinesi yapmak için ön alıştırmalar yapıyorum. Yüklediğim devre ve aşağıda yazan kodlarla 1 basamaklı sayı yazdırabiliyorum LCD de. 1 den fazla basamaklı sayı yazdırabilmek için internette baya bir dolandım ama işime yara bir şey bulamadım. Yardımcı olabilecek arkadaşlar olur diye umuyorum.

kodlar:

#define use_portb_lcd TRUE
#include <lcd.c>

#use fast_io(b)
#use fast_io(d)
#define sut1 pin_d0
#define sut2 pin_d1
#define sut3 pin_d2

#define sat1 pin_d4
#define sat2 pin_d5
#define sat3 pin_d6
#define sat4 pin_d7

char tus=0;

char keypad()
{
   output_d(0x00);
   
   output_high(sat1);
   if(input(sut1)) {delay_ms(20); tus=1;}
   if(input(sut2)) {delay_ms(20); tus=2;}
   if(input(sut3)) {delay_ms(20); tus=3;} 
   output_low(sat1);
   
   output_high(sat2);
   if(input(sut1)) {delay_ms(20); tus=4;}
   if(input(sut2)) {delay_ms(20); tus=5;}
   if(input(sut3)) {delay_ms(20); tus=6;} 
   output_low(sat2);
   
   output_high(sat3);
   if(input(sut1)) {delay_ms(20); tus=7;}
   if(input(sut2)) {delay_ms(20); tus=8;}
   if(input(sut3)) {delay_ms(20); tus=9;} 
   output_low(sat3);
   
   output_high(sat4);
   if(input(sut2)) {delay_ms(20); tus=0;}
   output_low(sat4);   
   
   return tus;
}

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
 
   set_tris_b(0x01);
   set_tris_d(0x0F);
   
   lcd_init();
   
   printf(lcd_putc,"\fBasilan tus:");
   
   while(1)
   {
      lcd_gotoxy(13,1);
      printf(lcd_putc,"%d",keypad());
   }
}

baran123

@semfero bir çalışma paylaşmıştı sana göre biraz da basitleştirdim sağ olsun yardımcı oluruz daha
kolay gelsin :)

#include        <16f877.h>
 #fuses          XT,NOWDT,NOPROTECT
 #use            delay(clock=4000000)
 #include        <lcd.c>
 #use            fast_io(c)  
 #use            fast_io(b)             
 #use            fast_io(d)
 #use            fast_io(a)
 #use            fast_io(e)

 #define         sut1 pin_B4                                       
 #define         sut2 pin_B5                      
 #define         sut3 pin_B6  

 #define         sat1 pin_B0
 #define         sat2 pin_B1                
 #define         sat3 pin_B2                    
 #define         sat4 pin_B3  

 
 #define use_portd_lcd TRUE
            
 
  unsigned int8  tus,e,k,l,m,n;

 void tus_al()// yazılım bu fonksiyona geldiğinde buradan bir
 {            // tus değeri almadan bu fonksiyondan çıkmaz
 don:
 output_low(sut1);output_high(sut2);output_high(sut3);
 if(input(sat1)==0){tus=1;goto brk;}
 if(input(sat2)==0){tus=4;goto brk;}
 if(input(sat3)==0){tus=7;goto brk;}
 if(input(sat4)==0){tus=15;goto brk;}

 output_high(sut1);output_low(sut2);output_high(sut3);
 if(input(sat1)==0){tus=2;goto brk;}
 if(input(sat2)==0){tus=5;goto brk;}
 if(input(sat3)==0){tus=8;goto brk;}
 if(input(sat4)==0){tus=0;goto brk;}                        

 output_high(sut1);output_high(sut2);output_low(sut3);
 if(input(sat1)==0){tus=3;goto brk;}
 if(input(sat2)==0){tus=6;goto brk;}
 if(input(sat3)==0){tus=9;goto brk;}      
 if(input(sat4)==0){tus=14;goto brk;}
 
 output_high(sut1);output_high(sut2);output_high(sut3);
 if(input(sat1)==0){tus=10;goto brk;}
 if(input(sat2)==0){tus=11;goto brk;}
 if(input(sat3)==0){tus=12;goto brk;}
 if(input(sat4)==0){tus=13;goto brk;}
 goto don;  
 brk:
 while(!input(sat1));
 while(!input(sat2));          
 while(!input(sat3));
 while(!input(sat4));                            
 }   

 

 void main()
 {            
  set_tris_b(0b00001111);//keypad baglı    
 set_tris_c(0b00000000); 
 set_tris_a(0b00000000); 
 set_tris_d(0b00000000);
 set_tris_e(0b00000111);
 port_b_pullups(true);//*** CMOS girişler voltaja hassastır , en ufak voltajı 0-1 olarak kabul edebilirler.
 //Bunun önüne geçmek için pull-up yada pull-down direnci ile hat 0'a yada 5V'a çekilir ve stabil hale getirilir.
 output_a(0x00);                            
 output_b(0x00); 
 output_c(0x00); 
 output_d(0x00); 
 output_e(0x00);

  lcd_init();   // LCD hazırlanıyor
basla:

 


 printf(lcd_putc,"\fsifre:");
 delay_ms(500);

 all:
   
  tus_al();
 k=tus;
  
  lcd_gotoxy(9,1);
  printf(lcd_putc,"%u",tus);
  if(tus==10||tus==11||tus==12||tus==13||tus==14||tus==15) {goto all;}
  delay_ms(300);
 
  tus_al();
 l=tus;
 
  lcd_gotoxy(10,1);printf(lcd_putc,"%u",tus);
  if(tus==10||tus==11||tus==12||tus==13||tus==14||tus==15) {goto all;}
  delay_ms(300);
 
  tus_al();
  m=tus;
  
  lcd_gotoxy(11,1);printf(lcd_putc,"%u",tus);
  if(tus==10||tus==11||tus==12||tus==13||tus==14||tus==15) {goto all;}
  delay_ms(300);
  
  tus_al();
  n=tus;
  
  lcd_gotoxy(12,1);
  printf(lcd_putc,"%u",tus);
  if(tus==10||tus==11||tus==12||tus==13||tus==14||tus==15) {goto all;}
  delay_ms(300);
 
  tus_al();
  e=tus;
  if(tus==10||tus==11||tus==12||tus==13||tus==15) {goto all;}
  delay_ms(300);
  
  }
}

sercanblbn

ben de tam ona bakıp anlamaya çalışıyordum :) teşekkür ederim ;)

ama "tus_al()" fonksiyonunu anlayamadım, yardımcı olabilir misin? sen ne anlıyorsun :D

sütun taramalı yapmış tuş takımını galiba. if in içindeki tus==11 tus==12 li kısmı da anlamakta zorlanıyorum

baran123

Açıklamaya dikkat ettiysen yazılım bu fonksiyona geldiğinde bir tuş değeri almadan çıkmaz diyor onun için while gibi komutlar mevcut basılmasını bekliyor yani, dediğin kısım ise 11,12 onların * ve # olması lazım ben kendime göre düzenlemiştim tus_al(); fonksiyonu tarama yöntemiyle yazılmış.Sana tavsiyem o fonksiyonda kullanmadığım yerleri kaldır kendine göre düzenle isisdede 3x4 keypad ekle pull-up a da gerek yok b portundaki pull-uplar aktif edilmiş zaten Kolay gelsin.

hanifi kaya

Bir de şu örneği incele keypad okurken tus=1; sayi=sayi*10+tus; şeklinde yaparsan her seferinde sayıyı 10 ile çarparak basamak  artıyor ve yeni basılan tuş ile toplanıyor.
#include <16f877a.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


#define LCD_ENABLE_PIN PIN_C4
#define LCD_RS_PIN     PIN_D2
#define LCD_RW_PIN     PIN_D3
#define LCD_DATA4      PIN_C5
#define LCD_DATA5      PIN_C6
#define LCD_DATA6      PIN_C7
#define LCD_DATA7      PIN_D4

#include <lcd.c>   // lcd.c dosyası tanıtılıyor

#define sut1   pin_b0 // sut1 ifadesi pin_d0 ifadesine eşitleniyor
#define sut2   pin_b1 // sut2 ifadesi pin_d1 ifadesine eşitleniyor
#define sut3   pin_b2 // sut3 ifadesi pin_d2 ifadesine eşitleniyor
#define sut4   pin_b3

#define sat1   pin_b4 // sat1 ifadesi pin_d4 ifadesine eşitleniyor
#define sat2   pin_b5 // sat2 ifadesi pin_d5 ifadesine eşitleniyor
#define sat3   pin_b6 // sat3 ifadesi pin_d6 ifadesine eşitleniyor
#define sat4   pin_b7 // sat4 ifadesi pin_d7 ifadesine eşitleniyor

int8 tus=0 , a=4 , tm=3 , i,imlec=7 ;
   
int32   sayi=0; // karakter tipinde değişken tanımlanıyor

//*********** Keypad Tarama Fonksiyonu *********
char keypad_oku()  
{
   output_d(0x00);  

   output_high(sat1);  
   if (input(sut1))    
      {delay_ms(50); while(input(sut1)); tus=1; sayi=sayi*10+tus; }
   if (input(sut2))    
      {delay_ms(50); while(input(sut2)); tus=2; sayi=sayi*10+tus; }
   if (input(sut3))    
      {delay_ms(50); while(input(sut3)); tus=3; sayi=sayi*10+tus; }
   if (input(sut4))   
      {delay_ms(50); while(input(sut4)); tus=0xA; }
   output_low(sat1);  

   output_high(sat2);  
   if (input(sut1))    
      { while(input(sut1)); tus=4; sayi=sayi*10+tus; }
   if (input(sut2))    
      { while(input(sut2)); tus=5; sayi=sayi*10+tus; }
   if (input(sut3))    
      { while(input(sut3)); tus=6; sayi=sayi*10+tus; }
   if (input(sut4))    
      { while(input(sut4)); tus=0xB; }
   output_low(sat2);  

   output_high(sat3);  
   if (input(sut1))    
      { while(input(sut1)); tus=7; sayi=sayi*10+tus; }
   if (input(sut2))    
      { while(input(sut2)); tus=8; sayi=sayi*10+tus; }
   if (input(sut3))    
      { while(input(sut3)); tus=9; sayi=sayi*10+tus; }
   if (input(sut4))    
      { while(input(sut4)); tus=0x0C; }
   output_low(sat3);  

   output_high(sat4); 
   if (input(sut1))    
      { while(input(sut1)); tus=0xE; }
   if (input(sut2))   
      { while(input(sut2)); tus=0; sayi=sayi/10-tus; }
   if (input(sut3))    
      { while(input(sut3)); tus=0xF; }
   if (input(sut4))    
      { while(input(sut4)); tus=0xD; }
   output_low(sat4); 

   return tus;  
}

//********** 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(0x0F);   
   

   lcd_init();   // LCD hazırlanıyor

   
   while(1) // Sonsuz döngü
   {
     keypad_oku();
     lcd_gotoxy(1,1);
     printf(lcd_putc,"tus=  ");
     lcd_gotoxy(1,1);
     printf(lcd_putc,"tus=%d",tus);
     lcd_gotoxy(1,2);
     printf(lcd_putc,"sayi= %ld",sayi);
     delay_ms(100);
     if(sayi>999999999)
       {  sayi=0;
       lcd_gotoxy(6,2);
       printf(lcd_putc,"           ");
      
       }
   }

}

tüm dosyalarda burada
https://dl.dropboxusercontent.com/u/94252366/Lcd%20%20ve%20keypad%20deneme.zip

baran123

Alıntı yapılan: hanifi kaya - 28 Nisan 2014, 00:48:12
Bir de şu örneği incele keypad okurken tus=1; sayi=sayi*10+tus; şeklinde yaparsan her seferinde sayıyı 10 ile çarparak basamak  artıyor ve yeni basılan tuş ile toplanıyor.
#include <16f877a.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


#define LCD_ENABLE_PIN PIN_C4
#define LCD_RS_PIN     PIN_D2
#define LCD_RW_PIN     PIN_D3
#define LCD_DATA4      PIN_C5
#define LCD_DATA5      PIN_C6
#define LCD_DATA6      PIN_C7
#define LCD_DATA7      PIN_D4

#include <lcd.c>   // lcd.c dosyası tanıtılıyor

#define sut1   pin_b0 // sut1 ifadesi pin_d0 ifadesine eşitleniyor
#define sut2   pin_b1 // sut2 ifadesi pin_d1 ifadesine eşitleniyor
#define sut3   pin_b2 // sut3 ifadesi pin_d2 ifadesine eşitleniyor
#define sut4   pin_b3

#define sat1   pin_b4 // sat1 ifadesi pin_d4 ifadesine eşitleniyor
#define sat2   pin_b5 // sat2 ifadesi pin_d5 ifadesine eşitleniyor
#define sat3   pin_b6 // sat3 ifadesi pin_d6 ifadesine eşitleniyor
#define sat4   pin_b7 // sat4 ifadesi pin_d7 ifadesine eşitleniyor

int8 tus=0 , a=4 , tm=3 , i,imlec=7 ;
   
int32   sayi=0; // karakter tipinde değişken tanımlanıyor

//*********** Keypad Tarama Fonksiyonu *********
char keypad_oku()  
{
   output_d(0x00);  

   output_high(sat1);  
   if (input(sut1))    
      {delay_ms(50); while(input(sut1)); tus=1; sayi=sayi*10+tus; }
   if (input(sut2))    
      {delay_ms(50); while(input(sut2)); tus=2; sayi=sayi*10+tus; }
   if (input(sut3))    
      {delay_ms(50); while(input(sut3)); tus=3; sayi=sayi*10+tus; }
   if (input(sut4))   
      {delay_ms(50); while(input(sut4)); tus=0xA; }
   output_low(sat1);  

   output_high(sat2);  
   if (input(sut1))    
      { while(input(sut1)); tus=4; sayi=sayi*10+tus; }
   if (input(sut2))    
      { while(input(sut2)); tus=5; sayi=sayi*10+tus; }
   if (input(sut3))    
      { while(input(sut3)); tus=6; sayi=sayi*10+tus; }
   if (input(sut4))    
      { while(input(sut4)); tus=0xB; }
   output_low(sat2);  

   output_high(sat3);  
   if (input(sut1))    
      { while(input(sut1)); tus=7; sayi=sayi*10+tus; }
   if (input(sut2))    
      { while(input(sut2)); tus=8; sayi=sayi*10+tus; }
   if (input(sut3))    
      { while(input(sut3)); tus=9; sayi=sayi*10+tus; }
   if (input(sut4))    
      { while(input(sut4)); tus=0x0C; }
   output_low(sat3);  

   output_high(sat4); 
   if (input(sut1))    
      { while(input(sut1)); tus=0xE; }
   if (input(sut2))   
      { while(input(sut2)); tus=0; sayi=sayi/10-tus; }
   if (input(sut3))    
      { while(input(sut3)); tus=0xF; }
   if (input(sut4))    
      { while(input(sut4)); tus=0xD; }
   output_low(sat4); 

   return tus;  
}

//********** 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(0x0F);   
   

   lcd_init();   // LCD hazırlanıyor

   
   while(1) // Sonsuz döngü
   {
     keypad_oku();
     lcd_gotoxy(1,1);
     printf(lcd_putc,"tus=  ");
     lcd_gotoxy(1,1);
     printf(lcd_putc,"tus=%d",tus);
     lcd_gotoxy(1,2);
     printf(lcd_putc,"sayi= %ld",sayi);
     delay_ms(100);
     if(sayi>999999999)
       {  sayi=0;
       lcd_gotoxy(6,2);
       printf(lcd_putc,"           ");
      
       }
   }

}

tüm dosyalarda burada
https://dl.dropboxusercontent.com/u/94252366/Lcd%20%20ve%20keypad%20deneme.zip

Kodları tam okumadım ama açıklamalarda hata var kopyala yapıştır gibi duruyor yanlış bilgi vermeyelim !

1)
int32   sayi=0; // karakter tipinde değişken tanımlanıyor
demişsiniz hayır int32 tipinde değişken tanımlanıyor

2)
#define sut1   pin_b0 // sut1 ifadesi pin_d0 ifadesine eşitleniyor
#define sut2   pin_b1 // sut2 ifadesi pin_d1 ifadesine eşitleniyor
#define sut3   pin_b2 // sut3 ifadesi pin_d2 ifadesine eşitleniyor
#define sut4   pin_b3

#define sat1   pin_b4 // sat1 ifadesi pin_d4 ifadesine eşitleniyor
#define sat2   pin_b5 // sat2 ifadesi pin_d5 ifadesine eşitleniyor
#define sat3   pin_b6 // sat3 ifadesi pin_d6 ifadesine eşitleniyor
#define sat4   pin_b7 // sat4 ifadesi pin_d7 ifadesine eşitleniyor
demişsiniz b pinlerine eşitleniyor olması gerekli

hanifi kaya

Alıntı yapılan: baranekrem9 - 28 Nisan 2014, 01:05:11
Kodları tam okumadım ama açıklamalarda hata var kopyala yapıştır gibi duruyor yanlış bilgi vermeyelim !

1)
int32   sayi=0; // karakter tipinde değişken tanımlanıyor
demişsiniz hayır int32 tipinde değişken tanımlanıyor

2)
#define sut1   pin_b0 // sut1 ifadesi pin_d0 ifadesine eşitleniyor
#define sut2   pin_b1 // sut2 ifadesi pin_d1 ifadesine eşitleniyor
#define sut3   pin_b2 // sut3 ifadesi pin_d2 ifadesine eşitleniyor
#define sut4   pin_b3

#define sat1   pin_b4 // sat1 ifadesi pin_d4 ifadesine eşitleniyor
#define sat2   pin_b5 // sat2 ifadesi pin_d5 ifadesine eşitleniyor
#define sat3   pin_b6 // sat3 ifadesi pin_d6 ifadesine eşitleniyor
#define sat4   pin_b7 // sat4 ifadesi pin_d7 ifadesine eşitleniyor
demişsiniz b pinlerine eşitleniyor olması gerekli
kodlar serdar çiçeğin kitabındaki keypad uygulamasından alınmıştır.Ama ben devreyi board üzerindede kurdum  lcd yi ve keypad i bağlaması bu şekilde rahat olduğundan d portlarını b portu yaptım açıklamaların değişmemiş olması kodların yanlış olduğu anlamına gelmez.

baran123

açıklama yanlış dedim zaten ama o kodları okuyan birinin kafası karışabilir diye belirttim.

sercanblbn

Alıntı yapılan: hanifi kaya - 28 Nisan 2014, 00:48:12
Bir de şu örneği incele keypad okurken tus=1; sayi=sayi*10+tus; şeklinde yaparsan her seferinde sayıyı 10 ile çarparak basamak  artıyor ve yeni basılan tuş ile toplanıyor.
#include <16f877a.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


#define LCD_ENABLE_PIN PIN_C4
#define LCD_RS_PIN     PIN_D2
#define LCD_RW_PIN     PIN_D3
#define LCD_DATA4      PIN_C5
#define LCD_DATA5      PIN_C6
#define LCD_DATA6      PIN_C7
#define LCD_DATA7      PIN_D4

#include <lcd.c>   // lcd.c dosyası tanıtılıyor

#define sut1   pin_b0 // sut1 ifadesi pin_d0 ifadesine eşitleniyor
#define sut2   pin_b1 // sut2 ifadesi pin_d1 ifadesine eşitleniyor
#define sut3   pin_b2 // sut3 ifadesi pin_d2 ifadesine eşitleniyor
#define sut4   pin_b3

#define sat1   pin_b4 // sat1 ifadesi pin_d4 ifadesine eşitleniyor
#define sat2   pin_b5 // sat2 ifadesi pin_d5 ifadesine eşitleniyor
#define sat3   pin_b6 // sat3 ifadesi pin_d6 ifadesine eşitleniyor
#define sat4   pin_b7 // sat4 ifadesi pin_d7 ifadesine eşitleniyor

int8 tus=0 , a=4 , tm=3 , i,imlec=7 ;
   
int32   sayi=0; // karakter tipinde değişken tanımlanıyor

//*********** Keypad Tarama Fonksiyonu *********
char keypad_oku()  
{
   output_d(0x00);  

   output_high(sat1);  
   if (input(sut1))    
      {delay_ms(50); while(input(sut1)); tus=1; sayi=sayi*10+tus; }
   if (input(sut2))    
      {delay_ms(50); while(input(sut2)); tus=2; sayi=sayi*10+tus; }
   if (input(sut3))    
      {delay_ms(50); while(input(sut3)); tus=3; sayi=sayi*10+tus; }
   if (input(sut4))   
      {delay_ms(50); while(input(sut4)); tus=0xA; }
   output_low(sat1);  

   output_high(sat2);  
   if (input(sut1))    
      { while(input(sut1)); tus=4; sayi=sayi*10+tus; }
   if (input(sut2))    
      { while(input(sut2)); tus=5; sayi=sayi*10+tus; }
   if (input(sut3))    
      { while(input(sut3)); tus=6; sayi=sayi*10+tus; }
   if (input(sut4))    
      { while(input(sut4)); tus=0xB; }
   output_low(sat2);  

   output_high(sat3);  
   if (input(sut1))    
      { while(input(sut1)); tus=7; sayi=sayi*10+tus; }
   if (input(sut2))    
      { while(input(sut2)); tus=8; sayi=sayi*10+tus; }
   if (input(sut3))    
      { while(input(sut3)); tus=9; sayi=sayi*10+tus; }
   if (input(sut4))    
      { while(input(sut4)); tus=0x0C; }
   output_low(sat3);  

   output_high(sat4); 
   if (input(sut1))    
      { while(input(sut1)); tus=0xE; }
   if (input(sut2))   
      { while(input(sut2)); tus=0; sayi=sayi/10-tus; }
   if (input(sut3))    
      { while(input(sut3)); tus=0xF; }
   if (input(sut4))    
      { while(input(sut4)); tus=0xD; }
   output_low(sat4); 

   return tus;  
}

//********** 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(0x0F);   
   

   lcd_init();   // LCD hazırlanıyor

   
   while(1) // Sonsuz döngü
   {
     keypad_oku();
     lcd_gotoxy(1,1);
     printf(lcd_putc,"tus=  ");
     lcd_gotoxy(1,1);
     printf(lcd_putc,"tus=%d",tus);
     lcd_gotoxy(1,2);
     printf(lcd_putc,"sayi= %ld",sayi);
     delay_ms(100);
     if(sayi>999999999)
       {  sayi=0;
       lcd_gotoxy(6,2);
       printf(lcd_putc,"           ");
      
       }
   }

}

tüm dosyalarda burada
https://dl.dropboxusercontent.com/u/94252366/Lcd%20%20ve%20keypad%20deneme.zip


teşekkür ederim, programı kendime göre uyarladım birden çok basamaklı yazabiliyorum. Sırada toplama çıkarma işlemini yapmak var onunla uğraşıyorum :) yardımlarınız için teşekkür ederim(herkese)

hanifi kaya

Alıntı yapılan: sercanblbn - 21 Mayıs 2014, 11:27:44

teşekkür ederim, programı kendime göre uyarladım birden çok basamaklı yazabiliyorum. Sırada toplama çıkarma işlemini yapmak var onunla uğraşıyorum :) yardımlarınız için teşekkür ederim(herkese)
önemli değil çalışmalarında başarılar dilerim  kodlarda tus=0 kısmını ben değiştirmişim orayıda diğerleri gibi düzelt
tus=0; sayi=sayi*10+tus;  olacak

Recep METE

Alıntı yapılan: sercanblbn - 21 Mayıs 2014, 11:27:44

teşekkür ederim, programı kendime göre uyarladım birden çok basamaklı yazabiliyorum. Sırada toplama çıkarma işlemini yapmak var onunla uğraşıyorum :) yardımlarınız için teşekkür ederim(herkese)
Arkadaşım, kodun son halini gönderebilir misin?
Toplama,çıkarma,çarpma,bölme işlemi yapabilen halini.Yada bu işlemler için nasıl bir kod eklemeliyim.Kısa bir bilgi  verirsen memnun olurum.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d