Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Mikrokontroler + LCD-molim pomoc!

[es] :: Elektronika :: Mikrokontroleri :: Mikrokontroler + LCD-molim pomoc!

Strane: 1 2 3

[ Pregleda: 8259 | Odgovora: 54 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

AxeXea
sam za sebe
moja
Srbija

Član broj: 310301
Poruke: 49
*.dynamic.isp.telekom.rs.



Profil

icon Mikrokontroler + LCD-molim pomoc!25.12.2012. u 18:16 - pre 137 meseci
Pisao sam jedan jednostvan primer za PIC16F877A...,i imam problem.
Program treba da ispise brojeve od 1 do recimo 7 na LCDu.Prvo da napise broj 1,pa obrise displej,pa broj 2 itd.
evo koda:

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;
// LCD konekcija

short int i; // varijabla petlje

void main(){

Lcd_Init(); // Inicijalizacija LCDa
Lcd_Cmd(_LCD_CLEAR); // obrisi displej
Lcd_Cmd(_LCD_CURSOR_OFF); // ugasi kursor

Delay_ms(500);

// petlja
for(i=0; i<=7; i++) // Petlja
{
Lcd_Out(2,1,i); // Upisi i u drugi red,prvo mesto
Delay_ms(500);
Lcd_Cmd(_LCD_CLEAR); // obrisi displej
Lcd_Cmd(_LCD_CURSOR_OFF); // ugasi kursor
}

Sa ovim ja na displeju dobivam neke brljotine,kao da igram pakmana :)
U pitanju je MikroC.

 
Odgovor na temu

vukboban
Boban Vukovic
PANCEVO

Član broj: 116735
Poruke: 250
*.mediaworksit.net.



+11 Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 19:17 - pre 137 meseci
A kako si ti to sve fizicki povezao?daj neku semu...

Mislim da " i " prvo moras da pretvoris u tekst naredbom IntToStr,pa tekst ide na LCD

 
Odgovor na temu

AxeXea
sam za sebe
moja
Srbija

Član broj: 310301
Poruke: 49
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 19:27 - pre 137 meseci
Fizicki!?
Pa mislim da je iz samog koda sve jasno.Mikrokontroler je PIC16F877a,LCD je 4bitno spojen na port B.Nema nikakvog drugog hardvera.
 
Odgovor na temu

Genie_1984
Novi Sad

Član broj: 61150
Poruke: 93



+1 Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 19:30 - pre 137 meseci
Odgovor na tvoje pitanje je u prototipu LCD_Out funkcije

Code:


void Lcd_Out(char row, char column, char *text);



kao što vidiš tvoja promenljiva 'i' nije odgovarajućeg tipa

Jedna od mogućnosti je da iskoristiš LCD_chr:

Code:

Lcd_chr(2,1, i+48 ); // i+48 je ASCII code za broj -
                           //nedostatak samo brojevi od 0..9 pa za veće brojeve potrebno je malo manipulacije


druga je da iskoristiš ByteToStr ,ShortToStr,WordToStr,IntToStr,LongToStr,LongWordToStr,FloatToStr funkcije.
I to naravno ima nedostataka,probaj pa će ti biti jasno koji je....

npr

Code:

...
char tmp[3];

...
ShortToStr(i,tmp)
Lcd_Out(2, 1, tmp);
...

 
Odgovor na temu

vukboban
Boban Vukovic
PANCEVO

Član broj: 116735
Poruke: 250
*.mediaworksit.net.



+11 Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 19:30 - pre 137 meseci
Pa recimo da li si B3 povezao na D7,da li su d1,d2,d3,d4 svi na gnd itd...
pretvori promenljivu u tekst,pa tekst salji na lcd!
 
Odgovor na temu

AxeXea
sam za sebe
moja
Srbija

Član broj: 310301
Poruke: 49
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 19:43 - pre 137 meseci
OK,mislim da ce inttostr da resi problem.Probacu malo kasnije veceras da prepakujem kod.
LCD je pravilno spojen jer neki drugi kodovi normalno rade na njemu.
Hvala svima na pomoci.Javicu se kasnije...
 
Odgovor na temu

AxeXea
sam za sebe
moja
Srbija

Član broj: 310301
Poruke: 49
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 20:36 - pre 137 meseci
Evo ovako sam ja to sad spakovao,ali sad mi prijavljuje gresku u kompajleru :(

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;
// LCD konekcija

short int i = 0; // varijabla petlje
char txt[7];
IntToStr(i, txt);


void main(){

Lcd_Init(); // Inicijalizacija LCDa
Lcd_Cmd(_LCD_CLEAR); // obrisi displej
Lcd_Cmd(_LCD_CURSOR_OFF); // ugasi kursor


Delay_ms(500);


// petlja
for(i=0; i<=7; i++) // Petlja
{
Lcd_Out(2,1,txt); // Upisi i u drugi red,prvo mesto
Delay_ms(500);
Lcd_Cmd(_LCD_CLEAR); // obrisi displej
Lcd_Cmd(_LCD_CURSOR_OFF); // ugasi kursor
}
}
 
Odgovor na temu

AxeXea
sam za sebe
moja
Srbija

Član broj: 310301
Poruke: 49
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 21:10 - pre 137 meseci
Resen problem,proradilo je!

Evo kompletnog koda koji radi:

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;
// LCD konekcija

short int i; // varijabla petlje
char txt[7];



void main(){

Lcd_Init(); // Inicijalizacija LCDa
Lcd_Cmd(_LCD_CLEAR); // obrisi displej
Lcd_Cmd(_LCD_CURSOR_OFF); // ugasi kursor


Delay_ms(500);


// petlja
for(i=0; i<=7; i++) // Petlja
{
IntToStr(i, txt);
Lcd_Out(2,1,txt); // Upisi i u drugi red,prvo mesto
Delay_ms(500);
Lcd_Cmd(_LCD_CLEAR); // obrisi displej
Lcd_Cmd(_LCD_CURSOR_OFF); // ugasi kursor
}
}


Hvala svima na pomoci!
 
Odgovor na temu

Genie_1984
Novi Sad

Član broj: 61150
Poruke: 93



+1 Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 21:21 - pre 137 meseci
Probaj i ovako

Code:


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;
// LCD konekcija

short i; // varijabla petlje


//u slučaju da ti treba int
/*
void LCD_Int(char row, char column, int value) 
{

     char tmp[5],i=0;
     tmp[0]=value/10000;
     tmp[1]=(value%10000)/1000;
     tmp[2]=(value%1000)/100;
     tmp[3]=(value%100)/10;
     tmp[4]=value%10;
     Lcd_Out(row,column,"");
     while(!tmp[i]&&i<4)i++;
     while(i<5) {LCD_chr_cp(tmp[i]+48); i++; }
}
*/

void LCD_Short(char row, char column, short value)
{

     char tmp[3],i=0;
     tmp[0]=value/100;
     tmp[1]=(value%100)/10;
     tmp[2]=value%10;
     Lcd_Out(row,column,"");
     while(!tmp[i]&&i<2)i++;
     while(i<3) {LCD_chr_cp(tmp[i]+ 0x30); i++; }
}

void main()
{

     Lcd_Init(); // Inicijalizacija LCDa
     Lcd_Cmd(_LCD_CLEAR); // obrisi displej
     Lcd_Cmd(_LCD_CURSOR_OFF); // ugasi kursor

     Delay_ms(500);

     // petlja
     for(i=0; i<127; i++) // Petlja
     {
        LCD_Short(2,1,i); // Upisi i u drugi red,prvo mesto
        Delay_ms(500);
        Lcd_Cmd(_LCD_CLEAR); // obrisi displej
     }
}

 
Odgovor na temu

AxeXea
sam za sebe
moja
Srbija

Član broj: 310301
Poruke: 49
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 21:36 - pre 137 meseci
Radi lepo i na taj nacin...broji do 127 i na kraju obrise displej.
Proucavacu ovo malo :)
Kad sam poceo da pisem,misleo sam da ce bito kod od 4 reda :)
Hvala.
 
Odgovor na temu

Genie_1984
Novi Sad

Član broj: 61150
Poruke: 93



+1 Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 21:57 - pre 137 meseci
Razlika izmedju tvog i mog koda je u tome što u tvom deo

IntToStr(i, txt);
Lcd_Out(2,1,txt);

ispiše txt[7] na LCD, pa ako je broj 1 - ispiše 5 praznih mesta i onda 1(sedmi je null terminator zbog stringa) ,dok moj ispiše odmah 1

to je zato što IntToStr popunjava txt sa brojem sa desno na levo pa ostatak niza popuni praznim mestom.
A to zna da smara,jer ako treba npr pre broja da se ispiše string od 12 slova pa onda broj sa 2 cifre moraš prvo da ispišeš broj
pa onda reč od početka. Malo nezgrapno objašnjeno ali nadam se da shvataš šta hoću reći....

Pozdrav
 
Odgovor na temu

AxeXea
sam za sebe
moja
Srbija

Član broj: 310301
Poruke: 49
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 22:24 - pre 137 meseci
Da,pokusao sam da menjam tu sedmicu,ali tad kod nece da radi,odnosno radi ali brljavi neke heroglife.
Aj jos jedno pitanje.Probao sam da napravim da broji unazad od recimo 100 do 0,medjutim nece da radi,kad sam koristio i-- dobio sam da recimo krene od 0 prema minusu odnosno u negativne brojeve,bilo sta drugo da probam nece da radi,prazan displej.
 
