En gros tu fais les 3 function set en respectant les délais, ensuite le "vrai" function set qui te met en 8 bits (si c'est bien ce que tu veux), ensuite le display on, le display clear et le entry mode set. Tu peux ensuite envoyer tes données comme tu le ferais normalement.
Si tu veux j'ai un exemple mais pour une interface en 4 bits au lieu de 8 bits donc plus complexe un peu. Mais en gros un ordinogramme pourrait être un truc du genre:
Code :
- Initilisation des ports du PIC
- Délais de 15ms
- Mettre 0011xxxx sur le port
- Délais de 4.5 ms
- Mettre 0011xxxx sur le port
- Délais 100 us
- Mettre 0011xxxx sur le port
- (à partir d'ici on peut vérifier le busy flag pour s'assurer que le lcd n'est plus occupé)
- Mettre 0011NFxx sur le port (function set)
- Vérifier si le lcd est occupé ou attendre un certain délais
- Mettre 00001100 sur le port (display on)
- Vérifier si le lcd est occupé ou attendre un certain délais
- Mettre 00000001 sur le port (display clear)
- Vérifier si le lcd est occupé ou attendre un certain délais
- Mettre 00000110 sur le port (entry mode set)
- MAIN
- écrire ton texte
- goto MAIN
|
(Attention j'ai peut-être fait des erreur dans les données à envoyer, bien vérifier avec la datasheet
)
Il faut bien veiller à mettre les bonnes valeurs pour RS, RW et puis faire changer ton EN entre chaque envoi mais ca il semble que tu l'ais très bien compris. Si tu veux je peux te trouver un exemple de code dans mes trucs.
Autre petite remarque, je te conseille de mettre tes sous-routines après ta boucle principale, si jamais tu gères les interruptions tu verras que le seul vecteur d'interruption du pic est à l'adresse 0x0004. Ca n'empêchera pas le tout de fonctionner mais c'est une meilleure pratique car le début du programme ressemblera généralement à un truc du genre
Code :
- org 0x0000
- goto MAIN
- org 0x0004
- goto INTERRUPTION
- org 0x0005
- MAIN
|
Bref rien de très grave, juste une bonne pratique à prendre (c'est un peu le cas en C/C++ par exemple, on met les prototypes de fonctions au début mais les fonctions après le main). 
Message édité par koss le 26-10-2006 à 05:52:46