Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

LCD hd44780



  1. #1
    titane36

    LCD hd44780

    Bonjour je doit réaliser en language assembleur un programme pour un afficheur lcd 44780 (pic 16f877)
    Les lignes de port sont : (RB0=RS , RB1=RW, RB2=E)
    (RC0 = D0 ............. RC7 = D7) 8 bits

    Voici ce qu j'ai réalisé:
    LIST p=16F877
    #include <p16F877.inc>

    __CONFIG _CP_OFF & _DEBUG_ON & _WRT_ENABLE_ON & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC

    OPTIONVAL EQU B'10000101'

    #define RS PORTB,0
    #define RW PORTB,1
    #define EN PORTB,2

    org 0x00
    goto init
    org 0x05

    init
    banksel TRISB
    bcf RS ;RS et R/W a zéro pour effectuer la configuration du lcd
    bcf RW
    bcf EN
    banksel TRISC
    movlw 0xFF
    banksel PORTB
    bcf RS ;RS et R/W a zéro pour effectuer la configuration du lcd
    bcf RW
    bcf EN
    banksel INTCON
    bcf INTCON,5
    bcf INTCON,2
    call tempo
    return

    tempo
    banksel OPTION_REG
    movlw OPTIONVAL ; charger masque
    movwf OPTION_REG ; initialiser registre option
    banksel TMR0
    movlw 0x15
    movwf TMR0
    boucle
    btfss INTCON,2
    goto boucle

    fonction_set
    call busy
    movlw 0x38
    call Wrcmd

    busy
    banksel TRISC
    movlw 0xFF
    movwf TRISC
    banksel TRISB
    bsf RS
    bsf RW
    bsf EN
    movf PORTC,W
    busy1
    bcf PORTB,2
    andlw 0x80
    btfss STATUS,Z
    goto busy1
    nobusy
    bcf PORTB,1
    bsf STATUS,RP0
    movlw 0x00
    movwf TRISC
    bcf STATUS,RP0
    return

    Wrcmd
    movwf 0x20
    call busy
    bcf RS
    bcf RW
    bsf EN
    movf 0x20,W
    movwf PORTC
    bcf PORTB,2
    call tempo
    return

    Wrdata
    movwf 0x20
    call busy
    bsf RS
    bcf RW
    bsf EN
    movf 0x20,W
    movwf PORTC
    bcf PORTB,2
    call tempo
    return

    char
    movlw 'B' ; Charger le caractère B
    movwf PORTB ; Charger le caractere sur le portB
    call busy
    movlw 'o' ; Charger le caractère O
    movwf PORTB ; Charger le caractere sur le portB
    call busy
    movlw 'n' ; Charger le caractère N
    movwf PORTB ; Charger le caractere sur le portB
    call busy
    movlw 'j' ; Charger le caractère J
    movwf PORTB ; Charger le caractere sur le portB
    call busy ;
    movlw 'o' ; Charger le caractère O
    movwf PORTB ; Charger le caractere sur le portB
    call busy
    movlw 'u' ; Charger le caractère U
    movwf PORTB ; Charger le caractere sur le portB
    call busy
    movlw 'r' ; Charger le caractère R
    movwf PORTB ; Charger le caractere sur le portB
    call busy
    return
    end

    Pouvez vous m'aider s'il vou plez merci!!

    -----


  2. Publicité
  3. #2
    titane36

    Re : LCD hd44780

    Personne pour m'aider??

  4. #3
    invite_P89
    Invité

    Re : LCD hd44780

    LU
    Moi bien vouloir si toi mets un peu d'ordre dans ton code.
    dur dur pour te suivre, ou est INIT du lcd
    Tu es en 4 bits 8 bits quelle matrice ? tu passes en mode commande ou donnée quand ?

  5. #4
    titane36

    Re : LCD hd44780

    init
    banksel TRISB
    bcf RS
    bcf RW
    bcf EN
    banksel TRISC
    movlw 0xFF
    banksel PORTB
    bcf RS
    bcf RW
    bcf EN
    banksel INTCON
    bcf INTCON,5
    bcf INTCON,2
    call tempo
    return

    Pour l'initialisation
    Je suis en mode 8 bits
    Mon objectif et de paramétrer un pic 16f877 des ports B et C

  6. #5
    titane36

    Re : LCD hd44780

    JE doi utiliser aussi un timer 0 pour la tempo et une fonction set
    Ensuite je pense que mon busy flag , Wrcmd et Wr data et bon !

  7. A voir en vidéo sur Futura
  8. #6
    invite_P89
    Invité

    Re : LCD hd44780


  9. Publicité
  10. #7
    titane36

    Re : LCD hd44780

    Enfaite on ma demander de faire mon init:
    -> configurer RB0 en sortie ( acces a TRISB , TRISB,0=0)
    configurer RB1 en sortie (TRISB,1=0)
    configurer RB2 en sortie (TRISB,2=0)

    -> TRISC = 0xff
    -> faire RS=0 (acces a PORTB , PORTB,0=0)
    RW=0 (PORTB,1=0)
    EN= 0 (PORTB,2=0)

    ->Masquer les interuption du timer -> TOIE = 0
    TOIF=0

    Apres le sous programme busy
    Puis Wrcmd (commande)

    La fonction set

    et le sous programme d'écriture de donnée

    Puis envoyer une lettre ou un mot

  11. #8
    invite_P89
    Invité

    Re : LCD hd44780

    Lu
    Pour écrire sur un LCD a partir d'un PIC il faut:

    Configurer le PIC:

    4 ou 8bits pour les données en SORTIE dans exemple mode 8 bits SUR PORT B
    1 bit RW mais dans exemple on ne fait que de l'écriture donc RW toujours=0
    I bit RS en ENTREE dans exemple RS_LCD SUR PORT D
    1 bit E enable en ENTREE dans exemple E_LCD SUR PORTD
    je n'ai pas fait l'init des ports à toi de le faire.

    Puis faire l'init du LCD

    exemple config d'un LCD

    Code:
    	;*********************** Initialisation de l'afficheur **************
    
    					 				    ;Pour stabilité du LCD
    			CALL 	TEMPO25				;attente 25ms environ 
    										;apres boot du LCD
    				
    			BCF		RS_LCD				;lcd en mode commande
    
    			MOVLW	B'00110011'			;8bits
    			CALL	PULSE				;validation
    
    			MOVLW	B'00110011'			;8bits
    			CALL	PULSE				;validation
    
    			MOVLW	B'00110011'			;8bits
    			CALL	PULSE				;validation
    
    			MOVLW	B'00111000'			;8bits,2 ligne 5x7
    			CALL	PULSE				;validation
    			
    			MOVLW	B'00001100'			;affichage en fonction,pas de curseur
    			CALL	PULSE				;validation
    			
    			MOVLW	B'00000100'			;déplacement vers la droite
    			CALL	PULSE				;validation
    
    			CALL	AFFIVAR				;on affiche A sur 1er ligne à gauche
    			
    SUITE 
    
    ;*********************** Validation Enable **************************
    
    PULSE		MOVWF	PORTB			;w=PORT B
    			BSF		E_LCD			;on active la broche enable
    			CALL	TEMPO			;puis tempo de 100µs
    			BCF		E_LCD			;on désactive broche enable
    			CALL	TEMPO			;puis tempo de 100µs
    			RETURN
    ;**********************************************************************************
    
    AFFIVAR		BCF		RS_LCD	    		;LCD en mode commande
    
    			MOVLW	B'00000001'			;efface LCD curseur haut à gauche
    			CALL	PULSE				;validation
    
    			CALL	TEMPO17				;1,7ms pour stabilité du LCD
    
    			BSF		RS_LCD	    		;LCD en mode donnée
    
    			MOVLW	'A'
    			CALL 	PULSE				;validation
    			RETURN

    à bientôt

Sur le même thème :

Discussions similaires

  1. [Brun] Lcd Benq Alimentation d'un ecran LCD!!! [résolu]
    Par acidburn62 dans le forum Dépannage
    Réponses: 19
    Dernier message: 17/06/2008, 14h25
  2. Hd44780
    Par jim@ dans le forum Électronique
    Réponses: 1
    Dernier message: 10/05/2007, 12h29
  3. lcd HD44780 4x20
    Par sdow dans le forum Électronique
    Réponses: 11
    Dernier message: 27/11/2006, 10h50
  4. Connection PIC18f452 & HD44780
    Par error2 dans le forum Électronique
    Réponses: 1
    Dernier message: 02/06/2006, 16h11
  5. LCD HD44780 ---> programme C
    Par Bullrap dans le forum Électronique
    Réponses: 3
    Dernier message: 16/02/2005, 14h24