Controler un afficheur 7 segments avec le port paralelle

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

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.