CCS C ile komütatör ile ilgili bir soru

sasen1

Üye
Katılım
19 Haz 2008
Mesajlar
353
Puanları
16
Merhaba pic 16F877A kullanarak 4x3 komütatör (Rotary Switch) ile LCD ye her kademesinde bir yazı yazdırmak istiyorum.Programlamayı buton ile yapığımda her basmada bir yazı çıkıyor.Ama komütatör anahtar gibi çalıştığı için olmuyor.Komütatör için nasıl bir tanıtma yapmalıyım?
 

ibrahim1996

Katılımcı Üye
Katılım
18 Nis 2014
Mesajlar
1,171
Puanları
56
Yazılması gereken yazı kaç adet?
 
Konu Sah

sasen1

Üye
Katılım
19 Haz 2008
Mesajlar
353
Puanları
16
Yazılması gereken yazı kaç adet?

Komütatorün her kademesinde bir yazı yazacak. Yani 1. Kademe CD player,2. Kademe Tuner,3. Kademe Phone, 4. Kademe AUX

komütatörü hangi kademeye getirirsem ekanda ilgili girişin adı çıkacak.Buton ile yaptığım zaman oluyor.Çünkü butona basıp bırakıyoruz.Komütatör anahtar olarak çalışıtığı için basılı kalıyor. Sürekli ark oluşuyor.İşin içinden çıkamadım.Nasıl bir yol izlemeliyim
 

muratmert4

Usta Üye
Katılım
26 Eyl 2007
Mesajlar
1,081
Puanları
156
Yaş
47
Konum
ANTALYA
Rotary encoder kullan bence
 

ibrahim1996

Katılımcı Üye
Katılım
18 Nis 2014
Mesajlar
1,171
Puanları
56
Komütatorün her kademesinde bir yazı yazacak. Yani 1. Kademe CD player,2. Kademe Tuner,3. Kademe Phone, 4. Kademe AUX

komütatörü hangi kademeye getirirsem ekanda ilgili girişin adı çıkacak.Buton ile yaptığım zaman oluyor.Çünkü butona basıp bırakıyoruz.Komütatör anahtar olarak çalışıtığı için basılı kalıyor. Sürekli ark oluşuyor.İşin içinden çıkamadım.Nasıl bir yol izlemeliyim
Şimdi Buton da ki döngüyü kitleme özeliğini devreden çıkarın yani değişimi algıladıgında bir defa işlem yapsın ve ilgili girişi okumayı bıraksın break komutu ile döngüyü kırabilirsiniz yada her okumaya bir degişken sınayıp bir defa girip degişiklik oldunda tekrar girer
İf(buton1==1 && buton1_degisim==0)
{ buton1_degisim=1;
.
.
.
}
else
buton1_degisim=0;
Gibi yada

İf(buton1==1)
{
.
.
.
break;
}
 

muratmert4

Usta Üye
Katılım
26 Eyl 2007
Mesajlar
1,081
Puanları
156
Yaş
47
Konum
ANTALYA
pinlerdeki değişimi birdeğişkende topla

int port_oku=0;
void main()
{
while(1)
{
……...………………………………...……….
switch(port_oku)
{
case 0: ................... break;
case 1: ................... break;
case 2: ................... break;
case 3: ................... break;
}
……...………………………………...……….
……...………………………………...……….

}

}
 
Konu Sah

sasen1

Üye
Katılım
19 Haz 2008
Mesajlar
353
Puanları
16
Arkadaşlar ben şu şekilde yapabildim.Ancak belli saniyelerde LCD deki yazı yenileme yaptığı için yazıda bir kırpışma oluşuyor.Bunu nasıl düzeltebilirim.Bu şekilde de sorun yaşamadan kullanabilir miyim?Bir kontrol edebilir misiniz?

Kod:
#include <16f877A.h>
#fuses HS
#use delay(clock=8000000)
#use fast_io(a)
#use fast_io(d)
#include <lcd.c>
#define anahtar  pin_a0
#define anahtar1 pin_a1
#define anahtar2 pin_a2
#define anahtar3 pin_a3

int i=0;

void main()
{
 
 set_tris_a(0b00001111);
 set_tris_d(0b00000000);
 output_d(0x00);

 lcd_init();
 
   while(1)
   {

     if(input(anahtar)==1)
    
     {

      printf(lcd_putc,"\f    CD PLAYER ");
      delay_ms(250);

     }
  
     if(input(anahtar1)==1)
     {
    
      printf(lcd_putc,"\f      AUX  ");
      delay_ms(250);   
      
    
     }
      
    if(input(anahtar2)==1)
     {
        
        printf(lcd_putc,"\f  TAPE PLAYER");
        delay_ms(250);
    
     }
    
    if(input(anahtar3)==1)
    
     {
      
         printf(lcd_putc,"\f     PHONE ");
         delay_ms(250);

     }
      
     }
          
   }
 

Ekli dosyalar

  • selector.jpg
    selector.jpg
    81 KB · Görüntüleme: 5

muratmert4

Usta Üye
Katılım
26 Eyl 2007
Mesajlar
1,081
Puanları
156
Yaş
47
Konum
ANTALYA
S.A.
printf(lcd_putc,"\f AUX "); Burada ilk önce siliyorsun ("\f") sonra LCD ye yazı basıyorsun bu komut herseferinde tekrarlanıyor kırpışma yüzden.
 

muratmert4

Usta Üye
Katılım
26 Eyl 2007
Mesajlar
1,081
Puanları
156
Yaş
47
Konum
ANTALYA
S.A.
LCD_gotxy(1,1);
printf(lcd_putc," AUX ");/// LCD niz kaç karakterli ise o kadar boşluk bırakarak olabilir
 

Forum istatistikleri

Konular
118,083
Mesajlar
832,011
Kullanıcılar
429,449
Son üye
nmnm

Yeni konular

Çevrimiçi üyeler

Üst