(Loading...)

mardi 20 juillet 2010

PIC16F876A RS232 et affichage LCD

Cet exercice permet de mettre en pratique la communication du µContrôleur et un PC en utilisant le protocole RS232.
Le PIC confirme l'envoi et la réception sur un afficheur LCD.
J'utilise pour la première fois MikroC PRO, qui comporte quelques différences syntaxiques par rapport à l'ancienne version MikroC standard.

Avant d'aller plus loin, j'ai du mettre en place les éléments nécessaires pour pratiquer les tests. Le PC sur lequel j'expérimente et code, est de dernière génération et ne comporte pas/plus de port série physique. Pour palier à cela, une solution existe heureusement, l'utilisation de ports virtuels générés par l'excellent freeware open source nommé Com0Com.
Une simple recherche sur google vous permettra de trouver les différents logiciels utilisés dans cet exercice, par précaution j'ai mis une copie des utilitaires dans la section téléchargement.



L'utilisation de cet utilitaire est fort simple, il offre la possibilité de créer autant de paire de port série que l'on désire et les nommer à notre convenance. (une paire suffit pour les essais présents). Par défaut la paire existante est nommée "CNCA0 et CNCB0", il suffit de les changer, sur l'illustration de gauche la paire 0 est renommée COM2 et COM6 en remplaçant dans les champs respectifs leur appellation. Préférez les majuscules et pas d'espace. Si le nom de remplacement est bleu, le nom est libre, s'il est rouge c'est qu'il existe déjà.





L'installation du logiciel comprend des drivers qui malheureusement ne sont pas signés et refusent de s'installer sous Windows Seven x64...
Une fois de plus une solution existe,  Driver Signature Enforcement OverRider est un petit utilitaire qui permet de passer outre en indiquant au système d'exploitation de permettre la validation des drivers non-signés.
Il suffira de cocher "Enable Test Mode" puis next.

L'installation de cet utilitaire nécessite le redémarrage du système. Ceci étant fait, Com0Com peut être installé.

Cette étape n'est pas nécessaire sur les versions précédentes de Windows.





Pour communiquer du PC vers le PIC, j'utilise un freeware nommé Terminal, puisque l'Hyperterminal que fournissait windows, ne semble plus exister sous Seven. Ce terminal est complet et fonctionnel, il permet l'affichage sous forme de texte ou au format binaire, hexa et/ou décimal. Il ne nécessite pas d'installation, juste le lancement de l'exécutable. Tous les paramètres sont accessibles sur la partie supérieure de l'interface, la zone centrale est la zone de réception, et la partie basse permet de saisir les données à envoyer, avec en prime la possibilité d'envoyer une séquence contenu dans un fichier texte.





Tous les éléments sont en place, maintenant les essais peuvent se faire, entre le schéma simulé sous  Proteus ISIS et un terminal.
Sous Isis le composant COMPIM émule le fonctionnement d'un port série que l'on paramètrera à sa convenance, à savoir le numéro de port, les bits, la parité etc.. En ce qui concerne l'utilisation présente, simplement le numéro de port et la vitesse de transfert.
On a donc un circuit simulé avec sa fiche RS232 connecté sur un port virtuel qui communiquera avec un terminal, lui-même sur un port virtuel.

Il nous manque Trinity et nous voilà dans Matrix!



Premier code pour confirmer le fonctionnement des différentes éléments.





Lors de la connexion des deux parties, le PIC envoie une confirmation de connexion vers le terminal PC.
"Connexion établie"












De là, du terminal j'envoie un caractère vers le PIC (ici le H) , ce dernier confirme la réception du caractère en l'affichant sur le LCD et renvoie un écho vers le terminal.
Voilà pour le moment...

Plus qu'à pousser les expérimentations plus loin.










Les logiciels nécessaires à cette expérimentation sont disponibles en section téléchargement.




17 commentaires :

Anonyme a dit…

bonsoir
comment faire défilé un message sur un lCD sous mikroC
merci d'avance.

HeartyGFX a dit…

Bonjour,

Dans la lib. LCD de MikroC tu as une fonction pour cela.
lcd_shift_right et lcd_shift_left.

En consultant l'aide de MikroC
Tout ceci est très bien expliqué.

Pour une fois qu'un logiciel fournit
une aide très explicite, il faut en profiter.

A bientôt,

;)


Anonyme a dit…

Atom

HeartyGFX a dit…

humm..?


Unknown a dit…

y'a t'il un projet comme ce lui là utilisation de UART mais l'affichage a l'aide d'une matrice led ?, merci

HeartyGFX a dit…

Bonsoir,

Il y a un projet réalisé par un visiteur de ce blog (Kawi) qui avait réalisé à partir du journal lumineux une version utilisant une connexion RS232 pour la mise à jour.

Il m'avait envoyé une copie que je dois avoir sur un de mes PC.
Je devais retravailler l'interface Windows de contrôle. Je n'ai jamais trouvé le temps de le faire.

Il faudrait que je remette la main dessus, mais... je ne garantis rien, c'est vieux et mes disques durs sont dans un tel désordre (!!)

Si Kawi repasse par là, je pense qu'il se fera un plaisir de fournir ses fichiers.

;)




Unknown a dit…

Bonjour à tous. Ce programme ne fonctionne pas sous mon PC 64 Bits. J'ai suivi toutes les instructions citées ci-dessus. ça n'affiche pas sur mon afficheur LCD et ça me renvoie au PC "x x x". Que faire s'il vous plaît.

Unknown a dit…

Quand j'ouvre terminal, un messageBox s'ouvre et dit "I/O error:103".
Que faire dans ce cas.

HeartyGFX a dit…


Bonsoir,

Lorsque vous parlez de "Ce programme" duquel s'agit il?
Mon code ou un des logiciel dont je parle?

Si vous pouviez me donner plus d'information sur ce que vous avez fait, je pourrais, je l'espère, tenter de vous aider à avancer.

A bientôt,

;)


Unknown a dit…

Bonjour !! J'aimerai bien savoir comment vous avez pu connecter le terminal virtuel avec le circuit sur ISIS, ça ma donne pas connexion établie :/
Merci d'avance

HeartyGFX a dit…


Bonjour,

Comme expliqué dans l'article, il vous faut créer des ports virtuels.
Ces ports RS232 (ou port série) seront crées avec le logiciel
Com0Com indiqué dans l'article.

Eltima software propose un logiciel de ce genre, mais il est payant, voilà pourquoi je propose d'utiliser Com0Com.

Une fois votre port crée, qui sera par exemple le "COM 6" que vous aurez relié sous Com0Com avec un autre port, (réel ou virtuel),
vous n'aurez plus qu'à paramétrer votre composant COM sous ISIS en COM 6 pour le voir communiquer avec le COM que vous aurez relié sous Com0Com.

Ce qui est bien avec cette méthode, est que vous pouvez faire communiquer un circuit virtuel sous ISIS avec un périphérique réel.

N'hésitez pas à demander un complément d'information si je n'ai pas été clair.

A bientôt,

;)


Unknown a dit…

y'a t'il un projet comme ce lui là son utilisation de UART et on ajouton de kepade pour entré un mot de passe et svp avec micro c et merci.

HeartyGFX a dit…


Bonjour,

Je n'ai pas de projet utilisant de KeyPad.
Cela doit se trouver facilement sur le net.

A bientôt,

;)


Unknown a dit…

jai trouvé pas sur le net est ce que tu peut maidé

HeartyGFX a dit…


Bonsoir,

Il vous suffit de consulter la doc de mikroc il y a un exemple d'utilisation de la bibliothèque KeyPad, puis de combiner cet exemple avec l'utilisation du port série comme décrit dans le présent article.
L’intérêt de la programmation étant justement de programmer, ou d'apprendre à programmer, pas d'avoir un travail tout fait.

A bientôt,

;)


Unknown a dit…

Bonsoir,
S'il vous plait je voudrais savoir comment faire un programme de deux multiplication de deux entrées
dans un DSPic33fj et affichée résultat dans un LCD.
Merci

welcome a dit…

salut
s'il vous plait " comment publier un message sur matrix led ( tableau des diodes leds) avec port RS232 et merci
------------------------------------
email: mr.shili.moussa@gmail.com
------------------------------------