MSX Village forum

L'école Commander un afficheur LCD sur MSX

metalgear2 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 27/11/2010 à 23h40

Messages: 2768

Le 05/05/2014 à 18h49
Bonjour,

J'ai commencé a lire un peu le bouquin "ASSEMBLEUR ET PERIPHERIQUES DES MSX" et c'est pas gagné. :oups

Je cherche a commander un AFFICHEUR LCD (Pour le fun :D ) et recherche comment dire au Z80 d'envoyer des données ou adresses sur tel port.



En fouinnant un peu sur le net, j'ai appris quelques trucs, mais peut-être que je me trompe :

Quelques exemples:

OUT 3,1 : Pour effacer la totalité du LCD.
OUT 3.&B00001111 : Curseur qui clignote.
OUT 3,&B1xxxxxxx : x pour définir la position du curseur
....
Il y a aussi des commandes : OUT 2,x

Je sais aussi qu'a cette époque, ils utilissaient un afficheur LCD qui avait bessoin d'un drivers HD44780, c'est le cas du LM16251. Merci a GDX pour son aide sur ce fameux driver.

Je sais pas si aujourd'hui, le driver est intégré à la puce de l'afficheur comme sur le GDM1602 :hum Même dans les databook, rien n'apparait a ce sujet.

J'ai testé plusieurs schéma sans résultats (Elektor, MSX Magazine, celui du site de Hanso, qui est le même qu'Elektor). A la mise sous tension du MSX, le LCD affiche des caractéres aléatoire. Testé sur un 8250 et un 8235 car il faut obligatoirement la ligne /BUSDIR. Quand la doc est en anglais, pas de probléme, mais quand c'est en japonais .... :s , peut-être que je passe a côté de quelque chose. :'(

Si quelques personnes avaient des infos sur ce sujet ..... ^^

Merci.



Mon site consacré au MSX : http://mymsx2.free.fr
Site web    
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 05/05/2014 à 22h13
Il faut d'abord connaitre l'adresse du port attribué à ton périphérique pour pouvoir envoyer les octets sur le bon port ;)

tu doit avoir un port de commande et un port de données normalement, ou un port pour l’écriture et un port pour la lecture ?

Je connais pas le hardware des MSX, mais ca m'intéresse bien de connaitre les numéro de port utilisé par ton montage ??


Site web    
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 05/05/2014 à 22h14
Et tu doit connaitre le protocole utilisé pour l'envoie de données vers ton afficheur !!!


Site web    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 05/05/2014 à 22h32
Interface serie ca?!?! :)



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 05/05/2014 à 22h45
Oui normalement les afficheur sont en protocole série mais peut être certains sont en parallèle ?


Site web    
metalgear2 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 27/11/2010 à 23h40

Messages: 2768

Le 06/05/2014 à 00h07
Non, justement, on peut aussi le faire par le port cartouche.

Exemple d'un schéma récuperer sur le databook du LM16251 :




Mon site consacré au MSX : http://mymsx2.free.fr
Site web    
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 987

Le 06/05/2014 à 00h07
Faut! archi faut!
Ils sont d'origine avec un bus parallèle de 8bits avec un mode 4bits
Avec en plus un signal E, RS, et WR

Il faut respecter une suite d'écriture dans les registres pour initialiser l'afficheur.

Il existe en effet des version avec interface série soit: I2C, SPI, ou RS232 (TTL)
Dans se cas il y a un AVR ou un PIC qui prend en charge d'initialiser l'afficheur fonction des commandes reçues sur le bus série.

Pour résumer, il faut soit 8 +3 fils pour piloter l'afficheur (8bits + E + RS + WR)
ou 4 + 3 fils
Ajoutez à ça masse , +5V, et VLCD (contraste) (tension d'environ 1v par rapport à la masse)

http://www.geocities.com/dinceraydin/lcd/z80example.htm


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
metalgear2 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 27/11/2010 à 23h40

Messages: 2768

Le 06/05/2014 à 00h13
Je peux te confirmer que l'on peut piloter un LCD par le port cartouche.



Mon site consacré au MSX : http://mymsx2.free.fr
Site web    
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 987

Le 06/05/2014 à 01h32
metalgear2 :
Je peux te confirmer que l'on peut piloter un LCD par le port cartouche.




Je n'ai pas dit le contraire, j'ai dit que ces modules sont pas avec bus série, mais justement bus parallèle.

Bien entendu que tu pourra le contrôler facilement avec le port cartouche :)



Lire ce document:

https://www.sparkfun.com/datasheets/LCD/HD44780.pdf



