' Liste des connexions vers l'écran ' --------------------------------- ' Ecran | Stamp ' ------+------ ' E | P0 ' RW | Gnd ' RS | P3 ' D4 | P4 ' D5 | P5 ' D6 | P6 ' D7 | P7 '------------------------------------------------------------------------------ ' Description du programme '------------------------------------------------------------------------------ ' Petit programme de démonstartion des principales fonctions de contrôle d'un ' écran LCD '------------------------------------------------------------------------------ ' Définition des I/O '------------------------------------------------------------------------------ E CON 0 ' LCD Enable (1 = enabled) RS CON 3 ' Register Select (1 = char) LCDbus VAR OutB ' 4-bit LCD data bus '------------------------------------------------------------------------------ ' Constantes '------------------------------------------------------------------------------ ClrLCD CON $01 ' Clear CrsrHm CON $02 ' Curseur Home CrsrLf CON $10 ' Curseur Gauche CrsrRt CON $14 ' Curseur Droite DispLf CON $18 ' Décalage à Gauche DispRt CON $1C ' Décalage à Droite DDRam CON $80 ' Contrôle de la Ram d'affichage '------------------------------------------------------------------------------ ' Variables '------------------------------------------------------------------------------ char VAR Byte ' Charactère envoyé au LCD index VAR Byte ' Compteur '------------------------------------------------------------------------------ ' EEPROM Data '------------------------------------------------------------------------------ Msg DATA "Micro-Info asbl", 0 ' Mise en EEPROM du message '------------------------------------------------------------------------------ ' Initialisation '------------------------------------------------------------------------------ Initialise: DirL = %11111101 ' Définition des pins LCD_Init: PAUSE 500 ' Temps de démarage LCDbus = %0011 ' Mode 8-bit PULSOUT E, 1 PAUSE 5 PULSOUT E, 1 LCDbus = %0010 ' Mode 4-bit PULSOUT E, 1 char = %00001100 ' disp on, crsr off, blink off GOSUB LCD_Command char = %00000110 ' inc crsr, no disp shift GOSUB LCD_Command '------------------------------------------------------------------------------ ' Début du programme '------------------------------------------------------------------------------ Main: char = ClrLCD ' Efface le LCD GOSUB LCD_Command PAUSE 500 index = Msg ' Pointeur sur le message Read_Char: READ index, char ' Lecture d'un Charactère IF (char = 0) THEN Msg_Done ' Si 0, Fin du message GOSUB LCD_Write ' Ecriture d'un Charactère index = index + 1 ' Pointe le Charactère suivant GOTO Read_Char ' Lecture du Charactère Msg_Done: ' Fin du message PAUSE 2000 ' Pause 2 secondes char = CrsrHm ' Curseur Home GOSUB LCD_Command char = %00001110 ' Curseur on GOSUB LCD_Command PAUSE 500 char = CrsrRt FOR index = 1 TO 15 ' Déplacement curseur Droite GOSUB LCD_Command PAUSE 150 NEXT FOR index = 14 TO 0 ' Déplacement curseur Gauche char = DDRam + index GOSUB LCD_Command PAUSE 150 NEXT char = %00001101 ' Curseur off, blink on GOSUB LCD_Command PAUSE 2000 char = %00001100 ' blink off GOSUB LCD_Command FOR index = 1 TO 10 ' flash de l'afficheur char = char ^ %00000100 ' Inversion du bit d'affichage GOSUB LCD_Command PAUSE 250 NEXT PAUSE 1000 FOR index = 1 TO 16 ' Déplacement de l'affichage char = DispRt ' vers la Droie GOSUB LCD_Command PAUSE 100 NEXT PAUSE 1000 FOR index = 1 TO 16 ' Déplacement de l'affichage char = DispLf ' vers la gauche GOSUB LCD_Command PAUSE 100 NEXT PAUSE 1000 GOTO Main ' Rebelote END '------------------------------------------------------------------------------ ' Sousroutines '------------------------------------------------------------------------------ LCD_Command: LOW RS ' Passage en mode commande LCD_Write: LCDbus = char.HighNib ' Sortie du Nibble de poids fort PULSOUT E, 1 ' Latch LCDbus = char.LowNib ' Sortie du Nibble de poids faible PULSOUT E, 1 HIGH RS ' Passage en mode Charactère RETURN