trafo kademe göstergesi için if ile for döngüsü nü kul

Başlatan hmg, 16 Ocak 2008, 10:38:02

hmg

arkadaşlar bir 18f242 kullanıp a portunu giriş kullandım,b ve c portlarını çıkış kullandım ve b portu ile bir 7 segment c ilede  bir 7 segment sürmek istedim.
bir  trafonun kademe göstergesi olacak bu cihaz inş. b portu 1.digiti, c portu ise 2.digiti sürüyor. A0 a 5V. gelirse 7 segmentteki sayı 1 artacak,A1 e 5V. gelirse 1 azalacak.sorunum şu çift for döngüsü ile if i birlikte kullanamadım. ekranda 00-19 arasında  değer gösterecek 20 olmadan tekrar sıfıra dönecek.yardımınız olursa sevinirim. proğram denemem aşağıda.

#include <18f242.h>
#use delay(clock=4000000)
main()
{
int sayac=0;
int sayac1=0;
char ekran[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
char ekran1[10]={0x3F,0x06};
output_b(0x00);
output_c(0x00);

for(; ;)
{

for(sayac1=0;sayac1<2;sayac1++)
{
output_b(ekran1[sayac1]);

for(sayac=0;sayac<10;sayac++)
{

if(input(pin_a0))
   {
    sayac1++;
if(input(pin_a1))
   {
    sayac1--;
output_c(ekran[sayac]);

}
}
}
}

Ziya

Alıntı yapılan: "hmg"arkadaşlar bir 18f242 kullanıp a portunu giriş kullandım,b ve c portlarını çıkış kullandım ve b portu ile bir 7 segment c ilede  bir 7 segment sürmek istedim.
bir  trafonun kademe göstergesi olacak bu cihaz inş. b portu 1.digiti, c portu ise 2.digiti sürüyor. A0 a 5V. gelirse 7 segmentteki sayı 1 artacak,A1 e 5V. gelirse 1 azalacak.sorunum şu çift for döngüsü ile if i birlikte kullanamadım. ekranda 00-19 arasında  değer gösterecek 20 olmadan tekrar sıfıra dönecek.yardımınız olursa sevinirim. proğram denemem aşağıda.

Murat Bey, A0 ve A1 e 5 V gelince değil 0 V gelince arttırma ve azaltmayı dene. Bu bacaklara pullup direnç koy (2 tane 10k ile vcc ye çek). Butonları bacaklar ile toprak arasına bağla.

İki dijit için basamak sayıları oluştur. birler ve onlar diye. İki adet for döngüsü gereksiz. Sonsuz döngü içerisinde hallet her şeyi.

ekran1'i ne için kullandın?

#include <18f242.h>
#use delay(clock=4000000)
 main()
{
int onlar, birler;
int sayac1=0;
ekran[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
char ekran1[10]={0x3F,0x06};
output_b(0x00);
output_c(0x00);

for(; ;)
{
 if( ! input(pin_a0) || ! input(pin_a1))
   {
     if( ! input(pin_a0)) 
     {
      sayac1++; 
      if (sayac1==20) sayac1=0;
     }
     if( ! input(pin_a1)) 
     {
      sayac1--;
     if (sayac1==255) sayac1=19;
     }
     birler= sayac1%10;
     onlar= sayac1/10;
    output_b(ekran[birler]);
    output_c(ekran[onlar]);
   delay_ms(100); // debounce için
   }
}
Bunu bir dene.

Bu arada bizim CER'deki POR sorunu ne oldu?

Kolay gelsin.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

hmg

Ziya bey ben burda b ve c portları ile ayrı ayrı 7 segment sürmüştüm
   output_b(ekran[birler]);
  delay_ms(4);
  output_c(ekran[onlar]);.
yukarıdaki değişikliği yaptım  ve proteusta denedim 00 ekrana geldi ama a0 ve a1 e 5v verdim bir değişme olmadı.
cer ise biliyorsunuz benim bilgisayarsa deneme yaptık cihaz normal çalışıyor .fakat yerinde por gelmeye devam ediyor.

Ziya

Murat Bey,

üstteki mesajda code tag içerisini biraz değiştirdim. Pullup dirençleri bağlayıp, butonları da bahsettiğim şekilde bağlamış isen sorun olmayacaktır.

Kolay gelsin.
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

westlaw

bu iş icin pic in tum portlarını 2 segment icin işgal etmek yerine HC595 gib ientegreler kulalnmanı tavsiye ederim.boylece karakter sorunun olmaz.
bu arada hala daha programda sorun varsa yardımcı olabilirim.ulasman yeterli.