[ lanmi93 @ 19.09.2012. 21:03 ] @
Kao sto rece naslov, totalni amater. Koristim mikroelektronikin mikroC za programiranje i pic16f887 mikrokontroler. Nedavno sam krenu da se bakcem sa programiranjem LCD-a.
Problem je nastao kad sam krenuo da sirim tu pricu. Znam kako da napisem neki tekst ili vise tekstova na lcd i da ih kontroler vrti za zadato vreme ali nzm kako da odradim to sa tasterima, tj. ako na lcd pise "tekst1" pa pritisnem taster 1 (dole) da mi promeni na "tekst 2" pa ako onda pritisnem taster 2 (gore) da mi se vrati na prethodni prikas tj "tekst 1".

Code:
// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections

char txt1[] = "Program 1";
char txt2[] = "Tekst 1";
char txt3[] = "Izaberite";
char txt4[] = "program";
char txt5[] = "Tekst 2";
char txt6[] = "Program 2";
char txt7[] = "Tekst 3";
char txt8[] = "Program 3";
char txt9[] = "Program 4";
char txt10[] = "Program 5";

char i;                              // Loop variable

void main(){
  ANSEL  = 0;                        // Configure AN pins as digital I/O
  ANSELH = 0;
  C1ON_bit = 0;                      // Disable comparators
  C2ON_bit = 0;

  PortC=255;
  TrisC=255 ;

  Lcd_Init();                        // Initialize LCD

  Lcd_Cmd(_LCD_CLEAR);               // Clear display
  Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off

  Lcd_Out(1,4,txt3);                 // Write text in first row
  Lcd_Out(2,5,txt4);                 // Write text in second row
  Delay_ms(2500);


i tu sam stao, nzm kako dalje. Poenta je da to bude kao neki meni iz kojeg ces izabrati neki program a potom taj izabrani program pustiti u rad.

Pozdrav.
[ darkominich @ 19.09.2012. 21:47 ] @
Jesi li probao sa button bibliotekom, posto ne vidim nista na tu temu u kodu?
[ lanmi93 @ 19.09.2012. 22:19 ] @
Jesam, ali mi ne resava problem. U biblioteci ima samo za detect button on and off a nista za upotrebu vise dugmica i skakanje po programu...

Pozz
[ ZAS011 @ 19.09.2012. 22:29 ] @
A da malko bolje pročitaš Help vezan za Button?
Sa time možeš da napišeš šta 'oćeš i da radi kako 'oćeš, gore/dole, levo/desno,...
[ sigi91 @ 19.09.2012. 22:45 ] @
Evo i od mene prvi post na EliteSecurity-u :)
Izvinjavam se unaprijed ali nisam nasao sekciju za prezentovanje...a i dosta sam umoran da bi ista tako trazio..

Ugl mogao bi, za pocetnika, koristiti jednu variablu "char j" koju bi testirao kasnije i na osnovu nje pokazes jedan od zeljenih textova na ekranu..
recimo da imas 2 tastera na PortC 0-1 koji na sebi imaju pull-up otpornike (nije bitna velicina npr. 10kOhm)

Code:

                      *  Vcc
                      |
                     | | R1
                      |        T1
      PortC 0 *-------*-----/ -----* GND
                     
                      *  Vcc
                      |
                     | | R2
                      |       T2
      PortC 1 *-------*-----/ -----* GND


veoma banalan kod, nesto poput:
Code:

// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections

char txt1[] = "Program 1";
char txt2[] = "Tekst 1";
char txt3[] = "Program 2";
char txt4[] = "Tekst 2";
char def[] = "Def";


char j ;    

void main(){
  ANSEL  = 0;                        // Configure AN pins as digital I/O
  ANSELH = 0;
  C1ON_bit = 0;                      // Disable comparators
  C2ON_bit = 0;

  PORTC=0;
  TRISC=0xff;

  Lcd_Init();                        // Initialize LCD

  Lcd_Cmd(_LCD_CLEAR);               // Clear display
  Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off

  while(){
      if(PORTC.RC0 == 0)   j=1;
      if(PORTC.RC1 == 0)   j=2;
     
      switch(j){
         case 1:   Lcd_Out(1,4,txt1);                 // Prog 1
                      Lcd_Out(2,5,txt2);                 
                      break;
         case 2:   Lcd_Out(1,4,txt3);                 // Prog 2
                      Lcd_Out(2,5,txt4);                 
                      break;
         default:   Lcd_Cmd(_LCD_CLEAR);               // Clear display
                      Lcd_Out(1,4,def);                 // Prog def
     
      }
  }

[ lanmi93 @ 19.09.2012. 22:47 ] @
Koliko vidim u ovoj mojoj lib im samo za "Function eliminates the influence of contact flickering upon pressing a button (debouncing)." Mozda ima negde ali ja to ne mogu da nadjem....amater sta reci.

Pozz
[ lanmi93 @ 19.09.2012. 22:58 ] @
Citat:
sigi91:
Evo i od mene prvi post na EliteSecurity-u :)
Izvinjavam se unaprijed ali nisam nasao sekciju za prezentovanje...a i dosta sam umoran da bi ista tako trazio..

