Elektronika.lt
 2025 m. vasario 8 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

Elektronika.lt portalo forumas

Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo. Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.

Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius, kurie nesilaiko forumo taisyklių. Pastebėjus nusižengimus, prašome pranešti.

Dabar yra 2025 02 08, 21:00. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » LCD valdymas
Jūs negalite rašyti naujų pranešimų į šį forumą
Jūs negalite atsakinėti į pranešimus šiame forume
Jūs negalite redaguoti savo pranešimų šiame forume
Jūs negalite ištrinti savo pranešimų šiame forume
Jūs negalite dalyvauti apklausose šiame forume
 
  
Puslapis 11
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 LCD valdymas
PranešimasParašytas: 2013 03 08, 11:54 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sindzas
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Sveiki, darau įioki toki projektelį. Mėginu su 5 mygtukais (UP, RIGHT, DOWN, LEFT, ENTER) valdyti LCD1602, kad sužinočiau pati valdymo principą. Žemiau pateikiau kodo fragmento skeletą, kad mažiau vietos užimtų, 5 mygtukai prijungti prie F portų. Kaip matote, viską darau su IF tikrinimais.

Problema yra tame, jog sekanciame meniu paspausdus LEFT mygtuką, niekaip neiseina gristi i Pagrindini meniu. Programa ties ta vieta užlušta (sustoja veikti). Žinoma, su komanda goto viską galima padaryti lengvai, tačiau kažkaip su ta komanda nesamonė yra, norisi normalesni ir gražesnį kodą parašyt.

Gal kas turit minčių kaip iš tokios situacijos išsisukti? Smile

Kodas:

#define UP ((status & 0x1F) == 0x01)      //PORTF 0,   HIGH 0 0001 & 1 1111 = 0 0001
#define LEFT ((status & 0x1F) == 0x02)      //PORTF 1,   HIGH 0 0010 & 1 1111 = 0 0010
#define ENTER ((status & 0x1F) == 0x04)      //PORTF 2,   HIGH 0 0100 & 1 1111 = 0 0100
#define RIGHT ((status & 0x1F) == 0x08)      //PORTF 3,   HIGH 0 1000 & 1 1111 = 0 1000
#define DOWN ((status & 0x1F) == 0x10)      //PORTF 4,   HIGH 1 0000 & 1 1111 = 1 0000


#define MAIN_MENU   0
#define FIRST_MENU   1
#define MENU1      2
#define MENU2      3
#define HOME      4

#define BACK      10

int main(void)
{
   LCD_init();
   
   unsigned int status;
   short etat=MAIN_MENU;
   DDRF = 0xE0;                                 
   PORTF = 0x1F;      
/******************* Pagrindinis meniu **************/
   while ((etat!= FIRST_MENU) || (etat == HOME))
   {
   //   HOME1:
      if(ENTER)
      {
         etat=FIRST_MENU;
      }
      if(UP|LEFT|DOWN|RIGHT)
      {
         etat=MAIN_MENU;
      }
   }
/********** Sekantis meniu ****************/   
   if (etat == FIRST_MENU)
   {
      while (etat != BACK)
      {
         if(LEFT)
         {
            etat=BACK;
         //   goto HOME1;
         }
      }   

   }
}
 LCD valdymas
PranešimasParašytas: 2013 03 08, 13:34 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
stat=MAIN_MENU;// arba HOME, o ne BACK
 LCD valdymas
PranešimasParašytas: 2013 03 08, 14:06 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sindzas
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Šitas variantas jau buvo mėgintas, tačiau jis taip pat yra neveikiantis. Tarkim, jei tavo sakytoje vietoje (paboldinta vieta) parašome HOME arba MAIN_MENU, tai gauname, jog visada while sąlyga bus vykdoma, nes vienu atveju gauname, jog HOME not BACK yra TRUE, ir kitu atveju taip pat gaunasi.

Kodas:
if (etat == FIRST_MENU)
   {
      while (etat != BACK)
      {
         if(LEFT)
         {
            [b]etat=HOME; [/b]
         }
      }   

   }
 LCD valdymas
PranešimasParašytas: 2013 03 08, 14:24 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
nematau jokiu problemu del "goto"
bet jei esi ciklo vidule ir nori betkurioje vietoje patekti i ciklo pradzia tai naudok zodi
continue

jei nori cikla nutraukti naudok
Citata:
break


speju kad break turetu ismesti is { } komandu grupes

reikes isbandyti ka daro tokia funkcija

{
break;
}
 LCD valdymas
PranešimasParašytas: 2013 03 08, 14:33 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sindzas
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Bet ar su goto programa po kurio nors laiko neužsibugins? Nes truputi miglotai pamenu, jog ant asemblerio, bent jau ant PIC, kvieciant goto daugiau nei 8 kartus liktais persipildo programos skaitiklis, o cia yra naudojamas AVR
 LCD valdymas
PranešimasParašytas: 2013 03 08, 14:50 Pranešti apie taisyklių pažeidimą Atsakyti su citata
sindzas
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Na ir durna siandien galva Very Happy Nebuvau int main funkcijoje begalinio ciklo padares, sekanciame meniu su break uzbaigiam cikla ir is karto gristam i pirminio ciklo pradzia Smile

Problema IŠSPRESTA, dėkui visiems už sugaištą laiką Smile
Pradėti naują temą  Atsakyti į pranešimą
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

Sveiki ir ekologiški maisto produktai

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

„Mokslo sriuba“

www.matuok.lt - Interneto spartos matavimo sistema

www.esaugumas.lt – apsaugok savo kompiuterį!

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

Draugiškas internetas

FS25 Tractors
Farming Simulator 25 Mods, FS25 Maps, FS25 Trucks
ETS2 Mods
ETS2 Trucks, ETS2 Bus, Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods, FS22 Maps, FS25 Mods
VAT calculator
VAT number check, What is VAT, How much is VAT
LEGO
Mänguköök, mudelautod, nukuvanker
KCD2 Mods
Installing KCD 2 Mods, KCD 2 Guides, KCD 2 Cheats
FS25 Mods
FS25 Harvesters, FS25 Tractors Mods, FS25 Maps Mods
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
FS25 Mods
FS25 Maps, FS25 Cheats, FS25 Install Mods
GTA 6 Wiki
GTA 6 Map, GTA 6 Characters, GTA 6 News
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps
ATS Trailers
American Truck Simulator Mods, ATS Trucks, ATS Maps
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Script hook v, Openiv, Menyoo
gta5mod.net
FS25 Mods, FS25 Tractors, FS25 Maps
fs25mods.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
Reklamos paslaugos
SEO sprendimai

www.addad.lt
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
FS22 mods, Farming simulator 22 mods,
FS22 maps

fs22.com
Reklama


Reklama