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

Mikrokontroler i LCD

[es] :: Elektronika :: Mikrokontroleri :: Mikrokontroler i LCD

Strane: 1 2 3

[ Pregleda: 15350 | Odgovora: 53 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
79.101.74.*



+321 Profil

icon Re: Mikrokontroler i LCD11.07.2009. u 19:42 - pre 180 meseci
U PROTEUS-u? Kao prvo - nigde. Kao drugo, ne vidim čemu bi to služilo u simulaciji. Mislim da su njegovi autori stavili svetliju boju pozadine u radnom režimu čisto da bi korisnik bio siguran, ako mu se ništa ne pojavi na displeju, da li je bar napajanje ispravno povezano, odn. da li radi sam displej u simulatoru.

Pozdrav.
Sinisha
 
Odgovor na temu

conver
Milos Milutinovic
Paracin

Član broj: 226436
Poruke: 112
79.101.94.*



+1 Profil

icon Re: Mikrokontroler i LCD11.07.2009. u 20:26 - pre 180 meseci
Opet frka sa Proteusom :(

Postavio sam komponente prema slici gore!
Evo programa koji se iskompajlirao u MikroC'u bez greske!


char *text = "Misko!!!";

void main()
{

TRISA=1;
TRISB=1;
TRISD=0;
TRISC=0;

Lcd_Init(&PORTD);
Lcd_Cmd(Lcd_CLEAR);
Lcd_Cmd(Lcd_CURSOR_OFF);
Lcd_Out(1, 1, text);


}

Ubacim HEX u PIC kliknem plaz... LCD samo poyeleni... ne ispisuje mi text! :( HELP!
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
79.101.74.*



+321 Profil

icon Re: Mikrokontroler i LCD11.07.2009. u 20:57 - pre 180 meseci
To što je kompajler preveo bez greške program, ne znači da je sve u redu. Ne govorim Mikro-C (a ni makro), ali pretpostavljam da je greška u "obaveštavanju" kompajlera na koje pinove je priključen LCD. Pogledaj malo uputstvo za Mikro-C i vidi koje su unapred definisane linije za LCD (ljubitelji engleskog zovu to "default vrednosti"); velika je šansa da nisu one koje si ti povezao pa ili preveži pinove LCD-a ili upotrebi naredbe za definisanje pinova LCD displeja.

Pozdrav.
Sinisha
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
79.101.74.*



+321 Profil

icon Re: Mikrokontroler i LCD11.07.2009. u 21:56 - pre 180 meseci
Zaboravio sam još jednu sitnicu: pošto si kontrolne linije povezao na port A, moraš da ga prebaciš u digitalni režim pošto se po uključenju on "budi" sa analognim funkcijama.

Pozdrav.
Sinisha
 
Odgovor na temu

conver
Milos Milutinovic
Paracin

Član broj: 226436
Poruke: 112
93.87.228.*



+1 Profil

icon Re: Mikrokontroler i LCD12.07.2009. u 18:38 - pre 180 meseci
Jeste Sinisa, bio si u pravu... LCD se inicijalizuje po default-u na portu B, to sam video u help-u mikroC-a! Posto nisam znao kako to da promenim :) prevezao sam pinove sa PortaD na PortB, ucitao program ali opet nista! :-(
Nisam te skapirao ovo... kako da prebacim to iz analognog u digitalni?
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
77.46.170.*



+321 Profil

icon Re: Mikrokontroler i LCD12.07.2009. u 19:10 - pre 180 meseci
Hm, imam neki utisak da nisi čitao dokumentaciju ni za Mikro-C ni za PIC koji koristiš. Evo, pogledao sam upravo uputstvo za Mikro-C i predlažem ti da ga pogledaš i ti počev od strane 236, tamo ti sve piše; ja ne radim u C-u i po tom pitanju više ne mogu da ti pomognem.
Što se tiče A porta, pogledaj dokumentaciju za PIC16F887, strana 39, imaš primer u ASM-u kako se port A prebacuje iz analognog u digitalni režim. Suština je u resetovanju registra ANSEL; u PBP-u se to radi jednostavno "ANSEL=0", a za Mikro-C ne bih znao.

Pozdrav.
Sinisha
 
Odgovor na temu

barum
Bojan Radosavljevic

Član broj: 52522
Poruke: 418
*.uforce.net.



+1 Profil

icon Re: Mikrokontroler i LCD14.07.2009. u 23:05 - pre 180 meseci
Evo minimalnog koda za mikro C

Code:

void main() {
    ANSELH = 0; // PIC16F887
    Lcd_Init(&PORTB);
    Lcd_Cmd(Lcd_CLEAR);
    Lcd_Cmd(Lcd_CURSOR_OFF);
    LCD_Out(1,1,"proba...");
}


I minimalnog povezivanja u Proteus-u za ovaj primer i kako izgleda kada se pokrene (F12).



[Ovu poruku je menjao barum dana 15.07.2009. u 12:08 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

conver
Milos Milutinovic
Paracin

Član broj: 226436
Poruke: 112
93.87.132.*



+1 Profil

icon Re: Mikrokontroler i LCD20.07.2009. u 17:19 - pre 179 meseci
Hvala puno, shema mi je dosta pomogla... Sada i moja radi! ;-)
evo moje:


E sad pitanjce... kako da kad na PortE0 dovedem +5V na lcd pored tog sadasnjeg teksta dopise mi jos i rec "Laza"?
Evo mog koda, ali nesto nece! :-(

Nesto me buni ova konfiguracija pinova... ako neko zna, pliz help!


****************************************************

char Mika[] = "Mika!";
char Laza[] = "Laza";



void main()
{
TRISB = 0;
PORTB = 0xFF;
TRISB = 0xFF;
ANSEL // Configure AN pins as digital I/O
ANSELH = 0; STA ZNACI OVA FUNKCIJA?

TRISE = 1;



Lcd_Init(); // Initialize LCD

Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,1,Mika);

if(RE0==1) //ako je na PORTA.1 dovedena log1 menja se meni
{
Lcd_Out(2,1,Laza);

}
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
77.46.216.*



+321 Profil

icon Re: Mikrokontroler i LCD20.07.2009. u 17:56 - pre 179 meseci
Citat:
conver
ANSEL // Configure AN pins as digital I/O
ANSELH = 0; STA ZNACI OVA FUNKCIJA?

Ti baš ne voliš da čitaš uputstva, zar ne? Da si potražio u uputstvu našao bi da je na strani 47 uputstva za 16F887 objašnjen ANSELH registar.

Citat:
conver:E sad pitanjce... kako da kad na PortE0 dovedem +5V na lcd pored tog sadasnjeg teksta dopise mi jos i rec "Laza"?
Evo mog koda, ali nesto nece! :-(

Ako ti je ovo ceo program onda je sasvim jasno zašto neće - program ti se jednostavno završi na zadnjoj instrukciji i tu se zakuca u mrtvoj petlji, tj. samo jednom kada prodje kroz program ispita stanje tog pina. Moraš da napraviš petlju na neki od načina tako da program stalno prolazi kroz tu pitalicu.

Pozdrav.
Sinisha
 
Odgovor na temu

conver
Milos Milutinovic
Paracin

Član broj: 226436
Poruke: 112
93.87.132.*



+1 Profil

icon Re: Mikrokontroler i LCD20.07.2009. u 18:54 - pre 179 meseci
Pomozi druze, kako da napravim tu petlju? ispravi mi kod! i ti si nekad bio pocetnik.... :)
 
Odgovor na temu

barum
Bojan Radosavljevic

Član broj: 52522
Poruke: 418
*.uforce.net.



+1 Profil

icon Re: Mikrokontroler i LCD20.07.2009. u 21:31 - pre 179 meseci
Citat:
conver: Hvala puno, shema mi je dosta pomogla... Sada i moja radi! ;-)
evo moje:

!
Ove veze nisu ni slične. Po dokumentaciji D<7:4> se vezuje na PORTx<7:4> a ti si vezao na PORTx<3:0>.
Jesi li siguran da radi i kada si vezao na svoj način?

Citat:
Pomozi druze, kako da napravim tu petlju


Paj'sad:

Code:

    while( 1 )
    {
        if(PORTE & 0b00000001) LCD_Out(2,1,Laza);
    }



Citat:
ANSEL // Configure AN pins as digital I/O
ANSELH = 0; STA ZNACI OVA FUNKCIJA?

Otvoriš pdf za 16F887 pritisneš CTRL+SHIFT+F zatim kucaš ANSELH i sve će ti se samo kasti. :)


 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
77.46.216.*



+321 Profil

icon Re: Mikrokontroler i LCD20.07.2009. u 21:46 - pre 179 meseci
Citat:
conver: Pomozi druze, kako da napravim tu petlju? ispravi mi kod! i ti si nekad bio pocetnik.... :)

Pa ja se trudim da ti pomognem više nego što ti pokušavaš sam sebi da pomogneš. Znači, moraš prvo dobro da proučiš dokumentaciju za PIC koji koristiš i za Mikro C, pošto njega koristiš, ali ti jednostavno misliš da ćeš da naučiš nešto tako što će drugi da ti reše problem. Ja zaista mogu da zaključim da si krenuo u sve ovo ne pročitavši skoro ništa od dokumentcije čim ti ne znaš šta je ANSELH (nisam ni ja znao do danas, ali sam pogledao u dokumentaciju), a ne znaš ni kako da napraviš neku od petlji. Za C sam par puta rekao da ga ne znam i da u tome ne mogu da ti pomognem. Elem, da skratim, moj DOBRONAMERAN savet je da prvo proučiš C do detalja, probaš prvo neke osnovne primere (kojih je, verujem, pun internet) i da pratiš MikroE forum gde ćeš verovatno naći već rešene probleme sa kojima se ti sad susrećeš. Znači, kreni od lakših primera i ČITAJ dokumentaciju, veruj mi da će ti se taj trud i vreme brzo isplatiti.

Pozdrav.
Sinisha
 
Odgovor na temu

vukboban
Boban Vukovic
PANCEVO

Član broj: 116735
Poruke: 250
195.252.79.*



+11 Profil

icon Re: Mikrokontroler i LCD21.07.2009. u 16:25 - pre 179 meseci
Citat:
if(RE0==1) //ako je na PORTA.1 dovedena log1 menja se meni


jel si ti to doveo na porte.0 ili porta.1?
a koliko vidim nedostaje ti jedna } na kraju
 
Odgovor na temu

conver
Milos Milutinovic
Paracin

Član broj: 226436
Poruke: 112
93.87.228.*



+1 Profil

icon Re: Mikrokontroler i LCD21.07.2009. u 22:48 - pre 179 meseci
zagradu sam ispustio na copy/paste!
Sve jedno da je dovedem na E ili A ne funkcionise!
Problem je sada sto na svim pinovima ja vec imam stanje 1!
I da me Sinisa ne bi grdio vise, krenuo sam da citam ove datasheet-ove! :-) Mada treba mi vremena da skapiram ovu logiku ANSEL i ANSELH i povezem sa TRIS i PORT-ovim...
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
77.46.216.*



+321 Profil

icon Re: Mikrokontroler i LCD21.07.2009. u 23:09 - pre 179 meseci
Citat:
conver:I da me Sinisa ne bi grdio vise, krenuo sam da citam ove datasheet-ove! :-) Mada treba mi vremena da skapiram ovu logiku ANSEL i ANSELH i povezem sa TRIS i PORT-ovim...

U pravu si, grdim te, i treba, zaslužio si :). U psihologiji postoji nešto što se zove "AHA!" efekat i kad budeš više puta pročitao ono što ti je nejasno, probao u praksi i shvatio, znaćeš šta je taj efekat. U svakom slučaju budi uporan, a ako nešto zapne, tu sam.

