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

adc +clavier+LCD à base de PIC16F877



  1. #1
    mejdi_electronique

    Thumbs up adc +clavier+LCD à base de PIC16F877


    ------

    salut...
    tout d'abord je vous presente mon projet.
    je suis entrain de réaliser une améliorantion d'un testeur de régulateur d'alternateur de voiture.
    et cette amélioration consiste à introduire un afficheur lcd 4*20 caractère , un clavier 16 touches et un pic16f877 : donc ètre programmable.
    j'ai essayé de réaliser ça et ça marche.. mais j'ai un problème .
    moi j'utilise le porta du pic comme un convertisseur analogique/numèrique pour mesurer une tension. mais le problème dans mon programme qu'il m'affiche une valeur différent de celle que je veux .
    voici mon problème et j'espère que je trouve quelqu'un qui peut m'aider .
    c'est urgent.
    ok donc je vous donne mon programme
    le fichier hex et le schéma.
    la simulation se fait :
    1 - s'affiche un message
    2- saisir le code par le clavier (c'est un code de 2 nombres et entre 10 et 49)
    3-taper entrer (ds le schéma c'est ' = ')
    3- s'affiche les références du régulateur
    4- taper test (ds le schéma c'est ' ON/c '
    5- s'affiche la valeur de tension
    ma tension varie entre 12v et 24v et 32v selon un switch
    puis elle varie selon ces valeurs :
    si 12 elle varie de 12 à 15
    -si 24 elle varie de 24 à 28
    et le 32 ne varie pas.
    merci..
    voici la partie conversion :

    ConversionAN
    ; initialisation
    call LCD_CLEAR
    BSF STATUS, RP0 ; Bank 1 selectonnee
    MOVLW b'10000010' ; select RA0
    MOVWF ADCON1 ; as analog inputs
    BCF STATUS, RP0 ; Bank 0 selectonnee

    MOVLW b'11000001' ; Select; RC osc, Ch2
    MOVWF ADCON0 ; turn on A/D

    Convert CALL Wait100µs ; provide necessary samplig time

    BSF ADCON0, 2 ; Start new A/D conversion
    loop
    BTFSC ADCON0,2 ; A/D over ?
    GOTO loop ; no then loop

    CALL LCD_LOCATE_LINE0

    MOVF ADRESH, W
    CALL LCD_SEND_DECI ; print high bit of the result

    CALL LCD_PRINT_SPACE
    CALL LCD_PRINT_SPACE

    BSF STATUS, RP0 ; Bank 1 selectonnee
    MOVF ADRESL, W
    BCF STATUS, RP0 ; Bank 0 selectonnee
    CALL LCD_SEND_DECI ; print low bit of the result
    CALL LCD_PRINT_SPACE
    CALL LCD_PRINT_SPACE
    MOVLW "V"
    CALL LCD_SEND_CHAR
    GOTO Convert ; boucle
    LCD_SEND_DECI

    MOVWF LCD_CHAR_HEXA ; On met W sans LCD_CHAR_HEXA,

    ; Calcul des centaines

    MOVLW "0" ; On met le code ascii de 0 dans LCD_CHAR
    MOVWF LCD_CHAR ; "

    LCD_SEND_DECIMAL_100
    MOVF LCD_CHAR_HEXA, W
    ADDLW -D'100'
    BTFSS STATUS, C
    GOTO $ + 4
    INCF LCD_CHAR, F
    MOVWF LCD_CHAR_HEXA
    GOTO LCD_SEND_DECIMAL_100

    ; Affiche les centaines
    MOVF LCD_CHAR, W
    CALL LCD_SEND_CHAR

    ; Calcul des dixaines

    MOVLW "0" ; On met le code ascii de 0 dans LCD_CHAR
    MOVWF LCD_CHAR ; "

    LCD_SEND_DECIMAL_10
    MOVF LCD_CHAR_HEXA, W
    ADDLW -D'10'
    BTFSS STATUS, C
    GOTO $ + 4
    INCF LCD_CHAR, F
    MOVWF LCD_CHAR_HEXA
    GOTO LCD_SEND_DECIMAL_10

    ; Affiche les dixaines
    MOVF LCD_CHAR, W
    CALL LCD_SEND_CHAR

    MOVLW "0" ; On met le code ascii de 0 dans LCD_CHAR
    MOVWF LCD_CHAR ; "

    ; Calcul des unitees

    LCD_SEND_DECIMAL_1
    MOVF LCD_CHAR_HEXA, W
    ADDLW -D'1'
    BTFSS STATUS, C
    GOTO $ + 4
    INCF LCD_CHAR, F
    MOVWF LCD_CHAR_HEXA
    GOTO LCD_SEND_DECIMAL_1

    ; Affiche les unitees
    MOVF LCD_CHAR, W
    CALL LCD_SEND_CHAR

    ; Fini !
    RETURN
    LCD_SEND_CHAR
    MOVWF LCD_CHAR ; On met W sans LCD_CHAR

    ANDLW 0xF0 ; masquage des bit de poids faible
    ADDLW LCD_RS_VALUE ; on y ajoute LCD_RS_VALUE
    CALL LCD_SEND_NO_WAIT ; on envoit a l'afficheur


    SWAPF LCD_CHAR, W ; passage des bits de poids faibles en poids fort
    ANDLW 0xF0 ; masquage des bit de poids faible
    ADDLW LCD_RS_VALUE ; on y ajoute LCD_RS_VALUE

    CALL LCD_SEND ; on envoit a l'afficheur

    ; fini

    RETURN

    merci

    -----
    Dernière modification par HULK28 ; 17/05/2007 à 12h01.

  2. Publicité
  3. #2
    invite03481543

    Re : adc +clavier+LCD à base de PIC16F877

    Salut,

    je ne peux pas ouvrir tes Zip (fichiers non valides pour Winzip), donc je ne peux pas les valider pour l'instant.
    Teste les avant de les reposter à nouveau.


    @+

  4. #3
    mejdi_electronique

    Re : adc +clavier+LCD à base de PIC16F877

    salut mon ami .
    c'est 2 fichier sont de type hex et l'autre DSn
    donc si tu a l'ISIS tu peux ouvrir le schéma puis tu rentre le fichier hex à pic
    .
    et concernant le programme t'as pas d'aidée ?

  5. #4
    invite03481543

    Re : adc +clavier+LCD à base de PIC16F877

    Certainement mais pour pouvoir valider le Zip je dois pouvoir accéder à son contenu donc pouvoir le décompacter et accéder à l'archive qu'il contient pour vérifier qu'il n'y a pas de virus.
    Ce n'est pas ici un problème de visionner le contenu mais d'extraire l'archive.

  6. A voir en vidéo sur Futura
  7. #5
    mejdi_electronique

    Re : adc +clavier+LCD à base de PIC16F877

    tu peux l'extraire avec winrar mon ami.

  8. #6
    invite03481543

    Re : adc +clavier+LCD à base de PIC16F877

    Merci de les reposter, je les avais supprimé tout à l'heure.

  9. Publicité

Discussions similaires

  1. adc + pic16F877A+LCD
    Par mejdi_electronique dans le forum Électronique
    Réponses: 0
    Dernier message: 29/05/2007, 23h59
  2. adc à base de PIC16F877
    Par mejdi_electronique dans le forum Électronique
    Réponses: 7
    Dernier message: 21/05/2007, 19h41
  3. PWM et LCD et PIC16f877
    Par sdow dans le forum Électronique
    Réponses: 10
    Dernier message: 09/05/2007, 01h54
  4. encodeur clavier, pic16F877 et code en C !!
    Par Voltron dans le forum Électronique
    Réponses: 15
    Dernier message: 27/04/2007, 21h09
  5. clavier 16 T et ecran LCD
    Par nounoursvincent dans le forum Électronique
    Réponses: 12
    Dernier message: 24/09/2005, 19h49
Découvrez nos comparatifs produits sur l'informatique et les technologies.