Programmation des microcontroleurs pic

lagrangienci Messages postés 9 Statut Membre -  
 amy -
Bonjour,

j'aimairais savoir comment programmer les microcontroleur pic et quel langage de programmation doit il maitriser pour y arriver. S'il vous plait aider moi car je suis sur un projet de creation du'un circuit pour commander un afficheur 2*16 avec un microcontroleur pic.
Configuration: Windows XP
Firefox 2.0.0.20

15 réponses

  1. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    Le code d'un microcontrolleur est different suivant l'utilisation que tu en fais....c'est un exemple qui te serviras pas mais ca te donnera peut-etre une idée....(surtout qu'il manque plein de chose et que ce code ne fais pas grand chose...)
    #include "common.h"
    #include "apptimer.h"
    #include "appuart.h"
    
    uchar Top10Hz;
    uchar Top5Hz;
    uchar Top2Hz;
    uchar Top1Hz;
    _FWDT(WDT_OFF)
    _FGS(CODE_PROT_OFF)
    _FOSC(CSW_FSCM_OFF & XT_PLL16)
    _FBORPOR(MCLR_EN & PBOR_OFF & PWRT_OFF)
    int main(void)
    {
    	// Fonctionnement avec les IT Alternatives
    	INTCON2bits.ALTIVT = 1;
    	DISICNT = 0;
    	
    
    	ADPCFG = 0xFFFF;        // All IO in digital mode
    
    	// Initialisation des LED
    	TOR_LED0_TRIS = 0;
    	TOR_LED1_TRIS = 0;
    	TOR_LED2_TRIS = 0;
    	TOR_LED0_LAT = 1;
    	TOR_LED1_LAT = 1;
    	TOR_LED2_LAT = 1;
    	//init timer 5Hz,10Hz,1000Hz
    	Init_Timer1();
    	Init_Timer2();
    	Init_Timer3();
    	//init uart
    	UART2_Init(1);
    	UART1_Init(1);
    	UART2putc(0x7F);
    	
    	for(;;)
    	{
    		UART2putc(0x7F);
    		UART1putc(0x7F);
    		int i;
    		for(i;i>10000;i++)
    		{
    		}
    	 }
    	return 1;
    }
    
    // callback function on delay wiating
    void callback_delay( void )
    {
    }
    
    // callback function on 1Hz timer
    void callback_1Hz( void )
    {
    	Top1Hz++;
    }
    
    // callback function on 2Hz timer
    void callback_2Hz( void )
    {
    	Top2Hz++;
    }
    
    // callback function on 5Hz timer
    void callback_5Hz( void )
    {
    	Top5Hz++;
    }
    
    // callback function on 10Hz timer
    void callback_10Hz( void )
    {
    	Top10Hz++;
    }
    

    Pour l'afficheur, tu peux regarder là:
    https://www.aurel32.net/elec/lcd.php (tu aura toutes les commandes pour faire ce que tu veux avec un afficheur LCD
    Pour MPLAB, tu peux faire du code en assembleur ou en C...apres faut avoir le bon compilateur pour transformer ton code, soit en C, soit en assembleur en code machine final!!!
    Mais tu peux coder un micro en C ou en Assembleur... cela ne depend pas de ton IDE, mais de ton compilateur!!
    Bonne soirée!!
    @+
    4
    1. lagrangienci
       
      bjr,
      je te remercie beaucoup car tu fait beucoup pour moi car ce n'est pas tout le monde qui aide comme toi que DIEU te benisse et te garde jalousement et que sa grace abondent ta vie continuellement.

      jè encors des preoccupation il è dit que chaque constructeur as son langage pour programmer son microcontroleur. à cet effet j'aimerai savoir le jeu d'instruction de l'assembleur qu'il faut pour programmer le microcontroleur 16f877. et de plus il y'a une chose que je ne comprend les microcontroleurs ont ils en leur seins une horloge pour cadencer les instruction ou bien il faut encore une horloge externe. et di moi le programme qu'on ecrit pour commandé les ecran lcd est techargement dans le memoire du microcontroleur ou bien l'ecran lcd aussi a sa memoire interne où il faut telecharger son programme de gestion. je comprend rien je suis un novice. peut tu m'expliquer clairement la demarche à suivre.

      je te remercie d'avance porte toi bien et bonne journée
      0
    2. lina fifa
       
      BJR
      svp mon PFE concernant microcontroleur pic 16F628A :commande d'un afficheul LCD alphanumerique par un port RS232 d'un ordinateur je ne sais pas comment faire le plan et j'ai plus de diffucultés à la programmation
      0
    3. lina fifa
       
      bjr svp j'ai besoin trop de m'aider je n'ai pas de temps svp svp svp
      et je vous remerci b1 a votre aide
      0
  2. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    Ben tu peux le faire en C ou en assembleur....(en basic aussi...ca depend du compilo que tu vas utiliser...)
    Apres, faut prendre la doc du micro et voir les registres, les ports pour les I/O etc....
    @+
    3
    1. lagrangienci
       
      bjr, merci d'avance pour la reponse cè trè gentil de ta part mais di moi
      le logiciel de developpement appelé MPLAB IDE v8 33 est utilisé pour programmer quel type de microcontroleur
      et aussi peut tu m'envoyer des cours de langage c++ dans ma boite, je vais essayer d'approfondi mieux mes connaissances
      merci d'avance
      cè trè gentil merci beaucoup bonne journée
      0
  3. marouchaa
     
    avec le c en utilisant le compilateur ccs
    2
  4. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    Il est vrai que chaque constructeur de microcontroleur a ses propres commandes assembleur... Il faut telecharger la datasheet (fiche d'information) du micro sur le site du constructeur (ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf).
    Tu y trouveras tous les registres du micro et son fonctionnement... apres pour les commande assembleur, tu les trouveras aussi dans la datasheet
    ils en leur seins une horloge pour cadencer les instruction ou bien il faut encore une horloge externe
    Tu as les deux... sur la carte mere tu as un quartz, lequel est une entrée sur le pic qui permet de le cadencer, soit tu peux avoir une horloge interne... Mais sur certain pic, tu peux choisir une autre source d'horloge si tu veux!! Certains ont même 3 ou quatre source d'horloge (interne et/ou externe), et tu peux jouer avec suivant tes besoins....(mais sur les petits micro c'est generallement une clock externe)
    di moi le programme qu'on ecrit pour commandé les ecran lcd est techargement dans le memoire du microcontroleur ou bien l'ecran lcd aussi a sa memoire interne
    L'ecran LCD est déjà doté d'un microcontroleur (je pense meme que c'est une logique cablé..mais là je voudrais pas dire de betise :-/ ) avec sa propre memoire interne. Donc toi, tu envoies, en gros, des commandes via ton pic au microcontroleur de l'afficheur qui lui , étant déjà programmé, sait ce qu'il a faire suivant la commande envoyée...
    J'espere ca pourra t'aider!!
    @+
    1
    1. lagrangienci
       
      merci beaucoup maitre pour tout ce que tu fait pour j'aimerai que tu m'assiste jusqa à la réalisation de ce projet
      je compte vraiment sur vous.
      dans votre explication vous avez parlé de carte mère je comprend rien je pense que cè moi mème je doit faire mon propre schema et comme on le sait le microcontrolleur è un un circuit qui intègre plusieurs modules. de quel carte mère vous parlez . Vous avez dire aussi que les ecarn lcd on leur memoire interne di le programme de gestion de l'ecran lcd cè où on le tranfert dans le microcontrolleur ou bien dans lecran lcd.
      Di moi au juste ce que je doit faire je comprend pas bien. on ecrit un grand programme et qu'on transfert dans le microcontrolleur ou bien bien on ecrit des petit programm qu'on transfert dans chaque composant eclaircir moi bien decu
      merci d'avance et porte toi bien
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    Ton microcontroleur principale (par exemple le 16f877) va être composé de ton code principal.
    Un "main" avec une boucle for(;;) (une boucle infinie) et les actions que celui-ci fera.Par ailleurs, les différentes actions seront du généralement aux interruptions de tes timers ou interruptions externes (reception de données sur un UART etc....)
    Par exemple tu definis des timers à 0.1ms, 10ms et 100ms (que tu crées grâce à ta source d'horloge, qui est généralement sur le cuivre, à l'extérieur du micro et qui est raccordé sur une des pattes du micro...ce qui permet de lui données la fréquence d'exécution des instructions!) et à chaque interruptions d'un timer, une ou plusieurs action peut être faite. Typiquement, rafraichissement d'un 7 segments, incrementation de compteurs, écriture sur une bus précis etc....
    C'est ton PIC qui va donc envoyer les différentes commandes à tous tes modules externes, suivant ce que tu veux faire.
    Pour l'afficheur, celui-ci a dejà une logique electronique, donc tu n'a pas à le programmer!! tu dois juste lui envoyé les bonnes commandes afin que celui-ci exécute ce que tu veux.
    Voilà.. j'espere que j'ai pu t'eclairer un peu..
    @+

    1
    1. lagrangienci
       
      bjr, je te remercie beaucoup pour ton eclaircissement. jaimerai savoir alors si le programme que je vais ecrire sera transferer dans le pic selon tes explication repond moi la dessus. et puis dans votre explication vous avez dire que je serai amené à definir les timer de 0.1ms,1ms,100ms. jaimerais savoir si cè trois quartz differents que je vè utiliser ou bien cè le même quartz qui va faire tout ce travail en fonction de la programmation. repond moi la dessus.
      et puis pourrais avoir un exemple de cablage qui prend en compte tout ce que jè besoin pour realiser mon projet. je ve dire un schema de montage complet dun lcd 2*16 caractère avec un microcontroleur pic 16f877.
      et aussi jaimerais avoir une explication sur lcd 4bits ou 8 bits.

      merci davance et bonne soirée
      0
  7. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    avec MPLAB tu peux programmer presque n'importe quel type de micro...le tout c'est d'avoir la doc du micro (que tu peux trouver sur le site du constructeur, surtout si c'est du microship, et le fichier header du micro), le compilateur pour le type de micro (que tu peux aussi télécharger) et la liaison pour lui plugger le code!!
    Apres le principe pour le fonctionnement c'est:
    init des port;
    init des variables;
    init des timers;
    init des bus si besoin (RS232, can, i2c etc...);
    mise en place des routines d'interruptions;
    et ton main avec une bonne boucle for(;;)
    J'ai pas de cours en C++, mais tu devrais en trouver sur le net, voir même, des bouts de code, chez le constructeur du micro!!
    @+
    0
    1. lagrangienci
       
      bjr je suis trè content de toi tu è un homme bien je pense bien qu'avec vous je vais apprendre beaucoup de chose. Dis moi tu n'as pas un exemple de code source de la programmation d'un microcontroleur et d'un afficheur en langage c car je veux utiliser le langage c pour mon projet. mes recherche me laisse savoir que MPLAB ES EN LANGAGE C ET NON EN ASSEMBLEUR ECLAIRCIE MOI LA DESSUS
      JE TE REMERCIE D4AVANCE PORTE TOI BIEN ET BONNE SOIREE
      0
  8. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    jaimerai savoir alors si le programme que je vais ecrire sera transferer dans le pic
    Absolument!! Il te faut de quoi transférer ton programme une fois compiler dans ton micro!!(généralement, le constructeur du micro est à même de te te le fournir!!)
    vous avez dire que je serai amené à definir les timer de 0.1ms,1ms,100ms. jaimerais savoir si cè trois quartz differents
    C'est le même quartz qui est utilisé généralement mais si tu as plusieurs quartz, ou source d'horloge, tu peux sélectionner des sources d'horloge différentes pour tes timers (ensuite voir la doc constructeur pour la config des timer)
    je ve dire un schema de montage complet dun lcd 2*16 caractère avec un microcontroleur pic 16f877
    Tu pourras peut-être trouver des exemples simples sur ce lien
    http://translate.google.com/...
    jaimerais avoir une explication sur lcd 4bits ou 8 bits
    les afficheur 4bits, reçoivent les commandes ou données sur 4 bits. Cela signifie que si tu veux transmettre un octet, tu dois le faire en deux fois...
    Par exemple tu veux transmettre 0x18 (qui est dans la variable var par exemple), sur le PortA (Port 8 bits on va dire et les données sont transmises sur les 4 bits de poids faible du PortA) tu devras faire:
    PortA&=0xF0; //init du port des 4 bits de poids faible
    PortA|=(var&0x0F); //transmition des 4 bits de poids faible; et prevoir des nops pour que l'info //soit bien transmise....
    PortA&=0xF0 ;
    PortA|=(var>>4)//transmition du bit de poids fort...; et prevoir des nops pour que l'info soit //bien transmise....
    Dans mon exemple; j'ai pris d'abord la transmition des bits de poids faible, mais il faut lire la doc pour savoir si cela est bien le cas... Ca pourrait être le contraire...
    Si c'est du 8 bits ben en un coup c'est fait!!!
    Bonne soirée!!
    @+
    0
  9. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    Petite rectification:
    (mais sur les petits micro c'est généralement une clock externe)
    c'est generalement une clock interne....j'espere que tu avais corrigé de toi même...
    @+
    0
  10. zaidou
     
    pour le logiciel c'é à base du mikroC PRO for PIC
    0
  11. fffffffffff
     
    programmation d'un pic pour la régulation de pression de deux compresseurs à piston
    0
  12. marouchaa
     
    s'il vous plait je besoin d'une reponce tout de suite
    0
  13. ZAIDOU
     
    salut,
    pour la programmation des pics c'est très simples pour le premier question tu doit indiquer et spécifier la famille de pic quel soit flash (F) ou un autre et leur référence 16 ou 10,mais pour la langage c'est C++ . Je souhaite que j'ai bien répondu à votre question. mais s'il y a une autre obstacle n'hésite pas de poser votre question.
    A bientôt,
    0
  14. amy
     
    bonjour,
    SVP, comment réaliser un oscilloscope à partir u pic 18F4550 à l'aide d'un glcd??

    merci
    0
    1. amy
       
      SVP, c'est urgeeent !
      0
  15. amy
     
    bonjour ,
    svp, comment afficher un signal electrique sur un glcd
    0