Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[LCD] T6963c op een Philips LPC Micro

Pagina: 1
Acties:

Verwijderd

Topicstarter
nja zo te merken hebben jullie de laatste tijd niet echt stil gezeten met de grafische lcdtjes... ik ben pas geleden ook weer begonnen met een nieuw projectje. een t6963c aan een philips p87lpc768 te hangen. met succes ook nog :) lcd werkt vrijwel goed, init gaat goed, clear gaat goed, tekst schrijven gaat alleen nog niet 100% daarom dit topic.

nja als eerst maar eens wat pics van mn opstelling:

Afbeeldingslocatie: http://members.home.nl/nilwik/bla/3.jpg
complete opstelling met het lcd, emulator en het evaluatie bordje

Afbeeldingslocatie: http://members.home.nl/nilwik/bla/2.jpg
de emulator (met dank aan philips !)

Afbeeldingslocatie: http://members.home.nl/nilwik/bla/1.jpg
het evaluatie bordje (ook dank aan philips)

Afbeeldingslocatie: http://members.home.nl/nilwik/bla/werkt.jpg
tekst schrijven werkt... half :X

nja mijn probleem dan nu :)

als ik tekst wil gana schrijven met het lcd, vanuit een normale char string gaat dit dus fout, ik krijg als eerste char een "Ç", het maakt niks uit wat ik ernaar stuur en ook niet waar. maar als ik een constante erheen stuur dan werkt het wel normaal.

nja ff stukje source:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void lcd_print(char *msg_string, UCHAR x, UCHAR y)
    {
    UCHAR i;
    UCHAR c;
    UCHAR address;

    address = (y * 40) + x;
    lcd_send_data(address%256); //put RAM adress
    lcd_send_data(address>>8);
    lcd_send_cmd(0x24);
    lcd_send_cmd(0xB0); // Auto Write Mode enabled
        for (i=0; i < strlen(msg_string); i++)  // writes every char to the LCD
        {
        c = msg_string[i] - 0x20;        // ANSII - 0x20 = LCD chars
        if (c < 0) c = 0;   // dont send negative chars to the LCD
        lcd_send_data(c);   // send char to LCD
        //lcd_send_cmd(0xC0);   //dit werkt ook, haal dan de auto write weg, auto write is wel sneller
        }
    lcd_send_cmd(0xB2); // Auto Write Mode disabled
    }


lcd_print(const, 0x00, 0x00); gaat goed
lcd_print("blaat", 0x00, 0x00); krijg ik "Çlaat"

Verwijderd

Ç is gelijk aan ascii 128....

Ik heb het ook een keertje gehad dat de eerste letter niet goed werd weergegeven, alleen dat was met een ander lcd, en het lag aan het programma, en het was dit karakter :)
Misschien dat je ergens plaats nul in die string aanroept?
Of toevallig er een variabele aan toekent? Dan pakt ie ook gewoon het eerste plaatsje, terwijl de rest gewoon bewaard blijft
128 lijkt wel een bit waaraan een van de wr rd A/cd signalen aan kunnen zitten?

Misschien is het grote onzin, of misschien niet.


EDIT:
Ja ik heb em:
code:
1
2
c = msg_string[i] - 0x20;        // ANSII - 0x20 = LCD chars
        if (c < 0) c = 0;   // dont send negative chars to the LCD

msg_string is een POINTER :)
als je c=0 doet, wordt dat helemaal teruggezonden naar msg_string
Als je toelaat negative karakters te sturen werkt het waarschijnlijk wel

Hmmz bij nader inzien toch niet ...

[ Voor 27% gewijzigd door Verwijderd op 03-01-2003 23:16 ]


Verwijderd

Topicstarter
Verwijderd schreef op 03 januari 2003 @ 23:12:
Ç is gelijk aan ascii 128....

Ik heb het ook een keertje gehad dat de eerste letter niet goed werd weergegeven, alleen dat was met een ander lcd, en het lag aan het programma, en het was dit karakter :)
Misschien dat je ergens plaats nul in die string aanroept?
Of toevallig er een variabele aan toekent? Dan pakt ie ook gewoon het eerste plaatsje, terwijl de rest gewoon bewaard blijft
128 lijkt wel een bit waaraan een van de wr rd A/cd signalen aan kunnen zitten?

Misschien is het grote onzin, of misschien niet.


