Sari la conținut
ELFORUM - Forumul electronistilor

Problema LCD-PIC


Vizitator SimonaAlexandra7

Postări Recomandate

Vizitator SimonaAlexandra7

Buna tuturor! Apelez la ajutorul vostru in speranta ca ma poate ajuta cineva. De o saptamana ma chinui sa programez un LCD 16X2 WM-C1602N si nu vrea sa functioneze deloc,pur si implu imi apar pe prima linie numai casute...ATAT... Folosesc MikroC, iar pe placa il incarc cu PICKIT3. Am incercat tot felul de initializari si conexiuni, am mutat D-urile( Doar 4,adica bitii cei mai semnificativi ) LCD-ului pe portul B,C,D si nimic :26 . Pur si simplu nu inteleg de ce nu vrea sa functioneze!! Schema este buna, este legata corect dupa parerea mea.. Pun mai jos programul facut in mikroC si o schema cu conexiunile... Poate ma puteti voi lamuri de ce nu imi merge... :26

 

//Conexiuni LCDsbit LCD_RS at RD4_bit;sbit LCD_EN at RD6_bit;sbit LCD_D4 at RD3_bit;sbit LCD_D5 at RD2_bit;sbit LCD_D6 at RD1_bit;sbit LCD_D7 at RD0_bit;sbit LCD_RS_Direction at TRISD4_bit;sbit LCD_EN_Direction at TRISD6_bit;sbit LCD_D4_Direction at TRISD3_bit;sbit LCD_D5_Direction at TRISD2_bit;sbit LCD_D6_Direction at TRISD1_bit;sbit LCD_D7_Direction at TRISD0_bit;//Functie principalavoid main() { INTCON = 0;   // Dezactivare intreruperi ANSELC = 0; Lcd_Init(); Delay_ms(100); // Initializare LCD Lcd_Cmd(_LCD_CURSOR_OFF);   // Dezactivare cursor Lcd_Cmd(_LCD_CLEAR); // Stergere Ecran Delay_ms(1000);   // Delay 1 secunda Lcd_Out(1,2,"Test LCD"); // Mesaj initial 1, prima linie Lcd_Out(2,5,"Blablabla");   // Mesaj initial 1 linia 2 delay_ms(100);}

post-246521-0-07265400-1432310565_thumb.jpg

Link spre comentariu

Buna!

In schema ai R/W conectat la un pin al PIC-ului, in program nu-l intrebi nicaieri de sanatate. Daca nu-l folosesti in program, leaga-l la masa/gnd.

La PIC18F pentru iesiri e recomandat sa folosesti LATx, nu Rx.

Adica

sbit LCD_RS at RD4_bit;sbit LCD_EN at RD6_bit;sbit LCD_D4 at RD3_bit;sbit LCD_D5 at RD2_bit;sbit LCD_D6 at RD1_bit;sbit LCD_D7 at RD0_bit;

se transforma in

sbit LCD_RS at LATD4_bit;sbit LCD_EN at LATD6_bit;sbit LCD_D4 at LATD3_bit;sbit LCD_D5 at LATD2_bit;sbit LCD_D6 at LATD1_bit;sbit LCD_D7 at LATD0_bit;

LE M-am uitat in data-sheet si am vazut ca fiecare port are ANSEL-ul propriu. Daca folosesti PORTD, trebuie sa dezactivezi partea analogica a lui, nu a portului C =>

ANSELD = 0 in loc de ANSELC = 0.

Link spre comentariu
Vizitator SimonaAlexandra7