Pozdrav.
Sinisha
 
Odgovor na temu

vukboban
Boban Vukovic
PANCEVO

Član broj: 116735
Poruke: 250
195.252.79.*



+11 Profil

icon Re: Mikrokontroler i LCD22.07.2009. u 21:52 - pre 179 meseci
aj da probamo ovako:
TRIS registar je registar smera podataka,odnosno on odredjuje da li je neki pin ulazni ili izlazni.
Znaci ako je neki bit u TRIS registru na HIGH onda ce odgovarajuci pin biti ulazni i obrnuto,ako je bit u TRIS registru LOW,onda je odgovarajuci pin izlazni.recimo TRISA=178 ili binarno TRISA=0b10110010 sto znaci da ce pinovi A0,A2,A3 i A6 biti ulazni,a pinovi A1,A4,A5,A7 ce biti izlazni.
AKO je neki pin postavljen kao ulazni,onda moramo da definisemo kakav signal ce da se dovede na ulaz;da li digitalni(HIGH ili LOW) ili analogni (bilo koja vrednost napona izmedju 0V i 5V-recimo 2V ili 3,7V itd).
887 ima ukupno 14 pinova na koje mozemo da dovedemo i digitalni,ali i analogni signal.
registar ANSEL i ANSELH odredjuje da li je signal na ovih 14 pinova digitalni ili analogni.Ako je neki bit u registru ANSEL na HIGH onda je odgovarajuci pin postavljen kao ANALOGNI ulaz,a ako je pin na LOW,onda je pin postavljen kao DIGITALNI ulaz.
ANSEL je za prvih 8 bitova,a ANSELH za ostalih 6.
Ukratko:prvo sa TRIS registrom odredis da li je pin ulaz ili izlaz,a zatim sa ANSEL registrom odredis da li je taj ulaz analogni ili digitalni.
Koji bit odgovara kom pinu moras da vidis u datasheetu(recimo ANSEL.AN0 odredjuje da li je pin PORTA.RA0 digitalni ulaz ili analogni ulaz;ako si u registru TRISA postavio da je TRISA.TRISA0=0-odnosno da je taj pin izlazni- onda bit ANSEL.AN0 nema nikakvu ulogu,ali ako si stavio TRISA.TRISA0=1 odnosno pin je ulazni,onda bit ANSEL.AN0 odredjuje da li je taj ulaz analogni ili digitalni)

