LCD displejs datus no eeprom .. palīdzēt

P

piscaroy

Guest
hihi, es vēlos parādīt dati, kas atrodas EEprom bet i dont zināt, kā ir man ir kļūda .. i nav pārliecināts, vai kodus i rakstisku issit pareizs .. var palīdzēt man asap .. i, izmantojot C18 kompilators par pic18f452 zem šeit ir avota kodu ..

************************************************** *********
neparakstīts CHAR ReadEEPROM (neparakstīta CHAR Adresse)
(

EEADR = Adresse;

EECON1bits.EEPGD = 0; / / piekļūt datiem EEPROM
EECON1bits.CFGS = 0; / / piekļūt Flash program /
data EEprom atmiņas

EECON1bits.RD = 1; / / ļautu Lasīt
atgriezties EEDATA; / / datus uzglabā šeit
)

anulēts WriteEEPROM (neparakstīta CHAR Adresse, neparakstīts CHAR Data)
(

EEADR = Adresse;
EEDATA = Data;
EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;
EECON1bits.WREN = 1;

INTCONbits.GIEH = 0 / / atspējot pārtrauc
INTCONbits.GIEL = 0;

EECON2 = 0x55;
EECON2 = 0xAA;

EECON1bits.WR = 1;
EECON1bits.WREN = 0; / / izslēgt raksta par uzrakstiet pabeigt
)

/ /
main programm

anulēts galvenais () (
int vērtību;
EEpromInit ();
LCDinit ();
vērtība = 0;

Vēlreiz:

while ((vērtība> 0) & & (vērtība <3))
(
WriteEEPROM (EEADR, vērtība); vērtība ;
)

ReadEEPROM (EEADR);

ja ((EEDATA = 0) & & (EEDATA = 1))putrsXLCD ( "Value =% d", EEDATA); <--- ERRORcits, ja ((EEDATA> 1) & & (EEDATA <3))putrsXLCD ( "Mid Value =% d", EEDATA );<---- ERRORcitādi
putrsXLCD ( "Value pārāk liels");
vērtība = 5; / / Paaugstināt sākotnējā vērtība testēšanai ... ja nākamā palaist LCD jābūt "vērtība ir pārāk lielas"

Goto atkārtotos;

while (1);
)
************************************************** ********

 
Vispirms savu WriteEEPROM rutīnas ir jāgaida, lai WR bit jānovērš ar hardware pirms rakstiski (nākamā) a databyte:

anulēts WriteEEPROM (neparakstīta CHAR Adresse, neparakstīts CHAR Data)
(

EEADR = Adresse;
EEDATA = Data;
EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;
EECON1bits.WREN = 1;while (EECON1bits.WR); / / Nomainīt savu uzraudzības šeit, ja Jūs lietojat to!INTCONbits.GIEH = 0; / / izslēgt pārtrauc
INTCONbits.GIEL = 0;

EECON2 = 0x55;
EECON2 = 0xAA;

EECON1bits.WR = 1;
EECON1bits.WREN = 0; / / izslēgt raksta par uzrakstiet pabeigt
)

Tālāk, lūdzu, pēc jūsu putrsXLCD rutīnas, lai mēs varētu to apskatīt to.

ar laba vēlējumiem

 
/ / LCD inicializēšanas

anulēts DelayPORXLCD ()
(
Delay1KTCYx (15); / / kavēšanos 15ms

)anulēts DelayXLCD (spēkā neesošs)
(
Delay1KTCYx (5);
)anulēts DelayFor18TCY (spēkā neesošs)
(
Nop ();
Nop ();
Nop ();
Nop ();
Nop ();
Nop ();
Nop ();
Nop ();
Nop ();
Nop ();
Nop ();
Nop ();
Nop ();
Nop ();
Nop ();
Nop ();
atgriešanos;

)

anulēts LCDinit (spēkā neesošs) (

Porta = 0x00;

ADCON1 = 0x0E;

OpenXLCD (0x28); / / Init LCD 4-bit interface zemāks knibināt,
/ /
vairākkārtējo līnija

DelayXLCD ();

putrsXLCD ( "Welcome = D"); / / Put String par Line 1

DelayXLCD ();

)
tas ir LCD kārtība

 
Man ir teikt, ka es neesmu, izmantojot C18 (bet Hi-Tech PICC) ...

Bet meklēt šeit:
http://forum.microchip.com/tm.asp?m=44427

Šķiet, ka galā ar savu problēmu:
putsXLCD
putrsXLCD

ar laba vēlējumiem

 
thanks a lot for your help C-man =) ..

Bet es aprunāt skaitlis, kāpēc i aprunāt displejs * vērtība = (dati EEprom) * izmantojot putrsXLCD vai putsXLCD ... ir tas ir vēl viens veids, kā darīt .. es domāju, ka Wat i izdarīt ir nepareizi (putrsXLCD ( "vērtība =% d ", DATI)) <- let teikt lieta i wan parādīt uzglabā datus ..., kad es to paveiktu viņi prompt kļūda pasakot * pārāk daudz argumentu funkciju zvanu *... bet kad es izmaiņas putrsXLCD (datu ) tas, šķiet, ir ok .. tā tikai ieguva brīdinājums (aizdomīgiem pointers konversija) ... jebkura ideja, kas varētu man palīdzēt ar šo?

Roy

 
Ja varat nosūtīt definīciju abas funkcijas es varētu jums palīdzēt.