EDIT:
Ja ik heb em:
code:
1
2
c = msg_string[i] - 0x20;        // ANSII - 0x20 = LCD chars
        if (c < 0) c = 0;   // dont send negative chars to the LCD

msg_string is een POINTER :)
als je c=0 doet, wordt dat helemaal teruggezonden naar msg_string
Als je toelaat negative karakters te sturen werkt het waarschijnlijk wel

Hmmz bij nader inzien toch niet ...
hoe heb je t toen opgelost?

dat met die plaats 0 dacht ik zelf eerst ook, maar blijkbaar moet dit zo. Als ik hem op 1 laat starten slaat hij de eerste char over. en over die variabele.. niet dat ik weet, hij pakt het dus bij elke eerste letter (maakt niet uit welke) maar niet als je een constante gebruike (als op de "foto")

en ik heb ook ff getest met die "if (c < 0) c = 0;" eruit te gooien... helaas geen succes :(

  • zwahiel
  • Registratie: Augustus 2001
  • Nu online

zwahiel

Eindbaas HK

Keihard de lekkerste!

hmmm, leg mij eens eerst uit wtf je daar nu allemaal hebt, en wat je eens eigenlijk emuleerd?

* zwahiel is daar niet zo'n held in... :/

Laten we weer 's bierbrouwen of gewoon gekke dingen bouwen en knutselen. YEAH!
RIP Lada 2105 "Igor" 31-12-1992 - † 21-02-2014. De nieuwe Igor: Tesla model 3 SR+ 21-08-2020


Verwijderd

Topicstarter
zwahiel schreef op 04 January 2003 @ 00:21:
hmmm, leg mij eens eerst uit wtf je daar nu allemaal hebt, en wat je eens eigenlijk emuleerd?

* zwahiel is daar niet zo'n held in... :/
dat zwarte ding, das de emulator. dat ding ken je op je seriele poort hangen en zo je binary erin mikken. dat ding gaan dan een microchip emuleren. cia dat grijze kabeltje gaat t naar dat evaluatiebordje, darmee ken je makkelijk kabeltjes opprikken die ik zo naar t lcd heb doorgelust. dat kleine printje met die rood/zwarte kabel eraan dat is gewoon een 7805 voor de voeding van het lcd en de gemuleerde microchip

nja al die zooi is zeg maar een 20-pins chipje met een lcd eraan :)

meer info nodig?

[ Voor 7% gewijzigd door Verwijderd op 04-01-2003 00:29 ]


  • zwahiel
  • Registratie: Augustus 2001
  • Nu online

zwahiel

Eindbaas HK

Keihard de lekkerste!

Verwijderd schreef op 04 January 2003 @ 00:28:
[...]


dat zwarte ding, das de emulator. dat ding ken je op je seriele poort hangen en zo je binary erin mikken. dat ding gaan dan een microchip emuleren. cia dat grijze kabeltje gaat t naar dat evaluatiebordje, darmee ken je makkelijk kabeltjes opprikken die ik zo naar t lcd heb doorgelust. dat kleine printje met die rood/zwarte kabel eraan dat is gewoon een 7805 voor de voeding van het lcd en de gemuleerde microchip

nja al die zooi is zeg maar een 20-pins chipje met een lcd eraan :)

meer info nodig?
ah, zeg dat dan meteen ;)

Laten we weer 's bierbrouwen of gewoon gekke dingen bouwen en knutselen. YEAH!
RIP Lada 2105 "Igor" 31-12-1992 - † 21-02-2014. De nieuwe Igor: Tesla model 3 SR+ 21-08-2020


Verwijderd

wat gebeurt er dan als je
code:
1
2
3
char *t;
t="Blaat";
lcd_print(t, 0x00, 0x00);

doet?
en als je boven
code:
1
2
3
4
c = msg_string[i];              
if(c==128)c=65;
if(c<0)c=0;
c=c-  0x20;  // ANSII - 0x20 = LCD chars

toevoegt,
krijg je dan "Alaat"?

Echt vaag, misschien ligt het aan je compiler

[ Voor 18% gewijzigd door Verwijderd op 04-01-2003 15:24 ]


Verwijderd

Topicstarter
Verwijderd schreef op 04 January 2003 @ 15:21:
wat gebeurt er dan als je
code:
1
2
3
char *t;
t="Blaat";
lcd_print(t, 0x00, 0x00);

