La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation1 Driver de port parallèle Commande dun module daffichage LCD.

Présentations similaires


Présentation au sujet: "Jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation1 Driver de port parallèle Commande dun module daffichage LCD."— Transcription de la présentation:

1 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation1 Driver de port parallèle Commande dun module daffichage LCD

2 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation2 Objectif du chapitre Faire fonctionner un module daffichage LCD couplé sur le port parallèle de la cible CEPC –Étude sommaire du port parallèle standard des PC –Étude sommaire du module LCD –Écriture dun driver pour ce module –Écriture dune application pour afficher deux lignes sur le module LCD –Téléchargement dans le CEPC –Exécution

3 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation3 Port Parallèle dun PC (1) Le port parallèle standard (SPP) est un port prévu dès lorigine du PC pour obtenir une liaison plus rapide que la liaison série de lépoque, utile pour commander une imprimante Dans un PC-XT ou dans un PC-AT le SPP nétait pas sur la carte mère mais sur une carte additionnelle qui contenait aussi un port série Carte à installer dans un connecteur du bus ISA

4 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation4 Port Parallèle dun PC (2) Il était possible dinstaller sur le bus ISA deux cartes série/parallèle en choisissant par des straps deux décodages dadresse possibles –0x378 : Parallel Printer 1 (LPT1) associé à lIRQ7 –0x278 : Parallel Printer 2 associé à lIRQ5 Cet adaptateur parallèle nétait même pas un boîtier spécifique mais lassociation dun PAL et de quelques latches et drivers constituant trois registres Plus tard sont apparus des circuits spécifiques plus polyvalents

5 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation5 Port Parallèle dun PC (3) Registre de données (D0-D7) –à ladresse de base du port Registre de Status (S3-S7) –à ladresse de base du port + 1 –utilisé pour ses cinq bits de poids forts seulement S3-S7, S0-S2 inutilisés ou inexistants Registre de commande (C0-C4) –à ladresse de base du port + 2 –Utilisé pour ses cinq bits de poids faibles C0-C4, C5- C7 inutilisés ou inexistants –ici nous nutilisons que C0-C4

6 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation6 Registres du port parallèle Adresse de base Registre de données D7D0 Adresse de base + 1 Registre de status (lecture) S7 Adresse de base + 2 Registre de contrôle C0 Poids fort Poids faible S5S6S4S3 C3C2C1 D6D5D4 D3 D2D1 C4

7 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation7 Registres données et commande D0 D1 D2 D3 D4 D5 D6 D7 Registre donnéesBuffer D5 D2 D3 D4 D1 D6 D7 C0 C1 C2 C3 Registre commande Buffer C2 C3 C1

8 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation8 Registre status Inutilisé dans notre application

9 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation9 Écriture sur un port VOID WRITE_PORT_UCHAR(PUCHAR Port, UCHAR Value); Parameters Port [in] Pointer to the port that must be a mapped memory range in I/O space. Value [in] Byte to be written to the port. Return Values None.

10 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation10 Module daffichage LCD HD44780 Le module possède –Une mémoire de 80 caractères : Display Data RAM (DD RAM) –Un générateur de police de caractère –Deux registres internes DR et IR Taille de lafficheur utilisé : –Nombre de lignes daffichage : 2 –Nombre de caractères par ligne : 20

11 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation11 Signaux du module LCD Port de données D0-D7 RSRegister Select EEnable R/W Lecture/écriture, pour nous 0 V DD Alimentation, pour nous sera prise sur le port sur la broche C2 V SS Masse V L Contrôle du contraste, pour nous 0, contraste maximal

12 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation12 Câblage du module LCD sur le port parallèle Module daffichage LCD R/W V SS V L V DD Port parallèle D7 D6 D5 D4 D3 D2 D1 D0 RS E C0 C3 V DD V L à la masse donne le contraste maximum 10 KΩ

13 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation13 Registres internes du module LCD Deux registres internes –IR registre dinstruction –DR registre de données Commande des registres par deux signaux –RS : Register Selector relié à la broche C3 du port parallèle différencie ces deux registres –E : Enable relié à la broche C0 du port parallèle valide lintroduction des données dans les registres

14 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation14 Séquence décriture dans IR et DR Repos IR RS=0 E=0 Donnée IR RS=0 E0 Donnée DR RS=1 E0 Repos DR RS=1 E=0

