Programme pour afficheur 7 segments
Fermé
venom_57
otmane ingenieur - 25 mars 2014 à 23:16
- Messages postés
- 3
- Date d'inscription
- lundi 21 avril 2008
- Statut
- Membre
- Dernière intervention
- 24 avril 2008
otmane ingenieur - 25 mars 2014 à 23:16
A voir également:
- Programme afficheur 7 segments en mikroc
- Programme pic 16f84 afficheur 7 segments pdf - Meilleures réponses
- Afficheur 7 segments pic 16f877 - Meilleures réponses
- Programme pour afficheur 7 segments - Forum - Programmation
- Fic 16f876 et 4 afficheurs 7 segments - Forum - Programmation
- PIC16F84A + 2 afficheur 7 segments - Forum - Matériel informatique
- PIC 16F84 + afficheur 7 segments - Forum - Matériel informatique
- [Assembleur] Afficheur 7 segments - Forum - Programmation
7 réponses
Salut à toi !
Il est un peu difficile, sans prendre le temps de comprendre ce qu'est censé faire ton programme, fonctionnellement.
Quelques explications serait les bienvenues.
Toutefois,
Je remarque deux choses :
#define BP2 PORTB.1
#define BP3 PORTB.2
BP doit être pour "bouton poussoir" ? donc des entrées ?
Or tu mets :
TRISB=1;
c'est a dire que tu ne configure que RB0 pour être un input :
TRISB est un octect de 8 bits, en faisant TRISB=1 cela revient a dire TRISB = 0b00000001. C'est a dire alors que PORTB.1 et PORTB.2 sont configurés en outputs et non en input ( si j'ai bien compris ton programme)?
Correction a apporter ( si BPx et FCx sont des Inputs) :
TRISB = 0b00111110
ou encore TRISB = 62
Une suggestion aussi, tu peux utiliser également une interruption sur RBIE et INTE pour que ton programme puisse automatiquement te lancer un evènement sur RB0 (pour INTE), RB4->RB7 (pour RBIE)
Il te faudrait alors configurer le registre INTCON = 0b100011000. Et traiter dans ton evèvneemnt les conditions RBIF==1 et/ou INTF==1. En pensant à la fin de ton traitement evènementiel à remettre RBIF=0 et INTF=0 avant que les futurs évènements soient pris en compte.
Il est un peu difficile, sans prendre le temps de comprendre ce qu'est censé faire ton programme, fonctionnellement.
Quelques explications serait les bienvenues.
Toutefois,
Je remarque deux choses :
#define BP2 PORTB.1
#define BP3 PORTB.2
BP doit être pour "bouton poussoir" ? donc des entrées ?
Or tu mets :
TRISB=1;
c'est a dire que tu ne configure que RB0 pour être un input :
TRISB est un octect de 8 bits, en faisant TRISB=1 cela revient a dire TRISB = 0b00000001. C'est a dire alors que PORTB.1 et PORTB.2 sont configurés en outputs et non en input ( si j'ai bien compris ton programme)?
Correction a apporter ( si BPx et FCx sont des Inputs) :
TRISB = 0b00111110
ou encore TRISB = 62
Une suggestion aussi, tu peux utiliser également une interruption sur RBIE et INTE pour que ton programme puisse automatiquement te lancer un evènement sur RB0 (pour INTE), RB4->RB7 (pour RBIE)
Il te faudrait alors configurer le registre INTCON = 0b100011000. Et traiter dans ton evèvneemnt les conditions RBIF==1 et/ou INTF==1. En pensant à la fin de ton traitement evènementiel à remettre RBIF=0 et INTF=0 avant que les futurs évènements soient pris en compte.
Bonjour,
je m'appelle youssef 22ans TS .né casa de maroc
je voudrais réalisé un un assenceur de 3 etaps a base du PIC 16F84
pour mon projet de fin etude
j'ai un probleme de programme
ce lui la mais ne fonction pas, je pouré ton aide svp
#define BP2 PORTB.1
#define BP3 PORTB.2
#define FC1 PORTB.3
#define FC2 PORTB.4
#define FC3 PORTB.5
#define sortie1 PORTA.1
#define sortie2 PORTA.2
#define sortie PORTA.3
void tempo (void)
{
int i;
for(i=0;i<5000;i++);
}
void LED (void)
{
sortie =1;
tempo();
sortie =0;
tempo();
}
void main (void)
{
int i,j,k;
TRISB=1;
TRISA.0=0;TRISA.1=0;TRISA.2=0;
if (FC2==0 || FC3==0)
{
if (BP1==0 && FC1==1)
{
sortie1=1;
i=1;
}
}
if (BP2==0 && FC2==1)
{
if (FC1==0)
{
sortie2=1;
j=1;
}
if (FC3==0)
{
sortie1=1;
j=1;
}
}
if (FC1==0 || FC2==0)
{
if (BP3==0 && FC3==1)
{
sortie2=1;
k=1;
}
}
if (FC1==0 && i==1)
{
sortie1=0;
i=0;
}
if (FC2==0 && j==1)
{
sortie2=0;
sortie1=0;
j=0;
}
if (FC3==0 && k==1)
{
sortie2=0;
k=0;
}
while (sortie1==1)
LED();
while (sortie1==0)
sortie =1;
}
envérenement: windows xp sp2, mplab v8,
je m'appelle youssef 22ans TS .né casa de maroc
je voudrais réalisé un un assenceur de 3 etaps a base du PIC 16F84
pour mon projet de fin etude
j'ai un probleme de programme
ce lui la mais ne fonction pas, je pouré ton aide svp
#define BP2 PORTB.1
#define BP3 PORTB.2
#define FC1 PORTB.3
#define FC2 PORTB.4
#define FC3 PORTB.5
#define sortie1 PORTA.1
#define sortie2 PORTA.2
#define sortie PORTA.3
void tempo (void)
{
int i;
for(i=0;i<5000;i++);
}
void LED (void)
{
sortie =1;
tempo();
sortie =0;
tempo();
}
void main (void)
{
int i,j,k;
TRISB=1;
TRISA.0=0;TRISA.1=0;TRISA.2=0;
if (FC2==0 || FC3==0)
{
if (BP1==0 && FC1==1)
{
sortie1=1;
i=1;
}
}
if (BP2==0 && FC2==1)
{
if (FC1==0)
{
sortie2=1;
j=1;
}
if (FC3==0)
{
sortie1=1;
j=1;
}
}
if (FC1==0 || FC2==0)
{
if (BP3==0 && FC3==1)
{
sortie2=1;
k=1;
}
}
if (FC1==0 && i==1)
{
sortie1=0;
i=0;
}
if (FC2==0 && j==1)
{
sortie2=0;
sortie1=0;
j=0;
}
if (FC3==0 && k==1)
{
sortie2=0;
k=0;
}
while (sortie1==1)
LED();
while (sortie1==0)
sortie =1;
}
envérenement: windows xp sp2, mplab v8,
pont
9 août 2009 à 21:36
- Messages postés
- 198
- Date d'inscription
- samedi 2 mai 2009
- Statut
- Membre
- Dernière intervention
- 16 novembre 2010
9 août 2009 à 21:36
Bonjour, dimanche 9-août 2009
Oui, il y a le 7447 qui transforme le nombre en binaire sur 4 bits en affichage 7 segments, ce n'est pas la peine de faire un programme.
pont
Oui, il y a le 7447 qui transforme le nombre en binaire sur 4 bits en affichage 7 segments, ce n'est pas la peine de faire un programme.
pont
matrix01
24 mai 2008 à 12:22
- Messages postés
- 5
- Date d'inscription
- vendredi 9 mai 2008
- Statut
- Membre
- Dernière intervention
- 7 juillet 2008
24 mai 2008 à 12:22
salut Antanael,
merci baucoup de votre consiel,
oui il y a vrement une erreur de TRISB=1; il faux écrire TRISB = 0b00111111 pour la declaration des entrées
J ai essayer mon programme,il est vraiment fonctionne
merci baucoup;
autre chose
j ai fais un programme pour clignoter une led toujour sur pic 16f84a, a l utilisation de delay, mais j ai problème de déclaration de delay.
J ai copier les fichier delay.h et delay.c dans répertoire de projet et dans répertoire de la compilateur cc5x.
le programme
void main()
{
PORTB.0=0;TRISB.0=0;
for(;;)
{
PORTB.0=1;
delay(255);
PORTB.0=0;
delay(255);
}
while(1);
erreur de la compilation
PORTB.0=1;
delay(255);
^------
Error youssef20.c 8: Symbol 'delay' is undefined
(The definition of the symbol in not known. This can be due to
wrong spelling or letter case mismatch. Otherwise a new symbol
definition is required: variable, function, macro, etc.)
PORTB.0=0;
delay(255);
^------
Error youssef20.c 10: Illegal operation
(The code contains an undefined or unsupported operation)
merci baucoup de votre consiel,
oui il y a vrement une erreur de TRISB=1; il faux écrire TRISB = 0b00111111 pour la declaration des entrées
J ai essayer mon programme,il est vraiment fonctionne
merci baucoup;
autre chose
j ai fais un programme pour clignoter une led toujour sur pic 16f84a, a l utilisation de delay, mais j ai problème de déclaration de delay.
J ai copier les fichier delay.h et delay.c dans répertoire de projet et dans répertoire de la compilateur cc5x.
le programme
void main()
{
PORTB.0=0;TRISB.0=0;
for(;;)
{
PORTB.0=1;
delay(255);
PORTB.0=0;
delay(255);
}
while(1);
erreur de la compilation
PORTB.0=1;
delay(255);
^------
Error youssef20.c 8: Symbol 'delay' is undefined
(The definition of the symbol in not known. This can be due to
wrong spelling or letter case mismatch. Otherwise a new symbol
definition is required: variable, function, macro, etc.)
PORTB.0=0;
delay(255);
^------
Error youssef20.c 10: Illegal operation
(The code contains an undefined or unsupported operation)
tchoubaka
6 juin 2010 à 21:39
- Messages postés
- 58
- Date d'inscription
- samedi 7 février 2009
- Statut
- Membre
- Dernière intervention
- 11 avril 2015
6 juin 2010 à 21:39
la syntaxe delay_ms ne marche pas. il faut juste mettre les instructions des valeurs que tu veux afficher sur l'afficheur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tchoubaka
6 juin 2010 à 21:37
- Messages postés
- 58
- Date d'inscription
- samedi 7 février 2009
- Statut
- Membre
- Dernière intervention
- 11 avril 2015
6 juin 2010 à 21:37
salut, pour gérer un afficheur 7 segments, il faut écrire un programme. en version C c'est plus facile avec le logiciel MIKRO C
tu veux le faire directement depuis un port série, ou via un petit montage électronique éventuellement relié au pc, en utilisant un microcontroleur ??
dans le deuxième cas, tu peux très bien programmer des microcontroleurs PIC 16F628A, par exemple, via PIC Simulator IDE (www.oshonsoft.com) qui intègre en natif un wrapper pour les afficheur leds 7 segments, jusqu'à 4 digits. Toutefois tu seras obligé d'investir un peu dans l'electronique, en particulier pour un programmateur de microcontrôleur PIC (voir Ebay : JDM PIC Programmer USB pour moins de 20 roros).
tcho
dans le deuxième cas, tu peux très bien programmer des microcontroleurs PIC 16F628A, par exemple, via PIC Simulator IDE (www.oshonsoft.com) qui intègre en natif un wrapper pour les afficheur leds 7 segments, jusqu'à 4 digits. Toutefois tu seras obligé d'investir un peu dans l'electronique, en particulier pour un programmateur de microcontrôleur PIC (voir Ebay : JDM PIC Programmer USB pour moins de 20 roros).
tcho
tchoubaka
6 oct. 2011 à 09:44
- Messages postés
- 58
- Date d'inscription
- samedi 7 février 2009
- Statut
- Membre
- Dernière intervention
- 11 avril 2015
6 oct. 2011 à 09:44
bonjour, ca depend de ce que tu veux faire avec.
veux-tu l-utiliser dans une carte geree par microcontroleur, ou bien dans un simple montage electronique. soit un peu plus explicite.
veux-tu l-utiliser dans une carte geree par microcontroleur, ou bien dans un simple montage electronique. soit un peu plus explicite.