Controler un afficheur 7 segments avec le port paralelle

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 478 fois - Téléchargée 34 fois

Contenu du snippet

Cela permet d'afficher un numero entre 0 et 9 sur un afficheur 7 segments relié comme suit au port parallele:

Segment A -> Broche 2
Segment B -> Broche 3
Segment C -> Broche 4
Segment D -> Broche 5
Segment E -> Broche 6
Segment F -> Broche 7
Segment G -> Broche 8
Segment DP -> Broche 9
VCC- ou COM -> Broche 25

Ensuite lancé le programme suivant et enjoy :P

Source / Exemple :


/*	Programme permettant d'afficher des valeurs numériques
    sur un afficheur 7 segments 
  Si besoin d'alimentation 5V, utiliser la broche 1 ( alim +5V )  */

/* librairies */
#include <stdio.h> /* printf et autres */
#include <conio.h> /* fonction outp */
#include <stdlib.h> /* fonction system */
#define DATA 0x378 	/* Adresse du bus de donnees */
#define CONTROL 0x37A /* L'adresse du registre de contrôle */

void main()
{
	/* initialisation des variables */
	unsigned char done;
	unsigned char Valeur;
	unsigned char Binary;

	/* boucle du programme */
	while (!done) {

	system("cls"); /* efface l'ecran */
	printf("Entrez une valeur entre 0 et 9 pour l'afficher\n( tout autre nombre quittera le programme... ): "); /* message par défaut */
	scanf("%d",&Valeur); /* prompt */
	switch(Valeur)
	{
	case 0:
		{
			Binary = 63; /* allume les broches a,b,c,d,e,f de l'afficheur ( valeur binaire 00111111 ) */
			break;
		}
	case 1:
		{
			Binary = 6; /* allume les broches b et c de l'afficheur ( valeur binaire 00000110 ) */
			break;
		}
	case 2:
		{
			Binary = 91; /* allume les broches a,b,d,e,g de l'afficheur ( valeur binaire 01011011 ) */
			break;
		}
	case 3:
		{
			Binary = 79; /* allume les broches a,b,c,d,g de l'afficheur ( valeur binaire 01001111 ) */
			break;
		}
	case 4:
		{
			Binary = 102; /* allume les broches b,c,f,g de l'afficheur ( valeur binaire 01100110 ) */
			break;
		}
	case 5:
		{
			Binary = 109; /* allume les broches a,c,d,f,g de l'afficheur ( valeur binaire 01101101 ) */
			break;
		}
	case 6:
		{
			Binary = 125; /* allume les broches a,c,d,e,f,g de l'afficheur ( valeur binaire 01111101 ) */
			break;
		}
	case 7:
		{
			Binary = 7; /* allume les broches a,b,c de l'afficheur ( valeur binaire 00000111 ) */
			break;
		}
	case 8:
		{
			Binary = 127; /* allume les broches a,b,c,d,e,f,g de l'afficheur ( valeur binaire 01111111 ) */
			break;
		}
	case 9:
		{
			Binary = 111; /* allume les broches a,b,c,d,f,g de l'afficheur ( valeur binaire 01101111 ) */
			break;
		}
	default:
		{
			//Binary = 249; /* allume les broches a,d,e,f,g,dp de l'afficheur ( valeur binaire 11111001 ) */
			Binary = 0; /* eteint toutes les broches */
			outp(CONTROL,0x00);	/* On configure le bus de donnees en sortie */
			outp(DATA,Binary);	/* Ecriture de la valeur dans le registre de donnees */
			done = 2;           /* done != NULL donc la boucle est quitté, fermeture du programme */
			break;
		}
	}

	
	outp(CONTROL,0x00);	/* On configure le bus de donnees en sortie */
	outp(DATA,Binary);	/* Ecriture de la valeur dans le registre de donnees */

	}
		
	printf("\n\nFin du programme\n"); /* message de fin :p */
		
}

A voir également

Ajouter un commentaire

Commentaires

anaxode
Messages postés
10
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
11 février 2005
-
Salut

Mon compilateur (Borland c++ builder 6 ) accepte pas " outp" tu saurais pas par quoi on peut le remplacé ?
darkbowsee
Messages postés
6
Date d'inscription
jeudi 18 mars 2004
Statut
Membre
Dernière intervention
29 avril 2004
-
Moi aussi j'ai essayé de le compiler avec VC++6 et Dev-cpp mais aucun marche a cause de "outp". Comment il faut faire?
_ky_
Messages postés
7
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
2 septembre 2004
-
si vous utilisez un windows XP ou 2000, il y a des restrictions utilisateur qui vous empeches d'acceder aux port. Il faut utiliser une dll particuliere (inpout32.dll) ou alors des fonctions win plus relou genre CreateFile et WriteFile (jsuis pas sur des noms des fonctions)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.