Julien

Dernière mise à jour le 12/03/17

Présentation


Il s’agit d’une amélioration de la programmation Tableur – C# – 001 .





En effet,en utilisant des textbox il sera possible d’écrire différentes lignes dans ce tableur et de les ajouter les unes à la suites des autres.

Programmation en C#


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Mise en mode détails
            listView1.View = System.Windows.Forms.View.Details;
            // Construction des colonnes
            // La largeur de la colonne est modifiable en changeant la valeur de (0.2) 
            listView1.Columns.Add("colonne1", (int)(0.2 * listView1.Width));
            listView1.Columns.Add("colonne2", (int)(0.2 * listView1.Width));
            listView1.Columns.Add("colonne3", (int)(0.2 * listView1.Width));
            // Ajout des lignes
            listView1.GridLines = true;

        }

        private void button2_Click(object sender, EventArgs e)
        {
            // Construction d'une ligne (1 élément + 2 colonnes supplémentaires) 
            ListViewItem lvi = new ListViewItem(textBox1.Text); // dans 1er colonne
            lvi.SubItems.Add(textBox2.Text); // dans 2ème colonne 
            lvi.SubItems.Add(textBox3.Text); // dans 3ème colonne 

            listView1.Items.Add(lvi); // Ajout des lignes 
            textBox1.Clear(); // Effacement de la textBox1
            textBox2.Clear(); // Effacement de la textBox2
            textBox3.Clear(); // Effacement de la textBox3

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox3_TextChanged(object sender, EventArgs e)
        {

        }

    }
} 
 

Protoype en vidéo


Une petite Vidéo afin de mettre en place les éléments pour le bon fonctionnement
 

Historiques


12/03/17
– Première mise à disposition

Dernière mise à jour le 12/03/17

Présentation



Nous allons voir comment réaliser un petit tableur avec des colonnes et des lignes en utilisant une “listView” (une petite vidéo afin de récupérer “listView1” sera présenté un peu plus bas).





Nous verrons ensuite qu’il est possible d’écrire dans chaque ligne du tableau en utilisant des “textBox” Pour cela je vous laisse vous rendre sur ce lien:
Tableur – C# – 002 qui est une amélioration du  tableur – C# – 001.

Programmation en C#


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }        

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Mise en mode détails
            listView1.View = System.Windows.Forms.View.Details;
            // Construction des colonnes
            // La largeur de la colonne est modifiable en changeant la valeur (0.2) 
            listView1.Columns.Add("colonne1", (int)(0.2 * listView1.Width));  
            listView1.Columns.Add("colonne2", (int)(0.2 * listView1.Width)); 
            listView1.Columns.Add("colonne3", (int)(0.2 * listView1.Width)); 
            // Ajout des lignes
            listView1.GridLines = true; 

           // Construction d'une ligne (1 élément + 2 colonnes supplémentaires) 
           ListViewItem lvi = new ListViewItem("Liste1"); // dans 1er colonne
           lvi.SubItems.Add("Liste2"); // dans 2ème colonne 
           lvi.SubItems.Add("Liste3"); // dans 3ème colonne 
           
            listView1.Items.Add(lvi); // Ajout des lignes 
        } 
    } 
} 

Protoype en vidéo


Afin que vous puissiez retrouvez la listeView une petite vidéo ne fera pas de mal!!

Historiques


12/03/17
– Première mise à disposition

Dernière mise à jour le 08/03/17

Présentation




Nous allons voir comment écrire un titre dans une boite de dialogue (fenêtre qui s’affiche au milieu d’un écran), comment mettre du texte, et pour finir comment valider. Nous verrons aussi par la suite qu’il est possible de réaliser des fenêtre d’information, ou bien d’erreur.




Il sera possible d’obtenir différentes fenêtre d’affichage si vous exploiter les lignes de codes proposés dans ce présent article

Programmation en C#


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string message = "Voulez vous fermer la fenêtre?";
            string TitreFenetre = "Titre de la fenêtre qui s'affiche ";
            MessageBoxButtons boutons = MessageBoxButtons.YesNo; // après le point il est possible de sélectionner d'autre commande de validation
            DialogResult result;
                      
            result = MessageBox.Show(message,TitreFenetre,boutons); // dans la parenthèse nous mettons 3 paramètres différents

            if (result == DialogResult.No) // après le point "." vous pouvez sélectionner d'autres critères...
            {
                MessageBox.Show("La réponse est non");
            }

            if (result == DialogResult.Yes)

            {
                 MessageBox.Show("La réponse est oui");
            }

        }
    }
}

 

