Multiplexage 74HC95 | AndroLogiciels

7-Segment-Display-Arduino-Circuit

hs 74HC595-Shift-Register

  • Vcc Up to 6V (needs to be the same voltage as your microcontroller) – Usually 3.3 / 5v
  • QA to QH Shift Register Outputs.
  • SER: (Serial) Input for the next pin that gets shifted in.
  • SRCLK (Serial Clock) When this pin is pulled high, it will shift the register.
  • RCLK (Register Clock) Needs to be pulled high to set the output to the new shift register values, This must be pulled high directly after SRCLK has gone LOW again.
  • SRCLR (Serial Clear) Will empty the whole Shift Register if pulled LOW, must be pulled High to enable.
  • OE (Output Enable) This pin enables the output when tied to GND, & disabled when HIGH.

circuitDiagcircuit_tyc-365gwb ledgraphledgraph2

seg Afficheur_bb

Avec des résistances de 460 Ohms

Librairie :

https://github.com/Simsso/Shift-Register-74HC595-Arduino-Library

Pour modifier l’intensité lumineuse il suffit de relier la broche 13 du HC à une broche PWM de l’Arduino et faire varier la valeur de 0 à 255

pinMode(outputEnablePin, OUTPUT);

void setBrightness(byte brightness)

{  analogWrite(outputEnablePin, 255-brightness);}

https://learn.adafruit.com/adafruit-arduino-lesson-4-eight-leds/brightness-control