P.S.sad sam video da si napisao :if(RE0==1)
ovako ne moze da se pise u C
mora da pise : if(PORTE.RE0==1)

i kao sto kaze Sinisa moras da napravis petlju.
void main()
{
TRISB = 0;//PORTB je ceo izlazni
PORTB = 0xFF;//i svi pinovi su na HIGH
ANSEL=0; // sve je digitalno
ANSELH = 0; //nista analogno
TRISE = 255;//PORTE je ceo ulazni
Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,1,Mika);
while(1) {
if (PORTE.RE0==1)
{
Lcd_Out(2,1,Laza);
}
}
}




[Ovu poruku je menjao vukboban dana 22.07.2009. u 23:05 GMT+1]
 
Odgovor na temu

conver
Milos Milutinovic
Paracin

Član broj: 226436
Poruke: 112
93.86.182.*



+1 Profil

icon Re: Mikrokontroler i LCD24.07.2009. u 10:45 - pre 179 meseci
Hvala Bobane... ono šljaka super!
Pokušao sam da napišem funkciju na MIKRO C koja će mi na LCD-u ispisati koliko sam puta pritisnuo prekidač, tj. doveo stanje 1. na RE2! Može pomoć?
ono što sam ja uspeo nije ni za šta...
Kad mi je stanje 1 on broji i ode u beskonačnost... u jednom trenutku sam dobio neki čudan karakter na displeju!
 
Odgovor na temu

vukboban
Boban Vukovic
PANCEVO

Član broj: 116735
Poruke: 250
195.252.79.*



+11 Profil

icon Re: Mikrokontroler i LCD24.07.2009. u 15:19 - pre 179 meseci
zbog treperenja kontakata ne mozes samo prosto da brojis,jer za jedan pritisak tastera ti najmanje 50-100 puta promenis stanje na pinu.
Proguglaj malo"debouncing"
Imas u mikroC komandu Button,u kojoj zadajes koliku pauzu u ms pravis izmedju dva ispitivanja da li je taster pritisnut.
Ili jednostavno stavis pauzu od 100 ili 200 ms izmadju svakog brojanja.
I nesto mi nije bas jasno;u kom vremenskom periodu brojis koliko puta je pritisnut?
Ajde evo ti nesto na brzinu:

int i;
int brojac=0;
void main() {
for(i=1;i<50000;i++){//zavisi od takta oscilatora koliko traje,mislim da je ovo oko 5 sec,eksperimentisi
if(PORTE.RE2==1) brojac++;
Delay_ms(200);//za 200 ms ce se smiriti taster,ili probaj sa 300 ako opet brlja
}
dalje ispisujes to na LCD.
ako hoces stalno da to radi onda moras da stavis petlju(moja omiljena je while(1)),i da resetujes brojac na 0

Postoji i hardverski debouncing,stavis jedan kondenzator izmedju pina i gnd,mislim da treba par stotina nF(nemoj da me drzis za rec) i onda on drzi log1 kad se prvi put napuni sve dok ne pustis taster.
Ali dovoljno ti je ovo softversko resenje sa delay,samo moras da znas koliko cesto se ocekuje impuls na ulazu,pa prema tome stavljas i delay(ako impuls dovodis svakih 100 ms,onda nema smisla praviti delay od 200!)

[Ovu poruku je menjao vukboban dana 24.07.2009. u 16:29 GMT+1]
 
Odgovor na temu

conver
Milos Milutinovic
Paracin

Član broj: 226436
Poruke: 112
93.86.130.*



+1 Profil

icon Re: Mikrokontroler i LCD24.07.2009. u 17:58 - pre 179 meseci
Jok... ne pije vodu... brljavi!!!

Evo kako sam ja to pokusao da resim! Tacnije trebao mi je taj brojac da bi napravio meni!!!
Ali meni mi brljavi... verovatno mi ide neka komanda preko komande...
Evo sta sam do sad napravio, mozete ovde da preuzmete ko ima ideju!

http://www.megaupload.com/?d=IEV8R7HJ
to je sa proteusom i kodom zip pakovanje

a evo koda:

// 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

int MPC = 0; //MenuPositionCounter
char MeniMika[] = " <- Mika ->";
char MeniLaza[] = " <- Laza ->";
char MeniPera[] = " <- Pera ->";
char MeniAca[] = " <- Aca ->";

void MainMenuFunction ()
{
Lcd_Out(1,1,MeniMika);
while (PORTE.RE2==1)
{
if (PORTE.RE2 ==1)
{
MPC=MPC +1;
}
}

while (1)
{
if (MPC=1 &&Button (PORTB,RE2,1,0))
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,MeniLaza);
}
if (MPC=2 &&Button (PORTB,RE2,1,0))
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,MeniPera);
}

}


}

void main() {
TRISB = 0;
PORTB = 0xFF;

ANSEL = 0;
ANSELH = 0;

TRISE=255;

Lcd_Init();

Lcd_Cmd(_LCD_CURSOR_OFF);

Lcd_Cmd(_LCD_CLEAR);


Lcd_Out(2,5,"Moj Meni :-)");


Delay_ms(2000);

Lcd_Cmd(_LCD_CLEAR);

MainMenuFunction ();

}

 
Odgovor na temu

vukboban
Boban Vukovic
PANCEVO

Član broj: 116735
Poruke: 250
195.252.79.*



+11 Profil

icon Re: Mikrokontroler i LCD24.07.2009. u 19:44 - pre 179 meseci
Citat:
while (PORTE.RE2==1)
{
if (PORTE.RE2 ==1)
{
MPC=MPC +1;
}
}


ovde si stavio while petlju "dok je re2=1" pa u njoj ispitujes da li je re2=1???

malo besmisleno

Sad kad malo bolje pogledam ti nikad i ne udjes u while(1) petlju.
Odradis onu inicijalizaciju u main,jednom pozoves funkciju MainMenuFunction (),u kojoj imas while "nesto" pa if "nesto",vratis se iz nje i kraj programa!
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Mikrokontroler i LCD

Strane: 1 2 3

[ Pregleda: 15350 | Odgovora: 53 ] > FB > Twit

Postavi temu Odgovori

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