Ugl mogao bi, za pocetnika, koristiti jednu variablu "char j" koju bi testirao kasnije i na osnovu nje pokazes jedan od zeljenih textova na ekranu..
recimo da imas 2 tastera na PortC 0-1 koji na sebi imaju pull-up otpornike (nije bitna velicina npr. 10kOhm)

Code:

                      *  Vcc
                      |
                     | | R1
                      |        T1
      PortC 0 *-------*-----/ -----* GND
                     
                      *  Vcc
                      |
                     | | R2
                      |       T2
      PortC 1 *-------*-----/ -----* GND


veoma banalan kod, nesto poput:
Code:

// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections

char txt1[] = "Program 1";
char txt2[] = "Tekst 1";
char txt3[] = "Program 2";
char txt4[] = "Tekst 2";
char def[] = "Def";


char j ;    

void main(){
  ANSEL  = 0;                        // Configure AN pins as digital I/O
  ANSELH = 0;
  C1ON_bit = 0;                      // Disable comparators
  C2ON_bit = 0;

  PORTC=0;
  TRISC=0xff;

  Lcd_Init();                        // Initialize LCD

  Lcd_Cmd(_LCD_CLEAR);               // Clear display
  Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off

  while(){
      if(PORTC.RC0 == 0)   j=1;
      if(PORTC.RC1 == 0)   j=2;
     
      switch(j){
         case 1:   Lcd_Out(1,4,txt1);                 // Prog 1
                      Lcd_Out(2,5,txt2);                 
                      break;
         case 2:   Lcd_Out(1,4,txt3);                 // Prog 2
                      Lcd_Out(2,5,txt4);                 
                      break;
         default:   Lcd_Cmd(_LCD_CLEAR);               // Clear display
                      Lcd_Out(1,4,def);                 // Prog def
     
      }
  }


E ovo je vec nesto. Hvala ti na ovome. Ja uglavnom ucim sa primera a ovo dosta toga sto je meni bilo nejasno pojasnjava ali opet ostaje to kako ja da napravim taj neki meni kroz koji cu uspomoc 2 dugmeta (gore, dole) da trazim zadati program i na kraju da ga selektujem...

Update:
Evo probao sam ovo sa picom. U programu je falilo kod while(1) ovo 1 u zagradi i na kraju } xD . Kad ubacim na pic program i probam ga, deufalt message ne moze da prikaze dobro, muci se ja bih rekao. Ovo ostalo radi perfektno.

Pozz


[Ovu poruku je menjao lanmi93 dana 20.09.2012. u 00:29 GMT+1]

[Ovu poruku je menjao lanmi93 dana 20.09.2012. u 00:30 GMT+1]
[ sigi91 @ 19.09.2012. 23:49 ] @
Ah...razumio sam sta hoces ali tu stvari postaju malkice komplikovanije..
Ja sam ti dao primjer kako, uz pomoc 2 tastera, da odaberes direktno jedan od 2 zeljena "programa"..
Ugl. ovako recima cu da objasnim sta meni dolazi prvo na pamet, ako neko ima bolji savjet neka predlozi ali da je jednostavan..
S jednim tasterom se kreces izmedju 2 opcije
Code:

■Prog 1
 Prog 2

 Prog 1
■Prog 2

a drugim tasterom pokrenes zeljeni "program".
E sad posto zelimo da to bude jednostavno i bez obrade textova itd. mozemo da imamo 4 texta poput
Code:

char txt1[] = " Prog 1";
char txt2[] = "_Prog 2";
char txt3[] = "_Prog 1";
char txt4[] = " Prog 2";

koje cemo koristiti da znamo gdje se nalazi nas "virtualni kursor".

Pokusat cu da napisem to za MikroC...
Code:

// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections

char txt1[] = "_Prog 1";
char txt2[] = " Prog 2";
char txt3[] = " Prog 1";
char txt4[] = "_Prog 2";
char prog1[] = "Program 1";
char prog2[] = "Program 2";

char j ;    