Attention!! information importante



Le programme qui va suivre permettra d’afficher différents type de fenêtre (Erreur/information), à vous de voir ce que vous souhaitez ajouter avec un large choix toujours après ce point “.”

Programmation en C#


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
 {
     public partial class Form1 : Form
      {
         public Form1()
      {
        InitializeComponent();
      }

private void button1_Click(object sender, EventArgs e)
       {
   string message = "Voulez vous fermer la fenêtre?";
   string TitreFenetre = "Titre de la fenêtre qui s'affiche ";
   MessageBoxButtons boutons = MessageBoxButtons.YesNo; // après le point il est possible de sélectionner d'autre commande de validation 
   DialogResult result;


   result = MessageBox.Show(message, TitreFenetre, MessageBoxButtons.YesNo, MessageBoxIcon.Information); 
                                                                         // MessageBoxIcon suivi du point "." vous donne différents Icon
                                                                   // Information peut être modifié par Warning ou bien d'autre choses...

         if (result == DialogResult.No) // apres le point "." vous pouvez sélectionner d'autre critères...
           {
             MessageBox.Show("La réponse est non");
           }

       if (result == DialogResult.Yes)
          {
           MessageBox.Show("La réponse est oui");
          }
       }
   }
}

 

Historiques


08/03/17
– Première mise à disposition

Dernière mise à jour le 07/03/16

Présentation


Le programme présenté dans cet article permet d’afficher uniquement un message. Rien de bien compliqué, mais nous verrons qu’il est aussi possible d’écrire dans un boite de Dialogue afin de répondre à ce message.

Programmation en C#


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Electronique71.com"); // afficher le message 
        }
    }
}

Prototype en vidéo


Une petite vidéo pour mieux comprendre
 

Historiques


07/03/16
– Première mise à disposition

Présentation


Nous allons voir dans ce présent article comment activer VBA. En effet pour pouvoir écrire nos premières ligne de code dans l’environnement visual basic, il va falloir passer par des petite étapes afin d’ajouter le menu développeur dans le bandeau supérieur situé sous Excel

Menu développeur


Le menu développeur est situé dans les options de Excel

Dernière mise à jour le 07/03/17

Présentation


Le programme ci-dessous permet uniquement d’ouvrir un fichier situé n’importe où sur le disque, à condition de lui trouver le chemin. En effet il suffit simplement de récupérer le chemin du fichier et le tour est joué.




Il vous suffira de créer un petit bouton afin de pouvoir copier et coller les lignes de code. Je vous conseil au niveau du “namesspace” de garder lors de votre première création le nom que visual studio vous propose. Pour ma part il s’agit de WindowsFormsApplication1.

Programmation en C#


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
      {                                                 

          public Form1()

       {

         InitializeComponent();

       }

        private void button1_Click(object sender, EventArgs e)

         {

           System.Diagnostics.Process.Start(@”C:\Users\Julien\Desktop\Classeur1.xlsm”);// ici on ouvre un classeur Excel (attention!!! bien mettre des guillemets et de supprimer l’espace entre @ et le guillimet..

         }

     }
}


Pour utiliser le programme ci-dessus à vous de changer le chemin du fichier que vous voulez ouvrir.

Historiques


07/03/16
– Première mise à disposition

30/10/16
– [Electronique] Mise à jour Générateur à dents de scies 002
 
09/10/16
– [Microcontrôleurs] Mise à jour Tableau – Array
– [Microcontrôleurs] Mise à jour Afficheur 7 segments – CD4094 avec PIC 12F675
 
29/09/16
– [Electronique] Mise à jour Filtre sélectif 001
 
29/09/16
– [Electronique] Mise à jour Interruptions – timers
 
25/09/16
– [Electronique] Mise à jour PIC24
– [Electronique] Mise à jour Interruptions – timers
 
04/06/16
– [Electronique] Mise à jour Théories les thermistances
 
01/05/16
– [Electronique] Mise à jour Temporisateur 003
 
24/04/16
– [Electrotechnique] Mise à jour Calculs chute de tension
– [Electrotechnique] Mise à jour Calculs du courant de défaut If
– [Electrotechnique] Mise à jour Choix section des conducteurs(phase/neutre/protection électrique)
– [Electrotechnique] Mise à jour Calculs vérifications du pouvoir de coupure Pdc
– [Electrotechnique] Mise à jour Réglages disjoncteurs
 