////////////// // Test d'un afficheur 7 segments à 4 chiffres // Avec un interrupteur relié en PIN 22 /////////////////////////////////////// #include <ShiftRegister74HC595.h> const int SEG0 = 5; const int SEG1 = 4; const int SEG2 = 3; const int SEG3 = 2; const int numberOfShiftRegisters = 1; // number of shift registers attached in series const int serialDataPin = 8; // DS const int clockPin = 9; // SHCP const int latchPin = 10; // STCP ShiftRegister74HC595 sr (numberOfShiftRegisters, serialDataPin, clockPin, latchPin); const int buttonPin = 22; // the number of the pushbutton pin int buttonState = 0, prevUpState = 0; int nB = 0; int tab[4]; ////////////////////////// void setup() { Serial.begin(9600); pinMode(SEG0, OUTPUT); pinMode(SEG1, OUTPUT); pinMode(SEG2, OUTPUT); pinMode(SEG3, OUTPUT); sr.setAllHigh(); // Eteinds all pins // initialize the pushbutton pin as an input: pinMode(buttonPin, INPUT); Serial.println("Init..."); } /////////////// void loop() { buttonState = digitalRead(buttonPin); if (prevUpState != buttonState) // has the state changed from { // HIGH to LOW or vice versa prevUpState = buttonState; if (buttonState == HIGH) // If the button was pressed { nB++; tab[3] = nB % 10; tab[2] = nB / 10; tab[1] = nB / 100; tab[0] = nB / 1000; Serial.print("Nb="); Serial.print(nB); Serial.print(":"); Serial.print(tab[0]); Serial.print(tab[1]); Serial.print(tab[2]); Serial.println(tab[3]); //delay(50); } } compte(); } /////////////// void compte() { for (int Digit = 1; Digit < 5; Digit++) { switch (Digit) { case 1: digitalWrite(SEG0, HIGH); digitalWrite(SEG1, LOW); digitalWrite(SEG2, LOW); digitalWrite(SEG3, LOW); Analyse(tab[0]); break; case 2: digitalWrite(SEG0, LOW); digitalWrite(SEG1, HIGH); digitalWrite(SEG2, LOW); digitalWrite(SEG3, LOW); Analyse(tab[1]); break; case 3: digitalWrite(SEG0, LOW); digitalWrite(SEG1, LOW); digitalWrite(SEG2, HIGH); digitalWrite(SEG3, LOW); Analyse(tab[2]); break; case 4: digitalWrite(SEG0, LOW); digitalWrite(SEG1, LOW); digitalWrite(SEG2, LOW); digitalWrite(SEG3, HIGH); Analyse(tab[3]); break; } delay(3); } } void Analyse(int NbA) { switch (NbA) { case 1 : un(); break; case 2 : deux(); break; case 3 : trois(); break; case 4 : quatre(); break; case 5 : cinq(); break; case 6 : six(); break; case 7 : sept(); break; case 8 : huit(); break; case 9 : neuf(); break; default : zero(); break; } } //////////// // LOW = Allumé // HIGH = Eteinds /////////////// void un() { sr.setAllHigh(); sr.set(0, HIGH); sr.set(1, HIGH); sr.set(2, LOW); sr.set(3, LOW); sr.set(4, HIGH); sr.set(5, HIGH); sr.set(6, HIGH); sr.set(7, HIGH); } void deux() { sr.setAllHigh(); sr.set(0, HIGH); sr.set(1, LOW); sr.set(2, LOW); sr.set(3, HIGH); sr.set(4, LOW); sr.set(5, LOW); sr.set(6, HIGH); sr.set(7, LOW); } void trois() { sr.setAllHigh(); sr.set(0, HIGH); sr.set(1, LOW); sr.set(2, LOW); sr.set(3, LOW); sr.set(4, LOW); sr.set(5, HIGH); sr.set(6, HIGH); sr.set(7, LOW); } void quatre() { sr.setAllHigh(); sr.set(0, HIGH); sr.set(1, HIGH); sr.set(2, HIGH); sr.set(3, LOW); sr.set(4, HIGH); sr.set(5, HIGH); sr.set(6, LOW); sr.set(7, LOW); } void cinq() { sr.setAllHigh(); sr.set(0, HIGH); sr.set(1, LOW); sr.set(2, HIGH); sr.set(3, LOW); sr.set(4, LOW); sr.set(5, HIGH); sr.set(6, LOW); sr.set(7, LOW); } void six() { sr.setAllLow(); sr.set(0, HIGH); sr.set(1, HIGH); sr.set(2, HIGH); } void sept() { sr.setAllHigh(); sr.set(0, HIGH); sr.set(1, LOW); sr.set(2, LOW); sr.set(3, LOW); sr.set(4, HIGH); sr.set(5, HIGH); sr.set(6, HIGH); sr.set(7, HIGH); } void huit() { sr.setAllLow(); sr.set(0, HIGH); } void neuf() { sr.setAllLow(); sr.set(0, HIGH); sr.set(5, HIGH); } void zero() { sr.setAllLow(); sr.set(0, HIGH); sr.set(7, HIGH); }

tab

Programmation
Affichage Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Héxadecimal
0 0 0 1 1 1 1 1 1 0x3F
1 0 0 0 0 0 1 1 0 0x06
2 0 1 0 1 1 0 1 1 0x5B
3 0 1 0 0 1 1 1 1 0x4F
4 0 1 1 0 0 1 1 0 0x66
5 0 1 1 0 1 1 0 1 0x6D
6 0 1 1 1 1 1 0 1 0x7D
7 0 0 0 0 0 1 1 1 0x07
8 0 1 1 1 1 1 1 1 0x7F
9 0 1 1 0 1 1 1 1 0x6F
A 0 1 1 1 0 1 1 1 0x77
B 0 1 1 1 1 1 0 0 0x7C
C 0 0 1 1 1 0 0 1 0x39
D 0 1 0 1 1 1 1 0 0x5E
E 0 1 1 1 1 0 0 1 0x79
F 0 1 1 1 0 0 0 1 0x71

Références :

http://circuits4you.com/2016/12/14/segment-display-interfacing-arduino/http://circuits4you.com/2016/12/14/segment-display-interfacing-arduino/

http://bildr.org/2011/02/74hc595/

https://www.instructables.com/id/Different-methods-of-driving-7-Segment-LED-display/

Partager:

  • X
  • Facebook
J’aime chargement…

Tag » Arduino Afficheur 7 Segments 4 Digits 74hc595