Imi cer eu scuze ptr aceste erori, ideea este ca poza a fost facuta acum o saptamana cand am folosit portul D, iar astazi am pus pe portul C,  in program am editat pana sa il postez, de aceea am omis ANSELC....Il pun mereu specific portului...Si R/W l-am pus si la masa.....  Partea cu "LAT" nu am folosit`o pana acum! O sa incerc asa.. multumesc!!

Editat de SimonaAlexandra7
Link spre comentariu

Nu ati scris cum ati reglat biturile de configurare cea ce e foarte important.Pt. mine totdeauna primul program pentru un nou microcontroller este "led blink" ca sa fiu sigur ca am setat bine oscillatorul, wdt-ul , portul etc, dupa care se poate apuca de programul respectiv.Recomand sa faceti la fel.

Link spre comentariu
Vizitator SimonaAlexandra7

Bitii nu i-am configurat nici la cel cu led-uri care mi-a mers, dar nici la asta cu LCD-ul.. adica nu stiu cum sa ii configurez.. O sa las mai jos 3 poze ( cum am lasat bitii)... asa i-a pus programul... daca trebuie sa modific ceva, te rog sa imi spui.. nu lucrez de mult cu PIC-uri... De aproximativ 1 luna....

 

 

http://www65.zippyshare.com/v/loQMlFk9/file.html

 

http://www65.zippyshare.com/v/XHDjix0b/file.html

 

http://www65.zippyshare.com/v/6qV3wNty/file.html

Link spre comentariu
Vizitator SimonaAlexandra7

Momentan nu am cum sa incerc ptr ca placa cu, cablajul este la firma unde fac practica.. Abia miercuri ajung sa pot incerca. Nu e de la contrast.. am reglat contrastul si tot asa imi apare.. Imi apar casute(16) pe primul rand... al 2lea rand ramane gol.... probabil este si de la configuratia bitilor ptr ca nu am umblat la ei... dar nici la cel cu led-uri nu am umblat si a mers perfect,orice combinatie puneam.... :26

Merge cu hex.ul de la cel cu led-uri,da!.....

Link spre comentariu

Schimba eventual si frecventa oscilatorului.

In program ai 8MHz, in poza cu circuitul ai quarz de 4MHz. Desi (dupa parerea mea) n-ar trebui sa fie probleme, delay-urile sunt de doua ori mai lungi, programul e mai "relaxat".

Link spre comentariu
Vizitator SimonaAlexandra7

Am in momentul de fata pe cablaj un Cuart de 8 MHz... Poate e si de la LCD ptr ca este unul foarte vechi,dat de tutorele de la practica sa fac exercitii pe el..il avea pe acolo...Poate , fiind mai vechi, nu accepta programare...Iau toate variantele in calcul

Link spre comentariu

Buna,

 

Imi mentin solutiile pe care ti le-am zis si  in alta parte:

 

1. Asigura-te ca legaturile sunt  bune pe hardware (verifica   fiecare pin) si sa duca unde trebuie.

2.Daca 1 pica, incearca cu alt LCD (mai ales ca zici ca a mai folosit de altcineva), presupunand ca uC-ul ruleaza.

3. eu nu configuram nimic in pickit. Incarcam hexul si dadeam program si aia era.

 

Liviu, eu am mai folosit  pic-uri 18F si fara LATx si a mers (PIC18F455), dar  poate am avut eu noroc.

Editat de Vlad Mihai
Link spre comentariu
Vizitator SimonaAlexandra7

Am incercat si cu un PIC pe care avem ceas, temperatura etc.. si tot asa imi arata, insa pe LCD-ul de pe placa de dezvoltare PICDEM2 PLUS merge foarte bine.... Dar daca pun PIC-ul meu pe acea placa (PICDEM2 PLUS) , si acolo LCD-ul arata doar casute pe primul rand...

Link spre comentariu

Am incercat si cu un PIC pe care avem ceas, temperatura etc.. si tot asa imi arata, insa pe LCD-ul de pe placa de dezvoltare PICDEM2 PLUS merge foarte bine.... Dar daca pun PIC-ul meu pe acea placa (PICDEM2 PLUS) , si acolo LCD-ul arata doar casute pe primul rand...

Eu cred ca   conexiunile pe placa nu sunt aceleasi ca si in software...... procedeaza cum a zis Liviu si pune schema.

Link spre comentariu
Vizitator SimonaAlexandra7

Imi cer scuze.. am pus poza cu schema si programul pe care Liviu mi l-a sugerat...

Poza este pe acest link: http://www60.zippyshare.com/v/wLcu86v4/file.html

 

 

//Conexiuni LCDsbit LCD_RS at LATD4_bit;sbit LCD_EN at LATD6_bit;sbit LCD_D4 at LATD3_bit;sbit LCD_D5 at LATD2_bit;sbit LCD_D6 at LATD1_bit;sbit LCD_D7 at LATD0_bit;sbit LCD_RS_Direction at TRISD4_bit;sbit LCD_EN_Direction at TRISD6_bit;sbit LCD_D4_Direction at TRISD3_bit;sbit LCD_D5_Direction at TRISD2_bit;sbit LCD_D6_Direction at TRISD1_bit;sbit LCD_D7_Direction at TRISD0_bit;//Functie principalavoid main() { INTCON = 0;   // Dezactivare intreruperi ANSELD = 0; Lcd_Init(); Delay_ms(100); // Initializare LCD Lcd_Cmd(_LCD_CURSOR_OFF);   // Dezactivare cursor Lcd_Cmd(_LCD_CLEAR); // Stergere Ecran Delay_ms(1000);   // Delay 1 secunda Lcd_Out(1,2,"Test LCD"); // Mesaj initial 1, prima linie Lcd_Out(2,5,"Blablabla");   // Mesaj initial 1 linia 2 delay_ms(100);}

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări