

Projet : TuMP3?
Software
[ Introduction
] [ Piloter
le LCD ] [ Piloter
le Joypad ] [ Piloter
Winamp ]
[ LCD3 Soft
Player v1.x ] [ LCD3 Soft
Player v2.x ]
J'ai choisi Windows comme platforme de developpement car je ne connais très peu Linux et que je programme facilement avec Delphi 4 (bien que je devrai me mettre au C++ mais j'ai pas le courage). De plus, pour le décodage MP3, j'ai la possibilité d'utiliser Winamp. J'aurais pu programmer un plug-ins mais j'ai pas trouvé la documentation suffisante. J'ai donc décidé de créer une application qui pilote Winamp, affiche les informations sur le LCD et qui se pilote au joypad.
Les sections suivantes décrivent plus ou moins précisément les différentes parties de mon software.
[ Introduction
] [ Piloter
le LCD ] [ Piloter
le Joypad ] [ Piloter
Winamp ]
[ LCD3 Soft
Player v1.x ] [ LCD3 Soft
Player v2.x ]
Le LCD est connecté au port parallèle. Il est très simple à utiliser. Après lui avoir envoyé une séquence d'initialisation, il suffit de lui envoyer les codes des caractères (la table est quasi identique à la table ASCII) pour voir les caractères s'afficher.
J'ai connecté le module en 8 bits mais il est possible de connecter que 4 bits (les écritures sur le port se font en 2 fois).
Comme décrit dans la section Hardware, les huits bits correspondent aux 8 bits du port //. Par défaut, l'addresse du port est 0378h. A ma connaissance Delphi ne sait pas écrire directement sur le port, j'ai donc programmé tous les accès au port en assembleur. Pour activer les bits correspondants au RS et E, j'utilise les procédures suivantes :
|
|
|
|
Procedure wport(portnum : word;b : byte); begin asm mov dx,portnum mov al,b out dx,al end; end;
Les procédures e_on, e_off, rs_on, rs_off commandent les états de E et RS. La procédure wport(portnum,b) écrit l'octet b sur le port d'addresse portnum.
La procedure d'initialisation est la suivante :
Procedure delay(t : integer);
var l : longint;
begin
for l := 0 to t*80000 do
begin
end;
end;
Procedure initlcd(Cursor_on : boolean; Blink_on : boolean);
{Cursor_on : le curseur est visible, Blink_on : il clignote}
var i : integer;
init : array[0..4] of byte;
begin
if Cursor_on then
if Blink_on then init[0] := $0F
else init[0] := $0E
else
if Blink_on then init[0] := $0D
else init[0] := $0C;
init[1] := $01; {efface l'écran}
init[2] := $38; {8 bits, 2 lignes}
init[3] := $38;
init[4] := $80; {1er caractère ligne du haut}
asm
mov dx,37Ah
in al,dx
and al,0DFh
out dx,al
end;
rs_on;
for i := 0 to 4 do
begin
wport($378,init[i]);
e_on;
delay(3);
e_off;
delay(3);
end;
rs_off;
end;
La procédure delay permet une temporisation de manière à ce que le LCD est le temps de tout traiter.
Procedure addcar(c : char); {écrit le caractère c à la position du curseur}
begin
wport($378,ord(c));
e_on;
delay(1);
e_off;
delay(1);
end;
Procedure LCDpos(x,y : byte); {place le curseur à la ligne y, position x}
{Première ligne premier caractère -> (x,y) = (0,0)}
var w : Byte;
begin
case y of
0 : w := $80;
1 : w := $C0;
else w := $80;
end;
w := w + x;
rs_on;
wport($378,w);
e_on;
delay(2);
e_off;
delay(2);
rs_off;
end;
Procedure writelcd(st : string; l : boolean);
{Ecrit une chaine sur la ligne 1 si l = true, 2 si l = false}
var i : integer;
begin
rs_on;
if l then wport($378,$80) else wport($378,$C0);
e_on;
delay(2);
e_off;
delay(2);
rs_off;
for i := 1 to length(st) do
case st[i] of
' '..'Z' : addcar(st[i]);
'a'..'z' : addcar(st[i]);
'\' : addcar(chr(126));
chr(126) : addcar(chr(126))
else addcar(chr(219));
end;
end;
Voilà tout ce qui peut vous être utile concernant le LCD. N'hésitez pas à me contacter au cas où vous souhaiteriez de plus amples expliquations.
[ Introduction
] [ Piloter
le LCD ] [ Piloter
le Joypad ] [
Piloter Winamp
]
[ LCD3 Soft
Player v1.x ] [ LCD3 Soft
Player v2.x ]
[ Introduction
] [ Piloter
le LCD ] [ Piloter
le Joypad ] [
Piloter Winamp
]
[ LCD3 Soft
Player v1.x ] [ LCD3 Soft
Player v2.x ]
[ Introduction
] [ Piloter
le LCD ] [ Piloter
le Joypad ] [ Piloter
Winamp ]
[ LCD3 Soft
Player v1.x ] [ LCD3 Soft
Player v2.x ]
[ Introduction
] [ Piloter
le LCD ] [ Piloter
le Joypad ] [
Piloter Winamp
]
[ LCD3 Soft
Player v1.x ] [ LCD3 Soft
Player v2.x ]
[ Introduction
] [ Piloter
le LCD ] [ Piloter
le Joypad ] [
Piloter Winamp
]
[ LCD3 Soft
Player v1.x ] [ LCD3 Soft
Player v2.x ]