7 Segment MUX interface avec un 8-bit micro-controlleur (PIC16F877A)
By Bernice Zuiya
Code and Comment
Avec l'affichage à sept segments, nous avons combiné différents segments pour afficher un nombre hexadécimal à la fois et en fonction de la configuration lors de l'utilisation d'un micro-contrôleur, comme dans notre cas les sept segments seront pilotés par un microcontrôleur.
Vous aurez besoin d'ajouter la directive lignes pour l'affichage LCD, Ce code a été écrit à l'aide du logiciel de compilateur mikroC, vous pouvez le copier et le compiler ou de le modifier ainsi, projet de compteur de gamme ultrasons.
Download the full project here
/* 7 segment OSat shield, connections
RB7>A , RB6>B , RB5>C , RB4>D , RB3>E , RB2>F , RB1>G
The MUX select line is connected on port PORTC (RC 0-3 )
BY Bernice Zuiya */
int array_[5];
int Display_( int stt1 ) {
static unsigned int i;
switch(stt1){
case 0:
PORTB =0X03; // display <0>
break;
case 1:
PORTB =0X9F; // display <1>
break;
case 2:
PORTB =0X25; // display <2>
break;
case 3:
PORTB =0X0D; // display <3>
break;
case 4:
PORTB =0X99; // display <4>
break;
case 5:
PORTB =0X49; // display <5>
break;
case 6:
PORTB =0X41; // ddisplay <6>
break;
case 7:
PORTB =0X1F; // display <7>
break;
case 8:
PORTB =0X01; // display <8>
break;
case 9:
PORTB =0X09; // display <9>
break;
}
}
int _7S_Write_Number(int stt1){
unsigned int j;
static int num_=0;
array_[0] = stt1 / 1000; // first digit to display
array_[1] = stt1 % 1000;
array_[2] = array_[1] / 100; // second digit to display
array_[3] = array_[1] % 100;
array_[4] = array_[3] / 10; // third digit to display
array_[5] = array_[3] % 10; // fourth digit to display
Delay_ms(1);
for(j = 0 ; j <= 8 ;){
if( j == 1){PORTC = 0x01 ;Delay_ms(7);
//num_ = num_ + 1;
Delay_ms(1);
}else{
if (j % 2 == 0){
if(j == 6){}
else{
PORTC = j ;Delay_ms(2);
num_ = num_ + 1;
switch(num_){
case 1:
Display_(array_[5]);
break;
case 2:
Display_(array_[4]);
break;
case 3:
Display_(array_[2]);
break;
case 4:
Display_(array_[0]);
break;
} // end switch statement
Delay_ms(1);
}
}
}
if (num_ == 4){num_ = 0;}
j++;
} //end for(j = 0 ; j <= 8 ;)
} // end int _7S_Write_Number(int stt1)
void main(void){
int aa=0;
TRISC=0X00;
PORTC=0X00;
TRISB=0X00;
PORTB=0X00;
for(;;){
aa=111;
_7S_Write_Number(aa);
}// End for(;;) loop
} // end main function
WORKING :
Le fonctionnement de ce multiplex de sept segments est que tous les terminaux de l'affichage à sept segments sont connectés comme indiqué dans le diagramme ci-dessus pour afficher des caractères hexadécimaux, et ici les sept segments (a, b, c, d, e, f Et g) sont tous connectés à PORTB du microcontrôleur; La ligne de sélection qui est utilisée pour sélectionner l'affichage à utiliser est prise de PORTC se référer au code ci-dessous. Toutes les lignes de sélection sont connectées avec une résistance de 10k Ohm en série connectée à la base du transistor respectif (BC547), 300 ohm de résistance sont utilisés en série avec chaque segment de l'affichage pour limiter le courant. Dans le cas où vous utilisez notre écran à 7 segments, vous n'aurez probablement pas de problème parce que la connexion est mentionnée, ce que vous avez à faire est de suivre les étapes et de connecter le circuit selon le schéma ci-dessus.
Le premier test de ce 7 segments MUX ici sera d'afficher un nombre entier sera 3 chiffres et enfin nous allons faire un compteur ou peut-être le code sera donné à la fin; Le circuit fonctionne avec un cristal de 20 MHz
Circuit Diagram
L'affichage à 7 segments est l'un des composants électroniques les plus utilisés pour afficher les caractères hexadécimaux 16 caractères (0 à 9 et A à F). Ils sont fondamentalement de type 2, anode commune et cathode commune, ils ont généralement 10 broches où 2 broches sont communs, 1 est utilisé pour le nombre décimal et enfin 7 broches qui sont utilisés pour afficher des caractères hexadécimaux en combinant différents segments de l'affichage qui sont Essentiellement l'ensemble de LED. La figure 1 dans le côté gauche est l'affichage de 7 segments montrant le segment de 7 bar et le point DP (pour le nombre décimal) et la figure 2 représentent une seule LED représentant un segment. La plupart des broches doivent être connectées avec une résistance de 300 Ohm en série pour limiter le flux de courant à travers la LED.
Nous venons juste de décrire l'affichage de sept segments dans les lignes ci-dessus, maintenant laisser écrire quelques lignes sur notre projet (sept segments MUX) Le mot MUX utilisé ici décrit simplement la technique de multiplexage qui va être utilisé pour conduire l'affichage de sept segments à l'aide Un microcontrôleur. Le segment sept a 7 broches utilisées pour afficher et le caractère hexadécimal à la fois, donc conduire les quatre sept segments en utilisant un micro-contrôleur; La première chose qui vient à notre esprit est que nous utiliserons 28 broches du contrôleur pour conduire l'affichage de sept segments, puis voici la solution!
La technique de multiplexage est une technique utilisée pour multiplexeur l'affichage où chaque affichage à sept segments affiche un caractère à un intervalle de temps fini (1 ms par exemple), puis à cette vitesse l'œil humain ne peut pas voir le changement d'état des LED. Mais ce que nous devons conduire ceci est d'ajouter une certaine ligne de sélection connectée également au circuit, l'affichage est fondamentalement multiplexé avec l'aide de la ligne de sélection. Ce qui signifie que lorsqu'une ligne est allumée, toutes les autres sont éteintes.