void main(){
  ANSEL  = 0;                        // Configure AN pins as digital I/O
  ANSELH = 0;
  C1ON_bit = 0;                      // Disable comparators
  C2ON_bit = 0;

  PORTC=0;
  TRISC=0xff;

  Lcd_Init();                        // Initialize LCD

  Lcd_Cmd(_LCD_CLEAR);               // Clear display
  Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
  Lcd_Out(1,1,txt1);
  Lcd_Out(2,1,txt2);
  while(1){
      if( PORTC.RC0 == 0 ) {      // Pritiskom tastera na RC0 se "kreces" izmedju 2 "opcije"
         switch(j){
         case 0:   Lcd_Cmd(_LCD_CLEAR);               // Clear display
                      Lcd_Out(1,1,txt3);
                      Lcd_Out(2,1,txt4);
                      j=1;
                      break;
         case 1:   Lcd_Cmd(_LCD_CLEAR);               // Clear display
                      Lcd_Out(1,1,txt1);
                      Lcd_Out(2,1,txt2);
                      j=0;
                      break;
         }  // switch
      delay_ms(500);        
      }     // if              
      if(PORTC.RC1 == 0){       // Pritiskom tastera na RC1 testiras gdje se nalazi "virtualni kursor" ( j ) i na osnovu dobijenog rezultata pokreces odredjeni program"
     
         switch(j){
            case 0:   Lcd_Cmd(_LCD_CLEAR);               // Clear display
                         Lcd_Out(1,1,prog1);                 // Prog 1                 
                         break;
            case 1:   Lcd_Cmd(_LCD_CLEAR);               // Clear display
                         Lcd_Out(1,1,prog2);                 // Prog 2
                         break;
         }  // switch
      
      
     
      }  // if
  }  // while
}  // main

kod bi trebao da radi ali nisam siguran 100% ukoliko ga nisam testirao licno uzivo..
[Nakon sto si pokrenuo jedan od programa trebas restartovati uC da bi dosao opet na pocetak gdje "biras opciju"..] <= EDIT: netacno, ukoliko opet pritisnes taster na RC0 on ce opet prikazati "meni"

EDIT: muci se jer konstantno brise LCD i odma poslije toga pise karaktere na njemu bez pauze, zato i dobijes efekat slabo vidljivih slova
ovaj drugi primjer bi trebao biti ok i bez gresaka


[Ovu poruku je menjao sigi91 dana 20.09.2012. u 01:08 GMT+1]

[Ovu poruku je menjao sigi91 dana 20.09.2012. u 01:28 GMT+1]
[ lanmi93 @ 20.09.2012. 12:49 ] @
E izvini sto te mucim. Probao sam ovaj program da uploadujem na pic. Pocetna poruka stoji ali ne reaguje da tastere...
[ sigi91 @ 20.09.2012. 14:05 ] @
Hehe ma ne mucis me, lad imam slobodnog vremena onda dodjem na forum razgledat malo...

hmh....pokusaj ovo pa mi javi

Code:
// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections

char txt1[] = "_Prog 1";
char txt2[] = " Prog 2";
char txt3[] = " Prog 1";
char txt4[] = "_Prog 2";
char prog1[] = "Program 1";
char prog2[] = "Program 2";

char j ;    

void main(){
  ANSEL  = 0;                        // Configure AN pins as digital I/O
  ANSELH = 0;
  C1ON_bit = 0;                      // Disable comparators
  C2ON_bit = 0;

  PORTC=0;
  TRISC=0xff;

  Lcd_Init();                        // Initialize LCD

  Lcd_Cmd(_LCD_CLEAR);               // Clear display
  Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
  Lcd_Out(1,1,txt1);
  Lcd_Out(2,1,txt2);
  while(1){
      if( PORTC.RC0 == 0 ) {      // Pritiskom tastera na RC0 se "kreces" izmedju 2 "opcije"
         switch(j){
         case 0:   Lcd_Cmd(_LCD_CLEAR);               // Clear display
                      Lcd_Out(1,1,txt3);
                      Lcd_Out(2,1,txt4);
                      delay_ms(500);
                      j=1;
                      break;
         case 1:   Lcd_Cmd(_LCD_CLEAR);               // Clear display
                      Lcd_Out(1,1,txt1);
                      Lcd_Out(2,1,txt2);
                      delay_ms(500);
                      j=0;
                      break;
         }  // switch        
      }     // if              
      if(PORTC.RC1 == 0){       // Pritiskom tastera na RC1 testiras gdje se nalazi "virtualni kursor" ( j ) i na osnovu dobijenog rezultata pokreces odredjeni program"
     
         switch(j){
            case 0:   Lcd_Cmd(_LCD_CLEAR);               // Clear display
                         Lcd_Out(1,1,prog1);                 // Prog 1
                         delay_ms(500);                 
                         break;
            case 1:   Lcd_Cmd(_LCD_CLEAR);               // Clear display
                         Lcd_Out(1,1,prog2);                 // Prog 2 
                         delay_ms(500);
                         break;
         }  // switch
      
      
     
      }  // if
  }  // while
}  // main
[ lanmi93 @ 20.09.2012. 16:26 ] @
Opet isto...Onaj program 1 sto si napisao (gde si 1 tasterom birao 1 program, a 2 tasterom drugi radi perfektno) radi ali ovaj nece... Tako ti je to kod programiranja, uvek ima neka zackoljica... xD
[ Genie_1984 @ 20.09.2012. 17:34 ] @
Možda ovako nešto?

