реклама на сайте
подробности

 
 
> Многоуровневое меню на LCD, pic18f2550
manial
сообщение Feb 6 2011, 21:34
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 15-04-07
Пользователь №: 27 057



Добрый день. В рамках учебного проекта нам предложили сделать карту управления шаговым мотором. Предполагается 3 разных сценария его работы, с разными параметрами ускорения, торможения и линейной скорости. Интерфейс карты должен иметь LCD экран с наклеенной на нем сенсорной резистивной пластинкой (не знаю как оно по русски называется =) ), в общем мало бюджетный тактильный экран. В качестве меню управления предлагается разделить его на 4 зоны, 3 зоны для выбора режима и одна для возвращения на уровень выше. В программировании я не очень и проблема в том что я никак не могу понять как организовать такое многоуровневое меню. Вот фрагмент программы :

Код
int measure() // Определения зоны нажатия, возвращает координаты X Y
{
while(1)    {    
   output_high(DRIVE_X); output_low(DRIVE_Y); // Activation mesure en X
   set_adc_channel(1);// Multiplexeur sur entree AN1 (READ_X).
   delay_ms(50);// Il faut stabiliser la tension...
   NX = Read_ADC(); // Mesure position X
   output_high(DRIVE_Y); output_low(DRIVE_X); // Activation mesure en Y
   set_adc_channel(2);// Multiplexeur sur entree AN1 (READ_X).
   delay_ms(50);// Il faut stabiliser la tension...
   NY = Read_ADC(); // Mesure position X
   return NX,NY;
   }
}

void detect()
{

   int n=0;

   do {


      measure();

      while(NX<128 && NY<128 && NX!=0 && NY!=0)
      {
         measure();
         n=3;

      }
      while(NX>128 && NY<128 && NX!=0 && NY!=0)
      {
         measure();
         n=4;

      }
      while(NX>128 && NY>128 && NX!=0 && NY!=0)
      {
         measure();
         n=2;

      }
      while(NX<128 && NY>128 && NX!=0 && NY!=0)
      {
         measure();
         n=1;

      }


      switch(n)
      {
         case 1:
         effacement_ecran();
         sprintf(texte,"Case 1");  Print_texte(0,0);
         break;

         case 2:
         effacement_ecran();
         sprintf(texte,"Case 2");  Print_texte(0,0);

         break;
         case 3:
         effacement_ecran();
         sprintf(texte,"Case 3");  Print_texte(0,0);

         break;
         case 4:
         effacement_ecran();
         sprintf(texte,"Retour");  Print_texte(0,0);

         break;
         default:      
          break;
      }
      
      n=0;
      }
      while (1);
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 15:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016