Menü Uygulaması Yaptım ve bir iki ekstra ihtiyacım var

Başlatan ademtosun58, 21 Mart 2017, 07:57:04

ademtosun58

Arkadaşlar Merhaba Forum daki ilk konum;

16f877a Kullanarak 3 parametre ölçen bir sistem tasarladım.
Tabi böyle sistemlerin olmazsa olmazı lcd menüler,Menümü de olusturdum gayet güzel çalışıyor.
Tek sıkıntım programın alt tarafta çalıştıramamak lcd den sectigim parametre sıfırdan başlıyor ben ise alt tarafta çalışıp lcd den seçtigimde ise o anki değerini görmek istiyorum.

Yardımlarınızı bekliyorum iyi günler

vitruvius


eeburakdemir

Kod olmadığı için bu şekilde yorum yapmak belki faydalı olmayabilir. istediğiniz yerdeki fonksiyona sonsuz döngü kurun sonra da break ile çıkmayı deneyin.
Asla pes etme...

ademtosun58

Evet arkadaşlar kodu eklemeyi unuttum kod aşağıdaki şekildedir." Void Halleffect()" kısmını switch case nin içine atıyorum.Menu de bu kısma girdigimde ise herdefasında sıfırlanıp başlıyor.Ben pic çalışmaya basladıgı andan itibaren döngünün çalışmasını sadece menu den girdigimde o anki değerini görmek istiyorum.



ayhani

En iyi bildiğim şey hiçbir şey bilmediğimdir.

ademtosun58

Alıntı yapılan: ayhani - 21 Mart 2017, 13:05:04
Pahalı gemezse bu ekran tam size göre. Menü işlemelerini tamamem ekran hallediyormuş


https://www.direnc.net/24-inch-hmi-akilli-dokunmatik-ekran-tft-lcd8-port-gpio


http://blog.direnc.net/nextion-hmi-display-lcd-ekranlar/



Staj Yaptıgım şirket bu proje için her türlü destegi sağlıyor fakat onların kendi istedikleri şekilde yapmam gerekiyor.Bana ekran olarak 2*16 Lcd kullanmamı söylediler.

eeburakdemir

Nextion da kullandım tavsiye ederim fakat @ayhani hocam o ekran akıllı modeli sadece menü uygulamaları vs için fazla kaçar normal modeli rahatlıkla iş görür  :)
Asla pes etme...

ghistmanzero

Kodu paylaşırsaniz yardım edecek çok kişi var burda bence

ademtosun58

Kodu Paylaştım ama Daha onaylanmadı. Kodu Mplab Xc8 de yazıyorum. Aşagıdaki kodu Switch case de yaptıgım menu yapısının içine ekliyorum sadece


#define  Count_1      RB7
#define  Up            1


void halleffect()
{
   char temp[3] ;
   unsigned char k1[8];
   unsigned int Count = 0;
   
   InitLCD();                             // Initialize LCD in 8bit mode
   
                                               
   TRISB7 = 1;                          // Make PORTB7 pin input -> Count input
   
   ClearLCDScreen();               // Clear LCD screen
       

   while(1)  {
      if(Up)                               // If Up is selected
      {
         if(Count_1)                  //   If Count button is pressed
         {
            while(Count_1);        // Wait for de-assertion of the button
            __delay_ms(20);      // Small delay

            Count++;                // Increment Coutn value

               
         }
      }

      ClearLCDScreen();         // Clear LCD screen

      // Display Count on LCD
      WriteStringToLCD("Sayac:");
      sprintf(k1,"%d",Count); //Bu komut ROM bellekte ciddi yer kaybina neden olmaktadir.
     WriteStringToLCD(k1);


      __delay_ms(200);      // Some delay
   

     
   }
}

mehmet

NOT: Mesajınıza kod eklerken "KOD" düğmesini
kullanıp yeniden düzenleyiniz...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

vitruvius

Sanırım Count değişkeninden bahsediyorsun. Debug yapsan bunun sebebini anlarsın. Fonksiyona her girdiğinde Count'ı tanımlayıp ilk değerini 0'a eşitliyorsun. Bu yüzden fonksiyona her girdiğinde sıfırdan başlıyor haliyle. Bu değişkeni global tanımlayarak bu işi çözebilirsin.

ademtosun58

Alıntı yapılan: vitruvius - 22 Mart 2017, 12:22:56
Sanırım Count değişkeninden bahsediyorsun. Debug yapsan bunun sebebini anlarsın. Fonksiyona her girdiğinde Count'ı tanımlayıp ilk değerini 0'a eşitliyorsun. Bu yüzden fonksiyona her girdiğinde sıfırdan başlıyor haliyle. Bu değişkeni global tanımlayarak bu işi çözebilirsin.

Bütün arkadaşlara teşekkür ederim.Sorunu global tanımladım sistem normal çalıştı.Ayriyeten timer interrupt  kullanarak fonksiyonu arka planda da çalışmasını sağladım.

İyi günler