faut créer un port I/O dont le signal de décodage ira sur E (attention E est actif à l'état haut)

le signal /WR du MSX va sur R/W de l'afficheur

A0 du MSX va sur RS de l'afficheur

je pense que les temps d'accès de l'afficheur son respecté avec un MSX à 3.57MHz, mais vérifier.



voila ça devrait t'aider...


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
SveN Membre non connecté

Villageois

Rang

Avatar

Groupe : compte ++

Inscrit le : 22/11/2011 à 21h14

Messages: 865

Le 06/05/2014 à 17h48
S'agissant des afficheurs LCD à interfacer avec un MSX, il faut évidemment privilégier les modèles à bus parallèle (ils disposent d'ailleurs d'un convertisseur parallèle vers série en interne).
Sur un Z80 cadencé à 3.5MHz, un cycle CPU vaut environ 280ns.. Pour les tests, même sur une machine plus rapide, ça ne doit pas être pénalisant.
Le contrôle de l'afficheur s'effectue par un port disponible et défini à l'avance sur le MSX, avec le circuit de décodage d'adresse qui va bien.

Pour la programmation, il faut inévitablement se référer au datasheets ou manuels d'utilisation. (j'ai cependant plusieurs afficheurs de marque différente se comportant de la même façon sur les boards de développement)
Voici un bon début pour la compréhension : http://matthieu.benoit.free.fr/affi-lcd.htm
Ce manuel détaille très bien les opérations et les timing requis : http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/Display/LCD.pdf

J'ai quelquechose de spécifique au Z80, mais n'ai pas réussi à remettre la main dessus.





Philips.NMS.8245/50/80, Sony.F1XV/HBF-700D, Pana.FSA1FX/A1WX(x2)/A1GT, OCM, GR8BIT.... et ...
   
metalgear2 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 27/11/2010 à 23h40

Messages: 2768

Le 06/05/2014 à 18h58
Bonsoir,

En faite, au niveau afficheur LCD, je m'imquiéte pas trop. Ayant réaliser un fréquencemétre a partir d'un PIC et d'un LCD, http://www.msxvillage.fr/forum/topic.php?id=1936&pt=30#m46780 , je connais un peu prés son fonctionnement.

C'est surtout les commandes a envoyer au Z80.

Si j'ai bien compris le fonctionnement sur les différents plans que j'ai récupéré, il faut entrer une commande sous basic que le Z80 reçoit et qui lui, envoit à la l'afficheur. La commande que l'afficheur recoit, calcul grace au driver HD44780, qui je pense et intégrer dans les nouveaux LCD ( GDM1602 ). Quand on regarde la photo du premier post, on voit deux puce. Je pense qu'il y en a une pour le drivers et l'autre pour l'affichage. J'ai d'autre afficheur avec seulement une puce.

Avec l'aide de GDX, j'ai un driver HD44780. Si je le lance sous basic avec un ancien afficheur, il me rend la main. Avec un afficheur récent, donc avec deux puces, il bloque le MSX. Je pense qu'avec les nouveaux afficheur, je n'ais pas bessoin de ce driver.

Dans toutes les doc que j'ai, elles parlent toutes des même commandes.

Par exemple, pour faire clignoter le curseur, il suffit de tapper sous basic : OUT 3.&B00001111 . Mais aucune réaction de l'afficheur.

Mon probléme et là, est-ce que j'envois les bonnes commandes. Malheureusement, je ne connais pas les intructions ou les commandes a envoyer au Z80.



Mon site consacré au MSX : http://mymsx2.free.fr
Site web    
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 06/05/2014 à 21h54
En Basic ca risque d'être un peu lent non ?

Tu pourrais le faire directement en ASM, voir même faire des routines spécifiques (SEND DATA, READ DATA, STATUS,...) que tu appellent au besoin a partir du Basic ?



Site web    
metalgear2 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 27/11/2010 à 23h40

Messages: 2768

Le 06/05/2014 à 23h12
Bin en faite, je voulais faire en 1er la version basic car je connais mieux le basic que l'assembleur ^^ . J'aurais fait la version assembleur aprés m'avoir fait la main sur la version basic. Mais même la version basic ne fonctionne pas.

Pourtant elle est sorti sur un magazine, donc elle doit fonctionner :




A part la ligne 200 que j'ai modifier en RESTORE 600 car le ligne 800 n'existe pas :s



Si je comprend bien le début du programme, d'aprés les infos sur les OUT 3,1Bxxxxxxxx :

120 : Cette ligne, je comprend pas bien, il parle de 8Bits sur un afficheur 2 lignes
130 : Affiche un curceur
140 : Déplace le curceur vers la droite
150 : Efface la totalitée de l'écran (Sauf le curseur)
200 à 220 : Lire les 29 données en ligne 600 en les appelant FT$
230 : Afficher les données FT$ sur le LCD

Pourtant, rien de compliquer pour afficher 29 caractéres sur un LCD. Je comprend pas. Ou alors, mon LCD n'est pas compatible avec le MSX.



Mon site consacré au MSX : http://mymsx2.free.fr
Site web    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 06/05/2014 à 23h21
Lache pas le morceau Metalgear2, je sais que tu va y arrivé :D:top^^

Combien, on peu brancher d'ecran de ce type sur un seul Msx en meme temps? Edité par TurboSEB Le 06/05/2014 à 23h24



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 07/05/2014 à 00h00
Il me semble que le point crucial dans ce programme ces les lignes 120 à 150 car ca doit être l'initialisation de l'afficheur !!!

Est ce que ton afficheur est compatible avec celui de cette article ?

As tu vérifier les datasheets des 2 afficheurs ?

Si ton afficheur n'est pas identique peut être faut il adapter les lignes d'initialisation ?



Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie