Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic
Discussion fermée
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 55

Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic



  1. #1
    invite466af31c

    Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic


    ------

    Bonjour, précédemment j'avais crée un C.A.N. (Convertisseur analogique-numérique) (voir pièces jointes) afin que le signal généré par un capteur électromagnétique situé sur la roue arrière du Scoot Elec' (voir pièces jointe) devienne numérique car normalement il est analogique (voir pièces jointe) et ainsi selon quelques sources, la programmation du PIC16F877A (EasyPIC 4) sous MikroBasic serait plus facile.

    Donc venons-en au programme. Je dois faire un programme qui affiche la vitesse du Scoot Elec' en km/h sur les deux afficheurs B.C.D. à 7 segments (voir pièce jointe), or je pense que le PIC16F877A (EasyPIC 4) doit lire les fréquence, ou bien la période ou la durée de niveau haut ou quelque chose de ce genre (alpha = T(on) / T) ... Si par un procédé, il lit ou bien les fréquences ou les période... On pourrait intégrer un calcul qui est le suivant :

    V (km/h) = k * f Avec : k à peu près égal à 0,17
    et : f la fréquence du signal numérique

    Car d'après des informations la vitesse de la roue arrière du Scoot Elec' s'expriment en fonction de k et de f (voir pièce jointe).

    Mais il faudrait aussi programmé l'affichage de la vitesse de la roue arrière du Scoot Elec' sur les deux afficheurs B.C.D. à 7 segments.

    Or le gros problème est que je n'ai jamais programmé de ma vie, et on m'a passer deux programmes crée sous MikroBasic :

    Code PHP:
    programVitesseScootEleceenKm/h

    dimcptasbyte
    dima
    ,basbyte

    optionreg
    =%10111000
    trisb
    =0
    portb
    =0


    debut
    :
    tmr0=0
    delay_ms
    (162)
    a=tmr0
    b
    =T0CKI*(1404/25)
    c=dec2bcd(b)

    gotodebut

    end
    .

    et:

    programaffichagevitessescootelec

    dimcptasbyte
    dima
    ,basbyte
    main
    :

    option_reg=%10111000
    trisb
    =0
    portb
    =0


    debut
    :
    tmr0=0
    delay_ms
    (162)
    a=tmr0
    b
    =dec2bcd(a)
    portb=b

    gotodebut

    end

    Je n'ai pas compris un seul mot, mais bon... Je vais quand même essayer.

    Je pense que sur ce programme il fait allumer des valeurs hexadécimal sur les deux afficheurs B.C.D. à 7 segments en fonction de la fréquence reçu par le PIC16F877A (EasyPIC 4) et que " option_reg " c'est pour relever les fréquences, mais sinon je ne comprend pas quel est le procédé.

    Vous pourrez voir en pièce jointes toutes les informations nécessaire (Circuit général pour tout les branchements ect, les signaux, le capteur, des mesures expérimentaux...).

    Merci et aidez-moi S.V.P., par pitié


    -----

  2. #2
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Mais il y a un autre problème, k est approximative ce qui donnera pas vraiment une vitesse exacte. 42,5 km/h au lieu de 45 km/h.

    Il y a aussi un autre moyen, sachant que lorsque la roue arrière du Scoot Elec' fais un tour, cela équivaut à 8 périodes du signal numérique soit 8 carrés, on pourrait donc essayer d'y faire quelque chose avec cela.

  3. #3
    invite7a49d0d5

    Cool Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Bonsoir,

    je te suggère 2 méthodes parmi d'autres :

    1/
    compter les impulsions en provenance du capteur pendant un fenêtre de temps, exemple 1 seconde... delà avec le nombre d'impulsion/seconde et le diamètre de la roue, t'as la vitesse en km/h avec un petit calcul...

    2/
    compter le temps entre 2 impulsions...ou 8... idem, ce temps permettra de déduire la vitesse...

    après...

    pour "saisir" les impulsions avec un PIC, une méthode éprouvée est l'utilisation de la broche INT RB0, ou bien de l'entrée d'un Timer...

    pour définir une fenêtre de 1s, ou "compter" le temps, une méthode éprouvée est l'utilisation d'un des Timer du pic...

    pour finir il est courant d'utiliser le principe des interruptions dans ce style de projet...

    vede
    ;O]
    ___________________
    ...

  4. #4
    invite7a49d0d5

    Cool Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    ps :

    et enfin, si tu n'as jamais programmé, je te suggère de commencer par réussir à faire clignoter une led (afin d'assimiler quelques principes de base), ce qui, une fois fonctionnel, te servira de base pour ton programme final...
    et pour info, l'aide de MikroBasic (menu Help) est assez intéressante (docs, exemples...)...

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

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    C'est en anglais, c'est trop dur, ca prendra un mois.

  7. #6
    invite7a49d0d5

    Cool Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    re ;O]

    pourquoi t'es pressé? sinon payes quelqu'un pour le faire...
    (parce qu'ici on va pas te le faire, c'est un forum d'entraide,
    on aide, mais on fait pas les programmes à la demande...)...
    et parce que en un mois, même avec une doc en français,
    tu seras loin de maîtriser les pics au point de pouvoir réaliser
    ton programme les yoeux fermés... à moins de t'y mettre...

    sinon c'est dans quel cadre? études?
    si oui, comment tu te retrouves avec un programme à faire sans avoir étudié la programmation?

    vede
    ;O]
    ___________________
    ...

  8. #7
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    C'est comme ça les sciences de l'ingénieur, le prof il te passe et débrouille-toi, le seul cour qu'on a fait... Non le seul cour qui nous a passé c'est sur les algorigrammes sinon rien.
    En fait c'est pour mon P.P.E. .

  9. #8
    invite7a49d0d5

    Cool Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    rere ;O]

    ah ces profs alors... payés pour photocopier les cours de l'ANnée précédente ;O]
    enfin toi t'as eu de la chance, tu l'a croisé une fois, au moins... ;O]

    mais sinon qu'est ce qui t'as pris de choisir MikroBasic?
    si tu as des notions en programmation "algorythmique",
    utilises plutôt FlowCode (c'est à la mode) pour générer le code...

    et sans l'anglais, c'est clair que tu vas avoir du mal
    à progresser dans ce secteur (électronique numérique)...
    au fait, ingénieur de quoi???

  10. #9
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    En fait, j'utilise MikroBasic car ils ont que ça là-bas, et ils n'aiment pas quand on utilise un autre truc, et au fait je fais S.I. Électronique et Mécanique.

  11. #10
    invite7a49d0d5

    Cool Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    ben font chier là bas...
    zont qu'à se le coder eux-mêmes leur p....g de programme en MikroBasic ;O]
    plus sérieusement... ben t'es pas rendu...

  12. #11
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Quand je met ce programme sous ISIS Proteus dans le PIC16F877A :

    Code PHP:
    program cpteur

    dim cpt 
    as byte
    dim a
    as byte
    main
    :

    option_reg=%10111000
    trisb
    =0
    portb
    =0

    debut
    :
    tmr0=0
    delay_ms
    (1000)
    a=tmr0
    b
    =dec2bcd(a)
    portb=b
    'delay_ms(500)
    '
    portb=0

    goto debut

    end

    Il y a des valeurs hexadécimal qui s'affiche sur les deux afficheurs B.C.D. à 7 segments et elle varie en fonction de la fréquence reçu par le PIC16F877A.

    Sinon comment on fait pour créer un programme sous MikroBasic, parce que moi lorsque je le crée, je fais " New Unit " et quand je finis et que je l'enregistre, il n'est que sous l'extension .mbas, alors que je voudrais qu'il soit sous toutes les extensions .asm, .dbg, .dlt, .hex, .pbas, .pbp, j'ai aussi essayé de modifier un programme (.pbas) qui avait toutes ces extensions, mais le fichier .hex ne change pas (le fichier .hex est important car c'est le seul langage connu par le PIC16F877A sous ISIS Proteus afin de tester si le programme fonctionne).

    Peut-être que c'est la version Pro de MikroBasic qui fait ça.


  13. #12
    invite7a49d0d5

    Cool Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Bonjour,

    vas dans le menu Projet, cliques sur "Build", et ça va te générer les fichiers (asm, hex...)

    vede
    ;O]
    ____________________
    ...

    ps : ben t'as bien avancé...
    ajoutes ADCON1 =7 avant la ligne TRISB=0
    afin de désactiver le convertisseur analogique...

    .

  14. #13
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Merci ! C'est ça que j'attends que tu me dise à quoi servent toutes ces fonctions (trisB,A tmr portA,B option_reg...)

  15. #14
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Ah oui j'avais oublié de te dire que j'avais déjà essayé de faire build mais le problème est que lorsque je cliques dessus, ça m'affiche un truc genre no cfg file

  16. #15
    invite7a49d0d5

    Cool Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    re ;O]

    faut aller dans Projet > Edit
    là tu choisis le PIC...
    et configures les fusibles...
    c'est quoi ton horloge? un quartz?
    si oui faut renseigner "oscilateur" = HS, et sa vitesse...
    et mettre tous les autres fusibles (WDT, MCLR, LVP, BOR...) sur OFF...

    télécharges la datasheet :
    http://ww1.microchip.com/downloads/e...doc/39582b.pdf

    et jette un oeil à ça :
    http://www.didel.com/pic/Prog877.pdf

    et ça :
    http://www.abcelectronique.com/bigonoff/index.php

    et ça :
    http://pagesperso-orange.fr/fabrice....ic_accueil.htm

    vede
    ;O]
    ____________________
    ...

    ps : et l'aide de MikroBasic...

  17. #16
    inviteebca4749

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Salut ,
    stp aide moi je veux un programme Horloge et calendrier numérique avec pic PCF 8574A en langage C sur LCD affaicheur
    c'est urgent
    et merci

  18. #17
    invite7a49d0d5

    Cool Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Citation Envoyé par yassine_ii Voir le message
    Salut ,
    stp aide moi je veux un programme Horloge et calendrier numérique avec pic PCF 8574A en langage C sur LCD affaicheur
    c'est urgent
    et merci
    Salut,

    postes là :
    http://www.abcelectronique.com/emplois/offres_ajout.php

    delà si la rémunération proposée me convient je répondrais peut-être à l'annonce...

    vede
    ;O]
    ____________________
    ...

  19. #18
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    C'est bon j'ai réussi, il fallait exécuter MikroBasic en tant qu'administrateur, maintenant tout fonctionne.

  20. #19
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    A l'aide S.V.P., j'ai lu ça :

    http://ww1.microchip.com/downloads/e...doc/39582b.pdf

    Code PHP:
    program cpteur

    dim cpt 
    as byte
    dim a
    as byte

    main
    :
    option_reg=%10111000
    adcon1
    =7
    trisb
    =0
    portb
    =0

    debut
    :
    tmr0=0
    delay_ms
    (1000)
    a=tmr0
    b
    =dec2bcd(a)
    portb=b
    'delay_ms(500)
    '
    portb=0

    goto debut

    end

    et j'ai compris ça :

    dim cpt as byte
    dim a, b as byte ( c'est pour considérer cpt ?, a et b comme des bits )

    option_reg=%10110000 (c'est pour relevé la fréquence mais où ? et pourquoi, il y a une valeur binaires a coté ? )

    adcon1=7 ( c'est pour désactiver le convertisseur analogique, car on a déjà un signal numérique, mais pourquoi pas adcon1 = 6 ? car c'est sur ce numéro de port 6 (RA4/T0CKI/C1OUT) que le PIC reçoit le signal)

    trisb=0 (aucune idée ?? Je pense c'est pour laisser passer le courant )

    portb=0 (je crois que c'est pour activer les port qui sont reliés aux deux afficheurs B.C.D. à 7 segments (RB0/INT, RB1, RB2 ...)

    tmr0=0 ( c'est peut-être pour activer le timer (compteur), mais pour compter quoi et comment par quel procédé ? )

    a=tmr0
    b=dec2bcd(a)
    portb=b

    (????... Peut-être que ces bits cachent un nombre pour activer ces fonction ????? )

    goto debut (c'est pour que ce programme ne s'arrête jamais à part si l'utilisateur l'arrête).

    S.V.P. ayez pitié.

  21. #20
    invite7a49d0d5

    Cool Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    re ;O]
    là tu vas trop vite...
    Citation Envoyé par Robert_Werlick Voir le message
    (...)
    Il y a des valeurs hexadécimal qui s'affiche sur les deux afficheurs B.C.D. à 7 segments et elle varie en fonction de la fréquence reçu par le PIC16F877A.
    (...)
    d'où que c'est qu'elle sort cette fréquence réglable? comment c'est câblé?
    et quelle est l'horloge principale du PIC?

    pour OPTION_REG, jettes un oeil à la section 2.2.2 (Memory > Data...)...
    pour le TMR0, c'est détaillé dans la section 5...(Timer0 Module)...
    pour ADCON, c'est dans la section 11... (Analog to Digital...)...
    dans la datasheet...

    vede
    ;O]
    ______________
    ...

  22. #21
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Maintenant je voudrais mettre RA4/T0CKI/C1OUT en entrée, alors je fais : TRISA=%11111111 (Ça met tout le PORTA en entrée) mais le problème est que sur le PORTA il n'y a que 6 entrée/sorties (pour 8 bits), de plus je ne sais pas dans quels sens se font les "1" et "0", c'est-à-dire si :

    PORTA :

    0
    0
    RA0/AN0 1
    RA1/AN1 1
    RA2/AN2/VREF- 1
    RA3/AN3/VREF+ 1
    RA4/TOCKI 1
    RA5/AN4/SS\ 1

    Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
    0-----0---1---1---1---1---1----1

    Ou bien :

    PORTA :

    0
    0
    RA0/AN0 1
    RA1/AN1 1
    RA2/AN2/VREF- 1
    RA3/AN3/VREF+ 1
    RA4/TOCKI 1
    RA5/AN4/SS\ 1

    Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
    1-----1---1---1---1---1---0----0

    Comment faire, on a 8 bits pour 6 entrées/sorties, est-ce que je mets n'importe quels valeurs pour les 2 entrés/sorties. Où bien j'écris tout simplement en 6 bits, mais dans quels sens, du haut vers le bas ou bien du haut vers le bas ...

  23. #22
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Ah j'ai compris, quand on dit PORTA=a, ca veut dire que RA4 va recevoir une variable qui est une valeur car on avait mis "a" comme variable en bits (de 0 à 255) tout au début du programme, mais cette valeur, est-ce une fréquence, une durée de niveau, une période ?

  24. #23
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Sinon, comment on fait pour activer le convertisseur analogique-numérique du PIC16F877A, c'est :

    ADCON1=?

  25. #24
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Je crois que ça marche, j'ai même intégré la constante k :

    program Vitesse

    DIM cpt AS BYTE
    DIM a, b AS BYTE
    CONST k AS FLOAT=40.3

    main:
    OPTION_REG=%10111000
    TRISA=%111111
    TRISB=%00000000
    PORTA=a

    debut:
    tmr0=0
    delay_ms(1000)
    a=tmr0
    b=dec2bcd(a)
    PORTB=k*a
    'delay_ms(500)
    'portb=0

    goto debut

  26. #25
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    je me suis trompé k=0.17, ainsi :

    program Vitesse

    DIM cpt AS BYTE
    DIM a, b AS BYTE
    CONST k AS FLOAT=0.17

    main:
    OPTION_REG=%10111000
    TRISA=%111111
    TRISB=%00000000
    PORTA=a

    debut:
    tmr0=0
    delay_ms(1000)
    a=tmr0
    b=dec2bcd(a)
    PORTB=k*a
    'delay_ms(500)
    'portb=0

    goto debut

    end.

    Mais le problème c'est que ca m'affiche en hexadécimal, donc il faut que j'intègre un convertisseur hexadécimal-décimal (numérique).

  27. #26
    invite7a49d0d5

    Cool Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Hi,

    moi tu sais, si tu ne réponds même pas à mes quelques questions
    (cf mon précédent post), ben je laisse béton... mais amuses-toi bien...

    vede
    ;O]
    ___________________
    ...

  28. #27
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Excuse-moi, je pensais que c'était des questions genre pour m'aider, mais voici les réponses à tes questions :

    La fréquence réglable sort du capteur magnétoélectrique de la roue arrière du Scoot Elec', plus la roue va vite plus la période diminue et la tension augmente du capteur magnétoélectrique, tu peux voir en pièce jointe l'intégralité du circuit avec le signal de cette fréquence en vert puis qui se transforme en numérique après le C.A.N. en rouge puis ce signal va sur le PORTA (RA4/T0CKI/C1OUT) et subit un programme puis part sur les LEDs via le PORTB

    Et pour l'horloge du PIC, je pense que c'est à nous de la choisir valeur et elle dépend de ce que tu veux faire, par exemple moi maintenant je veux activer le convertisseur analogique numérique, plus lire la fréquence, la multiplié par 0,17 et l'affiché sur les deux afficheurs B.C.D. à 7 segments.
    Images attachées Images attachées  

  29. #28
    invite7a49d0d5

    Cool Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Bonjour,

    merci pour les infos et le schéma ;O]

    bon ça avance mais :

    - la ligne PortA = a , ben elle ne sert à rien : à virer...
    - rajouter ADCON1 = 7 avant les TRIS... (=ADC OFF)
    - utilises les balises (CODE) code (/CODE) pour poster ton code, ça sera plus clair...
    (remplacer les ( ) par des [ ] )

    - et moi je ferais plutôt :
    Code:
    debut:
      tmr0 = 0
      delay_ms(1000)
      a = tmr0
      a = k * a    '// la multiplication avant le "décodage"...???
      a = dec2bcd(a)
      PORTB = a
    -pour l'affichage (déc, hex...) faudrait déjà savoir précisément comment
    sont câblés(multiplexage?) tes 2 afficheurs pour pouvoir t'en dire plus...

    vede
    ;O]
    _________________
    ...

  30. #29
    invite7a49d0d5

    Cool Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    ps :
    ... ou plus "simplement" ;O]
    Code:
    debut:
      tmr0 = 0
      delay_ms(1000)
      PortB = dec2bcd(tmr0 * k)
      goto debut

  31. #30
    invite466af31c

    Re : Programmation du PIC16F877A (EasyPIC 4) sous MikroBasic

    Un très GROS MERCI, y a un autre truc je ne sais pas comment mais peut-être quand tu as enlevé chaque variable bits et quand j'ai enlevé adcon1=7, les valeurs sur les deux afficheurs B.C.D. à 7 segments se sont affichées en décimal.

    Code:
    Program Vitesse
    
    Const K As Float = 0.17
    
    Menu:
     Option_Reg = %10111000
     TrisB = 0
     
    Debut:
     Tmr0 = 0
     Delay_ms(1000)
     PortB = Dec2BCD(Tmr0 * K)
    
    Goto Debut
    
    End.

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. programmation sous R
    Par invitefca55c10 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 11/05/2008, 16h07
  2. Programmation en C sous windows xp
    Par invite0ff12b77 dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 09/10/2007, 18h02
  3. afficheur avec PIC le tout sous mikrobasic !
    Par LTHOMAS dans le forum Électronique
    Réponses: 5
    Dernier message: 09/11/2006, 19h19
  4. Pb de programmation sous Word
    Par invite2ac350bd dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 25/04/2006, 18h20
  5. programmation C sous Linux
    Par invitefad81a05 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 06/04/2006, 19h51
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...