15 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation15 Commandes pour écrire IR Signaux de commande en position de repos RS relié à C3 et E relié à C0 mais C3 et C0 sont complémentées doù : commande x x 1 (RS=0 E=0) Mettre linstruction sur le port parallèle D0-D7 Écrire cette instruction dans le registre IR commande x x 0 (RS=0 E=1) Retour à létat de repos commande x x 1 (RS=0 E=0)

16 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation16 Commandes pour écrire DR Signaux de commande en position de repos RS relié à C3 et E relié à C0 mais C3 et C0 sont complémentées doù : commande x x 1 (RS=1 E=0) Mettre la donnée sur le port parallèle D0-D7 Écrire cette donnée dans le registre DR commande x x 0 (RS=1 E=1) Retour à létat de repos commande x x 1 (RS=1 E=0)

17 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation17 Options On peut commander la tension V DD avec la ligne C2, ce qui évite une alimentation externe La ligne C1 est réservée pour avoir un second signal Enable utilisé avec un afficheur à 4 lignes C2 1N4148 V DD 1 µF +

18 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation18 Détail des commandes IR et DR Afficheur LCD à deux lignes C1 inutilisé, à 0 Alimentation par le port C2 toujours à 1 Repos en prévision dune commande pour IR %1101 = 0xD «CTRL» C2=1 RS=0 E=0 Entrée de la commande dans IR %1100 = 0xC «CTRLEN» C2=1 RS=0 E=1 Repos en prévision dune commande pour DR %0101 = 0x5 «DATA» C2=1 RS=1 E=0 Entrée de la commande dans DR %0100 = 0x4 «DATAEN» C2=1 RS=1 E=1

19 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation19 DDRAM du module LCD Le module LCD contient une DDRAM gérée automatiquement par les écritures dans le registre DR La donnée écrite dans le registre DR est transférée systématiquement dans la DDRAM à une adresse définie par un compteur dadresse interne (AC) AC incrémenté à chaque écriture dans DR AC initialisé par écriture de linstruction Set DDRAM address dans le registre IR

20 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation20 LCD à 2 lignes de 20 caractères DDRAM 20 caractères Première ligne Seconde ligne 0x00 0x27 0x40 0x67 0x13 0x53 0x54

21 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation21 Instructions pour le LCD (1) Clear Display: 0x01 Return Home: 0x02 Entry Mode Set: 0x04 à 0x07 (% I/D S) –I/D = 1 incrément –S = 0 pas de décalage Display ON/OFF: 0x08 à 0x0F (%00001 D C B) –D = 0 display OFF –C = 0 cursor OFF –B = 0 blink OFF

22 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation22 Instructions pour le LCD (2) Function Set: 0x38 pour nous (%001 DL N F 00) –DL=1Interface 8 bits –N=0LCD à deux lignes (0 pour une ligne) –F=0Matrice 5x7 Set DDRAM address: 0x80 à 0xFF (%1AAAAAAA) –AAAAAAAAdresse à placer dans le compteur AC

23 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation23 Initialisation du LCD Timing à respecter après la mise sous tension Séquence de commande obligatoire de configuration du LCD

24 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation24 Timing à respecter après Power On

25 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation25 Séquence dinitialisation RESET:Instruction 0x30 (Function Set: interface 8 bits) envoyée 3 fois Display OFF Display ON Clear Display Function Set: taille de linterface, nombre de lignes et police. (non modifiable ensuite) Mode Set: gestion affichage (décalage texte, incrément dadresse mémoire)

26 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation26 Exemple denvoi de commande // Mise du port dans létat repos commande WRITE_PORT_UCHAR(PARCOMMAND, CTRL); Sleep(15); // Attente de 15ms après la mise sous tension // Function Set 1 (interface 8 bits) WRITE_PORT_UCHAR(PARDATA,0x30); WRITE_PORT_UCHAR(PARCOMMAND, CTRLEN); Sleep(2); // Attente de 2 ms (signal ENABLE actif) WRITE_PORT_UCHAR(PARCOMMAND, CTRL); Sleep(5); // Attente de 5 ms

27 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation27 Travail à réaliser Préparer une plate-forme Préparer un driver à inclure Générer le noyau avec le driver Préparer une application Générer lapplication sans linclure avec le noyau Télécharger le noyau dans la cible Exécuter lapplication

