Accueil > Forum > contrôleurs SlimLine e Netsyst (LogicLab) > Gérer un affichage alphanumérique avec un module SlimLine
- Ce sujet a 30 réponses, 1 participant et a été mis à jour pour la dernière fois 4 années, 2 mois da Sergio Bertana.
-
auteurPost
-
Décembre 13, 2013 à 10: 26 am #37924Sergio BertanaAdministrateur du forum
Avec la nouvelle version de LogicLab 2.2.0, un éditeur de messages pour les affichages alphanumériques a été ajouté, il est désormais possible de définir les messages à afficher sur les afficheurs connectés au bus d'extension du système SlimLine directement à partir de LogicLab (Sujet).
Décembre 24, 2013 à 6: pm 52 #37937MichelePartecipanteJ'ai acheté et connecté cet écran au contrôleur SlimLine: SainSmart IIC / I2C / TWI Serial 2004 20 × 4 LCD Module Shield Pour Arduino UNO MEGA R3, j'ai utilisé la librairie postée il y a quelques articles mais je ne veux pas y aller. Il n'y a aucun moyen de faire fonctionner l'affichage, j'ai essayé à la fois avec l'adresse 0x3F et avec le 0x27 (ce qui cependant j'ai vu qu'il n'est pas dans la plage d'adresses utilisables sur le bus I2C). J'ai tout essayé et plus mais ce n'est pas juste!
Décembre 27, 2013 à 8: 06 am #37938Sergio BertanaAdministrateur du forumPour utiliser un écran connecté au bus d’extension du SlimLine vous avez deux possibilités différentes, vous utilisez ma bibliothèque qui est testée avec l'affichage suggéré (qui est de 2 lignes sur 16 caractères) ou vous développez vous-même le pilote de gestion d'affichage. Chaque affichage a de petites différences dans la séquence d'initialisation et celui que vous utilisez a même 4 lignes. J'ai cherché sur Internet la fiche technique d'affichage que vous avez utilisée, mais je ne l'ai pas trouvée. Si à la place de la bibliothèque vous utilisez le programme présent dans le premier article de cette rubrique vous pouvez le modifier pour adapter la séquence d'initialisation à votre affichage. En particulier dans le CAS 3, vous devrez modifier la ligne.
DWrBuffer [1]: # = 16 38; (* Bits 8, lignes 2, points 5 * 7 *)
Comme vous pouvez le voir, configurez un affichage à 2 lignes alors que le vôtre est 4, puis vous devrez également changer les adresses DDRAM pour écrire. De plus, 32 octets de données sont écrits alors que l'affichage comporte 4 lignes de 20 caractères donc 80 octets. En pratique, en utilisant le langage ST, vous pouvez gérer n'importe quel affichage mais vous devez connaître les caractéristiques du matériel à gérer. Attention: vous ne pouvez pas utiliser les affichages ayant des adresses I2C entre 16 # 20 et 16 # 2F.
Décembre 27, 2013 à 9: 30 am #37940MichelePartecipanteJ'utilise actuellement votre bibliothèque et j'ai fait divers tests avec les différents processus d'initialisation de l'affichage, mais je ne peux évidemment pas m'en remettre. Je ne trouve pas moi-même de fiche technique d'affichage. Cependant, un doute me vient: l'écran peut ne pas prendre en charge le mode 8 bits, mais ne prend-il en charge que 4 bits? J'ai lu que sur LogicLab v2.2.0 il y a un outil qui peut gérer directement les affichages?
Décembre 27, 2013 à 9: 53 am #37941Sergio BertanaAdministrateur du forumLe mode 4/8 bits fait référence à la connexion parallèle, le contrôleur d'affichage peut gérer à la fois la connexion I2C et la connexion bus, le bus peut être de 4 ou 8 bits. Mais lors de l'utilisation de la connexion sur I2C, les données sont toujours de 8 bits. L'outil auquel vous faites référence est la capacité de gérer l'affichage des systèmes Netlog III de LogicLab, à ce sujet J'ai créé un FB spécial pour gérer l'affichage sur le bus I2C, pouvant définir les messages depuis l'éditeur LogicLab. Mais j'utilise toujours un affichage de 2 lignes par 16 caractères. Bien entendu, vous pouvez modifier le FB en fonction de votre affichage. Mais pour venir à vos tests, j'ai extrapolé un morceau de code du FB.DWrBuffer [0]: = 16 # 80; (* Co: = TRUE, A0: = FALSE *) DWrBuffer [1]: = 16 # 30; (* Jeu de fonctions par défaut *) Résultat: = SysI2CWrRd (16 # 3F, 02, ADR (DWrBuffer), 0, 0); Si vous l'exécutez dans votre programme (bien sûr, vous devez définir les variables) vous pouvez vérifier la valeur de Résultat, comme vous pouvez le voir dans le manuel, la fonction SysI2CWrRd arrière FAUX en cas d'erreur, de cette manière au moins on sait si la connexion I2C et si l'adresse 16 # 3F de l'afficheur est correcte. Vous commencez donc à résoudre le problème.
Décembre 27, 2013 à 10: 45 am #37945MichelePartecipanteMerci pour le soutien. Ensuite, la fonction comme vous l'avez indiqué renvoie définitivement TRUE car en mettant le tableau CaseNr dans l'état, je vois que sa valeur (après le cycle d'initialisation) prend 100 et chaque seconde change (comme 110 ... 111) donc je suppose que la fonction SysI2CWrRd renvoie TRUE.
J'ai essayé de changer l'adresse, comme l'amener à 16 # 3E ou à une autre valeur dans la plage d'adresses valides et la fonction renvoie toujours TRUE ...
Décembre 27, 2013 à 1: pm 53 #37946Sergio BertanaAdministrateur du forumLe fait que la fonction SysI2CWrRd toujours retourné TRUE avec n'importe quelle adresse cela m'a semblé une indication d'un bug, en fait j'ai vérifié le système d'exploitation du SlimLine et j'ai trouvé une erreur en retournant la fonction. J'ai procédé à la correction de l'erreur dans le nouveau système d'exploitation SFW184A850. Vous pouvez le télécharger depuis le site à partir de cette KB où il explique comment le mettre à niveau.
Décembre 27, 2013 à 8: pm 06 #37947Sergio BertanaAdministrateur du forumEn naviguant sur Internet, j'ai trouvé une explication sur la façon dont votre affichage est fait (Voir le forum Arduino). En pratique, il s'agit d'un afficheur avec une interface parallèle 4/8 bits auquel a été ajouté un circuit imprimé sur lequel un expandeur d'E / S I2C (Voir schéma électrique). Cela n'a rien à voir avec l'affichage discuté dans le forum où le contrôleur d'affichage a intégré l'interface I2C.
Pour gérer cet affichage, vous devez utiliser les commandes I2C pour gérer le module d'extension d'E / S (la fiche technique est disponible). 4 des 8 bits de sortie du module d'extension d'E / S ont été utilisés pour les données du bus d'affichage (une interface 4 bits doit être configurée), les 3 autres bits gèrent les signaux En, R / W, Rs de l'affichage. Le dernier bit est utilisé pour contrôler le rétroéclairage LED. Le contrôleur utilisé sur le module d'affichage est probablement le HD44780 classique ou équivalent dont il est très facile de trouver la documentation. Vous disposez désormais des informations nécessaires pour développer votre propre FB de gestion, un excellent banc d'essai pour l'apprentissage de la programmation IEC61131 en langage ST.
Décembre 28, 2013 à 9: 37 am #37949MichelePartecipanteMerci pour les informations inestimables. Je regarde la documentation pendant un moment et vois ce que je peux faire. Dans tous les cas (positifs ou négatifs) je publie mon résultat ici afin de pouvoir le partager avec d'autres, au cas où cela aiderait.
Décembre 28, 2013 à 10: pm 08 #37952MichelePartecipanteMe voici de nouveau, rien à faire. J'ai essayé d'écrire mon FB pour la gestion lcd ainsi que depuis la documentation (fiche technique du contrôleur LCD Hitachi HD44780 et de l'E / S Expander). Mais rien, l'écran ne réagit pas. En consultant la documentation de l'E / S Expander, j'ai pu voir que le contrôleur est un PCF8574T avec les broches A0, A1, A2 tous à + Vcc, donc l'adresse I2C = 0x3F. Je ne peux pas, j'ai consacré toute la journée à ce problème mais sans l'accepter ... je ne sais pas vers qui me tourner ... Aider!
Décembre 30, 2013 à 7: 17 am #37953Sergio BertanaAdministrateur du forumEh bien maintenant vous savez quelle adresse I2C utiliser même si j'ai des réserves car à partir de la fiche technique on peut en déduire que le modèle PCF8574 a des adresses de 16 # 20 à 16 # 27 alors que c'est le modèle avec le suffixe (A) PCF8574A qui a des adresses de 16 # 30 à 16 # 3F (Sujet).
Maintenant, il est nécessaire de comprendre si le chemin que vous devez emprunter vous est clair. Grâce à l'extension E / S, vous devez simuler le bus qui va vers l'écran, puis les commandes I2C doivent être données à l'extension E / S pour s'assurer que les données dont l'écran a besoin sortent sur ses broches. Pour ce faire, je vous suggère de créer une fonction d'écriture de données d'affichage à laquelle passer les données (elle doit être sur 4 bits). Maintenant, grâce à cette fonction, vous pouvez envoyer les commandes à l'écran en suivant la documentation du pilote HD44780 (vous devez définir l'interface sur 4 bits, puis les commandes qui sont toutes sur 8 bits seront divisées en deux commandes de 4 bits).
Décembre 30, 2013 à 1: pm 54 #37955MichelePartecipanteMerci encore pour l'aide précieuse, ce que vous me proposez en art je l'ai fait mais quelque chose m'échappe encore. Dans tous les cas, je réécrirai un nouveau programme et réessayerai. Au cas où je la poste ici pour que je puisse raisonner directement sur le code.
Décembre 30, 2013 à 5: pm 06 #37956Sergio BertanaAdministrateur du forumJe n'ai pas d'écran et donc je ne peux pas faire de tests voici l'impression de la fonction IOExpToLCD cela devrait écrire les données sur l'écran (Téléchargement de la bibliothèque). Comme vous pouvez le voir, 2 octets de données sont envoyés sur le bus I4C, les deux octets pairs contiennent les 4 bits des données 8 bits et activent le signal d'échantillonnage En, les deux octets impairs réinitialisent le signal stroboscopique En. Pour initialiser l'affichage, vous devez suivre les informations contenues dans la documentation du contrôleur HD44780.
Le seul doute me vient à propos de la première écriture de l'ensemble Function, lorsque vous définissez l'interface 4 bits que le manuel dit qui se termine par une seule écriture et non deux comme toutes les autres.
Function set Sets to 4-bit operation.
In this case, operation is handled as 8 bits by initialization, and only this instruction completes with one write.Vous devez faire quelques tests, en attendant, vérifiez si l'appel IOExpToLCD (16 # 00, FALSE, TRUE) Activer le rétroéclairage de l'affichage.
Février 18, 2014 à 2: pm 00 #38080Sergio BertanaAdministrateur du forumIn ce sujet un projet de gestion de l'écran LCD compatible SainSmart Arduino est présenté. Je pense que c'est exactement l'écran qui est entre vos mains, essayez de jeter un œil.
Février 22, 2020 à 8: 17 am #53590rosairePartecipanteJ'ai un plc SlimLine et un écran QAPASS 1602A, je voudrais créer un programme qui utilise un compteur de pièces et les affiche sur l'écran.
Donc pour tester l'affichage j'ai utilisé le schéma de câblage et le programme du 3 septembre 2013 # 37751, mais ça ne marche pas, j'ai essayé de changer les adresses SA0 et SA1 avec des résultats négatifs.
Cependant, à part cela, je ne comprends pas comment je peux interfacer le programme qui affiche un message texte avec un compteur.
-
auteurPost
- Vous devez être connecté pour répondre à ce sujet.