Es domāju, ka šo funkciju var tikai displejs virknes?in ram vai kodu, tādēļ, ja vēlaties parādīt vērtības, kā "string", jums ir jāveic string no savas vērtības.

Viens veids, kā to izdarīt ir izmantot sprintf funkciju, kas pārveido vērtība par null izbeigts virkni.

ceru, ka tas palīdz

 
putrsXLCD
******************************************
Amats: Uzrakstiet string uz Hitachi HD44780 LCD kontrolieris.
Ietver: xlcd.h
Prototipu: spēkā neesošs putsXLCD (CHAR * buffer);
anulēts putrsXLCD (const rom CHAR * buffer);
Argumentiem: buferis
Pointer līdz rakstzīmēm jāraksta uz LCD kontrolieris.

Piezīmes: Šo funkciju raksta simbolu virknes atrodas buferis, lai
no Hitachi HD44780 LCD kontrolieris.Tas apstājas transmission, kad
a null raksturs ir radušās.The null raksturs nav
nosūtīta.
Virknes atrodas datu atmiņa būtu jāizmanto ar liek
versijas, funkcijas.
Virknes atrodas programmas atmiņu, ieskaitot stīgu literals,
vajadzētu izmantot ar putrs versijas, funkcijas.
Faila nosaukums: putsxlcd.c
putrxlcd.c
Kods Piemērs: CHAR mybuff [20];
putrsXLCD (Hello World);
putsXLCD (mybuff);

 
Es domāju, ka šiem 2 var tikai displejs virknes .. Kā es varu izmantot sprintf funkcijas, kas pārveidojamas par null virknes .. tas ir visu kompilatoru regconise sprintf?i dont zināt kaut ko par šo funkciju .., ja šī funkcija var strādāt var iemācīt man, kā to izmantot ... ļoti žēl, lai trouble u tik daudz .. thankx daudz

 
Labi, kā jau teicu, pirms jums ir sniegt funkcija punktveida lai rom (vai ram), un tā būs iespiest string (smailie ko bultiņas) uz LCD.

Līdz ar to nav iespējams sniegt bultiņas un vērtību, lai šo funkciju

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Bēdīgs" border="0" />Pirmās drukāt fiksēto tekstu un ar otru zvanu vērtība, kas ir pārveidota par virkni.

Piemērs:
CHAR buferšķīdums [10];
CHAR vērtība = 10;

putrsXLCD ( "Value =");
sprintf (buferšķīdums, "% d", vērtība); / / pārvērst vērtību par string in ram
putsXLCD (buffer);

Or labāk rakstīt savu funkciju, lai pārveidotu un izdrukātu vērtība ...

ar laba vēlējumiem

 
Labi i izmēģināt konversijas

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smaids" border="0" />

.. thanks a lot, lai palīdzētu ..

Roy

 
HI, i mēģināja konversijas piemēram u sniedza mi .. tā būvēt izdevies, bet tā nekavējoties brīdinot pasakot aicinājumu darboties bez prototips ... Wat tas nozīmē?isit i jāiekļauj daži headers failus?

 
Jums ir jāietver definīcijā sprintf Man nav ideju, kur fails ir jūsu kompilatoru.Meklēt dokumentāciju sprintf ...

ceru, ka tas palīdz

 
Hmm sorry i dont get Wat u ir Definīcijas ... PLS apžēlot mi izraisīt im jaunu uz C valodas .. issit man # define sprintf sumthin?vai # ietvert <sumthing> ... Wat do u ir jāietver, HI-tech?un i meklējāt * sprintf * nekas tika konstatēts, ... mayb i meklēt nepareizi .. PLS guide mi thanx

sveicieni

 
Labi, es lejupielādēt un pētīja C18 bibliotēkas rokasgrāmata

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smaids" border="0" />Piemērs:
# ietvert <stdlib.h> / / par btoa, itoa, ltoa
CHAR buferšķīdums [10];
CHAR vērtība = 10;

putrsXLCD ( "Value =");
putsXLCD (btoa (vērtība, buffer));

Izmantojiet btoa par CHAR mainīgie, itoa par skaitlim mainīgos un ltoa ilgu skaitlim mainīgajiem, un rūpējas, buferšķīduma [] nav pārāk maza (ja ilgi skaitlim mainīgajiem).

ceru, ka tas darbojas un izpaužas jums sākās

 
tā, ja ilgu skaitlim mainīgie ... i ir, lai, piemēram, tat? (let teikt vairāk den 8bits)

CHAR buferšķīdums [1000];

 
Nr ilgi integers (izmantojot 32 bitu), var iegūt -2147483647 tā jums maks bufera izmēru 12 (tai skaitā pārtrauc 0x00).

Ja jūs define CHAR buferšķīdums [15] Jums ir par drošu pusē

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smaids" border="0" />ar laba vēlējumiem

 
putrsXLCD (): jūs piegādāt pointers kas norāda uz * PROGRAM * atmiņas vietā.

putsXLCD (): jūs piegādāt pointers kas norāda uz * RAM * atrašanās vietu.

C18 bibliotēka nesniedza funkcijas, lai piekļūtu EEROM.Jums ir grūti kods tas pats.

Hope this helps.

 
hi guys, thankx visiem saviem replys ... bet es domāju, ka man ir nepieciešams laiks, lai sagremot to, ko jūs guys nozīmē .. cos im pārāk jauni, C T_T ... i really appreciate visiem jūsu palīdz

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smaids" border="0" />thanks a lot ~

 

Welcome to EDABoard.com

Sponsor

Back
Top