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

Kako programirati LCD?

[es] :: Elektronika :: Mikrokontroleri :: Kako programirati LCD?

Strane: 1 2

[ Pregleda: 6058 | Odgovora: 31 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nikolapirot
Student
Srbija Pirot

Član broj: 235367
Poruke: 239
*.dynamic.isp.telekom.rs.



+1 Profil

icon Kako programirati LCD?13.07.2012. u 11:32 - pre 142 meseci
Interesuje me kako se programira LCD display preko mikrokontrolera? Da li je za sve isto? Gledao sam na sajtu koji sve LCD ima da se kupi i ne postoji informacija o bilo kakvoj oznaci tog displeja. Na primer http://proelectronic.rs/LCD-DI...ALI-DISPLEJ-1X16-MALI-3544.htm . Za ovaj display ima samo dimenzije i koliko karaktera moze da prikaze. Interesuje me da li je za sve displeje isti nacin programiranja i kako se povezuju?
 
Odgovor na temu

shpiki
Student
Novi Sad

Član broj: 50342
Poruke: 1651



+62 Profil

icon Re: Kako programirati LCD?13.07.2012. u 12:19 - pre 142 meseci
Prijatelju, proguglaj malo uC LCD, ili PIC PCD ili AVR LCD, itd... znaci, ne programira se display nego uC koji "vozi" display...
There are only 10 types of people in the world:
those who understand binary, and those who don't.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Kako programirati LCD?13.07.2012. u 13:08 - pre 142 meseci
Citat:
nikolapirot:
Da li je za sve isto?



nije isto ... postoji mnogo standarda, karakter display-i uglavnom svi rade po jednom standardu ali ima i onih koji imaju svoje, graficki imaju svaki svoj standard.

imas ovde primer, kako se povezuje i kako izgleda source:
http://elco.crsndoo.com/wordpress/2009/10/mikroc-lcd-stepper/

jednostavniji primer od toga ne mogu da zamislim, koristi se mikroC koji je najjednostavniji koji postoji, sve je ultra jednostavno, pravljen primer za coveka koji pojma o svemu tome nema ... ako to sto je u tom postu ne razumes onda ti fale neke naj-osnovnije osnove
 
Odgovor na temu

nikolapirot
Student
Srbija Pirot

Član broj: 235367
Poruke: 239
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Kako programirati LCD?13.07.2012. u 13:52 - pre 142 meseci
Samo mi ovo nije jasno, sve komande za LCD su tipa LCD_ *(*) a nigde nema na koji port to izbacuje. Kako ja odredjujem na kojem portu je izlaz za LCD?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Kako programirati LCD?13.07.2012. u 13:58 - pre 142 meseci
Citat:
nikolapirot:
Samo mi ovo nije jasno, sve komande za LCD su tipa LCD_ *(*) a nigde nema na koji port to izbacuje. Kako ja odredjujem na kojem portu je izlaz za LCD?


MikroC zahteva da definises na kojim pinovima ti je LCD, pogledaj pocetak programa imas definisano LCD_EN, LCD_RS ... LCD_EN_Direction...

MikroC uvek koristi ta imena, a tvoje je da na pocetku programa definises za koje pinove su ta imena vezana

Code:

// LCD pinovi
sbit LCD_EN at RD1_bit;
sbit LCD_RS at RD2_bit;
//sbit LCD_RW at RD3_bit; // MikroC ne koristi RW pin
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_RS_Direction at TRISD2_bit;
//sbit LCD_RW_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;


Drugi kompajleri to rade drugacije ali MikroC je najbolji kompajler za pocetnike koji ja znam, probao sam mnoge, i pokazivao mnoge raznim pocetnicima, i MikroC je ubedljivo najbolje prihvacen ... kada savladas MikroC (imas dzabe da skines sa mikroe.com verziju koja je limitirana velicinom koda koji mozes da pravis - za ucenje vise nego dovoljno) onda sam odluci da li ces da kupis full verziju i nastavis sa njim ili ces da ides na neki drugi kompajler...
 
Odgovor na temu

nikolapirot
Student
Srbija Pirot

Član broj: 235367
Poruke: 239
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Kako programirati LCD?13.07.2012. u 15:20 - pre 142 meseci
OK, sad mi je jasno, ali kad kupim lcd, evo na primer link u mom prvom postu, kako da znam koji je pin koji jer nista nije obelezeno?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Kako programirati LCD?13.07.2012. u 15:34 - pre 142 meseci
ne znas! taj iz pro-a je standardan, ima klasican raspored pinova Vss, Vdd, Contrast, RS, RW, E, D0,D1..D7,A,K (mozda nema A i K ako nema osvetljenje pozadinsko), samo treba da vidis koji pin je 1 a to obicno ima oznaceno na lcd-u, ali generalno ako nema datasheet ne mozes da znas, mozes samo da pogadjas

zato kupis lcd koji ima datasheet, ka na primer
http://www.mikroe.com/eng/products/view/277/various-components/ (Character LCD 2x16 ili Character LCD 4x20 with large digits and blue backlight ili COG Display ) i kao sto vidis nista nije skuplje nego taj iz proelektronika a uz svaki vidis da ima datasheet i sve ih podrzava mikroC :)


 
Odgovor na temu

nikolapirot
Student
Srbija Pirot

Član broj: 235367
Poruke: 239
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Kako programirati LCD?14.07.2012. u 11:35 - pre 142 meseci
Ali sad imam problem, sbit naredbu ne prepoznaje, a sad imam neku drugu verziju mikroc jer ne znam koju sam imao do sad a obarao sam sistem. I na primer ranije sam pisao TRISB.TRISB1=0; a sad moram da pisem TRISB.F1=0. Promenila se sintaksa. Zna li neko koji mikroC da skinem umesto ovog da bude predhodna sintaksa na koju sam navikao i interesujeme koju naredbu umesto sbit da koristim jer tu naredbu ne prepoznaje.
 
Odgovor na temu

nikolapirot
Student
Srbija Pirot

Član broj: 235367
Poruke: 239
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Kako programirati LCD?14.07.2012. u 12:14 - pre 142 meseci
Uspeo sam, help je mnogo dobra stvar :D
 
Odgovor na temu

nikolapirot
Student
Srbija Pirot

Član broj: 235367
Poruke: 239
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Kako programirati LCD?14.07.2012. u 14:18 - pre 142 meseci
Da ne otvaram novu temu, gledam neke mikroC kodove, ovo je konkretno frekfrenciometar http://www.micro-examples.com/.../doc/110-p16f84-freqmeter.html . E sad dole na kraju gde je glavni program ima
Comm_Write(str) ; // write string
a onda ima
void Comm_WriteConst(const unsigned char *s)
{
while(*s)
{
Soft_Uart_Write(*s) ;
s++ ;
}
}


E sad mi nije jasno sta se radi u ovoj while petlji. Imamo while(str) koliko razumem ali ne razumem cemu sluzi ovo s++ i do kad ce ova petlja while da kruzi?
I jos nesto sto je cista sintaksa ali nisam uspeo da se snadjem, jos se ucim C pa u koliko nekog ne mrzi da mi razjasni ovu petlju koja sluzi za pretvaranje iz long cntr u string str[10].
void Long2str(void)
{
unsigned char i, j ;

if(cntr == 0)
{
str[0] = '0' ;
str[1] = 0 ;
}
else
{
str[0] = 0 ;
i = 0 ;
while(cntr > 0)
{
for(j = i + 1 ; j > 0 ; j--)
{
str[j] = str[j - 1] ;
}
str[0] = cntr % 10 ;
str[0] += '0' ;
i++ ;
cntr /= 10 ;
}
}
}

Hvala unapred
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Kako programirati LCD?14.07.2012. u 15:03 - pre 142 meseci
Citat:
nikolapirot:
Da ne otvaram novu temu


sto da ne otvaras novu ako ova nema veze sa lcd-om, uvek bolje da otvoris novu ako nema veze sa temom

Citat:

E sad mi nije jasno sta se radi u ovoj while petlji. Imamo while(str) koliko razumem ali ne razumem cemu sluzi ovo s++ i do kad ce ova petlja while da kruzi?


ispisuje vrednost na poziciji pointera s pa zatim povecava pointer s za jedan a ide dokle je vrednost razlicita od nula (u c-u su stringovi terminisani nulom).


Code:

if(cntr == 0){
  str[0] = '0' ;
  str[1] = 0 ;
}


kao sto rekoh stringovi su terminisani nulom u c-u, upise u ovo ako je cntr == 0 napise u string str "0" (tako sto na prvu lokaciju upise '0' i onda terminise string sa nulom.

Code:

                str[0] = 0 ;
                i = 0 ;
                while(cntr > 0)
                        {
                        for(j = i + 1 ; j > 0 ; j--)
                                {
                                str[j] = str[j - 1] ;
                                }
                        str[0] = cntr % 10 ;
                        str[0] += '0' ;
                        i++ ;
                        cntr /= 10 ;
                        }
                }


dok je god cntr > 0 odseci mu zadnju cifru i dodaj u string. Svaki put kada dodajes cifru na string prvo pomeri sve cifre udesno


 
Odgovor na temu

nikolapirot
Student
Srbija Pirot

Član broj: 235367
Poruke: 239
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Kako programirati LCD?15.07.2012. u 11:41 - pre 142 meseci
Da skratimo stvari, jer nekako ne mogu da skapiram ovu petlju, kako najlakse na LCD da ispisem neku int vrednost. Dakle imam
int proba;
proba=200;
Lcd8_out(1,1,proba);
ovo znam da ne moze ali kako najlakse da prikazem ovaj broj koji se nalazi u promenljivoj proba na LCD?

[Ovu poruku je menjao nikolapirot dana 15.07.2012. u 12:55 GMT+1]
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Kako programirati LCD?15.07.2012. u 15:30 - pre 142 meseci
Citat:
nikolapirot:
Da skratimo stvari, jer nekako ne mogu da skapiram ovu petlju


A % 10 je ostatak pri deljenju sa deset iliti "zadnja cifra"
A / 10 je deljenje sa deset ili "odseci zadnju cifru"

dakle

Da li je broj 0, ako je nula, zavrsili smo, ako nije nula
zadnja cifra je broj % 10
skrati broj za zadnju cifru, broj = broj / 10
aj ispocetka dok broj nije nula

ako to ne mozes da razumes, mani se mikrokontrolera i prvo nauci naj-osnovnije programiranje

Citat:

, kako najlakse na LCD da ispisem neku int vrednost. Dakle imam


koristi printf()


 
Odgovor na temu

nikolapirot
Student
Srbija Pirot

Član broj: 235367
Poruke: 239
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Kako programirati LCD?15.07.2012. u 18:31 - pre 142 meseci
Razumeo sam, samo sad mi se nesto dogadja, do malopre sam se "igrao" sa LCD om da shvatim sta on prikazuje a sad od jednom ne mogu nista da ispisem. Evo koji kod naj prostiji koristim
void main()
{
Lcd8_Config(&PORTA,&PORTB,0,1,2,7,6,5,4,3,2,1,0);
Lcd8_Init(&PORTA,&PORTB);
Lcd8_Out(1,1,"Test");
}

I povezem lepo na port a kontrol portove kako idu 0-RS 1-EN 2-RW a na portB povezem d0,d1.....d7 na pinove rb0,rb1,rb2,,,,rb7 i sad od jednom nece bas nista da ispise. Koristim proteus. Gde gresim ?
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4542

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+529 Profil

icon Re: Kako programirati LCD?15.07.2012. u 19:37 - pre 142 meseci
A da ti to probaš na PRAVOM hardveru.

Kakva su vremena došla još će ove junoše samo u simulatorima da .... (da Joca ne obriše)
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Kako programirati LCD?15.07.2012. u 20:18 - pre 142 meseci
1. ne postoji nikakav razlog da teras 16x2 lcd u 8bitnom modu, to je cisto bacanje 4 pina
2. nesto mi se cini da koristis stari mikroc, skini sa mikroe najnoviju verziju mikroc-a, nema veze sto je limitirana na velicinu, za to sto ti radis je za sada skroz ok, a posle, posle ili kupi ili koristi x8 ili neki drugi free c kompajler, momci iz mikroelektronike su ulozili mnogo truda i vremena i prodaju taj kompajler jako jeftino (ako se uporedi sta prodaju i za koje pare to je dzabe gledajuci konkurenciju)
3. sve i sa starim mikroc-om i sa proteusom, ako si odabrao dobar lcd u proteusu i povezao kako je u manualu za mikroc to ce da radi, znaci negne nesto nisi spojio kako valja
 
Odgovor na temu

nikolapirot
Student
Srbija Pirot

Član broj: 235367
Poruke: 239
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Kako programirati LCD?17.07.2012. u 12:07 - pre 142 meseci
Instalirao sam najnovije verzije programa i sad kad otkucam

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


Ne prepoznaje sve delove koji sadrze LCD, LCD_RS,LCD_EN itd. A cak i u helpu pise da je ta sintaksa.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
95.180.61.*

Sajt: mysql.rs


+2377 Profil

icon Re: Kako programirati LCD?17.07.2012. u 14:32 - pre 142 meseci
Citat:
nikolapirot:
Ne prepoznaje sve delove koji sadrze LCD, LCD_RS,LCD_EN itd. A cak i u helpu pise da je ta sintaksa.


uradi copy/paste greske
 
Odgovor na temu

nikolapirot
Student
Srbija Pirot

Član broj: 235367
Poruke: 239
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Kako programirati LCD?17.07.2012. u 14:54 - pre 142 meseci
Local variable cannot be sbit type
Syntax Error: ';' expected but 'at' found
'}' exected ';' found
Variable 'LCD_RS' has been declared but not, used
Finished (with errors)
 
Odgovor na temu

nikolapirot
Student
Srbija Pirot

Član broj: 235367
Poruke: 239
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Kako programirati LCD?18.07.2012. u 11:19 - pre 142 meseci
Ima li neko neku ideju?
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Kako programirati LCD?

Strane: 1 2

[ Pregleda: 6058 | Odgovora: 31 ] > FB > Twit

Postavi temu Odgovori

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