Toon posts:

[DELPHI] Velleman LCD 4 * 40

Pagina: 1
Acties:

Verwijderd

Topicstarter
Matched: delphi, lcd
Ik ben bezig om zelf een proggie te schrijven met behulp van DlPortio.dll. Dit heb ik tot nu toe:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
var
  Form1: TForm1;
  LCD_CONTROL_ADDRESS : longint = $380;
  LCD_DATA_ADDRESS : longint = $378;

implementation

{$R *.dfm}

procedure DlPortWritePortUchar(Port : longint;Value : byte)stdcall;
 external 'C:\Windows\System32\DLPORTIO.DLL';

procedure LCD_WriteControl(data : byte);
begin
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $B);
  DlPortWritePortUchar(LCD_DATA_ADDRESS, data);
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $A);
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $B);
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $9);
  Sleep(100);
end;

procedure LCD_WriteControl2(data : byte);
begin
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $B);
  DlPortWritePortUchar(LCD_DATA_ADDRESS, data);
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $3);
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $B);
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $9);
  Sleep(100);
end;

procedure LCD_WriteData(data : byte);
begin
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $7);
  DlPortWritePortUchar(LCD_DATA_ADDRESS, data);
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $6);
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $7);
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $5);
  Sleep(10);
end;

procedure LCD_WriteData2(data : byte);
begin
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $7);
  DlPortWritePortUchar(LCD_DATA_ADDRESS, data);
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $6);
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $7);
  DlPortWritePortUchar(LCD_CONTROL_ADDRESS, $5);
  Sleep(10);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  LCD_WriteControl($38);
  Sleep(50);
  LCD_WriteControl2($38);
  Sleep(50);
  LCD_WriteControl($38);
  Sleep(50);
  LCD_WriteControl2($38);
  Sleep(50);
  LCD_WriteControl($38);
  LCD_WriteControl2($38);
  LCD_WriteControl($38);
  LCD_WriteControl2($38);
  LCD_WriteControl($6);
  LCD_WriteControl2($6);
  LCD_WriteControl($C);
  LCD_WriteControl2($C);
  LCD_WriteControl($1);
  LCD_WriteControl2($1);
end;

Het probleem: Hij doet helemaal niks!! :'(.
Ik heb het proggie in Delphi 6 geschreven en hij start ook op. Hij cleared het display helemaal niet. De 2 zwarte balken blijven staan.

Wat doe ik fout? :? Ik snap er niks van.
Oh ja als ik het proggie start dan knippert het LCD wel een beetje, maar of dat er nou iets mee te maken heeft?

Met smartie werkt het LCD wel dus het ligt niet aan de LCD.
Iemand die mij kan helpen? 8-)

Verwijderd

Matched: lcd
a ha heeft velleman ook al lcd's
zalig
das toch voor in pc te steken é
en sorry ik kan u niet helpen (maar kan je wel effe url'elke geven van dink :? )

Verwijderd

Geen matches
hmmz slecht gestolen source ;) je haalt 't data en control adres door de war (ehh nou eigenlijk heb je overal data adres van gemaakt)

Verwijderd

Topicstarter
Matched: lcd
Nou je steekt ze niet echt in de pc.
Je moet het LCD natuurlijk wel eerst aan de parallelle poort solderen! |:( ;)

http://www.velleman.be/ProductList2.asp?lan=1&id=345167

Verwijderd

Topicstarter
Geen matches
Ok, ik heb inderdaad de verkeerde code geplaatst.
Ik heb al vanalles met de addressen geprobeerd.
Ik heb de code aangepast naar hoe ik dacht dat ie eigenlijk moest zijn.

Verwijderd

Matched: lcd
ehh je hebt inmiddels de source in je 1e post gewijzigd maar 't is er nie zo heel veel beter van gewoorden..
code:
1
2
#define LCD_CONTROL_ADDRESS base + 2
#define LCD_DATA_ADDRESS    base

base voor lpt1 = $378...

doe nog es een poging :)

Verwijderd

Topicstarter
Geen matches
Ok. Ik heb de source weer aangepast, maar nog steeds hetzelfde probleem. Nog andere suggesties?

Verwijderd

Geen matches
hint: $378 + 2 is geen $380

Verwijderd

Topicstarter
Geen matches
Oh ohw ohw..

Stupid stupid van mij. |:(

Het gaat hier om hexidecimale getallen. :o

Bedankt voor de hulp! ;) Het probleem is nu opgelost. :Y)

Voor degene die het nou nog niet doorhebben en eigenlijk hopen op een 'direct' antwoord.

$380 --> $??? (uhm wat was dat nou ook al weer?? >:) )

zie bericht hieronder! :P

Verwijderd

Geen matches
Op maandag 15 april 2002 20:59 schreef DvRipperD het volgende:
Voor degene die het nou nog niet doorhebben en eigenlijk hopen op een 'direct' antwoord.
Directe antworden geven is helemaal niet leuk, ik vind het veel leuker om het kwartje te zien vallen bij iemand ;)

Verwijderd

Topicstarter
Geen matches
Is dat zo? >:)
Ok ik zal het wel even wat 'moeilijker' maken voor de andere GOT-ters. ;) 8-)

Verwijderd

Geen matches
Op maandag 15 april 2002 21:12 schreef DvRipperD het volgende:
Is dat zo? >:)
Natuurlijk is dat zo, 't had een kleine moeite voor mij geweest jouw code 'n beetje aan te passen en opnieuw te posten zodat je 't kon cut'n'pasten en klaar.. kost denk ik net zo veel tijd als die 3 kleine hints die ik je nu gegeven heb waar jij veel meer van geleerd heb denk ik :Y)

Verwijderd

Topicstarter
Geen matches
Dat klopt inderdaad. *D

Dit is veel leerzamer. ;)

BTW:

'Is dat zo?' was eigenlijk sarcastisch bedoel! >:)

Verwijderd

Matched: lcd
Nog wilde plannen voor een lcd app trouwens?

Verwijderd

Topicstarter
Matched: lcd
Ik ben inderdaad van plan om een mooie app te gaan maken.

Ik moet eerst eens goed uitzoeken hoe je de LCD moet aansturen. Ik krijg nu alleen iets geprint op lijn 1 en 2.
3 en 4 willen nog niet zo. Ik gebruik daar de WriteData2 procedure voor. En ik moet kijken hoe ik per lijn wat kan printen.

Mijn primaire doel is gamestats te tonen van games zoals UT en de meer populaire spellekes, maar dat zal nog wel even duren. :) Maar het komt er zeker wel!! ;)

Verder weet ik het nog niet wat ik verder ga doen.
Ik zie het wel als het proggie vordert! :Y)

Verwijderd

Geen matches
Op maandag 15 april 2002 21:30 schreef DvRipperD het volgende:
Ik gebruik daar de WriteData2 procedure voor.
Daar heb je nu 'n kopie van WriteData staan, beter even vervangen door de originele waardes ;)

Verwijderd

Topicstarter
Geen matches
Ja ik was er al net achter gekomen. :Y)

Verwijderd

Topicstarter
Matched: lcd
Nog een probleem:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
procedure TForm1.FormCreate(Sender: TObject);
begin
  LCD_WriteControl($38);
  Sleep(50);
  LCD_WriteControl2($38);
  Sleep(50);
  LCD_WriteControl($38);
  Sleep(50);
  LCD_WriteControl2($38);
  Sleep(50);
  LCD_WriteControl($38);
  LCD_WriteControl2($38);
  LCD_WriteControl($38);
  LCD_WriteControl2($38);
  LCD_WriteControl($6);
  LCD_WriteControl2($6);
  LCD_WriteControl($C);
  LCD_WriteControl2($C);
  LCD_WriteControl($1);
  LCD_WriteControl2($1);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 DATA : longint;
begin
 for data:=$21 to $70 do
 LCD_WriteData(data);

 for data:=$21 to $70 do
 LCD_WriteData2(data);
end;

Als ik het hele LCD zo probeer te vullen wordt het eerste teken op de 3e regel overgeslagen. Echt overgeslagen dus niet 1'tje naar rechts verplaats. Ik bedoel dus dat 1 teken niet verschijnt.

regel1 : !#.....................
regel2 : IJ.....................
regel3 : (lege-ruimte)#.....................
regel4 : IJ.....................

Any solutions?

Waarschijnlijk weer een hele domme fout die ik maak. |:(

Verwijderd

Geen matches
Cursor offset even goedzetten voor je data begint te rammen naar je display?
Pagina: 1