MikroC Menü Oluşturma

Başlatan Teğmen, 29 Aralık 2016, 11:01:33

Teğmen

Merhaba
Mikroc ile lcd üzerinden butonlarla menü ve alt menüler oluşturmayı anlatabilir misiniz?

mg1980

#1
Hocam ben C ve MikroC işlerine yeni başladım. Ek'te çalışan uzun bir programımdan örnek kesitler sunuyorum.Uzmanları mutlaka daha fonksiyonel yazabilirler.Ben bu kadar yapabildim ve işimi görüyor.Benzeterek kullanabilirsiniz. ARM için yazmıştım.Ana döngü içinde menü fonksiyonuna giriş için bir if(  ) eklemelisiniz.


void menu()   //********************************************************
{
int i;
char txt_1[3];
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"BELLEK SIL !!!");
Lcd_Out(2,3,"> (+) BAS");
while(BUTON);
for(i=0;i<300;i++)
  {
   if(BUTON)
   {
    Lcd_Cmd(_LCD_CLEAR);
    Lcd_Out(1,1,"BELLEK SILINDI");
       while(BUTON);
    Delay_ms(1000);
    }
    Delay_ms(10);
  }
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"AYAR DEGISTIR..");
Lcd_Out(2,5,"ISI-SURE");
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"ISI:");
ByteToStr(hedefIsi,txt_1);
Lcd_Out(1,5,txt_1);
Lcd_Out(2,3,"> + VEYA > -");

for(i=0;i<500;i++)
{
if(BUTON)
  {
   hedefIsi=hedefIsi+1;
   if(hedefIsi==25) hedefIsi=24;
   ByteToStr(hedefIsi,txt_1);
   Lcd_Out(1,5,txt_1);
   while(BUTON);
   }
   if(BUTONB)
  {
   hedefIsi=hedefIsi-1;
   if(hedefIsi==19) hedefIsi=20;
   ByteToStr(hedefIsi,txt_1);
   Lcd_Out(1,5,txt_1);
   while(BUTONB);
   }
   Delay_ms(10);
}
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"SURE:");
ByteToStr(sure,txt_1);
Lcd_Out(1,6,txt_1);
Lcd_Out(2,3,"> + VEYA > -");

for(i=0;i<500;i++)
{
  if(BUTON)
  {
   sure=sure+1;
   if(sure==15) sure=14;
   ByteToStr(sure,txt_1);
   Lcd_Out(1,6,txt_1);
   while(BUTON);
   }
   if(BUTONB)
  {
   sure=sure-1;
   if(sure==0) sure=0;
   ByteToStr(sure,txt_1);
   Lcd_Out(1,6,txt_1);
   while(BUTONB);
   }
   Delay_ms(10);
  }
Lcd_Cmd(_LCD_CLEAR);             // Menu'den çıkış bloğu
Lcd_Out(1,1,"ISI:");
Lcd_Out(1,6,"SAAT:");
}

Teğmen

Merhaba
Butonları sürekli for döngüsüyle mi okuttunuz.
Birde tam anlayamadım ama alt menüye dallanıyor mu?

Örneğin; 1.Yukarı 2.Aşağı 3.Giriş 4.Çıkış butonları aşağı butonuna basarak istediğim yerde durup giriş tuşuyla o menünün içine girip alt menüyü görebiliyor muyum?

mg1980

#3
Benim programda olay şöyle;
Program ilk açılırken main() içinde menü()'ye kendiliğinden yönleniyor.Orada if'e gerek yok. menü()'de varsayılan ısı ve süre ayarlarını değiştirip değiştirmek istemediğimizi belirli bir süre içinde sorarak basacağımız butonlara yönlendiriyor. O süre içinde + veya - yöndeki butonlara basarsak varsayılan değerleri değiştirebiliyoruz. "do while" döngüsü içinde if(BUTON) komutu var. Çalışma esnasında istersek bu butona basarak da tekrar değişiklik yapabiliriz.Program "do while" döngüsü içinde bir kaç işlem yapıyor. Timer2 kesmesi ile takip edilen saati okuyor. DS18B20 ile ısıyı ölçüp takip ediyor. Koyduğum limitlerde ısıyı tutuyor. Belli bir süre sonunda ısıyı daha düşük seviyede idame ettiriyor.Dikkatle incelerseniz hem ısının hem de sürenin (+ -) yönde değiştirme imkanı var. LCD ekranda da yazıyı izleyerek sizi yönlendiriyor.Bütün bu işler iki butonla yapılıyor.

Powered by EzPortal