Odgovor na temu

Genie_1984
Novi Sad

Član broj: 61150
Poruke: 93



+1 Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 22:29 - pre 137 meseci
Pa samo izmeniš for petlju
Code:


     for(i=100; i>=0; i--) // Petlja
     {
        LCD_Short(2,1,i); // Upisi i u drugi red,prvo mesto
        Delay_ms(500);
        Lcd_Cmd(_LCD_CLEAR); // obrisi displej
     }



Pozdrav
 
Odgovor na temu

AxeXea
sam za sebe
moja
Srbija

Član broj: 310301
Poruke: 49
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 22:33 - pre 137 meseci
Probao bas tako...,ali dobijem samo prazan displej?
 
Odgovor na temu

AxeXea
sam za sebe
moja
Srbija

Član broj: 310301
Poruke: 49
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler + LCD-molim pomoc!25.12.2012. u 22:38 - pre 137 meseci
OK,radi...greska je bila u <>
Hvala mnogo na pomoci.
 
Odgovor na temu

vukboban
Boban Vukovic
PANCEVO

Član broj: 116735
Poruke: 250
*.mediaworksit.net.



+11 Profil

icon Re: Mikrokontroler + LCD-molim pomoc!26.12.2012. u 18:15 - pre 137 meseci
Za brojeve do 255 koristi short promenljivu,onda je txt[4],t.j. imas 4 prazna mesta
 
Odgovor na temu

MirkoDamnjanovic

Član broj: 55147
Poruke: 49
*.mediaworksit.net.



Profil

icon Re: Mikrokontroler + LCD-molim pomoc!23.01.2013. u 12:20 - pre 136 meseci
Sta koristis od biblioteka?

Uvukao sam xlcd.h i kada kompajliram tvoj kod izbaci mi problem na "sbit LCD_RS at RB4_bit;" pa sve redom dalje.

Ako bi mogao da mi posaljes potrebne fajlove da bi radio sa LCD-om.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Mikrokontroler + LCD-molim pomoc!23.01.2013. u 12:41 - pre 136 meseci
Citat:
MirkoDamnjanovic
Uvukao sam xlcd.h i kada kompajliram tvoj kod izbaci mi problem na "sbit LCD_RS at RB4_bit;" pa sve redom dalje.


sbit ... je MikroC lelemudija (nisu ga oni izmislili, sbit sluzi za definisanje adrese bitova jos iz vremena 8051 ali u PIC svetu mislim da samo mikroC koristi sbit) a mikroC ima svoje interne zatvorene biblioteke. Ti ako si uvlacio xlcd.h bice da koristis neki microchip kompajler, oni ne koriste sbit, i sa lcd-om rade drugacije
 
Odgovor na temu

MirkoDamnjanovic

Član broj: 55147
Poruke: 49
*.mediaworksit.net.



Profil

icon Re: Mikrokontroler + LCD-molim pomoc!23.01.2013. u 13:20 - pre 136 meseci
Aha znaci tako. Ceo dan sam izgubio pokusavajuci da napisem bilo sta na LCD i nista. Nadjem neki primer da se uvuce xlcd.h (prekopirao sam ga iz xc8 direktorijuma u aplikaciju) i prijavlje mi greske na bilo kom pozivanju metoda.

Plz ako znas neki sajt sa primerom koji ce da radi na xc8 lite compileru.
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: Mikrokontroler + LCD-molim pomoc!23.01.2013. u 14:34 - pre 136 meseci
Uradiću ti primer večeras ako ti nije kasno.
gorankg
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Mikrokontroler + LCD-molim pomoc!

Strane: 1 2 3

[ Pregleda: 8259 | Odgovora: 54 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.