16/04/16
– [Programmation] Mise à jour Curseur souris
– [Electrotechnique] Mise à jour Protections des moteurs
– [Electrotechnique] Mise à jour Réglages disjoncteurs
 
09/04/16
– [Programmations C#] Mise à jour Simulation clic souris 001
 
03/04/16
– [Electronique] Mise à jour Afficheur UsbHid 003
– [Programmations C#] Mise à jour Déplacer fichier dans un dossier
– [Programmations C#] Mise à jour Simulation touches clavier 001
– [Programmations C#] Mise à jour Simulation touches clavier 002
 
25/03/16
– [Programmations C#] Mise à jour Déplacer fichier dans un dossier
 
19/03/16
– [Electronique] Mise à jour Afficheur UsbHid 003
– [Programmation] Mise à jour Simulation clic souris 001
– [Programmations C#] Mise à jour Simulation touches clavier 001
– [Programmations C#] Mise à jour Simulation touches clavier 002
 
13/03/16
– [Electronique] Mise à jour Contrôleur PWM HidUsb 001
– [Electronique] Mise à jour Afficheur UsbHid 001
– [Electronique] Mise à jour Afficheur UsbHid 002

Dernière mise à jour le 30/10/2016

Présentation


implantation

Le montage électronique est une amélioration du Générateur dents de scies 001 il s’agit d’un autre générateur basé uniquement sur un NE555 sans utiliser des portes logiques. Nous allons voir comment réaliser ce montage avec seulement des composants électronique courant comme, condensateur, potentiomètre variable, diodes, transistors, une résistance, et pour finir le NE555.L’alimentation du NE555 est réalisée avec une pile de 9V, ceci est suffisant puisque le montage ne demande guère de courant. Puis en sortie le signal attendu en forme de dents attention !!

Schéma


generateur_a_dents_de_scies_002

Fonctionnement
L’alimentation positive se fait sur la broche n°8 du NE555, et pour le 0V de l’alimentation celui-ci est raccordé sur la broche n°1. Le broche n°2 (Trigger = gâchette) et la broche n°6 (Threshold = seuil) sont reliées ensemble et le seuil sera relié sur le condensateur C1.

En réalité le broche n°2 et la broche n°6 ont 2 seuils: Pour la broche n°2 (1/3 de Vcc) soit 1/3 de 9V égale à 3V, puis sur la broche n°6 (2/3 de Vcc) soit 2/3 de 9V égale à 6V. Lorsque le condensateur sera chargé à une valeur de 6V, la broche n°7 permettra de déchargé subitement le condensateur C1 ce qui permettra une fois le condensateur C1 totalement déchargé de passer en dessous du seuil de la broche n°2 afin de recommencer le cycle.

Signal rampe
La charge du condensateur C1 est un peu particulière puisque celle-ci est réalisée sous un courant constant qui est réglé en fonction de la valeur du potentiomètre RV1. La valeur de la tension de charge du condensateur C1 est calculé grâce à la relation Uc = Ic * t.

Reste maintenant à connaitre le courant Ic et à le calculer. Afin d’avoir un courant constant, les deux diodes D1 et D2 permettent d’obtenir une chute de tension aux bornes de RV1 d’environ 0,6V. Cette tension va dépendre du courant qui traverse D1 et D2 (environ 1mA).

Calcul de la fréquence

Nous allons nous intéresser à l’aspect mathématique du signal afin de connaître la fréquence d’oscillation de ces dents de scies. Nous avons vu que la tension aux bornes du condensateur dépendait de 2 seuils :

  • Le 1er seuil 2/3 Vcc permet de décharger le condensateur lorsque la tension du condensateur arrive au 2/3 de l’alimentation (6V = décharge du condensateur).
  • Le 2ème seuil 1/3 Vcc permet lorsque le condensateur passe en dessous de recommencer le cycle ( 3V = recommencer le cycle).

Il en résulte que la tension du condensateur C1 se trouve confrontée à deux seuils de tension qui sont 2/3 et 1/3 de Vcc.

  • La tension disponible sur l’émetteur du transistor Q1 (Vc) est :

Vc=(Vcc-D1-D2+Vbe) = 9V-0.6V-0.6V-0.6V = 8,4V

  • La tension aux bornes du potentiomètre RV1 est :

Vcc – (Vcc-D1-D2+Vbe) = 9V – 8,4V=0,6V

  • Le courant Max qui traverse le potentiomètre RV1 est (curseur en haut):

Ic = 0,6 / 10000 = 60µA

Charge du condensateur C1
Le condensateur C1 va donc se charger jusqu’à atteindre une tension Uc qui est égale au 2/3 de Vcc.
On peut donc dire que Uc = 2/3 Vcc pour la charge!!!

La charge d’un condensateur en fonction du courant s‘exprime par cette relation Uc = 1/C*Ic*t
2/3 Vcc =1/C1*(Vcc – (Vcc-D1-D2+Vbe))/RV1)*t1
2/3 Vcc =1/C1*(D1+D2-Vbe))/RV1)*t1

Décharge du condensateur C1

Une fois le condensateur C1 chargé il va être déchargé subitement via la borche n°7 pour se retrouver à une tension égale à 1/3 de Vcc.
On peut donc dire que Uc = 1/3 Vcc pour la décharge!!!

La décharge d’un condensateur en fonction du courant s‘exprime par cette relation Uc = 1/C*Ic*t
1/3 Vcc =1/C1*(Vcc – (Vcc-D1-D2+Vbe))/RV1)*t2
1/3 Vcc =1/1C*(D1+D2-Vbe))/RV1)*t2
Comme vous pouvez le remarquer nous avons 2 temps différents qui est t1 pour la charge et t2 pour la décharge. La période T=t1-t2
Vcc/t1 = (3*(D1+D2-Vbe))/(2*C1*RV1)
Vcc/t2 = (3*(D1+D2-Vbe))/( C1*RV1)
En inversant cela devient :
t1 =[ (2*C1*RV1) / (3*(D1+D2-Vbe))] * Vcc
t2 = [(C1*RV1)/( 3*(D1+D2-Vbe))] * Vcc
T=t1-t2=[ (2*C1*RV1) / (3*(D1+D2-Vbe))] * Vcc – [(C1*RV1)/( 3*(D1+D2-Vbe))] * Vcc

  • La période du signal est donc égale à:

T=[(C1*RV1)/(3*(D1+D2-Vbe))] * Vcc

Apercu du graph


graph

Pour RV1 réglé à la moitié soit RV1=5 kiloOhms la période serais égale à:

T=[(C1*RV1)/(3*(D1+D2-Vbe))] * Vcc = [(0,000010*5000)/(3*(0,6+0.6-0.6))]*9 = (0,05/1,8)*9 = (0,2778*9) = 0,25 soit 250ms

Prototype


Aucun

Aucun, juste une vue en 3D pour voir la position des composants.

Circuit(s) imprimé(s)


Aucun, juste une vue en 3D pour voir la position des composants.

Historiques


30/10/2016
-1er mise à disposition

Dernière mise à jour le 09/10/16

Présentation


Transmettre plusieurs bytes sur les mêmes broches ?! c’est tout à fait possible bien sûr!! pour les exemples qui vont suivres je vais utiliser le PIC 12F675 sinon vous pouvez utiliser à la place le PIC 12F629.
 
Nous allons étudier le fonctionnement d’un un tableau nommé plus précisément sous le nom de array. Ce tableau aura plusieurs façon de travailler avec soit la:

  • Lecture d’une valeur du tableau
  • Lecture de deux valeurs du tableau
  • Lecture en série de plusieurs valeurs du tableau

Un tableau est désigné par son nom exemple :
Tableau[0], ou bien si je voulais je pouvais lui donner un autre nom comme Bonjour[0]. Ensuite chaque éléments d’un tableau est numérotés de l’index départ et de l’index fin. Bonjour[0..1] ce tableau comporte donc 2 éléments soit:
Bonjour[0], et Bonjour[1].

La déclaration de cette variable puisque le tableau comporte 2 éléments sera en MikroPascal :
Bonjour : Array[2] of byte;

Lecture d’une valeur du tableau
Lorsque la déclaration de notre tableau est effectuée ainsi que la déclaration du nombre d’éléments, nous allons voir dans ce premier exemple comment lire uniquement la valeur logique situé dans le tableau[0] qui est la valeur « 1 » logique. Cette valeur sera ensuite affichée en valeur logique sur les broches du PIC 12F675.

Programme du PIC


  program Valeur_Tableau;;
  var
 Tableau : Array[2] of byte;



 procedure Init();
   begin
    CMCON:=%00000111; // comparateurs OFF;
    TRISIO:=%00000000; // GPIO.1 config en entrée
    GPIO:=%00000000;
    ANSEL:=$00; //On désactive toutes les entrées analogiques
   end;



procedure LectureTableau;
    begin
     Tableau[0]:=1; // lecture d’une seule valeur
     GPIO:= Tableau[0]; // on écrit la valeur lue dans le tableau sur toutes les broches du PIC
    end;



  Begin
   Init;
   While true do
     begin
      LectureTableau;
     end;
   end.

valeur_1


La broche GP0 du PIC affiche la valeur lue interne à l’élement du tableau[0] qui correspond bien à 1 soit 1 logique.

Lecture de deux valeurs du tableau
Essayons maintenant d’afficher la valeur 2 qui correspond à « 10 » en valeur logique le programme ci-desous :

Programme du PIC


  program Valeur_Tableau;;
  var
 Tableau : Array[2] of byte;

 procedure Init();
   begin
    CMCON:=%00000111; // comparateurs OFF;
    TRISIO:=%00000000; // GPIO.1 config en entrée
    GPIO:=%00000000;
    ANSEL:=$00; //On désactive toutes les entrées analogiques
   end;

procedure LectureTableau;
    begin
     Tableau[0]:=10; // lecture d’une seule valeur
     GPIO:= Tableau[0]; // on écrit la valeur lue dans le tableau sur toutes les broches du PIC
    end;

  Begin
   Init;
   While true do
     begin
      LectureTableau;
     end;
   end.

valeur_2

Il s’agit bien de la valeur numéro 2 en logique mais !!! pour 3 cela donne « 11 » en logique soit :

Programme du PIC


  program Valeur_Tableau;;
  var
 Tableau : Array[2] of byte;

 procedure Init();
   begin
    CMCON:=%00000111; // comparateurs OFF;
    TRISIO:=%00000000; // GPIO.1 config en entrée
    GPIO:=%00000000;
    ANSEL:=$00; //On désactive toutes les entrées analogiques
   end;

procedure LectureTableau;
    begin
     Tableau[0]:=11; // lecture de 2 valeurs qui correspond au chiffre 3 en décimal
     GPIO:= Tableau[0]; // on écrit la valeur lue dans le tableau sur toutes les broches du PIC
    end;

  Begin
   Init;
   While true do
     begin
      LectureTableau;
     end;
   end.

valeur_3

Lecture à la chaine de plusieurs valeurs du tableau
Nous avons vu qu’il était possible de lire une ou plusieurs valeur dans le tableau en même temps. Maintenant nous allons voir comment lire les valeurs dans le tableau mais les unes après les autres ou plus précisément en série.

Le but est le suivant, plutôt que d’afficher les valeurs lues sur l’ensemble des broches du PIC, nous allons envoyer par paquet ces séries uniquement sur une seule broche du PIC 12F675, alors comment faire ? C’est ce que nous allons voir tout de suite.
Prenons l’exemple pour afficher le chiffre 2 qui s’écrit en logique « 10 ».
Afin d’accéder à un champ du tableau le point (.) permet donc d’accéder aux bits individuels du registre Tableau[0]

Programme du PIC


program Valeur_Tableau;
var
Tableau : Array[2] of byte;
iInc: byte;
procedure Init();
begin
CMCON:=%00000111; // comparateurs OFF
TRISIO:=%00000000; // GPIO.1 config en entrée
GPIO:=%00000000;
ANSEL:=$00; //On désactive toutes les entrées analogiques
end;

 

procedure LectureByte;
 begin
Tableau[0]:=10; // correspond au chiffre 2 en décimal
//Tableau[0]:=11; // correspond au chiffre 3 en décimal
  begin
for iInc := 0 to 1 do // lecture en boucle du1er bit( 0=1er bit) , lecture en boucle du 2ème bits (1=2ème bits),
 
   begin
GPIO.0:= Tableau[0].iInc; // lecture des bits les un après les autres et de les reproduire sur la broche GPIO.0 du PIC
end;
  end;
end;

 

begin
Init;
while true do
begin
LectureByte;
end;
end.

transmission_serie

Il est ainsi possible de mettre plusieurs bits dans le tableau et de lire ces bits les uns après les autres afin de pouvoir envoyer ces informations seulement sur une broche du PIC. Prenons l’exemple au nous voulons coder le chiffre 228 en binaire, il suffit de 8 bit pour pouvoir écrire 228 soit en binaire cela donne 11100100.La programmation correspond à 8 bits mais dans le programme la boucle est sur 7 bits !!! bien évidement sur 7 bits !!! puisque le zéro est compris dans la boucle (de 0 à 7 = 8 valeurs)

Programme du PIC


program Valeur_Tableau;
var
Tableau : Array[2] of byte;
iInc: byte;
procedure Init();
begin
CMCON:=%00000111; // comparateurs OFF
TRISIO:=%00000000; // GPIO.1 config en entrée
GPIO:=%00000000;
ANSEL:=$00; //On désactive toutes les entrées analogiques
end;

 

procedure LectureByte;
begin
Tableau[0]:=%11100100; // chiffre 228 ecrit en binaire
begin
for iInc := 0 to 7 do // on scrute un à un les bits à l’aide d’une boucle
begin
GPIO.0:=Tableau[0].iInc; // la boucle permet de lire les bits un après l’autre
end;
end;
end;

 

begin
Init;
while true do
begin
LectureByte;
end;
end.

transmission_serie_228

Afin d’enfoncer plus loin le clou un petit montage électronique qui permet d’allumer les leds d’un afficheur 7 segments en utilisant un CD4094 qui est situé à cette article Afficheur 7 segments – CD4094 avec PIC 12F675

Dernière mise à jour le 16/04/18

Présentation


Afin de comprendre dans ses moindres détails ce montage électronique qui celui-ci n’est pas si simple qu’il en a l’air, je vous conseil d’aller faire un tour à cette article qui est Tableau – Array .

Schéma 001a


afficheur-7-segments-avec-cd4094

CD4094
Le CD4094 est composé d’un registre à décalage de 8 bits, les données sont décalées à chaque front montant de l’horloge (CLK). La sortie QS peut être utilisée pour cascader plusieurs CD4094 et passe à l’état logique « 1 » lorsque Q7 est activé. En ce qui concerne QS(barre) cette sortie s’active lorsque le front de l’horloge est descendant.




Fonctionnement avec un PIC 12F675
Si vous avez compris le rôle d’un tableau dans la programmation en MikroPascal dans le paragraphe “présentation”, alors nous pouvons commencer à décortiquer le programme qui satellite autour d’un PIC12F675. Lorsque l’entrée DATA (broche 2) du CD4094 est à l’état logique « haut » (présence d’un bit), et qu’à ce même instant l’entrée CLK (broche 3) qui est l’horloge passe à l’état logique haut, ce bit va donc être conduit directement en sortie sur la broche Q0. Une fois que la broche DATA repasse à l’état logique « bas » et que l’horloge aussi , le cycle peut recommencer. Si de nouveau nous avons sur l’entrée DATA un état logique « haut » et que au même instant l’entrée CLK repasse à l’état logique haut, un deuxième bit va apparaitre sur la broche Q0 et va donc décaler le bit précédent sur la broche Q1. Voila ce qu’on appel un registre à décalage.Chaque bits est décalés à chaque coups d’horloge, il faut donc trouver un moyen d’envoyer en série ces bits sur la broche 2 du CD4094 tout en ayant des coup d’horloge régulier hum !!! pas facile !!.
En ce qui concerne le bouton poussoir, celui-ci permet à chaque appuis d’incrémenter une valeur de 0 à 9 sur l’affichage 7 segments. En ce qui concerne l’allumage de l’afficheur, je vous laisse faire les calculs à savoir que la tension en sortie de CD4094 est de 5V pour 88mA qui suffiront largement. Il ne reste plus qu’à utiliser la fameuse formule de la loi d’ohm U=R*I..

Logiciel du PIC



Programme MikroPascal du PIC 12F675 Afficheur 7 segments 001a – Pour PIC 12F675
Programme MikroC + fichier source du PIC 12F675 Afficheur 7 segments 001a – Pour PIC 12F675

Protoype


Non pas pour l’instant un jour peut-être….

Circuit imprimé


Aucun

Historiques


– 16/04/18
Mise à jour Logiciel du PIC en MikroC + fichier source suite demande d’un internaute.
– 18/02/18
Mise à jour
– 09/10/16
Première mise à disposition.