Code:


// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections

char txt[4][10] = {{"Program 1"}, {"Program 2"}, {"Program 3"}, {"Program 4"}};

char menuID=0;

void main(){
  ANSEL  = 0;                        // Configure AN pins as digital I/O
  ANSELH = 0;
  C1ON_bit = 0;                      // Disable comparators
  C2ON_bit = 0;

  PORTC=0;
  TRISC=0xff;

  Lcd_Init();                        // Initialize LCD

  Lcd_Cmd(_LCD_CLEAR);               // Clear display
  Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off

  Lcd_Out(1,1,txt[MenuID]);


  
  while(1){
              if (Button(&PORTC, 0,  100, 0))    //taster "Desno"
              {
                  menuID++;
                  if(menuID>3)menuID=0;
                  Lcd_Cmd(_LCD_CLEAR);
                  Lcd_Out(1,1,txt[MenuID]);

              }
              
              if (Button(&PORTC, 1,  100, 0))   //taster "Levo"
              {
                  menuID--;
                  if(menuID>3)menuID=3;
                  Lcd_Cmd(_LCD_CLEAR);
                  Lcd_Out(1,1,txt[MenuID]);
                  
              }
              
              if (Button(&PORTC, 2,  100, 0))   //taster "OK"
              {
                 switch(menuID)
                 {
                 case 0:   //Funkcija programa 1
                         break;
                 case 1:   //Funkcija programa 2
                         break;
                 case 2:   //Funkcija programa 3
                         break;
                 case 3:   //Funkcija programa 4
                         break;
                 }  // switch
              }//if
          }  // while
}  // main



Tu ti je i primer sa Button funkcijom. Ako želiš da se naredbe izvršavaju nakon otpuštanja tastera i to može dodavanjem još jedne promenljive (kao što je dato u primeru u help-u)
A ako želiš da ti meni bude lista i to može uz malo peripetija oko toga koji string se prikazuje u kom redu.

Pozdrav
[ lanmi93 @ 20.09.2012. 19:34 ] @
Ovo sad fino radi, samo nerazumem sta treba de se desi kad pritisnes start dugme...trenutno nista se ne desava...
Hvala ti na ovome, sad ja to treba da svarim. Generalno ovo pokusavam da naucim jer ce mi trebati za programiranje ves masine (ne ovih novih kojih ima vec dosta digitalnih) nego onih profi starijih koji imaju one zamorne manualne programatore :) . Tek sad vidim da imam jos mnogo toga da savladam, nece to biti skoro...

Pozz
[ sigi91 @ 20.09.2012. 23:50 ] @
ovo od Genie_1984 je veoma jednostavan i cist dio koda, jako mi se svidja =)

lanmi93: ne desi se nista jer u dijelu koda
Code:
switch(menuID)
                 {
                 case 0:   //Funkcija programa 1
                         break;
                 case 1:   //Funkcija programa 2
                         break;
                 case 2:   //Funkcija programa 3
                         break;
                 case 3:   //Funkcija programa 4
                         break;
                 }  // switch

nema nista napisano tj. dato mikrokontroleru da uradi..npr gdje imas komentar "//Funkcija programa X" tu napisi svoj zeljeni dio koda sta hoces da ti uC odradi i to je to.
Nesto veoma jednostavno, jer imas vec LCD spojen, sto bi mogao napraviti je ispisivanje nekog texta na LCD-u..

Uzmi kod od Genie_1984 i igraj se malo s njim, dodaj malo maste i napisi nesto svoje pa ce ti biti interesantnije i lakse ces nauciti.