doet?
en als je boven
code:
1
2
3
4
c = msg_string[i];              
if(c==128)c=65;
if(c<0)c=0;
c=c-  0x20;  // ANSII - 0x20 = LCD chars

toevoegt,
krijg je dan "Alaat"?

Echt vaag, misschien ligt het aan je compiler
nja nu gaan we t meest vaagste meemaken, ik doe nu dit:

code:
1
2
3
4
5
    char *t;
    t="Blaat";
    lcd_print(t, 0x00, 0x00);
    lcd_print("hoi", 0x01, 0x03);
    lcd_print(text0, 0x01, 0x05);


krijg te zien:
alaat

hoi

werkt :) (das die constante)


mjah ik heb geen andere compiler om te gebruiken, ik heb ride wel, maar die include file wil niet per pin aansturen. Nu gebruik ik trouwens tasking ede 7.0 (demo)

Verwijderd

????? Lol, waarschijnlijk gaat het alleen de eerste keer fout dan :)
Echt...

  • Henk B
  • Registratie: Januari 2003
  • Laatst online: 25-04-2023

Henk B

te obl

Wat wordt er aan lcd_send_data() meegegeven vanuit je functie?
Aangezien je toch al een emulator hebt is het nu een goed moment om 'm te gebruiken.

Via Epia in de auto; www.carpc.nl - 7" VGA Touchmonitor - GPS - Destin/\tor 2 - DC/DC - WLAN


Verwijderd

Topicstarter
Henk B schreef op 04 januari 2003 @ 17:56:
Wat wordt er aan lcd_send_data() meegegeven vanuit je functie?
Aangezien je toch al een emulator hebt is het nu een goed moment om 'm te gebruiken.
je bedoelt die waardes monitoren ? jah dat doe ik ook, en je raad t al... hij stuurt dan c die 0x60 (das Ç voor het LCD) is.

  • Henk B
  • Registratie: Januari 2003
  • Laatst online: 25-04-2023

Henk B

te obl

Wat staat er op dat moment (en vlak ervoor) dan in je string?
Is het mogelijk dat bv. de strlen() eea. vern**kt? Standaard libs willen nl. vaak nogal veel geheugen/stack gebruiken (wat je in een LPC dus niet veel hebt).
Probeer anders dit eens:

i=0;
while(string[i]) {
c = string[i++] - 0x20;
lcd_data(c);
}

Je hebt dan alles zelf in de hand (wel zorgen dat je string altijd null terminated is, maar dat moet ook al voor strlen)

Dit is trouwens ook meteen een stuk sneller, nu zal voor elke karakter een strlen evaluatie plaatvinden.

[ Voor 11% gewijzigd door Henk B op 04-01-2003 19:30 ]

Via Epia in de auto; www.carpc.nl - 7" VGA Touchmonitor - GPS - Destin/\tor 2 - DC/DC - WLAN


Verwijderd

Topicstarter
Henk B schreef op 04 January 2003 @ 19:27:
Wat staat er op dat moment (en vlak ervoor) dan in je string?
Is het mogelijk dat bv. de strlen() eea. vern**kt? Standaard libs willen nl. vaak nogal veel geheugen/stack gebruiken (wat je in een LPC dus niet veel hebt).
Probeer anders dit eens:

i=0;
while(string[i]) {
c = string[i++] - 0x20;
lcd_data(c);
}

Je hebt dan alles zelf in de hand (wel zorgen dat je string altijd null terminated is, maar dat moet ook al voor strlen)

Dit is trouwens ook meteen een stuk sneller, nu zal voor elke karakter een strlen evaluatie plaatvinden.
het werkt :D
heel erg bedankt ! blijkbaar lag het dus toch aan die strlen... nja t is iig zeer vaag. maar dit werkt ook goed :)

ik zal in dit topic ook later meer posten over de veredere verloopt van mn project

  • Henk B
  • Registratie: Januari 2003
  • Laatst online: 25-04-2023

Henk B

te obl

Verwijderd schreef op 04 January 2003 @ 19:49:
het werkt :D
heel erg bedankt ! blijkbaar lag het dus toch aan die strlen... nja t is iig zeer vaag. maar dit werkt ook goed :)
Ur welcome,
Zo zie je maar weer, als het fout gaat altijd beginnen met de fout bij een ander te zoeken (zelf als die ander een Tasking oid. is }))
Bijkomend voordeeltje is dat je bin.code nu waarschijnlijk ook een stuk kleiner is geworden.