28 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation28 Driver Le driver comprendra deux IOCTL –Écriture dun caractère –Positionnement du curseur On définira un projet PARA_DRV de type WCE Dynamic Link Library à inclure dans le noyau On créera un fichier PARA.def que lon inclura dans le projet PARA_DRV

29 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation29 Application Lapplication –écrira un texte sur la ligne 1 du LCD –puis positionnera le curseur en début de ligne 2 –écrira un deuxième texte sur la ligne 2 On définira lapplication PARA_APP de type WCE Application à ne pas inclure dans le noyau

30 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation30 Driver

31 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation31 PARA.def

32 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation32 Driver (1) // TODO: // #include nécessaires // Définition des IOCTL #define IOCTL_PUTC \ CTL_CODE(FILE_DEVICE_UNKNOWN,2048,\ METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_CURSEUR \ CTL_CODE(FILE_DEVICE_UNKNOWN,2049,\ METHOD_BUFFERED,FILE_ANY_ACCESS)

33 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation33 Driver (2) // Définition des adresses du port parallèle #define PARBASE ((PUCHAR) 0x0378) #define PARDATA PARBASE #define PARCOMMAND PARBASE+2 // Définition des mots de commande #define CTRL0xD #define CTRLEN0xC #define DATA0x5 #define DATAEN0x4

34 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation34 Driver (3) BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { return TRUE; }

35 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation35 Driver (4) DWORD PAR_Init(DWORD dwContext) { DWORD dwRet = 1; RETAILMSG(1,(TEXT("PARA_DRV: PAR_Init\n"))); // TODO: // Mise du port dans létat repos commande

36 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation36 Driver (5) // TODO: // Envoi des trois Function Set de RESET // TODO: // Display OFF // TODO: // Display ON // TODO: // Clear Display // TODO: // Function Set (2 lignes, 8 bits)

37 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation37 Driver (6) // TODO: // Mode Set (incrément, pas de décalage) // TODO: // Mise du port dans létat repos data return dwRet; }

38 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation38 Driver (11) BOOL PAR_Deinit(DWORD hDeviceContext) { BOOL bRet = TRUE; RETAILMSG(1,(TEXT("PARA_DRV: PAR_Deinit\n"))); return bRet; }

39 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation39 Driver (12) DWORD PAR_Open(DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode) { DWORD dwRet = 1; RETAILMSG(1,(TEXT("PARA_DRV: PAR_Open\n"))); return dwRet; }

40 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation40 Driver (13) BOOL PAR_Close(DWORD hOpenContext) { BOOL bRet = TRUE; RETAILMSG(1,(TEXT("PARA_DRV: PAR_Close\n"))); return bRet; }

41 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation41 Driver (14) BOOL PAR_IOControl(DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut) { int val; BOOL bRet;

42 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation42 Driver (15) switch(dwCode) { // TODO: case IOCTL_PUTC: // TODO: case IOCTL_CURSEUR:

43 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation43 Driver (16) // TODO: // Positionnement du curseur // Préparation adresse du curseur // Mise du port en repos commande // Envoi de la commande de positionnement // Mise du port en repos data }// switch *pdwActualOut=1; return bRet; }

44 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation44 Application

45 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation45 Application (1) // TODO: // #include nécessaires // Définition des IOCTL #define IOCTL_PUTC \ CTL_CODE(FILE_DEVICE_UNKNOWN,2048,\ METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_CURSEUR \ CTL_CODE(FILE_DEVICE_UNKNOWN,2049,\ METHOD_BUFFERED,FILE_ANY_ACCESS)

46 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation46 Application (2) int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {

47 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation47 Application (3) // TODO: // Déclarations et réservations // TODO: // Chargement du driver // TODO: // Ouverture du driver // TODO: // Envoi première chaîne // TODO: // Positionnement du curseur au début de la ligne 2

48 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation48 Application (4) // TODO: // Envoi deuxième chaîne // TODO: // Fermeture des handles return 0; }

49 jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation49 Conclusion Nous avons dû construire un driver et une application rudimentaires pour commander un module daffichage LCD installé sur un port parallèle standard de PC.


Télécharger ppt "Jc/md/lp-01/05Module d'affichage LCD sur le port parallèle : présentation1 Driver de port parallèle Commande dun module daffichage LCD."

Présentations similaires


Annonces Google