Étape 2: logiciel
Le lien du logiciel est répertorié ci-dessous. Alors qu’il est visé pour le 16F688, il est facilement porté à d’autres versions de la photo. Vous devrez modifier la ligne qui identifie la version PIC (liste =) et le fichier INCLUDE, mais ceux sont les changements intuitives. La ligne __CONFIG devez également peaufiner tout simplement parce qu’un ou deux des étiquettes utilisées soient orthographiés différemment dans certains des fichiers INCLUDE.
Tel que mentionné dans la section matériel, l’écran LCD démarre en mode 8 bits et doit être commandé au mode 4 bits. Si vous regardez la section d’initialisation de LCD, vous verrez que les quatre premières commandes sont envoyés alors que l’écran LCD est en mode 8 bits. Parce que l’écran LCD verra les motifs sur les lignes de quatre données plus bas, nous envoyons uniquement le grignotement supérieur des données. Par exemple, dans la version de l’interface de 8 bits, nous enverrions octets hexadécimaux 30, 30, 30 à dire l’écran LCD de vouloir réinitialiser. Dans la version de 4 bits, nous envoyons hex grignote 3, 3, 3, mais l’écran LCD voit 30, 30, 30. Le quatrième nibble que nous envoyons est 2, qui voit dans l’écran LCD 20. Il lui dit de passer en mode 4 bits. Après ce point, nous devrons envoyer chaque octet de données comme une paire d’amuse-bouches et l’écran LCD va les assembler en interne avant leur traitement. Le reste des commandes d’initialisation ont les mêmes valeurs que dans la version 8 bits sauf que nous envoyons 28 au lieu de 38 pour la fonction commande set. C’est parce que « 2 » signifie mode 4 bits, tandis que « 3 » signifie mode 8 bits.
Parce que nous devons envoyer chaque octet consécutifs comme amuse-gueules, nous ajoutons quelques lignes de code à la routine « Write_LCD ». L’écran LCD attend le grignotement supérieur tout d’abord nous faire un échange de nibble pour mettre le grignotement supérieure dans les quatre bits inférieurs et puis masquer les quatre bits supérieurs. Quand nous envoyons le grignotement inférieur nous ne faire l’échange et simplement masquer les quatre bits supérieurs. Assez des modifications simples mais pendant très longtemps que je ne pouvais pas faire correctement afficher mes messages de données. J’ai pensé que quelque chose doit être un problème avec la routine « Write_LCD », mais la chose déroutante c’est que la routine a très bien fonctionné lors de l’envoi des commandes d’initialisation. Il a seulement foiré quand j’ai essayé de changer l’écran LCD au mode de saisie de données. Ce que j’ai finalement opté pour qu’une solution était d’ajouter un retard 50us juste avant l’impulsion enable qui indique à l’écran LCD pour capturer la première nibble. Une fois que j’ai eu il fonctionne j’ai essayé moins délai (il a travaillé jusqu'à environ 25us). J’ai aussi essayé de mettre le retard juste avant de l’activer pour le deuxième nibble, mais qui n’a pas fonctionné. Fait intéressant, mettre le délai à l’intérieur de la première impulsion d’enable fonctionnait. J’ai parcouru les spécifications de la puce de contrôleur LCD Hitachi mais rien trouvé qui explique la nécessité du délai supplémentaire – uniquement en mode données, et aussi longtemps que le premier Quartet de chaque octet est en cours de traitement. Il a simplement dit que vous devez vérifier le « Flag Busy » après chaque morceau de données envoyé mais qui exige la complexité du basculement de l’écran LCD pour le mode lecture. Il s’avère que des millions d’exemples sur le web ont été d’aucun secours soit et beaucoup d'entre eux m’a laissé vous vous demandez si ils ont vraiment travaillaient comme écrit. J’ai plusieurs versions différentes de l’écran LCD donc il ne semble pas être une anomalie dans un seul d'entre eux. Il me rend toujours un peu fou de ne pas savoir « pourquoi ».
Dans l’intérêt d’être complet, je dois mentionner que les trois premières commandes "Spécial Public Function Set" (la 3, 3, 3) ne sont probablement pas nécessaire. Si l’écran LCD s’allume correctement puis la spec dit que vous pouvez aller directement à l’envoi de la commande pour mode 4 bits. Il ne fait pas mal de quitter ces premiers jeu de commandes là-dedans et ils peuvent aider si l’écran LCD n’alimente pas place correctement à l’occasion. C’est pourquoi je les ai mis là. Eh bien, c’est tout pour l’épisode 12 de « Fun avec PIC Assembly ». Restez à l’écoute des autres épisodes.