Programmation des microcontroleurs pic

Fermé
lagrangienci Messages postés 6 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 29 juillet 2009 - 25 juil. 2009 à 21:53
 amy - 3 avril 2012 à 19:18
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.
A voir également:

15 réponses

chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
26 juil. 2009 à 22:30
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
lagrangienci
29 juil. 2009 à 12:24
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
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
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
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
25 juil. 2009 à 22:37
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
lagrangienci
26 juil. 2009 à 14:43
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
avec le c en utilisant le compilateur ccs
2
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
29 juil. 2009 à 12:48
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
lagrangienci
29 juil. 2009 à 18:26
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
29 juil. 2009 à 18:59
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
lagrangienci
29 juil. 2009 à 21:16
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
C++
1
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
26 juil. 2009 à 21:34
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
lagrangienci
26 juil. 2009 à 21:57
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
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
29 juil. 2009 à 21:43
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
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
30 juil. 2009 à 08:06
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
pour le logiciel c'é à base du mikroC PRO for PIC
0
programmation d'un pic pour la régulation de pression de deux compresseurs à piston
0
s'il vous plait je besoin d'une reponce tout de suite
0
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
bonjour,
SVP, comment réaliser un oscilloscope à partir u pic 18F4550 à l'aide d'un glcd??

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