LCD-display gegevens van eeprom helpen ..

P

piscaroy

Guest
hihi, ik wil de gegevens weer te geven die zijn opgeslagen in de eeprom maar i dont know how come i do is er een fout .. ik niet zeker van of de codes die ik geschreven issit juiste .. kan mij helpen .. mij met behulp van C18-compiler voor PIC18F452 zsm hier beneden is de bron codes ..

************************************************** *********
unsigned char ReadEEPROM (unsigned char Adresse)
(

EEADR = Adresse;

EECON1bits.EEPGD = 0; / / toegang tot DATA EEPROM
EECON1bits.CFGS = 0; / / toegang Flash-programma / Data EEPROM geheugen

EECON1bits.RD = 1; / / enable Read
return EEDATA; / / data is hier opgeslagen
)

void WriteEEPROM (unsigned char Adresse, unsigned char Data)
(

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

INTCONbits.GIEH = 0; / / disable interrupts
INTCONbits.GIEL = 0;

EECON2 = 0x55;
EECON2 = 0xAA;

EECON1bits.WR = 1;
EECON1bits.WREN = 0; / / disable schrijft over schrijven compleet
)

/ / main programm

void main () (
int waarde;
EEpromInit ();
LCDinit ();
value = 0;

LET

while ((value> 0) & & (waarde <3))
(
WriteEEPROM (EEADR, waarde); waarde ;
)

ReadEEPROM (EEADR);

if ((EEDATA = 0) & & (EEDATA = 1))putrsXLCD ( "waarde =% d", EEDATA); <--- FOUTelse if ((EEDATA> 1) & & (EEDATA <3))putrsXLCD ( "Mid Value =% d", EEDATA );<---- FOUTanders
putrsXLCD ( "Waarde is te groot");
value = 5; / / Toename initiële waarde voor het testen ... als volgende run de LCD moet "waarde display te groot"

goto AGAIN;

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

 
Allereerst uw WriteEEPROM routine moet wachten op de WR beetje te klaren door hardware voor te schrijven (de volgende) een DataByte:

void WriteEEPROM (unsigned char Adresse, unsigned char Data)
(

EEADR = Adresse;
EEDATA = Data;
EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;
EECON1bits.WREN = 1;while (EECON1bits.WR)/ / Reset uw watchdog hier indien u het!INTCONbits.GIEH = 0; / / disable interrupts
INTCONbits.GIEL = 0;

EECON2 = 0x55;
EECON2 = 0xAA;

EECON1bits.WR = 1;
EECON1bits.WREN = 0; / / disable schrijft over schrijven compleet
)

Volgende post uw putrsXLCD routine, zodat we een blik op kan nemen.

met vriendelijke groet

 
/ / LCD initialisatie

void DelayPORXLCD ()
(
Delay1KTCYx (15); / / Vertraging van 15ms

)void DelayXLCD (void)
(
Delay1KTCYx (5);
)void DelayFor18TCY (void)
(
NOP ();
NOP ();
NOP ();
NOP ();
NOP ();
NOP ();
NOP ();
NOP ();
NOP ();
NOP ();
NOP ();
NOP ();
NOP ();
NOP ();
NOP ();
NOP ();
return;

)

void LCDinit (void) (

PORTA = 0x00;

ADCON1 = 0x0E;

OpenXLCD (0x28) / / Init LCD 4-bit interface lager knabbelen,
/ / multiple lijn

DelayXLCD ();

putrsXLCD ( "Welcome = D"); / / Put String op lijn 1

DelayXLCD ();

)
dit is het LCD-routines

 
Ik moet zeggen dat ik niet met behulp van C18 (maar Hi-Tech PICC) ...

Maar kijk hier:
http://forum.microchip.com/tm.asp?m=44427

Dit lijkt om te gaan met uw probleem:
putsXLCD
putrsXLCD

met vriendelijke groet

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

Maar i cant erachter te komen waarom i cant display * waarde = (data in EEPROM) * met behulp van putrsXLCD of putsXLCD ... het is er een andere manier te doen .. ik denk dat ik wat gedaan is verkeerd (putrsXLCD ( "waarde =% d ", data)) <- laten we zeggen dat ik wan weer te geven, wordt opgeslagen in data ... toen ik dit doen ze prompt fout zeg * te veel argumenten in functie aanroep *... maar als ik naar putrsXLCD (DATA ) lijkt te zijn ok .. het is net een waarschuwing (verdachte pointer conversie) ... enig idee wie zou me kunnen helpen met dit?

roy

 
Als u kunt de definitie van de twee functies ik misschien in staat zijn om u te helpen.

Ik denk dat deze functies kunnen alleen strings display?in RAM of code dus als je wilt een waarde "scherm als een string" je moet een string maken van uw waarde.

Een manier om dit te doen is om de sprintf functie die een waarde omzet in een nul gebruik beëindigd string.

hoop dat dit helpt

 
putrsXLCD
******************************************
Functie: Schrijf een string om de Hitachi HD44780 LCD controller.
Include: xlcd.h
Prototype: void putsXLCD (char * buffer);
void putrsXLCD (Rom const char * buffer);
Argumenten: buffer
Pointer naar karakters worden geschreven om de LCD-controller.

Toelichting: Deze functie schrijft een reeks karakters in de buffer op
de Hitachi HD44780 LCD controller.Het stopt bij overbrenging
een nul-karakter wordt aangetroffen.Het nul-karakter is niet
doorgegeven.
Strings gelegen in het geheugen moet worden gebruikt met het puts
versies van deze functies.
Strings gelegen in het programma geheugen, met inbegrip van letterlijke tekenreeksen,
worden gebruikt met de putrs versies van deze functies.
Bestandsnaam: putsxlcd.c
putrxlcd.c
Code Voorbeeld: char mybuff [20];
putrsXLCD (Hello World);
putsXLCD (mybuff);

 
Ik denk dat deze 2 kan alleen strings elkaar .. Hoe kan ik gebruik maken van de functie sprintf te converteren naar strings null .. het is allemaal compiler regconise sprintf?i dont know iets over deze functie .. als deze functie kan werken kan me leren hoe het ... heel triest om problemen gebruik u zo veel .. thankx veel

 
OK zoals ik al zei heb je om de functie een pointer naar (of RAM) rom en zal de string af te drukken (opgemerkt door de aanwijzer) naar LCD.

Dus je kan geven een pointer en een waarde die deze functie

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />Eerste afdruk de vaste tekst en een tweede gesprek met de waarde die is omgezet in een string.

Voorbeeld:
char buffer [10];
char value = 10;

putrsXLCD ( "waarde =");
sprintf (buffer, "% d", value); / / waarde omzetten in een string in het RAM
putsXLCD (buffer);

Of beter schrijf uw eigen functie te zetten en af te drukken een waarde ...

met vriendelijke groet

 
OK ik probeer de conversie

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

.. thanks a lot voor het helpen ..

roy

 
HI, Ik probeerde de conversie voorbeeld U heeft mi .. bouwen geslaagd, maar het prompt een waarschuwing krijgen oproep van de functie zonder prototype ... wat betekent het?ISIT Ik moet opnemen van enkele headers bestanden?

 
U moet de definitie van sprintf Ik heb geen idee in welk bestand het is in uw compiler.Zoek in de documentatie voor sprintf ...

hoop dat dit helpt

 
hmm sorry i dont get wat u betekenen de definities ... pls gratie mi oorzaak im nieuw voor de taal C .. issit ik # define sprintf sumthin?of # include <sumthing> ... wat do u moeten omvatten voor Hi-tech?en ik zocht sprintf * * niets werd gevonden ... mayb ik zoeken op de verkeerde manier .. pls gids mi thanx

groeten

 
OK, ik gedownload en bestudeerde de C18 bibliotheken handleiding

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Lachten" border="0" />Voorbeeld:
# include <stdlib.h> / / voor btoa, itoa, ltoa
char buffer [10];
char value = 10;

putrsXLCD ( "waarde =");
putsXLCD (btoa (waarde, buffer));

Gebruik btoa voor char variabelen, itoa voor integer variabelen en ltoa voor lange integer variabelen en zorg ervoor dat buffer [] is niet te klein (in geval van lange integer variabelen).

hoop dat dit werkt en krijgt u aan de slag

 
dus in het geval voor lange integer variabelen ... Ik heb te zetten als tat? (laten we zeggen meer den 8 bits)

char buffer [1000];

 
Geen lange gehele getallen (met behulp van 32 bits) kunt krijgen -2147483647 zodat u een maximale buffergrootte van 12 nodig heeft (met inbegrip van de beëindiging van 0x00).

Als u definiëren char buffer [15] u aan de veilige kant

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

 
putrsXLCD (): u levert een pointer die wijzen op * PROGRAMMA * geheugenlocatie.

putsXLCD (): u levert een pointer die wijzen op * RAM * locatie.

C18 bibliotheek heeft geen enkele functie om toegang EEROM.Je moet hard code zelf.

Hoop dat dit helpt.

 
Hi guys, thankx voor al uw replys ... maar ik denk dat ik wat tijd nodig om te verteren wat jullie zeggen .. cos im te nieuw naar C T_T ... Ik waardeer al je helpt

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

 

Welcome to EDABoard.com

Sponsor

Back
Top