Via Epia in de auto; www.carpc.nl - 7" VGA Touchmonitor - GPS - Destin/\tor 2 - DC/DC - WLAN


Verwijderd

Topicstarter
nja t word nu steeds mooier, ik krijg de fout doodleuk weer terug. dus ik mijn wat oudere source die ik gebackuped had nog eens gepakt... presies het zelfde :X nja is dit nou tasking ofwat?

hmmz es ff tasking 6.0 geprobeerd... maar helaas :( zonder succes

[ Voor 16% gewijzigd door Verwijderd op 05-01-2003 17:31 ]


  • Henk B
  • Registratie: Januari 2003
  • Laatst online: 25-04-2023

Henk B

te obl

Wanneer terug?
Met andere data, of andere code?

Ieg moet je zien te achterhalen wat er veranderd is.
Als je code veranderd hebt, dat zou ik toch al snel eens naar m'n stack gaan kijken.

Via Epia in de auto; www.carpc.nl - 7" VGA Touchmonitor - GPS - Destin/\tor 2 - DC/DC - WLAN


Verwijderd

Topicstarter
Henk B schreef op 05 January 2003 @ 20:20:
Wanneer terug?
Met andere data, of andere code?

Ieg moet je zien te achterhalen wat er veranderd is.
Als je code veranderd hebt, dat zou ik toch al snel eens naar m'n stack gaan kijken.
ik heb t gevonden... hoop ik :) blijkbaar de eerste string die je gaat gebruiken heeft dit "bugje" denk dus dat het of iets van tasking is of iets van mijzelf... maar dan zou ik niet 123 weten hoe ik het heb veroorzaakt.

nja nu los ik het makkelijk op door dit aant het begin te zetten:
char *t;
t="a";

btw heb je iets van MSN of IRC waar ik jou op kan vinden ?

  • Henk B
  • Registratie: Januari 2003
  • Laatst online: 25-04-2023

Henk B

te obl

Verwijderd schreef op 05 januari 2003 @ 20:36:
ik heb t gevonden... hoop ik :) blijkbaar de eerste string die je gaat gebruiken heeft dit "bugje" denk dus dat het of iets van tasking is of iets van mijzelf... maar dan zou ik niet 123 weten hoe ik het heb veroorzaakt.

nja nu los ik het makkelijk op door dit aant het begin te zetten:
char *t;
t="a";
Hmmm, inderdaad vreemd ja... Maar ieg makelijk op te lossen :)
btw heb je iets van MSN of IRC waar ik jou op kan vinden ?
Yep, IRC - zie het rood/groene bloempie.

Via Epia in de auto; www.carpc.nl - 7" VGA Touchmonitor - GPS - Destin/\tor 2 - DC/DC - WLAN


Verwijderd

Topicstarter
hehe ik heb nu een *iets te trage* vu-meter op mn lcd :) via de soundblaster output :D

hmmz ik ken hem iets in snelheid tweaken... maar dan word die balk direct kleiner :X die is nu 64pixels hoog :)... ik zal binnekort es kijke of ik nog wat pics maak

edit: ik heb hem ff op 16 pixels hoog gezet... en de ADC sample uit... nu ziet ie er wel tof uit :)

[ Voor 17% gewijzigd door Verwijderd op 06-01-2003 23:58 ]


Verwijderd

Topicstarter
nja nu is alles klaar en geprogrammeerd... hier zijn de foto's :)

grote foto's :X

http://members.home.nl/nilwik/bla/pws11.jpg
complete opstelling
http://members.home.nl/nilwik/bla/pws10.jpg
http://members.home.nl/nilwik/bla/pws03.jpg
http://members.home.nl/nilwik/bla/pws04.jpg
http://members.home.nl/nilwik/bla/pws05.jpg
http://members.home.nl/nilwik/bla/pws06.jpg
http://members.home.nl/nilwik/bla/pws07.jpg
http://members.home.nl/nilwik/bla/pws08.jpg
http://members.home.nl/nilwik/bla/pws01.jpg
^^ wie ziet de missing chip ? :X
http://members.home.nl/nilwik/bla/pws02.jpg

alles is nu geprogrammeerd in een philips P87LPC786 (dank aan de philips..)

[ Voor 9% gewijzigd door AcouSE op 04-02-2003 16:59 . Reden: FF dimmen met zulke pics. Maak maar thumbnailes ofzo. ]

Pagina: 1