Pogledaj i ovdje malo
http://www.mikroe.com/chapters/view/17/chapter-4-examples/ naci ces dosta primjera za MikroC a i koristi isti tvoj PIC tako da ce ti biti puno lakse neke stvari skuziti..
Pozz
[ lanmi93 @ 21.09.2012. 00:00 ] @
Odatlen ja i ucim. Skinuo sam sve te delove i odstampao davno jos. Odatlen sam i poceo sa spoznavanjem mikrokontrolera
Pitanje jedno... u delu koda:
Code:
char txt[4][10] = {{"Program 1"}, {"Program 2"}, {"Program 3"}, {"Program 4"}};

char menuID=0;

Sta znaci ovo char menuID=0 //, i ove brojke u prethodnom. 4 pretpostavljam da oznacava koliko programa ima ali cemu ova 10 sluzi...

[Ovu poruku je menjao lanmi93 dana 21.09.2012. u 01:48 GMT+1]

Update:

if(menuID>3)menuID=3 //ovaj deo mi je jasan. Ovo je deo iz programa koji se tice levog dugmeta. Kad tasterom se dodje do Program 1 ono prebaci na Program 4 ali kako, menuID>3 // mi nije jasan, zar nebi trebalo da bude nesto kao <0 ili tako nesto po mojoj logici....
Sto bi rekao Dragojlo "mislim nemo da se ljutite" sto ja ovo ovoliko zapitkujem. Pokusavam da razumem sta pise jer ako ja ovo razumem, ovo je nauceno za vjek i vjekova

Pozz

[Ovu poruku je menjao lanmi93 dana 21.09.2012. u 01:59 GMT+1]
[ Genie_1984 @ 21.09.2012. 01:24 ] @
Code:

char menuID=0;


definisanje globalne promenljive 'menuID' tipa char i postavljanje na početnu vrednost 0 (što nije obavezno jer se sve promenljive u početku postavljaju na 0 ali to je neka moja navika pri pisanju)

Code:

char txt[4][10] = {{"Program 1"}, {"Program 2"}, {"Program 3"}, {"Program 4"}};


Dvodimenzionalni niz 4x10, 10 je za broj slova(pošto su ovo stringovi max broj slova + 1 null karakter)


Code:

menuID--;
if(menuID>3)menuID=3;


Da bi ti ovo bilo jasno važan deo je prethodna naredba menuID--;
Pošto je menuID tipa char,i ona je unsigned (0-255) kada je menuID=0 i izvrši se naredba menuID-- (menuID=menuID-1) promenljiva će dobiti vrednos 255 a to je veće od 3 a pošto ti niz ima 4 elementa (0,1,2,3) moraš da je postaviš na 3 (ako ti je plan da se meni vrti u krug)


Citat:
lanmi93

Sto bi rekao Dragojlo "mislim nemo da se ljutite" sto ja ovo ovoliko zapitkujem.



Nije problem,zato smo i tu da ti pomognemo da lakše shvatiš

Pozdrav
[ lanmi93 @ 21.09.2012. 09:51 ] @
Aham... a da li ja mogu pored toga da deklarisem neki drugi vid teksta...nzm kako da kazem ali evo primer:

Code:
char txt1[] = "Pr1";    
char txt2[] = "Pr2";
char txt3[] = "Pr3";
char txt4[] = "Pr4";

char i;        
Pitanjece. Cemu sluzi ovo i ...char znam ali mi nisu jasni ti nasatavci.. i, *txt, saveBank...

Jos jedno pitanjce. Kada selektujem programe, iskoriscen mi je samo prvi red lcd-a. Kako da iskoristim i drugi red a da nesto ne pokvarim ?
[ Genie_1984 @ 21.09.2012. 12:30 ] @
Naravno da možeš, baš tako kako si napisao.

char je tip promenljive, a i je ime promenljive koju ćeš koristiti negde u programu. Svaka promenljiva pre upotrebe mora da se definiše (dodeliš tip i ime i, ako hoćeš, početnu vrednost)

U drugi red pišeš sa naredbom
Lcd_Out(2,1,"tekst");

e sad šta hoćeš da pišeš i kad to zavisi od tebe, tu ti ne mogu pomoći. tekst može biti i string promenljiva

U porukama imaš code sa meni listom koji ispisuje i drugi red, ali ne znam da li si još spreman da ga analiziraš

Pozdrav
[ lanmi93 @ 21.09.2012. 13:42 ] @
Aham.... meni je najveci problem bio ovo deklarisanje. I sad je ali ga polako resavam. Sad sam shvatio da sve prvo mora da se deklarise, pod program, interapt...samo jos da naucim sta koja oznacava xD Ono sto si mi poslao je super... Eto ti fore kako da zaradis, napises knjigu sa primerima xD